SAP/๊ตฌ์กฐ์ฒด Structure

[SAP] ์ŠคํŠธ๋Ÿญ์ฒ˜(Structure) ์„ ์–ธํ•˜๊ธฐ

์ธํฌ๋งˆํ‹ฑ 2025. 2. 6. 15:32

ABAP์—์„œ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด Structure(๊ตฌ์กฐ์ฒด, ์ŠคํŠธ๋Ÿญ์ฒ˜)๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
์ŠคํŠธ๋Ÿญ์ฒ˜๋Š” ํ•˜๋‚˜ ์ด์ƒ์˜ ํ•„๋“œ๋ฅผ ํฌํ•จํ•˜๋Š” ๋ฐ์ดํ„ฐ ๊ฐ์ฒด๋กœ, ํ…Œ์ด๋ธ”์˜ ํ•œ ํ–‰(Row)์ฒ˜๋Ÿผ ๋™์ž‘ํ•˜๋ฉฐ, ๋‹ค์–‘ํ•œ ํ•„๋“œ๋ฅผ ๊ทธ๋ฃนํ™”ํ•˜์—ฌ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋ฒˆ ๊ธ€์—์„œ๋Š” ABAP์—์„œ ์ŠคํŠธ๋Ÿญ์ฒ˜๋ฅผ ์„ ์–ธํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ ํ™œ์šฉ๋ฒ•์„ ๋‹จ๊ณ„๋ณ„๋กœ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

 

๋ฐ์ดํ„ฐ ๊ฐ์ฒด์™€ Structure์— ๊ด€๋ จ๋œ ํฌ์ŠคํŒ… ๋ณด๋Ÿฌ๊ฐ€๊ธฐโฌ‡๏ธ

 

ABAP ํ”„๋กœ๊ทธ๋ž˜๋ฐ: ๋ฐ์ดํ„ฐ ๊ฐ์ฒด ์ดํ•ดํ•˜๊ธฐ (Simple, Structure, Internal Table)

SAP ABAP์„ ์‚ฌ์šฉํ•˜๋ฉด ๋‹ค์–‘ํ•œ ์œ ํ˜•์˜ ๋ฐ์ดํ„ฐ ๊ฐ์ฒด(Data Object)๋ฅผ ๋‹ค๋ฃจ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ABAP์—์„œ๋Š” ๋‹จ์ˆœ ๋ฐ์ดํ„ฐ(Single Data Object), ๊ตฌ์กฐ์ฒด(Structure), ๋‚ด๋ถ€ ํ…Œ์ด๋ธ”(Internal Table)์„ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ  ๊ด€๋ฆฌํ•  ์ˆ˜

informatik.tistory.com

 


 

1. ์ŠคํŠธ๋Ÿญ์ฒ˜(Structure)๋ž€?

์ŠคํŠธ๋Ÿญ์ฒ˜(Structure)๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํ•„๋“œ๋ฅผ ํ•˜๋‚˜๋กœ ๋ฌถ์€ ๋ฐ์ดํ„ฐ ๊ฐ์ฒด์ž…๋‹ˆ๋‹ค.

  • ํ•œ ๊ฐœ์˜ ๋ฐ์ดํ„ฐ ๊ฐ์ฒด๋กœ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํ•„๋“œ๋ฅผ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ์Œ
  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ…Œ์ด๋ธ”์˜ ํ•œ ํ–‰(Row)์ฒ˜๋Ÿผ ๋™์ž‘
  • ABAP ํ”„๋กœ๊ทธ๋žจ์—์„œ ๋‚ด๋ถ€ ํ…Œ์ด๋ธ”(Internal Table)๊ณผ ํ•จ๊ป˜ ์ž์ฃผ ์‚ฌ์šฉ๋จ

 

 

2. ์ŠคํŠธ๋Ÿญ์ฒ˜ ์„ ์–ธ ๋ฐฉ๋ฒ•

 

1๏ธโƒฃ ์ŠคํŠธ๋Ÿญ์ฒ˜ ํƒ€์ž…์„ ๋จผ์ € ์ •์˜ํ•˜๊ณ  ์„ ์–ธํ•˜๋Š” ๋ฐฉ๋ฒ• (TYPES ํ™œ์šฉ)

์ŠคํŠธ๋Ÿญ์ฒ˜๋ฅผ ์„ ์–ธํ•˜๋ ค๋ฉด TYPES ... BEGIN OF ... END OF. ๊ตฌ๋ฌธ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

TYPES: BEGIN OF ts_struct,  
  field1 TYPE data_type1,  
  field2 TYPE data_type2,  
  field3 TYPE data_type3,  
  field4 TYPE data_type4,  
END OF ts_struct.

 

