ABAP 연산자(Operators)
ABAP 프로그래밍 언어에서는 다양한 연산자를 사용하여 데이터를 조작하고 연산을 수행합니다. 이러한 연산자들은 다양한 카테고리로 분류될 수 있습니다.
1. 산술 연산자 (Arithmetic Operators)
- + (더하기): 두 피연산자의 합을 계산합니다.
- - (빼기): 첫 번째 피연산자에서 두 번째 피연산자를 뺍니다.
- * (곱하기): 두 피연산자의 곱을 계산합니다.
- / (나누기): 첫 번째 피연산자를 두 번째 피연산자로 나눕니다.
- DIV (정수 나누기): 정수 나눗셈의 몫을 계산합니다.
- MOD (모듈로): 나눗셈의 나머지를 계산합니다.
- ** (지수): 거듭제곱을 계산합니다.
2. 비교 연산자 (Comparison Operators)
- = 또는 EQ (Equal): 두 피연산자가 같은지 비교합니다.
- <> 또는 NE (Not Equal): 두 피연산자가 같지 않은지 비교합니다.
- < 또는 LT (Less Than): 첫 번째 피연산자가 두 번째 피연산자보다 작은지 비교합니다.
- > 또는 GT (Greater Than): 첫 번째 피연산자가 두 번째 피연산자보다 큰지 비교합니다.
- <= 또는 LE (Less than or Equal): 첫 번째 피연산자가 두 번째 피연산자보다 작거나 같은지 비교합니다.
- >= 또는 GE (Greater than or Equal): 첫 번째 피연산자가 두 번째 피연산자보다 크거나 같은지 비교합니다.
3. 문자열 연산자 (String Operators)
- && (연결): 두 문자열을 연결합니다.
- CA (Contains Any): 첫 번째 피연산자가 두 번째 피연산자의 문자 중 하나라도 포함하는지 확인합니다.
- CO (Contains Only): 첫 번째 피연산자가 두 번째 피연산자의 문자만 포함하는지 확인합니다.
- CS (Contains String): 첫 번째 피연산자가 두 번째 피연산자를 부분 문자열로 포함하는지 확인합니다.
- CN (Contains Not): 첫 번째 피연산자가 두 번째 피연산자를 포함하지 않는지 확인합니다.
- NP (No Pattern): 첫 번째 피연산자가 두 번째 피연산자 패턴과 일치하지 않는지 확인합니다.
- CP (Contains Pattern): 첫 번째 피연산자가 두 번째 피연산자 패턴과 일치하는지 확인합니다.
4. 비트 연산자 (Bitwise Operators)
- BIT-AND: 비트별 AND 연산을 수행합니다.
- BIT-OR: 비트별 OR 연산을 수행합니다.
- BIT-XOR: 비트별 XOR(배타적 OR) 연산을 수행합니다.
- BIT-NOT: 비트별 NOT 연산을 수행합니다.
5. 할당 연산자 (Assignment Operators)
- = (할당): 오른쪽 피연산자의 값을 왼쪽 피연산자에 할당합니다.
- += (더하기 후 할당): 오른쪽 피연산자를 왼쪽 피연산자에 더한 후 그 결과를 왼쪽 피연산자에 할당합니다.
- -= (빼기 후 할당): 왼쪽 피연산자에서 오른쪽 피연산자를 뺀 후 그 결과를 왼쪽 피연산자에 할당합니다.
- *= (곱하기 후 할당): 왼쪽 피연산자와 오른쪽 피연산자를 곱한 후 그 결과를 왼쪽 피연산자에 할당합니다.
- /= (나누기 후 할당): 왼쪽 피연산자를 오른쪽 피연산자로 나눈 후 그 결과를 왼쪽 피연산자에 할당합니다.
6. 예시 코드
REPORT z_operator_example.
DATA: lv_num1 TYPE i VALUE 10,
lv_num2 TYPE i VALUE 5,
lv_result TYPE i,
lv_text1 TYPE string VALUE 'ABAP',
lv_text2 TYPE string VALUE 'Operators',
lv_combined TYPE string.
* 산술 연산자
lv_result = lv_num1 + lv_num2. " 결과: 15
WRITE: / '덧셈:', lv_result.
lv_result = lv_num1 - lv_num2. " 결과: 5
WRITE: / '뺄셈:', lv_result.
lv_result = lv_num1 * lv_num2. " 결과: 50
WRITE: / '곱셈:', lv_result.
lv_result = lv_num1 / lv_num2. " 결과: 2
WRITE: / '나눗셈:', lv_result.
lv_result = lv_num1 DIV lv_num2. " 결과: 2
WRITE: / '정수 나눗셈:', lv_result.
lv_result = lv_num1 MOD lv_num2. " 결과: 0
WRITE: / '모듈로:', lv_result.
lv_result = lv_num2 ** 2. " 결과: 25
WRITE: / '거듭제곱:', lv_result.
* 문자열 연산자
lv_combined = lv_text1 && ' ' && lv_text2. " 결과: 'ABAP Operators'
WRITE: / '문자열 결합:', lv_combined.
* 비교 연산자 사용 예 (기호 및 텍스트 형식)
IF lv_num1 > lv_num2. " 또는 IF lv_num1 GT lv_num2.
WRITE: / 'lv_num1이 lv_num2보다 큽니다'.
ENDIF.
IF lv_num1 EQ 10. " 또는 IF lv_num1 = 10.
WRITE: / 'lv_num1은 10과 같습니다'.
ENDIF.
7. 연산자 우선순위
ABAP에서 연산자의 우선순위는 다음과 같습니다 (위에서 아래로 우선순위가 낮아짐):
- 1순위: 괄호 ()
- 2순위: 지수 **
- 3순위: 단항 + 및 -
- 4순위: *, /, DIV, MOD
- 5순위: 이항 + 및 -
- 6순위: =, <>, <, >, <=, >=, EQ, NE, LT, GT, LE, GE
- 7순위: NOT
- 8순위: AND
- 9순위: OR
ABAP 연산자를 효과적으로 활용하면 코드의 가독성과 효율성을 높일 수 있습니다. 특히 복잡한 로직을 구현할 때는 연산자의 우선순위를 고려하여 괄호를 적절히 사용하는 것이 좋습니다.