首先,定义销售凭证抬头。
里面选择对应的销售订单是与开票相关还是交货相关;
然后,事务代码VOFM中定义Billing拆分的Routine。
一般可以拷贝一个标准的并以9开头(菜单-数据传输-出具发票凭证)。然后选中新建的拆分程序,点击ABAP图标,然后在FORM DATEN_KOPIEREN_981.中编写你的拆分规则(981为你自己指定的数字)。
例如,如果交货单中料号不同就拆分,则增加一行zuk-matnr = lips-matnr.即可。
1 2 3 4 5 6 7 8 9 |
FORM DATEN_KOPIEREN_901. DATA: BEGIN OF ZUK, MODUL(3) VALUE '001', matnr like lips-matnr, END OF ZUK. zuk-matnr = lips-matnr. VBRK-ZUKRI = ZUK. clear vbrk-konda. ENDFORM. |
注意:如果需要新建routine,则需要在VOFM中新建一个routine,然后向SAP申请access key,然后再在routine中写代码,然后在RV60CNNN中include新编写的routine,最后将新的历程VTFA或者VTFL分配给需要调用的Billing类型即可。
写完拆分规则后记得激活,激活后SE38查询RV60CNNN会发现刚才新建的拆分规则已经被包含进来了。
需要注意的是,退货订单、借贷项销售订单、STO订单的Billing如果也需要拆分,要认真检查配置,比如标准的配置里退货订单和借贷项销售订单是基于订单开票的,那么上面的拆分规则就不起作用了,对于这些特殊的单据类型,一般是建议单独创建一个程序来拆分他们,例如你可以拷贝出一个FORM DATEN_KOPIEREN_982专门来拆分借贷项销售订单的Billing。参考代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
FORM DATEN_KOPIEREN_982. DATA: BEGIN OF ZUK, MODUL(3) VALUE '001', VTWEG LIKE VBAK-VTWEG, SPART LIKE VBAK-SPART, matnr like lips-matnr, END OF ZUK. ZUK-SPART = VBAK-SPART. ZUK-VTWEG = VBAK-VTWEG. zuk-matnr = VBAP-matnr. VBRK-ZUKRI = ZUK. clear vbrk-konda. ENDFORM. |
创建好拆分程序后,VTFA将该Routine分配到行项目的Copy Control中。
传到正式环境前要做好充分的测试!
本文作者: GavinDong
版权属于: GavinDong博客
文章链接: https://gavindong.com/405.html
如果使用过程中遇到问题,可 **点击此处** 交流沟通。
版权所有,转载时必须以链接形式注明作者和原始出处及本声明。
评论列表(2条)
billing type一定要分配,不然不起作用!
具体在基于哪个单据拆分就看是基于销售订单开票还是给予交货单开票了。