[SAP] ์คํธ๋ญ์ฒ(Structure) ์ ์ธํ๊ธฐ
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. " ์ธํฐ๋ ํ
์ด๋ธ์ ๋ฐ์ดํฐ ์ถ๊ฐ
๐ ์ธํฐ๋ ํ ์ด๋ธ์ ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํ ๋๋ ์คํธ๋ญ์ฒ๋ฅผ ์ฌ์ฉํด์ผ ํจ