본문 바로가기

ABAP 프로그래밍 개념/ABAP 프로그래밍 Concept

ABAP Programming Concept : Data Object


Data Objects는 data types로부터 기술적 속성을 이끌고, 프로그램의 작업 데이터를 저장하기 위한 메모리를 점유합니다. 
ABAP Statement는 data object의 이름을 주소로 지정하여 이 컨텐츠에 접근합니다. Data Object는 data types의 인스턴스로서 존재합니다.
각 ABAP Data Object는 Data Type, Field Length, 숫자와 소숫점 자리 등과 같은 기술적 속성의 집합입니다. Data Object는 물리적 메로리 단위로서 ABAP 구문을 통해 작업할 수 있습니다.
모든 Data Objects들은 ABAP 프로그램 안에서 선언되며 프로그램에 로컬적으로(한 프로그램에 해당되어) 작동합니다. 이 말은, ABAP Objects들은 프로그램 메모리에 존재하며 같은 프로그램안에서 접근될 수 있다는 뜻입니다.
시스템에서 중앙통제적으로 Data Object를 정의하는 개념은 SAP에는 존재하지 않습니다.

Data Object는 영구적이지 않습니다. Data Object는 프로그램이 실행될때 동안만 존재합니다. Data Object는 프로그램이 실행하는 동안만큼만 지속됩니다. 프로그램 실행때 생성되고, 프로그램 종료때 파괴됩니다.

Persistent data( db 데이터 혹은 sequential file)를 처리하기 전에, 먼저 데이터를 읽어 Data Object에 넣어줘서, ABAP 구문을 통해 접근해야합니다.
만약, Data Objects의 내용을 프로그램이 끝난 이후에도 남아있게 하기 위해선, data를 persistent form에 저장해야만 합니다. 기술적으로, 프로그램에서 작업 데이터를 저장하는 모든 것을 data object라고 부를 수 있습니다.

아래 내용을 통해 ABAP 프로그램에서 정의할 수 있는 다양한 종류의 Data Object를 배워보도록 합니다.


Literals


Literals는 선언하는 구문을 사용해서 만들어지지 않으며, 따로 이름을 가지지도 않습니다. Literals는 프로그램 소스 코드에 존재하고 있으며, unnamed data objects라고 불리웁니다. 모든 Data Objects 같이, Literals는 고정된 기술적 속성을 가지고 있습니다.

개발자는 Literals의 메모리에 접근하여 실제 그것의 내용을 확인 할 수 없는데, 그 이유는 이것이 Unnamed Data Object이기 때문입니다. 즉, Literals는 재사용가능한 Data Object가 아니며, 그것의 내용은 변화할 수 없습니다. Literals와 다르게, 모든 Data Object들은 named data objects이며 프로그램안에서 정의가 명확합니다.

예를들어, 아래 예시들이 Lieterals 입니다

WRITE 'Hello World'.
WRITE 1234.

Literals에는 두 가지 종류가 있습니다.

Numeric Literals
Numeric Lieterals는 접두가 기호를 가질 수 있는 일련의 숫자(0~9)입니다. 이것은 소수 구분 기호(decimal seperator)를 지원하지 않으며 가수(mantissa)와 지수(exponent)를 지원하지 않습니다.  

예시는 아래와 같습니다
- +415
- -345
- 400

프로그램 구문으로 Numeric Literals를 표현하려면 다음과 같습니다.

DATA  f1 TYPE I VALUE -4563.
WRITE 1234.
F1 = 1234.

Character Literals
Character Literals는 글자 + 숫자 캐릭터로 프로그램에서 single quatation mark인 (') 혹은 back quatation(`)을 사용하여 표현합니다. 

예시는 아래와 같습니다.

'This is a text field'.
'1000'.
`This is a string field`.
`1000`.

Single quatation로 유지되는 Character Literals는 C type이고 Character의 길이 수에 매칭되는 길이를 가집니다. 이것들은 text field literals라고 불리웁니다. Back quatation으로 유지되는 Character Literals은 String type이고 string literals라고 불리웁니다. 숫자 값이 예상되는 Character Literals를 사용한다면, 이것은 Numeric Value로 변환 가능합니다. Charater Literals가 Numeric type로 변환되는 예시는 아래와 같습니다.

- '12345'.
- '-12345'.
- '0.345'.
- '123E5'.


  Variables


Variable는 Data Object로서, ABAP 구문을 통해 내용(값)이 변화할 수 있습니다. Variables는 named data object이며, 프로그램에서 Declaration Area에서 선언됩니다. DATA와 PARAMETERS와 같은 다른 키워드들은 다른 Variables의 종류로 선언됩니다. 

DATA

DATA 키워드는 프로그램의 모든 문맥에서 선언될 수 있습니다.

개발자는 DATA 키워드를 ABAP 프로그램의 Global Declaration Area(전역 선언영역)에서 사용하여 프로그램 전체에서 사용가능한 전역 변수를 선언할 수 있고 또는 , Procedure 안에서 사용하여 오직 Procedure안에서만 사용되는 지역 변수로 선언할 수 있습니다.

DATA  field1 TYPE i.

PARAMETER

PARAMETERS 키워드는 두 가지 역할을 수행하는데, 하나는 프로그램 안에서 사용되는 변수이고 또 하나는 Selection Screen에서의 Screen Field를 생성하는 것입니다. 이 키워드는 레포트 프로그램을 위핸 Selection Screen(선택 화면)을 만드는데 사용됩니다. 레포트 프로그램 안에서, 레포트 업무를 수행하기 위하여 유저에게 값을 입력할 선택화면을 제시합니다.

PARAMETERS p_input TYPE c LENGTH 10.

이후 구문이 실행되면 Charater 타입의 10자리의 값을 입력할 수 있는 p_input이라는 이름을 가지는 Parameter가 선택화면에 입력 필드로 제시될 것 입니다. 이 필는 프로그램 안에서 변수로 존재하는 것이며 화면 필드와 연결되어 있는 것입니다. 화면에서 값이 입력되면 입력된 값이 p_input 변수에 저장되어 사용될 수 있습니다.


Constants


Constants(상수)는 named objects로서 CONSTANT 라는 키워드로 사용되며 ABAP 프로그램에서 변하지 않게 사용할 수 있습니다. 프로그래밍에서 Literals 대신에 Constants를 사용하는 것을 권장합니다. Literals와 달리, Constant는 프로그램에서 재사용가능하고 관리할 수 있습니다. Constants 구문의 문법은 data 구문과 거의 일치합니다. 그러나, Constants 구문을 쓰려면, VALUE addition을 반드시 사용하여 initial value를 할당해야 합니다. 프로그램 실행된 뒤에는, 이 값을 절대 바뀌지 않습니다.

CONSTANTS c_item TYPE c LENGTH 4 VALUE 'ITEM'.


Text Symbol


text symbol은 ABAP 프로그램에서 named object이며 프로그램 그 자체에서 선언되지는 않습니다. 대신에, 프로그램의 Text Elements의 일부로서 정의됩니다.

text symbol은 constants 처럼 행동하며 text element에서 정의된 길이를 가진 C type을 데이터 유형으로 가지고 있습니다.

예시로 WRITE text-001 은 text symbol의 예시입니다. 이 구문에서, 001이라는 번호를 가진 프로그램의 text symbol은 WRITE 구문을 통해서 결과로 나타나질 것입니다. 이 text symbol은 ABAP Editor에서 Goto -> Text Elements -> Text Symbols를 통해 정의할 수 있습니다.

Text Symbol은 text-nnn 이라는 문법을 통해 접근 가능하며, nnn은 text symbol 숫자입니다.

반응형