SAP การควบคุมตาราง ABAP พร้อมตัวอย่าง
⚡ สรุปอย่างชาญฉลาด
SAP ABAP Table Control แสดงตารางภายในเป็นตารางแบบเลื่อนได้บนหน้าจอที่สร้างขึ้นใน Screen Painterหน้านี้อธิบายคุณสมบัติ การประกาศ CONTROLS การจัดการเคอร์เซอร์ ลูป PBO และ PAI และคุณลักษณะของคอลัมน์

Table Control คืออะไรใน SAP เอบัพ?
ตัวควบคุมตารางและลูปขั้นตอนคือออบเจ็กต์สำหรับการแสดงตารางบนหน้าจอที่คุณเพิ่มไปยังหน้าจอในหน้าจอ Painter.
จากมุมมองของการเขียนโปรแกรม การควบคุมตารางและสเต็ปลูปเกือบจะเหมือนกันทุกประการ การควบคุมตารางเป็นขั้นตอนที่ได้รับการปรับปรุงอย่างเรียบง่ายซึ่งแสดงข้อมูลด้วยรูปลักษณ์ที่เกี่ยวข้องกับตารางในแอปพลิเคชันเดสก์ท็อป
คุณสมบัติของการควบคุมตาราง ABAP
ด้วยการควบคุมตาราง ผู้ใช้สามารถ:
- เลื่อนดูตารางในแนวตั้งและแนวนอน
- ปรับขนาดความกว้างของคอลัมน์อีกครั้ง
- เลื่อนภายในฟิลด์ (เมื่อเนื้อหาฟิลด์กว้างกว่าฟิลด์)
- เลือกแถวหรือคอลัมน์ของตาราง
- จัดลำดับของคอลัมน์ใหม่
- บันทึกการตั้งค่าการแสดงผลปัจจุบันเพื่อใช้ในอนาคต
ตัวควบคุมตารางยังมีฟีเจอร์การจัดรูปแบบพิเศษ (บางรายการเป็นแบบอัตโนมัติ บางรายการไม่บังคับ) ซึ่งทำให้ดูและใช้งานตารางได้ง่ายขึ้น การควบคุมตารางให้ –
- การปรับขนาดตารางอัตโนมัติ (แนวตั้งและแนวนอน) เมื่อผู้ใช้ปรับขนาดหน้าต่าง
- เส้นคั่นระหว่างแถวและระหว่างคอลัมน์ (แนวตั้งและแนวนอน)
- ฟิลด์ส่วนหัวของคอลัมน์สำหรับคอลัมน์ทั้งหมด
โดยทั่วไป คุณสมบัติหลายอย่างที่ได้รับจากการควบคุมตารางจะได้รับการจัดการภายในระบบของคุณ SAPgui ส่วนหน้า ดังนั้นคุณไม่จำเป็นต้องเขียนโปรแกรมด้วยตัวเอง ข้อยกเว้นที่น่าสังเกตเพียงอย่างเดียวคือการเลื่อนแนวตั้ง.
ตัวอย่าง (รายการ TZ60)
รายการธุรกรรม TZ60 ด้านบนแสดงผลลัพธ์ที่เสร็จสมบูรณ์: ตารางที่มีส่วนหัวคอลัมน์ เส้นคั่น และคอลัมน์สำหรับเลือกข้อมูล ความแตกต่างจากลูปขั้นตอนแบบเดิมจะสรุปไว้ด้านล่าง
การควบคุมตารางเทียบกับการวนลูปทีละขั้นตอน
คุณสมบัติอย่างหนึ่งของลูปแบบขั้นบันไดคือ แถวในตารางสามารถแสดงผลได้มากกว่าหนึ่งบรรทัดบนหน้าจอ ในทางกลับกัน แถวของตัวควบคุมตารางจะต้องอยู่ในบรรทัดเดียวเสมอ (แม้ว่าจะสามารถเลื่อนได้ก็ตาม) ตารางด้านล่างเปรียบเทียบองค์ประกอบหน้าจอทั้งสองแบบ
| หลักเกณฑ์ | การควบคุมตาราง | ลูปขั้นตอน |
|---|---|---|
| การจัดวางแถว | หนึ่งแถวหมายถึงหนึ่งบรรทัดบนหน้าจอเสมอ | หนึ่งแถวอาจกินพื้นที่หลายบรรทัดบนหน้าจอ |
| การจัดการคอลัมน์ | ผู้ใช้สามารถปรับขนาด จัดเรียงใหม่ และซ่อนคอลัมน์ได้ | กำหนดรูปแบบคอลัมน์คงที่บนหน้าจอ |
| เลื่อน | การเลื่อนแนวนอนดำเนินการโดยส่วนหน้า การเลื่อนแนวตั้งเขียนโปรแกรมไว้ใน PAI | เขียนโปรแกรมทั้งหมดด้วยโค้ด ABAP |
| การประกาศ | ส่วนควบคุม … พิมพ์ TABLEVIEW โดยใช้ SCREEN | โปรแกรมไม่มีโครงสร้างควบคุม |
| ตั้งค่าการแสดงผล | ผู้ใช้สามารถบันทึกรูปแบบการจัดวางส่วนตัวได้ | ไม่มีบริการ |
เนื่องจากการควบคุมตารางเป็นองค์ประกอบที่ทันสมัย ดังนั้นส่วนที่เหลือของหน้านี้จึงตั้งโปรแกรมให้ควบคุมตารางเป็นหลัก
วิธีการสร้างและตั้งโปรแกรมตัวควบคุมตาราง
การควบคุมตารางจำเป็นต้องมีองค์ประกอบบนหน้าจอ โครงสร้างควบคุมในโปรแกรม และลูปทั้งใน PBO และ PAI โดยหัวข้อย่อยด้านล่างจะเรียงตามลำดับนั้น
การประกาศการควบคุม
ในการจัดการตัวควบคุมตารางในโปรแกรม ABAP คุณต้องประกาศตัวควบคุมในส่วนการประกาศของโปรแกรมสำหรับตัวควบคุมตารางแต่ละรายการโดยใช้คำสั่งต่อไปนี้:
CONTROLS <ctrl> TYPE TABLEVIEW USING SCREEN <scr>
ที่ไหน เป็นชื่อของส่วนควบคุมตารางบนหน้าจอในโปรแกรม ABAP การควบคุมอนุญาตให้โปรแกรม ABAP อ่านคุณลักษณะของการควบคุมตารางและมีอิทธิพลต่อการควบคุม ที่นี่ คือหมายเลขหน้าจอที่โหลดค่าเริ่มต้นของตาราง
การตั้งค่าและการอ่านตำแหน่งเคอร์เซอร์
ตำแหน่งเคอร์เซอร์สำหรับการควบคุมตารางสามารถตั้งค่าได้ดังนี้:
ที่ PBO คุณสามารถตั้งค่าเคอร์เซอร์บนฟิลด์เฉพาะของแถวเฉพาะของตัวควบคุมตารางได้
SET CURSOR FIELD <f> LINE <lin> [OFFSET <off>]
การใช้ออฟเซ็ตเพิ่มเติมที่เป็นตัวเลือก คุณสามารถป้อนออฟเซ็ตของเคอร์เซอร์ในฟิลด์ตามที่อธิบายไว้ในการตั้งค่าตำแหน่งเคอร์เซอร์
ที่ PAI คุณสามารถอ่านตำแหน่งเคอร์เซอร์ปัจจุบันได้
GET CURSOR FIELD <f> LINE <lin> ...
นอกเหนือจากข้อมูลที่ให้ไว้ภายใต้การค้นหาตำแหน่งเคอร์เซอร์แล้ว ให้ทำดังนี้ มีข้อมูลที่แถวของตารางควบคุมเคอร์เซอร์อยู่ คุณยังสามารถใช้
GET CURSOR LINE <lin>.
เพื่อตรวจสอบแถวของตัวควบคุมตาราง คำสั่ง SY-SUBRC ช่วยให้คุณตรวจสอบได้ว่าเคอร์เซอร์อยู่ในแถวใดของตัวควบคุมตารางหรือไม่
อ่านบรรทัดตารางภายในที่เกี่ยวข้อง
สำหรับการรับบรรทัดที่สอดคล้องกันของ ตารางภายใน:
GET CURSOR line <lin>. ind = <table_control>-top_line + <lin> - 1. Read table <itab> index ind.
ตัวแปรระบบ stepl – มีดัชนีบรรทัดตารางปัจจุบันอยู่ในลูป … endloop Loopc – มีจำนวนบรรทัดที่มองเห็นได้ในตาราง
การสร้างตัวควบคุมในหน้าจอ Painter
เพื่อสร้างตัวควบคุมตาราง
- เพิ่มองค์ประกอบควบคุมตารางลงในหน้าจอของคุณ
- ตั้งชื่อให้กับตัวควบคุมตาราง ในโปรแกรม ABAP ให้ประกาศโครงสร้างที่มีชื่อเดียวกัน (CONTROLS) พิมพ์ TABLEVIEW โดยใช้ SCREEN )
- ในการสร้างฟิลด์ ให้ไปที่ฟังก์ชันฟิลด์ของพจนานุกรม/โปรแกรม
- ป้อนชื่อของโครงสร้างที่มีฟิลด์ที่คุณต้องการ (ถ้าคุณต้องการให้มันเลือกจากพจนานุกรมของโปรแกรมของคุณให้คลิกปุ่ม puh ที่เกี่ยวข้อง)
- ในรายการเขตข้อมูล ให้เลือกเขตข้อมูลที่คุณต้องการแล้วเลือกตกลง
- คลิกในพื้นที่ควบคุมตาราง
หากคุณต้องการคอลัมน์การเลือก ให้ทำเครื่องหมายในช่องกาเครื่องหมายที่เหมาะสมในแอตทริบิวต์และตั้งชื่อให้ สร้างฟิลด์ใน โปรแกรมเอแบค.
การเขียนโค้ดลูป PBO และ PAI
ใน PBO คุณควรมีข้อความ
LOOP at <itab> USING CONTROL <cntrl_name>. ENDLOOP.
ใน PAI ที่คุณควรมี
LOOP at <itab>. ENDLOOP.
การถ่ายโอนข้อมูลระหว่างหน้าจอและตารางภายในเกิดขึ้นภายในลูป เมื่อคุณเติมข้อมูลลงในตารางภายใน ให้ใช้คำสั่ง DESCRIBE TABLE LINEเอส -lines ใช้สำหรับจัดเก็บจำนวนบรรทัดทั้งหมดในตัวควบคุม คำสั่ง FIELD สามารถใช้เพื่อควบคุมเวลาที่การถ่ายโอนข้อมูลเกิดขึ้น
⚠️คำเตือน: ลูป PBO ต้องตั้งชื่อคอนโทรลด้วยคำสั่ง USING CONTROL หากไม่มีคำสั่งนี้ คอนโทรลจะไม่ทราบจำนวนบรรทัด และการเลื่อนแนวตั้งจะไม่ทำงาน
การเปลี่ยนคุณสมบัติของคอลัมน์ขณะรันไทม์
หากต้องการเปลี่ยนคุณลักษณะของแต่ละเซลล์ ให้เปลี่ยนตาราง SCREEN ใน PBO เป็นการชั่วคราว คุณสามารถเปลี่ยนคุณสมบัติของโครงสร้างที่สร้างขึ้นโดยคำสั่ง CONTROLS
<cntrl>-fixed_cols etc are the attributes of the control <cntrl>-cols-index etc are the attributes of the columns. <cntrl>-cols-screen-invisible etc are the screen attributes of each column.
💡 เคล็ดลับ: วนซ้ำ -ใช้คำสั่ง -cols ใน PBO เพื่อซ่อนหรือปกป้องคอลัมน์สำหรับบทบาทผู้ใช้ที่กำหนด แทนที่จะสร้างหน้าจอที่สอง

