SAP ABAP - Nhà khai thác
ABAP cung cấp một tập hợp các toán tử phong phú để thao tác với các biến. Tất cả các toán tử ABAP được phân thành bốn loại:
- Toán tử số học
- Toán tử so sánh
- Toán tử Bitwise
- Toán tử chuỗi ký tự
Toán tử số học
Các toán tử số học được sử dụng trong các biểu thức toán học giống như cách chúng được sử dụng trong đại số. Danh sách sau đây mô tả các toán tử số học. Giả sử biến số nguyên A giữ 20 và biến B giữ 40.
Không. | Toán tử số học & Mô tả |
---|---|
1 | + (Addition) Thêm giá trị vào hai bên của toán tử. Ví dụ: A + B sẽ cho 60. |
2 | − (Subtraction) Trừ toán hạng bên phải khỏi toán hạng bên trái. Ví dụ: A - B sẽ cho -20. |
3 | * (Multiplication) Nhân các giá trị ở hai bên của toán tử. Ví dụ: A * B sẽ cho 800. |
4 | / (Division) Chia toán hạng bên trái cho toán hạng bên phải. Ví dụ: B / A sẽ cho 2. |
5 | MOD (Modulus) Chia toán hạng bên trái cho toán hạng bên phải và trả về phần còn lại. Ví dụ: B MOD A sẽ cho 0. |
Thí dụ
REPORT YS_SEP_08.
DATA: A TYPE I VALUE 150,
B TYPE I VALUE 50,
Result TYPE I.
Result = A / B.
WRITE / Result.
Đoạn mã trên tạo ra kết quả sau:
3
Toán tử so sánh
Hãy thảo luận về các loại toán tử so sánh khác nhau cho các toán hạng khác nhau.
Không. | Toán tử so sánh & Mô tả |
---|---|
1 | = (equality test). Alternate form is EQ. Kiểm tra xem giá trị của hai toán hạng có bằng nhau hay không, nếu có thì điều kiện trở thành true. Ví dụ (A = B) không đúng. |
2 | <> (Inequality test). Alternate form is NE. Kiểm tra xem giá trị của hai toán hạng có bằng nhau hay không. Nếu các giá trị không bằng nhau thì điều kiện trở thành true. Ví dụ (A <> B) là đúng. |
3 | > (Greater than test). Alternate form is GT. Kiểm tra xem giá trị của toán hạng bên trái có lớn hơn giá trị của toán hạng bên phải hay không. Nếu có thì điều kiện trở thành đúng. Ví dụ (A> B) không đúng. |
4 | < (Less than test). Alternate form is LT. Kiểm tra xem giá trị của toán hạng bên trái có nhỏ hơn giá trị của toán hạng bên phải hay không. Nếu có, thì điều kiện trở thành true. Ví dụ (A <B) là đúng. |
5 | >= (Greater than or equals) Alternate form is GE. Kiểm tra xem giá trị của toán hạng bên trái có lớn hơn hoặc bằng giá trị của toán hạng bên phải hay không. Nếu có, thì điều kiện trở thành true. Ví dụ (A> = B) là không đúng. |
6 | <= (Less than or equals test). Alternate form is LE. Kiểm tra nếu giá trị của toán hạng bên trái nhỏ hơn hoặc bằng giá trị của toán hạng bên phải. Nếu có, thì điều kiện trở thành true. Ví dụ (A <= B) là đúng. |
7 | a1 BETWEEN a2 AND a3 (Interval test) Kiểm tra xem a1 có nằm trong khoảng giữa a2 và a3 (bao gồm cả). Nếu có, thì điều kiện trở thành true. Ví dụ (A GIỮA B VÀ C) là đúng. |
số 8 | IS INITIAL Điều kiện trở thành true nếu nội dung của biến không thay đổi và nó đã được tự động gán giá trị ban đầu. Ví dụ (A IS INITIAL) không đúng |
9 | IS NOT INITIAL Điều kiện trở thành true nếu nội dung của biến đã thay đổi. Ví dụ (A IS NOT INITIAL) là true. |
Note- Nếu kiểu dữ liệu hoặc độ dài của các biến không khớp thì chuyển đổi tự động được thực hiện. Điều chỉnh kiểu tự động được thực hiện cho một hoặc cả hai giá trị trong khi so sánh hai giá trị của các kiểu dữ liệu khác nhau. Kiểu chuyển đổi được quyết định bởi kiểu dữ liệu và thứ tự ưu tiên của kiểu dữ liệu.
Sau đây là thứ tự ưu tiên -
Nếu một trường thuộc loại I, thì trường kia được chuyển đổi thành loại I.
Nếu một trường thuộc loại P, thì trường kia được chuyển đổi thành loại P.
Nếu một trường thuộc loại D, thì trường kia được chuyển đổi thành loại D. Nhưng loại C và N không được chuyển đổi và chúng được so sánh trực tiếp. Tương tự là trường hợp của loại T.
Nếu một trường thuộc loại N và trường kia thuộc loại C hoặc X, thì cả hai trường đều được chuyển đổi thành loại P.
Nếu một trường thuộc loại C và trường kia thuộc loại X, thì loại X được chuyển đổi thành loại C.
ví dụ 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
Đoạn mã trên tạo ra kết quả sau:
A is less than B
Ví dụ 2
REPORT YS_SEP_08.
DATA: A TYPE I.
IF A IS INITIAL.
WRITE: / 'A is assigned'.
ENDIF.
Đoạn mã trên tạo ra kết quả sau:
A is assigned.
Toán tử Bitwise
ABAP cũng cung cấp một loạt các toán tử logic bit có thể được sử dụng để xây dựng các biểu thức đại số Boolean. Các toán tử bitwise có thể được kết hợp trong các biểu thức phức tạp bằng cách sử dụng dấu ngoặc đơn, v.v.
Không. | Toán tử Bitwise & Mô tả |
---|---|
1 | BIT-NOT Toán tử đơn phân lật tất cả các bit trong một số thập lục phân thành giá trị đối diện. Ví dụ: áp dụng toán tử này cho một số thập lục phân có giá trị mức bit 10101010 (ví dụ: 'AA') sẽ cho ra 01010101. |
2 | BIT-AND Toán tử nhị phân này so sánh từng trường từng bit bằng cách sử dụng toán tử Boolean AND. |
3 | BIT-XOR Toán tử nhị phân so sánh từng trường từng bit bằng toán tử Boolean XOR (OR độc quyền). |
4 | BIT-OR Toán tử nhị phân so sánh từng trường từng bit bằng cách sử dụng toán tử Boolean OR. |
Ví dụ, sau đây là bảng sự thật hiển thị các giá trị được tạo ra khi áp dụng toán tử Boolean AND, OR hoặc XOR đối với hai giá trị bit có trong trường A và trường B.
Trường A | Trường B | VÀ | HOẶC LÀ | XOR |
---|---|---|---|---|
0 | 0 | 0 | 0 | 0 |
0 | 1 | 0 | 1 | 1 |
1 | 0 | 0 | 1 | 1 |
1 | 1 | 1 | 1 | 0 |
Toán tử chuỗi ký tự
Sau đây là danh sách các toán tử chuỗi ký tự:
Không. | Toán tử và mô tả chuỗi ký tự |
---|---|
1 | CO (Contains Only) Kiểm tra xem A có chỉ bao gồm các ký tự trong B. |
2 | CN (Not Contains ONLY) Kiểm tra xem A có chứa các ký tự không có trong B. |
3 | CA (Contains ANY) Kiểm tra xem A có chứa ít nhất một ký tự của B. |
4 | NA (NOT Contains Any) Kiểm tra xem A không chứa ký tự nào của B. |
5 | CS (Contains a String) Kiểm tra xem A có chứa chuỗi ký tự B hay không. |
6 | NS (NOT Contains a String) Kiểm tra xem A không chứa chuỗi ký tự B. |
7 | CP (Contains a Pattern) Nó kiểm tra xem A có chứa mẫu trong B. không. |
số 8 | NP (NOT Contains a Pattern) Nó kiểm tra xem A không chứa mẫu trong B. |
Thí dụ
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.
Đoạn mã trên tạo ra kết quả sau:
P contains at least one character of Q.