DYNP_VALUES_UPDATE 實時更新 Selection Screen

本文介绍如何使用DYNP_VALUES_UPDATE实现ABAP程序中选择屏幕参数的实时更新。通过示例代码展示了如何在用户选择后即时刷新选择屏幕上的PARAMETER或SELECT-OPTIONS值,提高用户体验。
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/
REPORT Z_XTT_FILE_BROWSER. DATA: V_FILE_PATH TYPE STRING, V_DIR_PATH TYPE STRING. PARAMETERS: P_FILE TYPE RLGRAP-FILENAME DEFAULT 'C:\' OBLIGATORY, P_DIR TYPE RLGRAP-FILENAME DEFAULT 'C:\' OBLIGATORY. SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001. PARAMETERS: RB_FILE RADIOBUTTON GROUP GR1 DEFAULT 'X', RB_DIR RADIOBUTTON GROUP GR1. SELECTION-SCREEN END OF BLOCK B1. AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE. PERFORM FRM_GET_FILE_PATH. AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_DIR. PERFORM FRM_GET_DIR_PATH. FORM FRM_GET_FILE_PATH. DATA: LIT_FILES TYPE FILETABLE, LWA_FILE TYPE FILE_TABLE, V_RC TYPE I. CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG EXPORTING WINDOW_TITLE = 'Select File' DEFAULT_EXTENSION = '*.*' MULTISELECTION = ABAP_FALSE CHANGING FILE_TABLE = LIT_FILES RC = V_RC EXCEPTIONS FILE_OPEN_DIALOG_FAILED = 1 CNTL_ERROR = 2 ERROR_NO_GUI = 3 NOT_SUPPORTED_BY_GUI = 4 OTHERS = 5. IF SY-SUBRC = 0 AND V_RC = 1. READ TABLE LIT_FILES INTO LWA_FILE INDEX 1. IF SY-SUBRC = 0. P_FILE = LWA_FILE-FILENAME. ENDIF. ENDIF. ENDFORM. FORM FRM_GET_DIR_PATH. DATA: V_DIR TYPE STRING. CALL METHOD CL_GUI_FRONTEND_SERVICES=>DIRECTORY_BROWSE EXPORTING WINDOW_TITLE = 'Select Directory' INITIAL_FOLDER = 'C:\' CHANGING SELECTED_FOLDER = V_DIR EXCEPTIONS CNTL_ERROR = 1 ERROR_NO_GUI = 2 NOT_SUPPORTED_BY_GUI = 3 OTHERS = 4. IF SY-SUBRC = 0. P_DIR = V_DIR. ENDIF. ENDFORM. START-OF-SELECTION. IF RB_FILE = 'X'. V_FILE_PATH = P_FILE. WRITE: / 'Selected File:', V_FILE_PATH. ELSE. V_DIR_PATH = P_DIR. WRITE: / 'Selected Directory:', V_DIR_PATH. ENDIF. ### 问题: 如何创建一个SAP接口来获取国家特定的数字格式、日期格式和时间格式设置,包括可选的相关描述信息? ### 代码: REPORT ZGET_COUNTRY_FORMATS. TABLES: T005X. TYPES: BEGIN OF TY_COUNTRY_FORMAT, LAND1 TYPE T005X-LAND1, NUMCO TYPE T005X-NUMCO, DATFM TYPE T005X-DATFM, TIMEFM TYPE T005X-TIMEFM, LANDX TYPE T005X-LANDX, DATFMTXT TYPE T005X-DATFMTXT, TIMEFMTXT TYPE T005X-TIMEFMTXT, END OF TY_COUNTRY_FORMAT. DATA: IT_COUNTRY_FORMATS TYPE STANDARD TABLE OF TY_COUNTRY_FORMAT, WA_COUNTRY_FORMAT TYPE TY_COUNTRY_FORMAT. SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001. PARAMETERS: P_LAND1 TYPE T005X-LAND1 OBLIGATORY. SELECT-OPTIONS: S_NUMCO FOR T005X-NUMCO. PARAMETERS: CB_DESC AS CHECKBOX DEFAULT 'X'. SELECTION-SCREEN END OF BLOCK B1. START-OF-SELECTION. PERFORM FRM_GET_COUNTRY_FORMATS. FORM FRM_GET_COUNTRY_FORMATS. SELECT LAND1 NUMCO DATFM TIMEFM LANDX DATFMTXT TIMEFMTXT FROM T005X INTO TABLE IT_COUNTRY_FORMATS WHERE LAND1 = P_LAND1 AND NUMCO IN S_NUMCO. IF CB_DESC = 'X'. LOOP AT IT_COUNTRY_FORMATS INTO WA_COUNTRY_FORMAT. WRITE: / 'Country:', WA_COUNTRY_FORMAT-LAND1, / 'Numeric Format:', WA_COUNTRY_FORMAT-NUMCO, / 'Date Format:', WA_COUNTRY_FORMAT-DATFM, / 'Time Format:', WA_COUNTRY_FORMAT-TIMEFM, / 'Country Name:', WA_COUNTRY_FORMAT-LANDX, / 'Date Format Desc:', WA_COUNTRY_FORMAT-DATFMTXT, / 'Time Format Desc:', WA_COUNTRY_FORMAT-TIMEFMTXT. ENDLOOP. ELSE. LOOP AT IT_COUNTRY_FORMATS INTO WA_COUNTRY_FORMAT. WRITE: / 'Country:', WA_COUNTRY_FORMAT-LAND1, / 'Numeric Format:', WA_COUNTRY_FORMAT-NUMCO, / 'Date Format:', WA_COUNTRY_FORMAT-DATFM, / 'Time Format:', WA_COUNTRY_FORMAT-TIMEFM. ENDLOOP. ENDIF. ENDFORM. 上面代码用了CLASS,把他改成不用CLASS的方法
最新发布
07-11
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值