[SAP] ABAP-Inline Declarations

SAPCO·2024년 5월 20일
0

- [ABAP]

목록 보기
13/18

0. 도입

  • Inline Declarations은 데이터 객체가 기록되는 작성 위치에서 예상되는 ABAP 문의 피연산자 위치에서 키워드 DATA(..)를 사용하여 작성된다.
  • Inline Declarations도 전역적인 관점(Global Data로서 사용되는 것)으로 사용되는 것이 가능하기만,Globla Data Object로서 사용하는 것은 권장되지 않는다. SAP는 Inline Declarations을 오직 Procedure안에서 사용하여 지역적인 Data Object 관점에서 사용하는 것을 권장한다.

1. EX

- Assigning Values to Data Objects

코드가 컴파일 될 때 자동으로 생성되며, 실행중인 시간에 해당 문장이 실행되는지 여부와 상관없이 생성된다.

DATA lv_var TYPE string.
lv_var = 'EXAMPLE'.
DATA(lv_var) = 'EXAMPLE'.

- Using Inline Declarations with Table Work Areas

DATA: lt_spfli TYPE STANDARD TABLE OF SPFLI,
      ls_spfli LIKE LINE OF lt_spfli.
      
LOOP AT lt_spfli INTO ls_spfli.
ENDLOOP.
DATA: lt_spfli TYPE STANDARD TABLE OF SPFLI.
LOOP AT lt_spfli INTO DATA(ls_spfli).
ENDLOOP.
READ TABLE lt_spfli INTO DATA(ls_spfli) INDEX 1.

- Avoiding Helper Variables

Internal Table의 Row수를 찾기 위해 Helper Variables를 사용하지 않아도 된다.

DATA lv_lines TYPE i. "helper variable"
DESCRIBE TABLE lt_spfli LINES lv_lines.
DESCRIBE TABLE lt_spfli LINES DATA(lv_lines).

- Declaring Actual Parameters

클래스의 Method를 호출할 때 , Actual Parameter는 formal Parameter와 Type이 매칭되어야 한다.
따라서 Method 시그니처를 확인하고, 실제 매개변수를 형식 매개변수와 동일한 타입으로 정의해야한다.
또한 Formal Parameter의 타입이 변경될 때마다 프로그램에서 Actual Parameter의 타입도 변경되어야 한다.
다음과 같이 Inline Declaration을 사용하면 이러한 모든 문제를 피할 수 있다.
Inline Declaration은 Procedure 내에서만 사용하여 Procedure의 로컬 데이터 범위를 제한해야 한다.

DATA: lv_a1 TYPE string,
      lv_a2 TYPE string.
      
oref->meth( IMPORTING fp1 = lv_a1
                      fp2 = lv_a1 ).
oref->meth( IMPORTING fp1 = DATA(lv_a1)
                      fp2 = DATA(lv_a1) ).

출처 : https://abapta0903.tistory.com/127

profile
SAP CO

0개의 댓글