目錄
狀態 | 狀態內文 | 說明 |
CRTD | 創建 | 標識生產訂單剛剛創建,此時禁止做后續發料和報工確認等操作 |
PREL | 部分下達 | 當生產訂單部分下達時,如僅下達部分工序時出現此狀態 |
REL | 已下達 | 當生產任務已經明確可下發生產時,將生產訂單轉換為已下達狀態,這個狀態后可以繼續后續業務操作,如打印訂單、發料、報完工等操作 |
MANC | 未檢查物料可用性 | 生產訂單未進行零部件物料的可用性檢查 |
SETC | 結算規則維護 | 生產訂單已維護結算規則 |
MSPT | 物料短缺 | 生產訂單的零部件物料在進行可用性檢查后發現存在短缺 |
MACM | 已承諾的物料 | 生產訂單的零部件物料在進行可用性檢查后確認完全可用 |
GMPS | 已過帳的貨物移動 | 生產訂單已經進行過發料 |
PCNF | 部分確認 | 生產訂單只進行了部分完工確認,比如說訂單需求10個,只進行了5個生產,或者訂單有2道工序,只完成了第一道工序 |
CNF | 已確認 | 生產訂單已全部完工確認 |
PDLV | 部分交貨 | 生產訂單只有部分產品入庫 |
DLV | 已完全交貨 | 生產訂單已經完全交貨入庫,這意味着生產訂單業務全部完成。 月末,系統根據訂單的狀態,判斷是計算差異還是計算在制品。如果訂單具有DLV或TECO狀態,結算差異;如果沒有這兩個狀態,訂單結算在制品。 |
VCAL | 差異計算 | 生產訂單進行過差異運算 |
TECO | 技術完成 | 在生產過程中,會出現訂單未完成但是不再繼續生產的情況,這時就可以打上技術完結標識,此時訂單對零部件的需求同時刪除。在很多項目中,為了簡便處理,會對所有完成的訂單進行技術完結處理(注:不再繼續生產也是一種完成)。 月末,系統根據訂單的狀態,判斷是計算差異還是計算在制品。如果訂單具有DLV或TECO狀態,結算差異;如果沒有這兩個狀態,訂單結算在制品。 |
RESA | 進行結果分析 | 生產訂單進行過結算 |
CLSD | 關閉 | 生產訂單做賬務關閉,不允許對訂單發生任何過賬,通常情況下,財務月末對訂單進行結算后,如果確認不會再有追加發料等業務發生,則應該將訂單進行關閉 |
DLT | 刪除 | 對生產訂單做刪除標識,數據仍然存在數據庫中,狀態可恢復。如果想徹底刪除,需對訂單進行歸檔處理 |
表 | 說明 |
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( ).
運行效果: