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

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

ABAP μ—μ„œ Auto Rollback은 λŒ€μ²΄ μ–Έμ œ μ‹€ν–‰λ˜λŠ” 걸까?

μ•ž ν¬μŠ€νŒ…μ—μ„œ Implicit Commit ( Auto Commit )에 λŒ€ν•΄ μ•Œμ•„λ³΄μ•˜λ‹€.

 

그럼 λ°˜λŒ€λ‘œ 데이터가 μ €μž₯λ˜μ§€ μ•Šκ³  원상 λ³΅κ΅¬λ˜λŠ” Rollback κ²½μš°λŠ” μ–Έμ œμΌκΉŒ?

SAP ABAP μ‹œμŠ€ν…œμ—μ„œλŠ” λͺ…μ‹œμ μœΌλ‘œ ROLLBACK WORK ꡬ문을 μž‘μ„±ν•˜μ§€ μ•Šμ•„λ„, νŠΉμ • μƒν™©μ—μ„œλŠ” μžλ™μœΌλ‘œ λ°μ΄ν„°λ² μ΄μŠ€ Rollback 이 λ°œμƒν•œλ‹€. 이 μ—­μ‹œ νŠΈλžœμž­μ…˜ μ•ˆμ •μ„±μ„ μœ„ν•΄ μ‹œμŠ€ν…œμ΄ μˆ˜ν–‰ν•˜λŠ” λ™μž‘μ΄λ©°, κ°œλ°œμžκ°€ 이 λ©”μ»€λ‹ˆμ¦˜μ„ μ œλŒ€λ‘œ μ΄ν•΄ν•˜μ§€ λͺ»ν•˜λ©΄ 예기치 μ•Šκ²Œ 데이터가 μ‚¬λΌμ§€λŠ” 상황을 κ²ͺ을 수 μžˆλ‹€.


1. Implicit Rollback (Auto Rollback)이 μ‹€ν–‰λ˜λŠ” 상황

SAP μ‹œμŠ€ν…œμ—μ„œλŠ” μ•„λž˜μ™€ 같은 μ˜ˆμ™Έμ μΈ 상황이 λ°œμƒν•˜λ©΄ μžλ™μœΌλ‘œ λ°μ΄ν„°λ² μ΄μŠ€ 둀백을 μˆ˜ν–‰ν•œλ‹€.

βœ… λŸ°νƒ€μž„ 였λ₯˜( Runtime Error ) λ°œμƒ μ‹œ

  • κ°€μž₯ ν”νžˆ μ ‘ν•  수 μžˆλŠ” 경우둜 ABAP ν”„λ‘œκ·Έλž¨ μ‹€ν–‰ 쀑 dumpκ°€ λ°œμƒν•˜κ±°λ‚˜ μ˜ˆμ™Έ 상황이 μ²˜λ¦¬λ˜μ§€ μ•ŠμœΌλ©΄, μžλ™μœΌλ‘œ 둀백이 μˆ˜ν–‰λœλ‹€.

βœ… μ’…λ£Œ λ©”μ‹œμ§€( ν”„λ‘œμ„ΈμŠ€ 쀑단 )인 Message Type "A" , "X"  λ°œμƒμ‹œ

  • MESSAGE type "A" λ˜λŠ” "X"처럼 ν”„λ‘œκ·Έλž¨ 싀행을 μ€‘λ‹¨μ‹œν‚€λŠ” λ©”μ‹œμ§€κ°€ λ°œμƒν•  κ²½μš°μ—λ„ μžλ™ 둀백을 μˆ˜ν–‰ν•œλ‹€.(πŸ’‘ MESSAGE e... RAISING error_message.처럼 μ •μ˜λœ exception을 톡해 처리된 λ©”μ‹œμ§€λ„ μžλ™μœΌλ‘œ 둀백이 μˆ˜ν–‰λ¨. )

βœ…  Message Type "E" , "W"  둜 ν”„λ‘œκ·Έλž¨μ΄ μ’…λ£Œμ‹œ ( κ²½μš°μ— 따라 λ°œμƒ κ°€λŠ₯ )

  • κ²½μš°μ— 따라 MESSAGE type "E" λ˜λŠ” "W" 도 νŠΉμ • μ»¨ν…μŠ€νŠΈ(πŸ”) μ—μ„œ ν”„λ‘œκ·Έλž¨μ„ μ’…λ£Œμ‹œν‚€λŠ”λ°, 이 κ²½μš°μ—λ„ 둀백이 λ°œμƒλ  수 μžˆλ‹€.
