ABAP

::Old to New:: VALUE 3( with BASE )

soso1.gram 2023. 8. 22. 13:35

๐Ÿ“Œ 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๋กœ ๋ฎ์–ด ์”Œ์›Œ์ง€๋ฉด์„œ ์ขŒ์ธก ์ด๋ฏธ์ง€์™€ ๊ฐ™์€ ๊ฒฐ๊ณผ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

 

๋ฐ˜์‘ํ˜•