λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°

ABAP Concept (πŸ“κ°œλ…)/Advanced

이벀트 블둝 / λ‹€μ΄μ–Όλ‘œκ·Έ λͺ¨λ“ˆλ³„ MESSAGE νƒ€μž… λ™μž‘ 차이

ABAPμ—μ„œ λ©”μ‹œμ§€(MESSAGE)λŠ” λ‹¨μˆœν•œ μ•Œλ¦Όμ„ λ„˜μ–΄ ν”„λ‘œκ·Έλž¨ 흐름을 μ œμ–΄ν•˜λŠ” 핡심 역할을 ν•œλ‹€. 특히 λ©”μ‹œμ§€ νƒ€μž…(A, E, I, S, W, X)κ³Ό λ°œμƒ μœ„μΉ˜(이벀트 블둝/λͺ¨λ“ˆ μ’…λ₯˜)에 따라 λ©”μ‹œμ§€κ°€ ν”„λ‘œκ·Έλž¨μ— λ―ΈμΉ˜λŠ” 영ν–₯이 μ „ν˜€ λ‹€λ₯΄κ²Œ μž‘λ™ν•œλ‹€.  

< 예제 : 이벀트 블둝 별 λ™μž‘ >
< AT SELECTION SCREEN μ—μ„œμ˜ W νƒ€μž… λ™μž‘ >
< START-OF-SELECTION μ—μ„œμ˜ W νƒ€μž… λ™μž‘ >

 

μœ„μ™€ 같이, λ™μΌν•œ λ©”μ‹œμ§€ νƒ€μž…μΈ W(Warning)을 μ‚¬μš©ν–ˆλŠ”λ°, μ„ νƒν™”λ©΄μ—μ„œλŠ” λ…Έλž€μƒ‰ 경고둜 잘 좜λ ₯λ˜λ‹€κ°€λ„, START-OF-SELECTIONμ—μ„œ λ˜‘κ°™μ€ μ½”λ“œλ₯Ό μ‹€ν–‰ν•˜λ©΄ μ—λŸ¬μ²˜λŸΌ λ™μž‘ν•˜λ©΄μ„œ ν”„λ‘œκ·Έλž¨ 흐름을 λ©ˆμΆ°λ²„λ¦°λ‹€.

 

이번 κΈ€μ—μ„œλŠ” ABAP λ©”μ‹œμ§€ νƒ€μž…(A, E, I, S, W, X)의 λ™μž‘ 방식이 μ–΄λ–»κ²Œ κ²°μ •λ˜λŠ”μ§€, 그리고 μ–΄λ–€ 이벀트 λΈ”λ‘μ—μ„œ μ–΄λ–€ λ™μž‘μ„ ν•˜λŠ”μ§€λ₯Ό 정리해 보도둝 ν•˜κ² λ‹€.


1. λ©”μ‹œμ§€ νƒ€μž…별 κΈ°λ³Έ μ˜λ―Έ

νƒ€μž… μ„€λͺ… κΈ°λ³Έ λ™μž‘ λ©”μ‹œμ§€ ν‘œμ‹œ μœ„μΉ˜ 
A (Abend) 비정상 μ’…λ£Œ ν”„λ‘œκ·Έλž¨ μ¦‰μ‹œ 쀑단, λ‘€λ°± λ°œμƒ λ‹€μ΄μ–Όλ‘œκ·Έ λ°•μŠ€ ν‘œμ‹œ
E (Error) 였λ₯˜ ν˜„μž¬ μž…λ ₯/ν™”λ©΄ μœ μ§€, 였λ₯˜ λ©”μ‹œμ§€ ν‘œμ‹œ μƒνƒœλ°” ν‘œμ‹œ 
I (Information) 정보 λ‹¨μˆœ μ•ˆλ‚΄ ν›„ 계속 μ§„ν–‰ λ‹€μ΄μ–Όλ‘œκ·Έ λ°•μŠ€ ν‘œμ‹œ
S (Success) 성곡 성곡 λ©”μ‹œμ§€ ν›„ 계속 μ§„ν–‰ μƒνƒœλ°” ν‘œμ‹œ 
W (Warning) κ²½κ³  κ²½κ³  ν‘œμ‹œ, 상황에 따라 μ§„ν–‰/차단
(μ—”ν„° ν›„ μ§„ν–‰ )
μƒνƒœλ°” ν‘œμ‹œ 
X (Exit) 심각 μ˜€λ₯˜ μ‹œμŠ€ν…œ μ˜€λ₯˜ λ€ν”„ (MESSAGE_TYPE_X) -

 


