SAP PP——生产订单的状态

目录

一、生产订单的状态说明

 

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

 

二、生产订单相关表(Table)和函数(Function)

说明
JEST 工单状态表
TJ02T 状态说明表

注意:表JEST栏位INACT有值"X"表示状态未启用,当前工单无该状态

函数 说明
STATUS_READ 读取对象状态
STATUS_TEXT_EDIT 跟STATUS_READ一样,只不过读取的结果是将订单状态拼接到一个字符串中,而且这个字符串是在前台订单上看到的状态,比较直接,这样做的结果就可能由于状态较多导致长度过长,在某些情况下取的数据可能不准
STATUS_CHECK 检查状态是否启用

 

三、生产订单抓取状态的范例代码

代码:

 

*&---------------------------------------------------------------------*
*& Report ZPPRTEST
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT ZPPRTEST.

TYPES: BEGIN OF ty_status,
  txt04 LIKE tj02t-txt04,
END OF ty_status,
BEGIN OF ty_jest,
  stat LIKE jest-stat,
  txt04 LIKE tj02t-txt04,
END OF ty_jest.



DATA: lt_status TYPE TABLE OF ty_status,
          lt_jstat LIKE TABLE OF jstat,
          lt_jest TYPE TABLE OF ty_jest.

DATA: l_index LIKE sy-tabix,
          l_objnr LIKE aufk-objnr,
          l_txt TYPE string,
          l_txt2 TYPE string,
          l_txt3 LIKE bsvx-sttxt.

*-->先找到生产订单的物件号码
SELECT SINGLE objnr INTO l_objnr
            FROM aufk
            WHERE aufnr = '000019009370'.

*-->第一种方式
SELECT jest~stat tj02t~txt04 INTO TABLE lt_jest
          FROM jest
          INNER JOIN tj02t ON jest~stat = tj02t~istat
          WHERE jest~objnr = l_objnr
          AND jest~inact = space
          AND tj02t~spras = sy-langu.

LOOP AT lt_jest INTO DATA(ls_jest).
  IF sy-tabix = 1.
    CONCATENATE l_txt ls_jest-txt04
      INTO l_txt.
  ELSE.
    CONCATENATE l_txt ls_jest-txt04
      INTO l_txt SEPARATED BY space.
  ENDIF.
ENDLOOP.

*-->第二种方式
CALL FUNCTION 'STATUS_READ'
  EXPORTING
    client                 = sy-mandt
    objnr                 = l_objnr
    only_active        = 'x'
  TABLES
    status                 = lt_jstat
  EXCEPTIONS
    object_not_found       = 1
    OTHERS                 = 2.

  DELETE lt_jstat WHERE inact = 'X'.

  IF lt_jstat[] IS NOT INITIAL.
    SELECT txt04 INTO TABLE lt_status
                FROM tj02t
                FOR ALL ENTRIES IN lt_jstat
                WHERE istat = lt_jstat-stat
                AND spras = sy-langu.
    LOOP AT lt_status INTO DATA(ls_status).
      IF sy-tabix = 1.
        CONCATENATE l_txt2 ls_status-txt04
          INTO l_txt2.
      ELSE.
        CONCATENATE l_txt2 ls_status-txt04
          INTO l_txt2 SEPARATED BY space.
      ENDIF.
    ENDLOOP.
  ENDIF.

*-->第三种方式
CALL FUNCTION 'STATUS_TEXT_EDIT'
  EXPORTING
    client                 = sy-mandt
    objnr                 = l_objnr
    only_active        = 'X'
    spras                   = sy-langu
  IMPORTING
    line                    = l_txt3
  EXCEPTIONS
   object_not_found        = 1
   OTHERS                  = 2.

cl_demo_output=>write( l_txt ).
cl_demo_output=>write( l_txt2 ).
cl_demo_output=>write( l_txt3 ).
cl_demo_output=>display(  ).

运行效果:

 

木叶飞舞之处,火亦生生不息
原文地址:https://www.cnblogs.com/StephenAmell/p/12341795.html