IF itab GT jtab.
여기서 itab에 값이 10 20 이라고 하고 jtab에 값이 100 200
20 30
30 40
이렇게 있다고 하면 테이블 안의 껀수를 가지고 비교를 하는건가요 아니면 전체 가지고 있는 데이터의 값을 가지고 비교를 하는건가요 아니면 마지막 건을 가지고 비교를 하는건가요 답변부탁드립니다
오늘도 좋은하루 보내시구요 언제나 좋은답변 주시는 초보아밥퍼님을 비롯한 많은분들 감사드립니다
댓글 5
-
activeman
2008.04.15 21:13
-
완전모르는초보
2008.04.15 21:32
DATA: BEGIN OF line,
col1 TYPE i,
col2 TYPE i,
END OF line.
DATA: itab LIKE TABLE OF line,
jtab LIKE TABLE OF line.
DO 3 TIMES.
line-col1 = sy-index.
line-col2 = sy-index ** 2.
APPEND line TO itab.
ENDDO.
MOVE itab TO jtab.
line-col1 = 10. line-col2 = 20.
APPEND line TO itab.
IF itab GT jtab.
WRITE / 'ITAB GT JTAB'.
ENDIF.
APPEND line TO jtab.
IF itab EQ jtab.
WRITE / 'ITAB EQ JTAB'.
ENDIF.
답변 감사드립니다 꾸벅 근데 제가 이거 아밥다큐에있는거 혼자 공부중인데요 거기서 이렇게 나와서 여쭤본거거든요
답변처럼 필드끼리 비교를 했다면 쉽게 이해를 했을텐데... 죄송하지만 다시한번 답변좀 부탁드립니다
-
삐러
2008.04.16 20:26
전체 데이터를 비교하는 것 같네요,
ITAB JTAB
1 1 1 1
2 4 20 4
3 9 3 9
10 20 10 20
이 값으로 비교 했더니.
ITAB EQ JTAB 가 안찍히네요...
도움이 되셨길..
-
초보아밥퍼
2008.04.17 21:55
우선 인터널 테이블 선언은 헤더 없는 바디로만 구성된 테이블을 만들었구요.
MOVE itab TO jtab 이건 itab[] = jtab[] 와 같은의미구요
결국 테이블의 라인을 비교하기 위해서 쓰여진 것들입니다.
if itab-a gt jtab-b <--- 이런경우라면 필드값을 비교하겠지만
if itab gt jtab <--- 이런경우엔 인터널테이블의 데이터 건수를 비교합니다.
결국 위 로직을 보시면
초기 itab 과 jtab 은 move로써 동일하게 만들었지만
line-col1 = 10. line-col2 = 20.
APPEND line TO itab. <--- 이 로직에서 itab 의 데이터 건수를 1건 올렸죠
IF itab GT jtab. <--- 그렇다면 itab 건수가 jtab 건수보다 1건 많기 때문에
WRITE / 'ITAB GT JTAB'. <--- if문을 타겠죠
ENDIF.
이후에 APPEND line TO jtab. <-- jtab 에도 한건 추가를 시켜주었죠!
IF itab EQ jtab. <-- 결국 itab 과 jtab의 데이터 건수는 동일하게 됩니다.
WRITE / 'ITAB EQ JTAB'. <-- 그럼 요것도 타겠죠.
ENDIF.
이해가 좀 되실라나 모르겠네요.
필드의 데이터 값을 비교하는것과 필드의 데이터 건수를 비교하는것의 차이라고 보시면 됩니다.
수고하세용
-
바보아밥퍼
2008.04.18 18:24
역시 아밥퍼님 답변은 늘 이해가 잘되도록 자세히잘설명해주시네요 감사합니다 늘 신세만 지는것 같아 죄송해요 오늘은 금요일이네요 하루잘보내시구요 행복한 주말 되십시요 꾸벅
IF itab GT jtab. 이렇게 해서는 아무것도 비교가 안되겠죠.
비교를 하실려면 IF ITAB-A GT JTAB-B. ( A,B는 각인터널테이블의 필드임)
이렇게 비교를 하셔야 합니다..
그리고 ITAB이 여러건이고 JTAB이 한건이면.
LOOP AT ITAB.
IF ITAB-A GT JTAB-B.
어쩌구저쩌구~~~.
ENDIF.
ENDLOOP.
이렇게해야 겠습니다..
인터널테이블의 구조에 대해서 조금 더 공부를 하셔야 겠네요..
ONE PAPER에 보시면 인터널테이블에 대해 자세히 나와 있습니다.
참고하세요..