轉自:https://blog.csdn.net/huanglin6/article/details/81231215函數
業務場景:在SAP內,有時候須要用戶批量維護某些數據,這時候能夠使用標準函數POPUP_GET_VALUES能夠進行批量的維護。ui
效果圖spa
參考代碼.net
FORM CALL_CHANGE CHANGING P_L_RETURN_CODE . DATA: BEGIN OF FIELDS OCCURS 5. INCLUDE STRUCTURE SVAL. DATA: END OF FIELDS. DATA: L_RETURN_CODE TYPE C. DATA: DATE LIKE T5A4A-DLYDY. CLEAR:FIELDS. FIELDS-TABNAME = 'ZTSD_SCXQ_H'. FIELDS-FIELDNAME = 'WERKS'. APPEND FIELDS. CLEAR:FIELDS. FIELDS-TABNAME = 'EKKO'. FIELDS-FIELDNAME = 'EKORG'. APPEND FIELDS. CLEAR:FIELDS. FIELDS-TABNAME = 'EKKO'. FIELDS-FIELDNAME = 'EKGRP'. APPEND FIELDS. CLEAR:FIELDS. FIELDS-TABNAME = 'LFA1'. FIELDS-FIELDNAME = 'LIFNR'. APPEND FIELDS. *FIELDS-TABNAME = 'LFA1'. *FIELDS-FIELDNAME = 'NAME1'. *APPEND FIELDS. CLEAR:FIELDS. FIELDS-TABNAME = 'T001L'. FIELDS-FIELDNAME = 'LGORT'. APPEND FIELDS. CLEAR:FIELDS. FIELDS-TABNAME = 'ZTMM_ZMWSKZ'. FIELDS-FIELDNAME = 'MWSKZ'. APPEND FIELDS. CLEAR:FIELDS. FIELDS-TABNAME = 'EKKO'. FIELDS-FIELDNAME = 'BSART'. APPEND FIELDS. CLEAR:FIELDS. FIELDS-TABNAME = 'ZTPP_CPDM'. FIELDS-FIELDNAME = 'ZDM'. FIELDS-FIELDTEXT = '產品代碼'. APPEND FIELDS. CLEAR:FIELDS. FIELDS-TABNAME = 'ZTPP_SCDM'. FIELDS-FIELDNAME = 'ZDM'. FIELDS-FIELDTEXT = '生產代碼'. APPEND FIELDS. CLEAR:FIELDS. FIELDS-TABNAME = 'EKKO'. FIELDS-FIELDNAME = 'ZYFK'. APPEND FIELDS. CLEAR:FIELDS. FIELDS-TABNAME = 'ZTMM_ZTERM'. FIELDS-FIELDNAME = 'ZTERM'. APPEND FIELDS. CLEAR:FIELDS. FIELDS-TABNAME = 'BAPIMEPOITEM'. FIELDS-FIELDNAME = 'UNDER_DLV_TOL'. APPEND FIELDS. CLEAR:FIELDS. FIELDS-TABNAME = 'BAPIMEPOITEM'. FIELDS-FIELDNAME = 'OVER_DLV_TOL'. APPEND FIELDS. CLEAR:FIELDS. FIELDS-TABNAME = 'ZTMM_JYD'. FIELDS-FIELDNAME = 'ZJYD'. APPEND FIELDS. CLEAR:FIELDS. FIELDS-TABNAME = 'EKKO'. FIELDS-FIELDNAME = 'ZCGXY'. APPEND FIELDS. CLEAR:FIELDS. FIELDS-TABNAME = 'EKKO'. FIELDS-FIELDNAME = 'PINCR'. FIELDS-FIELDTEXT = '日期加'. APPEND FIELDS. CLEAR:FIELDS. FIELDS-TABNAME = 'EKKO'. FIELDS-FIELDNAME = 'LPONR'. FIELDS-FIELDTEXT = '日期減'. APPEND FIELDS. CLEAR:FIELDS. FIELDS-TABNAME = 'EKPO'. FIELDS-FIELDNAME = 'NETPR'. FIELDS-FIELDTEXT = '含稅單價'. APPEND FIELDS. CLEAR:FIELDS. FIELDS-TABNAME = 'EKKO'. FIELDS-FIELDNAME = 'WAERS'. FIELDS-FIELD_ATTR = '04' . APPEND FIELDS. CALL FUNCTION 'POPUP_GET_VALUES' EXPORTING * NO_VALUE_CHECK = ' ' POPUP_TITLE = '批量賦值' * START_COLUMN = '5' * START_ROW = '5' IMPORTING RETURNCODE = L_RETURN_CODE TABLES FIELDS = FIELDS EXCEPTIONS ERROR_IN_FIELDS = 1 OTHERS = 2 . IF SY-SUBRC <> 0. * Implement suitable error handling here ENDIF. READ TABLE FIELDS WITH KEY FIELDNAME = 'WERKS'. IF SY-SUBRC EQ 0. MOVE FIELDS-VALUE TO G_WERKS. ENDIF. READ TABLE FIELDS WITH KEY FIELDNAME = 'EKORG'. IF SY-SUBRC EQ 0. MOVE FIELDS-VALUE TO G_EKORG. ENDIF. READ TABLE FIELDS WITH KEY FIELDNAME = 'EKGRP'. IF SY-SUBRC EQ 0. MOVE FIELDS-VALUE TO G_EKGRP. ENDIF. READ TABLE FIELDS WITH KEY FIELDNAME = 'LIFNR'. IF SY-SUBRC EQ 0. MOVE FIELDS-VALUE TO G_LIFNR. ENDIF. READ TABLE FIELDS WITH KEY FIELDNAME = 'NAME1'. IF SY-SUBRC EQ 0. MOVE FIELDS-VALUE TO G_NAME1. ENDIF. READ TABLE FIELDS WITH KEY FIELDNAME = 'LGORT'. IF SY-SUBRC EQ 0. MOVE FIELDS-VALUE TO G_LGORT. ENDIF. READ TABLE FIELDS INDEX 8."WITH KEY FIELDNAME = 'ZDM'. IF SY-SUBRC EQ 0. MOVE FIELDS-VALUE TO G_ZDM_CP. ENDIF. READ TABLE FIELDS INDEX 9."WITH KEY FIELDNAME = 'ZDM'. IF SY-SUBRC EQ 0. MOVE FIELDS-VALUE TO G_ZDM_GS. ENDIF. *G_ZDM_CP LIKE ZTPP_CPDM-ZDM,"產品代碼 * LIKE ZTPP_CPDM-ZDM."生產代碼 READ TABLE FIELDS WITH KEY FIELDNAME = 'BSART'. IF SY-SUBRC EQ 0. MOVE FIELDS-VALUE TO G_BSART. ENDIF. READ TABLE FIELDS WITH KEY FIELDNAME = 'MWSKZ'. IF SY-SUBRC EQ 0. MOVE FIELDS-VALUE TO G_MWSKZ. ENDIF. "是否預付款 ADD BY HANDLH 2018.5.22 READ TABLE FIELDS WITH KEY FIELDNAME = 'ZYFK'. IF SY-SUBRC EQ 0. MOVE FIELDS-VALUE TO G_ZYFK. ENDIF. "付款條件 ADD BY HANDLH 2018.5.22 READ TABLE FIELDS WITH KEY FIELDNAME = 'ZTERM'. IF SY-SUBRC EQ 0. MOVE FIELDS-VALUE TO G_ZTERM. ENDIF. "交貨不足限度 ADD BY HANDLH 2018.5.22 READ TABLE FIELDS WITH KEY FIELDNAME = 'UNDER_DLV_TOL'. IF SY-SUBRC EQ 0. MOVE FIELDS-VALUE TO G_UNTTO. ENDIF. "過量交貨限度 ADD BY HANDLH 2018.5.22 READ TABLE FIELDS WITH KEY FIELDNAME = 'OVER_DLV_TOL'. IF SY-SUBRC EQ 0. MOVE FIELDS-VALUE TO G_UEBTO. ENDIF. "採購單價 READ TABLE FIELDS WITH KEY FIELDNAME = 'NETPR'. IF SY-SUBRC EQ 0. MOVE FIELDS-VALUE TO G_NETPR. ENDIF. "檢驗地點 READ TABLE FIELDS WITH KEY FIELDNAME = 'ZJYD'. IF SY-SUBRC EQ 0. MOVE FIELDS-VALUE TO G_ZJYD. ENDIF. "採購協議號 READ TABLE FIELDS WITH KEY FIELDNAME = 'ZCGXY'. IF SY-SUBRC EQ 0. MOVE FIELDS-VALUE TO G_ZCGXY. ENDIF. "日期加 READ TABLE FIELDS WITH KEY FIELDNAME = 'PINCR'. IF SY-SUBRC EQ 0. MOVE FIELDS-VALUE TO G_DAY_ADD. ENDIF. "日期減 READ TABLE FIELDS WITH KEY FIELDNAME = 'LPONR'. IF SY-SUBRC EQ 0. MOVE FIELDS-VALUE TO G_DAY_DEC. ENDIF. IF L_RETURN_CODE NE 'A'."不是取消 . LOOP AT GT_OUTPUT ASSIGNING FIELD-SYMBOL(<FW_OUTPUT>) WHERE SLBOX EQ 'X'. IF G_WERKS IS NOT INITIAL. MOVE G_WERKS TO <FW_OUTPUT>-DWERK. ENDIF. IF G_EKORG IS NOT INITIAL . MOVE G_EKORG TO <FW_OUTPUT>-EKORG. ENDIF. IF G_EKGRP IS NOT INITIAL . MOVE G_EKGRP TO <FW_OUTPUT>-EKGRP. ENDIF. IF G_LIFNR IS NOT INITIAL. MOVE G_LIFNR TO <FW_OUTPUT>-LIFNR. ENDIF. IF G_NAME1 IS NOT INITIAL . MOVE G_NAME1 TO <FW_OUTPUT>-NAME1. ENDIF. IF G_LGORT IS NOT INITIAL. MOVE G_LGORT TO <FW_OUTPUT>-LGORT. ENDIF. IF G_MWSKZ IS NOT INITIAL. MOVE G_MWSKZ TO <FW_OUTPUT>-MWSKZ. ENDIF. IF G_BSART IS NOT INITIAL . MOVE G_BSART TO <FW_OUTPUT>-BSART. ENDIF. IF G_ZDM_CP IS NOT INITIAL. MOVE G_ZDM_CP TO <FW_OUTPUT>-ZDM_CP. ENDIF. IF G_ZDM_GS IS NOT INITIAL. MOVE G_ZDM_GS TO <FW_OUTPUT>-ZDM_GS. ENDIF. IF G_ZDM_GS IS NOT INITIAL. MOVE G_ZDM_GS TO <FW_OUTPUT>-ZDM_GS. ENDIF. IF G_ZYFK IS NOT INITIAL. MOVE G_ZYFK TO <FW_OUTPUT>-ZYFK. ENDIF. IF G_ZTERM IS NOT INITIAL. MOVE G_ZTERM TO <FW_OUTPUT>-ZTERM. ENDIF. IF G_UNTTO IS NOT INITIAL. MOVE G_UNTTO TO <FW_OUTPUT>-UNTTO. ENDIF. IF G_UEBTO IS NOT INITIAL. MOVE G_UEBTO TO <FW_OUTPUT>-UEBTO. ENDIF. IF G_MAKTX IS NOT INITIAL. MOVE G_MAKTX TO <FW_OUTPUT>-MAKTX. ENDIF. IF G_NETPR IS NOT INITIAL. MOVE G_NETPR TO <FW_OUTPUT>-NETPR. ENDIF. IF G_ZJYD IS NOT INITIAL. MOVE G_ZJYD TO <FW_OUTPUT>-ZJYD. ENDIF. IF G_ZCGXY IS NOT INITIAL. MOVE G_ZCGXY TO <FW_OUTPUT>-ZCGXY. ENDIF. IF G_DAY_ADD IS NOT INITIAL . MOVE G_DAY_ADD TO DATE. CALL FUNCTION 'RP_CALC_DATE_IN_INTERVAL' EXPORTING date = <FW_OUTPUT>-ZJHRK_DAT days = DATE "天數加N或者減N 不加也不減 寫0 months = 0 "月份加N或者減N 不加也不減 寫0 signum = '+' "能夠是+或者- years = 0 "年份加N或者減N 不加也不減 寫0 IMPORTING calc_date = <FW_OUTPUT>-ZDDJQ."獲得加減以後的日期 ENDIF. IF G_DAY_DEC IS NOT INITIAL . MOVE G_DAY_DEC TO DATE. CALL FUNCTION 'RP_CALC_DATE_IN_INTERVAL' EXPORTING date = <FW_OUTPUT>-ZJHRK_DAT days = DATE "天數加N或者減N 不加也不減 寫0 months = 0 "月份加N或者減N 不加也不減 寫0 signum = '-' "能夠是+或者- years = 0 "年份加N或者減N 不加也不減 寫0 IMPORTING calc_date = <FW_OUTPUT>-ZDDJQ."獲得加減以後的日期 ENDIF. SELECT SINGLE NAME1 INTO <FW_OUTPUT>-NAME1 FROM LFA1 WHERE LIFNR EQ <FW_OUTPUT>-LIFNR. ENDLOOP. ENDIF. ENDFORM. ———————————————— 版權聲明:本文爲CSDN博主「SAP-Joker」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處連接及本聲明。 原文連接:https://blog.csdn.net/huanglin6/article/details/81231215