SAP生產訂單狀態


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 (刪除) :對生產訂單做刪除標識,數據仍然存在數據庫中,狀態可恢復。如果想徹底刪除,需對訂單進行歸檔處理。
 

表為:JEST,字段OBJNR為OR+訂單號,STAT即為訂單狀態。但是STAT的都是I打頭的狀態,通過CO03看生產訂單狀態都是如下:

表TJ02:

函數:STATUS_READ

輸入參數OBJNR也是OR+訂單號,ONLY_ACTIVE即只取出激活的狀態。讀出來后也需要轉換下。STATUS_CHECK是檢查生產訂單狀態,看是否具有某種狀態,STATUS_TEXT_EDITSTATUS_READ,但似乎不能讀出所有的狀態。

在JEST中,一個生產訂單可能同時存在多個狀態(比如DLV和TECO,TECO可能和其它狀態都會同時存在),所以需要注意,單aufk和JEST關聯是會存在多條記錄,如果要做數量統計等。最后把TECO狀態給過濾掉,或統計時不要統計TECO狀態的條目,否則統計數據會錯誤。TJ02T表(系統狀態文本)。
包含訂單的所有狀態和文本說明。
 
1.可以通過函數'STATUS_TEXT_EDIT' 。 
CALL FUNCTION 'STATUS_TEXT_EDIT' 
EXPORTING 
objnr = object_tab-objnr 
spras = sy-langu 
flg_user_stat = 'X' 
IMPORTING 
line = object_tab-sttxt 
user_line = object_tab-ustxt 
EXCEPTIONS 
object_not_found = 01.

函數不能直接用工單號碼作輸入參數,需使用工單的OBJNR欄位,可以通過用工單號碼從視圖VSAUFK中取得。 TMP_LINE就是返回的工單狀態記錄,如: TECO DLV PRC MANC RESA RMWB SETC

2.可以通過直接在JEST表中通過狀態判定讀取。

SELECT SINGLE * FROM aufk WHERE aufnr = readrec-aufnr. ** 檢查工單種類

* IF aufk-auart(1) <> 'A'.
* CONTINUE.
* ENDIF.

** 判定工單狀態
CLEAR: jest.
SELECT SINGLE * FROM jest
WHERE objnr = aufk-objnr
AND ( stat = 'I0045' OR " TECO
stat = 'I0013' OR " DELETE
stat = 'I0076' OR " DELETE FLAG
stat = 'I0046' OR " CLSD
stat = 'I0012 ') "DLV
AND inact = space.
IF sy-subrc = 0.
CONTINUE.
ENDIF.
*
** 判定工單是否 RELASE
CLEAR: jest.
SELECT SINGLE * FROM jest
WHERE objnr = aufk-objnr
AND ( stat = 'I0002' OR " RELEASE
stat = 'I0042') " Partial RELEASE
AND inact = space.
IF sy-subrc <> 0.
CONTINUE.
ENDIF.

** 檢查此筆作業是否需要 ( 必需 RELEASE)
** 判定作業是否 RELASE
CLEAR: afvc.
SELECT SINGLE * FROM afvc WHERE aufpl = readrec-aufpl
AND aplzl = readrec-aplzl. CLEAR: jest.

SELECT SINGLE * FROM jest
WHERE objnr = afvc-objnr
AND stat = 'I0002' . " RELEASE
IF sy-subrc <> 0.
CONTINUE.
ENDIF.


 

 


免責聲明!

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



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