다른 언어에서는 구조체, object 등등이라고 불리는 것 만들기
sap에선 structure type(variable) 이라고 불린다.
structure의 멤버는 component라고 불리는데 field라고 부르기도 한다.
component 접근할때는 .이 아닌 -를 쓴다.
* (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.
다른 언어에서 하는 방식과 유사하다.
* 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
편리한 방법이다.

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

create 누르고 structure 클릭

편의를 위해 DB 정보를 베껴서 structure을 작성 완료한다.
component와 Component type만 쓰고 엔터치면 나머지는 자동 불러와짐.
이제 저 structure를 기억해서 top에 잘 넣어준다.
* first student info
* using <structure type> that is made
data gs_info type ZS5A14101.
* second student info
data gs_info2 like gs_info.
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도 들어가게 된다.

잘 된다.
끝.