ABAP Code:Hide field in screen report ซ่อนฟิลด์ในหน้าสกรีน ABAP Report

ABAP Hide field in screen report ซ่อนฟิลด์ในหน้าสกรีน ABAP Report

ABAP Hide field in screen report ซ่อนฟิลด์ในหน้าสกรีน ABAP Report

วัตถุประสงค์ เพื่อซ่อนฟิลด์ ใน screen report ของโปรแกรมนะครับ

หลักการ เมื่อไม่ต้องการให้ฟิลด์ที่ป้อนข้อมูล แสดงออกมา ณ
เหตุการณ์ใด เหตุการณ์หนึ่ง อาทิเช่น โปรแกรมเก็บประวัติ ครอบครัว มีฟิลด์

ดังต่อไปนี้
1. ชื่อ Name
2. นามสกุล Surname
3. สถานะ โสด Single or แต่งงาน Marry
4. ชื่อคู่ครอง Name2
5. นามสกุลคู่ครอง Surname2

ซึ่งดูจากฟิลด์ทั้งหมดแล้วจะเห็นได้ว่า มีฟิลด์ไม่จำเป็นต้องให้
Show หรือป้อนข้อมูล เพราะไม่ตรงกับเงื่อนไข เช่น ถ้าเลือกโสด ไม่ควรมี
ฟิลด์ ชื่อ-นามสกุล คู่ครองแสดงขึ้น เพื่อให้ป้อนข้อมูล หรือ ถ้าเลือก
แต่งงาน ก็ควรมีฟิลด์ ชื่อ-นามสกุล คู่ครองแสดงขึ้น เพื่อให้ป้อนข้อมูล

วิธีการ
1.ประกาศฟิลด์ที่ต้องใช้งาน ได้แก่ ฟิลด์ Username, Surname,
Single, Marry Username2 และ Surname2

ตัวอย่าง

PARAMETERS p_username(20) TYPE c.
PARAMETERS p_surname(20) TYPE c.
PARAMETERS p_single RADIOBUTTON GROUP repo DEFAULT ‘X’ USER-COMMAND change.
PARAMETERS p_marry RADIOBUTTON GROUP repo .
PARAMETERS p_username2(20) TYPE c MODIF ID nc1.
PARAMETERS p_surname2(20) TYPE c MODIF ID nc1.

จะเห็นได้ว่า ตรง PARAMETERS p_single นั้นมี คำสั่ง “USER-COMMAND change” นั้นเพื่อบ่งบอกว่า เป็น ฟิลด์ที่มีคำสั่ง ส่วน PARAMETERS p_username2 และ PARAMETERS p_surname2 จะมีคำว่า “MODIF ID nc1″  เป็นตัวบ่งบอกว่าฟิลด์นี้อยู่ในกลุ่ม ID nc1

2.ขั้นตอนต่อไปให้กำหนดเหตุการณ์ ที่จะทำก่อนการแสดงผล ซึ่งเราสามารถสร้างเหตุการณ์อะไรก็ตาม หลัง “AT SELECTION-SCREEN OUTPUT.” ซึ่งในที่นี้ให้กำหนกเหตุการณ์ว่า ถ้า p_single เท่ากับ X ให้เรียกฟอร์ม set_hide_field โดยส่งค่าตัวแปร NC1
ตัวอย่างเช่น

AT SELECTION-SCREEN OUTPUT.
IF p_single EQ ‘X’.
PERFORM set_hide_field USING ‘NC1′.
ELSE.

3. ในส่วนของฟอร์ม set_status_field นั้นให้กำหนดคำสั่ง ที่ให้ทำการ แก้ไขสถานะ ฟิลด์ ในหน้า screen report โดยกำหนดให้แก้ไข เฉพาะ กลุ่มฟิลด์ ที่ได้ทำการส่ง ในที่นี้คือ NC1
ตัวอย่างเช่น

FORM set_hide_field USING u_group.
  LOOP AT SCREEN.
   IF screen-group = u_group.
    screen-active = 0.
    MODIFY SCREEN.
   ENDIF.
  ENDLOOP.
ENDFORM.

เป็นอันเรียบร้อยสำหรับการซ่อนฟิลด์ตามเงื่อนไขที่เรากำหนด