본문 바로가기

어쩌다 SAP/어쩌다 ABAP

3일차) Assigning Value, 기타 변수 선언

Ⅰ. Assigning Value

1. Assigning value (값 할당)
Move <f1> To <f2>.
            =
     <f2> = <f1>.

<f1> data type이 <f2> data type으로 변환.

      c.f) type D와 type T 간의 형 변환은 불가하다.

 

WRITE <f1> TO <f2>.

<f1> data object의 내용을 C로 변경해 변수 <f2>에 할당

 

MOVE-CORRESPONDING <STRING1> TO <STRING2>.

구조체(Structure)에서 값을 할당

 

<예제 2-20> - MOVE-CORRESPONDING TO를 사용하여 structure 자체의 데이터를 할당

*DATA : BEGIN OF gs_ren,
*         name(20)    VALUE 'KIM SUNGJONN',
*         country(10) VALUE 'KOREA',
*         city(20)    VALUE 'SEOUL',
*       END OF gs_ren.
*
*DATA : BEGIN OF gs_info,
*         name(20),
*         city(20),
*         phone(10) VALUE '1521001234',
*       END OF gs_info.
*
*MOVE-CORRESPONDING gs_ren TO gs_info.
*WRITE: / gs_info-name, gs_info-city, gs_info-phone.

 

2. offset을 이용한 할당

offset(시작위치)를 지정하는 p1값은 0부터 시작한다. 즉, 1번째 자리는 0을 의미한다.

MOVE f1 +2(3) TO f2.

f1의 3번째 자리부터 3개까지 값을 f2에 할당

 

<예제 2-21> - offset(시작위치)을 이용한 값 할당

*DATA: gv_f1(8) VALUE 'ABCDEFGH',
*      gv_f2(8).
*
*DATA: gv_start  TYPE i VALUE 2,
*      gv_length TYPE i VALUE 4.
*
*MOVE gv_f1 TO gv_f2.
*WRITE / gv_f2.                                         "ABCDEFGH"
*
*CLEAR : gv_f2.
*MOVE gv_f1+2(3) TO gv_f2.
*WRITE / gv_f2.                                         "CDE"
*
*CLEAR: gv_f2.
*MOVE gv_f1+gv_start(gv_length) TO gv_f2.
*WRITE / gv_f2.                                         "CDEF"

 

3. 구조체의 산술 계산
<구조체 간 연산 구문>

ADD-CORRESPONDING
SUBTRACT-CORRESPONDING
MULTIPLY-CORRESPONDING
DIVIDE-CORRESPONDING
<예제 2-22> - 구조체의 산술 계산

*DATA: BEGIN OF gs_rate,
*        kim TYPE f VALUE '0.8',
*        lee TYPE f VALUE '1.0',
*      END OF gs_rate.
*
*DATA: BEGIN OF gs_result,
*        kim TYPE i VALUE 95,
*        lee TYPE i VALUE 70,
*      END OF gs_result.
*
*MULTIPLY-CORRESPONDING gs_result BY gs_rate.
*
*WRITE: 'Test Result', 'KIM:', gs_result-kim, 'LEE:', gs_result-lee.

                             "Test Result         KIM: 76(0.8*95)     LEE: 70(1.0*70)"

 

Ⅱ. 기타 변수 선언

1. Constants (상수)

- 자주 사용하는 값을 상수로 선언하여 사용.

- 상수 선언시 프로그램 내에서 변경할 수 없다.

- Constants 변숫값을 변경할 경우 한번만 변경하면 된다.

<예제 2-23> - Constants

*CONSTANTS: c_company(10)  VALUE 'EASY ABAP'.
*
*CONSTANTS: BEGIN OF c_people,
*             name(20)    VALUE 'KIM HYUNCHAN',
*             country(10) VALUE 'KOREA',
*           END OF c_people.
*
*WRITE: c_company, c_people-name, c_people-country.

 

2. Statics

- STATICS로 선언된 Local 변수는 프로그램이 종료될 때까지 값을 유지하게 된다.

 

<예제 2-24> - STATICS로 변수 선언

*DO 3 TIMES.                                         "3번 반복해라"
*  PERFORM call_subr.
*ENDDO.
*
*FORM call_subr.
*  STATICS lv_val TYPE i.                           "lv_val가 프로그램 종료까지 값을 유지"
*
*  lv_val = lv_val + 1.
*
*  WRITE: / 'STATIC Variable :', lv_val.          "STATICS Variable : 1
*                                                          STATICS Variable : 2
*ENDFORM.                                           STATICS Variable : 3"

 

만약 STATICS가 아니고 DATA로 변수를 선언한다면?

<예제 2-25> - STATICS가 아닌 DATA로 변수선언

*DATA: gv_result TYPE i.
*
*DO 3 TIMES.
*  PERFORM call_subr.
*ENDDO.
*
*FORM call_subr.
*  DATA lv_val TYPE i.                             "동일한 코딩이지만 STATICS가 아니라 DATA로 변수를 선언
*
*  lv_val = lv_val + 1.
*
*  WRITE: / 'Local Variable :', lv_val.          "STATICS Variable : 1
*                                                       STATICS Variable : 1
*ENDFORM.                                         STATICS Variable : 1"

처럼 Local 변수가 값을 유지하지 않아 lv_val의 값은 계속 '1'이 나오게 된다.

 

3. TABLES

- TABLES 구문을 사용하여 ABAP Dictionary Table, View, Structure를 선언하면 ABAB Dictionary 타입과 같은 Data Object를 생성.

- 이것을 Table Work Area라 부른다.

- 프로그램 내에서 Structure처럼 사용할 수 있다.

 

<예제 2-26> - TABLE로 ABAP Dictionary Table 구조를 가진 Structure 선언.

TABLES : scarr.

SELECT * FROM scarr.   
     WRITE: / scarr-carrid, scarr-carrname.
ENDSELECT.

 

 

출처: https://www.kyobobook.co.kr/product/detailViewKor.laf?mallGb=KOR&ejkGb=KOR&barcode=9788965400288

 

Easy ABAP 2.0 - 교보문고

기본 이론과 실무 예제로 새롭게 꾸민『Easy ABAP 2.0』. 기본 이론과 예제 프로그램의 실습으로 단계적으로 ABAP 프로그램을 완성해갈 수 있도록 구성된 교재이다. 이론 부분은 1장 ~ 11장으로 구성��

www.kyobobook.co.kr