Ⅰ. 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
'어쩌다 SAP > 어쩌다 ABAP' 카테고리의 다른 글
5일차) NATIVE SQL (0) | 2020.08.28 |
---|---|
4일차-2) OPEN SQL: 데이터 변경 (0) | 2020.08.28 |
4일차-1) OPEN SQL데이터 읽기 (0) | 2020.08.27 |
2일차) Predefined ABAP Type, 프로그램의 Local Type, Type ABAP Dictionary의 Type (0) | 2020.08.25 |
1일차) SAP란, ABAP 정의, DATA 타입 종류, 선언 방법 (1) | 2020.08.25 |