使用弹窗批量修改数据POPUP_GET_VALUES
转自:https://blog.csdn.net/huanglin6/article/details/81231215
业务场景:在SAP内,有时候需要用户批量维护某些数据,这时候可以使用标准函数POPUP_GET_VALUES可以进行批量的维护。
效果图
参考代码
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
本人常年接收SAP运维和远程项目,ECC,S/4HANA,CRM,WDA.
远程人天可谈,终身售后,有活请联系V信:18925782767(问问题免费,欢迎交流!)
!!请关注本人技术分享公众号:SAP翔子(可扫头像二维码)
每天分享新知识,博客文章也会陆续整理并迁移至公众号,与您一起共同学习