2. μ΄λ²€νŠΈ λΈ”둝/λ‹€μ΄μ–Όλ‘œκ·Έ λͺ¨λ“ˆ λ³„ λ©”μ‹œμ§€ λ™μž‘ μš”μ•½

  • A νƒ€μž…, I νƒ€μž…, S νƒ€μž…, X νƒ€μž…μ€ λͺ¨λ“  이벀트 블둝/λ‹€μ΄μ–Όλ‘œκ·Έ λͺ¨λ“ˆμ—μ„œ λ™μΌν•˜κ²Œ μž‘λ™ν•¨.
  • E νƒ€μž…, W νƒ€μž… 은 이벀트 블둝/λ‹€μ΄μ–Όλ‘œκ·Έ λͺ¨λ“ˆμ—μ„œ 차이가 있음. 
λ©”μ„Έμ§€ 호좜 μœ„μΉ˜  E νƒ€μž… (Error)  W νƒ€μž… (Warning) 
MODULE INPUT 
(PROCESS AFTER INPUT)
ν˜„μž¬ ν™”λ©΄ μœ μ§€ ν˜„μž¬ ν™”λ©΄ μœ μ§€
PROCESS ON VALUE-REQUEST, 
PROCESS ON HELP-REQUEST,
EXIT-COMMAND
μ˜ˆμ™Έ λ°œμƒ 
(지원 μ•ˆν•¨)
μ˜ˆμ™Έ λ°œμƒ 
(지원 μ•ˆν•¨)
AT SELECTION-SCREEN μž…λ ₯ 였λ₯˜,
λ‹€μ‹œ Selection Screen으둜
μž…λ ₯ 였λ₯˜,
λ‹€μ‹œ Selection Screen으둜
AT LINE-SELECTION,
AT PFnn,
AT USER-COMMAND
(리슀트 ν”„λ‘œμ„Έμ‹±)
리슀트 λ ˆλ²¨ μœ μ§€ μ—λŸ¬μ²˜λŸΌ λ™μž‘ 
(리슀트 ν”„λ‘œμ„Έμ‹±μ—μ„œλŠ” W도 E둜 λ³€ν™˜)
INITIALIZATION,
START-OF-SELECTION,
GET, 
END-OF-SELECTION, 
TOP-OF-PAGE
계속 μ§„ν–‰ μ—λŸ¬μ²˜λŸΌ λ™μž‘
PBO 
(PROCESS BEFORE OUTPUT)
μ˜ˆμ™Έ λ°œμƒ λ˜λŠ” 
μž…λ ₯ν™”λ©΄ μž¬μΆœλ ₯
계속 μ§„ν–‰

3. 각 λ©”μ‹œμ§€ νƒ€μž…λ³„ 상황에 λ”°λ₯Έ ꡬ체적인 λ™μž‘ 

1) A νƒ€μž… (Abort)

  • 무쑰건 ν”„λ‘œκ·Έλž¨ μ’…λ£Œ + λ‘€λ°±
  • 호좜된 λͺ¨λ“  λ‚΄λΆ€ μ„Έμ…˜ μ’…λ£Œ
  • λ‹€μ΄μ–Όλ‘œκ·Έ λ°•μŠ€μ— λ©”μ‹œμ§€ ν‘œμ‹œ → 확인 ν›„ ν”„λ‘œκ·Έλž¨ 쀑단

2) E νƒ€μž… (Error)

  • 일반적인 ν™”λ©΄ μž…λ ₯ 였λ₯˜ μ‹œ μ‚¬μš©
  • PAI, AT SELECTION-SCREEN λ“±μ—μ„œλŠ”
    • μž…λ ₯κ°’ μˆ˜μ • μœ λ„, ν™”λ©΄ μœ μ§€
    • ν•„λ“œ 포컀슀 볡원 (CHAIN μ•ˆ/λ°– 여뢀에 따라 영ν–₯ ν•„λ“œ λ²”μœ„ 닀름)
  • VALUE-REQUEST/HELP-REQUEST(POV,POH), EXIT-COMMAND 처리 μ€‘μ—λŠ” μ‚¬μš© λΆˆκ°€ → μ˜ˆμ™Έ λ°œμƒ

3) I νƒ€μž… (Information)

  • λ‹¨μˆœ μ•ˆλ‚΄ ( λ‹€μ΄μ–Όλ‘œκ·Έ νŒμ—…μœΌλ‘œ ν‘œμ‹œ ) ν›„ 계속
  • PBOλ‚˜ νŠΉμ • 이벀트 블둝(INITIALIZATION)μ—μ„œλŠ” μƒνƒœ 바에 ν‘œμ‹œλ  μˆ˜λ„ 있음 
  • μž…λ ₯은 막지 μ•ŠμŒ

4) S νƒ€μž… (Success)

  • 성곡 λ©”μ‹œμ§€ ν‘œμ‹œ ν›„ 처리 흐름 계속
  • 주둜 μ €μž₯ μ™„λ£Œ λ“± κ²°κ³Ό μ•ˆλ‚΄μ— μ‚¬μš©

