1,BAPI簡介
可以通過調用BAPI BAPI_ALM_ORDER_MAINTAI來更改工單的狀態,具體使用到的參數是IT_METHODS。
IT_METHODS的定義如下:
各個字段含義如下:
REFNUMBER:是objecttype參數中填入的相關對象對應的內表行數,
OBJECTTYPE:對象類型,類型如下:
- HEADER Order header
- PARTNER Partner data
- USERSTATUS User status
- OPERATION Operation data
- RELATION Relationships
- COMPONENT Component
- TEXT Long texts
- SRULE Settlement rule
- OBJECTLIST Object list
- OLISTRELATION Object list link
- TASKLIST General maintenance task list
- PRT Production resources/tools
- SERVICEOUTLINE Service package outline
- SERVICELINE Service package service line
- SERVICELIMIT Service package limit
- SERVICECONTRACTLIMIT Service package contract limit
- ESTIMATEDCOST Estimated costs per value category
- (empty) General BAPI functions (Save)
METHOD:方法,可以實現創建、修改、刪除、保存等功能以及工單的狀態-lock、unlock、TECHNICALCOMPLETE等,具體代碼如下:
- CREATE :Create objects
- CREATETONOTIF: Create with reference to a notification
- CHANGE : Change objects
- DELETE :Delete objects
- RELEASE : Release
- ATPCHECK :Availability check
- CALCULATE : Calculate
- SCHEDULE :Schedule
- DELETEDSEX : Delete the status for external scheduling at operation level
- ADD :Add (only possible for object TASKLIST)
- SAVE : Save all data
- DIALOG : Dialog call
- TRACE :Write trace file to the specified file on the front end
- DO_NOT_EXECUTE : Do not execute
- DO_NOT_EXEC_NOTIF_CLOSE :Do not execute and complete notifications
Note: This also automatically completes any outstanding tasks in the notifications.
- DO_NOT_EXEC_NOTIF_DEALLOC :Do not execute and remove assigned notifications from order
Note: Notifications assigned to the order header are not removed, but rather automatically completed.
- LOCK :Lock-鎖定
- UNLOCK :Unlock-解鎖
- TECHNICALCOMPLETE :Technically complete-技術完成
- CANCEL_TECHNICAL_COMPLETION : Cancel technical completion-撤銷技術完成
- TECO_WITH_NOTIF :Technically complete with notifications
Note: If a reference date is transferred, the notification with the reference date is also completed. The tasks of the notification are not automatically completed.
- CANCEL_TECO_WITH_NOTIF : Reset technical completion and put assigned notifications in process again
- COMPLETE_BUSINESS :Complete (business)-業務完成
- CANCEL_BUSINESS_COMPLETION :Cancel business completion
- BUS_COMPL_WITH_NOTIF :Complete (business) with notifications
- SET_DEL_FLAG :Set deletion flag-設置刪除標識
- RESET_DEL_FLAG :Reset deletion flag
- SET_DLFL_WITH_NOTIF : Also set deletion flag for assigned notifications
- RESET_DLFL_WITH_NOTIF :Reset deletion flag and put assigned notifications in process again
OBJECTKEY: 外部對象碼,詳細如下:
- 0-12 Order number 工單號
- 13-16 Operation number 工序號
- 17-20 Suboperation number 子工序號
- 13-24 Notification number (only for method CREATETONOTIF)
注意:每個object對象只能對應特定的method,詳細對應關系如下:
- HEADER
-
CREATE, CHANGE, RELEASE, ATPCHECK, CALCUALTE, SCHEDULE, CREATETONOTIF, DO_NOT_EXECUTE, LOCK, UNLOCK, TECHNICALCOMPLETE, CANCEL_TECHNICAL_COMPLETION, COMPLETE_BUSINESS, CANCEL_BUSINESS_COMPLETION, SET_DEL_FLAG, RESET_DEL_FLAG
- OPERATION
-
CREATE, CHANGE, DELETE, DELETEDSEX
- PARTNER, RELATION, USERSTATUS, TEXT, SRULE, OBJECTLIST, PRT
-
CREATE, CHANGE, DELETE
- OLISTRELATION
-
CREATE, DELETE
- TASKLIST
-
ADD
- COMPONENT
-
CREATE, CHANGE, REASSIGN, DELETE
- ESTIMATEDCOST
-
CHANGE
- (empty)
-
SAVE, DIALOG, TRACE
2,例子代碼
一個簡單的例子,用來將工單的狀態更新為技術完成。
REPORT ztest_change_status. DATA:lv_aufnr TYPE aufk-aufnr, lv_result TYPE string, lt_methods TYPE TABLE OF bapi_alm_order_method, ls_methods TYPE bapi_alm_order_method, lt_return TYPE bapiret2_t, ls_return TYPE bapiret2. lv_aufnr = '200000000123'. ls_methods-refnumber = 1. ls_methods-objecttype = 'HEADER'. ls_methods-method = 'TECO_WITH_NOTIF'. "技術完成 ls_methods-objectkey = lv_aufnr. APPEND ls_methods TO lt_methods. IF lt_methods IS NOT INITIAL. CLEAR ls_methods. ls_methods-method = 'SAVE'. APPEND ls_methods TO lt_methods. REFRESH:lt_return. CALL FUNCTION 'BAPI_ALM_ORDER_MAINTAIN' TABLES it_methods = lt_methods return = lt_return. READ TABLE lt_return INTO ls_return WITH KEY type = 'E'. IF sy-subrc = 0. CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'. MESSAGE ls_return-message TYPE 'S' DISPLAY LIKE 'E'. ELSE. CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' EXPORTING wait = 'X'. MESSAGE '工單狀態更新成功' TYPE 'S'. ENDIF. ENDIF.
3,測試
程序運行前,tcode IW33查看工單狀態為釋放REL
程序運行后,工單狀態為技術完成TECO
其他,工單的技術完成狀態可以通過IW32撤銷,
以上。