ABAP 讀取其他ALV的顯示結果
轉載:https://blog.csdn.net/fengxin_/article/details/107516820
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.
步驟四:進行數據的處理
做過的一個實例:
types : begin of ty_alvinfo, bukrs type bseg-bukrs, "公司 werks like mard-werks, "工廠 lgort like mard-lgort, "庫位,即庫存地點 xhnum type i, "序號 matnr like mard-matnr, "SAP物料編碼 maktx like makt-maktx, "SAP物料描述 meins like mara-meins, "單位 bklas like mbew-bklas, "評估類型 " stprs LIKE mbew-stprs, "標準成本 peinh like mbew-peinh, "價格單位 matkl like mara-matkl, "物料組編號 xchpf like mara-xchpf, " 物料批次 wgbez like t023t-wgbez, "物料組名稱 sumlabst like mard-labst, "總庫存 sumlabst1 type mard-labst, "總庫存(計算) " vmver LIKE mbew-vmver, "期間單位價格 verpr like mbew-verpr, "移動平均價 bwtar like mbew-bwtar, "評估類型 salk3 like mbew-salk3, "估價的總庫存價值 dmbtr type ekbe-dmbtr, "庫存金額 budat like mkpf-budat, "庫存時間 days type faglflext-objnr00, "庫存時間 labst like mard-labst, "庫存數量 lgobe type t001l-lgobe, "倉庫名稱 qty10 type mard-labst, "7日以內庫存數量 dmbtr10 type ekbe-dmbtr, "7日以內庫存金額 qty11 type mard-labst, "7至15日庫存數量 dmbtr11 type ekbe-dmbtr, "7至15日庫存金額 qty12 type mard-labst, "15至30日庫存數量 dmbtr12 type ekbe-dmbtr, "15至30日庫存金額 qty13 type mard-labst, "30至60日庫存數量 dmbtr13 type ekbe-dmbtr, "30至60日庫存金額 qty14 type mard-labst, "60至90日庫存數量 dmbtr14 type ekbe-dmbtr, "60至90日庫存金額 qty15 type mard-labst, "90至120日庫存數量 dmbtr15 type ekbe-dmbtr, "90至120日庫存金額 qty16 type mard-labst, "120至180日庫存數量 dmbtr16 type ekbe-dmbtr, "120至180日庫存金額 qty17 type mard-labst, "180至360日庫存數量 dmbtr17 type ekbe-dmbtr, "180至360日庫存金額 qty18 type mard-labst, "360至720日庫存數量 dmbtr18 type ekbe-dmbtr, "360至720日庫存金額 qty19 type mard-labst, "720日以上庫存數量 dmbtr19 type ekbe-dmbtr, "720日以上庫存金額 menge type mseg-menge, "入庫總數量 eisbe like marc-eisbe, "安全庫存 bstmi like marc-bstmi, "最小批量 lv_datum type sy-datum, verpr1 type mbewh-verpr, box(1), end of ty_alvinfo. DATA go_data TYPE REF TO data. FIELD-SYMBOLS: <git_outtab> TYPE ANY TABLE . ”結構必須和被調程序的ALV 結構一樣 field-symbols: <gis_outtab> type ty_alvinfo. 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.
posted on 2024-11-06 17:16 seven1314pp 閱讀(334) 評論(0) 收藏 舉報
浙公網安備 33010602011771號