VA05批量更新BAPI:SD_BULK_CHANGE
碰到一个需求,需要实现VA05批量更新定价的功能,前台VA05可以对销售订单进行批量更新工厂,物料,定价,货币,DEBUG了一下发现底层调用的函数为SD_BULK_CHANGE。
其实批量更新销售订单上的定价使用BAPI_SALESORDER_CHANGE就可以完成,代码如下:
DATA:GV_SALESDOCUMENT TYPE VBAK-VBELN,GS_ORDER_HEADER_IN TYPE BAPISDH1,GS_ORDER_HEADER_INX TYPE BAPISDH1X,GS_LOGIC_SWITCH TYPE BAPISDLS,GT_ITEM TYPE STANDARD TABLE OF BAPISDITM,GS_ITEM TYPE BAPISDITM,GT_ITEMX TYPE STANDARD TABLE OF BAPISDITMX,GS_ITEMX TYPE BAPISDITMX,GT_RETURN TYPE BAPIRET2_T.GV_SALESDOCUMENT = '0000004517'. "SO号GS_ORDER_HEADER_INX-UPDATEFLAG = 'U'. "更新标识GS_LOGIC_SWITCH-PRICING = 'B'. "定价类型BGS_LOGIC_SWITCH-COND_HANDL = 'X'. "重新处理条件GS_ITEM-ITM_NUMBER = '000010'. "明细号APPEND GS_ITEM TO GT_ITEM.GS_ITEMX-ITM_NUMBER = '000010'. "明细号GS_ITEMX-UPDATEFLAG = 'U'. "更新标识APPEND GS_ITEMX TO GT_ITEMX.CALL FUNCTION 'BAPI_SALESORDER_CHANGE'EXPORTINGSALESDOCUMENT = GV_SALESDOCUMENTORDER_HEADER_INX = GS_ORDER_HEADER_INXLOGIC_SWITCH = GS_LOGIC_SWITCHTABLESRETURN = GT_RETURNORDER_ITEM_IN = GT_ITEMORDER_ITEM_INX = GT_ITEMX.CL_DEMO_OUTPUT=>DISPLAY( GT_RETURN ) .CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'EXPORTINGWAIT = 'X'.
VA05前台使用的则是SD_BULK_CHANGE去更新定价,该函数对应前台下拉菜单的四个批量更新功能,我这里只针对批量更新定价写了测试代码,其他的后面用到再测吧
*&---------------------------------------------------------------------*
*& Report ZTEST_UPDATE_PRICE
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT ZTEST_UPDATE_PRICE.
TABLES:VBAP.SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.SELECT-OPTIONS:S_VBELN FOR VBAP-VBELN.
SELECTION-SCREEN END OF BLOCK B1.START-OF-SELECTION.PERFORM FRM_UPDATE_PRICE.
*&---------------------------------------------------------------------*
*& Form FRM_UPDATE_PRICE
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM FRM_UPDATE_PRICE .DATA:LT_DOCUMENTS TYPE STANDARD TABLE OF VBMTV,LV_FUNTION TYPE SY-UCOMM VALUE 'MPRX',LS_DYNPRO_FIELDS TYPE RV45C,LS_ERROR TYPE VBFS.SELECT *INTO CORRESPONDING FIELDS OF TABLE LT_DOCUMENTSFROM VBAPWHERE VBELN IN S_VBELN.LOOP AT LT_DOCUMENTS ASSIGNING FIELD-SYMBOL(<FS_DOCUMENTS>).<FS_DOCUMENTS>-SELKZ = 'X'.ENDLOOP.CALL FUNCTION 'SD_BULK_CHANGE'EXPORTINGFUNCTION = LV_FUNTIONDYNPRO_FIELDS = LS_DYNPRO_FIELDSIV_SUPPRESS_MESSAGES = 'X'IMPORTINGPROTOKOLL = LS_ERRORTABLESDOCUMENTS = LT_DOCUMENTS.CL_DEMO_OUTPUT=>DISPLAY( LS_ERROR ).* COMMIT WORK.
ENDFORM.
批量更新物料、工厂等操作,可以在这个函数里面打断点,前台执行DEBUG看下系统标准逻辑是怎么传值的应该就可以。
以上。
VA05批量更新BAPI:SD_BULK_CHANGE相关推荐
- SAP接口编程案例 - VBA批量更新销售订单定价类型
碰到一个需求,需要对销售订单的定价类型进行批量更新,对这种临时批量处理,考虑到数据源一般放在 Excel 中,使用 VBA 来调用 BAPI 实现不失为一种快捷的方式. 了解 BAPI 如何使用 更改 ...
- MySql数据库Update批量更新与批量更新多条记录的不同值实现方法
批量更新 mysql更新语句很简单,更新一条数据的某个字段,一般这样写: UPDATE mytable SET myfield = 'value' WHERE other_field = 'other ...
- 在Hibernate中处理批量更新和批量删除
批量更新是指在一个事务中更新大批量数据,批量删除是指在一个事务中删除大批量数据.以下程序直接通过Hibernate API批量更新CUSTOMERS表中年龄大于零的所有记录的AGE字段: 如果CUST ...
- Spring从菜鸟到高手(四)(上)使用JdbcTemplate类实现用户登陆验证、批量更新
标签:Spring java JdbcTemplate Spring从菜鸟到高手 绝缘材料 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.ht ...
- Swift 中使用 SQLite——批量更新(事务处理)
本文是Swift 中使用 SQLite系列的收官之作,介绍一下在数据库中的批量更新. 事务 在准备做大规模数据操作前,首先开启一个事务,保存操作前的数据库的状态 开始数据操作 如果数据操作成功,提交事 ...
- python 文件更新_使用Python批量更新服务器文件【新手必学】
买了个Linux服务器,Centos系统,装了个宝塔搭建了10个网站,比如有时候要在某个文件上加点代码,就要依次去10个文件改动,虽然宝塔是可视化页面操作,不需要用命令,但是也麻烦,虽然还有git的h ...
- 批量更新日期字段中的年
工作需要,将数据中的日期字段中的年批量更新到指定的年,想了一下,写成这样: 如:批量更新到DateAdd(year,-5,GETDATE()) =2002 SET oDateTime=DateAdd( ...
- Mybatis 批量更新
学习资源:https://blog.csdn.net/xyjawq1/article/details/74129316 <!-- 批量更新模板 --> <update id=&quo ...
- Mybatis之批量更新操作
2019独角兽企业重金招聘Python工程师标准>>> Mybatis之批量更新操作 更新单条记录 1 UPDATE course SET name = 'course1' WHER ...
最新文章
- NET中的设计模式---单件模式
- JSP连接SQL数据库实现数据分页显示
- android的百度地图开发(二) 定位
- mysql 检查点_my05_mysql检查点简述
- jsf用于页面判断的标签_JSF –在JSF视图页面中添加标签,图像,按钮和文本字段
- web安全day37:Linux脚本判断和循环,编写脚本实现内网主机存活批量检测
- Android初学第32天
- ARKit何以从同类技术中胜出?
- composer安装及artisan运行问题【小记】
- 阶段5 3.微服务项目【学成在线】_day02 CMS前端开发_06-vuejs研究-vuejs基础-v-on指令...
- 最全面的Fiddler 4教程讲解(界面)
- 吾生也有涯,而学也无涯
- 北大「通班」!AI界泰斗朱松纯领衔、IEEE Fellow 陈宝权出任副院长
- UI自动化框架 基于selenium+pytest和PO分层思想
- 【MAC、Windows系统的node版本管理工具——nvm】nvm的安装、nvm常用命令、nvm设置默认 node 版本
- Eclipse中java文件图标变成空心J如何解决
- 超前进位加法器原理与设计
- matlab可以拟合分段函数吗,如何用matlab拟合出分段函数
- 嵌入式行业那些坑与出路
- (转)Burp Suite 的一些插件
热门文章
- excel数据分类汇总
- UVA - 1533 (Moving Pegs)
- 通过python you-get命令 下载B站视频
- 手机号码归属地及查询身份证号归属地API可用接口
- LED带风扇护眼学习台灯触摸芯片-DLT8S12A
- 报表/BI工具选型重点注意事项和验证技巧分享
- 平衡树【Splay树】学习小记
- error Expected linebreaks to be ‘LF‘ but found ‘CRLF‘ linebreak-style
- 关于smtp和pop3的端口
- android 布局 orientation,布局 Android