ABAP:如何处理报表不返回任何数据的情况

时间:2018-10-30 13:59:51

标签: sap abap

如果报告中有数据,我有可以正常工作的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( ).

当报告找不到任何数据时,最可行的处理方式是什么?

(欢迎进行其他改进,我是ABAP的新手)

2 个答案:

答案 0 :(得分:2)

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

df.to_csv()

或者,在ASSIGN之前,您可以检查ASSIGN lo_data->* TO <lv_data>. IF <lv_data> IS NOT ASSIGNED. EXIT. ENDIF. 是否绑定:

lo_data

答案 1 :(得分:2)

按照我的建议进行操作会产生影响。

  • 仅在分配了字段符号的情况下才会执行代码,否则清除    全部。

  • 表有一些行,然后转移到数据,否则清除所有。

您可以在行后更新以下更正的代码 ASSIGN lo_data-> * TO。

IF <lv_data> IS ASSIGNED.
 IF lines( <lv_data>[] ) GT 0 .
  ev_result_json = /ui2/cl_json=>serialize( 
  data = <lv_data> 
  pretty_name = /ui2/cl_json=>pretty_mode-low_case ). 
  ELSE.
    cl_salv_bs_runtime_info=>clear_all( ).
  ENDIF.    
ELSE
cl_salv_bs_runtime_info=>clear_all( ).
ENDIF.