교재의 샘플 코드에서 궁금한 부분이 있어 질문 드립니다.
제가 생각한건
t_str 이라는 테이블형태의 데이터타입이 이미 있으므로
t_itab 이라는 같은 테이블형태의 데이터타입을 한번 더 선언할 필요가 있을까? 하는 생각으로
아래처럼 수정했더니 역시나 에러가 났습니다.
t_itab을 아래처럼 빼고 FORM에서 TYPE t_str 로 선언하면 안되는 이유가 궁금합니다.
=================================================================
REPORT z04_07.
TYPES: BEGIN OF t_str,
col1 TYPE c,
col2 TYPE i,
END OF t_str.
TYPES : t_itab TYPE TABLE OF t_str. <-- 저는 요부분을 삭제하고
DATA: gs_str TYPE t_str,
gt_itab TYPE t_itab. <-- 요부분을
gt_itab TYPE TABLE OF t_str. <-- 이렇게 변경하였고
gs_str-col1 = 'A'.
gs_str-col2 = 1.
APPEND gs_str TO gt_itab.
gs_str-col1 = 'B'.
gs_str-col2 = 2.
APPEND gs_str TO gt_itab.
PERFORM test_itab USING gt_itab .
FORM test_itab USING pt_itab TYPE t_itab. <-- 요부분을 (원래 코드)
FORM test_itab USING pt_itab TYPE t_str. <-- 요렇게 해보았더니 에러가 발생하였습니다.
READ TABLE pt_itab WITH KEY col1 = 'A' INTO gs_str.
IF sy-subrc EQ 0.
WRITE : gs_str-col1, gs_str-col2.
ENDIF.
ENDFORM.
======================================.
아래는 에러 메세지 입니다.
In PERFORM or CALL FUNTION "TEST_ITAB", the actual parameter "GT_ITAB" is incompatible with the formal parameter "P_GT_ITAB"
안녕하세요.
FORM test_itab USING pt_itab TYPE t_str. <-- 요렇게 해보았더니 에러가 발생하였습니다.
t_str은 구조체 타입이라서 에러가 발생합니다.
다음과 같이 테스트 하셔야 할것 같습니다.
REPORT Z04_07.
TYPES: BEGIN OF t_str,
col1 TYPE c,
col2 TYPE i,
END OF t_str.
*TYPES : t_itab TYPE TABLE OF t_str. <-- 저는 요부분을 삭제하고
DATA: gs_str TYPE t_str,
* gt_itab TYPE t_itab.
gt_itab TYPE TABLE OF t_str.
gs_str-col1 = 'A'.
gs_str-col2 = 1.
APPEND gs_str TO gt_itab.
gs_str-col1 = 'B'.
gs_str-col2 = 2.
APPEND gs_str TO gt_itab.
PERFORM test_itab USING gt_itab .
*FORM test_itab USING pt_itab TYPE t_itab. <-- 요부분을 (원래 코드)
FORM test_itab USING pt_itab like gt_itab. "<-- 요렇게 해보았더니 에러가 발생하였습니다.
READ TABLE pt_itab WITH KEY col1 = 'A' INTO gs_str.
IF sy-subrc EQ 0.
WRITE : gs_str-col1, gs_str-col2.
ENDIF.
ENDFORM.