๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿง‘‍๐Ÿ’ผ SAP/ABAP

[SAP ABAP] COLLECT ์ด๋ž€? (์˜ˆ์ œ ํฌํ•จ)

by Jay Din 2024. 9. 13.
728x90
๋ฐ˜์‘ํ˜•

COLLECT ์ด๋ž€

COLLECT๋Š” SAP ABAP์—์„œ ์ธํ„ฐ๋„ ํ…Œ์ด๋ธ”์— ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฝ์ž…ํ•˜๋ฉด์„œ ๋™์ผํ•œ ํ‚ค ๊ฐ’์„ ๊ฐ€์ง„ ํ•ญ๋ชฉ์— ๋Œ€ํ•ด ์ˆซ์ž ํ•„๋“œ์˜ ๊ฐ’์„ ์ž๋™์œผ๋กœ ํ•ฉ์‚ฐํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์ฃผ๋กœ ์ง‘๊ณ„ ์ž‘์—…์„ ํ•  ๋•Œ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

COLLECT๋Š” ์ผ๋ฐ˜์ ์ธ APPEND ๋‚˜ INSERT์™€ ๋‹ฌ๋ฆฌ, ํ‚ค ํ•„๋“œ๊ฐ€ ๋™์ผํ•œ ๊ฒฝ์šฐ ํ•ด๋‹น ๋ ˆ์ฝ”๋“œ์˜ ์ˆซ์ž ํ•„๋“œ๋งŒ ํ•ฉ์‚ฐํ•˜๊ณ , ํ‚ค๊ฐ€ ๋‹ค๋ฅด๋ฉด ์ƒˆ๋กœ์šด ํ–‰์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

 

COLLECT ๊ธฐ๋ณธ ๋™์ž‘ ์„ค๋ช…

  1. ํ‚ค ํ•„๋“œ: ํ‚ค ํ•„๋“œ๊ฐ€ ๋™์ผํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ ์ด๋ฏธ ์กด์žฌํ•˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
  2. ์ˆซ์ž ํ•„๋“œ: ํ‚ค ํ•„๋“œ๊ฐ€ ๊ฐ™๋‹ค๋ฉด ์ˆซ์ž ํ•„๋“œ๋ฅผ ์ž๋™์œผ๋กœ ํ•ฉ์‚ฐํ•ฉ๋‹ˆ๋‹ค.
  3. ์ƒˆ ํ–‰ ์ถ”๊ฐ€: ํ‚ค ํ•„๋“œ๊ฐ€ ๋‹ค๋ฅด๋ฉด ์ƒˆ๋กœ์šด ํ–‰์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

 

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.

๊ฒฐ๊ณผ ํ™”๋ฉด

  1. ์ฒซ ๋ฒˆ์งธ COLLECT
    • MATNR = 'A001', MENGE = 10, PRICE = 100.50์ธ ๋ฐ์ดํ„ฐ๋ฅผ ์ธํ„ฐ๋„ ํ…Œ์ด๋ธ”์— ์‚ฝ์ž…ํ•ฉ๋‹ˆ๋‹ค.
  2. ๋‘ ๋ฒˆ์งธ COLLECT
    • ๊ฐ™์€ ์ œํ’ˆ ๋ฒˆํ˜ธ(MATNR = 'A001')์ด๋ฏ€๋กœ ์ˆซ์ž ํ•„๋“œ(MENGE, PRICE)๋งŒ ํ•ฉ์‚ฐ๋ฉ๋‹ˆ๋‹ค.
      ์ฆ‰, ๊ธฐ์กด์— ์‚ฝ์ž…๋œ ์ˆ˜๋Ÿ‰ 10์— 20์„ ๋”ํ•ด 30์ด ๋ฉ๋‹ˆ๋‹ค. ๊ฐ€๊ฒฉ์€ 100.50์— 100.50์„ ๋”ํ•ด์„œ 201.00์ด ๋ฉ๋‹ˆ๋‹ค.
  3. ์„ธ ๋ฒˆ์งธ COLLECT
    • MATNR = 'A002'์ธ ๋‹ค๋ฅธ ์ œํ’ˆ์ด๋ฏ€๋กœ ์ƒˆ๋กœ์šด ํ–‰์ด ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค.
  4. ty_sales ์—์„œ์˜ ํ‚ค ํ•„๋“œ: ์ฒซ ๋ฒˆ์งธ ํ•„๋“œ๋ถ€ํ„ฐ ์ค‘๋ณต ์—ฌ๋ถ€ ํ™•์ธ
    1. MATNR
    2. MENGE
    3. PRICE

์ฆ‰ ์œ„ ์˜ˆ์ œ์—์„œ MATNR(์ œํ’ˆ๋ฒˆํ˜ธ) ํ•„๋“œ๋Š” ์ค‘๋ณต์„ ๊ฒ€์‚ฌํ•˜๋Š” ํ‚ค ํ•„๋“œ ์ค‘ ํ•˜๋‚˜๋กœ ๊ฐ„์ฃผ๋ฉ๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ MATNR ๊ฐ€ ๋‹ค๋ฅด๋ฉด ๋‹ค๋ฅธ ํ–‰์œผ๋กœ ์ฒ˜๋ฆฌ๋˜๋ฉฐ, ์ˆซ์žํ˜• ํ•„๋“œ๊ฐ€ ํ•ฉ์‚ฐ๋˜์ง€ ์•Š๊ณ  ์ƒˆ๋กœ์šด ํ–‰์ด ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค.

 

728x90
๋ฐ˜์‘ํ˜•