วันนี้ผมอยากจะแชร์เกี่ยวกับ ABAP query ในหัวข้อ “How to set default value in select option for ABAP query“ พูดแบบบ้านๆ ก็คือ วิธีการใส่ค่าใน select option ของ Report query
เกริ่นก่อนเลยว่า ปรกติแล้ว ไอ้เจ้า ABAP query นี้ มันสามารถระบุค่าเข้าไปใน select option ของมันได้ ผ่าน TCODE SQ01 เลือกปุ่ม Info query แต่ ประเด็นที่ผมจะบอกคือ ค่าที่จะใส่นั้น มันจำเป็นต้องเป็นค่าที่ถูกกำหนดมาตายตัว ซึ่งบางครั้งมันก็ไม่ตอบโจทย์ เพราะ เราอยากให้มันระบุค่าแบบปัจจุบัน เอาง่ายๆ เราอยากให้มันเก็บค่า วันที่ปัจจุบัน ซึ่ง ไอ้เจ้า ปุ่ม Info query มันไม่ตอบโจทย์ในจุดนี้
ดังนั้นเราจึงต้องสร้างวิธีการขึ้นมา โดยแบ่งเป็น 3 ส่วน โดย 3 ส่วนนี้ อยู่ใน TCODE SQ02
ส่วนที่ 1 ส่วนของ DATA
DATA : LV_DATUM TYPE BUT021_FS-VALID_TO. RANGES: R_VALID_TO FOR BUT021_FS-VALID_TO, R_VALID_FROM FOR BUT021_FS-VALID_FROM. CONSTANTS : LV_VALID_TO(10) VALUE 'SP$00020[]', LV_VALID_FROM(10) VALUE 'SP$00022[]'. FIELD-SYMBOLS: <FS_VALID_TO> TYPE ANY TABLE, <FS_VALID_FROM> TYPE ANY TABLE.
ส่วนที่ 2 ส่วนของ INITIALIZATION
CLEAR lv_datum. GET TIME STAMP FIELD lv_datum. "valid_to r_valid_to-sign = 'I'. r_valid_to-option = 'GE'. r_valid_to-low = lv_datum. APPEND r_valid_to. "valid_from r_valid_from-sign = 'I'. r_valid_from-option = 'LE'. r_valid_from-low = lv_datum. APPEND r_valid_from. ASSIGN (lv_valid_to) TO <fs_valid_to>. ASSIGN (lv_valid_from) TO <fs_valid_from>.
ส่วนที่ 3 ส่วนของ START-OF-SELECTION
<fs_valid_to> = r_valid_to[]. <fs_valid_from> = r_valid_from[].
สรุปแบบ สไตล์ Programmer นะ
คือ ประกาศตัวแปร R_VALID_TO และ R_VALID_FROM มาเพื่อเก็บค่าที่เราต้องการ โดยค่าที่เราเอามาใส่ อาจถูกผ่านลอจิกมาก่อน อย่างเช่นในที่นี้ ต้องการได้ค่าวันที่ ปัจจุบัน
ดังนั้น ลอจิก ที่ดึงค่าปัจจุบัน คือ
GET TIME STAMP FIELD lv_datum.เราเอาค่านั้น มาใส่ ให้กับ R_VALID_TO และ R_VALID_FROM ซึ่งการที่เราจะเอาค่าพวกนี้ ไปใส่ใน screen optione นั้น เราต้องใช้วิธี ASSIGN FIELD-SYMBOLS เพราะว่า ณ ตอนที่เราทำ ABAP query นั้น เจ้า screen option นั้นมันไม่ได้มีการประกาศตัวแปร เราจึงต้องใช้วิธีนี้ ลองทำดู ถ้าติดปัญหาอะไร คอมเมนต์มาได้เลย ยินดีตอบครับผม 😉