一、什么是ABAPSubmit?
ABAPSubmit是SAP系统中的一个函数模块,它允许在一个程序中提交并执行另一个可执行程序,从而将不同的程序链接起来实现流程控制、数据传输等。
使用ABAPSubmit的好处是可以方便地间接调用和控制其他程序的执行,同时可以在不改变原始程序的代码逻辑和性能的前提下,实现程序间的有序协作。
二、ABAPSubmit的使用方法
ABAPSubmit有两种使用方法:通过函数模块调用和通过ABAP语句调用。下面我们将详细介绍这两种方法的具体实现。
1. 通过函数模块调用
ABAPSubmit的函数模块为”SUBMIT”(或“JOB_SUBMIT”),所以我们可以使用这个函数模块参数组合来调用可执行程序:
DATA: v_jobname TYPE tbtcjob-jobname,
v_appl TYPE progname.
v_appl = 'ZPROGRAM'.
v_jobname = 'MY_JOB_NAME'.
CALL FUNCTION 'SUBMIT'
EXPORTING
report = v_appl
variant = ' '
jobname = v_jobname
listen = 'X'
hold_until = 'X'
EXCEPTIONS
others = 1.
在执行FUNCION 'SUBMIT'函数时,需要填写以下参数:
- report:代表需要ABAPSubmit调用的可执行程序名称。这个参数是必须的
- variant:代表传给ABAPSubmit调用的选项或变量,具体应根据被执行程序要求设置。这个参数是可选的
- jobname:代表被执行程序的作业名称,也可以理解为当前执行的任务名称,具体命名应该根据规范设定。这个参数是必须的
- listen:代表当前任务是否是可用的(按照顺序或按照模式执行)。
- hold_until:代表当前任务是否在调度器中等待。此选项特别适用于长时间运行的过程,因为如果任务被放置到后台队列中,则应该轮询它以获得新的运行时间。
2. 通过ABAP语句调用
另一种使用ABAPSubmit的方法,是在ABAP语句中直接调用。同样,我们需要填写以下参数:
SUBMIT zprogram AND RETURN.
SUBMIT zprogram VIA JOB v_jobname NUMBER v_jobnumber.
在使用ABAP语句调用ABAPSubmit时,需要注意以下几点:
- 通过AND RETURN调用:用于提交并执行预定程序,并在其中进行一些处理之后可直接返回程序
- VIA JOB和NUMBER:用于在调用程序中提交和执行另一个程序,需向ABAPSubmit提供作业名称和编号
- 在语句后面添加参数表示调用程序时要传递给程序使用的变量或选项
三、ABAPSubmit的优点
ABAPSubmit的最大优点是可以协调不同程序之间的运行顺序,从而实现复杂逻辑,实现程序之间的数据传递和共享。同时,它的使用也能够简化代码的编写,提高程序的整体效率和可维护性,从而为企业提供更广阔的发展空间。
四、ABAPSubmit的实例演示
下面我们演示一下使用ABAPSubmit函数模块的具体操作。假设我们现在有一个ZPROGRAM1,它在执行的时候还需要运行另一个程序ZPROGRAM2。
1、ZPROGRAM1程序代码
REPORT ZPROGRAM1.
DATA: name TYPE string.
PARAMETERS: p_name TYPE string.
name = p_name.
WRITE: name, / 'Running ZPROGRAM1'.
SUBMIT ZPROGRAM2 USING name.
WRITE: / 'End of ZPROGRAM1'.
COMMIT WORK.
此程序使用了一个变量name作为参数调用ZPROGRAM2程序,并在程序中间提交并执行了ZPROGRAM2。执行时输出如下:
2、ZPROGRAM2程序代码
REPORT ZPROGRAM2.
DATA: name TYPE string.
START-OF-SELECTION.
WRITE: / 'Running ZPROGRAM2'.
IF sy-subrc = 0.
WRITE: / 'With parameter: ', name.
ENDIF.
此程序接收一个name参数并输出执行结果。在ZPROGRAM1调用之后运行并输出如下:
五、总结
ABAPSubmit是SAP系统中连接不同程序或ABAP语句的重要工具,可以允许在一个程序中提交并执行另一个可执行程序。本文从ABAPSubmit的定义、使用方法、优点及实例等方面进行了详细阐述,相信对于SAP系统开发人员来说,能够更好的使用ABAPSubmit来实现程序间协作。