声明:本文仅代表原作者观点,仅用于SAP软件的应用与学习,不代表SAP公司。注:文中所示截图来源SAP软件,相应著作权归SAP所有。
一、前言
项目中常常会碰到这个场景: 因为各种原因,已经导入的数据需要调整特定字段的内容.SAP软件提供了一个批量更改字段内容的功能(事务代码MASS)。
事务代码 MASS。该功能只涵盖了27个对象类型及这些对象的相关表,如图1.超出这个范围则无法使用MASS修改大量数据的性能较差。
因为MASS的上述局限性。在项目中开发了一个批量更新工具ZUP_ANY.用于更新指定表的指定字段内容
图一
二、MASS执行过程
先简单介绍一下通过MASS修改商品属性的过程
1)选定对象类型
2)选择对象中的表
3)选择表中的字段
4)选择要修改的数据
点击执行后, 选择要修改的数据
5)批量修改
输入关键字后,系统会显示所有该数据的字段内容. 此时可以批量修改字段内容.
6)通过文件导入
需要事先准备EXCEL文件, 文件中输入关键字列和要修改的字段列及内容(可以不带标题)
7)选择文件属性
8)映射字段
9)预览数据
10)显示待变更数据
进入和选择数据相同的内容(不同的是,此时目标值已经填写)
11)执行测试按钮
12)保存修改
点击保存,完成修改
13)查看结果
查看商品的变更记录
三、通过ZUP_ANY完成该过程
通过ZUP_ANY修改商品属性的过程
01)执行ZUP_ANY
02)下载模板
下载模板,在模板中填写数据,重要字段通过批注描述字段的用法
03)导入数据
点击执行后,数据写入内表
04)进入处理
点击保存后, 进入数据处理程序
05)执行处理
选中行,点击处理,此时报错,因为修改的是标准表的标准字段, 所以需要配置一下
06)配置字段允许
配置标准字段允许修改(ZTUP_ANY_C1)
07)执行通过
08)查看变更结果
查看商品的变更日志
四、MASS VS ZUP_ANY
对比一下MASS 与ZUP_ANY程序的优缺点。建议还是尽量使用MASS大量变更数据, 除非碰到MASS不支持的数据对象,或者MASS性能实在太差时, 再使用ZUP_ANY更新。
01)MASS的优点
02)MASS的缺点
03)ZUP_ANY的优点
04)ZUP_ANY的缺点
图二
五、ZUP_ANY的开发思路
ZUP_ANY按照通用导入模板开发.
详见连接
无峰,公众号:ABAP 技巧与实战SAP工具箱 配置导入模板
通用导入程序
无峰,公众号:ABAP 技巧与实战SAP工具箱 通用导入程序
01)内容记录
导入的数据写入表ZTUP_ANY
通过四个字段存放所有表变更的信息
02)处理程序
处理程序ZUP_ANY_PROC调用处理函数Z_BAPI_ANY_TABLE_UPDATE
函数中对于传入的数据执行如下校验
调用动态SQL语句更新数据后,
下传控制表: 主数据或单据保存后,通过配置表判断是否需要通过特定接口下传,如果需要,则把主键与接口编号写入特定的下传控制表,后续下传程序读取该下传控制表与业务表获取要下传的数据.
六、总结
ZUP_ANY 是项目中开发的一个用于更新任意表任意字段的程序。实际使用时,可以不加限制的修改自定义表或标准表增强字段。
对于标准表字段的修改则需要谨慎对待,因为要确保该字段修改后不会影响业务处理逻辑.通过配置表ZTUP_ANY_C1来记录这个验证的结果。
后续可以考虑优化一下关联表的变更(提供一个配置表配置表字段的关联关系,包含主键的位置关系),在导入存在关联的表/字段内容后,自动产生一行关联表/字段的更新。
一般情况下:
1)配置表字段的更新比较安全;
2)主数据表字段的更新相对安全;
3)单据表字段的更新则需要谨慎一些;
一般情况下:
1)增强字段的修改相对安全些;
2)标准字段的修改则需要谨慎一些。