FIELD SIMBOL

콩이·2020년 9월 21일
0

PROJECT

목록 보기
6/9

FORM write_data .
write 'subroutine Test'.
ENDFORM.

"파라미트 = subroutine 호출하는 구문, 호출받는 구문 사이에 주고받는 값
" 썹루틴 내 data구문을 정의하는 일반적 local 변수가 =

call by value = 넘겨주는 변수와 받는 변수가 다른 메모리 영역

DATA: ahah TYPE c LENGTH 20 VALUE 'call by value test'.

PERFORM call_byvalue USING ahah.
FORM call_byvalue USING VALUE(p_val).
WRITE p_val.
ENDFORM.

call by value test

call by reference -changing : 자신의 메모리를 가지고 있지 않음
USING 은 DATA전달. CHANGING 는 DATA전달 변경

data: AHAH TYPE c LENGTH 50 VALUE 'CALL BY REFERENCE TEST'.
WRITE :/ AHAH.
PERFORM CALL_BYVREF CHANGING AHAH.
WRITE:/ AHAH.
FORM CALL_BYVREF CHANGING HEHE.
HEHE = 'VALUE IS CHANGED'.
ENDFORM.

DATA: GV1 TYPE I VALUE 2,
GV2 TYPE I VALUE 3,
SUM TYPE I.

PERFORM SUM_DATA USING GV1 GV2
CHANGING SUM.
WRITE :/ 'RESULT IS :', SUM.

FORM SUM_DATA USING VALUE(P_VAL1)
VALUE(P_VAL2)
CHANGING VALUE(P_SUM).

P_SUM = P_VAL1 + P_VAL2.

ENDFORM.

ZA21.

DATA: AHAH TYPE C VALUE 'A'. "ahah = 'a'
FIELD-SYMBOLS : TYPE C. "필드 심볼 선언
ASSIGN AHAH TO . "변수를 필드 심볼에
= 'B'. "필드 심볼에 변수 값을 할당
WRITE : 'ahah is : ' , ahah. "값이 b로 변경됨.

data: vava TYPE c VALUE 'a'.
FIELD-SYMBOLS : TYPE any.
assign vava to .
= 'b'.
WRITE : 'vava is = ' , 'vava'.

TYPES : BEGIN OF t_line,
col1 TYPE c,
col2 TYPE c,
END OF t_line.
data: gs_wa TYPE t_line,
gt_itab TYPE HASHED TABLE OF line WITH UNIQUE KEY col1,
key(4) TYPE c VALUE 'col1'.
FIELD-SYMBOLS TYPE any TABLE.
ASSIGN gt_itab to .

DATA: BEGIN OF line,
col1(12) VALUE 'abcdefghij',
END OF line.

FIELD-SYMBOLS : .
ASSIGN line-col1+6(*) TO .
WRITE / .

ASSIGN line-col1+6(6) TO .
WRITE / .

ASSIGN line-col1+5(5) TO .
WRITE / .

예제 10-7
DATA: BEGIN OF gs_str,
coll TYPE char10 VALUE 'KOREA ',
col2 TYPE char10 VALUE 'SEOUL' ,
col3 TYPE char6 VALUE 'twhin',
END OF gs_str.

data: gv_fname TYPE c LENGTH 10,
gv_idx TYPE n.

FIELD-SYMBOLS: LIKE gs_str,
TYPE ANY.

ASSIGN gs_str TO .

DO 3 TIMES.
clear : gv_fname.
gv_idx = sy-index.
gv_fname = 'col'.
CONCATENATE gv_fname gv_idx into gv_fname.
ASSIGN COMPONENT sy-index OF STRUCTURE TO .
WRITE .
ENDDO.

예제 10-8

TYPES : BEGIN OF t_line,
a TYPE char5,
b TYPE char10,
c TYPE char15,
end of t_line.

data: gv_addr(30) TYPE c VALUE 'maybe today is nice day'.
FIELD-SYMBOLS : TYPE t_line.
ASSIGN gv_addr to casting.
write : -a, -b, -c.

예제 10-9

  • data : gv_tname(10) TYPE c.
    DATA : gt_itab TYPE STANDARD TABLE OF sflight.
    FIELD-SYMBOLS TYPE STANDARD TABLE.

gv_tname = 'gt_itab'.
ASSIGN (gv_tname) to .

data : BEGIN OF gs_data,
var1 TYPE i,
var2 TYPE i,
var3 TYPE i,
end of gs_data,
gt_data like TABLE of gs_data.

FIELD-SYMBOLS : <Fs_Tab> TYPE any table,
<fs_strc> like gs_data.

clear : gs_data.
gs_data-var1 = 10.
gs_data-var2 = 20.
gs_data-var3 = 30.

  • append gs_data to gt_data.

"쭈니아밥퍼

clear : gs_data.
gs_data-var1 = 40.
gs_data-var2 = 50.
gs_data-var3 = 60.

  • ASSIGN gt_data to <Fs_tab>.
    append gs_data to gt_data.

clear : gs_data.
gs_data-var1 = 70.
gs_data-var2 = 80.
gs_data-var3 = 90.

ASSIGN gt_data to <fs_tab>.

loop at <fs_tab> ASSIGNING <fs_strc>.
write :/ <fs_strc>-var1, <fs_strc>-var2, <fs_strc>-var3.
ENDLOOP.

아밥퍼 2
DATA: GV_VAL1 TYPE C VALUE 'A',
GV_VAL2 TYPE C VALUE 'B',
GV_VAL3 TYPE C VALUE 'C',
GV_VAL4 TYPE C VALUE 'D',
GV_VAL5 TYPE C VALUE 'E'.

DATA: GV_FNAME TYPE CHAR20,
GV_INDEX TYPE N.

FIELD-SYMBOLS type any.

DO 5 TIMES.
CLEAR: GV_FNAME.
GV_INDEX = SY-INDEX.
CONCATENATE 'GV_VAL' GV_INDEX INTO GV_FNAME. "GV_VAL+GV_INDEX => GV_FNAME에 들어가서
ASSIGN (GV_FNAME) TO .
"여기서 GV_FNAME은 CHAR20의 GV_FNAME이 아닌 위에 GV_VAL+GV_INDEX가 된다
"만약 1번째 줄이면 GV_FNAME은 GV_VAL1이 된다.
WRITE: / GV_FNAME, ':', .
ENDDO.

"아밥퍼 3

DATA: BEGIN OF GS_DATA,
VAR1 TYPE CHAR10,
VAR2 TYPE CHAR10,
VAR3 TYPE CHAR10,
END OF GS_DATA,
GT_DATA LIKE TABLE OF GS_DATA.

FIELD-SYMBOLS : ,
<FS_STRC> LIKE GS_DATA.

CLEAR: GS_DATA.
GS_DATA-VAR1 = 10.
GS_DATA-VAR2 = 20.
GS_DATA-VAR3 = 30.
APPEND GS_DATA TO GT_DATA.

CLEAR: GS_DATA.
GS_DATA-VAR1 = 40.
GS_DATA-VAR2 = 50.
GS_DATA-VAR3 = 60.
APPEND GS_DATA TO GT_DATA.

LOOP AT GT_DATA ASSIGNING <FS_STRC>..
DO 3 TIMES.
ASSIGN COMPONENT SY-INDEX OF STRUCTURE <FS_STRC> TO .
"1번째 INDEX면 FS_STRC의 첫번째줄이 해당
WRITE: .
ENDDO.
WRITE: /.
ENDLOOP.

profile
有志竟成

0개의 댓글