๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

ABAP Concept (๐Ÿ“๊ฐœ๋…)/Advanced

Internal Table Header line(ํ—ค๋” ๋ผ์ธ) ๊ฐœ๋… ๋ฐ ์ง€์–‘ํ•ด์•ผ ํ•˜๋Š” ์ด์œ 

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

๐Ÿ”— [ABAP Concept (๐Ÿ“๊ฐœ๋…)/Advanced] - Internal Table์˜ default key ๋ฐ ๊ด€๋ จ ์˜ต์…˜( with key )

 

Internal Table์˜ default key ๋ฐ ๊ด€๋ จ ์˜ต์…˜( with key )

ABAP ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์‹œ ์ธํ„ฐ๋„ ํ…Œ์ด๋ธ”์„ ์„ ์–ธํ•  ๋•Œ ์šฐ๋ฆฌ๋Š” ์ฃผ๋กœ DATA: lt_mara TYPE TABLE OF mara. ์œ„์™€ ๊ฐ™์ด ๋ณ„๋„๋กœ ํ‚ค๋ฅผ ๋ช…์‹œํ•˜์ง€ ์•Š๊ณ  ํ…Œ์ด๋ธ”์„ ์„ ์–ธํ•œ๋‹ค. ํ•ญ์ƒ ์ด๋ ‡๊ฒŒ ์จ์™”๊ธฐ ๋•Œ๋ฌธ์— ํ•ด๋‹น ์ธํ„ฐ๋„ ํ…Œ์ด๋ธ”

twossun.tistory.com