1. OCCURS 0(N) ์ด๋?
- OCCURS n์ ์ธํฐ๋ ํ
์ด๋ธ์ ์ ์ธํ๋ฉด์ ๊ฐ ๋ ์ฝ๋์ ๊ตฌ์กฐ์ ๊ธฐ๋ณธ ํฌ๊ธฐ(n)์ ์ ์ํฉ๋๋ค.
- n์ ์ด๊ธฐ ๋ฉ๋ชจ๋ฆฌ ํฌ๊ธฐ๋ฅผ ๋ํ๋ด๋ฉฐ, ํ ์ด๋ธ์ ์ ์ฅ๋๋ ๋ ์ฝ๋์ ํฌ๊ธฐ๋ฅผ ๊ฒฐ์ ํฉ๋๋ค.
- OCCURS 0์ ์ด๊ธฐ ๋ฉ๋ชจ๋ฆฌ ํฌ๊ธฐ๋ฅผ ์ง์ ํ์ง ์๊ณ , SAP๊ฐ ์๋์ผ๋ก ๋์ ์ผ๋ก ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ด๋ฆฌํ๋๋ก ์ค์ ํฉ๋๋ค.
- ์ธํฐ๋ ํ ์ด๋ธ์ ๋์ ๋ฐฐ์ด์ฒ๋ผ ๋์ํ๋ฉฐ, ๋ฐ์ดํฐ๊ฐ ์ถ๊ฐ๋๋ฉด ์๋์ผ๋ก ํฌ๊ธฐ๊ฐ ํ์ฅ๋ฉ๋๋ค.
- OCCURS n์ ์ธํฐ๋ ํ ์ด๋ธ์ ์ ์ํ ๋ ์ฌ์ฉ๋๋ ๊ตฌ๋ฌธ์ ๋๋ค. ํ์ง๋ง ํ์ฌ๋ ๋ ๊ถ์ฅ๋๋ ๋ฐฉ์์ธ ํ์ค ์ธํฐ๋ ํ ์ด๋ธ(Standard Internal Table) ์ ์๋ก ๋์ฒด๋์๊ณ , OCCURS ๋ ๊ตฌ์ ๊ตฌ๋ฌธ์ผ๋ก ๊ฐ์ฃผ๋ฉ๋๋ค.
2. OCCURS 0 ์์
๋ค์์ `OCCURS 0`๋ฅผ ์ฌ์ฉํ์ฌ ์ธํฐ๋ ํ ์ด๋ธ์ ์ ์ํ ์์์ ๋๋ค.
" ๋ณ์ ์ ์ธ
DATA: BEGIN OF ITAB OCCURS 0,
FIELD1 TYPE I,
FIELD2 TYPE STRING,
END OF ITAB.
DATA: LS_ITAB LIKE ITAB.
" ๋ฐ์ดํฐ ์ฝ์
LS_ITAB-FIELD1 = 10.
LS_ITAB-FIELD2 = 'Apple'.
APPEND LS_ITAB TO ITAB.
LS_ITAB-FIELD1 = 5.
LS_ITAB-FIELD2 = 'Mango'.
APPEND LS_ITAB TO ITAB.
" ๋ฐ์ดํฐ ์ถ๋ ฅ
LOOP AT ITAB INTO LS_ITAB.
WRITE: /'FIELD1: ', LS_ITAB-FIELD1,
/'FIELD2: ', LS_ITAB-FIELD2.
ENDLOOP.
3. OCCURS 0์์์ ๋์ ๋ฐฉ์
- ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ
- OCCURS 0์ ์ด๊ธฐ ํฌ๊ธฐ๋ฅผ ์ง์ ํ์ง ์์๋ ํ์์ ๋ฐ๋ผ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋์ ์ผ๋ก ํ ๋นํฉ๋๋ค.
- ๋ฉ๋ชจ๋ฆฌ๊ฐ ํจ์จ์ ์ด์ง๋ง, ์ด๊ธฐ ํฌ๊ธฐ๋ฅผ ๋ช ํํ ์ง์ ํ์ง ์์ผ๋ฏ๋ก ์์ธก์ด ์ด๋ ค์ธ ์ ์์ต๋๋ค.
- ์๋ ํ์ฅ
- ๋ฐ์ดํฐ๊ฐ ์ถ๊ฐ๋๋ฉด SAP๊ฐ ๋ด๋ถ์ ์ผ๋ก ํฌ๊ธฐ๋ฅผ ์กฐ์ ํ์ฌ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ์ฅํฉ๋๋ค.
- ๊ตฌ์กฐ ์ ์
- OCCURS ๊ตฌ๋ฌธ์ ์ธํฐ๋ ํ ์ด๋ธ์ ๊ตฌ์กฐ๋ฅผ ์ ์ํ ๋ ์ฌ์ฉ๋๋ฉฐ, ์ฌ๊ธฐ์ ํ๋๋ฅผ ์ถ๊ฐํ ์ ์์ต๋๋ค.
4. '์ธ์ (When)' ์ฌ์ฉํ ๊น?
- ๋์ ๋ฐ์ดํฐ ์ฒ๋ฆฌ
- `OCCURS 0`๋ ํนํ ๋์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํด์ผ ํ๋ ์ํฉ์์ ์ ์ฉํฉ๋๋ค. ํ๋ก๊ทธ๋จ์ด ์คํ๋ ๋ ์ผ๋ง๋ ๋ง์ ๋ฐ์ดํฐ๊ฐ ํ์ํ์ง ๋ฏธ๋ฆฌ ์ ์ ์๋ ๊ฒฝ์ฐ์ ํ์ฉ๋ฉ๋๋ค.
- ์ ์ฐ์ฑ์ ํ์๋ก ํ๋ ์ํฉ
- ํ๋ก๊ทธ๋จ์ด ์คํ๋๋ ๋์ ์ฌ์ฉ์ ์ ๋ ฅ์ด๋ ์ธ๋ถ ์ด๋ฒคํธ์ ๋ฐ๋ผ ํ์ํ ๋ฐ์ดํฐ๊ฐ ๋ณํ๋ ๊ฒฝ์ฐ, `OCCURS 0`๋ฅผ ์ฌ์ฉํ์ฌ ์ด๊ธฐ์ ๋น์ด์๋ ํ ์ด๋ธ์ ์์ฑํ๋ฉด ์ ์ฐํ๊ฒ ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํ๊ฑฐ๋ ์์ ํ ์ ์์ต๋๋ค.
5. '์(Why)' ์ฌ์ฉํ ๊น?
- ๋ฉ๋ชจ๋ฆฌ ์ต์ ํ:
- ์ด๊ธฐ์ ํฐ ํฌ๊ธฐ์ ํ ์ด๋ธ์ ์์ฑํ์ง ์๊ณ ํ์ํ ๋๋ง๋ค ๋์ ์ผ๋ก ํ์ ์ถ๊ฐํจ์ผ๋ก์จ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ต์ ํํ ์ ์์ต๋๋ค. ๋ถํ์ํ ์ด๊ธฐํ๋ก ์ธํ ๋ฉ๋ชจ๋ฆฌ ๋ญ๋น๋ฅผ ๋ฐฉ์งํ ์ ์์ต๋๋ค.
- ๋ฐํ์ ํจ์จ์ฑ:
- `OCCURS 0`๋ฅผ ์ฌ์ฉํ๋ฉด ํ๋ก๊ทธ๋จ์ด ๋ฐํ์ ์ค์ ๋์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๊ตฌ์ฑํ ์ ์์ต๋๋ค. ์ด๋ ํ๋ก๊ทธ๋จ์ ์คํ ์๊ฐ์ ์ต์ ํํ๊ณ ์ฑ๋ฅ์ ํฅ์์ํต๋๋ค.
- ๋์ ๊ตฌ์ฑ ๊ฐ๋ฅ:
- ํ๋ก๊ทธ๋จ์ด ์คํ๋๋ ๋์ ํ์ํ ๋งํผ์ ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํ๋ฉด์ ๊ตฌ์ฑํ ์ ์๊ธฐ ๋๋ฌธ์ ๋์ ์ธ ์ํฉ์ ์ ์ํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ์ฌ์ฉ์๊ฐ ์ ํํ ์ต์ ์ ๋ฐ๋ผ ๋ค์ํ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํด์ผ ํ๋ ๊ฒฝ์ฐ์ ์ ์ฉํฉ๋๋ค.
6. OCCURS๋ฅผ ๋ช ์ํ์ง ์์ผ๋ฉด?
ABAP์์ ๋ด๋ถ ํ ์ด๋ธ์ ์ ์ธํ ๋ `OCCURS`๋ฅผ ๋ช ์ํ์ง ์์ผ๋ฉด ๊ธฐ๋ณธ์ ์ผ๋ก ํ ํ์ผ๋ก ์ด๊ธฐํ๋ฉ๋๋ค.
" ์ ์ ์ฒด์ฝ๋ ์ค itab ์ ์ธ ๋ถ๋ถ์์ OCCURS 0 ์ ๊ฑฐ
DATA: BEGIN OF itab,
field1 TYPE I,
field2 TYPE STRING,
END OF itab.
์ ์ฝ๋์์ `itab`์ ์ด๊ธฐ์ ํ ํ์ ํฌํจํ๋ ์ธํฐ๋ ํ ์ด๋ธ๋ก ์ ์ธ๋ฉ๋๋ค. ์ด ๊ฒฝ์ฐ, ํ๋ก๊ทธ๋จ์ด ์คํ๋ ๋ `itab`์๋ ๊ธฐ๋ณธ๊ฐ์ผ๋ก ์ด๊ธฐํ๋ ํ ํ์ด ํฌํจ๋์ด ์์ต๋๋ค.
ํ์ง๋ง, OCCURS๋ฅผ ๋ช ์ํ์ง ์๊ณ ๋ฐ์ดํฐ๋ฅผ ์ฌ๋ฌ๊ฐ ์ฝ์ ํ๋ ค๊ณ ํ๋ฉด OCCURS๋ฅผ ์ ์ธํด๋ฌ๋ผ๋ ์ค๋ฅ("ITAB" is not an internal table "OCCURS n" specification is missing.)๊ฐ ๋์ต๋๋ค.
๋ฐ๋ผ์ OCCURS ๋ฅผ ์ ์ธํ์ง ์์ผ๋ฉด ํ ์ด๋ธ์ด ์๋ ํ๋์ ๊ตฌ์กฐ์ฒด ํ์์ผ๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค.
" ๋ณ์ ์ ์ธ
DATA: BEGIN OF ITAB,
FIELD1 TYPE I,
FIELD2 TYPE STRING,
END OF ITAB.
" ๋ฐ์ดํฐ ์ฝ์
ITAB-FIELD1 = 10.
ITAB-FIELD2 = 'Apple'.
" ๋ฐ์ดํฐ ์ถ๋ ฅ
WRITE: /'FIELD1: ', ITAB-FIELD1,
/'FIELD2: ', ITAB-FIELD2.
7. ๊ถ์ฅ ๋ฐฉ์: ์ต์ ์ธํฐ๋ ํ ์ด๋ธ ์ ์ธ
OCCURS ๊ตฌ๋ฌธ์ ํ์ฌ ๋ ์ด์ ๊ถ์ฅ๋์ง ์์ต๋๋ค.
๋์ , ์ต์ ๋ฐฉ์์ผ๋ก๋ STANDARD TABLE, SORTED TABLE, HASHED TABLE์ ์ฌ์ฉํฉ๋๋ค.
https://jay-din.tistory.com/244
8. OCCURS๋ฅผ ๊ถ์ฅํ์ง ์๋ ์ด์
1. ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ์ ํจ์จ์ฑ
OCCURS ๋ฐฉ์:
- OCCURS n์์ ์ด๊ธฐ ๋ฉ๋ชจ๋ฆฌ ํฌ๊ธฐ(n)๋ฅผ ์ง์ ํ์ง๋ง, ํ์์ ๋ฐ๋ผ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ถ๊ฐ๋ก ํ ๋นํฉ๋๋ค.
- ๋ฉ๋ชจ๋ฆฌ ํ์ฅ์ด ํ์ํ ๋๋ง๋ค ๋น์ฉ์ด ๋ฐ์ํ๋ฉฐ, ์ฑ๋ฅ์ด ์ ํ๋ ์ ์์ต๋๋ค.
- ํนํ, ๋ฐ์ดํฐ๊ฐ ๋ง์ ๊ฒฝ์ฐ ๋ถํ์ํ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ์ด ๋ฐ์ํ ๊ฐ๋ฅ์ฑ์ด ํฝ๋๋ค.
์๋ก์ด ํ ์ด๋ธ ๊ตฌ์กฐ:
- STANDARD, SORTED, HASHED TABLE์ ๋์ ๋ฉ๋ชจ๋ฆฌ ํ ๋น์ ๋ ํจ์จ์ ์ผ๋ก ์ฒ๋ฆฌํฉ๋๋ค.
- ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์๋์ผ๋ก ์กฐ์ ํ๋ฉฐ, ๋ถํ์ํ ๋ฉ๋ชจ๋ฆฌ ๋ญ๋น๋ฅผ ์ค์ ๋๋ค.
2. ์ฑ๋ฅ ์ต์ ํ
OCCURS ๋ฐฉ์:
- ์ธํฐ๋ ํ ์ด๋ธ์์ ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ํ ๋, ํญ์ ์์ฐจ์ ๊ฒ์๋ง ๊ฐ๋ฅํฉ๋๋ค.
- ๊ฒ์ ์๊ฐ์ O(n)์ผ๋ก, ๋ฐ์ดํฐ ํฌ๊ธฐ์ ๋ฐ๋ผ ์ฑ๋ฅ์ด ์ ํ๋ฉ๋๋ค.
์๋ก์ด ํ ์ด๋ธ ๊ตฌ์กฐ:
- STANDARD TABLE: ์ฌ์ ํ ์์ฐจ ๊ฒ์์ด์ง๋ง, ๋ช ์์ ํค ์์ด๋ ํจ์จ์ ์ธ ๊ฒ์ ๊ตฌ์กฐ๋ฅผ ์ง์ํฉ๋๋ค.
- SORTED TABLE: ์ด์ง ๊ฒ์(Binary Search)์ ์ฌ์ฉํ์ฌ ๊ฒ์ ์ฑ๋ฅ์ด O(log n)์ผ๋ก ํฌ๊ฒ ํฅ์๋ฉ๋๋ค.
- HASHED TABLE: ํด์ ์๊ณ ๋ฆฌ์ฆ ๊ธฐ๋ฐ์ผ๋ก ๊ฒ์ ์๊ฐ O(1)์ ์ ๊ณตํ๋ฉฐ ๋๋ ๋ฐ์ดํฐ์ ํ์ํ ์ฑ๋ฅ์ ๊ฐ์ง๋๋ค.
3. ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ ๊ณผ ๊ตฌ์กฐ์ ๋ช ํ์ฑ
OCCURS ๋ฐฉ์
- ํ ์ด๋ธ์ ํค๋ฅผ ๋ช ์์ ์ผ๋ก ์ ์ํ ์ ์์ผ๋ฏ๋ก, ๋ฐ์ดํฐ ์ค๋ณต ๋ฐฉ์ง ๋ฐ ์ ํจ์ฑ ๊ฒ์ฆ์ด ์ด๋ ต์ต๋๋ค.
- ๋ฐ์ดํฐ ์ฝ์ ์, ๊ตฌ์กฐ์ ์ ์ฝ ์กฐ๊ฑด์ ์ ์ฉํ๊ธฐ ์ด๋ ต์ต๋๋ค.
์๋ก์ด ํ ์ด๋ธ ๊ตฌ์กฐ
- SORTED TABLE ๋ฐ HASHED TABLE์์๋ ํค๋ฅผ ๋ช
์์ ์ผ๋ก ์ ์ ๊ฐ๋ฅํฉ๋๋ค.
- WITH UNIQUE KEY๋ฅผ ์ฌ์ฉํด ๋ฐ์ดํฐ ์ค๋ณต ๋ฐฉ์ง.
- ๋ช ํํ ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ์ ๋ณด์ฅ.
- ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ๋ช ํํ ์ ์ํ ์ ์์ด, ์ ์ง๋ณด์์ฑ๊ณผ ๊ฐ๋ ์ฑ์ด ํฅ์๋ฉ๋๋ค.
4. ํ์ฅ์ฑ๊ณผ ์ ์ง๋ณด์์ฑ
OCCURS ๋ฐฉ์
- ๊ธฐ์กด ๋ฐฉ์์ ์ ์ฐ์ฑ์ด ๋ถ์กฑํ์ฌ, ์ฝ๋๊ฐ ํ์ฅ๋ ์๋ก ๊ด๋ฆฌ๊ฐ ์ด๋ ค์์ง๋๋ค.
- ํนํ ๋ณต์กํ ๋ฐ์ดํฐ ์กฐ์์๋ ์ ํฉํ์ง ์์ต๋๋ค.
์๋ก์ด ํ ์ด๋ธ ๊ตฌ์กฐ
- ๋ค์ํ ๋ฐ์ดํฐ ์์
์ ์ต์ ํ๋ ๋ฐฉ์ ์ ๊ณต:
- ์์ฐจ ์ฒ๋ฆฌ: STANDARD TABLE
- ์ ๋ ฌ ๋ฐ ๊ฒ์ ์ต์ ํ: SORTED TABLE
- ๊ณ ์ ๊ฒ์ ๋ฐ ์ค๋ณต ๋ฐฉ์ง: HASHED TABLE
- ์๋ก์ด ๋ฐ์ดํฐ ์ ํ๊ณผ ๊ตฌ์กฐ๊ฐ ๋์ ๋๋ฉด์ ์ฝ๋ ํ์ฅ์ด ์ฉ์ดํ๊ณ , ์ต์ ABAP ๊ตฌ๋ฌธ๊ณผ ์ ํธํ๋ฉ๋๋ค.
5. ํ๋ ABAP ๊ฐ๋ฐ ํ์ค
- ๊ฐ๋ ์ฑ: STANDARD, SORTED, HASHED TABLE์ ๋ช ์์ ์ด๊ณ ์ง๊ด์ ์ธ ์ฝ๋ ์์ฑ์ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค.
- ๋ฏธ๋ ์งํฅ์ : ABAP์ ์ต์ ๋ฒ์ (7.4 ์ด์)์์๋ OCCURS๊ฐ ๋ ์ด์ ํ์ํ์ง ์์ผ๋ฉฐ, ์๋ก์ด ๊ธฐ๋ฅ๊ณผ ๋๊ตฌ์์ ์ง์๋์ง ์์ ๊ฐ๋ฅ์ฑ์ด ์์ต๋๋ค.
- ์ฑ๋ฅ ์ต์ ํ์ ์ผ๊ด์ฑ: ์๋ก์ด ๋ฐฉ์์ ์์คํ ๋ฆฌ์์ค๋ฅผ ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ๊ณ , ํ๋์ ๊ฐ๋ฐ ํ์ค์ ๋ถํฉํฉ๋๋ค.
'๐งโ๐ผ SAP > ABAP' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[SAP ABAP] ABAP Dictionary ํ ์ด๋ธ ์์ฑ ๋ฐฉ๋ฒ ๋ฐ ์ํธ๋ฆฌ ์ถ๊ฐ ๋ฐฉ๋ฒ (0) | 2025.01.03 |
---|---|
[SAP ABAP] ์ธํฐ๋ ํ ์ด๋ธ Standard, Sorted, Hashed table ์ด๋? (0) | 2025.01.02 |
[SAP ABAP] BAPI ๋? BAPI ์์ (1) | 2024.12.23 |
[SAP ABAP] COMPARING ์ด๋? (0) | 2024.12.19 |
[SAP ABAP] AT SELECTION-SCREEN ON <ํ๋ ์ด๋ฆ> ๊ตฌ๋ฌธ ์ด๋? (์์ ํฌํจ) (0) | 2024.10.25 |