ABAP程序的启动方式有两种。一种是直接运行,即在事务代码SE38或者SA38中通过执行功能运行程序,
以及通过系统目录或在命令域中输入代码运行程序;另一种方式是从一个正在运行的程序中调用另一个程
序,这种方式称为内部调用。内部调用另一个可执行程序可以通过SUBMIT语句进行。
在一个程序内部调用另一个程序时,可能出现两种情况。其一是调用程序将控制完全交给被调用程序,
被调用程序执行结束后,不再返回原来的程序;另一种情况是嵌入式调用,被调用程序结束后返回原程序
。
无返回调用:submit
调用并返回:submit and return
例子:
程序1
REPORT z_call_example.
START-OF-SELECTION.
WRITE 'This program may call another one.'.
SUBMIT z_example.
程序2
REPORT z_example.
DATA text(20) VALUE 'This is an example.'
DATA text(20) VALUE 'This is an example.'
START-OF-SELECTION.
WRITE text.
WRITE text.
假定程序2已存在,则执行程序1后,将直接输出程序2的列表内容:
This is an example.
This is an example.
单击回车键将退出程序运行界面,因为程序2调用在程序1的列表输出处理之前进行,因此程序1中WRITE
语句的内容没有被输出。
如果该程序中使用submit and return语句代替submit语句,则使用回车键按钮离开z_example后,还会返回调用它的程序,因而在列表屏幕中将再次显示z_call_example的列表输出部分:
This program may call another one.