Friday, April 2, 2010

วิธีการสร้าง Dynamic Selected ตอนทำ Query

ตัวอย่างนี้เราจะ Query ข้อมูลจากตาราง VBAK โดยกำหนดเงื่อนไขในการเลือกข้อมูลว่าเอาข้อมูลของ Sale Order ที่มี Created Date ในวันที่ 05/01/2005. ส่วน Column ที่เราจะเลือกมาแสดงข้อมูลนั้นเราจะใส่เข้าไปใน Internal Table ชื่อ it_fldtab โดย Internal Table นี้ มีโครงสร้างภายในเก็บเป็น Text เท่านั้น
วิธีการประกาศ Internal Table it_fldtab เป็นดังนี้
DATA: wa_fld(72) TYPE C,
it_fldtab LIKE TABLE OF wa_fld.


จากนั้นให้นำชื่อ Column ที่ต้องการ Select ใส่เข้าไปใน it_fldtab ดังนี้
wa_fld = 'VBELN'.
APPEND wa_fld TO it_fldtab.
wa_fld = 'VBTYP'.
APPEND wa_fld TO it_fldtab.
wa_fld = 'AUDAT'.
APPEND wa_fld TO it_fldtab.


จาก Code ข้างต้น เราเลือก Column ที่ชื่อ VBELN คือ เลขที่ Sale Order, VBTYP คือ ประเภทของเอกสาร, AUDAT คือ วันที่ของเอกสาร
จากนั้นก็ Query ข้อมูลตามเงื่อนไขที่ได้กำหนด
SELECT (it_fldtab) INTO CORRESPONDING FIELDS OF TABLE it_vbak
FROM VBAK WHERE ERDAT = '20050105'.


เมื่อ Query ข้อมูลเสร็จก็ทำการเขียนข้อมูลออกมา
IF SY-SUBRC = 0.
LOOP AT it_vbak.
write:/ it_vbak-vbeln, it_vbak-vbtyp, it_vbak-audat.
ENDLOOP.
ENDIF.


Completed Code:

TABLES: VBAK.
DATA: it_vbak TYPE TABLE OF vbak WITH HEADER LINE,
wa_fld(72) TYPE C,
it_fldtab LIKE TABLE OF wa_fld.
wa_fld = 'VBELN'.
APPEND wa_fld TO it_fldtab.
wa_fld = 'VBTYP'.
APPEND wa_fld TO it_fldtab.
wa_fld = 'AUDAT'.
APPEND wa_fld TO it_fldtab.
SELECT (it_fldtab) INTO CORRESPONDING FIELDS OF TABLE it_vbak
FROM VBAK WHERE ERDAT = '20050105'.
IF SY-SUBRC = 0.
LOOP AT it_vbak.
write:/ it_vbak-vbeln, it_vbak-vbtyp, it_vbak-audat.
ENDLOOP.
ENDIF.

No comments:

Post a Comment