ABAP cl_salv_bs_runtime_info 读取其他程序显示的ALV

SET() - 此方法初始化类,它应该在程序调用ALV报告程序之前被调用。
参数:

1.DISPLAY - 将它设为abap_false,强制所有后续ALV报告在“黑暗模式”下运行,也就是说,ALV不会被输出到GUI。

2.METADATA - 将它设为abap_false,防止基本信息被取到内存中。

3.DATA - 将它设为abap_true,迫使数据表导出到内存而不是显示报表。

 

GET_DATA_REF() - 非常灵活的GET_DATA*方法,这种方法可以用来访问该数据表变量的引用(动态而且易用),所以即使不知道ALV数据表的结构也没关系。
参数:

1.R_DATA - 输出ALV数据表。

2.R_DATA_LINE - 如果执行的ALV有HEADER的(可选)。

 

GET_DATA() - 如果知道需要调用的ALV数据表的结构,可以使用这个方法。
参数:

1.T_DATA - 输出参数数据表。

2.T_DATA_LINE - 如果执行的ALV有HEADER(可选)。

 

CLEAR_ALL() - 此方法清除在set()方法设置的标志。如果之后本程序还需要显示其他ALV 那么这个方法非常重要。

EG:

TYPES: BEGIN OF TY_ALVINFO,
         GV_CHECK TYPE C,
         ZDDBH    LIKE ZSO_07_H-ZDDBH,
         ZKHMC    LIKE ZSO_07_H-ZKHMC,
         ZXSGSMC  LIKE ZSO_07_H-ZXSGSMC,
         ZJHRQ    LIKE ZSO_07_H-ZJHRQ,
         ZXSZZ    LIKE ZSO_07_H-ZXSZZ,
         ZXSZ     LIKE ZSO_07_H-ZXSZ,
         ZXSRY    LIKE ZSO_07_H-ZXSRY,
         ZCPDL    LIKE ZSO_07_H-ZCPDL,
         ZCPZL    LIKE ZSO_07_H-ZCPZL,
         ZCUSER   LIKE ZSO_07_H-ZCUSER,
         ZCDATE   LIKE ZSO_07_H-ZCDATE,
         ZCTIME   LIKE ZSO_07_H-ZCTIME,
         ZDDHXM   LIKE ZSO_07_I-ZDDHXM,
         ZCPBH    LIKE ZSO_07_I-ZCPBH,
         ZCPMC    LIKE ZSO_07_I-ZCPMC,
         ZCPSL    LIKE ZSO_07_I-ZCPSL,
         ZDW      LIKE ZSO_07_I-ZDW,
         ZDJ      LIKE ZSO_07_I-ZDJ,
         ZJGDW    LIKE ZSO_07_I-ZJGDW,
       END OF TY_ALVINFO.
DATA GT_OUTTAB TYPE TABLE OF TY_ALVINFO.
DATA GS_OUTTAB LIKE LINE OF GT_OUTTAB.

DATA GO_DATA TYPE REF TO DATA.

FIELD-SYMBOLS: <GT_OUTTAB> TYPE ANY TABLE  .
FIELD-SYMBOLS: <GS_OUTTAB> TYPE TY_ALVINFO.

*设置执行时不显示,只获取ALV数据
CL_SALV_BS_RUNTIME_INFO=>SET(
      DISPLAY  = ABAP_FALSE
      METADATA = ABAP_FALSE
      DATA     = ABAP_TRUE  ).

*ZRSO_07_REPORT程序
SUBMIT ZRSO_07_REPORT
AND RETURN.

TRY.
    "取得运行数据
    CL_SALV_BS_RUNTIME_INFO=>GET_DATA_REF(
          IMPORTING
            R_DATA = GO_DATA
    ).
*   数据赋值
    ASSIGN GO_DATA->* TO <GT_OUTTAB>.  "结构必须和被调程序的ALV 结构一样
    MOVE <GT_OUTTAB> TO GT_OUTTAB.

  CATCH CX_SALV_BS_SC_RUNTIME_INFO.
    MESSAGE '无法获取ALV数据'  TYPE  'E'.
ENDTRY.
CALL METHOD CL_SALV_BS_RUNTIME_INFO=>CLEAR_ALL.

IF GO_DATA IS NOT INITIAL .
*数据处理
  LOOP AT GT_OUTTAB INTO GS_OUTTAB.
    WRITE: / GS_OUTTAB-ZDDBH,GS_OUTTAB-ZDDHXM.
  ENDLOOP.
ENDIF.

 

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值