๐Ÿ”ท ์˜ˆ์ œ

TYPES: BEGIN OF ts_flightinfo,

  carrid TYPE S_CARR_ID,     " ํ•ญ๊ณต์‚ฌ ์ฝ”๋“œ "
  connid TYPE S_CONN_ID,     " ํ•ญ๊ณตํŽธ ๋ฒˆํ˜ธ "
  fldate TYPE S_DATE,        " ํ•ญ๊ณต ๋‚ ์งœ "
  percentage TYPE S_FLGHTOCC, " ์ขŒ์„ ์ ์œ ์œจ "

END OF ts_flightinfo.
  • TYPES: ์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ์ •์˜
  • BEGIN OF ts_flightinfo → ์ƒˆ๋กœ์šด ์ŠคํŠธ๋Ÿญ์ฒ˜ ํƒ€์ž…(ts_flightinfo) ์ •์˜ ์‹œ์ž‘
  • END OF ts_flightinfo. → ์ŠคํŠธ๋Ÿญ์ฒ˜ ์ •์˜ ์ข…๋ฃŒ
  • carrid, connid, fldate, percentage๋Š” ๊ฐ๊ฐ ํ•„๋“œ

 

 

2๏ธโƒฃ LIKE ๋ฌธ์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ธฐ์กด ๋ฐ์ดํ„ฐ ์ฐธ์กฐํ•˜๋Š” ๋ฐฉ๋ฒ•

์ด๋ฏธ ์„ ์–ธ๋œ ๋ณ€์ˆ˜ ๋˜๋Š” ๋‚ด๋ถ€ ํ…Œ์ด๋ธ”์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ƒˆ๋กœ์šด ๋ณ€์ˆ˜๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

DATA gw_struct LIKE LINE OF gt_table.
  • gw_struct๋Š” ๋‚ด๋ถ€ ํ…Œ์ด๋ธ” gt_table์˜ ํ•œ ์ค„๊ณผ ๋™์ผํ•œ ํƒ€์ž…์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค.
  • ์ฆ‰, Work Area(WA)๋กœ ํ™œ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋‚ด๋ถ€ ํ…Œ์ด๋ธ”๊ณผ ๊ฐ™์€ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง€๋ฏ€๋กœ ์ƒˆ๋กœ์šด ํƒ€์ž…์„ ์ •์˜ํ•  ํ•„์š” ์—†์ด ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅ.

 

๐Ÿ”ท ์˜ˆ์ œ

DATA: gt_student TYPE TABLE OF ts_flightinfo,  " ๋‚ด๋ถ€ ํ…Œ์ด๋ธ”
      gw_student LIKE LINE OF gt_student.      " ๋‚ด๋ถ€ ํ…Œ์ด๋ธ”์˜ ํ•œ ํ–‰๊ณผ ๊ฐ™์€ ํƒ€์ž…

 

 

3. ์ŠคํŠธ๋Ÿญ์ฒ˜ ๋ณ€์ˆ˜ ์„ ์–ธ ๋ฐ ๊ฐ’ ํ• ๋‹น

์ŠคํŠธ๋Ÿญ์ฒ˜๋ฅผ ์„ ์–ธํ•œ ํ›„, ์‹ค์ œ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ๋ณ€์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • DATA ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ŠคํŠธ๋Ÿญ์ฒ˜ ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธ
  • gs_ ์ ‘๋‘์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌ์กฐ์ฒด ๋ณ€์ˆ˜ ๋ช…๋ช… (gs_flight)

 

โœ… ์ŠคํŠธ๋Ÿญ์ฒ˜ ๋ณ€์ˆ˜ ์„ ์–ธ

DATA gs_flight TYPE ts_flightinfo. " ์ŠคํŠธ๋Ÿญ์ฒ˜ ํƒ€์ž…์œผ๋กœ ๋ณ€์ˆ˜ ์„ ์–ธ

 

โœ… ์ŠคํŠธ๋Ÿญ์ฒ˜ ๋ณ€์ˆ˜์— ๊ฐ’ ๋„ฃ๊ธฐ

gs_flight-carrid = 'AA'.
gs_flight-connid = '0017'.
gs_flight-fldate = sy-datum.
gs_flight-percentage = '98.00'.
  • ์ŠคํŠธ๋Ÿญ์ฒ˜ ๋‚ด๋ถ€ ํ•„๋“œ์— ๊ฐ’์„ ๋„ฃ์„ ๋•Œ๋Š” gs_flight-ํ•„๋“œ๋ช… ํ˜•ํƒœ๋กœ ํ• ๋‹น
  • sy-datum → ์‹œ์Šคํ…œ ๋‚ ์งœ๋ฅผ ์ž๋™์œผ๋กœ ํ• ๋‹น

 

