1. 程式人生 > >工單相關函數

工單相關函數

用戶 依據 錯誤 lec max tab _exit sdn unit

項目中,生產訂單的狀態是了解生產過程的主要依據,也是自開發報表中常用到的,下面是生產訂單狀態的幾個函數以及生產訂單技術關閉、生產訂單報工的幾個函數,希望對用到的兄弟有所幫助。

[相關表]

JEST-對象的系統狀態(I****)和用戶狀態(E****)

JSTO-狀態對象信息

TJ02T-系統狀態文本

-用戶狀態文本



【鎖對象】:生產訂單鎖對象 ESORDER

函數: ENQUEUE_ESORDER, DEQUEUE_ESORDER



[函數1]:檢查多個對象的狀態並過濾

CALL FUNCTION ‘STATUS_CHECK_MULTI‘
EXPORTING
status = cns_stat_20 "系統狀態或用戶狀態
flg_exclude = cns_active "X or space
TABLES
OBJECTS = gt_objnr_tab.



[函數2]:讀取對象的所有有效狀態的文本



CALL FUNCTION ‘STATUS_TEXT_EDIT‘
EXPORTING
* CLIENT = SY-MANDT
* FLG_USER_STAT = ‘ ‘
objnr = <fs_aufk>-objnr
only_active = ‘X‘
spras = sy-langu
* BYPASS_BUFFER = ‘ ‘
IMPORTING
* ANW_STAT_EXISTING =
* E_STSMA =
line = <fs_aufk>-sttxt
* USER_LINE =
* STONR =
EXCEPTIONS
object_not_found = 1
OTHERS = 2



[函數3]:讀取單個對象的對象狀態

CALL FUNCTION ‘STATUS_OBJECT_READ‘
EXPORTING
client = sy-mandt
objnr = up_objnr
IMPORTING
e_jsto = ls_jsto
EXCEPTIONS
object_not_found = 1
OTHERS = 2.



[函數4]:改變對象用戶狀態

CALL FUNCTION ‘I_CHANGE_STATUS‘
EXPORTING
objnr = up_objnr
estat_inactive = cns_stat_20
estat_active = cns_stat_10
stsma = ls_jsto-stsma
EXCEPTIONS
cannot_update = 1
OTHERS = 2.

註意:用戶狀態改變時,一個狀態設置為激活,另一個狀態需要設置為非激活



【函數5】:改變對象系統狀態

CALL FUNCTION ‘STATUS_CHANGE_INTERN‘
EXPORTING
* CHECK_ONLY = ‘ ‘
client = sy-mandt
objnr = up_objnr
* ZEILE = ‘ ‘
* SET_CHGKZ =
IMPORTING
error_occurred = lv_error
object_not_found = lv_object_not_found
status_inconsistent = lv_status_inconsistent
status_not_allowed = lv_status_not_allowed
TABLES
status = tp_jstat
EXCEPTIONS
object_not_found = 1
status_inconsistent = 2
status_not_allowed = 3
OTHERS = 4

註意:在Tables參數Status中,需要一並準備好相互切換的兩組狀態,一個設置為激活,另一個設置為非激活



【函數6】:訂單技術關閉



CALL FUNCTION ‘BAPI_PRODORD_COMPLETE_TECH‘
* EXPORTING
* SCOPE_COMPL_TECH = ‘1‘
* WORK_PROCESS_GROUP = ‘COWORK_BAPI‘
* WORK_PROCESS_MAX = 99
IMPORTING
return = ls_return
TABLES
orders = lt_aufnr
detail_return = lt_detail
* APPLICATION_LOG =





【函數6】:生產訂單報工函數

DATA:IT_TT TYPE TABLE OF BAPI_PP_TIMETICKET,
WA_TT TYPE BAPI_PP_TIMETICKET,
IT_DR TYPE TABLE OF BAPI_CORU_RETURN,
WA_DR TYPE BAPI_CORU_RETURN,
WA_RETURN TYPE BAPIRET1,
I_ERRMSG TYPE BAPIRET2-MESSAGE,"記錄返回消息中的錯誤消息
I_TIME(14) TYPE C, "傳送時間
I_ERRFLG TYPE C,
I_COUNT TYPE I."用於對導入數據的行數記錄

