欢迎来到萧静默的博客

书山有路勤为径,学海无涯苦作舟。

程序有submit时不显示ALV问题注意事项

CL_SALV_BS_RUNTIME_INFO=>SET( EXPORTING DISPLAY = ABAP_FALSE   METADATA = ABAP_FALSE DATA = ABAP_TRUE ).
  SUBMIT ZMMRP070
  WITH P_IMPORT = '' "radiobutton 传参要用‘’
  WITH P_QUERY = ''
  WITH P_DATA = 'X'
  WITH S_MATNR IN S_MATNR
  EXPORTING LIST TO MEMORY AND RETURN.
  IF SY-SUBRC = 0.
    TRY.
        CL_SALV_BS_RUNTIME_INFO=>GET_DATA_REF( IMPORTING R_DATA = LR_PAY_DATA ).
        ASSIGN LR_PAY_DATA->* TO <LT_PAY_DATA>.
      CATCH CX_SALV_BS_SC_RUNTIME_INFO.
        MESSAGE `Unable to retrieve ALV data` TYPE 'E'.
    ENDTRY.
  ENDIF.
  CL_SALV_BS_RUNTIME_INFO=>CLEAR_ALL( ).

CL_SALV_BS_RUNTIME_INFO与读取ALV有关的方法:

SET() - 此方法初始化类(清除内存区域),然后允许标志的设置让任何后续ALV对象如何工作。它应该在装程序调用ALV报告程序之前被调用。
参数:

  • DISPLAY - 将它设为abap_false强制所有后续ALV报告在“黑暗模式”下运行,也就是说,ALV不会被输出到GUI。
  • METADATA - 将它设为abap_false防止基本信息(布局,字段目录等)被取到内存中......一般我们不需要。
  • DATA - 将它设为abap_true迫使数据表导出到内存而不是显示报表。

GET_DATA_REF() - 非常灵活的GET_DATA*方法,这种方法可以用来访问该数据表变量的引用(动态而且易用),所以即使不知道ALV数据表的结构也没关系。
参数:

  • R_DATA - 输出ALV数据表。
  • R_DATA_LINE - 如果执行的ALV有HEADER的(可选)。

GET_DATA() - 如果知道需要调用的ALV数据表的结构,可以使用这个方法。
参数:

  • T_DATA - 输出参数数据表。
  • T_DATA_LINE - 如果执行的ALV有HEADER(可选)。

CLEAR_ALL() - 此方法清除在set()方法设置的标志。如果之后本程序还需要显示其他ALV 那么这个方法尤为重要。如果不清除设置,你的ALV就不会被显示出来。

SUBMIT ZMMRP070 
VIA  SELECTION-SCREEN "要不要显示选择屏幕 -这一句可以显示调用屏幕,看传的屏幕参数

posted @ 2021-03-12 10:48  萧静默  阅读(2045)  评论(1编辑  收藏  举报