รายงาน ALV ใน SAP บทช่วยสอน - โปรแกรมดูรายการ ABAP
คุณลักษณะที่ต้องการโดยทั่วไปของรายงานใดๆ ก็ตาม ได้แก่ "การจัดตำแหน่งคอลัมน์" การเรียงลำดับ การกรอง ผลรวมย่อย ผลรวม ฯลฯ หากต้องการใช้สิ่งเหล่านี้ตั้งแต่ต้น ต้องใช้ความพยายามในการเขียนโค้ดอย่างมาก เพื่อหลีกเลี่ยงไม่ให้เราใช้แนวคิดที่เรียกว่า ABAP List Viewer (ALV)
แต่ละรายงานเหล่านี้มีให้ โมดูลฟังก์ชัน ซึ่งช่วยในการผลิตผลลัพธ์ที่ต้องการโดยไม่ต้องใช้ความพยายามมากนัก มาดูรายละเอียดกันดีกว่า –
รายงานอย่างง่าย
โมดูลฟังก์ชั่นที่สำคัญในสิ่งเหล่านี้ รายงาน คือ -
- Reuse_alv_fieldcatalog_merge
- Reuse_alv_list_display
- Reuse_alv_events_get
- Reuse_alv_grid_display
- Reuse_alv_commentary_write
REUSE_ALV_FIELDCATALOG_MERGE
โมดูลฟังก์ชันนี้ใช้เพื่อเติมแค็ตตาล็อกฟิลด์ซึ่งจำเป็นต่อการแสดงข้อมูลใน ALV
หากข้อมูลเอาต์พุตมาจากตารางพจนานุกรมเดียวและเลือกคอลัมน์ทั้งหมดแล้ว เราไม่จำเป็นต้องสร้างแค็ตตาล็อกฟิลด์โดยเฉพาะ ก็เพียงพอแล้วที่จะกล่าวถึงชื่อตารางเป็นพารามิเตอร์ (I_structure_name) ใน REUSE_ALV_LIST_DISPLAY แต่ในกรณีอื่นเราจำเป็นต้องสร้างมันขึ้นมา
หมายเหตุ: สามารถกรอก Fieldcatalog ด้วยตนเองได้เช่นกัน โดยการกรอกรายละเอียดที่จำเป็นทั้งหมดลงในตารางภายใน
พารามิเตอร์ที่สำคัญคือ:
1. การส่งออก:
- I_program_name : รหัสรายงาน
- I_internal_tabname : ตารางเอาต์พุตภายใน
- I_inclname : รวมหรือชื่อรายงานที่จัดการฟอร์มไดนามิกทั้งหมด
2. การเปลี่ยนแปลง
- ct_fieldcat : อัน ตารางภายใน ด้วยประเภท SLIS_T_FIELDCAT_ALV ซึ่งได้รับการประกาศไว้ในประเภทพูล SLIS
REUSE_ALV_LIST_DISPLAY
นี่คือโมดูลฟังก์ชันที่พิมพ์ข้อมูล
พารามิเตอร์ที่สำคัญคือ:
1. การส่งออก:
- I_callback_program : รหัสรายงาน
- I_bypassing_buffer : 'X'
- I_buffer_active : ' '
- I_callback_pf_status_set : รูทีนที่ผู้ใช้สามารถตั้งค่าสถานะ pf ของตนเองหรือเปลี่ยนการทำงานของสถานะ pf ที่มีอยู่
- I_callback_user_command : รูทีนที่จัดการโค้ดฟังก์ชัน
- I_struction name : ชื่อของตารางพจนานุกรม
- Is_Layout : โครงสร้างสำหรับกำหนดเค้าโครงของรายงาน
- It_fieldcat : ตารางภายในพร้อมรายการฟิลด์ทั้งหมดและคุณลักษณะที่จะพิมพ์ (ฟังก์ชันนี้สามารถเติมตารางนี้ได้โดยอัตโนมัติ)
- It_events : ตารางภายในพร้อมรายการเหตุการณ์ที่เป็นไปได้ทั้งหมดของ ALV และชื่อแบบฟอร์มที่เกี่ยวข้อง
2. ตาราง:
- ก. t_outtab : ตารางภายในพร้อมข้อมูลที่จะส่งออก
REUSE_ALV_EVENTS_GET:
ส่งคืนตารางเหตุการณ์ที่เป็นไปได้สำหรับประเภทรายการ AA
1. นำเข้า:
Et_Events :ตารางเหตุการณ์จะถูกส่งกลับพร้อมกับเหตุการณ์ CALLBACK ที่เป็นไปได้ทั้งหมดสำหรับประเภทรายการที่ระบุ (คอลัมน์ 'NAME') เพื่อให้เหตุการณ์ที่ Callback ประมวลผลได้ จะต้องกรอกฟิลด์ 'FORM' หากฟิลด์ถูกเตรียมใช้งาน เหตุการณ์จะถูกละเว้น รายการสามารถอ่านได้จากตารางเหตุการณ์ ฟิลด์ 'FORM' ที่กรอก และรายการที่แก้ไขโดยใช้ค่าคงที่จากประเภทพูล SLIS
2. การส่งออก:
I_list_type: 0 = รายการแบบง่าย REUSE_ALV_LIST_DISPLAY
1 = รายการลำดับชั้น REUSE_ALV_HIERSEQ_LIST_DISPLAY
2 = รายการบล็อกแบบง่าย REUSE_ALV_BLOCK_LIST_APPEND
3 = รายการบล็อกลำดับชั้น REUSE_ALV_BLOCK_LIST_HS_APPEND
REUSE_ALV_GRID_DISPLAY
ฟังก์ชันใหม่จากเวอร์ชัน ABAP4.6 เพื่อแสดงผลลัพธ์ในรูปแบบตารางแทนที่จะแสดงตัวอย่าง
พารามิเตอร์ : เหมือนกับ reuse_alv_list_display
หมายเหตุ: กริดไม่สามารถรองรับปริมาณข้อมูลสูงได้ ฟังก์ชันเช่นการเรียงลำดับ การเลื่อนลงจะใช้ทรัพยากรและเวลาจำนวนมาก หากปริมาณข้อมูลที่จะแสดงนั้นสูง ไม่มีคำจำกัดความที่ชัดเจน ดังนั้น หากปริมาณข้อมูลคือ X ให้เลือกรายการหรือกริด แต่ผู้พัฒนาต้องรับสายตามประสบการณ์ของเขา หากไม่แน่ใจ รายการเป็นตัวเลือกที่ดีกว่า
REUSE_ALV_COMMENTARY_WRITE
ซึ่งใช้ในเหตุการณ์ด้านบนของหน้าเพื่อพิมพ์ส่วนหัวและความคิดเห็นอื่นๆ สำหรับรายการ
พารามิเตอร์ที่สำคัญ
- It_list_commentary : ตารางภายในที่มีส่วนหัวเป็นประเภท slis_t_listheader
ตารางภายในนี้มีสามฟิลด์:
- ประเภท : 'H' – ส่วนหัว, 'S' – การเลือก, 'A' – การดำเนินการ
- คีย์ : เฉพาะเมื่อพิมพ์เป็น 'S'
- ข้อมูล : ข้อความที่จะพิมพ์
รายงานบล็อก
ดูเหมือนรายงานธรรมดา แต่รายงานนี้มีคุณลักษณะของการเรียงลำดับและกรองข้อมูลเท่านั้น รายงานนี้ใช้ในกรณีที่คุณต้องแสดงรายงานมากกว่าหนึ่งรายงานในผลลัพธ์ ในทางเทคนิคแล้ว หากคุณมีตารางภายในหลายตารางที่มีข้อมูลที่ต้องแสดงเป็นบล็อกแยกกัน เราจะใช้รายงานแบบบล็อกของ ALV
ฟังก์ชั่นสำคัญที่ใช้ในการสร้างรายงานนี้คือ:
- REUSE_ALV_BLOCK_LIST_INIT
- REUSE_ALV_BLOCK_LIST_APPEND
- REUSE_ALV_BLOCK_LIST_DISPLAY
REUSE_ALV_BLOCK_LIST_INIT
โมดูลฟังก์ชันนี้ใช้เพื่อตั้งค่าสถานะ GUI เริ่มต้น ฯลฯ พารามิเตอร์จะคล้ายกับพารามิเตอร์ที่ใช้ใน reuse_alv_list_display หรือ reuse_alv_grid_display
REUSE_ALV_BLOCK_LIST_APPEND
โมดูลฟังก์ชันนี้จะเพิ่มข้อมูลลงในบล็อก
พารามิเตอร์ที่สำคัญ
1.ส่งออก:
- is_layout : การตั้งค่าเค้าโครงสำหรับบล็อก
- it_fieldcat : แค็ตตาล็อกฟิลด์
- I_tabname : ชื่อตารางภายในพร้อมเหตุการณ์ที่เป็นไปได้ทั้งหมด
2.ตาราง :
- t_outtab : ตารางภายในพร้อมข้อมูลเอาต์พุต
REUSE_ALV_BLOCK_LIST_DISPLAY
โมดูลฟังก์ชันนี้แสดงรายการพร้อมข้อมูลที่ต่อท้ายโดยฟังก์ชันด้านบน
พารามิเตอร์ : พารามิเตอร์ทั้งหมดเป็นทางเลือก
รายงานลำดับชั้น
การแสดงผลแบบลำดับชั้นใช้สำหรับแสดงข้อมูลที่เกี่ยวข้อง เช่น ใบสั่งขายและรายละเอียดรายการสินค้า โดยรายละเอียดใบสั่งขายสามารถเป็นข้อมูลส่วนหัวได้ ในขณะที่รายการในใบสั่งขายสามารถเป็นข้อมูลรายการสินค้าได้
โมดูลฟังก์ชันที่ใช้สำหรับสิ่งนี้คือ
REUSE_ALV_HIERSEQ_LIST_DISPLAY
ส่งออก:
- I_CALLBACK_PROGRAM
- I_CALLBACK_PF_STATUS_SET
- I_CALLBACK_USER_COMMAND
- IS_LAYOUT
- it_fieldcat
- มัน_เหตุการณ์
- I_tabname_header : ชื่อของตารางภายในในโปรแกรมที่มีข้อมูลเอาต์พุตของระดับลำดับชั้นสูงสุด
- I_tabname_item : ชื่อของตารางภายในในโปรแกรมที่มีข้อมูลเอาต์พุตของระดับลำดับชั้นต่ำสุด
- Is_keyinfo : โครงสร้างนี้มีชื่อฟิลด์ส่วนหัวและตารางรายการซึ่งเชื่อมโยงทั้งสองตาราง (คีย์ที่ใช้ร่วมกัน)
ตาราง
- t_outtab_header : ตารางส่วนหัวที่มีข้อมูลที่จะส่งออก
- t_outtab_item : ชื่อของตารางภายในในโปรแกรมที่มีข้อมูลเอาต์พุตของระดับลำดับชั้นต่ำสุด
คำจำกัดความทั้งหมดของตารางภายใน โครงสร้าง และค่าคงที่จะถูกประกาศในประเภทพูลที่เรียกว่า สลิส. ตารางภายในนี้สามารถเติมได้โดยอัตโนมัติโดยใช้ REUSE_ALV_FIELDCATALOG_MERGE'
แสดงรูปแบบต่างๆ
- รูปแบบการแสดงผลใช้เพื่อตั้งค่าคุณสมบัติเริ่มต้นของเอาต์พุต alv เช่น เกณฑ์การเรียงลำดับ เกณฑ์การกรอง การรวมและผลรวมย่อย ฯลฯ
- รูปแบบการแสดงผลอาจเป็นรูปแบบเฉพาะของผู้ใช้และเป็นมาตรฐาน (ผู้ใช้ทุกคนสามารถใช้รูปแบบมาตรฐานได้)
- ประเภทของรูปแบบการแสดงผลที่สามารถบันทึกได้จะถูกควบคุมโดยพารามิเตอร์ i_save ที่ส่งผ่านในโมดูลฟังก์ชัน reuse_alv_list_display / reuse_alv_grid_display
- คุณสามารถระบุตัวเลือกบนหน้าจอการเลือกเพื่อเลือกรูปแบบการแสดงผลที่จะใช้ได้
โมดูลฟังก์ชันทั่วไปที่เกี่ยวข้องกับการเลือก / ตรวจสอบรูปแบบการแสดงผล ได้แก่
- Reuse_alv_variant_default_get
- Reuse_alv_variant_f4
- Reuse_alv_variant_existence
นั่นคือทั้งหมดที่ ABAP – การเขียนโปรแกรม ALV!