复制
收藏
提问
简洁
ABAP 调用标准程序后获取结果
3月前
全网
文档
学术
百科
知识库
回答简洁模式
深入研究一些
在ABAP中,调用标准程序并获取结果是一个常见的需求,特别是在需要自定义报表或与标准报表结果保持一致时。以下是几种方法和注意事项,用于实现这一目标:
-
使用SUBMIT语法:可以通过SUBMIT语句调用标准程序,并获取其输出结果。语法结构为:
SUBMIT {rep| (name)} [selscreen_options] [list_options] [job_options] [AND RETURN].
其中,
selscreen_options
允许指定标准程序选择界面的字段,可以通过F1查看具体的Field name。如果需要获取ALV报表结果数据,可以使用如下关键代码:SUBMIT. TRY. cl_salv_bs_runtime_info=>get_data_ref( IMPORTING r_data = lr_alv_data ). ENDTRY.
-
直接调用标准程序:在需要自定义报表的取数据逻辑与某个标准事务码(如FBL5N)相同的情况下,可以通过以下代码段实现:
ABAP. FORM PRM_GET_FBL5N.
这允许直接调用标准程序,并从程序中获取数据集。2
-
调用可执行程序或事务码:ABAP提供了两种方式来调用可执行程序或事务码,一种是调用后直接退出主调程序,另一种是调用后返回到调用被调程序的地方继续执行。具体语法如下:
Call (without returning) SUBMIT LEAVE TO TRANSACTION. Call and return SUBMIT AND RETURN CALL TRANSACTION.
如果省略
AND RETURN
选项,主调程序的所有数据与所有级别的List都会从internal session中删除。3 -
注意点:在调用标准程序时,需要注意以下几点:
- 当被调用程序有Variant值时,必须传入值,否则字段的顺序可能会错乱。固定Variant可以确保取出的字段顺序与该Variant一致。
- 不同的报表可能有不同的抬头,这会占用一定的行数,需要通过调试确定从哪一行开始有数据。
- 有些报表中可能包含不需要的汇总数据,需要根据条件(如物料为空)进行判断和删除。
- 对于金额、日期字段,可能需要进行转换;对于So类字段,可能需要加前导零。5
-
调用标准报表执行结果:有时需要获取标准报表的执行结果进行操作,如MB5M执行结果。可以通过SUBMIT将所需参数传入,并选择ALV网格作为展示效果,以获取更全的字段。6
-
调用外部程序:在SAP中,一个程序可以通过两种主要方式调用外部程序:
call transaction <tcode>
和submit <program> and return
。通过submit
在一个程序中调用外部程序时,涉及到两个程序:调用程序(处理数据、整合数据供被调用程序获取并打印)和被调用程序(从调用程序存储在ABAP内存的数据取到并打印输出)。7
通过上述方法和注意事项,可以在ABAP中有效地调用标准程序并获取所需的结果。
你觉得结果怎么样?