ABAP——系統狀態&使用者狀態修改、查詢
阿新 • • 發佈:2021-11-10
前言:在ABAP開發中有時候會涉及到狀態的變更,比如銷售訂單的系統狀態變更未審批->已審批、裝置的在運->報廢等,在這裡就需要用到標準函式I_CHANGE_STATUS、STATUS_CHANGE_EXTERN針對這些物件的狀態進行變更。
1.狀態更改
使用案例:I_CHANGE_STATUS
引數說明:
OBJNR——物件號;
ESTAT_INACTIVE——當前使用者狀態;
ESTAT_ACTIVE——要修改的使用者狀態;
STSMA——使用者狀態引數檔案;
注意:修改狀態之前要判斷當前狀態是否與要修改的狀態相同,不相同則能修改,否則會出現系統異常。
以上引數可從SAP前臺介面獲取,舉例銷售訂單:路徑va03->選單欄轉到->抬頭->狀態
如果從前臺找不到,也可以從以下表中知道對應的引數:
TJ02——系統狀態表:CRTD.REL等系統狀態物件值;
TJ02T——系統狀態文字表:CRTD.REL等系統狀態物件值;
TJ03——物件型別表:
TJ03T——物件型別文字表:
TJ20——狀態引數檔案:狀態引數檔案ZNPCON等值;
TJ30——使用者狀態表:根據引數檔案找對應的使用者狀態:appr已批准使用者狀態等值;可根據狀態引數檔案在此表中查詢物件號。
JEST——單獨物件狀態:輸入OR+000000+工單號可查詢該工單的所有狀態Number;
JSTO——狀態物件資訊:
2.狀態查詢
使用系統標準函式:STATUS_TEXT_EDIT
覺得博主的文章對你有幫助的,動動滑鼠一鍵三連,激勵博主寫出更多精彩文章!FORM frm_get_order_status. DATA:l_stsma TYPE jsto-stsma, l_line TYPE bsvx-sttxt, l_user_line TYPE bsvx-sttxt, l_stonr TYPE tj30-stonr. DATA:lv_objnr TYPE jest-objnr. "取物件號" SELECT SINGLE objnr INTO lv_objnr FROM vbak WHERE vbeln = <fs_opt>-vbeln. CALL FUNCTION 'STATUS_TEXT_EDIT' EXPORTING * CLIENT = SY-MANDT flg_user_stat = 'X' objnr = lv_objnr "物件號" only_active = 'X' spras = sy-langu IMPORTING e_stsma = l_stsma "物件狀態引數檔案" line = l_line "狀態文字:物件的狀態拼接而成" user_line = l_user_line "使用者狀態文字" stonr = l_stonr EXCEPTIONS object_not_found = 1 OTHERS = 2. SEARCH l_user_line FOR 'B'. "如果存在B字元,則物件已審批" IF sy-subrc = 0. ENDIF. ENDFORM.