Internal Table(์ธํฐ๋ํ ์ด๋ธ)์ Header Line( ํค๋ ๋ผ์ธ )์ ๊ณผ๊ฑฐ์ ์์ฃผ ์ฌ์ฉ๋์์ง๋ง, ํ์ฌ๋ ๋น์ถ์ฒ๋๋ ๊ธฐ๋ฅ ์ค ํ๋์ ๋๋ค. ์ด ๊ธ์์๋ Header Line์ด๋ ๋ฌด์์ธ์ง, ์ธ์ ์ฌ์ฉ๋๋์ง, ๊ทธ๋ฆฌ๊ณ ์ ๋ ์ด์ ์ฌ์ฉํ์ง ๋ง์์ผ ํ๋์ง ์์๋ณด๋๋ก ํ์.
โ Header Line์ด๋?
Header Line์ด๋ Internal Table(์ธํฐ๋ํ ์ด๋ธ)๊ณผ ๋์ผํ ์ด๋ฆ์ Work Area (structure)์ด๋ค. Internal Table์ ์ ์ธํ ๋ WITH HEADER LINE ๋๋ BEGIN OF ... OCCURS ์ ์ฌ์ฉํ๋ฉด, ๊ทธ ํ ์ด๋ธ๊ณผ ๊ฐ์ ์ด๋ฆ์ ๊ฐ๋ณ ํ์ธ Work Area๊ฐ ์๋์ผ๋ก ํจ๊ป ์์ฑ๋๋ค.
DATA itab TYPE STANDARD TABLE OF mara WITH HEADER LINE.
๋๋,
DATA: BEGIN OF itab OCCURS 0,
matnr TYPE mara-matnr ,
...
END OF itab.
์ ์ฝ๋๋ ๋ค์๊ณผ ๊ฐ์ด ๋ ๊ฐ์ง ์์๋ฅผ ๋์์ ์์ฑํ๋ค.
- itab[ ]: ์ค์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ Internal Table, ํค๋๋ผ์ธ๊ณผ ๊ตฌ๋ถ์ ์ฃผ๊ธฐ ์ํด "[ ]" ๋ก ์์ ๊ฐ์ด ํ๊ธฐ.
- itab: ํ ์ด๋ธ๊ณผ ๊ฐ์ ์ด๋ฆ์ Work Area ( Header Line )
๋๋ฒ๊น ํ๋ฉด์์๋ ์์ ๊ฐ์ด ํค๋๋ผ์ธ์ด ์๋ ์ธํฐ๋ ํ ์ด๋ธ์ธ ๊ฒฝ์ฐ ํค๋๋ผ์ธ์ ๋ชจ์๋ก ํ๊ธฐ, ๋ฐ์ดํฐ๊ฐ ์์ฌ์๋ Body ์ชฝ์ [ ] ๋ก ํ๊ธฐ๋์ด ๊ตฌ๋ถ๋์ด ์ง๋ค.
โ Header Line์ ์ฌ์ฉํ๋ ์ด์
SAP ๊ตฌ๋ฒ์ ABAP์์๋ ๋ฐ๋ณต ์์ ์ ๋จ์ํํ๊ธฐ ์ํด Header Line์ ์์ฃผ ์ฌ์ฉํ์๋ค. ์๋ฅผ ๋ค์ด, Header line์ด ์์ผ๋ฉด, ๋ณ๋๋ก Work Area๋ฅผ ์ ์ธํ์ง ์์๋ READ, LOOP, APPEND ๋ฑ์์ ์๋์ผ๋ก ์ธ์๋์ด ์ฌ์ฉ๋๋ค.
LOOP AT itab. "ํค๋๋ผ์ธ itab์ด ์๋์ผ๋ก INTO ๋์์ด ๋จ
"do something
APPNED itab. " APPEND itab INTO itab
ENDLOOP.
READ TABLE itab WITH KEY matnr = ....
"ํค๋๋ผ์ธ itab์ด ์๋์ผ๋ก INTO ๋์์ด ๋จ
์ด์ฒ๋ผ ์ฝ๋ ์์ฑ์ด ํธํ๊ณ ๊ฐ๋จํด ๋ณด์ธ๋ค๋ ์ฅ์ ์ ์์์ง๋ง, ์ค์ ๋์์ ์์ธกํ๊ธฐ ์ด๋ ต๊ณ , ์๋ฌ๊ฐ ๋ฐ์ํ๊ธฐ ์ฌ์ด ์ฝ๋๊ฐ ๋๋ ๋จ์ ์ด ์๋ค.
โ Header Line์ ์ฌ์ฉํ๋ฉด ์ ๋๋ ์ด์
1. ๋์ผํ ์ด๋ฆ์ด ๋ ๊ฐ์ง ์๋ฏธ๋ฅผ ๊ฐ์ง
- itab: Header Line (Work Area)
- itab[ ]: ์ค์ ํ ์ด๋ธ
๋ณดํต ์ค๋ฌด์์ CLEAR ๊ตฌ๋ฌธ ์ฌ์ฉ ์ ๊ฐ์ฅ ๋ง์ด ์ค์ํ๋๋ฐ, CLEAR itab.์ด๋ผ๊ณ ์ฐ๋ฉด, ํ ์ด๋ธ์ ์ด๊ธฐํํ ๊ฒ์ธ์ง? ์๋๋ฉด Header Line๋ง ์ด๊ธฐํํ ๊ฒ์ธ์ง? ํท๊ฐ๋ฆฐ๋ค. ํด๋น ๊ตฌ๋ฌธ์ Header Line๋ง ์ด๊ธฐํ๋๊ณ , ์ค์ ํ ์ด๋ธ์ ๊ทธ๋๋ก ๋จ์์๊ฒ ๋๋ค. ์ด๋ฐ ์์ ํผ๋์ด ๋ฒ๊ทธ์ ์์ธ์ด ๋๋ค.
2. ํ์ค ๋ฌธ๋ฒ๊ณผ ๋ง์ง ์์
Header Line์ ํด๋์ค ๋ด๋ถ์์๋ ์ฌ์ฉํ ์ ์๋ค. ๋ํ, ์ต๊ทผ ABAP ๋ฌธ๋ฒ์ด๋ SAP์ ์ต์ ๊ธฐ๋ฅ๋ค(RTTS ๋ฑ)๊ณผ๋ ํธํ๋์ง ์์ ํ์ฅ์ฑ์ด ๋จ์ด์ง๋ค.
3. Morden ABAP ์ฝ๋ ์คํ์ผ๊ณผ ๋ถ์ผ์น
ํ๋์ ABAP ๊ฐ๋ฐ์์๋ ๋ช ํํ๊ณ ์์ ํ ์ฝ๋๊ฐ ์ ํธ๋๋ฉฐ, Header Line์ ๋ช ์์ ์ธ Work Area ์ฌ์ฉ์ ์ด๋ ต๊ฒ ๋ง๋ค์ด, ์ ์ง๋ณด์์ ๋ถ๋ฆฌํ ์ ์๋ค.
โ Header Line ๋์ ์ด๋ ๊ฒ ํ์!
TYPES ty_mara TYPE mara.
DATA itab TYPE TABLE OF ty_mara, "WITH HEADER LINE ๊ตฌ๋ฌธ ์ฌ์ฉ ์ ํจ
wa TYPE ty_mara. "Work Area ๋ณ๋ ์ ์ธ
LOOP AT itab INTO wa.
"do something
ENDLOOP.
- ์ฝ๋ ๊ฐ๋ ์ฑ ์ฆ๊ฐ
- ์ ์ง๋ณด์ ์ฉ์ด
- ํด๋์ค์ ๊ฐ์ด Object-Oriented ๊ตฌ์กฐ์์๋ ์ฌ์ฉ ๊ฐ๋ฅ
ํ์ง๋ง HEADER LINE์ ์ฆ๊ฒจ ์ผ๋ ์ฌ๋ ์ ์ฅ์์๋ Work Area๋ฅผ ๋ณ๋๋ก ์ ์ธํ๋ ๊ฒ์ด ์ฌ์ ํ ๋ถ๋ด์ค๋ฌ์ด ๋ถ๋ถ์ผ ์ ์๋ค.๐ก ABAP 7.40 ์ดํ ๋ฒ์ ๋ถํฐ๋ Inline Declaration ์ ํตํด ๋ ๊ฐ๋จํ๊ณ ๊น๋ํ๊ฒ ์ฝ๋๋ฅผ ์์ฑํ ์ ์๊ฒ ๋์๋ค.
TYPES ty_mara TYPE mara.
DATA itab TYPE TABLE OF ty_mara,
LOOP AT itab INTO DATA(wa).
"do something
ENDLOOP.
READ TABLE itab INTO DATA(ls_row) WITH KEY matnr = '1001'.
โ ์คํ ๋ค๋( ํ์ค )์์ ์์ง๋ ์ฌ์ฉ๋๊ณ ์๋ Header Line์?
1. SELECT-OPTIONS
SELECT-OPTIONS: s_matnr FOR mara-matnr.
- SELECT-OPTIONS๋ ์์ง๋ SELECTION SCREEN์ ๊ตฌํํ๊ธฐ ์ํด ๊ผญ ํ์ํ ๋์ฒด ๋ถ๊ฐ ๊ตฌ๋ฌธ์ผ๋ก Header Line ์ ํฌํจํ Ranges Table ํํ๋ก ์ ์ธ๋๋ฉฐ, ํค๋๋ผ์ธ ์์ด ์ ์ธ์ด ๋ถ๊ฐ๋ฅํ๋ค.
2. Function Module์ TABLES ํ๋ผ๋ฏธํฐ ( Obsolete ๊ตฌ๋ฌธ )
FUNCTION z_function.
TABLES itab STRUCTURE mara.
"do something
ENDFUNCTION.
- ์ด ๊ฒฝ์ฐ๋ TABLES ํ๋ผ๋ฏธํฐ๋ก ๋ฐ์ itab์ ํจ์ ํธ์ถ ์ Header Line์ด ์๋ ์ธํฐ๋ ํ ์ด๋ธ์ด์ด๋ ๋ด๋ถ์ ์ผ๋ก Header Line์ด ์๋์ผ๋ก ์์ฑ๋๊ฒ ๋๋ค. ํ์ง๋ง ์์ฆ์ TABLES ํ๋ผ๋ฏธํฐ ์ฌ์ฉ์ ์ง์ํ๋ฉฐ, CHANGING์ด๋ IMPORTING์ผ๋ก ๋์ฒดํ๋ค.
3. RANGES ( Obsolete ๊ตฌ๋ฌธ )
RANGES r_matnr FOR mara-matnr.
- ๊ณผ๊ฑฐ์ ๋ ์ธ์ง ๋ณ์ ์ ์ธ ์ ์ฌ์ฉํ๋ ๊ตฌ๋ฌธ์ผ๋ก ์ด ๋ํ Header Line ์ ํฌํจํ Ranges Table ํํ๋ก ์ ์ธ๋๋ฉฐ, Header Line ์์ด ์ ์ธ์ด ๋ถ๊ฐ๋ฅํ๋ค. ํ์ง๋ง ํ๊ธฐ์ ๊ฐ์ ํํ๋ก Header Line ์์ด ๋ ์ธ์ง ๋ณ์ ์ ์ธ์ด ๊ฐ๋ฅํ๋ ์ด ๋ฐฉ๋ฒ์ผ๋ก ๋์ฒดํด์ ์ฌ์ฉํ๋๋ก ํ์.
DATA r_matnr TYPE RANGE OF mara-matnr.
4. ์์คํ ์์ ์๋์ผ๋ก ์ ๊ณตํ๋ ์ธํฐ๋ ํ ์ด๋ธ SCREEN
LOOP AT screen.
IF screen-name = 'P_FLAG'.
screen-input = 0.
MODIFY screen.
ENDIF.
ENDLOOP.
- SCREEN ์ ํ์ฌ ํ๋ฉด(Screen)์ ํ์๋ ๋ชจ๋ ์คํฌ๋ฆฐ ์์(ํ๋, ์ฒดํฌ๋ฐ์ค, ๋ฒํผ ๋ฑ)์ ๋ํ ์ ๋ณด(ํ๋ ์ด๋ฆ, ํ์๊ฐ ์ ๋ฌด, ํ์ฑํ ์ ๋ฌด ๋ฑ)๋ฅผ ๋ด๊ณ ์๋ ์ธํฐ๋ ํ ์ด๋ธ์ด๋ค. ์ฌ๊ธฐ์ SCREEN ์์ฒด๊ฐ Header Line์ ๊ฐ์ง๊ณ ์๋ ์ธํฐ๋ ํ ์ด๋ธ์ด๊ธฐ ๋๋ฌธ์, LOOP AT screen ๋ง์ผ๋ก๋ ๊ฐ๊ฐ์ ์คํฌ๋ฆฐ ์์์ ์ ๊ทผ์ด ๊ฐ๋ฅํ๋ค.
๐ก TIP: ๊ตฌ ๋ฌธ๋ฒ๊ณผ ์ค๊ณ๋ก ์ธํด ์์ง๋ Header Line์ด ์กด์ฌํ๋ ๊ฒฝ์ฐ๋ ์กด์ฌํ์ง๋ง, ๊ทธ ๊ธฐ์กด Header Line์ ์ฌ์ฉ์ ์ง์ํ๊ณ , ๊ฐ๋ฅํ๋ฉด ์ฐ๋ฆฌ๊ฐ ์ง์ ๋ช ์์ Work Area ๋๋ Inline ๋ฐฉ์์ ์ฌ์ฉํ๋ ๊ฒ์ด ๋ชจ๋ํ ์ ๊ทผ ๋ฐฉ์(Morden ABAP)์ด๋ผ๊ณ ํ ์ ์๊ฒ ๋ค.
โน๏ธ ๊ฐ์ด ์ฝ์ผ๋ฉด ์ข์ ํฌ์คํ
๐ [ABAP Concept (๐๊ฐ๋ )/Advanced] - Internal Table์ ๊ฐ๋ ๊ณผ ๊ตฌ์ฑ ์์(Feat. Table Category)
Internal Table์ ๊ฐ๋ ๊ณผ ๊ตฌ์ฑ ์์(Feat. Table Category)
SAP ABAP์ ํต์ฌ ๊ธฐ๋ฅ ์ค ํ๋์ธ ์ธํฐ๋ ํ ์ด๋ธ(Internal Table)์ ํ๋ก๊ทธ๋จ ๋ด์์ ๋ฐ์ดํฐ๋ฅผ ์์๋ก ์ ์ฅํ๊ณ ์ฒ๋ฆฌํ ์ ์๊ฒ ํด์ฃผ๋ ์ ์ฐํ ์๋ฃ๊ตฌ์กฐ์ด๋ค. ์ด๋ฅผ ์ฝ๊ฒ ์ดํดํ๊ธฐ ์ํด ์์ ๋ฌธ์๋ฅผ ์๊ฐ
twossun.tistory.com
Internal Table์ default key ๋ฐ ๊ด๋ จ ์ต์ ( with key )
ABAP ํ๋ก๊ทธ๋๋ฐ ์ ์ธํฐ๋ ํ ์ด๋ธ์ ์ ์ธํ ๋ ์ฐ๋ฆฌ๋ ์ฃผ๋ก DATA: lt_mara TYPE TABLE OF mara. ์์ ๊ฐ์ด ๋ณ๋๋ก ํค๋ฅผ ๋ช ์ํ์ง ์๊ณ ํ ์ด๋ธ์ ์ ์ธํ๋ค. ํญ์ ์ด๋ ๊ฒ ์จ์๊ธฐ ๋๋ฌธ์ ํด๋น ์ธํฐ๋ ํ ์ด๋ธ
twossun.tistory.com
'ABAP Concept (๐๊ฐ๋ ) > Advanced' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Append Structure์ Include Structure ( + CI_* ) ํ์ฅ์ ์ฐจ์ด (0) | 2025.04.15 |
---|---|
Internal Table์ default key ๋ฐ ๊ด๋ จ ์ต์ ( with key ) (0) | 2025.04.14 |
Internal Table์ ๊ฐ๋ ๊ณผ ๊ตฌ์ฑ ์์(Feat. Table Category) (0) | 2025.04.10 |
Function Module ํ๋ผ๋ฏธํฐ ์ข ๋ฅ์ ์ธํฐํ์ด์ค ๋ฐฉ์ (0) | 2025.04.09 |
Parameter ์ ๋ฌ ๋ฐฉ์ Pass by Value ์ Pass by Reference (1) | 2025.04.08 |