DATA: BEGIN OF gs_data,
* carrid type scarr-carrid,
ftype, "flight type
ftcnt TYPE i, "flight type cnt
END OF gs_data,
gt_data LIKE TABLE OF gs_data.
CLEAR: gs_data, gt_data.
*gs_data-carrid = 'AA'.
gs_data-ftype = 'D'.
gs_data-ftcnt = 1.
*APPEND gs_data TO gt_data. " append와 collect는 같이 잘 쓰지 않는다.
COLLECT gs_data INTO gt_data. " gt_data에 한 행이 추가되는게 아니라 문자열 같은거 있으면 숫자가 +1 된다.
" 완전히 레코드가 일치하면(숫자타입 제외) 값이 그냥 겹쳐지고 숫자필드가 +1 된다.
clear gs_data.
gs_data-ftype = 'D'.
gs_data-ftcnt = 2.
COLLECT gs_data INTO gt_data. " 이 경우 숫자필드빼고 일치하므로 더해진다.
clear gs_data.
gs_data-ftype = 'A'.
gs_data-ftcnt = 2.
COLLECT gs_data INTO gt_data. " 이 경우 불일치하므로 행이 하나 append 된다.
cl_demo_output=>display_data( gt_data ).

numeric 타입일경우 -> 걍 문자형임.
numeric : 나누기 빼기등 연산하면 안되는 숫자나열형
DATA: BEGIN OF gs_data,
* carrid type scarr-carrid,
ftype, "flight type
ftnum TYPE n LENGTH 2,
* ftcnt TYPE i, "flight type cnt
END OF gs_data,
gt_data LIKE TABLE OF gs_data.
CLEAR: gs_data, gt_data.
*gs_data-carrid = 'AA'.
gs_data-ftype = 'D'.
gs_data-ftnum = '01'.
*gs_data-ftcnt = 1.
*APPEND gs_data TO gt_data. " append와 collect는 같이 잘 쓰지 않는다.
COLLECT gs_data INTO gt_data. " gt_data에 한 행이 추가되는게 아니라 문자열 같은거 있으면 숫자가 +1 된다.
" 완전히 레코드가 일치하면(숫자타입 제외) 값이 그냥 겹쳐지고 숫자필드가 +1 된다.
CLEAR gs_data.
gs_data-ftype = 'D'.
gs_data-ftnum = '02'.
*gs_data-ftcnt = 2.
COLLECT gs_data INTO gt_data. " append
CLEAR gs_data.
gs_data-ftype = 'A'.
gs_data-ftnum = '03'.
*gs_data-ftcnt = 2.
COLLECT gs_data INTO gt_data. " append
cl_demo_output=>display_data( gt_data ).

float든 integer이든 collect는 철저히 문자열만(numeric 포함)만 비교하는듯하다.
DATA: BEGIN OF gs_data,
* carrid type scarr-carrid,
ftype, "flight type
* ftnum TYPE n LENGTH 2,
ftcnt TYPE i, "flight type cnt
ftcnt2 type i,
ftppp type p DECIMALS 2, "float type
END OF gs_data,
gt_data LIKE TABLE OF gs_data.
CLEAR: gs_data, gt_data.
*gs_data-carrid = 'AA'.
gs_data-ftype = 'D'.
*gs_data-ftnum = '01'.
gs_data-ftcnt = 1.
gs_data-ftcnt2 = 2.
gs_data-ftppp = '3.1'.
COLLECT gs_data INTO gt_data. " gt_data에 한 행이 추가되는게 아니라 문자열 같은거 있으면 숫자가 +1 된다.
" 완전히 레코드가 일치하면(숫자타입 제외) 값이 그냥 겹쳐지고 숫자필드가 +1 된다.
CLEAR gs_data.
gs_data-ftype = 'D'.
*gs_data-ftnum = '02'.
gs_data-ftcnt = 2.
gs_data-ftcnt2 = 3.
gs_data-ftppp = '0.89'.
COLLECT gs_data INTO gt_data.
CLEAR gs_data.
gs_data-ftype = 'A'.
*gs_data-ftnum = '03'.
gs_data-ftcnt = 2.
COLLECT gs_data INTO gt_data.
cl_demo_output=>display_data( gt_data ).
