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(  ).

 

運行效果:

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM