如何处理报告不返回任何数据的情况?

问题描述 投票:1回答:2

我有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( ).

在报告中找不到任何数据时,最可行的处理方式是什么?赞赏其他改进

sap abap
2个回答
3
投票

分配后,检查字段符号是否包含某些内容:

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.

3
投票

这是我的代码的作用:

  • 仅当分配了字段符号<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.
    
© www.soinside.com 2019 - 2024. All rights reserved.