๋ฐ์ํ
๐ ์ข์ ์์: ์ฃผ์ ๊ฐ์ ์ด ์ด๋ฏธ ์ ์ฉ๋จ!
์์ค ์ฝ๋๋ฅผ ๋ณด๋ 2025.10.29์ ์ด๋ฏธ ์ต์ ํ ์์ ์ด ์งํ๋์์ต๋๋ค:
"*<<Start>>**********************************************************
"S/4HANA2025.10.29 KOLON12 CTS: DEVK900802
":LT_SKAT ํ
์ด๋ธ์ HASHED TABLE๋ก ์ ์ธ
"**********************************************************************
DATA : LT_SKAT TYPE HASHED TABLE OF SKAT
WITH UNIQUE KEY SPRAS KTOPL SAKNR
WITH HEADER LINE.
โ ์ด๋ฏธ ์ ์ฉ๋ ๊ฐ์ :
- SKAT ํ ์ด๋ธ → HASHED TABLE ์ ํ
- SELECT SINGLE → READ TABLE ๋ณ๊ฒฝ
- FOR ALL ENTRIES๋ก ์ฌ์ ๋๋ ์กฐํ
๐ ST12 Trace ๋ถ์ (ํ์ฌ ์ํ)
์ ์ฒด ์คํ ์๊ฐ
ํญ๋ชฉ์๊ฐ (μs)๋น์จ
| ์ด ์คํ ์๊ฐ | 516,381,073 | 100% |
| ABAP | 515,937,391 | 99.9% |
| Database | 428,359 | 0.1% |
| System | 15,323 | 0.0% |
ํต์ฌ ๋ณ๋ชฉ ์ง์
์์ํญ๋ชฉํธ์ถ ํ์์คํ ์๊ฐ (μs)๋น์จ๋ฌธ์ ์
| 1์ | READ TABLE GT_ZFIT8053 | 481,931ํ | 503,544,703 | 97.5% | ๐ด ์ต๋ ๋ณ๋ชฉ |
| 2์ | LOOP AT LT_ZFIT8050 | 481,931ํ | 514,983,945 | 99.7% | ์ ์ฒด LOOP |
| 3์ | READ TABLE GT_ZFIT8051 | 481,931ํ | 3,089,810 | 0.6% | ์ํธ |
| 4์ | READ TABLE LT_SKAT | 481,931ํ | 1,149,331 | 0.2% | โ ๊ฐ์ ๋จ |
ํต์ฌ ๋ฐ๊ฒฌ:
- โ LT_SKAT์ ์ด๋ฏธ ์ต์ ํ๋จ (0.2%๋ง ์ฐจ์ง)
- ๐ด GT_ZFIT8053์ด 97.5% ์ฐจ์ง - ์ฌ๊ธฐ๊ฐ ๋ฌธ์ !
๐ ์ถ๊ฐ ์ต์ ํ ๋ฐฉ์
์ต์ฐ์ : GT_ZFIT8053์ HASHED TABLE๋ก ์ ํ
โ ํ์ฌ ์ฝ๋ (์ต๋ ๋ณ๋ชฉ)
" GET_DATA FORM ๋ด๋ถ
LOOP AT LT_ZFIT8050. " 481,931๋ฒ ๋ฐ๋ณต
" โ
โ
โ
์ต๋ ๋ณ๋ชฉ: 481,931๋ฒ × ์ ํ ๊ฒ์ = 97.5% ์๊ฐ ์๋น โ
โ
โ
READ TABLE GT_ZFIT8053 WITH KEY GJAHR = LT_ZFIT8050-GJAHR
BELNR = LT_ZFIT8050-BELNR.
IF SY-SUBRC = 0.
LT_ZFIT8050-SAKNR_D = GT_ZFIT8053-SAKNR.
ENDIF.
ENDLOOP.
๋ฌธ์ ์ :
- GT_ZFIT8053์ ์ธ๋ฑ์ค ์์
- 481,931ํ × ํ๊ท 1,045μs = 503์ด ์์
- ์ ์ฒด ์๊ฐ์ 97.5% ์ฐจ์ง
โ ๊ฐ์ ์ฝ๋ (HASHED TABLE ์ฌ์ฉ)
*&---------------------------------------------------------------------*
*& FORM GET_MASTER_DATA - GT_ZFIT8053 ์ต์ ํ
*&---------------------------------------------------------------------*
FORM GET_MASTER_DATA.
"*<<Start>>**********************************************************
"S/4HANA2025.10.29 KOLON12 ์ถ๊ฐ ์ต์ ํ
":GT_ZFIT8053์ HASHED TABLE๋ก ์ ํ
"**********************************************************************
" โ
HASHED TABLE ํ์
์ ์
TYPES: BEGIN OF ty_zfit8053_hash,
gjahr TYPE zfit8053-gjahr,
belnr TYPE zfit8053-belnr,
saknr TYPE zfit8053-saknr,
END OF ty_zfit8053_hash.
" โ
HASHED TABLE๋ก ์ ์ธ (O(1) ์กฐํ ์๋)
DATA: gt_zfit8053_hash TYPE HASHED TABLE OF ty_zfit8053_hash
WITH UNIQUE KEY gjahr belnr.
" ๊ธฐ์กด ํ
์ด๋ธ ์กฐํ
SELECT gjahr belnr saknr
INTO CORRESPONDING FIELDS OF TABLE @gt_zfit8053_hash
FROM zfit8053.
" ํธํ์ฑ์ ์ํด ๊ธฐ์กด GT_ZFIT8053๋ ์ ์ง (๋ค๋ฅธ ๊ณณ์์ ์ฌ์ฉ ์)
SELECT * INTO CORRESPONDING FIELDS OF TABLE GT_ZFIT8051
FROM ZFIT8051.
"*<< End >>************************************************************
ENDFORM.
*&---------------------------------------------------------------------*
*& FORM GET_DATA - GT_ZFIT8053 ์กฐํ ์ต์ ํ
*&---------------------------------------------------------------------*
FORM GET_DATA.
DATA: ls_zfit8053_hash TYPE ty_zfit8053_hash.
" ... (๊ธฐ์กด ์ฝ๋)
"*<<Start>>**********************************************************
"S/4HANA2025.10.29 KOLON12 ์ถ๊ฐ ์ต์ ํ
":GT_ZFIT8053 ์กฐํ๋ฅผ HASHED TABLE๋ก ๋ณ๊ฒฝ
"**********************************************************************
LOOP AT LT_ZFIT8050.
" AS-IS: ์ ํ ๊ฒ์ (๋๋ฆผ)
" READ TABLE GT_ZFIT8053 WITH KEY GJAHR = LT_ZFIT8050-GJAHR
" BELNR = LT_ZFIT8050-BELNR.
" โ
TO-BE: ํด์ ๊ฒ์ (O(1) - ์ฆ์ ์กฐํ)
READ TABLE gt_zfit8053_hash INTO ls_zfit8053_hash
WITH TABLE KEY gjahr = lt_zfit8050-gjahr
belnr = lt_zfit8050-belnr.
IF sy-subrc = 0.
lt_zfit8050-saknr_d = ls_zfit8053_hash-saknr.
ENDIF.
"*<< End >>************************************************************
" ์์ด์ฝ ์ค์
ASSIGN COMPONENT 'ICON' OF STRUCTURE <gs_outt> TO <field>.
IF lt_zfit8050-saknr_d IS INITIAL.
<field> = icon_led_red.
ELSE.
<field> = icon_led_green.
ENDIF.
" ... (๋๋จธ์ง ์ฝ๋)
ENDLOOP.
ENDFORM.
์์ ํจ๊ณผ:
- 503์ด → 5์ด (99% ๊ฐ์)
- ์ ์ฒด 516์ด → 18์ด (96.5% ๊ฐ์ )
์ถ๊ฐ ์ต์ ํ: GT_ZFIT8051๋ HASHED TABLE๋ก
FORM GET_MASTER_DATA.
" GT_ZFIT8051๋ HASHED TABLE๋ก ์ ํ
TYPES: BEGIN OF ty_zfit8051_hash,
saknr TYPE zfit8051-saknr,
gubun TYPE zfit8051-gubun,
level1 TYPE zfit8051-level1,
level2 TYPE zfit8051-level2,
level3 TYPE zfit8051-level3,
level4 TYPE zfit8051-level4,
level5 TYPE zfit8051-level5,
END OF ty_zfit8051_hash.
DATA: gt_zfit8051_hash TYPE HASHED TABLE OF ty_zfit8051_hash
WITH UNIQUE KEY saknr gubun.
SELECT saknr gubun level1 level2 level3 level4 level5
INTO CORRESPONDING FIELDS OF TABLE @gt_zfit8051_hash
FROM zfit8051.
ENDFORM.
FORM GET_DATA.
DATA: ls_zfit8051_hash TYPE ty_zfit8051_hash.
LOOP AT lt_zfit8050.
" ... (GT_ZFIT8053 ์กฐํ)
" ๊ตฌ๋ถ ๊ฒฐ์
CLEAR lv_gubun.
IF lt_zfit8050-dmbtr > 0.
lv_gubun = 'D'.
ELSE.
lv_gubun = 'W'.
ENDIF.
" AS-IS
" READ TABLE GT_ZFIT8051 WITH KEY SAKNR = LT_ZFIT8050-SAKNR_D
" GUBUN = LV_GUBUN.
" TO-BE: HASHED TABLE ์กฐํ
READ TABLE gt_zfit8051_hash INTO ls_zfit8051_hash
WITH TABLE KEY saknr = lt_zfit8050-saknr_d
gubun = lv_gubun.
IF sy-subrc = 0.
" LEVEL ํ๋ ๋งคํ
ASSIGN COMPONENT 'LEVEL1' OF STRUCTURE <gs_outt> TO <field>.
<field> = COND #( WHEN ls_zfit8051_hash-level1 = ''
THEN '2.'
WHEN ls_zfit8051_hash-level1 = ''
THEN '3.'
ELSE ls_zfit8051_hash-level1 ).
ASSIGN COMPONENT 'LEVEL2' OF STRUCTURE <gs_outt> TO <field>.
<field> = ls_zfit8051_hash-level2.
" ... (LEVEL3~5๋ ๋์ผ)
ELSE.
" ๊ธฐ๋ณธ๊ฐ ์ฒ๋ฆฌ
ENDIF.
ENDLOOP.
ENDFORM.
์ถ๊ฐ ์์ ํจ๊ณผ: 3์ด → 0.1์ด (3์ด ์ถ๊ฐ ๊ฐ์ )
๐ ์ต์ข ๊ฐ์ ํจ๊ณผ ์์
ํญ๋ชฉํ์ฌ (์ด)๊ฐ์ ํ (์ด)๊ฐ์ ์จ
| READ TABLE GT_ZFIT8053 | 503.5 | 5 | 99.0% ↓ |
| READ TABLE GT_ZFIT8051 | 3.1 | 0.1 | 96.8% ↓ |
| READ TABLE LT_SKAT | 1.1 | 1.1 | ์ด๋ฏธ ์ต์ ํ๋จ โ |
| ๊ธฐํ ์ฒ๋ฆฌ | 8.7 | 7 | 19.5% ↓ |
| ์ด ์คํ ์๊ฐ | 516 | 13 | 97.5% ↓ |
์ต์ข ์์: 8๋ถ 36์ด → 13์ด โก
๐ฏ ์ ์ฉ ๊ฐ์ด๋
1๋จ๊ณ: ๋ฐฑ์ (ํ์)
" ๊ธฐ์กด ํ๋ก๊ทธ๋จ ๋ณต์ฌ (SE38)
Program: ZCO0810 → ZCO0810_BACKUP_20251029
2๋จ๊ณ: GET_MASTER_DATA ์์
FORM GET_MASTER_DATA.
" 1. GT_ZFIT8053 HASHED TABLE ์ถ๊ฐ
TYPES: BEGIN OF ty_zfit8053_hash,
gjahr TYPE zfit8053-gjahr,
belnr TYPE zfit8053-belnr,
saknr TYPE zfit8053-saknr,
END OF ty_zfit8053_hash.
DATA: gt_zfit8053_hash TYPE HASHED TABLE OF ty_zfit8053_hash
WITH UNIQUE KEY gjahr belnr.
SELECT gjahr belnr saknr
INTO CORRESPONDING FIELDS OF TABLE @gt_zfit8053_hash
FROM zfit8053.
" 2. GT_ZFIT8051 HASHED TABLE ์ถ๊ฐ
TYPES: BEGIN OF ty_zfit8051_hash,
saknr TYPE zfit8051-saknr,
gubun TYPE zfit8051-gubun,
level1 TYPE zfit8051-level1,
level2 TYPE zfit8051-level2,
level3 TYPE zfit8051-level3,
level4 TYPE zfit8051-level4,
level5 TYPE zfit8051-level5,
END OF ty_zfit8051_hash.
DATA: gt_zfit8051_hash TYPE HASHED TABLE OF ty_zfit8051_hash
WITH UNIQUE KEY saknr gubun.
SELECT saknr gubun level1 level2 level3 level4 level5
INTO CORRESPONDING FIELDS OF TABLE @gt_zfit8051_hash
FROM zfit8051.
ENDFORM.
3๋จ๊ณ: GET_DATA ์์
LOOP ๋ด๋ถ์ READ TABLE ๊ตฌ๋ฌธ์ WITH TABLE KEY๋ก ๋ณ๊ฒฝ:
" ๋ณ๊ฒฝ ์
READ TABLE GT_ZFIT8053 WITH KEY GJAHR = ...
" ๋ณ๊ฒฝ ํ
READ TABLE gt_zfit8053_hash INTO ls_zfit8053_hash
WITH TABLE KEY gjahr = ... belnr = ...
4๋จ๊ณ: ํ ์คํธ
- ๊ฐ๋ฐ ์์คํ ์์ ํ ์คํธ
- ST12 Trace ์ฌ์คํ → ๊ฐ์ ํ์ธ
- ๊ฒฐ๊ณผ ๋น๊ต: 516์ด → 13์ด ํ์ธ
- ํ์ง ์์คํ ์ด๊ด
๐ก ์ถ๊ฐ ํ
A. FIELD-SYMBOL ์ฌ์ฉ์ผ๋ก ์ถ๊ฐ ๊ฐ์
" ๋ณ๊ฒฝ ์
LOOP AT lt_zfit8050.
" ๋งค๋ฒ ๋ฐ์ดํฐ ๋ณต์ฌ
ENDLOOP.
" ๋ณ๊ฒฝ ํ
LOOP AT lt_zfit8050 ASSIGNING FIELD-SYMBOL(<fs_8050>).
" ์ฐธ์กฐ๋ง ์ฌ์ฉ (๋ณต์ฌ ์์)
READ TABLE gt_zfit8053_hash INTO DATA(ls_8053)
WITH TABLE KEY gjahr = <fs_8050>-gjahr
belnr = <fs_8050>-belnr.
ENDLOOP.
B. ์ค๋ณต ์ ๊ฑฐ ๋ก์ง ๊ฐ์
ํ์ฌ ์ฝ๋์ ์ด๋ฏธ ์๋ ์ค๋ณต ์ ๊ฑฐ๋ ์ข์ต๋๋ค:
SORT LT_ZFIT8050 BY GJAHR BELNR SAKNR SAKNR_D.
DELETE ADJACENT DUPLICATES FROM LT_ZFIT8050. " โ
์ข์
๐จ ์ฃผ์์ฌํญ
- ๊ธฐ์กด GT_ZFIT8053/GT_ZFIT8051 ์ ์ง
- ๋ค๋ฅธ FORM์์ ์ฌ์ฉํ ์ ์์ผ๋ฏ๋ก ์ญ์ ํ์ง ๋ง ๊ฒ
- ์๋ก์ด HASHED TABLE์ ์ถ๊ฐ๋ก ์์ฑ
- WITH TABLE KEY vs WITH KEY
- โ WITH KEY: ์ ํ ๊ฒ์ (๋๋ฆผ)
- โ WITH TABLE KEY: ํด์ ๊ฒ์ (๋น ๋ฆ)
- ํ
์คํธ ํ์
- ๋ฐ์ดํฐ ์ ํฉ์ฑ ํ์ธ
- ๊ฒฐ๊ณผ ๋น๊ต (๊ฐ์ ์ /ํ)
๐ ์ฒดํฌ๋ฆฌ์คํธ
โก 1. ๋ฐฑ์
์๋ฃ
โก 2. GET_MASTER_DATA์ HASHED TABLE ์ถ๊ฐ
โก 3. GET_DATA์ READ TABLE ๊ตฌ๋ฌธ ๋ณ๊ฒฝ
โก 4. Syntax Check ํต๊ณผ
โก 5. ๊ฐ๋ฐ ์์คํ
ํ
์คํธ
โก 6. ST12 Trace๋ก ์ฑ๋ฅ ํ์ธ (516์ด → 13์ด)
โก 7. ๊ธฐ๋ฅ ํ
์คํธ (๊ฒฐ๊ณผ ๋์ผ ํ์ธ)
โก 8. ์ด๊ด ์์ฒญ
์ด๋ฏธ SKAT ์ต์ ํ๋ฅผ ํ์ จ์ผ๋, GT_ZFIT8053๋ง ์ถ๊ฐ๋ก ์ต์ ํํ๋ฉด 97.5% ๊ฐ์ (8๋ถ 36์ด → 13์ด)์ด ๊ฐ๋ฅํฉ๋๋ค!
๋ฐ์ํ
'SAP' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| ACDOCA์ ์ฃผ์ ํน์ง ๋ฐ ์ญํ (1) | 2025.11.26 |
|---|---|
| [์ฐธ๊ณ ] ๊ทธ๋ฃน์จ์ด ๋ฉ์ผ ๋ฐ์ก Function Module (๊ฒ์ฆ์ ) (0) | 2025.11.04 |
| PFCG ์ญํ ์ ์ผ๊ด์ ์ผ๋ก ์์ฑํ๋ ํ์ค ํธ๋์ญ์ (0) | 2025.09.30 |
| SAP PP(Production Planning) ๋ชจ๋ ์ฃผ์ ํ ์ด๋ธ (0) | 2025.09.23 |
| SAP MM(Materials Management) ๋ชจ๋ ์ฃผ์ ํ ์ด๋ธ (0) | 2025.09.22 |