HANA Version
* SELECT A~VBELN,
* A~VKORG,
* B~VTEXT,
* A~SPART,
* A~VTWEG,
* A~KUNNR,
* C~VTEXT AS STEXT,
* D~NAME1
* FROM VBAK AS A LEFT OUTER JOIN TVKOT AS B
* ON B~SPRAS = @SY-LANGU " SPRAS 필드 존재 시 반드시 넣어줘야한다. SY-LANGU
* AND B~VKORG = A~VKORG
* LEFT OUTER JOIN TSPAT AS C
* ON C~SPRAS = @SY-LANGU
* AND C~SPART = A~SPART
* LEFT OUTER JOIN KNA1 AS D
* ON D~SPRAS = @SY-LANGU
* AND D~KUNNR = A~KUNNR
* UP TO 5 ROWS
* INTO CORRESPONDING FIELDS OF TABLE @GT_LIST.
ECC Version
DATA : LT_TVKOT TYPE TABLE OF TVKOT,
LT_TSPAT TYPE TABLE OF TSPAT.
DATA : BEGIN OF LS_KNA1,
KUNNR TYPE KNA1-KUNNR,
NAME1 TYPE KNA1-NAME1,
END OF LS_KNA1,
LT_KNA1 LIKE TABLE OF LS_KNA1.
DATA : LT_TEMP LIKE TABLE OF LS_HEADER.
SELECT A~VBELN,
A~VKORG,
A~SPART,
A~VTWEG,
A~KUNNR
FROM VBAK AS A
INTO CORRESPONDING FIELDS OF TABLE @GT_LIST.
" 1. ITAB 값 존재 여부(NOT INITIAL)
" 2. 중복 제거
IF GT_LIST[] IS NOT INITIAL.
" 1. VKORG의 Description -> LT_TVKOT에 담아둠
LT_TEMP[] = GT_LIST[].
SORT LT_TEMP[] BY VKORG.
DELETE ADJACENT DUPLICATES FROM LT_TEMP[] COMPARING VKORG.
SELECT B~VKORG,
B~VTEXT
FROM TVKOT AS B
FOR ALL ENTRIES IN @LT_TEMP
WHERE B~SPRAS = @SY-LANGU
AND B~VKORG = @LT_TEMP-VKORG
INTO CORRESPONDING FIELDS OF TABLE @LT_TVKOT.
" 2. SPART의 Description -> LT_TSPAT에 담아둠, CLEAR 하는 이유는 테이블에 잔여 데이터가 남아 있는지 확인하려고.
CLEAR : LT_TEMP[].
LT_TEMP[] = GT_LIST[].
SORT LT_TEMP[] BY SPART.
DELETE ADJACENT DUPLICATES FROM LT_TEMP[] COMPARING SPART.
SELECT A~SPART,
A~VTEXT
FROM TSPAT AS A
FOR ALL ENTRIES IN @LT_TEMP
WHERE A~SPRAS = @SY-LANGU
AND A~SPART = @LT_TEMP-SPART
INTO CORRESPONDING FIELDS OF TABLE @LT_TSPAT.
" 3. KUNNR의 NAME1 -> LT_KNA1
CLEAR : LT_TEMP[].
LT_TEMP[] = GT_LIST[].
SORT LT_TEMP[] BY KUNNR.
DELETE ADJACENT DUPLICATES FROM LT_TEMP[] COMPARING KUNNR.
SELECT A~KUNNR,
A~NAME1
FROM KNA1 AS A
FOR ALL ENTRIES IN @LT_TEMP
WHERE A~KUNNR = @LT_TEMP-KUNNR
INTO CORRESPONDING FIELDS OF TABLE @LT_KNA1.
HANA VERSION
-> MEMORY DB이기에 DB 성능도 많이 좋아져서 DB에서 가급적 처리해서 모든걸 진행하려는 방식
FOR ALL ENTRIES (ECC VERSION)
-> 위 구문을 쓸 당시에는 DB성능이 안좋았음. JOIN 갯수의 제약도 존재했음.
APPLICATION MEMORY에 데이터를 조회새서 올려두고 거기서 찾아서 대입하는 방식.