์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- ์ค๋ฒ3
- qas
- dev
- select
- screen program
- abap dictionary
- ์๊ณ ๋ฆฌ์ฆ
- ๋๋น์ฐ์ ํ์
- ์๋ฐฉํฅํ์
- ABAP
- structure
- PRD
- Export
- Internal Table
- ๋ชจ๋ํ
- t์ฝ๋
- Function Module
- ์ค๋ฒ2
- ๋จ๋ฐฉํฅํ์
- SAP
- ์ด๋ถํ์
- ์คํธ๋ญ์ฒ
- Import
- screen
- tasknumber
- modify
- call function
- ๊น์ด์ฐ์ ํ์
- ๋ฐฑ์ค
- subscreen
- Today
- Total
CS Student’s SAP&Tech Journey๐ซ
[SAP] ABAP ํ๋ฉด ๋์ ์ ์ด - MODIFY SCREEN ํ์ฉํ๊ธฐ ๋ณธ๋ฌธ
[SAP] ABAP ํ๋ฉด ๋์ ์ ์ด - MODIFY SCREEN ํ์ฉํ๊ธฐ
์ธํฌ๋งํฑ 2025. 3. 10. 22:02ABAP์์๋ ์ข ์ข ํน์ ์กฐ๊ฑด์ ๋ฐ๋ผ ํ๋ฉด ์์(์ ๋ ฅ ํ๋, ๋ฒํผ ๋ฑ)๋ฅผ ๋์ ์ผ๋ก ๋ณ๊ฒฝํด์ผ ํ๋ ๊ฒฝ์ฐ๊ฐ ๋ฐ์ํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ์กฐํ ๋ชจ๋์์๋ ํ๋๋ฅผ ๋นํ์ฑํํ๊ณ , ์์ ๋ชจ๋์์๋ ํ์ฑํํ๋ ๋ฐฉ์์ ๋๋ค. ์ด๋ฐ ๊ธฐ๋ฅ์ ๊ตฌํํ๊ธฐ ์ํด MODIFY SCREEN์ ํ์ฉํ์ฌ ํ๋ฉด์ ๋์ ์ผ๋ก ์ ์ดํ๋ ๋ฐฉ๋ฒ์ ์์๋ณด๊ฒ ์ต๋๋ค.
1. ํ๋ฉด ๋์ ์ ์ด๋?
ABAP์์ ํ๋ฉด(Screen)์ ์ฌ์ฉํ ๋, ํน์ ์กฐ๊ฑด์ ๋ฐ๋ผ ํ๋ฉด ์์(์ ๋ ฅ ํ๋, ๋ฒํผ, ์ฒดํฌ๋ฐ์ค ๋ฑ)๋ฅผ ํ์ฑํ/๋นํ์ฑํํ๊ฑฐ๋, ์จ๊ธฐ๊ฑฐ๋ ๋ณ๊ฒฝํด์ผ ํ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ์ด๋ฐ ๋์ ํ๋ฉด ์ฒ๋ฆฌ๋ MODIFY SCREEN ๋ฌธ๋ฒ์ ์ฌ์ฉํ์ฌ ๊ตฌํํ ์ ์์ต๋๋ค.
2. MODIFY SCREEN ๊ฐ๋
MODIFY SCREEN์ ์ฌ์ฉํ๋ฉด โ๏ธ PBO (Process Before Output) ์ด๋ฒคํธ์์ ํ๋ฉด ์์๋ฅผ ์ ์ดํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ํน์ ํ๋๋ฅผ ๋นํ์ฑํํ๊ฑฐ๋ ์จ๊ธฐ๊ฑฐ๋ ์ ๋ ฅ ๊ฐ๋ฅ ์ํ๋ฅผ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค.
๐ ๊ธฐ๋ณธ ๋ฌธ๋ฒ
โ ํญ์ LOOP๋ฌธ ์์ ์์นํ์ฌ ๊ฐ๊ฐ ํ๋์ ๋ํ ์ ์ด๋ฅผ ์ํํฉ๋๋ค.
LOOP AT SCREEN.
IF SCREEN-NAME = 'FIELD_NAME'.
SCREEN-INPUT = 0. " ํ๋ ์
๋ ฅ ๋ถ๊ฐ
SCREEN-ACTIVE = 0. " ํ๋ ๋นํ์ฑํ
SCREEN-INVISIBLE = 1. " ํ๋ ์จ๊ธฐ๊ธฐ
MODIFY SCREEN.
ENDIF.
ENDLOOP.
- SCREEN-INPUT: ์ ๋ ฅ ๊ฐ๋ฅ ์ฌ๋ถ (0 = ๋ถ๊ฐ๋ฅ, 1 = ๊ฐ๋ฅ)
- SCREEN-ACTIVE: ํ๋ ํ์ฑํ ์ฌ๋ถ (0 = ๋นํ์ฑํ, 1 = ํ์ฑํ)
- SCREEN-INVISIBLE: ํ๋ ์จ๊น ์ฌ๋ถ (0 = ๋ณด์ด๊ธฐ, 1 = ์จ๊ธฐ๊ธฐ)
- MODIFY SCREEN: ๋ณ๊ฒฝ ์ฌํญ์ ์ ์ฉํ๋ ๋ช ๋ น์ด
3. PBO์์ SCREEN ๋ณ์ ํ์ฉํ๊ธฐ
ABAP์์๋ SCREEN ๋ณ์๋ฅผ ์ ์ธํ์ง ์์๋ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด๋ ์์คํ ๋ด๋ถ์์ ์๋์ผ๋ก ๊ด๋ฆฌ๋๋ ํ ์ด๋ธ์ด๋ฉฐ, ๊ฐ ํ๋ฉด ์์์ ์์ฑ์ ์ ์ดํ ์ ์์ต๋๋ค.
๐ ์ฃผ์ SCREEN ๋ณ์
- SCREEN-NAME : ํ๋๋ช
- SCREEN-GROUP1~4 : ๊ทธ๋ฃนํ ๊ธฐ๋ฅ (์ต๋ 4๊ฐ ๊ทธ๋ฃน ๊ฐ๋ฅ)
- SCREEN-INPUT : ์ ๋ ฅ ๊ฐ๋ฅ ์ฌ๋ถ
- SCREEN-ACTIVE : ํ๋ฉด ์์ ํ์ฑํ ์ฌ๋ถ
- SCREEN-INVISIBLE : ํ๋ฉด ์์ ์จ๊น ์ฌ๋ถ
4. ๊ทธ๋ฃนํ(Grouping) ํ์ฉํ๊ธฐ
๋ชจ๋ ํ๋ฉด ์์๋ฅผ ๊ฐ๋ณ์ ์ผ๋ก ์ค์ ํ๋ฉด ์ฝ๋๊ฐ ๊ธธ์ด์ง๊ณ ๊ด๋ฆฌ๊ฐ ์ด๋ ค์์ง๋๋ค. ๋ฐ๋ผ์, ๊ด๋ จ ํ๋๋ฅผ ๊ทธ๋ฃนํํ์ฌ ํ ๋ฒ์ ์ ์ดํ๋ ๊ฒ์ด ํจ์จ์ ์ ๋๋ค.
๐ ์์ : ๋ชจ๋ ๋ผ๋์ค ๋ฒํผ ์จ๊ธฐ๊ธฐ
โ ๊ทธ๋ฃนํ์ ์ฌ์ฉํ์ง ์๋ ๊ฒฝ์ฐ
LOOP AT SCREEN.
IF SCREEN-NAME = 'Radio1' OR SCREEN-NAME = 'Radio2'.
SCREEN-INVISIBLE = 1.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
โ ๊ทธ๋ฃนํ์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ
๊ทธ๋ฃนํ์ ํ๋ฉด ์ฌ๋ฌ ๊ฐ์ ํ๋๋ฅผ ํ ๋ฒ์ ์ ์ดํ ์ ์์ด ์ฝ๋๊ฐ ๊ฐ๊ฒฐํด์ง๋๋ค.
LOOP AT SCREEN.
IF SCREEN-GROUP1 = 'ADM'.
SCREEN-INVISIBLE = 1.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
5. ์กฐํ/์์ ๋ชจ๋์ ๋ฐ๋ฅธ ํ๋ฉด ์ ์ด
MODE ๊ฐ์ ์ฌ์ฉํ์ฌ ํ๋ฉด์ ์ ๋ ฅ ๊ฐ๋ฅ ์ฌ๋ถ๋ฅผ ๋ณ๊ฒฝํ๋ ๊ธฐ๋ฅ์ ๊ตฌํํ ์ ์์ต๋๋ค.
๐ ๊ธฐ๋ฅ ์ค๋ช
- D (์กฐํ ๋ชจ๋): ๋ชจ๋ ์ ๋ ฅ ํ๋ ๋นํ์ฑํ
- U (์์ ๋ชจ๋): ์ ๋ ฅ ํ๋ ํ์ฑํ
๐ ๊ตฌํ ๋ฐฉ๋ฒ
0๏ธโฃ Screen Program ์์ฑํ๊ธฐ : ํญ๊ณต์ฌ ์ฝ๋์ ํญ๊ณตํธ์ ์ ๋ ฅ, ํด๋น ํญ๊ณตํธ ์์ธ์ ๋ณด ์กฐํ ํ๋ก๊ทธ๋จ
ํ๋ฉด์์ ํญ๊ณต์ฌ ์ฝ๋์ ํญ๊ณตํธ์ ์ ๋ ฅ๋ฐ์์ ํด๋น ํญ๊ณตํธ์ ๋ํ ์์ธ์ ๋ณด๋ฅผ ์กฐํํ๋ ํ๋ก๊ทธ๋จ์ ๊ตฌํํ์์ต๋๋ค. ABAP Dictionary๋ฅผ ์ด์ฉํ์ฌ Screen Program์ ์์ฑํ๋ ๋ฐฉ์์ ๋ค์์ ์ฐธ๊ณ ํ์ต๋๋ค.
1๏ธโฃ Screen Program (1) ๊ตฌ์กฐ์ ๊ธฐ๋ณธ ๊ฐ๋ / INCLUDE(TOP, PAI, PBO, FORM)
2๏ธโฃ Screen Program (2) Screen Program ์์ฑํ๊ธฐ - ABAP Dictionary๋ฅผ ํ์ฉํ๊ธฐ
XXXXXI01
MODULE user_command_0100 INPUT.
" ์
๋ ฅ๊ฐ 2๊ฐ (ํญ๊ณต์ฌ ์ฝ๋, ํญ๊ณตํธ)์ผ๋ก ํ
์ด๋ธ ๊ฒ์ํด์ ๊ฐ ๋ฃ์ด์ฃผ๊ธฐ
SELECT SINGLE *
FROM SPFLI
INTO CORRESPONDING FIELDS OF SDYN_CONN
WHERE CARRID = SDYN_CONN-CARRID
AND CONNID = SDYN_CONN-CONNID.
ENDMODULE.
XXXXXTOP
TABLES SDYN_CONN.
์คํธ๋ญ์ฒ๋ SDYN_CONN ํ์ฉํ์ฌ ์คํธ๋ญ์ฒ์ ํต์ ๋ณ์๋ฅผ ์ ์ธํ์ต๋๋ค.
โ๏ธ ํญ๊ณต์ฌ ์ฝ๋(CARRID)์ ํญ๊ณตํธ(CONNID)์ ์
๋ ฅ์ ์์ธ ์ ๋ณด ์กฐํ
1๏ธโฃ MODE๋ฅผ ์ํ ํต์ ๋ณ์ ์ ์ธ
XXXXXTOP
DATA GV_MODE TYPE C LENGTH 1.
2๏ธโฃ ํ๋ฉด์ ์ ๋ ฅ๊ฐ๋ฅ์ฌ๋ถ๋ฅผ ํ๋ฒ์ ์ ์ดํ๊ณ ์ถ์ ํ๋๋ค ๊ทธ๋ฃนํ
โ SCREEN - LAYOUT - ํ๋ Groups - ๊ทธ๋ฃน๋ง๋ค ๊ฐ์ ์ด๋ฆ ์ค์
3๏ธโฃ PBO์์ SCREEN ๋ณ์ ์ ์ด
SCREEN
PROCESS BEFORE OUTPUT.
MODULE MODIFY_SCREEN.
PROCESS AFTER INPUT.
MODULE USER_COMMAND_0100.
XXXXXO01
MODULE modify_screen OUTPUT.
LOOP AT SCREEN. " ๋ชจ๋ Element์ ๋ํ ์ ์ฉ์ ์ํด Element ๊ฐฏ์๋งํผ LOOP๋ฅผ ๋๋ค.
IF SCREEN-GROUP1 = 'ADM'.
CASE GV_MODE.
WHEN 'D'. " ์กฐํ ๋ชจ๋
SCREEN-INPUT = 0.
WHEN 'U'. " ์์ ๋ชจ๋
SCREEN-INPUT = 1.
ENDCASE.
ENDIF.
MODIFY SCREEN. " it์ wa์ ์ด๋ฆ์ด ๊ฐ์ ์๋ต๊ฐ๋ฅ
ENDLOOP.
ENDMODULE.
โ GV_MODE ๊ฐ์ ๊ธฐ๋ฐ์ผ๋ก ๊ทธ๋ฃนํ๋ ํ๋์ ์ ๋ ฅ ๊ฐ๋ฅ ์ฌ๋ถ๋ฅผ ์ ์ด
4๏ธโฃMODE๋ฅผ ์ํ LAYOUT ์ค์
โ GV_MODE - Get from Program
5. ์คํ ๊ฒฐ๊ณผ
โ
D (์กฐํ ๋ชจ๋) - ๋ชจ๋ ํ๋ ์
๋ ฅ ๋ถ๊ฐ
โ
U (์์ ๋ชจ๋) - ์
๋ ฅ ํ๋ ํ์ฑํ