필드값을 원래 있는 테이블의 필드를 가져와 인터널 테이블을 생성후
데이터를 가져와 출력하고 싶은데 안돼서 질문 드립니다. 이해가 안가시려나요
TYPES : BEGIN OF gs_main,
kunnr LIKE kna1-kunnr,
name1 LIKE kna1-name1,
name2 LIKE kna1-name2,
zbankl LIKE ztss0001-zbankl,
zbankn LIKE ztss0001-zbankn,
msgtyp LIKE ztss0001-msgtyp,
zmsg LIKE ztss0001-zmsg,
datum LIKE ztss0001-datum,
uzeit LIKE ztss0001-uzeit,
uname LIKE ztss0001-uname,
dmbtr TYPE p DECIMALS 0,
dmbtr_tmp TYPE p DECIMALS 0,
shkzg LIKE bsid-shkzg,
END OF gs_main.
DATA : BEGIN OF it_main_r OCCURS 0, "report"
kunnr LIKE kna1-kunnr,
name1 LIKE kna1-name1,
name2 LIKE kna1-name2,
zbankl LIKE ztss0001-zbankl,
zbankn LIKE ztss0001-zbankn,
msgtyp LIKE ztss0001-msgtyp,
zmsg LIKE ztss0001-zmsg,
datum LIKE ztss0001-datum,
uzeit LIKE ztss0001-uzeit,
uname LIKE ztss0001-uname,
dmbtr TYPE p DECIMALS 0,
dmbtr_tmp TYPE p DECIMALS 0,
shkzg LIKE bsid-shkzg,
END OF it_main_r.
FORM get_main_data . "리포트 데이터 가져오기
*CLEAR it_main_r.
*SORT it_main_r.
SELECT kna1~kunnr kna1~name1 kna1~name2 ztss0001~zbankl ztss0001~zbankn
INTO CORRESPONDING FIELDS OF TABLE it_main_r UP TO p_record ROWS
FROM ztss0001
INNER JOIN kna1
ON kna1~kunnr = ztss0001~kunnr
WHERE kna1~kunnr IN s_kunnr1 AND kna1~kunnr <> ''
ORDER BY kna1~kunnr.
ENDFORM. " GET_MAIN_DATA
KNA1에 있는 고객코드1, 이름1,이름2 필드와 zsts0001에 있는 은행코드,계좌번호,~~~~~ 사용자 이름까지의 필드를 가지고
인터널테이블을 생성 후 join을 해서 출력하려고 하는데 그럴려면
KNA1의 데이터를 zsts0001 테이블에 복사를 해야 하는건가요?
* CBO 테이블의 데이타와 KNA1의 데이타를 각각 읽어서 인터널테이블에 저장후
sort한후 read table을 써서 Key값인 kunnr 값으로 값을 매핑해도 됩니다.
sql에서 join문이 코딩은 간결하나 속도가 떨어질수 있습니다.
인터널 테이블에 담는게 좀 번거롭긴하죠.
*--A. cbo select
select *....ㅍ필요필드..
into correponding filelds of tablt itab up to pcnt rows
from ztss0001
where kunnr in s_kunnr.
delete itab where kunnr eq space.
sort....
*--B.kna1 select
if not itab[] is initial.
select *....ㅍ필요필드..
into corresponding fields of table it_kna1
from kna1 for all entries in itab "<<<
where kunnr = itab-kunnr. "<<<
sort....
endif.
*--C. A와 B 값.
loop at itab.
clear it_kna1.
read table it_kna1 with key kunnr = itab-kunnr.
if sy-subrc = 0.
.... it_kna1... 필요필드값들 move
modify itab. "<<<<
endif.
endloop.