当报告没有返回任何数据时,如何处理这种情况



我有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>被指定为清除时,才会执行代码全部的

  • 表中有一些行,然后转移到数据中,否则将全部清除。

    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.
    

相关内容

  • 没有找到相关文章

最新更新