SAP ABAP - ตัวดำเนินการ
ABAP มีชุดตัวดำเนินการที่หลากหลายเพื่อจัดการกับตัวแปร ตัวดำเนินการ ABAP ทั้งหมดแบ่งออกเป็นสี่ประเภท -
- ตัวดำเนินการเลขคณิต
- ตัวดำเนินการเปรียบเทียบ
- ตัวดำเนินการ Bitwise
- ตัวดำเนินการสตริงอักขระ
ตัวดำเนินการเลขคณิต
ตัวดำเนินการทางคณิตศาสตร์ใช้ในนิพจน์ทางคณิตศาสตร์ในลักษณะเดียวกับที่ใช้ในพีชคณิต รายการต่อไปนี้อธิบายตัวดำเนินการทางคณิตศาสตร์ สมมติตัวแปรจำนวนเต็ม A ถือ 20 และตัวแปร B ถือ 40
ส. | ตัวดำเนินการทางคณิตศาสตร์และคำอธิบาย |
---|---|
1 | + (Addition) เพิ่มค่าที่ด้านใดด้านหนึ่งของตัวดำเนินการ ตัวอย่าง: A + B จะให้ 60 |
2 | − (Subtraction) ลบตัวถูกดำเนินการทางขวามือออกจากตัวถูกดำเนินการด้านซ้าย ตัวอย่าง: A - B จะให้ -20 |
3 | * (Multiplication) คูณค่าที่ด้านใดด้านหนึ่งของตัวดำเนินการ ตัวอย่าง: A * B จะให้ 800 |
4 | / (Division) แบ่งตัวถูกดำเนินการทางซ้ายด้วยตัวถูกดำเนินการทางขวามือ ตัวอย่าง: B / A จะให้ 2 |
5 | MOD (Modulus) หารตัวถูกดำเนินการทางซ้ายด้วยตัวถูกดำเนินการด้านขวาและส่งกลับส่วนที่เหลือ ตัวอย่าง: B MOD A จะให้ 0 |
ตัวอย่าง
REPORT YS_SEP_08.
DATA: A TYPE I VALUE 150,
B TYPE I VALUE 50,
Result TYPE I.
Result = A / B.
WRITE / Result.
รหัสด้านบนสร้างผลลัพธ์ต่อไปนี้ -
3
ตัวดำเนินการเปรียบเทียบ
เรามาดูตัวดำเนินการเปรียบเทียบประเภทต่างๆสำหรับตัวถูกดำเนินการที่แตกต่างกัน
ส. | ตัวดำเนินการเปรียบเทียบและคำอธิบาย |
---|---|
1 | = (equality test). Alternate form is EQ. ตรวจสอบว่าค่าของตัวถูกดำเนินการสองค่าเท่ากันหรือไม่ถ้าใช่เงื่อนไขจะกลายเป็นจริง ตัวอย่าง (A = B) ไม่เป็นความจริง |
2 | <> (Inequality test). Alternate form is NE. ตรวจสอบว่าค่าของตัวถูกดำเนินการสองตัวเท่ากันหรือไม่ หากค่าไม่เท่ากันเงื่อนไขจะกลายเป็นจริง ตัวอย่าง (A <> B) เป็นจริง |
3 | > (Greater than test). Alternate form is GT. ตรวจสอบว่าค่าของตัวถูกดำเนินการด้านซ้ายมากกว่าค่าของตัวถูกดำเนินการด้านขวาหรือไม่ ถ้าใช่เงื่อนไขจะกลายเป็นจริง ตัวอย่าง (A> B) ไม่เป็นความจริง |
4 | < (Less than test). Alternate form is LT. ตรวจสอบว่าค่าของตัวถูกดำเนินการด้านซ้ายน้อยกว่าค่าของตัวถูกดำเนินการด้านขวาหรือไม่ ถ้าใช่เงื่อนไขจะกลายเป็นจริง ตัวอย่าง (A <B) เป็นจริง |
5 | >= (Greater than or equals) Alternate form is GE. ตรวจสอบว่าค่าของตัวถูกดำเนินการด้านซ้ายมากกว่าหรือเท่ากับค่าของโอเปอแรนด์ด้านขวาหรือไม่ ถ้าใช่เงื่อนไขจะกลายเป็นจริง ตัวอย่าง (A> = B) ไม่เป็นความจริง |
6 | <= (Less than or equals test). Alternate form is LE. ตรวจสอบว่าค่าของตัวถูกดำเนินการด้านซ้ายน้อยกว่าหรือเท่ากับค่าของตัวถูกดำเนินการด้านขวาหรือไม่ ถ้าใช่เงื่อนไขจะกลายเป็นจริง ตัวอย่าง (A <= B) เป็นจริง |
7 | a1 BETWEEN a2 AND a3 (Interval test) ตรวจสอบว่า a1 อยู่ระหว่าง a2 และ a3 (รวม) หรือไม่ ถ้าใช่เงื่อนไขนั้นจะกลายเป็นจริง ตัวอย่าง (ระหว่าง B และ C) เป็นจริง |
8 | IS INITIAL เงื่อนไขจะกลายเป็นจริงหากเนื้อหาของตัวแปรไม่มีการเปลี่ยนแปลงและได้รับการกำหนดค่าเริ่มต้นโดยอัตโนมัติ ตัวอย่าง (A IS INITIAL) ไม่เป็นความจริง |
9 | IS NOT INITIAL เงื่อนไขจะกลายเป็นจริงหากเนื้อหาของตัวแปรมีการเปลี่ยนแปลง ตัวอย่าง (A IS NOT INITIAL) เป็นจริง |
Note- หากประเภทข้อมูลหรือความยาวของตัวแปรไม่ตรงกันระบบจะดำเนินการแปลงอัตโนมัติ การปรับประเภทอัตโนมัติจะดำเนินการสำหรับค่าหนึ่งหรือทั้งสองค่าในขณะที่เปรียบเทียบค่าสองค่าของประเภทข้อมูลที่แตกต่างกัน ประเภทการแปลงจะพิจารณาจากประเภทข้อมูลและลำดับความต้องการของประเภทข้อมูล
ต่อไปนี้เป็นลำดับความชอบ -
หากฟิลด์หนึ่งเป็นประเภท I อีกฟิลด์หนึ่งจะถูกแปลงเป็นประเภท I
ถ้าเขตข้อมูลหนึ่งเป็นประเภท P อีกช่องหนึ่งจะถูกแปลงเป็นประเภท P
ถ้าฟิลด์หนึ่งเป็นประเภท D อีกฟิลด์หนึ่งจะถูกแปลงเป็นประเภท D แต่ประเภท C และ N จะไม่ถูกแปลงและจะถูกเปรียบเทียบโดยตรง ที่คล้ายกันคือกรณีที่มีประเภท T.
ถ้าฟิลด์หนึ่งเป็นประเภท N และอีกฟิลด์เป็นประเภท C หรือ X ฟิลด์ทั้งสองจะถูกแปลงเป็นประเภท P
ถ้าฟิลด์หนึ่งเป็นประเภท C และอีกฟิลด์เป็นประเภท X ประเภท X จะถูกแปลงเป็นประเภท C
ตัวอย่าง 1
REPORT YS_SEP_08.
DATA: A TYPE I VALUE 115,
B TYPE I VALUE 119.
IF A LT B.
WRITE: / 'A is less than B'.
ENDIF
รหัสด้านบนสร้างผลลัพธ์ต่อไปนี้ -
A is less than B
ตัวอย่าง 2
REPORT YS_SEP_08.
DATA: A TYPE I.
IF A IS INITIAL.
WRITE: / 'A is assigned'.
ENDIF.
รหัสด้านบนสร้างผลลัพธ์ต่อไปนี้ -
A is assigned.
ตัวดำเนินการ Bitwise
ABAP ยังมีชุดของตัวดำเนินการเชิงตรรกะแบบบิตที่สามารถใช้เพื่อสร้างนิพจน์พีชคณิตบูลีน ตัวดำเนินการระดับบิตสามารถรวมกันในนิพจน์ที่ซับซ้อนได้โดยใช้วงเล็บเป็นต้น
ส. | ตัวดำเนินการ Bitwise และคำอธิบาย |
---|---|
1 | BIT-NOT ตัวดำเนินการยูนารีที่พลิกบิตทั้งหมดในเลขฐานสิบหกเป็นค่าตรงข้าม ตัวอย่างเช่นการใช้ตัวดำเนินการนี้กับเลขฐานสิบหกที่มีค่าระดับบิต 10101010 (เช่น 'AA') จะให้ 01010101 |
2 | BIT-AND ตัวดำเนินการไบนารีนี้เปรียบเทียบแต่ละฟิลด์ทีละบิตโดยใช้ตัวดำเนินการบูลีน AND |
3 | BIT-XOR ตัวดำเนินการไบนารีที่เปรียบเทียบแต่ละฟิลด์ทีละบิตโดยใช้ตัวดำเนินการ Boolean XOR (เอกสิทธิ์เฉพาะหรือ) |
4 | BIT-OR ตัวดำเนินการไบนารีที่เปรียบเทียบแต่ละฟิลด์ทีละบิตโดยใช้ตัวดำเนินการบูลีน OR |
ตัวอย่างเช่นต่อไปนี้เป็นตารางความจริงที่แสดงค่าที่สร้างขึ้นเมื่อใช้ตัวดำเนินการบูลีน AND, OR หรือ XOR กับค่าบิตสองค่าที่มีอยู่ในฟิลด์ A และฟิลด์ B
ฟิลด์ก | ฟิลด์ B | และ | หรือ | XOR |
---|---|---|---|---|
0 | 0 | 0 | 0 | 0 |
0 | 1 | 0 | 1 | 1 |
1 | 0 | 0 | 1 | 1 |
1 | 1 | 1 | 1 | 0 |
ตัวดำเนินการสตริงอักขระ
ต่อไปนี้เป็นรายการตัวดำเนินการสตริงอักขระ -
ส. | ตัวดำเนินการสตริงอักขระและคำอธิบาย |
---|---|
1 | CO (Contains Only) ตรวจสอบว่า A ประกอบด้วยอักขระใน B หรือไม่ |
2 | CN (Not Contains ONLY) ตรวจสอบว่า A มีอักขระที่ไม่อยู่ใน B หรือไม่ |
3 | CA (Contains ANY) ตรวจสอบว่า A มีอักขระ B อย่างน้อยหนึ่งตัวหรือไม่ |
4 | NA (NOT Contains Any) ตรวจสอบว่า A ไม่มีอักขระของ B หรือไม่ |
5 | CS (Contains a String) ตรวจสอบว่า A มีสตริงอักขระ B หรือไม่ |
6 | NS (NOT Contains a String) ตรวจสอบว่า A ไม่มีสตริงอักขระ B หรือไม่ |
7 | CP (Contains a Pattern) ตรวจสอบว่า A มีรูปแบบใน B หรือไม่ |
8 | NP (NOT Contains a Pattern) ตรวจสอบว่า A ไม่มีรูปแบบใน B หรือไม่ |
ตัวอย่าง
REPORT YS_SEP_08.
DATA: P(10) TYPE C VALUE 'APPLE',
Q(10) TYPE C VALUE 'CHAIR'.
IF P CA Q.
WRITE: / 'P contains at least one character of Q'.
ENDIF.
รหัสด้านบนสร้างผลลัพธ์ต่อไปนี้ -
P contains at least one character of Q.