πŸ”  Type 'E', 'W' Messageκ°€ ν”„λ‘œκ·Έλž¨μ„ μ’…λ£Œμ‹œν‚€λŠ” 인 경우 

➑️ CALL TRANSACTION ( BDCκ°€ μ•„λ‹Œ μ™ΈλΆ€ μ„Έμ…˜μœΌλ‘œ ν˜ΈμΆœλ˜λŠ” 경우 )
 : μƒˆλ‘œμš΄ μ„Έμ…˜μ΄ μ—΄λ¦¬κ²Œ 되면 Message type "E"λ‚˜ "W" λ°œμƒν•˜λ©΄ μ„Έμ…˜μ΄ μ’…λ£Œλ˜λ©΄μ„œ ν”„λ‘œκ·Έλž¨ flowκ°€ μ’…λ£Œλ˜λ©°, 메인 ν”„λ‘œκ·Έλž¨μœΌλ‘œ λ‹€μ‹œ λŒμ•„μ˜€μ§€ μ•ŠλŠ”λ‹€. 

➑️ SUBMIT 호좜된 리포트
: Message type  "E" λ˜λŠ” "W"κ°€ λ°œμƒν•˜κ³  μ²˜λ¦¬λ˜μ§€ μ•Šμ€ 상황이라면 ν”„λ‘œκ·Έλž¨ flowκ°€ 쀑단될 수 μžˆλ‹€.

➑️ Batch Input ( BDC )
: Batch Input μ²˜λ¦¬μ€‘ Message type "E" λ°œμƒν•˜λ©΄ BDC 쀑단 및 νŠΈλžœμ μ…˜ μ€‘λ‹¨λœλ‹€.

➑️ 직접 μ‹€ν–‰ν•œ T-code
 : μ‚¬μš©μžκ°€ T-codeλ₯Ό 직접 μ‹€ν–‰ν•œ ν™”λ©΄μ—μ„œ Message type "E"κ°€ λ°œμƒν•˜λ©΄ 더 이상 μƒμœ„ 둜직으둜 λŒμ•„κ°ˆ 수 μ—†κΈ° λ•Œλ¬Έμ— ν™”λ©΄ μ’…λ£Œ 및 ν”„λ‘œκ·Έλž¨ μ’…λ£Œλ‘œ μ΄μ–΄μ§ˆ 수 μžˆλ‹€. 

➑️ Function Module
: Message type "E" 인 경우 Exception 없이 호좜된 ν•¨μˆ˜μ΄κ±°λ‚˜ λ©”μ„Έμ§€ RAISING 으둜 μ˜ˆμ™Έμ²˜λ¦¬ ν•˜μ§€ μ•Šμ€ 경우 ν”„λ‘œκ·Έλž¨ μ’…λ£Œ λ˜λŠ” DUMPκ°€ λ°œμƒν•œλ‹€.

2. μΆ”κ°€λ‘œ μ•Œμ•„μ•Ό ν•  μ£Όμ˜μ‚¬ν•­

βœ… λ‚΄λΆ€ μ„Έμ…˜ μ’…λ£Œ μ‹œμ—λŠ” Commit도, Rollback도 μ—†μŒ

  • Implicit Commit( Auto Commit ) κ³Ό λ™μΌν•˜κ²Œ λ‚΄λΆ€ μ„Έμ…˜( Internal Session ) μ’…λ£Œ μ‹œμ—λŠ” μžλ™ 컀밋도, μžλ™ 둀백도 μΌμ–΄λ‚˜μ§€ μ•ŠλŠ”λ‹€. μ›ν•˜λ©΄ 직접 λͺ…μ‹œν•΄μ„œ μ‚¬μš©ν•΄μ•Ό ν•œλ‹€. 

βœ… Rollback은 ν˜„μž¬ μ—΄λ¦° Database μ—°κ²° 전체에 적용됨

  • μžλ™ 둀백은 단일 DB 연결뿐 μ•„λ‹ˆλΌ ν˜„μž¬ μ—΄λ¦° λͺ¨λ“  λ°μ΄ν„°λ² μ΄μŠ€ 컀λ„₯μ…˜ (πŸ”) 에 λŒ€ν•΄ 일괄 μ μš©λœλ‹€.
πŸ”λ‹€μ€‘ DB μ—°κ²°( multiple DB connections )

