[SAP] Data Object

이안·2024년 2월 15일

SAP

목록 보기
2/30
post-thumbnail

1. Data Object에 Assigning Value(값 할당)

1) MOVE TO

  • Equl (=) 구문과 동일한 의미
DATA : BEGIN OF GS_NAME,
	NAME1 TYPE C LENGTH 10,
	NAME2 TYPE C LENGTH 10,
END OF GS_NAME.

GS_NAME-NAME1 = '미지정'.
GS_NAME-NAME2 = '차은우'.

* GS_NAME-NAME1 = GS_NAME-NAME2.
MOVE GS_NAME-NAME2 TO GS_NAME-NAME1. 

WRITE :/ GS_NAME-NAME1. "차은우 출력
WRITE :/ GS_NAME-NAME2. "차은우 출력
  • 형 변환(TYPE Conversions) 가능 [단, TYPE D, T는 제외]
DATA : BEGIN OF GS_NAME,
	NAME1 TYPE C LENGTH 10,
	DEGREE1 TYPE P DECIMALS 2,
END OF GS_NAME.

GS_NAME-NAME1 = '차은우'.
GS_NAME-DEGREE1 = '12.34'.

MOVE GS_NAME-DEGREE1 TO GS_NAME-NAME1. 
CONDENSE GS_NAME-NAME1 NO-GAPS. "공백제거

WRITE :/ GS_NAME-NAME1. "12.34 출력
WRITE :/ GS_NAME-DEGREE1. "     12.34 출력

2) OFFSET을 이용한 값 할당

  • OFFSETS AND LENGTHS를 이용하여 필드의 일부 값 정의
  • MOVE A+P1(P2) to B+P3(P4)
    A필드 P1에서 길이 P2까지 복사하여 B필드 P3에서 길이 P4까지 할당
    OFFSETS 시작 위치 정하는 P1값은 0부터 시작
DATA : GV_DATA1(8) VALUE 'ABCDEFGH',
			 GV_DATA2(8).
DATA : GV_START TYPE I VALUE 2,
			 GV_LENGTH TYPE I VALUE 4.

MOVE GV_DATA1+2(3) TO GV_DATA2.
WRITE :/ GV_DATA2. "CDE 출력

DATA : GV_DATA1(8) VALUE 'ABCDEFGH',
			 GV_DATA2(8).
DATA : GV_START TYPE I VALUE 2,
			 GV_LENGTH TYPE I VALUE 4.

MOVE GV_DATA1+GV_START(GV_LENGTH) TO GV_DATA2.
WRITE :/ GV_DATA2. "CDEF 출력

DATA : GV_DATA1(8) VALUE 'ABCDEFGH',
			 GV_DATA2(8) VALUE 'IJKLMNOP'.
DATA : GV_START TYPE I VALUE 2,
			 GV_LENGTH TYPE I VALUE 4.

MOVE GV_DATA1+GV_START(GV_LENGTH) TO GV_DATA2+GV_START(GV_LENGTH).
WRITE :/ GV_DATA2. "IJCDEFOP 출력

3) WRITE TO

Output to a field OR internal table 변수 할당

DATA : BEGIN OF GS_NAME,
	NAME1 TYPE C LENGTH 10,
	NAME2 TYPE C LENGTH 10,
END OF GS_NAME.

GS_NAME-NAME1 = '미지정'.
GS_NAME-NAME2 = '차은우'.

WRITE GS_NAME-NAME2 TO GS_NAME-NAME1.
* MOVE A TO B 와 같은 기능

WRITE :/ GS_NAME-NAME1. "차은우 출력
WRITE :/ GS_NAME-NAME2. "차은우 출력

4) MOVE-CORRESPONDING

  • 필드 값을 COPY
  • 구조체에서 값을 할당할 때 사용 (구조체에서만 사용)
  • 구조체의 같은 필드에 값이 복사

MOVE : 순서대로 적용

MOVE-CORRESPONDING : 필드에 맞춰 적용

2. Data Object에 Variable Declaration(기타변수선언)

1) Constants

  • 프로그램에서 자주 사용하게 되는 값을 상수로 선언하여 사용
  • 한 번 선언된 상수는 프로그램 내에서 변경, 수정 불가능
  • 숫자를 의미있는 변수 명으로 지정 → 가독성이 높아짐
    • 일반 상수 : 고정된 값

      CONSTANTS : C_RATE TYPE I VALUE '100'.
    • 구조체 상수

      CONSTANTS : BEGIN OF C_STUDENT,
      	ZCODE(10) VALUE 'CODE-01',
      	ZKNAME(10) VALUE '차은우',
      	ZENAME(10) VALUE 'CHA',
      END OF C_STUDENT.

2) STATICS

  • 프로그램 Subroutine(FORM, FUNCTION)에서 사용되는 Local변수의 값을 지속적으로 저장할 경우 사용
  • 구문 내 STATICS로 선언된 Local변수는 프로그램이 종료될 때까지 값 유지
STATICS LV_NUM TYPE I.
LV_NUM = LV_NUM + 1.

WRITE :/ 'STATIC Variable : ', LV_NUM. "실행은 못해본 예제

3) TABLES

  • ABAP Dictionary Table, View, Structure를 선언하게되면 ABAP Dictionary타입과 같은 Data Object를 생성하게되는데 이를 Table Work Area라고 부르고 프로그램 내에서 구조체처럼 사용 가능
TABLES : ZEDT05_001.

SELECT SINGLE * FROM ZEDT05_001.

WRITE :/ ZEDT05_001-ZCODE.
WRITE :/ ZEDT05_001-ZKNAME.
WRITE :/ ZEDT05_001-ZENAME.
WRITE :/ ZEDT05_001-ZGENDER.
WRITE :/ ZEDT05_001-ZTELL.

TABLES : SCARR.

SEELCT * FROM SCARR,
	WRITE :/ SCARR-CARRID, SCARR-CARRNAME.
ENDSELECT.

0개의 댓글