๐Ÿง‘‍๐Ÿ’ผ SAP/ABAP

[SAP ABAP] ์„œ๋ธŒ๋ฃจํ‹ด(Subroutine) Using, Changing, Tables ๋ž€?

Jay Din 2025. 6. 27. 19:10
728x90
๋ฐ˜์‘ํ˜•

1๏ธโƒฃ ์„œ๋ธŒ๋ฃจํ‹ด(Subroutine) ์ด๋ž€?

PERFORM ...

FROM.
..
..
ENDFORM.

 

์„œ๋ธŒ๋ฃจํ‹ด์€ ํ”„๋กœ๊ทธ๋žจ ๋‚ด์—์„œ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ฝ”๋“œ ์กฐ๊ฐ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

๋‹ค๋ฅธ ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ•ด ๋ดค๋‹ค๋ฉด `ํ•จ์ˆ˜(๋ฉ”์†Œ๋“œ)` ๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค.

 

2๏ธโƒฃ USING, CHANGING, TABLES ์š”์•ฝ ์ •๋ฆฌ

SAP ABAP์˜ `USING`, `CHANGING`, `TABLES`๋Š” ์„œ๋ธŒ๋ฃจํ‹ด(PERFROM) ๋˜๋Š” FUNCTION MODULE์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

USING ๊ฐ’๋งŒ ์ „๋‹ฌ, ์„œ๋ธŒ๋ฃจํ‹ด์—์„œ ์ˆ˜์ • ๋ถˆ๊ฐ€
CHANGING ๊ฐ’์„ ์ „๋‹ฌ๋ฐ›๊ณ , ์„œ๋ธŒ๋ฃจํ‹ด์—์„œ ์ˆ˜์ •ํ•˜๋ฉด ์›๋ณธ๋„ ์ˆ˜์ •๋จ
TABLES Internal Table ๋„˜๊ธธ ๋•Œ ์‚ฌ์šฉ (๊ตฌ๋ฒ„์ „์—์„œ ๋งŽ์ด ์‚ฌ์šฉ)

 

3๏ธโƒฃ USING - ์ฝ๊ธฐ ์ „์šฉ (Input)

โœ”๏ธ ๊ฐœ๋…: ๊ฐ’๋งŒ ์ „๋‹ฌ, ์„œ๋ธŒ๋ฃจํ‹ด์—์„œ ์ˆ˜์ • ๋ถˆ๊ฐ€.

์™ธ๋ถ€์—์„œ ๊ฐ’์„ ๋„˜๊ฒจ์ฃผ๊ธฐ๋งŒ ํ•˜๊ณ , ์„œ๋ธŒ๋ฃจํ‹ด์—์„œ ๊ฐ’์„ ๋ฐ”๊ฟ€ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

PERFORM display_text USING 'Hello SAP'.

FORM display_text USING p_text.
  WRITE: / '์ „๋‹ฌ๋ฐ›์€ ๊ฐ’:', p_text.
ENDFORM.

์‹คํ–‰๊ฒฐ๊ณผ

`p_text`๋Š” ์ฝ๊ธฐ ์ „์šฉ์ž…๋‹ˆ๋‹ค. ๋ฐ”๊ฟ”๋„ ์›๋ณธ์— ์˜ํ–ฅ์ด ์—†์Šต๋‹ˆ๋‹ค.

 

USING ๊ฐ’์„ ๋ณ€๊ฒฝํ•  ๊ฒฝ์šฐ ์˜ค๋ฅ˜

์„œ๋ธŒ๋ฃจํ‹ด์—์„œ ๋„˜๊ฒจ์ค€ `p_text`๋ฅผ ์ˆ˜์ •ํ•˜๋ฉด ๋ ˆํฌํŠธ ํ™œ์„ฑํ™”๋Š” ๋˜์ง€๋งŒ ์‹คํ–‰ํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์€ ์˜ค๋ฅ˜๊ฐ€ ๋‚˜์˜ต๋‹ˆ๋‹ค.

PERFORM display_text USING 'Hello SAP'.

FORM display_text USING p_text.
  p_text = 'Bye SAP'.               " p_text ์ˆ˜์ •
  WRITE: / '์ „๋‹ฌ๋ฐ›์€ ๊ฐ’:', p_text.
ENDFORM.

 

์˜ค๋ฅ˜ ๋‚ด์šฉ: Error at assignment: Overwritten protected field. "์ฝ๊ธฐ ์ „์šฉ ํ•„๋“œ๋ฅผ ๋ฎ์–ด์“ฐ๋ ค ํ–ˆ์Šต๋‹ˆ๋‹ค."

์ด ์˜ค๋ฅ˜๋Š” SAP์—์„œ PERFORM USING ๊ตฌ๋ฌธ์œผ๋กœ ๋„˜๊ธด ํŒŒ๋ผ๋ฏธํ„ฐ๋Š” "์ฝ๊ธฐ ์ „์šฉ" ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ฐœ์ƒํ•˜๋Š” ์•„์ฃผ SAP๋‹ค์šด ์ œ์•ฝ์ž…๋‹ˆ๋‹ค.

