复制
收藏
提问
简洁

ABAP 调用标准程序后获取结果

3月前
全网
文档
学术
百科
知识库
时间不限
自动
回答简洁模式
深入研究一些

在ABAP中,调用标准程序并获取结果是一个常见的需求,特别是在需要自定义报表或与标准报表结果保持一致时。以下是几种方法和注意事项,用于实现这一目标:

  1. 使用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.
    

    这允许获取ALV报表的结果,不限于ALV Grid,LIST报表也能获取到值。14

  2. 直接调用标准程序:在需要自定义报表的取数据逻辑与某个标准事务码(如FBL5N)相同的情况下,可以通过以下代码段实现:

    ABAP. FORM PRM_GET_FBL5N.
    

    这允许直接调用标准程序,并从程序中获取数据集。2

  3. 调用可执行程序或事务码:ABAP提供了两种方式来调用可执行程序或事务码,一种是调用后直接退出主调程序,另一种是调用后返回到调用被调程序的地方继续执行。具体语法如下:

    Call (without returning) SUBMIT LEAVE TO TRANSACTION.
    Call and return SUBMIT AND RETURN CALL TRANSACTION.
    

    如果省略AND RETURN选项,主调程序的所有数据与所有级别的List都会从internal session中删除。3

  4. 注意点:在调用标准程序时,需要注意以下几点:

    • 当被调用程序有Variant值时,必须传入值,否则字段的顺序可能会错乱。固定Variant可以确保取出的字段顺序与该Variant一致。
    • 不同的报表可能有不同的抬头,这会占用一定的行数,需要通过调试确定从哪一行开始有数据。
    • 有些报表中可能包含不需要的汇总数据,需要根据条件(如物料为空)进行判断和删除。
    • 对于金额、日期字段,可能需要进行转换;对于So类字段,可能需要加前导零。5
  5. 调用标准报表执行结果:有时需要获取标准报表的执行结果进行操作,如MB5M执行结果。可以通过SUBMIT将所需参数传入,并选择ALV网格作为展示效果,以获取更全的字段。6

  6. 调用外部程序:在SAP中,一个程序可以通过两种主要方式调用外部程序:call transaction <tcode>submit <program> and return。通过submit在一个程序中调用外部程序时,涉及到两个程序:调用程序(处理数据、整合数据供被调用程序获取并打印)和被调用程序(从调用程序存储在ABAP内存的数据取到并打印输出)。7

通过上述方法和注意事项,可以在ABAP中有效地调用标准程序并获取所需的结果。

你觉得结果怎么样?
ABAP 标准程序调用方法
ABAP 获取程序执行结果
ABAP 程序调用与结果处理
如何使用 ABAP 调用自定义程序
ABAP 程序调用的参数传递
ABAP 程序执行结果的存储方式

以上内容由AI搜集生成,仅供参考

在线客服