(Logo镇宅的)
业务背景:
从2018年5月1日起,一是将制造业等行业增值税税率从17%降至16%,将交通运输、建筑、基础电信服务等行业及农产品等货物的增值税税率从11%降至10%。
在五一前,SAP上所有未收货、财务未开票的订单的税率就要按照新的税率来实施了。在现在这家公司要在SAP开发一个新程序走完一个流程可能要到十一了。现有订单也不能人工去调整,那样会死人的。
在这种背景下,我们选用了LSMW这个工具,来实现批量调整采购订单PO的税码问题。以往大家用的最多的录屏批导。采购订单PO本身的状态等信息不同,在录屏时也会弹出不同的消息提示,如果没有对应的回车动作,录屏将会卡住。在这里我将逐步讲解如何通过BAPI的方式实现LSMW批导。
数据准备:
SAP提供了标准的BAPI:BAPI_PO_CHANGE1进行PO的修改。如果仅仅修改采购订单PO 行项目的税码,只需要输入如下参数:
·PO号码(purchaseorder)
·指定行项目及税码信息(poitem)
·指定行项目及税码变更标记(poitemx)
LSMW的实施:
对BAPI实行实现LSMW的个人理解:同时设置好的数据模板、数据结构传入需要处理的采购订单PO信息,触发生成PO CHANGE的IDOC,在该IDOC中调用PO Change的方式,最终实现对PO的修改。 这里的数据结构可以参考数据准备。在调用BAPI时,我们只用到了订单号码、行项目号、税码。
维护项目名称、子项目名称、对象名称
维护项目名称
输入对应的子项目名称
(维护对象名称)
2. 点击setting,进行IDOC Inbound Processing维护
保存并激活IDOC Inbound 信息
若Port信息没有维护,请参照 该图
在这个partner上维护PO Change的信息
(PO Change的详细信息)
3. 点击执行,进入LSMW主界面,开始我们的LSMW之旅吧!!!
4. Maintain Object Attribute 维护对象属性
这里我们勾选BAPI,通过搜索帮助可以找到采购订单PO的业务类型为BUS2012,并选择CHANGE方法。这时会自动带出对应IDOC的message type及basic type.
5. Maintain Source Structure
这里相当于定义一个变量,用来接收模板文件使用。这里我将source structure定义为PODAT
6. Maintain Source Fields
对source structure里的字段进行声明。这里仅声明了三个变量:ebeln, item, tax_code
声明该结构下的字段信息
7. Maintain Structure Relations
这里是将source structure与IDOC Basic type的结构进行mapping 匹配。这里可以参考我们前面的数据准备,我们在调用bapi时,仅输入订单号码、poitem及poitemx。所以在这里我们也仅与上述结构建立关系。
8. Maintain Field Mapping and Conversion Rules
这里就像调用BAPI或者前台操作一样,进行数据填充。 在这步骤中,就要将source structure中的字段与basic type结构的字段进行匹配。这里可以看出,字段mapping同bapi调用的参数。
订单号码
行项目号码
税码信息
行项目信息
被修改的字段打上更新标记-即税码字段
9. Specify Files
指定文件,将含有处理数据的文件指定,准备进行数据读取。
10. Assign Files.
11. Read Data
点击执行,会将指定文件的内容进行读取,并输出读取条目
12. Display Read data
直接执行,这里会显示读取的数据信息,可以进行数据检查。
(双击,可以查看每条的明细信息)
12. Convert data
直接执行,将读取的数据进行转换,会将读取的数据转换为IDOC结构的报文。转换完毕后,会显示转换的数据条目。
13. Display Converted Data
直接执行,显示转换后的IDOC报文信息
14. Start IDoc Generation
直接执行,生成IDOC
15. Start IDoc Processing
无需修改任何参数,直接执行。IDOC正在处理。
16. Create IDoc Overview
直接执行。会显示每个IDOC的状态。
17. Start IDoc Follow-Up
当存在出错的IDOC时,需要执行该步骤。这里会将出错的IDOC再次执行进行再次处理。
因为我这里没有区分抬头与明细,理论上最好一个PO一个IDOC。但这里一个行项目一个IDOC。这样就可能存在数据锁定的问题,造成无法更新。出现这样的数据时,执行该步骤即可。