在上SAP项目过程,上了SD模块的企业一般都要做一些跟公司间采购订单或销售订单的交货状态的报表,通过这些报表可以经客户的业务上提供很大的灵活性,至于如何的灵活,还是那句老话“谁用谁知道"。
1)如何判断公司间采购订单是否已交货?
这个比较简单了,直接通过表EKPO的字段ELIKZ来判断的,前台如下图所示,至于这个字段我想多说,只想说一下这个标记是什么产生的?来理一下业务的知识,根据公司间的采购订单创建交货单,发货过账后,当时幼稚的我认为这个标记应该打上了,但是并没有打上,只有通过migo收货过账后这个标记才会打上.
2)销售订单表头的交货状态
此交货状态与下图显示的交货状态意义并不一样,图示的交货是跟交货单有关的,与交货单是否已经过账无关,通俗点说就是如果当前订单的所有行项目都创建相关的交货单,则这里的状态就显示未交付状态;但是只有部分(并不全部)行项目创建了交货单,则这里就显示部分交付;如果所有行项目都创建了相应的交货单,并且数量跟销售订单的数量一致,则这里就显示完全完全交付,否则这里也显示部分交付。通过对上面的理解,估计大家都知道了这里的交货状态跟创建交货单的数量有关(不关心是否过账),通过交货单数量控制了这个状态。
3)销售订单的项目状态。
这里的状态跟表头的项目状态一样,它关心的只是当前的行项目,但是影响到表头的交货状态。
4)交货单的货物移动状态由如下图所示。
交货单的货物移动状态用于确定当前的交货单是否过账发货,经常可以看到的状态有尚未开始(A)、完全处理(C),对于部分处理(B)好像不存在的(我测试),所谓尚未开始就是只是创建了交货单没有过账发货,而完全处理就是已经过账发货了。这里之所以要列出交货单的状态,是因为它的状态影响到了销售订单的交货状态(非销售订单上的交货状态)。
sap 如何获取公司间采购订单或销售订单的交货状态(续)
5)如何决定销售订单的行项目的交货状态(可以理解发货状态)
如果我们以没有交货、部分交货、完全交货来分类销售订单的行项目发货状态,则存在以下的组合
订单行项目交货状态 | 交货单行项目状态 | 订单行项目发货状态 |
A(尚未开始) | 不管 | 没有交货 |
B(部分处理) | 不存在有C状态 | 没有交货 |
C(完全处理) | 不存在有C状态 | 没有交货 |
B(部分处理) | 存在有C状态 | 部分交货 |
C(完全处理) | 存在有C状态 | 部分交货 |
C(完全处理) | 完全C状态 | 完全交货 |
6)以上这些状态所讲的这些状态对应哪些表呢?
这估计是大家最关心的东东了,这些状态主要跟3张表有关:VBFA、VBUK、VBUP。
1、VBFA(销售凭证流)
这张表记录销售订单对应的交货单(子层凭证类别VBTYP_N = ‘J’),以及底层过账发货生成的物料 凭证(子层凭证类别VBTYP_N = ‘R’)、冲销交货单生成的物料凭证(子层类别VBTYP_N = ‘H’),还有等等。
2、VBUK(销售凭证 : 抬头状态和管理数据)
这张表既记录了销售订单的表头交货状态,也记录交货单表头的货物移动状态,通过上表找到的交货单到这张表找到相对应的状态。
3、VBUP(销售凭证 : 项目状态)
这张表既记录了销售订单的行项目交货状态,也记录交货单行项目的货物移动状态。