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


前言:在ABAP開發中有時候會涉及到狀態的變更,比如銷售訂單的系統狀態變更未審批->已審批、設備的在運->報廢等,在這里就需要用到標准函數I_CHANGE_STATUSSTATUS_CHANGE_EXTERN針對這些對象的狀態進行變更。

1.狀態更改

使用案例:I_CHANGE_STATUS

image

參數說明:
OBJNR——對象號;
ESTAT_INACTIVE——當前用戶狀態;
ESTAT_ACTIVE——要修改的用戶狀態;
STSMA——用戶狀態參數文件;
注意:修改狀態之前要判斷當前狀態是否與要修改的狀態相同,不相同則能修改,否則會出現系統異常。

以上參數可從SAP前台界面獲取,舉例銷售訂單:路徑va03->菜單欄轉到->抬頭->狀態

image
如果從前台找不到,也可以從以下表中知道對應的參數:

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.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM