SAP การเขียนโปรแกรมรายงาน ABAP
⚡ สรุปอย่างชาญฉลาด
การเขียนโปรแกรมรายงานด้วย ABAP สร้างโปรแกรมที่สามารถทำงานได้ ซึ่งใช้ในการเลือก ประมวลผล และแสดงผลข้อมูลจำนวนมาก SAP ข้อมูล หน้านี้อธิบายเกี่ยวกับการเพิ่มส่วนหัวของรายงาน หน้าจอการเลือก ลำดับเหตุการณ์ คำสั่งการจัดรูปแบบ รายการแบบโต้ตอบ และฐานข้อมูลเชิงตรรกะ

การเขียนโปรแกรมรายงาน ABAP คืออะไร?
SAP-ABAP รองรับโปรแกรมสองประเภท ได้แก่ โปรแกรมรายงานและโปรแกรมโต้ตอบ โปรแกรมรายงานใช้เมื่อต้องการแสดงข้อมูลจำนวนมาก
วัตถุประสงค์/การใช้โปรแกรมรายงาน
- ใช้เมื่อจำเป็นต้องเลือกและประมวลผลข้อมูลจากหลายตารางก่อนนำเสนอ
- ใช้เมื่อรายงานต้องการรูปแบบพิเศษ
- ใช้เมื่อต้องดาวน์โหลดรายงาน SAP ไปยังแผ่นงาน Excel ที่จะกระจายไปทั่ว
- ใช้เมื่อจะต้องส่งรายงานไปยังบุคคลใดบุคคลหนึ่งโดยเฉพาะ
ประเด็นสำคัญที่ควรทราบเกี่ยวกับโปรแกรมรายงาน
- โปรแกรมรายงานเป็นโปรแกรมที่ปฏิบัติการได้เสมอ ประเภทโปรแกรมเป็น 1 เสมอ
- ทุกโปรแกรมรายงานจะสอดคล้องกับประเภทแอปพลิเคชันเฉพาะ เช่น การขายและการจัดจำหน่าย FI – CO เป็นต้น นอกจากนี้ยังสามารถเป็นแอปพลิเคชันข้ามประเภท เช่น '*' ได้อีกด้วย
- การเขียนโปรแกรมรายงานเป็นการเขียนโปรแกรมที่ขับเคลื่อนด้วยเหตุการณ์
- บรรทัดแรกของโปรแกรมรายงานจะเป็นรายงานเสมอ -
- เพื่อระงับส่วนหัวของรายการหรือชื่อของโปรแกรมที่เพิ่ม ไม่มีส่วนหัวของหน้ามาตรฐาน ถูกนำมาใช้.
- ขนาดเส้นสำหรับรายงานเฉพาะสามารถตั้งค่าได้โดยใช้ส่วนเพิ่มเติม ขนาดเส้น -
- จำนวนบรรทัดสำหรับเพจใดเพจหนึ่งสามารถตั้งค่าได้โดยใช้การเพิ่ม จำนวนบรรทัด n(n1)- N คือจำนวนบรรทัดสำหรับเพจ และ N1 คือจำนวนบรรทัดที่สงวนไว้สำหรับส่วนท้ายของหน้า
- ในการแสดงข้อมูลหรือข้อความแสดงข้อผิดพลาดใด ๆ เราจะเพิ่มคลาสข้อความให้กับโปรแกรมโดยใช้ส่วนเพิ่มเติม: รหัสข้อความ - คลาสข้อความยังคงอยู่ใน SE91
ดังนั้น โปรแกรมรายงานในอุดมคติควรเริ่มต้นด้วย:
Report <report name> no standard page heading line-size <size> line-count <n(n1)> message-id <message class>.
โปรแกรมรายงานเทียบกับโปรแกรมสนทนา
โปรแกรมทั้งสองประเภททำงานบนระบบเดียวกัน แต่แก้ปัญหาที่ตรงกันข้าม โปรแกรมรายงานอ่านและแสดงข้อมูล ในขณะที่โปรแกรมแบบโต้ตอบช่วยให้ผู้ใช้สามารถจัดการข้อมูลผ่านหน้าจอต่างๆ ได้
| หลักเกณฑ์ | โปรแกรมรายงาน | โปรแกรมสนทนา |
|---|---|---|
| ประเภทโปรแกรม | ประเภท 1, ไฟล์ปฏิบัติการ | ประเภท M, กลุ่มโมดูล |
| เริ่มโดย | ชื่อโปรแกรมหรือรหัสธุรกรรม | รหัสธุรกรรมเท่านั้น |
| การควบคุมการไหล | เหตุการณ์ต่างๆ เช่น การเริ่มต้น (INITIALIZATION) และการเริ่มต้นการเลือก (START-OF-SELECTION) | ตรรกะการไหลของหน้าจอด้วยโมดูล PBO และ PAI |
| อินพุตของผู้ใช้ | หน้าจอการเลือกที่สร้างขึ้น | หน้าจอที่ออกแบบในหน้าจอ Painter |
| การใช้งานทั่วไป | การแสดงผลและการดาวน์โหลดข้อมูลปริมาณมาก | การสร้างและเปลี่ยนแปลงข้อมูลทางธุรกิจ |
หน้าจอการเลือกเป็นส่วนที่รายงานจะรวบรวมข้อมูล ดังนั้นจะอธิบายในส่วนถัดไป
หน้าจอการเลือก
"หน้าจอเลือกค่า" คือหน้าจอที่ใช้ระบุค่าอินพุตที่โปรแกรมควรใช้ในการทำงาน
โดยปกติหน้าจอการเลือกจะถูกสร้างขึ้นจาก
- พารามิเตอร์
- เลือก-ตัวเลือก
วากยสัมพันธ์
Selection-screen begin of screen <screen #> selection-screen begin of block <#> with frame title <text> ......... ......... selection-screen end of block <#> selection-screen end of screen <screen #>
พารามิเตอร์
พารามิเตอร์ช่วยในการเลือกแบบไดนามิก สามารถรองรับได้เพียงค่าเดียวสำหรับหนึ่งรอบการทำงานของโปรแกรม
วากยสัมพันธ์
การกำหนดพารามิเตอร์เป็นชนิดข้อมูล
Parameters p_id(30) type c.
การกำหนดพารามิเตอร์เช่นเขตข้อมูลตาราง
Parameter p_id like <table name>-<field name>.
พารามิเตอร์สามารถเป็นทั้งช่องกาเครื่องหมายและปุ่มตัวเลือกได้
Parameters p_id as checkbox.Parameters p_id1 radiobutton group <group name>. Parameters p_id2 radiobutton group <group name>.
พารามิเตอร์สามารถเป็นรายการกล่องได้
Parameter p_id like <table name>-<field name> as listbox
เลือกตัวเลือก
Select-Option ใช้เพื่อป้อนช่วงของค่าหรือชุดของค่าให้กับโปรแกรม
วากยสัมพันธ์
select-options s_vbeln for vbak-vbeln.
ภาพหน้าจอแสดงช่องป้อนข้อมูลค่าต่ำและค่าสูงที่ตัวเลือกการเลือกสร้างขึ้น พร้อมกับปุ่มเลือกหลายรายการ
คุณยังสามารถกำหนดตัวเลือกการเลือกได้เช่นตัวแปร
select-options s_vbeln for vbak-vbeln no intervals no-extension
เมื่อรวบรวมข้อมูลเข้าแล้ว โปรแกรมจะตอบสนองต่อลำดับเหตุการณ์ที่กำหนดไว้
เหตุการณ์ในโปรแกรมรายงาน ABAP
โปรแกรมรายงาน ABAP ได้แก่ โปรแกรมที่ขับเคลื่อนด้วยเหตุการณ์- เหตุการณ์ต่างๆ ในโปรแกรมรายงาน ได้แก่:
โหลดของโปรแกรม
- ทริกเกอร์เหตุการณ์ที่เกี่ยวข้องในเซสชันภายในหลังจากโหลดโปรแกรมประเภท 1, M, F หรือ S
- นอกจากนี้ ยังรันบล็อกการประมวลผลที่เกี่ยวข้องเพียงครั้งเดียวเท่านั้นสำหรับแต่ละโปรแกรมและเซสชันภายใน
- บล็อกการประมวลผล LOAD-OF-PROGRAM มีฟังก์ชันประมาณเดียวกันสำหรับ โปรแกรมเอแบค ประเภท 1, M, F หรือ S ตามที่ Constructor มีสำหรับคลาสใน ABAP Objects
การเริ่มต้น.
- เหตุการณ์นี้จะถูกดำเนินการก่อนที่หน้าจอการเลือกจะแสดง
- การเริ่มต้นของค่าทั้งหมด
- คุณสามารถกำหนดค่าอื่นนอกเหนือจากค่าเริ่มต้นบนหน้าจอการเลือกได้
- คุณสามารถกรอกค่าบางค่าในขณะรันไทม์ให้กับหน้าจอการเลือกของคุณได้
ที่หน้าจอการเลือก
- เหตุการณ์จะได้รับการประมวลผลเมื่อหน้าจอการเลือกได้รับการประมวลผล (ที่ส่วนท้ายของ PAI )
- การตรวจสอบความถูกต้องและการตรวจสอบค่าที่ป้อนเกิดขึ้นที่นี่
จุดเริ่มต้นของการคัดเลือก
- ที่นี่โปรแกรมจะเริ่มเลือกค่าจากตาราง
สิ้นสุดการคัดเลือก
- หลังจากเลือกข้อมูลทั้งหมดแล้ว เหตุการณ์นี้จะเขียนข้อมูลลงบนหน้าจอ
เหตุการณ์แบบโต้ตอบ
- ใช้สำหรับการรายงานเชิงโต้ตอบ ใช้เพื่อสร้างรายการโดยละเอียดจากรายการพื้นฐาน
💡 เคล็ดลับ: โดยค่าเริ่มต้น คำสั่งที่เขียนโดยไม่มีคีย์เวิร์ดเหตุการณ์ใดๆ จะถูกจัดอยู่ในกลุ่ม START-OF-SELECTION ซึ่งเป็นเหตุผลว่าทำไมรายงานจึงยังคงทำงานได้แม้ว่าจะไม่มีเหตุการณ์ดังกล่าวก็ตาม
ตัวอย่าง: โปรแกรมสร้างรายงาน ABAP อย่างง่าย
โปรแกรมด้านล่างนี้จะรวมข้อมูลเพิ่มเติม หน้าจอการเลือก และเหตุการณ์ต่างๆ เข้าไว้ในรายงานเดียวที่ใช้งานได้ โดยจะอ่านส่วนหัวของใบสั่งขายจาก VBAK สำหรับตัวเลขที่ป้อนในหน้าจอการเลือก และเขียนออกมาเป็นรายการ
REPORT z_sales_order_list NO STANDARD PAGE HEADING LINE-SIZE 80 LINE-COUNT 65(3) MESSAGE-ID zsd. TABLES: vbak. DATA: lt_vbak TYPE STANDARD TABLE OF vbak, ls_vbak TYPE vbak. * Selection screen SELECT-OPTIONS: s_vbeln FOR vbak-vbeln. PARAMETERS: p_erdat LIKE vbak-erdat. INITIALIZATION. p_erdat = sy-datum. AT SELECTION-SCREEN. IF p_erdat > sy-datum. MESSAGE e001(zsd). " Date must not lie in the future ENDIF. START-OF-SELECTION. SELECT * FROM vbak INTO TABLE lt_vbak WHERE vbeln IN s_vbeln AND erdat LE p_erdat. END-OF-SELECTION. LOOP AT lt_vbak INTO ls_vbak. WRITE: / ls_vbak-vbeln, ls_vbak-erdat, ls_vbak-netwr. HIDE ls_vbak-vbeln. ENDLOOP.
มีรายละเอียดสำคัญสามประการที่ควรทราบ INITIALIZATION จะเติมค่าพารามิเตอร์วันที่ก่อนที่หน้าจอเลือกจะปรากฏขึ้น AT SELECTION-SCREEN จะตรวจสอบความถูกต้องของข้อมูลที่ป้อนและแสดงข้อความจากคลาส ZSD HIDE จะเก็บหมายเลขลำดับของแต่ละแถวที่เขียนไว้ เพื่อให้การดับเบิ้ลคลิกสามารถสร้างรายการรองจากแถวนั้นได้ ซึ่งเป็นหัวข้อของส่วนถัดไป
การจัดรูปแบบรายงาน
ABAP อนุญาตให้จัดรูปแบบรายงานตามที่ผู้ใช้ต้องการ ตัวอย่างเช่น “เส้นสลับ” จะต้องปรากฏเป็นสีที่ต่างกัน และเส้น “ผลรวม” ควรปรากฏเป็นสีเหลือง
วากยสัมพันธ์
Format Color n Format Color n Intensified On
n อาจสอดคล้องกับตัวเลขต่างๆ
โปรดทราบว่ายังมีส่วนเพิ่มเติมอื่นๆ พร้อมกับรูปแบบด้วย
FORMAT COLOR OFF INTENSIFIED OFF INVERSE OFF HOTSPOT OFF INPUT OFF
การเขียนโปรแกรมรายงานเชิงโต้ตอบ
- การใช้การเขียนโปรแกรมเชิงโต้ตอบช่วยให้ผู้ใช้สามารถควบคุมการดึงข้อมูลและการแสดงผลข้อมูลได้อย่างมีประสิทธิภาพ
- ใช้สำหรับสร้างรายการรายละเอียดจากรายการพื้นฐานมาก ๆ
- ข้อมูลรายละเอียดเขียนอยู่ในรายการรอง
- รายการรองอาจซ้อนทับหน้าจอแรกทั้งหมดหรือสามารถแสดงในหน้าจอใหม่ได้
- รายการรองสามารถเป็นแบบโต้ตอบได้
- รายการแรกอาจเรียกธุรกรรมด้วย
- มีเหตุการณ์ต่างๆ ที่เกี่ยวข้องกับการเขียนโปรแกรมเชิงโต้ตอบ
คำสั่งบางคำสั่งที่ใช้ในการเขียนโปรแกรมเชิงโต้ตอบ
ฮอตสปอต
หากลากเมาส์ไปบนข้อมูลที่แสดงในรายงาน เคอร์เซอร์จะเปลี่ยนเป็นรูปมือที่มีนิ้วชี้เหยียดออก สามารถสร้างจุดสนใจได้โดยใช้คำสั่ง FORMAT
Syntax: Format Hotspot On (Off).
ซ่อน
คำสั่งนี้ช่วยให้คุณจัดเก็บชื่อฟิลด์ตามชื่อที่จะทำการประมวลผลเพิ่มเติมเพื่อรับรายการโดยละเอียด มันถูกเขียนโดยตรงหลังคำสั่ง WRITE สำหรับฟิลด์ เมื่อเลือกแถวแล้ว ค่าต่างๆ จะถูกเติมลงในตัวแปรโดยอัตโนมัติเพื่อการใช้งานต่อไป
Syntax: Hide <field-name>.
รายงานที่อ่านข้อมูลจากหลายตารางสามารถแทนที่คำสั่ง SELECT ด้วยฐานข้อมูลเชิงตรรกะตามที่อธิบายไว้ด้านล่าง
ฐานข้อมูลเชิงตรรกะ
- แทนที่จะใช้คำสั่ง "เลือก" คุณสามารถใช้ฐานข้อมูลเชิงตรรกะเพื่อดึงข้อมูลสำหรับโปรแกรมได้
- ฐานข้อมูลแบบลอจิคัลถูกสร้างขึ้นตามธุรกรรม SE36
- ชื่อของฐานข้อมูลลอจิคัลสามารถมีความยาวได้สูงสุด 20 อักขระ อาจเริ่มต้นด้วยคำนำหน้าเนมสเปซ
- ข้อมูลถูกเลือกโดยโปรแกรมอื่นและสามารถเข้าถึงข้อมูลโดยใช้ GET คำสั่งนำข้อมูลไปไว้ในพื้นที่ทำงาน -
ข้อดีของฐานข้อมูลแบบลอจิคัลเหนือแบบสอบถาม Select ปกติ
- โดยมีเงื่อนไขการตรวจสอบเพื่อดูว่าอินพุตถูกต้อง สมบูรณ์ และเป็นไปได้หรือไม่
- มันมีการตรวจสอบการอนุญาตจากส่วนกลางสำหรับการเข้าถึงฐานข้อมูล
- การปรับปรุงต่างๆ เช่น การปรับปรุงประสิทธิภาพจะมีผลทันทีกับรายงานทั้งหมดที่ใช้ฐานข้อมูลเชิงตรรกะ
หมายเหตุ: เนื่องจากความซับซ้อนที่เกี่ยวข้อง ฐานข้อมูลเชิงตรรกะจึงไม่ได้ถูกใช้ในกรณีส่วนใหญ่
