货铺QQ群号:834508274


进群统一修改群名片,例如BJ_ABAP_森林木。群内禁止发广告及其他一切无关链接,小程序等,进群看公告,谢谢配合
不修改昵称会被不定期踢除,谢谢配合!

有时候是需要获取其他程序的结果,可以考虑把某个程序的主要逻辑封装成function,也可以考虑在某个地方submit下这个程序。

因为submit return,没有输出接口。

所以需要从内存中获取。

下面是个简单的demo:

先建一个program,根据carrid 获取spfli数据。

REPORT zlm_spfli.


TABLES:spfli.

DATA:lt_spfli TYPE TABLE OF spfli.

SELECT-OPTIONS s_carrid FOR spfli-carrid.


START-OF-SELECTION.
  SELECT * FROM spfli INTO TABLE lt_spfli
    WHERE carrid IN s_carrid.


  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      i_structure_name = 'SPFLI'
    TABLES
      t_outtab         = lt_spfli
    EXCEPTIONS
      program_error    = 1.



现在另外一个程序来submit这个程序,然后获取alv的值

*&---------------------------------------------------------------------*
*& Report ZLM_GET_ALV_DATA
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT zlm_get_alv_data.

TABLES spfli.

RANGES s_carrid FOR spfli-carrid.

DATA:lr_alv_data TYPE REF TO data.
FIELD-SYMBOLS: TYPE ANY TABLE .
FIELD-SYMBOLS: TYPE any.

START-OF-SELECTION.

  s_carrid[] = VALUE #( ( sign = 'I' option = 'EQ' low = 'LH'
                                                       high = '' ) ).
  cl_salv_bs_runtime_info=>set(
   EXPORTING
     display  = abap_false
     metadata = abap_false
     data     = abap_true ).

 


  CLEAR lr_alv_data.
  UNASSIGN .

  SUBMIT zlm_spfli
    WITH s_carrid IN   s_carrid
    AND RETURN.
  TRY.
      cl_salv_bs_runtime_info=>get_data_ref(
        IMPORTING
          r_data = lr_alv_data ).
      ASSIGN lr_alv_data->* TO .
      IF  IS ASSIGNED AND sy-subrc = 0.
      ENDIF.
    CATCH cx_salv_bs_sc_runtime_info.

  ENDTRY.

  cl_salv_bs_runtime_info=>clear_all( ).