๐Ÿ“Œ ABAP ๋‚ด๋ถ€ ํ…Œ์ด๋ธ” ์กฐ์ž‘ 4์ด์‚ฌ ๋น„๊ต (APPEND, INSERT, COLLECT, MODIFY)

J._NA ๊ฐœ๋ฐœ์ผ์ง€ยท2025๋…„ 4์›” 16์ผ

๐Ÿ”น APPEND
ํ•ญ์ƒ ๋งˆ์ง€๋ง‰(๋)์— ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
ํ‘œ์ค€ ํ…Œ์ด๋ธ”์—์„œ ์ž์ฃผ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
์ž๋™์œผ๋กœ ์ธ๋ฑ์Šค ์ฆ๊ฐ€ (๋ช…์‹œ์ ์ธ ์œ„์น˜ ํ•„์š” ์—†์Œ)

APPEND VALUE #( name = 'John' age = 30 ) TO lt_people.

๐Ÿ”น INSERT
ํŠน์ • ์œ„์น˜(INDEX) ๋˜๋Š” ์กฐ๊ฑด(ํ‚ค) ์— ๋”ฐ๋ผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
ํ‘œ์ค€ ํ…Œ์ด๋ธ”๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ •๋ ฌ ํ…Œ์ด๋ธ”, ํ•ด์‹œ ํ…Œ์ด๋ธ”์—๋„ ์‚ฌ์šฉ ๊ฐ€๋Šฅ.
์ค‘๊ฐ„ ์‚ฝ์ž…์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
ํ‚ค๊ฐ€ ์ค‘๋ณต๋˜๋ฉด ์˜ค๋ฅ˜ ๋ฐœ์ƒ (์ •๋ ฌ/ํ•ด์‹œ ํ…Œ์ด๋ธ”์˜ ๊ฒฝ์šฐ)

INSERT VALUE #( name = 'Alice' age = 25 ) INTO lt_people INDEX 2.

๐Ÿ‘‰ 2๋ฒˆ์งธ ์œ„์น˜์— ์‚ฝ์ž… (๊ธฐ์กด ๊ฐ’๋“ค์€ ๋’ค๋กœ ๋ฐ€๋ฆผ)

INSERT VALUE #( name = 'Tom' age = 28 ) INTO TABLE lt_people.

๐Ÿ‘‰ ์ •๋ ฌ/ํ•ด์‹œ ํ…Œ์ด๋ธ”์ผ ๊ฒฝ์šฐ, ํ‚ค ๊ธฐ์ค€์œผ๋กœ ์ ์ ˆํ•œ ์œ„์น˜์— ์‚ฝ์ž…๋จ.
ํ‚ค ์ค‘๋ณต ์‹œ sy-subrc๊ฐ€ 4๋กœ ์„ค์ •๋จ.

๐Ÿ”น COLLECT
๊ฐ™์€ ํ‚ค๊ฐ€ ์žˆ์œผ๋ฉด ํ•ฉ์‚ฐ, ์—†์œผ๋ฉด ์ƒˆ๋กœ ์ถ”๊ฐ€ํ•˜๋Š” ์ง‘๊ณ„์šฉ ์‚ฝ์ž… ๋ช…๋ น์–ด์ž…๋‹ˆ๋‹ค.

ํ‘œ์ค€ ํ…Œ์ด๋ธ”๊ณผ ์ •๋ ฌ ํ…Œ์ด๋ธ”์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅ

ํ•ด์‹œ ํ…Œ์ด๋ธ”์—์„œ๋Š” ์‚ฌ์šฉ ๋ถˆ๊ฐ€ (COLLECT์€ ๋™์ž‘ ์•ˆ ํ•จ)

์ค‘๋ณต ํ‚ค๊ฐ€ ์กด์žฌํ•  ๊ฒฝ์šฐ:
๐Ÿ‘‰ ์ˆซ์ž ํ•„๋“œ๋Š” ์ž๋™์œผ๋กœ ๋ˆ„์ , ๋‹ค๋ฅธ ํ•„๋“œ๋Š” ์œ ์ง€
๐Ÿ‘‰ ์ƒˆ๋กœ์šด ํ–‰์€ ์ถ”๊ฐ€๋˜์ง€ ์•Š์Œ

