ABAP 获取ALV报表中的数据


当程序中需要获取某张报表展示的ALV数据,又不想重新写一遍查询逻辑,则可以调用报表,直接将报表ALV内表的数据获取到,提高开发效率


"-----------------------------@-----------------------------
DATA:lo_dataTYPEREFTOdata,
lt_selectTYPETABLEOFrsparams,
ls_selectTYPErsparams.
FIELD-SYMBOLS<lt_data>TYPEANYTABLE.

"
CALLMETHODcl_salv_bs_runtime_info=>set
EXPORTING
display=abap_false
metadata=abap_false
data=abap_true.

"
CLEARls_select.
ls_select-selname='S_MONTH'.
ls_select-sign='I'.
ls_select-option='EQ'.
ls_select-low='202204'.
*ls_select-high=''.
APPENDls_selectTOlt_select.

*CLEARls_select.
*ls_select-selname='S_KUNNR'.
*ls_select-sign='I'.
*ls_select-option='EQ'.
*ls_select-low='202204'.
**ls_select-high=''.
*APPENDls_selectTOlt_select.

"
SUBMITzsd001
WITHSELECTION-TABLElt_select"
*WITHp_year=i_year
ANDRETURN.
TRY.

"ALV
CALLMETHODcl_salv_bs_runtime_info=>get_data_ref
IMPORTING
r_data=lo_data.

IFlo_dataISINITIAL.
MESSAGE''TYPE'S'DISPLAYLIKE'E'.
RETURN.
ENDIF.

ASSIGNlo_data->*TO<lt_data>.
CATCHcx_salv_bs_sc_runtime_info.

ENDTRY.

IF<lt_data>ISNOTINITIAL.
"
MOVE-CORRESPONDING<lt_data>TOgt_alv.
ENDIF.
"
cl_salv_bs_runtime_info=>clear_all().
"-----------------------------@-----------------------------