ν‘œμ€€ DB μ—°κ²° (standard connection) – 기본적으둜 μ‚¬μš©ν•˜λŠ” 메인 DB μ—°κ²°
μΆ”κ°€ DB μ—°κ²° (secondary connections) – DB_CONNECT(DBCO), ADBC, Native SQL, CDS 등을 톡해 μ‚¬μš©μžκ°€ λͺ…μ‹œμ μœΌλ‘œ μ—΄ 수 있음. RFCλ‚˜ λ‹€λ₯Έ μ‹œμŠ€ν…œκ³Όμ˜ 연결도 포함 κ°€λŠ₯

즉, λŸ°νƒ€μž„ 였λ₯˜, μ’…λ£Œ λ©”μ‹œμ§€ λ“±μœΌλ‘œ 인해 둀백이 λ°œμƒν•˜λ©΄, ν˜„μž¬ μ—΄λ € μžˆλŠ” λͺ¨λ“  DB 연결에 λŒ€ν•΄ λ™μ‹œμ— 둀백이 λ°œμƒν•œλ‹€. 

"ν•œ Dialog Step μ•ˆμ—μ„œ μˆ˜ν–‰λœ λͺ¨λ“  DB μž‘μ—…μ€ λ…Όλ¦¬μ μœΌλ‘œ ν•˜λ‚˜μ˜ νŠΈλžœμž­μ…˜μœΌλ‘œ κ°„μ£Ό." ( = SAP LUW )

3. Implicit Commit  vs  Implicit Rollback 

상황 Implicit Commit Implicit Rollback 
Dialog Step μ’…λ£Œ βœ… λ°œμƒ ❌ μ—†μŒ
RFC ν˜ΈμΆœ βœ… λ°œμƒ ❌ μ—†μŒ
Runtime Error ❌ μ—†μŒ βœ… λ°œμƒ
Message Type  "A" / "X" ❌ μ—†μŒ βœ… λ°œμƒ
Message Type  "E" / "W" βœ… λ°œμƒ βš οΈνŠΉμ • μ»¨ν…μŠ€νŠΈμ—μ„œ λ°œμƒ κ°€λŠ₯
Message Type  "I" βœ… λ°œμƒ ❌ μ—†μŒ
Internal Session μ’…λ£Œ ❌ μ—†μŒ ❌ μ—†μŒ

 

 

 


ℹ️ κ°™μ΄ μ½μœΌλ©΄ μ’‹μ€ ν¬μŠ€νŒ…

πŸ”— [ABAP Concept (πŸ“κ°œλ…)/Advanced] - ABAP μ—μ„œ AUTO COMMIT은 λŒ€μ²΄ μ–Έμ œ μ‹€ν–‰λ˜λŠ” 걸까?

 

ABAP μ—μ„œ AUTO COMMIT은 λŒ€μ²΄ μ–Έμ œ μ‹€ν–‰λ˜λŠ” 걸까?

ABAP κ°œλ°œμ„ ν•˜λ‹€ 보면 이런 생각을 ν•œλ²ˆμ―€ ν•΄λ³΄μ•˜μ„ 것이닀. COMMIT WORK λ¬Έμž₯을 λ„£μ§€ μ•Šμ•˜λŠ”λ°, μ™œ λ°μ΄ν„°λ² μ΄μŠ€μ— μ €μž₯(commit)이 λ˜μ§€? μ²˜μŒμ—λŠ” 버그인가 μ‹Άμ–΄ μ˜μ‹¬λ„ 해보고, νŠΈλžœμž­μ…˜μ΄ 꼬인 κ±Έ

twossun.tistory.com

πŸ”—[ABAP Concept (πŸ“κ°œλ…)/Advanced] - SAP LUW ( Logical Unit of Work ) μ‰½κ²Œ μ΄ν•΄ν•˜κΈ°

 

SAP LUW ( Logical Unit of Work ) μ‰½κ²Œ μ΄ν•΄ν•˜κΈ°

ABAP κ°œλ°œμ„ μ‹œμž‘ν•˜κ³  μ–΄λŠ 정도 μ΅μˆ™ν•΄μ§ˆ 즈음, ν•œ 번쯀 μŠ€μ³κ°€λŠ” κ°œλ… 쀑에 ν•˜λ‚˜κ°€ λ°”λ‘œ LUW(Logical Unit of Work)이닀.처음 이 μš©μ–΄λ₯Ό μ ‘ν•˜λ©΄, 마치 μ–΄λ–€ νŠΉμˆ˜ν•œ νŠΈλžœμž­μ…˜ 처리 방식, ν˜Ήμ€ μ‹¬ν™”λœ DB

twossun.tistory.com