Friday, April 2, 2010

วิธีการดึงข้อมูล System Status ของ Production Order โดยใช้ ABAP [1]

ในการดึงข้อมูลเกี่ยวกับ Production Order บางครั้งเราต้องการทราบข้อมูลที่อยู่ในส่วนของ System Status ซึ่งวิธีแรกที่เราจะนำเสนอนี้คือการใช้ Function Module: STATUS_READ ดังตัวอย่างต่อไปนี้


CALL FUNCTION 'STATUS_READ'
EXPORTING
* CLIENT = SY-MANDT
objnr = wa_aufk-objnr
* ONLY_ACTIVE = ' '
* IMPORTING
* OBTYP =
* STSMA =
* STONR =
TABLES
STATUS = it_stat
EXCEPTIONS
OBJECT_NOT_FOUND = 1
OTHERS = 2
.


ฟังก์ชั่นนี้ใช้ง่ายมาก ขอเพียงรู้เลขที่ OBJNR ที่เราหาได้จากตาราง AUFK ที่นำ Production Order เข้าไป Query
ผลลัพธ์ที่ได้จะออกมาในรูปของ Internal Table ซึ่งมีโครงสร้างประกอบได้ด้วย STAT: รหัสสถานะ และ INACT: Inactive Flag
ในกรณีที่เราต้องการเฉพาะสถานะที่ Active ให้เราเอา Comment ของ ONLY_ACTIVE ออก และ Assign ค่า "X" ให้

ONLY_ACTIVE = ' X'


Completed Code:

DATA: it_stat TYPE TABLE OF JSTAT WITH HEADER LINE,
wa_aufk LIKE aufk.

SELECT SINGLE * FROM AUFK INTO wa_aufk
WHERE AUFNR = 'TEST54'.
IF SY-SUBRC = 0.
CALL FUNCTION 'STATUS_READ'
EXPORTING
* CLIENT = SY-MANDT
objnr = wa_aufk-objnr
* ONLY_ACTIVE = ' '
* IMPORTING
* OBTYP =
* STSMA =
* STONR =
TABLES
STATUS = it_stat
EXCEPTIONS
OBJECT_NOT_FOUND = 1
OTHERS = 2
.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ELSE.
LOOP AT it_stat.
WRITE:/ it_stat-STAT,
it_stat-INACT.
ENDLOOP.
ENDIF.
ENDIF.


ผลลัพธ์ที่ได้

E0001 X
E0010
I0001 X
I0002
I0010
I0016
I0028
I0115
I0118 X
I0215
I0340 X
I0361
I0369
I0420

No comments:

Post a Comment