转自: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 .
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 = '' .
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 =
OTHERS =
.
IF SY-SUBRC <> .
* Implement suitable error handling here
ENDIF. READ TABLE FIELDS WITH KEY FIELDNAME = 'WERKS'.
IF SY-SUBRC EQ .
MOVE FIELDS-VALUE TO G_WERKS.
ENDIF. READ TABLE FIELDS WITH KEY FIELDNAME = 'EKORG'.
IF SY-SUBRC EQ .
MOVE FIELDS-VALUE TO G_EKORG.
ENDIF. READ TABLE FIELDS WITH KEY FIELDNAME = 'EKGRP'.
IF SY-SUBRC EQ .
MOVE FIELDS-VALUE TO G_EKGRP.
ENDIF. READ TABLE FIELDS WITH KEY FIELDNAME = 'LIFNR'.
IF SY-SUBRC EQ .
MOVE FIELDS-VALUE TO G_LIFNR.
ENDIF. READ TABLE FIELDS WITH KEY FIELDNAME = 'NAME1'.
IF SY-SUBRC EQ .
MOVE FIELDS-VALUE TO G_NAME1.
ENDIF. READ TABLE FIELDS WITH KEY FIELDNAME = 'LGORT'.
IF SY-SUBRC EQ .
MOVE FIELDS-VALUE TO G_LGORT.
ENDIF. READ TABLE FIELDS INDEX ."WITH KEY FIELDNAME = 'ZDM'.
IF SY-SUBRC EQ .
MOVE FIELDS-VALUE TO G_ZDM_CP.
ENDIF. READ TABLE FIELDS INDEX ."WITH KEY FIELDNAME = 'ZDM'.
IF SY-SUBRC EQ .
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 .
MOVE FIELDS-VALUE TO G_BSART.
ENDIF. READ TABLE FIELDS WITH KEY FIELDNAME = 'MWSKZ'.
IF SY-SUBRC EQ .
MOVE FIELDS-VALUE TO G_MWSKZ.
ENDIF. "是否预付款 ADD BY HANDLH 2018.5.22
READ TABLE FIELDS WITH KEY FIELDNAME = 'ZYFK'.
IF SY-SUBRC EQ .
MOVE FIELDS-VALUE TO G_ZYFK.
ENDIF. "付款条件 ADD BY HANDLH 2018.5.22
READ TABLE FIELDS WITH KEY FIELDNAME = 'ZTERM'.
IF SY-SUBRC EQ .
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 .
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 .
MOVE FIELDS-VALUE TO G_UEBTO.
ENDIF. "采购单价
READ TABLE FIELDS WITH KEY FIELDNAME = 'NETPR'.
IF SY-SUBRC EQ .
MOVE FIELDS-VALUE TO G_NETPR.
ENDIF. "检验地点
READ TABLE FIELDS WITH KEY FIELDNAME = 'ZJYD'.
IF SY-SUBRC EQ .
MOVE FIELDS-VALUE TO G_ZJYD.
ENDIF. "采购协议号
READ TABLE FIELDS WITH KEY FIELDNAME = 'ZCGXY'.
IF SY-SUBRC EQ .
MOVE FIELDS-VALUE TO G_ZCGXY.
ENDIF. "日期加
READ TABLE FIELDS WITH KEY FIELDNAME = 'PINCR'.
IF SY-SUBRC EQ .
MOVE FIELDS-VALUE TO G_DAY_ADD.
ENDIF. "日期减
READ TABLE FIELDS WITH KEY FIELDNAME = 'LPONR'.
IF SY-SUBRC EQ .
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 = "月份加N或者减N 不加也不减 写0
signum = '+' "可以是+或者-
years = "年份加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 = "月份加N或者减N 不加也不减 写0
signum = '-' "可以是+或者-
years = "年份加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/

