ABAP 读取其他ALV的显示结果

SALV有个的功能,就是submit其他SALV程序后能直接取得显示的结果。

方法一:通常情况下,可以将submit的SALV显示结果发送到内存中,

通过  SUBMIT .... EXPORTING LIST TO MEMORY AND RETURN,

然后通过函数 LIST_FROM_MEMORY 读取,通过 WRITE_LIST 写入,这么做比较繁琐。

方法二:通过类CL_SALV_BS_RUNTIME_INFO来实现:

步骤一:1,将Submit的salv设置为不显示模式

" 设定SALV运行模式, 
 cl_salv_bs_runtime_info=>set(
      display  = abap_false        "不显示    
      metadata = abap_false
      data     = abap_true  ).

步骤二:submit SALV程序

 SUBMIT ztld_mm_009
  WITH s_date = s_date WITH s_werks IN g_werks WITH s_lgort IN  s_lgort
  EXPORTING LIST TO MEMORY AND RETURN.

步骤三:调用cl_salv_bs_runtime_info=>get_data_ref()取得结果

  TRY.
      "取得运行数据
      cl_salv_bs_runtime_info=>get_data_ref(
            IMPORTING
              r_data = go_data
      ).
*   数据赋值      
      ASSIGN go_data->* TO <git_outtab>.

    CATCH cx_salv_bs_sc_runtime_info.
  ENDTRY.
  CALL METHOD cl_salv_bs_runtime_info=>clear_all.

步骤四:进行数据的处理

做过的一个实例:

  DATA go_data TYPE REF TO data.

  FIELD-SYMBOLS: <git_outtab> TYPE ANY TABLE  . ”结构必须和被调程序的ALV 结构一样

  RANGES:g_werks  FOR mseg-werks .

  CLEAR g_werks.
  g_werks-sign = 'I'.
  g_werks-option = 'EQ'.
  g_werks-low = '6001'.
  APPEND g_werks.

  CLEAR g_werks.
  g_werks-sign = 'I'.
  g_werks-option = 'EQ'.
  g_werks-low = '6003'.
  APPEND g_werks.


 cl_salv_bs_runtime_info=>set(
      display  = abap_false
      metadata = abap_false
      data     = abap_true  ).


  SUBMIT ztld_mm_009
  WITH s_date = s_date WITH s_werks IN g_werks WITH s_lgort IN  s_lgort
  EXPORTING LIST TO MEMORY AND RETURN.

  TRY.
      "取得运行数据
      cl_salv_bs_runtime_info=>get_data_ref(
            IMPORTING
              r_data = go_data
      ).
*   数据赋值      
      ASSIGN go_data->* TO <git_outtab>.  "结构必须和被调程序的ALV 结构一样

    CATCH cx_salv_bs_sc_runtime_info.
  ENDTRY.
  CALL METHOD cl_salv_bs_runtime_info=>clear_all.
  IF go_data IS NOT INITIAL .


*数据处理
    LOOP AT <git_outtab> ASSIGNING <gis_outtab>.
      ztld_dmbtr = <gis_outtab>-dmbtr + ztld_dmbtr.    

      ztld_cqje = <gis_outtab>-dmbtr14 + <gis_outtab>-dmbtr15 + <gis_outtab>-dmbtr16
                + <gis_outtab>-dmbtr17 + <gis_outtab>-dmbtr18 + <gis_outtab>-dmbtr19 
                + ztld_cqje .


    ENDLOOP.
  ENDIF.

猜你喜欢

转载自blog.csdn.net/fengxin_/article/details/107516820
今日推荐