[SAP ABAP] ์๋ธ๋ฃจํด(Subroutine) Using, Changing, Tables ๋?
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 ์ ์ฒด๋ฅผ ๊ทธ๋๋ก ๋๊ธธ ์ ์์ต๋๋ค.
๋ฐ์ดํฐ ์์ ์ → ์๋ณธ๋ ์์ ๋ฉ๋๋ค.