4. ์ŠคํŠธ๋Ÿญ์ฒ˜ ์ถœ๋ ฅํ•˜๊ธฐ

์ŠคํŠธ๋Ÿญ์ฒ˜ ๋‚ด๋ถ€ ๊ฐ’์„ ์ถœ๋ ฅํ•  ๋•Œ๋Š” ๊ฐœ๋ณ„ ํ•„๋“œ๋ณ„๋กœ WRITE ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

WRITE: gs_flight-carrid, gs_flight-connid,
       gs_flight-fldate, gs_flight-percentage.
  • ์ŠคํŠธ๋Ÿญ์ฒ˜ ์ „์ฒด(gs_flight)๋ฅผ ํ•œ ๋ฒˆ์— ์ถœ๋ ฅํ•˜๋Š” ๊ฒƒ์€ ๋ถˆ๊ฐ€๋Šฅ
    โŒ WRITE gs_flight.
    โœ… WRITE: gs_flight-carrid, gs_flight-connid.

 

5. MOVE-CORRESPONDING์„ ํ™œ์šฉํ•œ ์ŠคํŠธ๋Ÿญ์ฒ˜ ๊ฐ„ ๋ฐ์ดํ„ฐ ์ด๋™

๋‹ค๋ฅธ ์ŠคํŠธ๋Ÿญ์ฒ˜๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ด๋™ํ•  ๋•Œ๋Š” MOVE-CORRESPONDING์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

DATA gs_flight_new TYPE ts_flightinfo.

MOVE-CORRESPONDING gs_flight TO gs_flight_new.

๐Ÿ“Œ MOVE-CORRESPONDING ํŠน์ง•

  • ํ•„๋“œ ์ด๋ฆ„์ด ๋™์ผํ•œ ๊ฒฝ์šฐ์—๋งŒ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ณต์‚ฌ๋จ
  • ํ•„๋“œ์˜ ๋ฐ์ดํ„ฐ ํƒ€์ž…์ด ๋‹ฌ๋ผ๋„ ์ด๋ฆ„์ด ๊ฐ™์œผ๋ฉด ์ด๋™ ๊ฐ€๋Šฅ

 

 

6. ์ธํ„ฐ๋„ ํ…Œ์ด๋ธ”๊ณผ ์ŠคํŠธ๋Ÿญ์ฒ˜์˜ ๊ด€๊ณ„

์ŠคํŠธ๋Ÿญ์ฒ˜๋Š” ์ธํ„ฐ๋„ ํ…Œ์ด๋ธ”์˜ ํ•œ ์ค„(Row)์ฒ˜๋Ÿผ ๋™์ž‘ํ•˜๋ฉฐ, ๋‚ด๋ถ€ ํ…Œ์ด๋ธ”์„ ์„ ์–ธํ•  ๋•Œ Line Type(ํ–‰ ๊ตฌ์กฐ)๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

 

โœ… ์ŠคํŠธ๋Ÿญ์ฒ˜ ๊ธฐ๋ฐ˜ ์ธํ„ฐ๋„ ํ…Œ์ด๋ธ” ์„ ์–ธ

TYPES: tt_flightinfo TYPE STANDARD TABLE OF ts_flightinfo
       WITH NON-UNIQUE KEY carrid connid.

DATA gt_flight TYPE tt_flightinfo. " ์ธํ„ฐ๋„ ํ…Œ์ด๋ธ” ์„ ์–ธ
  • tt_flightinfo: ์ŠคํŠธ๋Ÿญ์ฒ˜๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ํ…Œ์ด๋ธ” ํƒ€์ž… ์ •์˜
  • STANDARD TABLE: ๊ธฐ๋ณธ์ ์ธ ๋‚ด๋ถ€ ํ…Œ์ด๋ธ”
  • WITH NON-UNIQUE KEY: ์ค‘๋ณต๋œ ๋ฐ์ดํ„ฐ ํ—ˆ์šฉ (carrid, connid ๊ธฐ์ค€)

 

7. ์ธํ„ฐ๋„ ํ…Œ์ด๋ธ”์— ์ŠคํŠธ๋Ÿญ์ฒ˜ ๋ฐ์ดํ„ฐ

APPEND gs_flight TO gt_flight. " ์ธํ„ฐ๋„ ํ…Œ์ด๋ธ”์— ๋ฐ์ดํ„ฐ ์ถ”๊ฐ€

๐Ÿ“Œ ์ธํ„ฐ๋„ ํ…Œ์ด๋ธ”์— ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•  ๋•Œ๋Š” ์ŠคํŠธ๋Ÿญ์ฒ˜๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•จ