使用弹窗批量修改数据POPUP_GET_VALUES的更多相关文章

  1. 批量修改数据sql

    --insert into P_ZPROMOTION_DOC_ITEMS (AKTNR,MATNR,MINGROSS,MCRANK,MCUPRICE,MAXBAKTNR,MAXBPAMONT,MAXB ...

  2. ArcGIS 批量修改数据名称-arcgis案例实习教程

    ArcGIS 批量修改数据名称-arcgis案例实习教程 联系方式:谢老师,135-4855-4328,xiexiaokui#qq.com 功能:批量修改数据/文件名称 使用方法: 输入:文件夹(或者 ...

  3. php 循环从数据库分页取数据批量修改数据

    //批量修改email重复 public function getEmail() { $this->model = app::get('shop')->model('manage'); / ...

  4. .net Core使用sql语句实现批量修改数据状态

    上图为查出的所有满足条件的数据,要选中若干条数据将其状态设置为作废 一共选中6条数据,当点击确认后修改数据状态. 前端代码 1.安装NuGet包 [Abp.Dapper]于EFCore中, 2.创建文 ...

  5. MySQL+MyBatis下批量修改数据的问题

    今天处理数据批量的更新,场景是这样子的,web站管理的字典功能,需要添加一个记录的整体描述,以及详细内容的描述.一个字典整体概述只有一组信息,但是其详细内容,会有很多项,不确定. 这个场景,在关系型数 ...

  6. Spring Boot + LayUI 批量修改数据 数据包含着对象

    页面展示 HTML 代码 <blockquote class="layui-elem-quote demoTable"> <div class="lay ...

  7. 一百一十三、SAP的SCAT录屏操作,类似按键精灵可用于批量修改数据

    一.输入事务代码SCAT,输入Z开头的程序名,点击左上角的新建图标 二.输入标题和模块名 三.保存为本地对象 四.包属性修改为CATT,然后保存 五.可以看到我们新建的一条内容,点击小铅笔修改 六.点 ...

  8. SQL 查找重复项及批量修改数据成固定格式

    1.查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断select * from peoplewhere peopleId in (select   peopleId  from ...

  9. Phoenix批量修改数据

    很简单的一个东西,查了挺久的,浪费了很多的时间 直接用Upsert Into Select就可以了 例:把tables表中cloumn2列等于bbb的都改成aaa Upsert Into Table  ...

随机推荐

  1. Springboot与ActiveMQ、Solr、Redis中分布式事物的初步探索

    Springboot与ActiveMQ.Solr.Redis中分布式事物的初步探索 解决的场景:事物中的异步问题,当要求数据库与solr服务器的最终一致时. 程序条件: 利用消息队列,当数据库添加成功 ...

  2. 猜数游戏-人机对战-经典的randint使用

    翻阅去年的笔记,老师曾经教的random模块下的三种用法,其中之一是randint用法,今天上传,留作笔记参考.人生苦短,我用python! # -*- coding: UTF-8 -*- impor ...

  3. Robot Framework--用例、数据、流程分离例子

    如果想改变输入框的输入词,则需要不停的复制case,为了减少冗余,可以做一个简单的分层,把搜索流程剥离成一个关键字,然后再不同的case中调用这个关键字,然后传递不同的参数,以进行不同数据在同一流程下 ...

  4. 关于创建Django表单Forms继承BaseForm的问题

    在创建Django表单时,因为需要验证用户输入的验证码是否正确,因此需要在session里提取当前验证码的值和POST提交过来的值进行比对,如图: form.py from django import ...

  5. python func(*args, **kwargs)

    func(*args, **kwargs) *args, **kwargs表示函数的可变参数 *args 表示任何多个无名参数,它是一个tuple **kwargs 表示关键字参数,它是一个dict ...

  6. Second Max of Array

    Find the second max number in a given array. Example Given [1, 3, 2, 4], return 3. Given [1, 2], ret ...

  7. git删除指定commit

    1.使用git log 命令,查看已提交的记录.例如红色圈出的commit是本次要删除的commit. 2.先找到此次提交之前的一次提交的commit 1d6b81b138f89735265900b9 ...

  8. How To Add User To Sudoers On Debian 10 Buster

    In today’s tutorial, we are going to see how you can add a user to sudoers on Debian distributions. ...

  9. oom killer 详解

    一.oom killer理解和日志分析:知识储备 oom killer日志分析,这是前篇,准备一些基础知识 带着问题看: 1.什么是oom killer 是Linux内核设计的一种机制,在内存不足的时 ...

  10. Educational Codeforces Round 60 D. Magic Gems

    易得递推式为f[i]=f[i-1]+f[i-M] 最终答案即为f[N]. 由于N很大,用矩阵快速幂求解. code: #include<bits/stdc++.h> using names ...