Table 에 있는 값을 Select 해서 다른 Table 에 Insert 하려고 합니다.
완전 기초지식으로 쿼리를 만들었는데요.
원하는 데로 되질 않네요.
제가 뭘 잘못한걸까요??
Top 에는 다음과 같이 선언 했구요.
TABLES : vbak, zzwarrobp.
TYPES : BEGIN OF it_vbak,
vbeln TYPE vbak-vbeln,
ernam TYPE vbak-ernam,
aedat TYPE vbak-aedat,
zzwar_stdate_end TYPE vbak-zzwar_stdate_end,
zzwar_lasdlv_end TYPE vbak-zzwar_lasdlv_end,
zzewa_month TYPE vbak-zzewa_month,
END OF it_vbak.
DATA : it_vbak TYPE STANDARD TABLE OF zzwarrobp INITIAL SIZE 0,
wa_vbak TYPE it_vbak.
DATA : ok_code TYPE sy-ucomm.
---------------------------------------------------------------------------------------
PAI 에는 다음과 같이 쿼리를 작성했습니다.
CASE ok_code.
WHEN 'UPDT'.
SELECT *
INTO CORRESPONDING FIELDS OF TABLE it_vbak FROM vbak
IF sy-subrc = 0.
* LOOP AT it_vbak INTO wa_vbak.
INSERT zzwarrobp FROM TABLE it_vbak ACCEPTING DUPLICATE KEYS.
COMMIT WORK.
ELSE.
ROLLBACK WORK.
ENDIF.
댓글 8
-
밥~~
2010.12.07 17:22
-
버미!
2010.12.07 20:40
it_vbak의 정체가 뭘까? types로도 선언하고 Data로도 선언하고..음..
안해봤는데..저렇게 하면 it_vbak 구조는 types로 선언한 구조일까? zzwarrobp 구조일까?
insert 테이블이니 구조는 zzwarrobp여야 할터
-
imgood
2010.12.08 00:28
네, 저도 첨이라 어떻게 선언해야할지 감이 없어서리..
it_vbak 는 인터널테이블 맞구요, Type 부분을 주석으로 처리하고 돌려보니
Error : Type "It_VBAK" is unknown 이라고 나오는데요..
이 메세지 때문에 type 선언을 제가 했던 것 같아요. 어떻게 풀어야 할지..
-
버미!
2010.12.08 00:35
정확히 하시고자 하는 것이 무엇인지요?
vbak에 있는 내용을 조회해서 zzwarrobp 테이블에 저장하려는 것인가요?
이게 맞다면 대략 아래와 같이.
Data : lt_vbak~~~type vbak~~~테이블 선언...
Data : lt_zzwarrobp type table of zzwarrobp initial size 0,
ls_zzwarrobp type zzwarrobp.
select * from vbak into table lt_vbak~~~
check lt_vbak is not initial.
loop at lt_vbak into ls_vbak.
move-corresponding ls_vbak to ls_zzwarrobp
append ls_zzwarrobp to lt_zzwarrobp.
clear : ls_vbak, ls_zzwarrobp
endloop.
if lt_zzwarrobp is not initial.
insert 구문
if sy-subrc eq 0.
commit work..
else.
rollback work.
endif.
endif.
-
imgood
2010.12.08 04:10
네, vbak 에 있는 일부 필드를, zzwarrobp 테이블에 insert 하는겁니다.
it_vbak 인터널 테이블 에 넣어서 이걸 zzwarrobp 테이블에 넣을건데 왜 ls_vbak 랑 ls_zzwarrobp 가 필요한건가요?
-
imgood
2010.12.08 04:29
the field "ls_vbak" is unknown, but there is a field with the similar name "lt_vbak".. 라고 에러가 뜨네요..
-
버미!
2010.12.08 18:42
F1 : Internal Table 참조하시고요..
테이블 선언할 때 헤더를 포함하냐 안하냐에 따라서 헤더(Work Area)를 만들어서 Itab에 넣어야 합니다.
-
imgood
2010.12.09 01:15
버미!님 덕분에 잘 해결했습니다 감사합니다.
SELECT *
INTO CORRESPONDING FIELDS OF TABLE it_vbak FROM vbak
--> 마지막 문장에 . 안 찍은거 빼고는 문제없는것 같은데요..
원하는 내용과 오류내용을 자세하게 질문해 주십시요..