COLLECT ์ด๋
COLLECT๋ SAP ABAP์์ ์ธํฐ๋ ํ ์ด๋ธ์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ํ๋ฉด์ ๋์ผํ ํค ๊ฐ์ ๊ฐ์ง ํญ๋ชฉ์ ๋ํด ์ซ์ ํ๋์ ๊ฐ์ ์๋์ผ๋ก ํฉ์ฐํ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. ์ด๋ ์ฃผ๋ก ์ง๊ณ ์์ ์ ํ ๋ ์ ์ฉํฉ๋๋ค.
COLLECT๋ ์ผ๋ฐ์ ์ธ APPEND ๋ INSERT์ ๋ฌ๋ฆฌ, ํค ํ๋๊ฐ ๋์ผํ ๊ฒฝ์ฐ ํด๋น ๋ ์ฝ๋์ ์ซ์ ํ๋๋ง ํฉ์ฐํ๊ณ , ํค๊ฐ ๋ค๋ฅด๋ฉด ์๋ก์ด ํ์ ์ถ๊ฐํฉ๋๋ค.
COLLECT ๊ธฐ๋ณธ ๋์ ์ค๋ช
- ํค ํ๋: ํค ํ๋๊ฐ ๋์ผํ ๋ฐ์ดํฐ๊ฐ ์ด๋ฏธ ์กด์ฌํ๋์ง ํ์ธํฉ๋๋ค.
- ์ซ์ ํ๋: ํค ํ๋๊ฐ ๊ฐ๋ค๋ฉด ์ซ์ ํ๋๋ฅผ ์๋์ผ๋ก ํฉ์ฐํฉ๋๋ค.
- ์ ํ ์ถ๊ฐ: ํค ํ๋๊ฐ ๋ค๋ฅด๋ฉด ์๋ก์ด ํ์ ์ถ๊ฐํฉ๋๋ค.
COLLECT์ ํค ํ๋ ๊ฒฐ์ ๋ฐฉ์
COLLECT๋ ์ธํฐ๋ ํ ์ด๋ธ์ ์ฒซ ๋ฒ์งธ ํ๋๋ถํฐ ์ฐจ๋ก๋๋ก ๋น๊ตํ๋ฉด์ ํค ํ๋๋ฅผ ๊ฒฐ์ ํฉ๋๋ค.
๋ฐ์ดํฐ๊ฐ ์ฝ์ ๋ ๋ ์ค๋ณต๋ ํค๋ฅผ ์ฐพ๊ธฐ ์ํด ์ฒ์๋ถํฐ ์์ฐจ์ ์ผ๋ก ํ๋๋ฅผ ๋น๊ตํ๋ฉฐ, ํ๋๋ผ๋ ๋ค๋ฅธ ํ๋๊ฐ ๋์ค๋ฉด ์๋ก์ด ํ์ผ๋ก ๊ฐ์ฃผํฉ๋๋ค.
COLLECT ์์
๊ธฐ๋ณธ ์์
๋ ๊ฐ์ ์ ํ์ ๋ํ ํ๋งค ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ , ์ ํ ๋ฒํธ(MATNR)๊ฐ ๋์ผํ ๊ฒฝ์ฐ ํด๋น ์๋(MENGE)๊ณผ ๊ฐ๊ฒฉ(Price)์ ํฉ์ฐํ๋ ค๊ณ ํฉ๋๋ค.
TYPES: BEGIN OF ty_sales,
matnr TYPE char10, " ์ ํ ๋ฒํธ
menge TYPE i, " ์๋
price TYPE p DECIMALS 2, " ๊ฐ๊ฒฉ
END OF ty_sales.
DATA: lt_sales TYPE TABLE OF ty_sales, " ์ธํฐ๋ ํ
์ด๋ธ ์ ์ธ
wa_sales TYPE ty_sales. " ์์
์์ญ ์ ์ธ
" ์ฒซ ๋ฒ์งธ ๋ฐ์ดํฐ ์ถ๊ฐ
wa_sales-matnr = 'A001'.
wa_sales-menge = 10.
wa_sales-price = '100.50'.
-- ์ ํ ๋ฒํธ A001, ์๋ 10, ๊ฐ๊ฒฉ 100.50 ์ถ๊ฐ
COLLECT wa_sales INTO lt_sales.
" ๋ ๋ฒ์งธ ๋ฐ์ดํฐ ์ถ๊ฐ (๊ฐ์ ์ ํ ๋ฒํธ)
wa_sales-matnr = 'A001'.
wa_sales-menge = 20.
wa_sales-price = '100.50'.
-- ์ ํ ๋ฒํธ A001, ์๋ 20, ๊ฐ๊ฒฉ 100.50 ์ถ๊ฐ
COLLECT wa_sales INTO lt_sales.
" ์ธ ๋ฒ์งธ ๋ฐ์ดํฐ ์ถ๊ฐ (๋ค๋ฅธ ์ ํ ๋ฒํธ)
wa_sales-matnr = 'A002'.
wa_sales-menge = 5.
wa_sales-price = '200.00'.
-- ์ ํ ๋ฒํธ A002, ์๋ 5, ๊ฐ๊ฒฉ 200.00 ์ถ๊ฐ
COLLECT wa_sales INTO lt_sales.
" ํ
์ด๋ธ ์ถ๋ ฅ
LOOP AT lt_sales INTO wa_sales.
WRITE: / '์ ํ ๋ฒํธ:', wa_sales-matnr,
' ์๋:', wa_sales-menge,
' ๊ฐ๊ฒฉ:', wa_sales-price.
ENDLOOP.
- ์ฒซ ๋ฒ์งธ COLLECT
- MATNR = 'A001', MENGE = 10, PRICE = 100.50์ธ ๋ฐ์ดํฐ๋ฅผ ์ธํฐ๋ ํ ์ด๋ธ์ ์ฝ์ ํฉ๋๋ค.
- ๋ ๋ฒ์งธ COLLECT
- ๊ฐ์ ์ ํ ๋ฒํธ(MATNR = 'A001')์ด๋ฏ๋ก ์ซ์ ํ๋(MENGE, PRICE)๋ง ํฉ์ฐ๋ฉ๋๋ค.
์ฆ, ๊ธฐ์กด์ ์ฝ์ ๋ ์๋ 10์ 20์ ๋ํด 30์ด ๋ฉ๋๋ค. ๊ฐ๊ฒฉ์ 100.50์ 100.50์ ๋ํด์ 201.00์ด ๋ฉ๋๋ค.
- ๊ฐ์ ์ ํ ๋ฒํธ(MATNR = 'A001')์ด๋ฏ๋ก ์ซ์ ํ๋(MENGE, PRICE)๋ง ํฉ์ฐ๋ฉ๋๋ค.
- ์ธ ๋ฒ์งธ COLLECT
- MATNR = 'A002'์ธ ๋ค๋ฅธ ์ ํ์ด๋ฏ๋ก ์๋ก์ด ํ์ด ์ถ๊ฐ๋ฉ๋๋ค.
- ty_sales ์์์ ํค ํ๋: ์ฒซ ๋ฒ์งธ ํ๋๋ถํฐ ์ค๋ณต ์ฌ๋ถ ํ์ธ
- MATNR
- MENGE
- PRICE
์ฆ ์ ์์ ์์ MATNR(์ ํ๋ฒํธ) ํ๋๋ ์ค๋ณต์ ๊ฒ์ฌํ๋ ํค ํ๋ ์ค ํ๋๋ก ๊ฐ์ฃผ๋ฉ๋๋ค.
๋ฐ๋ผ์ MATNR ๊ฐ ๋ค๋ฅด๋ฉด ๋ค๋ฅธ ํ์ผ๋ก ์ฒ๋ฆฌ๋๋ฉฐ, ์ซ์ํ ํ๋๊ฐ ํฉ์ฐ๋์ง ์๊ณ ์๋ก์ด ํ์ด ์ถ๊ฐ๋ฉ๋๋ค.