ABAP 通过SUBMIT获取另一个程序里的数据源详解编程语言

1.被调用程序

选择屏幕

ABAP 通过SUBMIT获取另一个程序里的数据源详解编程语言

输出ALV

ABAP 通过SUBMIT获取另一个程序里的数据源详解编程语言

2.在另一个程序调用上面程序,并获取ALV数据

ABAP 通过SUBMIT获取另一个程序里的数据源详解编程语言

ABAP 通过SUBMIT获取另一个程序里的数据源详解编程语言

DATA: lt_selscreen TYPE STANDARD TABLE OF rsparams, 
      ls_selscreen LIKE LINE OF lt_selscreen. 
 
DATA:         lc_data            TYPE REF TO data, 
              lc_data_line       TYPE REF TO data, 
              lc_data_descr      TYPE REF TO cl_abap_datadescr, 
              lc_data_descr_line TYPE REF TO cl_abap_datadescr. 
 
FIELD-SYMBOLS: <fs_data>  TYPE ANY TABLE. 
 
"封装条件 
ls_selscreen-selname = 'P_WERKS'. 
ls_selscreen-kind = 'P'. "选择条件 P:PARAMATERS    S:SELECT-OPTIONS 
ls_selscreen-sign = 'I'. 
ls_selscreen-option = 'EQ'. 
ls_selscreen-low = '1001'. 
APPEND ls_selscreen TO lt_selscreen. 
 
CLEAR ls_selscreen. 
ls_selscreen-selname = 'S_MATNR'. 
ls_selscreen-kind = 'S'. 
ls_selscreen-sign = 'I'. 
ls_selscreen-option = 'EQ'. 
ls_selscreen-low = 'C1007622000'. 
APPEND ls_selscreen TO lt_selscreen. 
 
CLEAR ls_selscreen. 
ls_selscreen-selname = 'S_MATNR'. 
ls_selscreen-kind = 'S'. 
ls_selscreen-sign = 'I'. 
ls_selscreen-option = 'EQ'. 
ls_selscreen-low = 'C1007622002'. 
APPEND ls_selscreen TO lt_selscreen. 
 
cl_salv_bs_runtime_info=>set( 
  EXPORTING display  = abap_false 
            metadata = abap_false 
            data     = abap_true ). 
 
SUBMIT ywx_test08 
        WITH SELECTION-TABLE lt_selscreen 
        AND RETURN. 
 
TRY. 
    "1、获取数据源参考 
    cl_salv_bs_runtime_info=>get_data_ref( 
         IMPORTING 
                   r_data            = lc_data  ). 
*                   r_data_line       = lc_data_line 
*                   r_data_descr      = lc_data_descr 
*                   r_data_line_descr = lc_data_descr_line ). 
 
    "2、分配变量给指针 
    ASSIGN lc_data->* TO <fs_data> . 
 
    "3、获取数据 
    cl_salv_bs_runtime_info=>get_data( 
      IMPORTING 
          t_data    =   <fs_data> ). 
 
  CATCH cx_salv_bs_sc_runtime_info. 
    MESSAGE `获取ALV数据出错` TYPE 'E'. 
ENDTRY. 
 
IF <fs_data> is not INITIAL. 
  LOOP AT <fs_data> ASSIGNING FIELD-SYMBOL(<fs>). 
    WRITE:/ <fs>. 
  ENDLOOP. 
ENDIF.

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/17990.html

(0)
上一篇 2021年7月19日 20:42
下一篇 2021年7月19日 20:42

相关推荐

发表回复

登录后才能评论