structure type 선언하는 방법 3

rjdqn·2024년 7월 24일

abap

목록 보기
3/13

다른 언어에서는 구조체, object 등등이라고 불리는 것 만들기
sap에선 structure type(variable) 이라고 불린다.
structure의 멤버는 component라고 불리는데 field라고 부르기도 한다.
component 접근할때는 .이 아닌 -를 쓴다.

structure type 선언하는 방법 1 (local)

* (ts : type structure)
* structure type 선언.
TYPES: BEGIN OF ts_info,
  " each one is called component or field(for convenience)
         stdno TYPE zts5a0003-stdno,
         lname TYPE zts5a0003-lname,
         fname TYPE zts5a0003-fname,

END OF ts_info.

* structure variable
data gs_info type ts_info.
data gs_info2 like gs_info.

다른 언어에서 하는 방식과 유사하다.

structure type 선언하는 방법 2 (local)

* first student info
* type 선언 없이 바로 변수 만들기
DATA: BEGIN OF gs_info,
        stdno TYPE zts5a0003-stdno,
        lname TYPE zts5a0003-lname,
        fname TYPE zts5a0003-fname,
      END OF gs_info.

*  second student info
* like가 있어서 굳이 type 선언 없이 편리하게 쓸 수 있다.
DATA gs_info2 LIKE gs_info
      

편리한 방법이다.

structure type 선언하는 방법 3(global)


/nSE11에 들어가 Data type을 만든다.

create 누르고 structure 클릭

편의를 위해 DB 정보를 베껴서 structure을 작성 완료한다.
component와 Component type만 쓰고 엔터치면 나머지는 자동 불러와짐.

이제 저 structure를 기억해서 top에 잘 넣어준다.

top

* first student info
* using <structure type> that is made
data gs_info type ZS5A14101.
* second student info
data gs_info2 like gs_info.

main

INCLUDE zr5a14121_top                           .    " Global Data
INCLUDE zr5a14121_f01                           .  " FORM-Routines

INITIALIZATION.

AT SELECTION-SCREEN OUTPUT. "PBO process before output

AT SELECTION-SCREEN. "PAI process after input

START-OF-SELECTION.

  gs_info-stdno = 'S245101'. "gs_info.stdno
  PERFORM get_std_name USING gs_info-stdno CHANGING gs_info-lname gs_info-fname.

write:/ gs_info-lname, gs_info-fname.

  gs_info2-stdno = 'S245102'.
  PERFORM get_std_name USING gs_info2-stdno CHANGING gs_info2-lname gs_info2-fname.

  WRITE:/ gs_info2-lname, gs_info2-fname.

참고로

DATA gs_scarr TYPE scarr. 

해도 된다.
위와 같은 경우는 structure type으로 transparent table을 사용한것.
자동적으로 mandt도 들어가게 된다.

잘 된다.
끝.

profile
대학생

0개의 댓글