๐ Value ๊ตฌ๋ฌธ ์ฌํ ( VALUE with BASE )
์ฌํ๋ผ๊ณ ์ ๊ธด ํ์ง๋ง, VALUE๋ฅผ ์ฌ์ฉํ๋ฉด์ ๊ธฐ๋ณธ์ ์ผ๋ก ํจ๊ป ์ฌ์ฉํ๊ฒ ๋๋ BASE๋ฅผ ์ด์ผ๊ธฐ ํด๋ณผ๊น ํฉ๋๋ค.
Value ๊ตฌ๋ฌธ์ ์ฌ์ฉํ์ฌ ๊ฐ์ ์ถ๊ฐํ๋ ค๊ณ ํ ๋ ํ๋๋ช ์ ์ ์ง ์์ผ๋ฉด, ๋น ๊ฐ์ด ๋ค์ด๊ฐ๋ ๊ฒ์ ์ ์ ์์ต๋๋ค. ๊ตฌ๋ฌธ๋ฒ์์๋ MOVE-CORRESPODING ๋ฌธ๋ฒ์ ์ฌ์ฉํ์ ๋ ๋์ผํ ํ๋์ ๊ฐ์ด ์๋ค๋ฉด ์์ ๊ฐ์ด ๋น ๊ฐ์ด ๋ค์ด๊ฐ๊ฒ ๋ฉ๋๋ค. MOVE-CORRSPONDING ๋ฌธ๋ฒ์ ๊ธฐ์กด์ ํ๋ ๊ฐ์ ์ ์งํ๊ธฐ ์ํด EXPANDING NESTED TABLES, KEEPING TARGET LINES์ ๊ฐ์ ๊ตฌ๋ฌธ์ ์ฌ์ฉ๊ณผ ๋น๊ตํ์ฌ ์ฝ๊ฒ ์ดํดํ ์ ์๋๋ก ์์ ๋ฅผ ์ค๋นํ์ต๋๋ค.
1. Old version
๋จผ์ ๊ตฌ๋ฌธ๋ฒ์ ๋๋ค. ์ ๋ ฅํ ํ๋๋ช ๋ง ์ ๊ฒ ๋๋ฉด ๋ค๋ฅธ ํ๋๋ ์ํฅ ๋ฐ์ง ์์ต๋๋ค.
*OLD
DATA: BEGING OF GS_SBOOK.
INCLUDE STRUCTURE SBOOK.
DATA: NAME TYPE SCUSTOM-NAME,
END OF GS_SBOOK,
,GT_SBOOK LIKE TABLE OF GS_SBOOK
,GS_CUST TYPE SCUSTOM
,GT_CUST TYPE TALBE OF SCUSTOM.
"-- SQL ์๋ต"
LOOP AT GT_SBOOK INTO GS_SBOOK.
READ TABLE GT_CUST INTO GS_CUST WITH KEY ID = GS_SBOOK-BOOKID.
IF SY-SUBRC EQ 0.
GS_SBOOK-NAME = GS_CUST-NAME.
ENDIF.
ENDLOOP.
2. New version - BASE & VALUE
๊ตฌ๋ฌธ๋ฒ๊ณผ ๊ฐ์ ๋ฐฉ๋ฒ์ผ๋ก ๋จ์ผ ํ๋์๋ง ๊ฐ์ ๋ฃ๊ณ ์ถ๋ค๋ฉด, ์๋์ ๊ฐ์ด VALUE ํ์ ๋ช ( BASE ๊ตฌ์กฐ์ฒด๋ช ํ๋๋ช = ์ ๋ ฅํ ๊ฐ ) ์ผ๋ก BASE์ ์ ํ ๊ตฌ์กฐ์ฒด์ ๊ฐ์ ์ ์ง๋๋ฉฐ, LS _CUST์ NAME1 ํ๋๊ฐ๋ง LS_BOOK๋ก ์ ๋ฌ ๋ฉ๋๋ค.
*NEW
"-- ๋ฐ์ดํฐ ์ ์ธ ๋ฐ SQL ์๋ต"
LOOP AT GT_SBOOK INTO GS_SBOOK.
READ TABLE GT_CUST INTO GS_CUST WITH KEY BOOKID = GS_SBOOK-BOOKID.
GS_SBOOK = VALUE #( BASE GS_SBOOK NAME = GS_CUST-NAME ).
ENDLOOP.
๋ค์์ CORRESPONDING์ ๋๋ค. ๋์ผํ ํ๋๋ช ์ ๊ฐ์ ์ด๋๊ณผ ๋์์ ๊ธฐ์กด ํ๋ ๊ฐ์ ์ ์ง ํ ์ ์์ต๋๋ค.
1. Old version
๋จผ์ ๊ตฌ๋ฌธ๋ฒ์ ๋๋ค. ์๋์ ๊ฐ์ด ์ฝ๋ฉํ๊ฒ ๋๋ฉด BASE์ ํ๋ ์ค NEW ํ๋๋ช ๊ณผ ๋์ผํ ๊ฐ๋ง ์ด๋ํ๊ฒ ๋ฉ๋๋ค. ์ฌ๊ธฐ์ NEW-COL4์ ๊ฐ์ EXPANDING NESTED TABLES์ ์ํฅ์ผ๋ก 'ZZ'๊ฐ์ ๊ฐ์ง๊ณ ์์ต๋๋ค.
*OLD
TYPES: BEGIN OF STRUC1,
,COL1 TYPE C LENGTH 2
,COL2 TYPE C LENGTH 2
,COL3 TYPE C LENGTH 2
END OF STRUC1.
TYPES: BEGIN OF STRUC2,
,COL2 TYPE C LENGTH 2
,COL3 TYPE C LENGTH 2
,COL4 TYPE C LENGTH 2
END OF STRUC2.
DATA: BASE TYPE STRUC1
,NEW TYPE STRUC2.
BASE-COL1 = "AA". "-- ๊ฐ๋
์ฑ์ ์ํด์ ์๋ฐ์ดํ๋ก ํ๊ธฐ"
BASE-COL2 = "AB".
BASE-COL3 = "AC".
NEW-COL4 = "ZZ".
MOVE-CORRESPONDING BASE TO NEW EXPANDING NESTED TABLES.
2. New version - BASE & CORRESPONDING
CORRESPODING๊ตฌ๋ฌธ์์ "#" NEW๊ตฌ์กฐ์ฒด์ ํ์ ์ ์ ์งํ๊ฒ ๋ฉ๋๋ค. NEW-COL4์ ์ ๋ ฅ๋ 'ZZ'๊ฐ์ ๊ฐ์ง๊ณ BASE์ COL2, COL3 ๊ฐ์ด NEW๋ก ์ ๋ ฅ๋ฉ๋๋ค.
*NEW
*TYPE ์ ์ธ ์๋ต
DATA(BASE) = VALUE STRUC1( COL1 = "AA" COL2 = "AB" COL3 = "AC" ).
DATA(NEW) = VALUE STRUC2( COL4 = "ZZ" ).
NEW = CORRESPONDING #( BASE ( NEW ) BASE ).
์ ๋ฌธ๋ฒ์ ๊ตฌ์กฐ์ฒด ์์ด๋ ํ ์ด๋ธ์ ๊ฐ์ ์ ๋ ฅํ ์ ์์ด์ ๋ถํ์ํ ๊ตฌ์กฐ์ฒด ์ ์ธ์ ์ค์ผ ์ ์์ต๋๋ค.
TYPES: BEGIN OF T_STRUC1,
FIELD1 TYPE C LENGTH 100,
FIELD2 TYPE C LENGTH 100,
END OF T_STRUC1.
TYPES: BEGIN OF T_STRUC2,
COMP1 TYPE STRING,
COMP2 TYPE T_STRUC1 BOXED, "-- T_STRUC1 ๊ตฌ์กฐ์ฒด๋ฅผ TABLE ํ์
์ผ๋ก ์ ์ธ"
END OF T_STRUC2.
TYPES: BEGIN OF T_STRUC3,
FIELD2 TYPE C LENGTH 100,
FIELD3 TYPE C LENGTH 100,
END OF T_STRUC3.
TYPES: BEGIN OF T_STRUC4,
COMP1 TYPE STRING,
COMP2 TYPE T_STRUC3 BOXED,
END OF T_STRUC4.
DATA(LT_STR2) = VALUE T_STRUC2( COMP1 = "1-1"
COMP2 = VALUE #( FIELD1 = "2-1"
FIELD2 = "2-2" ) ).
DATA(LT_STR3) = VALUE T_STRUC4( COMP2 = VALUE #( FIELD2 = "2-4" ) ).
LT_STR2-COMP2 = CORRESPONDING #( BASE ( LT_STR2-COMP2 ) LT_STR3-COMP2 ).
์ ๊ตฌ๋ฌธ์ ๋ง๋ก ํด์ํ์๋ฉด, LT_STR2์ COMP2 ํ ์ด๋ธ์ LT_STR3์ COMP ํ ์ด๋ธ์ ํ๋๋ช ์ด ๋์ผํ ๋ ๊ฐ์ ์ ๋ ฅํ๋๋ฐ ์ด๋ FIELD2 ํ๋๊ฐ ๊ฐ์ผ๋ 2-2์๋ COMP2-FIELD2 ๊ฐ์ 2-4๋ก ๋ฎ์ด ์์์ง๋ฉด์ ์ข์ธก ์ด๋ฏธ์ง์ ๊ฐ์ ๊ฒฐ๊ณผ๋ฅผ ํ์ธํ ์ ์์ต๋๋ค.
'ABAP' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
::Old to New:: Type conversion (2) | 2024.12.19 |
---|---|
::Function Module:: RFC ํธ์ถ ์ ํ ์คํธ ๋ฐ์ดํฐ ๋๋ ํ ๋ฆฌ ์๋ ์์ฑ (0) | 2023.08.23 |
::Old to New:: DATA declaration 2( feat. ABAP 7.40 Quick Reference ) (0) | 2022.06.22 |
::Old to New:: VALUE 2( feat. ABAP 7.40 Quick Reference ) (0) | 2022.06.21 |
::Old to New:: VALUE ( feat. ABAP 7.40 Quick Reference ) (0) | 2022.06.20 |