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 ๊ตฌ๋ฌธ์ ์ฌ์ฉํ๋ ๊ฒ์ด ๋ ํจ์จ์ ์ ๋๋ค.