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.