SAP์€ USING์€ ๋ฌด์กฐ๊ฑด '๊ฐ’์„ ์ „๋‹ฌํ•˜๋Š” ๋ชฉ์ '์ด๊ณ , ๊ฐ’์„ ์ˆ˜์ •ํ•  ์ˆ˜ ์—†๋„๋ก ์„ค๊ณ„ํ–ˆ์Šต๋‹ˆ๋‹ค.

์„œ๋ธŒ๋ฃจํ‹ด ์•ˆ์—์„œ `USING` ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์ˆ˜์ •ํ•˜๋ฉด, ํ”„๋กœ๊ทธ๋žจ์˜ ํ๋ฆ„์ด ๊ผฌ์ผ ์œ„ํ—˜์ด ์žˆ์–ด์„œ SAP ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ๊ฐ•์ œ๋กœ ๋ง‰์€ ๊ฒ๋‹ˆ๋‹ค.

 

4๏ธโƒฃ CHANGING - ์ฝ๊ณ  ์ˆ˜์ • (Input + Output)

โœ”๏ธ ๊ฐœ๋…: ๊ฐ’์„ ์ „๋‹ฌ๋ฐ›๊ณ , ์„œ๋ธŒ๋ฃจํ‹ด์—์„œ ์ˆ˜์ •ํ•˜๋ฉด ์›๋ณธ๋„ ์ˆ˜์ •๋จ.

์ž…์ถœ๋ ฅ ๋ชจ๋‘ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ๊ฐ’ ๋„˜๊ฒจ์ฃผ๊ณ , ์ˆ˜์ •ํ•˜๋ฉด ๊ทธ ๊ฐ’์ด ๋‹ค์‹œ ๋ฐ˜์˜๋ฉ๋‹ˆ๋‹ค.

DATA: lv_cnt TYPE i VALUE 5.

PERFORM add_one CHANGING lv_cnt.

WRITE: / '๊ฒฐ๊ณผ:', lv_cnt. " ์ถœ๋ ฅ: 6

FORM add_one CHANGING p_cnt.
  p_cnt = p_cnt + 1.
ENDFORM.

์‹คํ–‰๊ฒฐ๊ณผ

`p_cnt`๋ฅผ ๋ฐ”๊พธ๋ฉด → `lv_cnt`์— ๋ฐ”๋กœ ๋ฐ˜์˜๋ฉ๋‹ˆ๋‹ค.

 

5๏ธโƒฃ TABLES - ํ…Œ์ด๋ธ” ๋„˜๊ธฐ๊ธฐ (์ฃผ๋กœ Internal Table)

โœ”๏ธ ๊ฐœ๋…: Internal Table ๋„˜๊ธธ ๋•Œ ์‚ฌ์šฉ (๊ตฌ๋ฒ„์ „์—์„œ ๋งŽ์ด ์‚ฌ์šฉ)

SAP ECC 6.0์—์„œ๋„ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ,

์š”์ฆ˜์€ `USING` / `CHANGING`์œผ๋กœ Internal Table์„ ๋„˜๊ธฐ๋Š” ๊ฒŒ ๋” ๊ถŒ์žฅ๋ฉ๋‹ˆ๋‹ค.

DATA: LT_DATA TYPE TABLE OF MARA,
      LS_DATA TYPE MARA.

" ๋ฐ์ดํ„ฐ ์ถ”๊ฐ€
LS_DATA-MATNR = 'TEST_MAT_1'.
APPEND LS_DATA TO LT_DATA.

LS_DATA-MATNR = 'TEST_MAT_2'.
APPEND LS_DATA TO LT_DATA.

" ํ…Œ์ด๋ธ” ๋„˜๊ธฐ๊ธฐ
PERFORM UPDATE_TABLE TABLES LT_DATA.

FORM UPDATE_TABLE TABLES PT_TABLE STRUCTURE MARA.

  DATA: LS_PT_TABLE TYPE MARA.

  LOOP AT PT_TABLE INTO LS_PT_TABLE.
    WRITE: / '์ž์žฌ๋ฒˆํ˜ธ:', LS_PT_TABLE-MATNR.
  ENDLOOP.
ENDFORM.

์‹คํ–‰๊ฒฐ๊ณผ

 

`TABLES`๋กœ ๋„˜๊ธฐ๋ฉด Internal Table ์ „์ฒด๋ฅผ ๊ทธ๋Œ€๋กœ ๋„˜๊ธธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ ์ˆ˜์ • ์‹œ → ์›๋ณธ๋„ ์ˆ˜์ •๋ฉ๋‹ˆ๋‹ค.

 

 

728x90
๋ฐ˜์‘ํ˜•