我有这段代码,对于许多报告来说,它都非常有用:
if IV_SELECTION_SET_VARIANT is INITIAL.
SUBMIT (IV_REPORT_NAME)
WITH SELECTION-TABLE selection_table
AND RETURN.
ELSE.
SUBMIT (IV_REPORT_NAME)
WITH SELECTION-TABLE selection_table
USING SELECTION-SET IV_SELECTION_SET_VARIANT
AND RETURN.
endif.
FIELD-SYMBOLS <lt_data> TYPE ANY TABLE.
FIELD-SYMBOLS <lt_data_line> TYPE ANY TABLE.
DATA lr_data TYPE REF TO data.
DATA lr_data_line TYPE REF TO data.
DATA lr_data_descr TYPE REF TO cl_abap_datadescr.
DATA lr_data_line_descr TYPE REF TO cl_abap_datadescr.
cl_salv_bs_runtime_info=>get_data_ref(
IMPORTING r_data_descr = lr_data_descr
r_data_line_descr = lr_data_line_descr ).
IF lr_data_descr IS NOT BOUND.
ev_result_json = '[]'.
EXIT.
ENDIF.
但是对于AdHoc查询,行IF lr_data_descr IS NOT BOUND.
为真,行ev_result_json
为空。
这可能是什么原因?
报告的名称为AQZZZMM=========ZME80FN=======
。
答案 0 :(得分:3)
方法cl_salv_bs_runtime_info=>get_data_ref
仅在您的先例SUBMIT
中调用了ALV网格控件,并且之前(内部提交的报告或显式地)请求写入数据时才提供数据,通过预先调用方法cl_salv_bs_runtime_info=>set
)。
cl_salv_bs_runtime_info=>get_data_ref
将不提供任何数据。 cl_salv_bs_runtime_info=>get_data_ref
将不提供任何数据。 cl_salv_bs_runtime_info=>get_data_ref
将从最后显示的ALV网格控件(已调用方法SET_TABLE_FOR_FIRST_DISPLAY
的最后一个网格)中检索数据。