二维码

[RFC] SAP检查订单状态函数STATUS_CHECK用法

Twilight发表于 2018-07-20 10:08Twilight 最后回复于 2018-07-20 10:08 [复制链接] 4465 0

SAP中有很多模块都用到了订单状态这样的组件,如销售订单状态、生产订单状态等,在开发中我们经常会遇到判断订单是否在某种状态,如是否被删除,以生产订单为例。

1、CO03 查看生产订单 是否被删除
CO03.jpg

2、代码实现
  1. lv_afpo = i_order_number.
  2. SELECT SINGLE aufnr objnr INTO ls_afpo FROM aufk WHERE aufnr = lv_afpo.
  3. CALL FUNCTION 'STATUS_CHECK'
  4.   EXPORTING
  5. *   BYPASS_BUFFER     = ' '
  6.     client            = sy-mandt
  7.     objnr             = ls_afpo-objnr
  8.     status            = 'I0076' "DLFL        删除标记
  9.   EXCEPTIONS
  10.     object_not_found  = 1
  11.     status_not_active = 2
  12.     OTHERS            = 3.
  13. IF sy-subrc = 0.
  14.   e_result-type = 'S'.
  15.   e_result-msg = '已被删除'.
  16.   EXIT.
  17. ENDIF.
复制代码

备注:删除标记DLFL ,对应的删除状态码I0076,查看表TJ02

3、SAP系统的常见订单状态如下:
  • CRTD (创建):标识生产订单刚刚创建,此时禁止做后续发料和报工确认等操作;
  • PREL (部分下达):当生产订单部分下达时,如仅下达部分工序时出现此状态;
  • REL (已下达):当生产任务已经明确可下发生产时,将生产订单转换为已下达状态,这个状态后可以继续后续业务操作,如打印订单、发料、报完工等操作;
  • MANC (未检查物料可用性):生产订单未进行零部件物料的可用性检查;
  • SETC (结算规则维护):生产订单已维护结算规则;
  • MSPT (物料短缺):生产订单的零部件物料在进行可用性检查后发现存在短缺;
  • MACM (已承诺的物料):生产订单的零部件物料在进行可用性检查后确认完全可用;
  • GMPS (已过帐的货物移动):生产订单已经进行过发料;
  • PCNF (部分确认):生产订单只进行了部分完工确认,比如说订单需求10个,只进行了5个生产,或者订单有2道工序,只完成了第一道工序;
  • CNF (已确认) :生产订单已全部完工确认;
  • PDLV (部分交货):生产订单只有部分产品入库;
  • DLV (交货) :生产订单已经完全交货入库,这意味着生产订单业务全部完成。CO看到DLV状态或TECO状态时将对订单进行完工结算。
  • VCAL (差异计算) :生产订单进行过差异运算;
  • TECO (技术完成) :在生产过程中,会出现订单未完成但是不再继续生产的情况,这时就可以打上技术完结标识,此时订单对零部件的需求同时删除。在很多项目中,为了简便处理,会对所有完成的订单进行技术完结处理(注:不再继续生产也是一种完成)。CO看到DLV状态或TECO状态时将对订单进行完工结算;
  • RESA (进行结果分析):生产订单进行过结算;
  • CLSD (关闭):生产订单做账务关闭,不允许对订单发生任何过账,通常情况下,财务月末对订单进行结算后,如果确认不会再有追加发料等业务发生,则应该将订单进行关闭;
  • DLID (删除) :对生产订单做删除标识,数据仍然存在数据库中,状态可恢复。如果想彻底删除,需对订单进行归档处理。


4、扩展阅读
CO01创建生产订单BAPI_PRODORD_CREATE并下达BAPI_PRODORD_RELEASE
回复

使用道具 举报

快速回帖

本版积分规则
您需要登录后才可以回帖 登录 | 注册有礼

快速回复 返回顶部 返回列表