zjut_xiongfeng 发表于 2013-1-26 13:56:36

DYNP_VALUES_UPDATE 實時更新 Selection Screen

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 dynamicallyREPORT ztest.TYPE-POOLS: slis.*----------------------------------------------------------------------**      T A B L E S*----------------------------------------------------------------------**----------------------------------------------------------------------**      T Y P E S*----------------------------------------------------------------------** Main internal table for processTYPES: 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_bwartOCCURS 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 StockSELECTION-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 DisplayCLEAR 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/
页: [1]
查看完整版本: DYNP_VALUES_UPDATE 實時更新 Selection Screen