첨부화일은 결과 Table이구요.
저기 ROW마다 ITMNO(Item No.)값을 할당해여 KEY부여해서 ROW가 각 필드의 값이 같아도 다 저장되게하려는데요.
코딩을 어떻게 해야할지 몰라서요.
제가 ABAP을 시작한지 1개월밖에 안되서 모르겠는데.
좀 살려주세요 여러분들 ..ㅠㅠㅠ
제 생각엔 루프로 돌려서 1씩 더하게 한 다음에
ROW마다 할당해준 후
결과에선 안보이게 하려고 하는데 그게 맞는 건지 모르겠네요..ㅠㅠ
댓글 6
-
아밥 잭
2010.08.26 18:55
-
gurebear
2010.08.26 18:59
제말을 이해해주실 분이 있을가 했는데 ㅠㅠ
아밥 잭님 진짜 감사합니다.ㅠㅠ 많은 도움이 될 거 같아요ㅠㅠ
근데 송구하게도 하나더 여쭤보면 위에 COMPANY CODE 필드에서 2010 ,2020 마다 ITMNO를 시작하게 줘야하거든요..
예를 들면
2010 때 ITMNO가 1,2,3,4,5,~
2020 때 ITMNO가 1,2,3,4,5,~
이렇게 해줘야 하는데
그건 WHEN을 써서 루프문을 2번 돌리는게 맞나요?
-
아밥 잭
2010.08.26 19:07
그렇게 하지마시고요.
data : l_cnt1 type i,
l_cnt2 type i.
clear : l_cnt1, l_cnt2.
loop at 인터널테이블.
case 인터널테이블-companycode필드명.
when '2010'.
l-cnt1 = l_cn1 + 1.
인터널테이블-itmno = l_cnt1.
when '2020'.
l-cnt2 = l_cn2 + 1.
인터널테이블-itmno = l_cnt2.
endcase.
modity 인터널테이블.
endloop.
insert ,,.,,.
-
gurebear
2010.08.26 19:46
아밥 잭님!!!!!!ㅠㅠ
정말 고급인력이시네요..ㅠㅠ
염치없게도..ㅠㅠ 마지막 질문드릴려고 하는데ㅠㅠ
결과테이블에 ITMNO 필드가 출력되서요. 값은 저장되는데 출력은 안되게..그러니까 화면에 안나오게 하려면 어떻게 해야하나요..
필드카탈로그에서 선언한거면 NO OUT을 쓰면 되는데 코딩으로 한거라..어떻게 해야될 지 모르겠네요..
정말 정말 감사드립니다. ㅠㅠ
-
아밥 잭
2010.08.26 19:58
예,,ㅎㅎㅎ 일단, 화면은 무엇을 사용했는지 잘 모르겠네요. 보통은 인터널테이블에 있어도 특정필드는 안보여줄 수 있는데.
만일, 특이한 사항이라서 그럴수 없다면. 쌍둥이 인터널테이블을 만들어서 화면출력에는 itmno필드를 빼고요. 쌍둥이
인터널테이블에는 itmno필드를 넣어서 저장할 때 사용하는 방법도 있습니다. 대충 설명하자면....
data : l_cnt1 type i,
l_cnt2 type i.
clear : l_cnt1, l_cnt2.
loop at 인터널테이블.
case 인터널테이블-companycode필드명.
move-corresponding 인터널테이블 to 쌍둥이인터널테이블. " 같은 필드명을 가지고 있으면 한번에 값을 넣어 줌.
when '2010'.
l-cnt1 = l_cn1 + 1.
쌍둥이인터널테이블-itmno = l_cnt1.
when '2020'.
l-cnt2 = l_cn2 + 1.
쌍둥이인터널테이블-itmno = l_cnt2.
endcase.
append 쌍둥이인터널테이블.
clear : 인터널테이블, 쌍둥이인터널테이블. " 헤더 clear.
endloop.
insert ,,.,,. from table 쌍둥이인터널테이블.
이렇게 하시는것이 어떤지요.
글로 대화를 하니 제가 질문을 제대로 이해 했는지 모르겠습니다.
수고하세요.
-
gurebear
2010.08.26 22:08
잭님..ㅠㅠ
감사합니다..ㅠㅠ제가 하루동안 해결못한걸 해주셨어요 ㅠㅠ
감사합니다 진짜 ㅠㅠ
지금 화면에 있는것을 ITMNO를 부여해서 그대로 저장하고 싶다는 이야기지요.
1. 지금 결과 화면을 나타낼 때 인터널 테이블에 itmno필드를 만들어서 그 때 넣어주고,
저장할 때 인터널테이블을 inset문이나 modify문장을 사용해서 저장하세요.
2. 1번처럼 미리 itmno를 만들기 곤란하면, 님이 말씀하신 방법으로해도 상관은 없을것 같습니다.
loop at 결과인터널테이블.
결과인터널테이블-itmno = sy-tabix.
modify 결과 인터널테이블.
endloop.
insert 테이블명 from table 결과 인터널테이블.
if sy-subrc = 0.
commit work.
message ,,,,
else.
rollback work.
message ,,,,
endif.
tip : 만일, 중복을 허용하면서 저장하려면
insert 테이블명 from table 결과 인터널테이블 accepting duplicate keys.
원하시는 답변이 맞는지 모르겠습니다.
수고하세요.