프로그래밍은 해 본 적도 없는 사람이 거의 독학으로 아밥을 접할려고 하니
술먹을때 보다 머리에 피가 더 많이 쏠립니다.
간단한 건데요, 맨 처음 스트럭쳐 생성하는 것 까지는 알겠는데, 그 다음 코딩부터가 이해가 안갑니다.
매우 간단한 코딩이라는 것은 알겠는데 어떻게 돌아가는지 이해가 가질 않습니다.
부디 이 미천한 학생에게 자비를...;;
TYPE: BEGIN OF line,
col1 TYPE I,
col2 TYPE I,
END OF line.
DATA itab TYPE SORTED TABLE OF line WITH UNIQUE KEY col1
WITH HEADER LINE initial size 100.
DO 4 TIMES.
itab-col1 = sy-Index.
itab-col2 = sy-Index
INSERT Table itab.
END DO.
itab-col1 = 2.
READ TABLE itab FROM itab.
itab-col2 = 100.
MODIFY TABLE itab.
itab-col1 = 4.
DELETE TABLE itab.
LOOP AT itab.
WRITE: / itab-col1, itab-col2.
ENDLOOP.
먼저 두개의 컴포넌트를 같고있는데 LINE 이라는 스트럭쳐를 선언하였구요,
다음 이스트럭쳐와 같은 타입의 헤더가 있는 인터널테이블(초기값100)을 COL1이라는 컴포넌트가 중복값을같지않게 선언했구요,
DO라는 명령어로 4바퀴를 돌려서 먼저 라인이라는 스트럭쳐에 값을 집어넣구 인터널 테이블에 인설트 즉 값을 차곡차곡 넣었네요
그값은 SY-INDEX라는 DO문에서사용하는 시스템필드이니 한바퀴 돌때마다 1씩증가할것이고 인터널테이블에는
1 1
2 2
3 3
4 4
이렇게 들어가겠네요 그런데 스트럭쳐쓰는데 ITAB에 헤더는 왜만드셨는지요.
아무튼 다음 인터널테이블의 헤더 첫번째필드에 2라는값을넣고 READ구문으로 읽어왔네요 2가 인터널테이블에
2번째있으므로 SY-TABIX는 2가될것이고 그라인을 헤더로 올리겠죠!!
그리고 헤더두번째필드에 100이라는 값을 넣으시고 모디파이 시키셨네요
그럼 헤더에있언 2 2 이것이 2 100 으로 바뀌고
모디파이로인해 2번째라인을 바꿔주겠네요
그리고 다시 헤더의 첫번째 필드에 4라는 값을 넣으시고 딜리트를 하셨는데 4는 원래 ITAB에 4번째라인에 있으므로
4번째라인을 삭제 했겠구요 그럼 ITAB에는
1 1
2 100
3 3
이렇게 남이있을것이고 이것을 룹을돌려서 라이트를 해줬네요!!
지금 나가야돼서 막정신없이 썼어요 이해해 도움이 되셨으면 합니다.
저도 초보인데 혼자공부하시면 디버깅 많이 걸어보세요. 많은 도움이 되실꺼에요!!
좋은 주말 되세요^^