교재의 샘플 코드에서 궁금한 부분이 있어 질문 드립니다.


제가 생각한건


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"