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