SAP 获取工单和工序的状态

SAP 获取工单和工序的状态

2015年11月12日 15:20:46 SAPmatinal 阅读数:3684

ABAP 获取订单状态的两个函数 STATUS_TEXT_EDIT 和 STATUS_READ 的简单介绍

 
  1. CONCATENATE 'OR' TWK1-AUFNR INTO Z_OBJNR.

  2.  
  3. DATA:objnr TYPE aufk-objnr.

  4.  
  5. objnr = 'OR000000100014'.

  6. DATA:t_status TYPE TABLE OF jstat WITH HEADER LINE.

  7. "结果存放在STATUS表中

  8. CALL FUNCTION 'STATUS_READ'

  9. EXPORTING

  10. client = sy-mandt

  11. objnr = 'OR000001100154'

  12. TABLES

  13. status = t_status

  14. EXCEPTIONS

  15. object_not_found = 1

  16. OTHERS = 2.

  17. IF sy-subrc <> 0.

  18. MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

  19. WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

  20. ENDIF.

  21. LOOP AT t_status.

  22. IF t_status-STAT = 'I0002' AND t_status-INACT = 'X'.

  23. WRITE:'已删除'.

  24. EXIT.

  25. ENDIF.

  26. ENDLOOP.

  27.  
  28. DATA:line TYPE bsvx-sttxt.

  29. CALL FUNCTION 'STATUS_TEXT_EDIT'

  30. EXPORTING

  31. FLG_USER_STAT = 'X'

  32. OBJNR = 'OR000001100154'

  33. ONLY_ACTIVE = 'X'

  34. SPRAS = SY-LANGU

  35. IMPORTING

  36. LINE = line

  37. EXCEPTIONS

  38. OBJECT_NOT_FOUND = 01

  39. OTHERS = 02.

  40. WRITE:line.

  41. SEARCH line FOR 'CLSD'.

  42. IF sy-subrc = 0.

  43. WRITE:'订单已关闭'.

  44. ENDIF.

在SAP中对于如何获取订单的状态,提供了至少两个函数(我自己知道的),分别是 STATUS_READ 和   STATUS_TEXT_EDIT。下面简单介绍这两个函数 
1.STATUS_READ  改函数的实现原理大概是通过订单的对象好(OR+订单号)到JEST中取出字段STAT INACT.
JEST表中STAT是一串从字面看不出意思的字符,可以根据STAT到表TJ02T中找到具体的描述。
下面是具体用法

 
  1. DATA:objnr TYPE aufk-objnr.

  2.  
  3. objnr = 'OR000000100014'.

  4. DATA:t_status TYPE TABLE OF jstat WITH HEADER LINE.

  5. "结果存放在STATUS表中

  6. CALL FUNCTION 'STATUS_READ'

  7. EXPORTING

  8. client = sy-mandt

  9. objnr = objnr

  10. TABLES

  11. status = t_status

  12. EXCEPTIONS

  13. object_not_found = 1

  14. OTHERS = 2.

  15. IF sy-subrc <> 0.

  16. MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

  17. WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

  18. ENDIF.

  19. LOOP AT t_status.

  20. IF t_status = 'I0046'.

  21. WRITE:'订单已关闭'.

  22. EXIT.

  23. ENDIF.

  24. ENDLOOP.


2.STATUS_TEXT_EDIT 改函数读取的结果是将订单状态拼接到一个字符串中,而且这个字符串是在前台订单上看到的状态,比较直接,这样做的结果就可能由于状态较多导致长度过长,在某些情况下取的数据可能不准。
下面是一段代码

 
  1. DATA:line TYPE bsvx-sttxt.

  2. CALL FUNCTION 'STATUS_TEXT_EDIT'

  3. EXPORTING

  4. client = sy-mandt

  5. objnr = objnr

  6. spras = sy-langu

  7. IMPORTING

  8. line = line

  9. EXCEPTIONS

  10. object_not_found = 1

  11. OTHERS . "

  12. IF sy-subrc <> 0.

  13. MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

  14. WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

  15. ENDIF.

  16.  
  17. SEARCH line FOR 'CLSD'.

  18. IF sy-subrc = 0.

  19. WRITE:'订单已关闭'.

  20. ENDIF.


下面介绍获取工序状态的方法:

状态一般都在JEST这表里面,到AFVC表里面找到对象号 再找TJ02表就可以了!

猜你喜欢

转载自blog.csdn.net/weixin_44148105/article/details/85388473
SAP