DYNP_VALUES_UPDATE 實時更新 Selection Screen
在 AT SELECTION-SCREEN 事件中更新 PARAMETER 或 SELECT-OPTIONS 的數值時,當前的畫面並不會立即更新,要按 Enter 之後才會顯示最新數值。
以下代碼是用 DYNP_VALUES_UPDATE 實現實時更新。
(1) 觸發 AT SELECTION-SCREEN ON VALUE-REQUEST FOR XXX.
(2) REUSE_ALV_POPUP_TO_SELECT 彈出選單,Double Click 以選擇目標。
(3) 立即更新已選的兩個數值。
DYNP_VALUES_UPDATE – Update the Selection Screen dynamically
REPORT ztest.
TYPE-POOLS: slis.
*----------------------------------------------------------------------*
* T A B L E S
*----------------------------------------------------------------------*
*----------------------------------------------------------------------*
* T Y P E S
*----------------------------------------------------------------------*
* Main internal table for process
TYPES: BEGIN OF ty_bwart,
zeile TYPE mseg-zeile,
bwart TYPE mseg-bwart,
sobkz TYPE mseg-sobkz,
rmtxt TYPE string,
END OF ty_bwart.
*----------------------------------------------------------------------*
* I N T E R N A L T A B L E
*----------------------------------------------------------------------*
DATA: t_bwart TYPE ty_bwart OCCURS 0 WITH HEADER LINE.
*----------------------------------------------------------------------*
* W O R K I N G A R E A S *
*----------------------------------------------------------------------*
DATA: w_bwart TYPE ty_bwart.
*----------------------------------------------------------------------*
* S E L E C T I O N - S C R E E N
*----------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE c_title.
PARAMETER: p_bwart LIKE mseg-bwart OBLIGATORY, "MOV Type
p_sobkz LIKE mseg-sobkz. "Special Stock
SELECTION-SCREEN SKIP 1.
SELECTION-SCREEN END OF BLOCK b1.
*----------------------------------------------------------------------*
* L O A D - O F - P R O G R A M
*----------------------------------------------------------------------*
LOAD-OF-PROGRAM.
*----------------------------------------------------------------------*
* I N I T I A L I Z A T I O N
*----------------------------------------------------------------------*
INITIALIZATION.
c_title = 'DYNP_VALUES_UPDATE Demo'.
t_bwart-bwart = '322'.
t_bwart-sobkz = ''.
t_bwart-rmtxt = 'Unrest. Use > QI (WH stock)'.
APPEND t_bwart.
t_bwart-bwart = '344'.
t_bwart-sobkz = 'K'.
t_bwart-rmtxt = 'Unrest. Use > Blocked (Consignment)'.
APPEND t_bwart.
t_bwart-bwart = '321'.
t_bwart-sobkz = ''.
t_bwart-rmtxt = 'QI > to Unrest. Use (WH stock)'.
APPEND t_bwart.
t_bwart-bwart = '350'.
t_bwart-sobkz = 'E'.
t_bwart-rmtxt = 'QI > Blocked (SO stock)'.
APPEND t_bwart.
t_bwart-bwart = '350'.
t_bwart-sobkz = 'K'.
t_bwart-rmtxt = 'QI > Blocked (Consignment)'.
APPEND t_bwart.
*----------------------------------------------------------------------*
* A T S E L E C T I O N - S C R E E N
*----------------------------------------------------------------------*
AT SELECTION-SCREEN. "ON VALUE-REQUEST FOR P_LAYOUT.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_bwart.
DATA l_selfield TYPE slis_selfield.
DATA: wa_fcat TYPE slis_fieldcat_alv,
fcat TYPE slis_t_fieldcat_alv.
"Field Cat. for Error Message Display
CLEAR wa_fcat.
wa_fcat-row_pos = '1'.
wa_fcat-col_pos = '1'.
wa_fcat-fieldname = 'BWART'.
wa_fcat-tabname = 'T_BWART'.
wa_fcat-seltext_m = 'Movement'.
wa_fcat-outputlen = 5.
APPEND wa_fcat TO fcat.
CLEAR wa_fcat.
wa_fcat-row_pos = '1'.
wa_fcat-col_pos = '2'.
wa_fcat-fieldname = 'SOBKZ'.
wa_fcat-tabname = 'T_BWART'.
wa_fcat-seltext_m = 'Spec.Stk.'.
wa_fcat-outputlen = 5.
APPEND wa_fcat TO fcat.
CLEAR wa_fcat.
wa_fcat-row_pos = '1'.
wa_fcat-col_pos = '3'.
wa_fcat-fieldname = 'RMTXT'.
wa_fcat-tabname = 'T_BWART'.
wa_fcat-seltext_m = 'Description'.
wa_fcat-outputlen = 50.
APPEND wa_fcat TO fcat.
CALL FUNCTION 'REUSE_ALV_POPUP_TO_SELECT'
EXPORTING
i_selection = 'X'
i_zebra = 'X'
it_fieldcat = fcat
i_tabname = 'T_BWART'
* I_CHECKBOX_FIELDNAME = 'CHECKBOX'
IMPORTING
es_selfield = l_selfield
TABLES
t_outtab = t_bwart.
IF l_selfield-tabindex GT 0.
CLEAR w_bwart.
READ TABLE t_bwart INDEX l_selfield-tabindex INTO w_bwart.
IF w_bwart-bwart IS NOT INITIAL.
DATA: ltab_fields LIKE dynpread OCCURS 0 WITH HEADER LINE.
DATA: lc_dyname LIKE sy-repid.
DATA: lc_dynumb LIKE sy-dynnr.
lc_dyname = sy-repid.
lc_dynumb = sy-dynnr.
ltab_fields-fieldname = 'P_BWART'.
ltab_fields-fieldvalue = w_bwart-bwart.
APPEND ltab_fields.
ltab_fields-fieldname = 'P_SOBKZ'.
ltab_fields-fieldvalue = w_bwart-sobkz.
APPEND ltab_fields.
CALL FUNCTION 'DYNP_VALUES_UPDATE'
EXPORTING
dyname = lc_dyname
dynumb = lc_dynumb
TABLES
dynpfields = ltab_fields
EXCEPTIONS
OTHERS = 8.
ENDIF.
ENDIF.
http://w1ng.hk/dynp_values_update-update-selection/