SAP การควบคุมตาราง ABAP พร้อมตัวอย่าง

ตัวควบคุมตารางและลูปขั้นตอนคือออบเจ็กต์สำหรับการแสดงตารางบนหน้าจอที่คุณเพิ่มไปยังหน้าจอในหน้าจอ Painter.

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

คุณสมบัติของการควบคุมตาราง ABAP

ด้วยการควบคุมตาราง ผู้ใช้สามารถ:

  • เลื่อนดูตารางในแนวตั้งและแนวนอน
  • ปรับขนาดความกว้างของคอลัมน์อีกครั้ง
  • เลื่อนภายในฟิลด์ (เมื่อเนื้อหาฟิลด์กว้างกว่าฟิลด์)
  • เลือกแถวหรือคอลัมน์ของตาราง
  • จัดลำดับของคอลัมน์ใหม่
  • บันทึกการตั้งค่าการแสดงผลปัจจุบันเพื่อใช้ในอนาคต

ตัวควบคุมตารางยังมีฟีเจอร์การจัดรูปแบบพิเศษ (บางรายการเป็นแบบอัตโนมัติ บางรายการไม่บังคับ) ซึ่งทำให้ดูและใช้งานตารางได้ง่ายขึ้น การควบคุมตารางให้ –

  • การปรับขนาดตารางอัตโนมัติ (แนวตั้งและแนวนอน) เมื่อผู้ใช้ปรับขนาดหน้าต่าง
  • เส้นคั่นระหว่างแถวและระหว่างคอลัมน์ (แนวตั้งและแนวนอน)
  • ฟิลด์ส่วนหัวของคอลัมน์สำหรับคอลัมน์ทั้งหมด

คุณลักษณะหนึ่งของลูปแบบขั้นคือแถวในตารางสามารถขยายได้มากกว่าหนึ่งบรรทัดบนหน้าจอ ในทางกลับกัน แถวของตัวควบคุมตารางจะต้องอยู่ในบรรทัดเดียวเสมอ (แม้ว่าจะสามารถเลื่อนได้ก็ตาม)

โดยทั่วไป คุณสมบัติหลายอย่างที่ได้รับจากการควบคุมตารางจะได้รับการจัดการภายในระบบของคุณ SAPgui ส่วนหน้า ดังนั้นคุณไม่จำเป็นต้องเขียนโปรแกรมด้วยตัวเอง ข้อยกเว้นที่น่าสังเกตเพียงอย่างเดียวคือการเลื่อนแนวตั้ง.

ตัวอย่าง (รายการ TZ60)

SAP การควบคุมตาราง ABAP

วากยสัมพันธ์

ในการจัดการตัวควบคุมตารางในโปรแกรม 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.