5) W νƒ€μž… (Warning)

  • 기본적으둜 κ²½κ³  ν‘œμ‹œ ν›„ 계속 μ§„ν–‰
  • ν•˜μ§€λ§Œ 리슀트 ν”„λ‘œμ„Έμ‹±(AT LINE-SELECTION λ“±) μ—μ„œλŠ” E νƒ€μž…μ²˜λŸΌ μž‘λ™ (즉, κ²½κ³ κ°€ 였λ₯˜λ‘œ κ°„μ£Όλ˜μ–΄ λ‹€μŒ 단계 μ§„μž… 차단됨.)

6) X νƒ€μž… (Exit)

  • 심각 μ‹œμŠ€ν…œ 였λ₯˜ λ°œμƒ
  • MESSAGE_TYPE_X λŸ°νƒ€μž„ μ—λŸ¬λ‘œ 덀프  ν”„λ‘œκ·Έλž¨ 비정상 μ’…λ£Œ.

4. λ©”μ‹œμ§€ κ΄€λ ¨ μΆ”κ°€ Tip

1) λ©”μ‹œμ§€ ν‘œμ‹œμ— λ”°λ₯Έ 흐름 μ œμ–΄

  • λ‹€μ΄μ–Όλ‘œκ·Έ λ°•μŠ€(Dialog Box)μ—μ„œ λ©”μ‹œμ§€κ°€ ν‘œμ‹œλ˜λ©΄, 닫을 λ•ŒκΉŒμ§€ ν”„λ‘œκ·Έλž¨ 흐름이 λ©ˆμΆ˜λ‹€.

2) λ©”μ‹œμ§€ 길이

  • λ‹€μ΄μ–Όλ‘œκ·Έ λ°•μŠ€ (Dialog Box) : μ œν•œν•œ 쀄 μ΅œλŒ€ 50자. μ΅œλŒ€ 6쀄(총 μ•½ 300자).
  • μƒνƒœλ°”(Status Bar) : ν™”λ©΄ 폭에 따라 잘릴 수 있음 ("..." ν‘œμ‹œ).

3) λ‚΄λΆ€ μ‹œμŠ€ν…œ ν•„λ“œ sy-msgty

  • DISPLAY LIKE μ˜΅μ…˜μœΌλ‘œ λ‹€λ₯Έ νƒ€μž…μ²˜λŸΌ ν‘œμ‹œν•  μˆ˜λ„ μžˆμ§€λ§Œ, μ‹œμŠ€ν…œ ν•„λ“œ sy-msgty은 μ›λž˜ νƒ€μž…μœΌλ‘œ μœ μ§€λ¨.

4)  LOAD-OF-PROGRAM

  • λ©”μ‹œμ§€ μ‚¬μš©μ€ 가급적 ν”Όν•  것 (특히 μ‚¬μš©μž μž…λ ₯이 ν•„μš”ν•œ λ©”μ‹œμ§€ )

 

πŸ’‘ Background Processingμ—μ„œ λ©”μ‹œμ§€ 처리 방식

ABAP ν”„λ‘œκ·Έλž¨μ΄ λ°±κ·ΈλΌμš΄λ“œ μž‘μ—…(Background Job)으둜 싀행될 경우, λ©”μ‹œμ§€λŠ” 화면에 ν‘œμ‹œλ˜μ§€ μ•Šκ³ , λ°±κ·ΈλΌμš΄λ“œ μž‘μ—… 둜그(Job Log)에 κΈ°λ‘λœλ‹€. νƒ€μž…λ³„ λ©”μ‹œμ§€ μ²˜λ¦¬λŠ” λ‹€μŒκ³Ό κ°™λ‹€. 

- S (Status) : λ‘œκ·Έμ— 기둝, ν”„λ‘œκ·Έλž¨ 계속 μ§„ν–‰
- I, W (Info, Warning) : λ‘œκ·Έμ— 기둝, μ‚¬μš©μž μž…λ ₯ 없이 μžλ™μœΌλ‘œ Enter 처리 ν›„ 계속 μ§„ν–‰
- E, A (Error, Abort) : λ‘œκ·Έμ— 기둝 ν›„ error_message(Exception)둜 μ²˜λ¦¬λ˜μ§€ μ•ŠμœΌλ©΄ Job 쀑단
- X (Termination) : λŸ°νƒ€μž„ 였λ₯˜ λ°œμƒ + DB λ‘€λ°± + Job κ°•μ œ μ’…λ£Œ

이 λ•Œ, λ©”μ‹œμ§€ νƒ€μž… WλŠ” 리슀트 ν”„λ‘œμ„Έμ‹± μƒνƒœμ—μ„œλŠ” μœ„μ—μ„œ λ§ν•œ 것과 같이 E둜 μžλ™ λ³€ν™˜λ˜μ–΄ μ²˜λ¦¬λœλ‹€.