SAP การควบคุมตาราง ABAP พร้อมตัวอย่าง
ตัวควบคุมตารางและลูปขั้นตอนคือออบเจ็กต์สำหรับการแสดงตารางบนหน้าจอที่คุณเพิ่มไปยังหน้าจอในหน้าจอ Painter.
จากมุมมองของการเขียนโปรแกรม การควบคุมตารางและสเต็ปลูปเกือบจะเหมือนกันทุกประการ การควบคุมตารางเป็นขั้นตอนที่ได้รับการปรับปรุงอย่างเรียบง่ายซึ่งแสดงข้อมูลด้วยรูปลักษณ์ที่เกี่ยวข้องกับตารางในแอปพลิเคชันเดสก์ท็อป
คุณสมบัติของการควบคุมตาราง ABAP
ด้วยการควบคุมตาราง ผู้ใช้สามารถ:
- เลื่อนดูตารางในแนวตั้งและแนวนอน
- ปรับขนาดความกว้างของคอลัมน์อีกครั้ง
- เลื่อนภายในฟิลด์ (เมื่อเนื้อหาฟิลด์กว้างกว่าฟิลด์)
- เลือกแถวหรือคอลัมน์ของตาราง
- จัดลำดับของคอลัมน์ใหม่
- บันทึกการตั้งค่าการแสดงผลปัจจุบันเพื่อใช้ในอนาคต
ตัวควบคุมตารางยังมีฟีเจอร์การจัดรูปแบบพิเศษ (บางรายการเป็นแบบอัตโนมัติ บางรายการไม่บังคับ) ซึ่งทำให้ดูและใช้งานตารางได้ง่ายขึ้น การควบคุมตารางให้ –
- การปรับขนาดตารางอัตโนมัติ (แนวตั้งและแนวนอน) เมื่อผู้ใช้ปรับขนาดหน้าต่าง
- เส้นคั่นระหว่างแถวและระหว่างคอลัมน์ (แนวตั้งและแนวนอน)
- ฟิลด์ส่วนหัวของคอลัมน์สำหรับคอลัมน์ทั้งหมด
คุณลักษณะหนึ่งของลูปแบบขั้นคือแถวในตารางสามารถขยายได้มากกว่าหนึ่งบรรทัดบนหน้าจอ ในทางกลับกัน แถวของตัวควบคุมตารางจะต้องอยู่ในบรรทัดเดียวเสมอ (แม้ว่าจะสามารถเลื่อนได้ก็ตาม)
โดยทั่วไป คุณสมบัติหลายอย่างที่ได้รับจากการควบคุมตารางจะได้รับการจัดการภายในระบบของคุณ SAPgui ส่วนหน้า ดังนั้นคุณไม่จำเป็นต้องเขียนโปรแกรมด้วยตัวเอง ข้อยกเว้นที่น่าสังเกตเพียงอย่างเดียวคือการเลื่อนแนวตั้ง.
ตัวอย่าง (รายการ TZ60)
วากยสัมพันธ์
ในการจัดการตัวควบคุมตารางในโปรแกรม 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 – มีจำนวนบรรทัดที่มองเห็นได้ในตาราง
เพื่อสร้างตัวควบคุมตาราง
1.เพิ่มองค์ประกอบการควบคุมตารางลงในหน้าจอของคุณ
2.ตั้งชื่อให้กับตัวควบคุมตาราง ในโปรแกรม ABAP จะประกาศโครงสร้างที่เหมือนกัน ( การควบคุม พิมพ์ TABLEVIEW โดยใช้หน้าจอ -
3.หากต้องการสร้างฟิลด์ ให้ไปที่ฟังก์ชันฟิลด์ Dict./Program
- ป้อนชื่อของโครงสร้างที่มีฟิลด์ที่คุณต้องการ (ถ้าคุณต้องการให้มันเลือกจากพจนานุกรมของโปรแกรมของคุณให้คลิกปุ่ม puh ที่เกี่ยวข้อง)
- ในรายการเขตข้อมูล ให้เลือกเขตข้อมูลที่คุณต้องการแล้วเลือกตกลง
- คลิกในพื้นที่ควบคุมตาราง
หากคุณต้องการคอลัมน์การเลือก ให้ทำเครื่องหมายในช่องกาเครื่องหมายที่เหมาะสมในแอตทริบิวต์และตั้งชื่อให้ สร้างฟิลด์ใน โปรแกรมเอแบค.
ใน PBO คุณควรมีข้อความ
LOOP at <itab> USING CONTROL <cntrl_name>. ENDLOOP.
ใน PAI ที่คุณควรมี
LOOP at <itab>. ENDLOOP.
ภายในลูปที่การถ่ายโอนข้อมูลเกิดขึ้นระหว่างหน้าจอและตารางภายในเมื่อคุณเติมตารางภายในให้ใช้ DESCRIBE TABLE เส้น -lines เพื่อจัดเก็บจำนวนบรรทัดทั้งหมดในการควบคุม คำสั่ง FIELD สามารถใช้เพื่อควบคุมเมื่อการถ่ายโอนข้อมูลเกิดขึ้น
หากต้องการเปลี่ยนคุณลักษณะของแต่ละเซลล์ ให้เปลี่ยนตาราง 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.