1. 程式人生 > 其它 >ABAP——系統狀態&使用者狀態修改、查詢

ABAP——系統狀態&使用者狀態修改、查詢

前言:在ABAP開發中有時候會涉及到狀態的變更,比如銷售訂單的系統狀態變更未審批->已審批、裝置的在運->報廢等,在這裡就需要用到標準函式I_CHANGE_STATUSSTATUS_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.
覺得博主的文章對你有幫助的,動動滑鼠一鍵三連,激勵博主寫出更多精彩文章!