CLEAR:WA_TT,
I_COUNT,
I_ERRMSG,
I_ERRFLG,
WA_RETURN.

* * 訂單號轉換
CALL FUNCTION ‘CONVERSION_EXIT_ALPHA_INPUT‘
EXPORTING
INPUT = ITAB_SER05-PPAUFNR
IMPORTING
OUTPUT = WA_TT-ORDERID.
WA_TT-OPERATION = V_VORNR.
WA_TT-YIELD = ‘1‘.
WA_TT-POSTG_DATE = SY-DATUM.


DATA:C_VORNR TYPE AFVC-VORNR,
C_AUFNR TYPE AFKO-AUFNR,
C_APLZL TYPE AFVC-APLZL,
C_AUFPL TYPE AFVC-AUFPL,
WA_AFVV TYPE AFVV.

CLEAR IT_TT.
REFRESH IT_TT.

CLEAR IT_DR.
REFRESH IT_DR.

SELECT SINGLE AFVC~APLZL AFVC~AUFPL
INTO (C_APLZL, C_AUFPL)
FROM AFVC INNER JOIN AFKO
ON AFVC~AUFPL = AFKO~AUFPL
WHERE AFKO~AUFNR = WA_TT-ORDERID
AND AFVC~VORNR = V_VORNR.

SELECT SINGLE * FROM AFVV INTO WA_AFVV
WHERE AUFPL = C_AUFPL
AND APLZL = C_APLZL.

WA_TT-FIN_CONF = ‘1‘.

WA_TT-CONF_ACTI_UNIT1 = WA_AFVV-VGE01.
WA_TT-CONF_ACTI_UNIT2 = WA_AFVV-VGE02.
WA_TT-CONF_ACTI_UNIT3 = WA_AFVV-VGE03.
WA_TT-CONF_ACTI_UNIT4 = WA_AFVV-VGE04.
WA_TT-CONF_ACTI_UNIT5 = WA_AFVV-VGE05.
WA_TT-CONF_ACTI_UNIT6 = WA_AFVV-VGE06.
WA_TT-CONF_ACTIVITY1 = WA_TT-YIELD * WA_AFVV-VGW01 / WA_AFVV-BMSCH.
WA_TT-CONF_ACTIVITY2 = WA_TT-YIELD * WA_AFVV-VGW02 / WA_AFVV-BMSCH.
WA_TT-CONF_ACTIVITY3 = WA_TT-YIELD * WA_AFVV-VGW03 / WA_AFVV-BMSCH.
WA_TT-CONF_ACTIVITY4 = WA_TT-YIELD * WA_AFVV-VGW04 / WA_AFVV-BMSCH.
WA_TT-CONF_ACTIVITY5 = WA_TT-YIELD * WA_AFVV-VGW05 / WA_AFVV-BMSCH.
WA_TT-CONF_ACTIVITY6 = WA_TT-YIELD * WA_AFVV-VGW06 / WA_AFVV-BMSCH.
* ************************

APPEND WA_TT TO IT_TT.
CALL FUNCTION ‘BAPI_PRODORDCONF_CREATE_TT‘ "主要是這個BAPI
IMPORTING
RETURN = WA_RETURN
TABLES
TIMETICKETS = IT_TT
DETAIL_RETURN = IT_DR.

* 處理BAPI錯誤
CLEAR I_ERRFLG.
CLEAR I_ERRMSG.
LOOP AT IT_DR INTO WA_DR.
IF WA_DR-TYPE = ‘E‘.
I_ERRFLG = ‘X‘.

I_ERRMSG = WA_DR-MESSAGE.
ELSE.

ENDIF.

IF I_ERRFLG IS INITIAL.
CALL FUNCTION ‘BAPI_TRANSACTION_COMMIT‘
EXPORTING
WAIT = ‘X‘.

ELSE.
CALL FUNCTION ‘BAPI_TRANSACTION_ROLLBACK‘.

MESSAGE E232(ZLC) WITH I_ERRMSG.
DELETE FROM ZPPBG WHERE SERNR = RESULT1-SERNR.

ENDIF.
ENDLOOP.
---------------------
作者:ChampaignWolf
來源:CSDN
原文:https://blog.csdn.net/champaignwolf/article/details/45362637
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!

工單相關函數