์ค‘๋ณต ํ‚ค๊ฐ€ ์—†์„ ๊ฒฝ์šฐ:
๐Ÿ‘‰ ์ƒˆ๋กœ์šด ํ–‰์œผ๋กœ ์ถ”๊ฐ€

ํ‚ค ํ•„๋“œ๊ฐ€ ์ •์˜๋˜์–ด ์žˆ์–ด์•ผ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค
(์˜ˆ: WITH DEFAULT KEY, WITH UNIQUE KEY matnr ๋“ฑ)

TYPES: BEGIN OF ty_stock,
         matnr TYPE matnr,
         qty   TYPE i,
       END OF ty_stock.

DATA: lt_stock TYPE STANDARD TABLE OF ty_stock WITH DEFAULT KEY,
      wa_stock TYPE ty_stock.

wa_stock-matnr = 'M001'.
wa_stock-qty = 5.
COLLECT wa_stock INTO lt_stock.

wa_stock-qty = 3.
COLLECT wa_stock INTO lt_stock.

๐Ÿ”„ ์ž์žฌ๋ฒˆํ˜ธ๊ฐ€ ๊ฐ™์œผ๋ฉด lfimg๋ฅผ ์ž๋™ ํ•ฉ์‚ฐ โ†’ ์ด ๋‚ฉํ’ˆ ์ˆ˜๋Ÿ‰ ๊ตฌํ•จ

๐Ÿ”น MODIFY
๊ธฐ์กด ํ–‰์„ ์ˆ˜์ •ํ•˜๊ฑฐ๋‚˜, ์กฐ๊ฑด์— ๋”ฐ๋ผ ์ƒˆ๋กœ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋Š” ๋ช…๋ น์–ด์ž…๋‹ˆ๋‹ค.

๐Ÿ“Œ ์˜ˆ์ œ ์ƒํ™ฉ๋ณ„ ์‚ฌ์šฉ

  1. ํ‚ค ๊ธฐ์ค€ ์กฐ๊ฑด ์ˆ˜์ •
    ๐Ÿ“Œ ์ƒํ™ฉ: matnr = 'A100'์ธ ์ž์žฌ์˜ ์ˆ˜๋Ÿ‰๋งŒ ๋ณ€๊ฒฝ
MODIFY lt_items FROM VALUE #( matnr = 'A100' qty = 50 )
                 TRANSPORTING qty
                 WHERE matnr = 'A100'.

์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ์ฒซ ๋ฒˆ์งธ ํ–‰๋งŒ ์ˆ˜์ •๋จ
TRANSPORTING ์—†์ด ์“ฐ๋ฉด ์ „์ฒด ํ•„๋“œ๋ฅผ ๋ฎ์–ด์”€

  1. ์ธ๋ฑ์Šค๋กœ ์ˆ˜์ •
    ๐Ÿ“Œ ์ƒํ™ฉ: 3๋ฒˆ์งธ ํ–‰์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ •
READ TABLE lt_items INDEX 3 INTO wa_item.
wa_item-qty = 100.
MODIFY lt_items FROM wa_item INDEX 3.
  1. ์กฐ๊ฑด ๋ฏธ์กด์žฌ ์‹œ, ์ƒˆ๋กœ ์ถ”๊ฐ€ (ํ‘œ์ค€ ํ…Œ์ด๋ธ”๋งŒ)
MODIFY lt_items FROM VALUE #( matnr = 'B200' qty = 30 ).

matnr = 'B200' ์ด ์—†์œผ๋ฉด ์ƒˆ๋กœ ์ถ”๊ฐ€๋จ (ํ‘œ์ค€ ํ…Œ์ด๋ธ”์˜ ๊ฒฝ์šฐ)
์ •๋ ฌ/ํ•ด์‹œ ํ…Œ์ด๋ธ”์—์„œ๋Š” ํ‚ค๊ฐ€ ์—†์œผ๋ฉด sy-subrc = 4

  1. ๋‹ค์ˆ˜ ์กฐ๊ฑด ํ•„๋“œ ์ˆ˜์ •
MODIFY lt_items FROM VALUE #( qty = 999 )
       TRANSPORTING qty
       WHERE matnr = 'Z999' AND plant = '1000'.
profile
์•„๋ฐฅ & ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž

0๊ฐœ์˜ ๋Œ“๊ธ€