SAP 爱好者,记录一些知识点吧
分类: 数据库开发技术
2014-06-16 21:47:55
项目中碰到这样的一个需求, 大致是销售订单10行是有delivery , 20 行没有delivery , 发票10 行是基于delivery 的, 20 行是基于销售订单的, 现在要求将这订单上的两个行项目,在delivery 后再一张发票上实现combine.
这个可以通过在billing 的copying control 里面的基于航项目的 data vbrk/vbrp 里面添加代码。
那么我们先要理解标准的SAP 对于invoice 的Combine 还是Split 的原理有个清醒的了解。
标准程序里面会有一个内表XVBRK , 这个数据用来表示invoice 的表头记录, 这个内表里面有几条数据, 那么,就会split成几张发票, 所以, 对于每一个发票的行项目,会去比较对于的VBRK 的数据是否与XVBRK 里面的一行完全一致。如果不一致, 则会APPEND 到XVBRK , 这就是split , 完全一致, 则不会append , 即实现了 combine , 所以, 我们能做的就是, 为了combine 我们就在DATA VBRK/VBRP 里面赋值, 使其想要合并的行项目对于的XVBRK一致。否则, 就自己增加字段组, 使其不一致, VBRK-zukri 该字段有40个字符, 就是为了满足这一条件。
FORM DATEN_KOPIEREN_001.
* Header data
* VBRK-xxxxx = ............
* Item data
* VBRP-xxxxx = ............
* Additional split criteria
DATA: BEGIN OF ZUK,
MODUL(3) VALUE '001',
VTWEG LIKE VBAK-VTWEG,
SPART LIKE VBAK-SPART,
END OF ZUK.
ZUK-SPART = VBAK-SPART.
ZUK-VTWEG = VBAK-VTWEG.
VBRK-ZUKRI = ZUK.
ENDFORM.