๊ด€๋ฆฌ ๋ฉ”๋‰ด

CS Student’s SAP&Tech Journey๐Ÿ’ซ

[SAP] ABAP ํ™”๋ฉด ๋™์  ์ œ์–ด - MODIFY SCREEN ํ™œ์šฉํ•˜๊ธฐ ๋ณธ๋ฌธ

SAP/์Šคํฌ๋ฆฐ ํ”„๋กœ๊ทธ๋žจ Screen Program

[SAP] ABAP ํ™”๋ฉด ๋™์  ์ œ์–ด - MODIFY SCREEN ํ™œ์šฉํ•˜๊ธฐ

์ธํฌ๋งˆํ‹ฑ 2025. 3. 10. 22:02

ABAP์—์„œ๋Š” ์ข…์ข… ํŠน์ • ์กฐ๊ฑด์— ๋”ฐ๋ผ ํ™”๋ฉด ์š”์†Œ(์ž…๋ ฅ ํ•„๋“œ, ๋ฒ„ํŠผ ๋“ฑ)๋ฅผ ๋™์ ์œผ๋กœ ๋ณ€๊ฒฝํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์กฐํšŒ ๋ชจ๋“œ์—์„œ๋Š” ํ•„๋“œ๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•˜๊ณ , ์ˆ˜์ • ๋ชจ๋“œ์—์„œ๋Š” ํ™œ์„ฑํ™”ํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฐ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด 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 (์ˆ˜์ • ๋ชจ๋“œ) - ์ž…๋ ฅ ํ•„๋“œ ํ™œ์„ฑํ™”