안녕하세요.
자꾸 질문을 드리는게 죄송스럽지만, 배워야 나중에 저도 누군가에게 도움이 되리라 생각하는 사람으로써
질문 하나만 더 하겠습니다.
제가 인터널 테이블을 2개 생성 하고 있습니다.
한개는 st_itm이고 나머지 한개는 it_itm 테이블이지요
st_itm 인터널 테이블은 zctpm099라는 cbo 테이블과 연관되어 alv화면에 값을 뿌려주는 테이블입니다
그런데 제가 st_itm 테이블에 있는 값을 it_itm 인터널 테이블에 update? modify 아무튼 그렇게 해서 담고 싶은거지요
혹시나 해서 move를 사용해보고 디버깅 해보니 값이 들어가지는 않더라구요
2개의 테이블 구조도 같은 구조로 생성 해놓은 상태입니다.
이게 과연 해결 할수있는 방법이 뭐가 있을까요?
modify 나 update 하려고 했더니 2개다 internal table이라서 안된다는건지
신텍스 에러가 나더라구요.
고수님들 제가 잘 모르는 부분이 많아서 그런데 자세히좀 알려주시면 너무 감사하겠습니다.
댓글 9
-
갈매기
2010.08.24 23:50
-
처음처럼
2010.08.24 23:51
소스 올려주세요~ st_item, it_item 구조가 같은건가요? -
갈매기
2010.08.24 23:52
설마 커밋 안 하신건 아니죠? -
쭈니
2010.08.25 00:33
커밋이요???
2개의 테이블은 구조가 같은 인터널 테이블입니다.
그리고 ALV화면이 뿌려질 구조에 MOVE-CORRESPONDING ST_ITM(실제 값이 있는 인터널 테이블) TO IT_ITM(값을 넣고 싶은 인터널 테이블) 이렇게 하니까 필드랑은 들어갔는데 값이 하나도 안들어갔더라구요.
DATA : BEGIN OF st_itm OCCURS 0,
warpl LIKE zctpm099-warpl,
iwerk LIKE equz-iwerk,
ingrp LIKE equz-ingrp,
gewrk LIKE equz-gewrk,
beber LIKE itob-beber,
tplnr LIKE itob-tplnr,
kostl LIKE itob-kostl,
abckz LIKE itob-abckz,
equnr LIKE equi-equnr,
sitxt LIKE zctpm009-sitxt,
paket LIKE plwp-paket,
zsdat LIKE zctpm099-zsdat,
asflg LIKE zctpm010-asflg,
asval LIKE zctpm010-asval,
* kstbw LIKE zcspm070-kstbw,
zedat LIKE zctpm099-zedat,
zstut LIKE zctpm099-zstut,
eqart LIKE equi-eqart,
stinr LIKE zctpm010-stinr,
mark,
END OF st_itm. --> 이러한 구조로 IT_ITM도 있다는것이지요
그리고 CASE e_ucomm.
when 'CREATE'.
PERFORM CREATE_ITEM_0100.
FORM CREATE_ITEM_0100.
여기서 MOVE ST_ITM TO IT_ITM.이렇게 했거든요.
이렇게 하면 안되는건가요
ENDFORM.
-
아밥의길로
2010.08.25 00:45
그렇게 하면 헤더에서 헤더로 옮겨 질꺼에요
IT_ITM[] = ST_ITM[].
바디를 옮길땐 이렇게 하면 될꺼에요
-
아밥 잭
2010.08.25 01:01
아밥의길로님이 정답을 말씀하셨네요.
구조가 똑같으면 IT_ITM[] = ST_ITM[]. 이렇게 하시고요.
만일, move-corresponding 를 사용하실려면 st_itm테이블을 loop로 도려서 해야합니다.
loop at st_itm.
move-corresponding st_itm to it_itm.
append it_itm.
endloop.
그리고 move는 loop문안에서 사용하면되는되요, 필드명을 다적어서 일일이 적어주어야합니다.
만일 필드명이 틀리면
loop at st_itm.
move st_itm-필드명 to it_itm-필드명.
,,,,
append it_itm.
endloop.
그런데 성능개선면에서 같은 구조를 loop로 돌리면 안됩니다.
감사합니다.
-
갈매기
2010.08.25 01:03
제가 커밋이라고 한건 디비단에 반영이 안됐다는건지 해서 여쭤본거구요
한번에 할거면 위에 아밥길 말씀처럼 [] 하시던지 아니면 루프 돌리시던지 하면 되겠네요.
-
쭈니
2010.08.25 01:44
여러분들의 도움으로 그래도 조금씩 잘 해결해 나가고 있습니다. 정말 감사합니다.
아직 배울것도 많지만 고민고민해보고 이렇게 저렇게 해보는중이긴 하나.. 아직 부족하다라는 생각밖에 들지 않네요
-
초밥
2010.09.10 22:45
st_itm[] = it[] 구조가같다면 이렇게 해도 되구요.
이건 비슷하지만 테이블로 append 하고 싶으시면 append lines of st_imt to it_itm 요렇게 하시면 테이블 통째로 append 시킬 수도 있답니다.
흠...이건 F1이나 아밥 예제보시면서 하시는 수 밖에는 없을거 같아요....모디파이, 인서트 모두 예제에 케이스 바이 케이스로 설명이 다 되어 있습니다.
예제 티코드는 abapdocu입니다.