[SAP ABAP] FOR ALL ENTRIES IN ์ด๋? (์ฌ์ฉ ์์ ํฌํจ)
1. FOR ALL ENTRIES IN ์ด๋?
FOR ALL ENTRIES IN ๊ตฌ๋ฌธ์ ABAP์์ ๋๋์ ๋ฐ์ดํฐ๋ฅผ ํจ์จ์ ์ผ๋ก ์ฒ๋ฆฌํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ SQL ๊ตฌ๋ฌธ์ ๋๋ค.
์ด๋ฅผ ํตํด ์ฌ๋ฌ ํ๋๋ฅผ ํ ๋ฒ์ ์กฐํํ ์ ์์ด ์ฑ๋ฅ์ ์ต์ ํํ ์ ์์ต๋๋ค.
์๋ ์๋ฆฌ
FOR ALL ENTRIES IN์ ์ธํฐ๋ ํ ์ด๋ธ์ ๋ฐ์ดํฐ๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ ์ด๋ธ์์ ๊ด๋ จ ๋ฐ์ดํฐ๋ฅผ ์กฐํํ ๋ ์ฌ์ฉ๋ฉ๋๋ค.
์ด๋ฅผ ํตํด ์ฌ๋ฌ ์กฐ๊ฑด์ ํ ๋ฒ์ ์ฒ๋ฆฌํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ๊ทผ ํ์๋ฅผ ์ค์ผ ์ ์์ต๋๋ค.
FOR ALL ENTRIES IN์ผ๋ก WHERE ์กฐ๊ฑด์ ๋น๊ตํ๋ ค๋ฉด TYPE๊ณผ ๊ธธ์ด๊ฐ ๊ฐ์์ผ ํฉ๋๋ค.
2. FOR ALL ENTRIES IN ์ฌ์ฉ ์์
DATA: lt_data TYPE TABLE OF mara, " 'mara' ํ
์ด๋ธ์์ ์์ฌ ๋ฒํธ๋ฅผ ์ ์ฅํ ์ธํฐ๋ ํ
์ด๋ธ
lt_result TYPE TABLE OF marc. " 'marc' ํ
์ด๋ธ์์ ํ๋ํธ ์ ๋ณด๋ฅผ ์ ์ฅํ ์ธํฐ๋ ํ
์ด๋ธ
" 'mara' ํ
์ด๋ธ์์ ์์ฌ ๋ฒํธ๊ฐ 'A'๋ก ์์ํ๋ ์์ฌ๋ฅผ ์กฐํ
SELECT matnr
INTO TABLE lt_data
FROM mara
WHERE matnr LIKE 'A%'. " 'A'๋ก ์์ํ๋ ์์ฌ ๋ฒํธ ์ ํ
" ์ธํฐ๋ ํ
์ด๋ธ์ด ๋น์ด ์์ง ์์ ๊ฒฝ์ฐ์๋ง ๋ ๋ฒ์งธ ์กฐํ ์ํ
IF lt_data IS NOT INITIAL.
" 'marc' ํ
์ด๋ธ์์ ์ฒซ ๋ฒ์งธ ์กฐํ ๊ฒฐ๊ณผ์ ์์ฌ ๋ฒํธ์ ํด๋นํ๋ ํ๋ํธ ์ ๋ณด๋ฅผ ์กฐํ
SELECT matnr werks
INTO TABLE lt_result
FROM marc
FOR ALL ENTRIES IN lt_data
WHERE matnr = lt_data-matnr. " 'lt_data' ํ
์ด๋ธ์ ์์ฌ ๋ฒํธ์ ํด๋นํ๋ ๋ ์ฝ๋ ์ ํ
ENDIF.
- ์ธํฐ๋ ํ
์ด๋ธ ๋น์ด ์์ ํ์ธ:
- FOR ALL ENTRIES ๊ตฌ๋ฌธ์ ์ฌ์ฉํ ๋ ์ธํฐ๋ ํ ์ด๋ธ์ด ๋น์ด ์์ง ์์์ง ํ์ธํด์ผ ํฉ๋๋ค. ๋น์ด ์์ ๊ฒฝ์ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ ์ด๋ธ์ ๋ชจ๋ ํ๋๋ฅผ ๋ฐํํ ์ ์์ต๋๋ค.
- ์กฐ๊ฑด ๊ธฐ๋ฐ ๋ฐ์ดํฐ ์กฐํ:
- FOR ALL ENTRIES๋ ์ธํฐ๋ ํ ์ด๋ธ์ ๊ฐ ํ๋์ ๋ํด ์กฐ๊ฑด์ ์์ฑํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์กฐํํฉ๋๋ค. ์ด๋ฅผ ํตํด ์ฌ๋ฌ ์กฐ๊ฑด์ ํ ๋ฒ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ๊ทผ์ผ๋ก ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
3. FOR ALL ENTRIES IN ์ฅ์
- ํจ์จ์ ์ธ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ๊ทผ:
- ์ฌ๋ฌ ์กฐ๊ฑด์ ํ ๋ฒ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ๊ทผ์ผ๋ก ์ฒ๋ฆฌํ ์ ์์ด ์ฑ๋ฅ์ด ํฅ์๋ฉ๋๋ค.
- ๋๋์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ ๋ ์ ์ฉํฉ๋๋ค.
- ์ฝ๋ ๊ฐ๊ฒฐํ:
- ๋ณต์กํ ์กฐ๊ฑด์ ๊ฐ๋จํ๊ฒ ํํํ ์ ์์ด ์ฝ๋๊ฐ ๊ฐ๊ฒฐํด์ง๋๋ค.
- ์ฌ๋ฌ ๊ฐ์ ๊ฐ๋ณ 'SELECT' ๋ฌธ์ ์ฌ์ฉํ๋ ๊ฒ๋ณด๋จ ์ฝ๋ ์ ์ง๋ณด์๊ฐ ์ฉ์ดํฉ๋๋ค.
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ถํ ๊ฐ์:
- ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ํ ์ ๊ทผ ํ์๋ฅผ ์ค์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ถํ๋ฅผ ๊ฐ์์ํต๋๋ค.
4. FOR ALL ENTRIES IN ๋จ์
- ๋น ์ธํฐ๋ ํ
์ด๋ธ ์ฒ๋ฆฌ ๋ฌธ์ :
- 'FOR ALL ENTRIES'๋ ์ธํฐ๋ ํ ์ด๋ธ์ด ๋น์ด ์์ ๋, ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ ์ด๋ธ์ ๋ชจ๋ ํ๋๋ฅผ ๋ฐํํ ์ ์์ต๋๋ค.
- ์ด๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด ์ธํฐ๋ ํ ์ด๋ธ์ด ๋น์ด์๋์ง ํ์ธํ๋ ์ถ๊ฐ ๋ก์ง์ด ํ์ํฉ๋๋ค.
- ์ค๋ณต ๋ฐ์ดํฐ ๋ฐํ:
- ์ธํฐ๋ ํ ์ด๋ธ์ ์ค๋ณต๋ ๋ ์ฝ๋๊ฐ ์๋ ๊ฒฝ์ฐ, ์ค๋ณต๋ ๊ฒฐ๊ณผ๊ฐ ๋ฐํ๋ ์ ์์ต๋๋ค.
- ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์ธํฐ๋ ํ ์ด๋ธ์์ ์ค๋ณต์ ์ ๊ฑฐํด์ผ ํฉ๋๋ค.
- ์ง๊ณ ํจ์์์ ํธํ์ฑ:
- 'FOR ALL ENTRIES'๋ ์ง๊ณ ํจ์(์: MAX, SUM)์ ํจ๊ป ์ฌ์ฉํ ์ ์์ต๋๋ค.
- ๋ณต์กํ ์ง๊ณ ์์ ์ด ํ์ํ ๊ฒฝ์ฐ ๋ค๋ฅธ ์ ๊ทผ ๋ฐฉ์์ด ํ์ํฉ๋๋ค.
5. ์ต์ ํ๋ ์ฑ๋ฅ์ ์ํ ์ฌ์ฉ ๋ฐฉ๋ฒ
- ๋๋์ ๋ฐ์ดํฐ ์ฒ๋ฆฌ:
- ๋ง์ ํ๋๋ฅผ ํ ๋ฒ์ ์กฐํํ ๋ ์ฑ๋ฅ์ ๊ทน๋ํํ ์ ์์ต๋๋ค.
- ์ฌ๋ฌ ๊ฐ์ ๋จ์ผ ์กฐ๊ฑด ์กฐํ๋ฅผ ํ๋์ ์ฟผ๋ฆฌ๋ก ํตํฉํ ์ ์์ต๋๋ค.
- ์กฐ์ธ ์กฐ๊ฑด์ด ๋ณต์กํ์ง ์์ ๋:
- ๊ฐ๋จํ ์กฐ๊ฑด์ผ๋ก ์ฌ๋ฌ ๋ ์ฝ๋๋ฅผ ์กฐํํ ๋ ์ ๋ฆฌํฉ๋๋ค.
- ๋ณต์กํ ์กฐ์ธ ์กฐ๊ฑด์ด ํ์ํ ๊ฒฝ์ฐ์๋ ์กฐ์ธ ๊ตฌ๋ฌธ์ ์ฌ์ฉํ๋ ๊ฒ์ด ๋ ์ ํฉํ ์ ์์ต๋๋ค.
- ๋น ์ธํฐ๋ ํ
์ด๋ธ ๋ฏธ๋ฆฌ ํ์ธ:
- ์ธํฐ๋ ํ ์ด๋ธ์ด ๋น์ด ์๋ ๊ฒฝ์ฐ, 'IF lt_data IS NOT INITIAL.' ์กฐ๊ฑด์ ์ฌ์ฉํ์ฌ ๋ถํ์ํ ์ฟผ๋ฆฌ ์คํ์ ๋ฐฉ์งํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
- ๋น ์ธํฐ๋ ํ ์ด๋ธ ์ฒ๋ฆฌ ์์
" ์ธํฐ๋ ํ
์ด๋ธ์ด ๋น์ด ์์ง ์์์ง ํ์ธํฉ๋๋ค.
IF lt_data IS NOT INITIAL.
SELECT matnr werks
INTO TABLE lt_result
FROM marc
FOR ALL ENTRIES IN lt_data
WHERE matnr = lt_data-matnr.
ENDIF.
6. ์ ๋ฆฌํ๋ฉด,
FOR ALL ENTRIES ๊ตฌ๋ฌธ์ ํจ์จ์ ์ธ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ๊ทผ์ ํตํด ์ฑ๋ฅ์ ์ต์ ํํ ์ ์๋ ๊ฐ๋ ฅํ ๋๊ตฌ์ ๋๋ค.
๋๋์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๊ฑฐ๋ ๊ฐ๋จํ ์กฐ๊ฑด์ผ๋ก ์ฌ๋ฌ ๋ ์ฝ๋๋ฅผ ์กฐํํ ๋ ํนํ ์ ์ฉํฉ๋๋ค.
ํ์ง๋ง ์ฌ์ฉ ์ ๋น ์ธํฐ๋ ํ ์ด๋ธ ์ฒ๋ฆฌ, ์ค๋ณต ๋ฐ์ดํฐ ๋ฐํ, ์ง๊ณ ํจ์์์ ํธํ์ฑ ๋ฌธ์ ๋ฑ์ ๊ณ ๋ คํด์ผ ํฉ๋๋ค.
์ด๋ฌํ ๋จ์ ์ ์ ์ ํ ์ฒ๋ฆฌํ๋ฉด FOR ALL ENTRIES ๊ตฌ๋ฌธ์ ํตํด ABAP ํ๋ก๊ทธ๋จ์ ์ฑ๋ฅ์ ํฅ์์ํฌ ์ ์์ต๋๋ค.
FOR ALL ENTRIES IN ๊ตฌ๋ฌธ์ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ๊ทผ์ ์ต์ ํํ๋ ๊ฒ์ด ์ ๋ ํจ์จ์ ์ธ์ง,
LOOP AT .. ENDLOOP ์์์ SELECT๋ฅผ ํ๋ ๊ฒ๊ณผ ๋น๊ตํ์ฌ ์ฅ๋จ์ ์ ์์์ ํจ๊ป ์ค๋ช ํ๊ฒ ์ต๋๋ค.
1. ์์
MARA ํ ์ด๋ธ์์ ์์ฌ ๋ฒํธ๊ฐ 'A' ๋ก ์์ํ๋ ๋ชจ๋ ์์ฌ๋ฅผ ์กฐํํ๊ณ ,
ํด๋น ์์ฌ์ ํ๋ํธ ์ ๋ณด๋ฅผ MARC ํ ์ด๋ธ์์ ๊ฐ์ ธ์ค๋ ์์์ ๋๋ค.
์ ๊ทผ ๋ฐฉ์1: LOOP AT .. ENDLOOP ์์ SELECT
DATA: lt_data TYPE TABLE OF mara,
lt_result TYPE TABLE OF marc,
wa_data TYPE mara,
wa_result TYPE marc.
" mara ํ
์ด๋ธ์์ ์์ฌ ๋ฒํธ๊ฐ 'A'๋ก ์์ํ๋ ์์ฌ๋ฅผ ์กฐํ
SELECT matnr
INTO TABLE lt_data
FROM mara
WHERE matnr LIKE 'A%'.
LOOP AT lt_data INTO wa_data.
" ๊ฐ ์์ฌ์ ๋ํด marc ํ
์ด๋ธ์์ ํ๋ํธ ์ ๋ณด๋ฅผ ์กฐํ
SELECT matnr werks
INTO TABLE lt_result
FROM marc
WHERE matnr = wa_data-matnr.
" ๊ฒฐ๊ณผ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ก์ง (์: lt_result๋ฅผ ๋ค๋ฅธ ๋ด๋ถ ํ
์ด๋ธ์ ์ถ๊ฐ)
" ... (์๋ต)
ENDLOOP.
- ์ฅ์ :
- ๊ฐ ์์ฌ๋ง๋ค ๊ฐ๋ณ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์กฐํํ๋ฏ๋ก ์ฝ๋๊ฐ ์ง๊ด์ ์ด๊ณ ์ดํดํ๊ธฐ ์ฝ์ต๋๋ค.
- ๋ฐ์ดํฐ ์กฐํ์ ์ฒ๋ฆฌ ๋ก์ง์ ํจ๊ป ๋ฐฐ์นํ ์ ์์ด์ ๊ฐ๋ ์ฑ์ด ์ข์ต๋๋ค.
- ๋จ์ :
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ๊ทผ ํ์๊ฐ ๋ง์ต๋๋ค. ์๋ฅผ ๋ค์ด, lt_data์ 100๊ฐ์ ์์ฌ๊ฐ ์์ผ๋ฉด MARC ํ ์ด๋ธ์ ๋ํด 100๋ฒ์ SELECT ๋ฌธ์ด ์คํ๋ฉ๋๋ค.
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ํธ์ถ์ด ๋ง์์ง๋ฉด ๋คํธ์ํฌ ํธ๋ํฝ ์ฆ๊ฐ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ถํ๊ฐ ์ฆ๊ฐํฉ๋๋ค.
- ์ฑ๋ฅ ์ ํ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค. ํนํ ๋ฐ์ดํฐ๊ฐ ๋ง์ ๊ฒฝ์ฐ ์คํ ์๊ฐ์ด ๊ธธ์ด์ง ์ ์์ต๋๋ค.
* ๋คํธ์ํฌ ํธ๋ํฝ ์ฆ๊ฐ๋?
๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ๊ทผ์ด ๋ง์์ง์๋ก ์ ํ๋ฆฌ์ผ์ด์ ์๋ฒ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ฒ ๊ฐ์ ๋คํธ์ํฌ ํธ๋ํฝ์ด ์ฆ๊ฐํ ์ ์์ต๋๋ค.
์ด๋ ๋ฐ์ดํฐ ์ ์ก ์๊ฐ๊ณผ ๋๊ธฐ ์๊ฐ์ ์ฆ๊ฐ์์ผ ์ ์ฒด ์ฑ๋ฅ์ ์ํฅ์ ๋ฏธ์น ์ ์์ต๋๋ค.
์ ๊ทผ ๋ฐฉ์ 2: FOR ALL ENTRIES IN ์ฌ์ฉ
DATA: lt_data TYPE TABLE OF mara,
lt_result TYPE TABLE OF marc.
" mara ํ
์ด๋ธ์์ ์์ฌ ๋ฒํธ๊ฐ 'A'๋ก ์์ํ๋ ์์ฌ๋ฅผ ์กฐํ
SELECT matnr
INTO TABLE lt_data
FROM mara
WHERE matnr LIKE 'A%'.
" marc ํ
์ด๋ธ์์ lt_data์ ์์ฌ ๋ฒํธ์ ํด๋นํ๋ ๋ชจ๋ ํ๋ํธ ์ ๋ณด๋ฅผ ์กฐํ
IF lt_data IS NOT INITIAL.
SELECT matnr werks
INTO TABLE lt_result
FROM marc
FOR ALL ENTRIES IN lt_data
WHERE matnr = lt_data-matnr.
ENDIF.
" ๊ฒฐ๊ณผ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ก์ง (์: lt_result๋ฅผ ๋ค๋ฅธ ๋ด๋ถ ํ
์ด๋ธ์ ์ถ๊ฐ)
" ... (์๋ต)
- ์ฅ์ :
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ๊ทผ ํ์๋ฅผ ์ต์ํํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, lt_data์ 100๊ฐ์ ์์ฌ๊ฐ ์์ด๋ MARC ํ ์ด๋ธ์ ๋ํด ํ๋ฒ์ SELECT๋ฌธ์ผ๋ก ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ์กฐํํ ์ ์์ต๋๋ค.
- ์ฑ๋ฅ์ด ํฅ์๋ฉ๋๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค ํธ์ถ์ด ์ค์ด๋ค์ด ๋คํธ์ํฌ ํธ๋ํฝ๊ณผ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ถํ๊ฐ ๊ฐ์ํฉ๋๋ค.
- ๋๋์ ๋ฐ์ดํฐ๋ฅผ ํจ์จ์ ์ผ๋ก ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
- ๋จ์ :
- ์ธํฐ๋ ํ ์ด๋ธ์ด ๋น์ด ์์ ๊ฒฝ์ฐ ๋ชจ๋ ๋ ์ฝ๋๋ฅผ ๋ฐํํ ์ ์์ผ๋ฏ๋ก ์ด๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํ ์ถ๊ฐ ๋ก์ง์ด ํ์ํฉ๋๋ค. (IF lt_data IS NOT INITIAL).
- ์ค๋ณต๋ ๋ ์ฝ๋๊ฐ ์๋ ๊ฒฝ์ฐ ์ค๋ณต๋ ๊ฒฐ๊ณผ๊ฐ ๋ฐํ๋ ์ ์์ต๋๋ค. ์ด๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด ์ธํฐ๋ ํ ์ด๋ธ์ ์ค๋ณต์ ์ ๊ฑฐํด์ผ ํฉ๋๋ค.
- ๋ณต์กํ ์กฐ์ธ์ด๋ ์ง๊ณ ํจ์์ ํจ๊ป ์ฌ์ฉํ๊ธฐ ์ด๋ ต์ต๋๋ค.
2. ์ ๋ฆฌํ๋ฉด
FOR ALL ENTRIES IN ๊ตฌ๋ฌธ์ ๋๋์ ๋ฐ์ดํฐ๋ฅผ ํจ์จ์ ์ผ๋ก ์ฒ๋ฆฌํ๊ณ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ๊ทผ ํ์๋ฅผ ์ต์ํํ๋ ๋ฐ ๋งค์ฐ ์ ์ฉํฉ๋๋ค. ์ด๋ฅผ ํตํด ์ฑ๋ฅ์ ํฌ๊ฒ ํฅ์์ํฌ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๋ด๋ถ ํ ์ด๋ธ์ด ๋น์ด ์๋ ๊ฒฝ์ฐ๋ฅผ ์ฒ๋ฆฌํ๋ ์ถ๊ฐ ๋ก์ง๊ณผ ์ค๋ณต ๋ฐ์ดํฐ ์ฒ๋ฆฌ์ ์ฃผ์ํด์ผ ํฉ๋๋ค.
๋ฐ๋ฉด, LOOP AT ... ENDLOOP ์์์ SELECT๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ์์ ์ง๊ด์ ์ด์ง๋ง, ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ๊ทผ ํ์๊ฐ ๋ง์์ ธ ์ฑ๋ฅ ์ ํ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ๋๋์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ ๋๋ FOR ALL ENTRIES IN ๊ตฌ๋ฌธ์ ์ฌ์ฉํ๋ ๊ฒ์ด ๋ ํจ์จ์ ์ ๋๋ค.