SAP ABAP 연산자 Operator – 산술/비교/스트링

SAP ABAP 산술, 비교 연산자는 ABAP 프로그램에서 데이터의 작업 및 조작, 비교를 수행하는데 사용이 됩니다.

즉, 수학적 계산이나, 값 비교, 문자열 연산 등을 처리하고자 할 때 사용하게 되는데요, 연산자를 사용해서 데이터 유효성 검사라던지, 조건부 실행, 데이터 조작 등에 유용하게 사용됩니다.

SAP ABAP 연산자

ABAP 산술 연산자 Arithmetic Operators

보는바와 같이 명시적으로 단순합니다. +, -, *, / ….

덧셈-addition(+)

더하기 연산자는 두 개 혹은 그 이상의 값을 더하여 그 결과를 리턴합니다.

5+6 = 11

뺄셈-subtraction(-)

빼기 연산자는 먼저 기술된 값에서 그 이후 기술된 값을 빼서 그 결과를 리턴합니다.

100 – 50 = 50

곱셈-multiplication(**)

곱하기 연산자는 두 개 혹은 그 이상의 숫자를 곱해서 그 결과를 리턴합니다.

4 * 7 = 28

나누셈-division(/)

나누기 연산자는 먼저 기술된 값을 이후 기술된 값으로 나누어 그 결과를 리턴합니다.

15 / 3 = 5

나머지-Modulus(MOD)

나머지 연산자는 먼저 기술된 값을 이후 기술된 값으로 나누되 그 결과의 남은 값을 리턴합니다.

10 MOD 3 = 1
15 MOD 4 = 3

SAP 비교 연산자(Comparison Operators)

두 값을 비교하기 위한 연산자로서, ==, >=, <=, <> 기호 형태 뿐 아니라. EQ, NE, GT, GE, LE 등의 Shorthand 형태로도 제공합니다.

모든 Comparision Operator의 결과는 True, False 값으로 리턴하게 됩니다.

=, EQ

두 값이 같은지 비교합니다.

DATA : LV_VALUE1 TYPE I VALUE 10.
DATA : LV_VALUE2 TYPE I VALUE 5.

IF LV_VALUE1 = LV_VALUE2.

ENDIF.

IF LV_VALUE1 EQ LV_VALUE2.

ENDIF.

<>, NE

두 값이 같지 않는 경우, True, 같은 경우 False를 리턴합니다.

IF LV_VALUE1 <> LV_VALUE2.

ENDIF.

IF LV_VALUE1 NE LV_VALUE2.

ENDIF.

큰 값 (>)

먼저 기술 된 값이 큰 값인 경우 True, 같거나 작은 경우에는 False를 리턴합니다.

IF LV_VALUE1 > LV_VALUE2.

ENDIF.

IF LV_VALUE1 GT LV_VALUE2.

ENDIF.

작은 값(<)

먼저 기술 된 값이 작은 값인 경우 True, 같거나 큰 경우에는 False를 리턴합니다.

IF LV_VALUE1 < LV_VALUE2.

ENDIF.

IF LV_VALUE1 LT LV_VALUE2.

ENDIF.

크거나 같음 (>=)

먼저 기술 된 값이 크거나 같은 값인 경우 True, 작은 경우에는 False를 리턴합니다.

IF LV_VALUE1 >= LV_VALUE2.

ENDIF.

IF LV_VALUE1 GE LV_VALUE2.

ENDIF.

작거나 같음 (<=)

먼저 기술 된 값이 작거나 같은 값인 경우 True, 큰 경우에는 False를 리턴합니다.

IF LV_VALUE1 <= LV_VALUE2.

ENDIF.

IF LV_VALUE1 LE LV_VALUE2.

ENDIF.

ABAP 스트링 연산자(Character String Operators)

 

Contain(CO)

CO는 문자열에 주어진 스트링에 특정 문자열이 포함되어 있는 경우 True, 없으면 False를 리턴합니다.

Contrain Pattern(CP)

CP는 문자열에 주어진 스트링에 특정 문자열 패턴이 일치하는 경우 True, 없으면 False를 리턴합니다.



