报告没有return任何数据如何处理?
How to handle the case when report does not return any data?
如果报告有数据,我有 ABAP 代码可以正常工作。
但是如果没有找到数据,那么我得到:
GETWA_NOT_ASSIGNED
错误发生在标有“**************”的行中
" Let know the model"
cl_salv_bs_runtime_info=>set(
EXPORTING
display = abap_false
metadata = abap_false
data = abap_true
).
* WERKS = '0557'
data selection_table TYPE TABLE OF RSPARAMS.
data key_value TYPE wdy_key_value.
data selection_row TYPE RSPARAMS.
LOOP AT IV_STATIC_PARAMETER_LIST INTO key_value.
selection_row-selname = key_value-key.
selection_row-low = key_value-value.
selection_row-sign = 'I'.
selection_row-option = 'EQ'.
APPEND selection_row to selection_table.
ENDLOOP.
SUBMIT (IV_REPORT_NAME)
WITH SELECTION-TABLE selection_table
AND RETURN.
DATA: lo_data TYPE REF TO data.
cl_salv_bs_runtime_info=>get_data_ref(
IMPORTING
r_data = lo_data
).
field-SYMBOLS <lv_data> type any table.
ASSIGN lo_data->* TO <lv_data>.
ev_result_json = /ui2/cl_json=>serialize(
data = <lv_data>
pretty_name = /ui2/cl_json=>pretty_mode-low_case ). ********
cl_salv_bs_runtime_info=>clear_all( ).
报表找不到任何数据的情况下,最可行的处理方法是什么?感谢其他改进
赋值后,检查字段符号是否包含内容:
ASSIGN lo_data->* TO <lv_data>.
IF <lv_data> IS NOT ASSIGNED.
EXIT.
ENDIF.
或者,在 ASSIGN 之前,您可以检查是否绑定了 lo_data
:
IF lo_data IS NOT BOUND.
EXIT.
ENDIF.
这是我的代码的作用:
代码只有在分配了字段符号<lv_data>
时才会执行,否则清除
全部.
table 有一些行,然后传输到数据,否则全部清除。
ASSIGN lo_data->* TO <lv_data>.
IF <lv_data> IS ASSIGNED.
IF lines( <lv_data> ) > 0.
ev_result_json = /ui2/cl_json=>serialize( data = <lv_data> ).
ENDIF.
cl_salv_bs_runtime_info=>clear_all( ).
ENDIF.
如果报告有数据,我有 ABAP 代码可以正常工作。
但是如果没有找到数据,那么我得到:
GETWA_NOT_ASSIGNED
错误发生在标有“**************”的行中
" Let know the model"
cl_salv_bs_runtime_info=>set(
EXPORTING
display = abap_false
metadata = abap_false
data = abap_true
).
* WERKS = '0557'
data selection_table TYPE TABLE OF RSPARAMS.
data key_value TYPE wdy_key_value.
data selection_row TYPE RSPARAMS.
LOOP AT IV_STATIC_PARAMETER_LIST INTO key_value.
selection_row-selname = key_value-key.
selection_row-low = key_value-value.
selection_row-sign = 'I'.
selection_row-option = 'EQ'.
APPEND selection_row to selection_table.
ENDLOOP.
SUBMIT (IV_REPORT_NAME)
WITH SELECTION-TABLE selection_table
AND RETURN.
DATA: lo_data TYPE REF TO data.
cl_salv_bs_runtime_info=>get_data_ref(
IMPORTING
r_data = lo_data
).
field-SYMBOLS <lv_data> type any table.
ASSIGN lo_data->* TO <lv_data>.
ev_result_json = /ui2/cl_json=>serialize(
data = <lv_data>
pretty_name = /ui2/cl_json=>pretty_mode-low_case ). ********
cl_salv_bs_runtime_info=>clear_all( ).
报表找不到任何数据的情况下,最可行的处理方法是什么?感谢其他改进
赋值后,检查字段符号是否包含内容:
ASSIGN lo_data->* TO <lv_data>.
IF <lv_data> IS NOT ASSIGNED.
EXIT.
ENDIF.
或者,在 ASSIGN 之前,您可以检查是否绑定了 lo_data
:
IF lo_data IS NOT BOUND.
EXIT.
ENDIF.
这是我的代码的作用:
代码只有在分配了字段符号
<lv_data>
时才会执行,否则清除 全部.table 有一些行,然后传输到数据,否则全部清除。
ASSIGN lo_data->* TO <lv_data>. IF <lv_data> IS ASSIGNED. IF lines( <lv_data> ) > 0. ev_result_json = /ui2/cl_json=>serialize( data = <lv_data> ). ENDIF. cl_salv_bs_runtime_info=>clear_all( ). ENDIF.