SAP ABAP - ตัวแปร
ตัวแปรคือชื่อออบเจ็กต์ข้อมูลที่ใช้ในการจัดเก็บค่าภายในพื้นที่หน่วยความจำที่กำหนดของโปรแกรม ตามชื่อที่แนะนำผู้ใช้สามารถเปลี่ยนเนื้อหาของตัวแปรได้โดยใช้คำสั่ง ABAP ตัวแปรแต่ละตัวใน ABAP มีประเภทเฉพาะซึ่งกำหนดขนาดและรูปแบบของหน่วยความจำของตัวแปร ช่วงของค่าที่สามารถเก็บไว้ในหน่วยความจำนั้น และชุดของการดำเนินการที่สามารถนำไปใช้กับตัวแปร
คุณต้องประกาศตัวแปรทั้งหมดก่อนจึงจะใช้ได้ รูปแบบพื้นฐานของการประกาศตัวแปรคือ -
DATA <f> TYPE <type> VALUE <val>.
ที่นี่ <f> ระบุชื่อของตัวแปร ชื่อของตัวแปรมีความยาวได้สูงสุด 30 อักขระ <type> ระบุประเภทของตัวแปร ประเภทข้อมูลใด ๆ ที่มีแอตทริบิวต์ทางเทคนิคที่ระบุอย่างครบถ้วนเรียกว่า <type> <val> ระบุค่าเริ่มต้นของตัวแปร <f> ในกรณีที่คุณกำหนดตัวแปรความยาวคงที่พื้นฐานคำสั่ง DATA จะเติมค่าของตัวแปรโดยอัตโนมัติด้วยค่าเริ่มต้นเฉพาะประเภท ค่าอื่น ๆ ที่เป็นไปได้สำหรับ <val> อาจเป็นตัวอักษรค่าคงที่หรือประโยคที่ชัดเจนเช่น Is INITIAL
ต่อไปนี้เป็นตัวอย่างที่ถูกต้องของการประกาศตัวแปร
DATA d1(2) TYPE C.
DATA d2 LIKE d1.
DATA minimum_value TYPE I VALUE 10.
ในข้อมูลโค้ดด้านบน d1 เป็นตัวแปรประเภท C, d2 เป็นตัวแปรประเภท d1 และค่าต่ำสุดเป็นตัวแปรของจำนวนเต็ม ABAP ประเภท I
บทนี้จะอธิบายประเภทตัวแปรต่างๆที่มีอยู่ใน ABAP มีตัวแปรสามชนิดใน ABAP -
- ตัวแปรคงที่
- ตัวแปรอ้างอิง
- ตัวแปรของระบบ
ตัวแปรคงที่
ตัวแปรคงถูกประกาศในรูทีนย่อยโมดูลฟังก์ชันและวิธีการแบบคงที่
อายุการใช้งานเชื่อมโยงกับบริบทของการประกาศ
ด้วยคำสั่ง 'CLASS-DATA' คุณสามารถประกาศตัวแปรภายในคลาสได้
คำสั่ง 'PARAMETERS' สามารถใช้เพื่อประกาศอ็อบเจ็กต์ข้อมูลพื้นฐานที่เชื่อมโยงกับฟิลด์อินพุตบนหน้าจอการเลือก
คุณยังสามารถประกาศตารางภายในที่เชื่อมโยงกับช่องป้อนข้อมูลบนหน้าจอการเลือกได้โดยใช้คำสั่ง 'SELECT-OPTIONS'
ต่อไปนี้เป็นหลักการที่ใช้ในการตั้งชื่อตัวแปร -
คุณไม่สามารถใช้อักขระพิเศษเช่น "t" และ "," เพื่อตั้งชื่อตัวแปร
ไม่สามารถเปลี่ยนชื่อของออบเจ็กต์ข้อมูลที่กำหนดไว้ล่วงหน้าได้
ชื่อของตัวแปรต้องไม่เหมือนกับคีย์เวิร์ดหรืออนุประโยค ABAP ใด ๆ
ชื่อของตัวแปรต้องสื่อความหมายของตัวแปรโดยไม่จำเป็นต้องแสดงความคิดเห็นเพิ่มเติม
ยัติภังค์สงวนไว้เพื่อแสดงส่วนประกอบของโครงสร้าง ดังนั้นคุณควรหลีกเลี่ยงยัติภังค์ในชื่อตัวแปร
อักขระขีดล่างสามารถใช้เพื่อแยกคำประสม
โปรแกรมนี้แสดงวิธีการประกาศตัวแปรโดยใช้คำสั่ง PARAMETERS -
REPORT ZTest123_01.
PARAMETERS: NAME(10) TYPE C,
CLASS TYPE I,
SCORE TYPE P DECIMALS 2,
CONNECT TYPE MARA-MATNR.
ในที่นี้ NAME แสดงถึงพารามิเตอร์ 10 อักขระ CLASS ระบุพารามิเตอร์ของประเภทจำนวนเต็มโดยมีขนาดเริ่มต้นเป็นไบต์ SCORE แสดงถึงพารามิเตอร์ประเภทแพ็กเกจที่มีค่าสูงสุดสองตำแหน่งทศนิยมและ CONNECT หมายถึงประเภท MARA-MATNF ของ ABAP Dictionary .
รหัสด้านบนสร้างผลลัพธ์ต่อไปนี้ -
ตัวแปรอ้างอิง
ไวยากรณ์สำหรับการประกาศตัวแปรอ้างอิงคือ -
DATA <ref> TYPE REF TO <type> VALUE IS INITIAL.
REF TO นอกจากนี้ยังประกาศตัวแปรอ้างอิงอ้างอิง
ข้อกำหนดหลัง REF TO ระบุประเภทคงที่ของตัวแปรอ้างอิง
ประเภทคงที่ จำกัด ชุดของวัตถุที่ <ref> สามารถอ้างถึงได้
ตัวแปรอ้างอิงชนิดไดนามิกคือชนิดข้อมูลหรือคลาสที่อ้างอิงอยู่ในปัจจุบัน
ประเภทคงที่มักจะเป็นแบบทั่วไปมากกว่าหรือเหมือนกับชนิดไดนามิก
การเพิ่ม TYPE ใช้เพื่อสร้างประเภทการอ้างอิงที่ถูกผูกไว้และเป็นค่าเริ่มต้นและสามารถระบุได้เฉพาะ IS INITIAL หลังจากการเพิ่ม VALUE
ตัวอย่าง
CLASS C1 DEFINITION.
PUBLIC SECTION.
DATA Bl TYPE I VALUE 1.
ENDCLASS. DATA: Oref TYPE REF TO C1 ,
Dref1 LIKE REF TO Oref,
Dref2 TYPE REF TO I .
CREATE OBJECT Oref.
GET REFERENCE OF Oref INTO Dref1.
CREATE DATA Dref2.
Dref2→* = Dref1→*→Bl.
ในข้อมูลโค้ดด้านบนจะมีการประกาศ Oref อ้างอิงออบเจ็กต์และตัวแปรอ้างอิงข้อมูลสองตัวแปร Dref1 และ Dref2
ตัวแปรอ้างอิงข้อมูลทั้งสองถูกพิมพ์เต็มและสามารถยกเลิกการอ้างอิงได้โดยใช้ตัวดำเนินการ dereferencing → * ที่ตำแหน่งตัวถูกดำเนินการ
ตัวแปรของระบบ
ตัวแปรระบบ ABAP สามารถเข้าถึงได้จากโปรแกรม ABAP ทั้งหมด
ฟิลด์เหล่านี้ถูกเติมเต็มโดยสภาพแวดล้อมรันไทม์
ค่าในฟิลด์เหล่านี้ระบุสถานะของระบบ ณ ช่วงเวลาใดเวลาหนึ่ง
คุณสามารถค้นหารายการตัวแปรระบบทั้งหมดได้ในตาราง SYST ใน SAP
แต่ละช่องของโครงสร้าง SYST สามารถเข้าถึงได้โดยใช้“ SYST-” หรือ“ SY-”
ตัวอย่าง
REPORT Z_Test123_01.
WRITE:/'SY-ABCDE', SY-ABCDE,
/'SY-DATUM', SY-DATUM,
/'SY-DBSYS', SY-DBSYS,
/'SY-HOST ', SY-HOST,
/'SY-LANGU', SY-LANGU,
/'SY-MANDT', SY-MANDT,
/'SY-OPSYS', SY-OPSYS,
/'SY-SAPRL', SY-SAPRL,
/'SY-SYSID', SY-SYSID,
/'SY-TCODE', SY-TCODE,
/'SY-UNAME', SY-UNAME,
/'SY-UZEIT', SY-UZEIT.
รหัสด้านบนสร้างผลลัพธ์ต่อไปนี้ -
SY-ABCDE ABCDEFGHIJKLMNOPQRSTUVWXYZ
SY-DATUM 12.09.2015
SY-DBSYS ORACLE
SY-HOST sapserver
SY-LANGU EN
SY-MANDT 800
SY-OPSYS Windows NT
SY-SAPRL 700
SY-SYSID DMO
SY-TCODE SE38
SY-UNAME SAPUSER
SY-UZEIT 14:25:48