碰到一个需求,需要实现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相关推荐

  1. SAP接口编程案例 - VBA批量更新销售订单定价类型

    碰到一个需求,需要对销售订单的定价类型进行批量更新,对这种临时批量处理,考虑到数据源一般放在 Excel 中,使用 VBA 来调用 BAPI 实现不失为一种快捷的方式. 了解 BAPI 如何使用 更改 ...

  2. MySql数据库Update批量更新与批量更新多条记录的不同值实现方法

    批量更新 mysql更新语句很简单,更新一条数据的某个字段,一般这样写: UPDATE mytable SET myfield = 'value' WHERE other_field = 'other ...

  3. 在Hibernate中处理批量更新和批量删除

    批量更新是指在一个事务中更新大批量数据,批量删除是指在一个事务中删除大批量数据.以下程序直接通过Hibernate API批量更新CUSTOMERS表中年龄大于零的所有记录的AGE字段: 如果CUST ...

  4. Spring从菜鸟到高手(四)(上)使用JdbcTemplate类实现用户登陆验证、批量更新

    标签:Spring java JdbcTemplate Spring从菜鸟到高手 绝缘材料 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.ht ...

  5. Swift 中使用 SQLite——批量更新(事务处理)

    本文是Swift 中使用 SQLite系列的收官之作,介绍一下在数据库中的批量更新. 事务 在准备做大规模数据操作前,首先开启一个事务,保存操作前的数据库的状态 开始数据操作 如果数据操作成功,提交事 ...

  6. python 文件更新_使用Python批量更新服务器文件【新手必学】

    买了个Linux服务器,Centos系统,装了个宝塔搭建了10个网站,比如有时候要在某个文件上加点代码,就要依次去10个文件改动,虽然宝塔是可视化页面操作,不需要用命令,但是也麻烦,虽然还有git的h ...

  7. 批量更新日期字段中的年

    工作需要,将数据中的日期字段中的年批量更新到指定的年,想了一下,写成这样: 如:批量更新到DateAdd(year,-5,GETDATE()) =2002 SET oDateTime=DateAdd( ...

  8. Mybatis 批量更新

    学习资源:https://blog.csdn.net/xyjawq1/article/details/74129316 <!-- 批量更新模板 --> <update id=&quo ...

  9. Mybatis之批量更新操作

    2019独角兽企业重金招聘Python工程师标准>>> Mybatis之批量更新操作 更新单条记录 1 UPDATE course SET name = 'course1' WHER ...

最新文章

  1. NET中的设计模式---单件模式
  2. JSP连接SQL数据库实现数据分页显示
  3. android的百度地图开发(二) 定位
  4. mysql 检查点_my05_mysql检查点简述
  5. jsf用于页面判断的标签_JSF –在JSF视图页面中添加标签,图像,按钮和文本字段
  6. web安全day37:Linux脚本判断和循环,编写脚本实现内网主机存活批量检测
  7. Android初学第32天
  8. ARKit何以从同类技术中胜出?
  9. composer安装及artisan运行问题【小记】
  10. 阶段5 3.微服务项目【学成在线】_day02 CMS前端开发_06-vuejs研究-vuejs基础-v-on指令...
  11. 最全面的Fiddler 4教程讲解(界面)
  12. 吾生也有涯,而学也无涯
  13. 北大「通班」!AI界泰斗朱松纯领衔、IEEE Fellow 陈宝权出任副院长
  14. UI自动化框架 基于selenium+pytest和PO分层思想
  15. 【MAC、Windows系统的node版本管理工具——nvm】nvm的安装、nvm常用命令、nvm设置默认 node 版本
  16. Eclipse中java文件图标变成空心J如何解决
  17. 超前进位加法器原理与设计
  18. matlab可以拟合分段函数吗,如何用matlab拟合出分段函数
  19. 嵌入式行业那些坑与出路
  20. (转)Burp Suite 的一些插件

热门文章

  1. excel数据分类汇总
  2. UVA - 1533 (Moving Pegs)
  3. 通过python you-get命令 下载B站视频
  4. 手机号码归属地及查询身份证号归属地API可用接口
  5. LED带风扇护眼学习台灯触摸芯片-DLT8S12A
  6. 报表/BI工具选型重点注意事项和验证技巧分享
  7. 平衡树【Splay树】学习小记
  8. error Expected linebreaks to be ‘LF‘ but found ‘CRLF‘ linebreak-style
  9. 关于smtp和pop3的端口
  10. android 布局 orientation,布局 Android