ABAP 프로그래밍 기초: 상수 선언 및 연산자 다루기

ABAP 상수

이전 시간에 ABAP 에 대한 변수, 데이터 타입은 정리를 한 적이 있는데 이 내용에 이어 ABAP 에서는 다른 프로그래밍 언어와 같이 값이 변하지 않는 ‘상수’ 를 지정할 수 있다.

상수 선언 방법

상수는 ‘CONSTANTS’ 키워드를 이용해 선언 한다.

CONSTANTS c_pi TYPE p DECIMALS 2 VALUE '3.14'.
ABAP

상수 또한, 다른 키워드 들과 같이 Chain Statement (:) 를 지원해 한번의 키워드 사용으로 여러 개의 상수를 선언할 수 있다.

CONSTANTS: c_pi TYPE p DECIMALS 2 VALUE '3.14',
           c_e  TYPE p DECIMALS 2 VALUE '2.72'.
ABAP

이렇게 선언 한 상수를 변경하고 활성화를 하면 ‘The field “상수명” cannot be modified.’ 오류가 발생 한다.

'The field "상수명" cannot be modified.' 오류 메세지 출력

상수를 사용하는 이유

위의 변수 명에서도 추측이 가능하듯, 특정 값 자체를 외우는 것 보단 키워드를 외우는 것이 편할 때 (위의 경우 원주율) 사용하면 편리하게 사용할 수 있다.

아니면, 계속 반복 적으로 사용 될 값을 상수로 정해 두어 프로그램 계산 식 등에 사용하면, 이후 값이 변경 되어야 할 때 모든 코드를 변경할 필요 없이 상수만 변경하면 된다.

ABAP 연산자

ABAP 에서도 데이터를 연산(or 계산)하기 위한 여러 연산자가 지원된다. 기본적인 연산자는 다음과 같다.

산술 연산자:

  • + : 더하기
  • – : 빼기
  • * : 곱하기
  • / : 나누기

참고로 산술 연산자는 Number 가 아닌 타입의 변수 끼리 연산 했을 때 Dump 에러가 발생한다.

산술 연산자 오류 발생 샘플 코드:

DATA: lv_data1 TYPE C LENGTH 5,
      lv_data2 TYPE C LENGTH 5.

lv_data1 = 'a'.
lv_data2 = 'b'.

lv_data1 = lv_data1 + lv_data2.

write lv_data1.
ABAP
Dump 표시 결과

비교 연산자:

설명을 만족하면 true 를 반환 한다.

ABAP은 기호로 된 비교 연산자를 영어 약자로도 사용할 수 있다. 괄호 안의 약어는 앞의 기호와 같은 역할을 한다.

  • = : 두 값이 동일할 때 (EQ, Equal)
  • <> : 두 값이 서로 다를 때 (NE, Not Equal)
  • a < b : a가 b 보다 작을 때 (LT, Less Than)
  • a > b : a가 b 보다 클 때 (GT, Greater Than)
  • a <= b : a가 b 보다 작거나 같을 때 (LE, Less Than or Equal)
  • a >= b : a가 b 보다 크거나 같을 때 (GE, Greater Than or Equal)

논리 연산자:

설명을 만족하면 true 를 반환 한다.

  • AND : 두 조건이 모두 true 일 때
  • OR : 두 조건 중 하나라도 true 일 때
  • NOT : 결과를 반전 (예: true 였으면 false 로 바꾸어줌)

샘플 코드:

아래 코드는 ABAP 의 조건문을 이용해 실제 true 와 false 중 무엇을 출력 하는지 테스트 해본 코드 이다.

DATA: lv_data1 TYPE n LENGTH 5,
      lv_data2 TYPE n LENGTH 5.

lv_data1 = '10'.
lv_data2 = '5'.

IF lv_data1 = lv_data2.
  WRITE '조건 만족'.
ELSE.
  WRITE '조건 불만족'. "출력
ENDIF.

IF lv_data1 <> lv_data2.
  WRITE '조건 만족'. "출력
ELSE.
  WRITE '조건 불만족'.
ENDIF.
ABAP
연산자 샘플코드 실행 결과
0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x
목차
위로 스크롤