ATA: TEXT TYPE STRING.

TEXT = 'My ABAP String'.

IF 'ABAP' CO TEXT .
  BREAK-POINT. // True
ELSE.

ENDIF.

IF TEXT CP 'ABAP'.
  BREAK-POINT. //True
ELSE.

ENDIF.

CO와 CP의 차이점

CO의 경우, 간단한 하위 문자열 검색 등에 유용하며, 대소문자를 구분하기 때문에 정확한 텍스트를 찾고자 할 떄 사용합니다.

반면, CP의 경우에는 문자열 내 패턴 매칭을 통해 찾게 되며, 임의의 문자 ‘*’ 혹은 패턴 하나 매칭 ‘+’ 등의 와일드 카드 문자를 사용할 수 있습니다.

따라서 CP의 경우 패턴 매칭의 좀 더 많은 유연성을 제공합니다.

Contains Not only (CN)

CO Operator의 반대 개념입니다. 즉, 해당 텍스트가 없는 경우 true를 반환합니다.

TEXT = 'My ABAP String'.

IF 'ABAP1' CN TEXT .
  BREAK-POINT. "True, ABAP1은 포함되지 않으므로
ELSE.

ENDIF.

Contrain Not Pattern(NP)

연산자(NP)는 문자열에 주어진 스트링에 특정 문자열 패턴이 일치하는 경우 False, 없으면 True를 리턴합니다.

IF TEXT NP 'ABAP'.

ELSE.
  BREAK-POINT. "해당 패턴은 포함되므로 False
ENDIF.

Contains Any(CA)

캐릭터 하나라도 포함되면 True를 반환하고 모두 없으면 false를 반환합니다.

TEXT = 'My ABAP String'.

IF 'XA' CA TEXT .
  BREAK-POINT. " A가 포함되므로
ELSE.

ENDIF.

Contains Not Any(NA)

캐릭터 하나라도 포함되면 False를 반환하고 모두 없으면 true를 반환합니다.

TEXT = 'My ABAP String'.

IF 'XA' NA TEXT .

ELSE.
  BREAK-POINT. " A가 포함되므로
ENDIF.

CONTAINS String(CS)

텍스트 모두가 포함되면 True를 반환하고 그렇지 않으면 False를 변환

TEXT = ‘My ABAP String’.

IF TEXT CS ‘STring’ .
BREAK-POINT. ” String 문장이 포함되고, 대소문자 구분을 하지 않음
ELSE.

ENDIF.

CONTAINS Not String(NS)

텍스트 모두가 포함되면 False를 반환하고 그렇지 않으면 True를 변환

TEXT = 'My ABAP String'.

IF TEXT NS 'STring' .

ELSE.
  BREAK-POINT. " String 문장이 포함되고, 대소문자 구분을 하지 않음
ENDIF.

Bitwise Operators

비트 연산자도 ABAP에서 사용 가능하나, 많이 사용하지 않아 간단히 개념만 정리합니다.

BIT-NOT : 모든 0을 1로 변경하고, 1은 0으로 변경
BIT-AND : “비교하는 각 비트의 값이 1인 경우 1로 리턴하고, 서로 다르면(즉, 하나는 1, 하나는 0) 0을 리턴
BIT-OR : 비교하는 각 비트의 값이 모두 0이면 1을 리턴하고, 그렇지 않은 경우 0을 리턴
BIT-XOR : 비교하는 각 비트의 값이 같으면 0을 리턴하고, 서로 다르면 1을 리턴

일반 CBO 프로그램에서는 거의 보지 못한 BIT 연산자 입니다.

자세한 사항은 SAP ABAP 공식 문서를 참조해보시기 바랍니다.

비트연산자 공식 문서 : https://help.sap.com/doc/abapdocu_751_index_htm/7.51/en-us/abapcompute_bit.htm

이상으로 SAP ABAP에서 사용하는 산술, 비교, 스트링 연산자를 정리해 보았습니다.

함께 보면 좋은 글

ABAP READ TABLE 사용법 및 예제 정리
ABAP Collect 사용법 및 예제
ABAP CONCATENATE 사용법 및 예제 정리