在网上找了一下大部分都是关于SD销售订单的状态分析,虽然MD81创建的客户独立需求也属于销售订单的一种,但是还是有一点区别,最近测试之后,记录一下。
和状态有关的表为VBUP(销售凭证 : 项目状态),在以前前辈的开发逻辑中有看到需要排除已处理完成的客户独立需求==> VBAP-ABGRU=' ' & VBUP-GBSTA<>'C'。其中ABGRU为报价和销售订单的拒绝原因,GBSTA为SD 凭证项目的总处理状态。如果是销售订单,销售订单发生部分交货时为B"正在处理",全部交货完成会显示C"处理完成"。
那对于客户独立需求来说,GBSTA这个字段什么时候会变成C呢
测试过程仅文字描述:
1. md81新建客户独立需求,计划行类型为EQ——状态空‘
2. 修改需求中的计划行类型为EP,——状态没有处理A
3. 对于这个需求run MRP,并将生成的计划订单转为工单,直到工单收货——状态不变还是A
4.对此需求进行货物移动,冲减需求
a. 部分冲减——状态部分处理B
b. 完全冲减——状态部分处理B
问题出现了,既然冲减需求的部分数量时,状态变为部分处理,为什么完全冲减时,状态没有变成完全地处理呢?
这个问题找了很久,但是我还没有解决,所以我到正式版查找状态是C的独立需求,并与我创建的进行比对,想看一下是否能找出原因,这个原因没有找到,但是发现了另一个问题:正式版状态为C 的独立需求中的计划行状态为EQ,再按照上述1、3、 4步骤重新测试,也就是不修改计划行类型,因为EQ不会跑出计划订单,所以工单也只能手动建立,果然GBSTA的状态在冲减完需求后变为C。
现象是清楚了,但是EP 和EQ为什么会有如此区别还需要研究,欢迎指正。
这样看来,前辈中的逻辑可能有一些不准确,可以使用另一个字段WBSTA货物移动状态来判断需求是否完全处理?因为使用货物移动冲减需求时,如果移动的数量=独立需求的数量,则这个栏位的状态为C;如果移动的数量<独立需求的数量,则这个栏位的状态为B。
***************************
*****************************************
2021.06.17更新
因为差异源于计划行类别EP和EQ,所以去查找计划行类别的配置是否有不同,t-code:VOV6
EP配置: | EQ配置: |
![]()
| ![]()
|
重点栏位在于【与交货有关的项】确认订单项目后续是否生成交货单
经测试,将EP中此栏位取消勾选,结果与EQ相同,都是在冲减需求完成后,GBSTA的状态变为C。
新问题:为什么第一次冲减需求的时候状态会变为B?冲减需求既然和交货单不同,为何状态会变化?
GBSTA是总览状态,F1查看:此字段显示项目的总体处理状态。使用:系统从此项目的所有状态(例如,交货与开具发票)中确定总体状态。该状态消息显示项目处理是未清、正在进行,还是已经完成。
所以它是综合交货状态、货物移动状态等多个状态确定最终的状态。当货物移动冲减需求时,货物移动的状态变为B或者C,但是交货状态一直是A,此时GBSTA变为B;因为是行项目是和交货相关的,所以如果交货状态一直是A的话,GBSTA要考虑交货的状态,也一直是B,理论上,如果交货完成,GBSTA就可以是C,但是独立需求怎么完成交货呢?