๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿง‘‍๐Ÿ’ผ SAP/ABAP

[SAP ABAP] BAPI_TRANSACTION_COMMIT ๊ณผ BAPI_TRANSACTION_ROLLBACK ์˜ˆ์ œ ๋ฐ ์‚ฌ์šฉ๋ฒ•

by Jay Din 2025. 2. 5.
728x90
๋ฐ˜์‘ํ˜•

1. BAPI COMMIT๊ณผ ROLLBACK ์‚ฌ์šฉ ์ด์œ 

 

SAP์—์„œ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํŠธ๋žœ์žญ์…˜์„ ์ฒ˜๋ฆฌํ•  ๋•Œ BAPI(Business Application Programming Interface)๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

SAP BAPI๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒฝ์šฐ, ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ €์žฅ(Commit)ํ• ์ง€ ๋˜๋Š” ๋˜๋Œ๋ฆด(Rollback)์ง€ ๊ฒฐ์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด๋•Œ BAPI_TRANSACTION_COMMIT๊ณผ BAPI_TRANSACTION_ROLLBACK์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

 

2. `BAPI_TRANSACTION_COMMIT`๋ž€?

SAP์—์„œ BAPI๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ ์šฉํ•œ ํ›„, ํ•ด๋‹น ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์˜๊ตฌ์ ์œผ๋กœ ์ €์žฅ(Commit)ํ•˜๋Š” ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค.

  • BAPI๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ๋ฐ์ดํ„ฐ๊ฐ€ ์ฆ‰์‹œ ์ €์žฅ๋˜์ง€ ์•Š์œผ๋ฉฐ, ๋ช…์‹œ์ ์œผ๋กœ `BAPI_TRANSACTION_COMMIT`์„ ํ˜ธ์ถœํ•ด์•ผ ์ตœ์ข… ์ €์žฅ๋จ.
  • ์—ฌ๋Ÿฌ ๊ฐœ์˜ BAPI๋ฅผ ์‹คํ–‰ํ•œ ํ›„ ์ตœ์ข…์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์œผ์… ๋ฐ˜์˜ํ•˜๊ณ  ์‹ถ์„ ๋•Œ ์‚ฌ์šฉ.
  • `WAIT = 'X' `์˜ต์…˜์„ ์‚ฌ์šฉํ•˜๋ฉด ๋™๊ธฐ์‹ ์ปค๋ฐ‹(Synchronous Commit)์ด ์ˆ˜ํ–‰๋จ.

์‚ฌ์šฉ ์˜ˆ์ œ

CALL FUNCTION 'BAPI_SALESORDER_CREATEFROMDAT2' " ํŒ๋งค ์˜ค๋” ์ƒ์„ฑ
  EXPORTING
    ORDER_HEADER_IN = LV_ORDER_HEADER
  TABLES
    ORDER_ITEMS_IN  = LT_ITEMS
    RETURN          = LT_RETURN.

CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
  EXPORTING
    WAIT = 'X'. " ๋ณ€๊ฒฝ ์‚ฌํ•ญ ์ฆ‰์‹œ ๋ฐ˜์˜
  • `BAPI_SALESORDER_CREATEFROMDAT2`๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŒ๋งค ์˜ค๋”(SO)๋ฅผ ์ƒ์„ฑ.
  • ๋ฐ์ดํ„ฐ๊ฐ€ ์‹ค์ œ ์ €์žฅ๋˜์ง€ ์•Š๊ณ  ์„ธ์…˜ ๋‚ด์—์„œ๋งŒ ์œ ์ง€๋จ.
  • `BAPI_TRANSACTION_COMMIT`์„ ํ˜ธ์ถœํ•ด์•ผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ตœ์ข… ๋ฐ˜์˜๋จ.

 

3. `BAPI_TRANSACTION_ROLLBACK` ๋ž€?

  • ์‹คํ–‰๋œ BSPI์˜ ๋ชจ๋“  ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ทจ์†Œ(Undo) ํ•˜๋Š” ์—ญํ• ์„ ํ•จ.
  • ํŠน์ • BAPI๋ฅผ ์‹คํ–‰ํ•œ ํ›„ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด, ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋ฐ˜์˜๋˜์ง€ ์•Š๋„๋ก ๋กค๋ฐฑ(Rollback) ์ฒ˜๋ฆฌ.
  • ์˜ˆ๋ฅผ ๋“ค์–ด, ๊ณ ๊ฐ์„ ์ƒ์„ฑํ•˜๊ณ  ๋งค์ถœ์„ ์ƒ์„ฑํ•˜๋Š” ๋‘ ๊ฐœ์˜ BAPI๊ฐ€ ์‹คํ–‰๋˜์—ˆ๋Š”๋ฐ, ๋งค์ถœ ์ƒ์„ฑ์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ๊ณ ๊ฐ ์ƒ์„ฑ๋„ ์ทจ์†Œํ•ด์•ผ ํ•  ๋•Œ ์‚ฌ์šฉ.

์‚ฌ์šฉ ์˜ˆ์ œ

CALL FUNCTION 'BAPI_CUSTOMER_CREATE'  " ๊ณ ๊ฐ ์ƒ์„ฑ
  EXPORTING
    CUSTOMERDATA = LV_CUSTOMER_DATA
  TABLES
    RETURN       = LT_RETURN.

IF LT_RETURN[] IS NOT INITIAL.
  " ์˜ค๋ฅ˜ ๋ฐœ์ƒ ์‹œ ๋กค๋ฐฑ ์‹คํ–‰
  CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
  WRITE: / '๊ณ ๊ฐ ์ƒ์„ฑ ์˜ค๋ฅ˜๋กœ ์ธํ•ด ๋กค๋ฐฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.'.
ELSE.
  CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
    EXPORTING
      WAIT = 'X'.
  WRITE: / '๊ณ ๊ฐ์ด ์„ฑ๊ณต์ ์œผ๋กœ ์ƒ์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.'.
ENDIF.
  • ` BAPI_CUSTOMER_CREATE`๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ๊ณ ๊ฐ์„ ์ƒ์„ฑ.
  • `LT_RETURN[]`์— ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๊ฐ€ ์žˆ์œผ๋ฉด ๋กค๋ฐฑ(`BAPI_TRANSACTION_ROLLBACK`) ์‹คํ–‰ํ•˜์—ฌ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ทจ์†Œ.
  • ์˜ค๋ฅ˜๊ฐ€ ์—†์œผ๋ฉด ์ปค๋ฐ‹(`BAPI_TRANSACTION_COMMIT`) ์‹คํ–‰ํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋ฐ˜์˜.

 

4. ๋ฐ˜๋“œ์‹œ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ์ด์œ 

`BAPI_TRANSACTION_COMMIT`๊ณผ `BAPI_TRANSACTION_ROLLBACK`์„ ๋ฐ˜๋“œ์‹œ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ์ด์œ .

SAP BAPI๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ณ€๊ฒฝ์„ ์ž๋™์œผ๋กœ ์ปค๋ฐ‹(Commit)ํ•˜์ง€ ์•Š์Œ.

์ฆ‰, `BAPI_TRANSACTION_COMMIT`์„ ํ˜ธ์ถœํ•˜์ง€ ์•Š์œผ๋ฉด ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋˜์ง€ ์•Š๊ณ  ์„ธ์…˜์ด ์ข…๋ฃŒ๋˜๋ฉด ์‚ฌ๋ผ์ง.

๋ฐ˜๋Œ€๋กœ, ์˜ค๋ฅ˜ ๋ฐœ์ƒ ์‹œ `BAPI_TRANSACTION_ROLLBACK`์„ ํ˜ธ์ถœํ•˜์ง€ ์•Š์œผ๋ฉด ์ž˜๋ชป๋œ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฐ˜์˜๋  ์œ„ํ—˜์ด ์žˆ์Œ.

 

์ƒํ™ฉ `BAPI_TRANSACTION_COMMIT`
ํ˜ธ์ถœ
`BAPI_TRANSACTION_ROLLBACK`
ํ˜ธ์ถœ
๊ฒฐ๊ณผ
์ •์ƒ ์ฒ˜๋ฆฌ โœ… ์‹คํ–‰ โŒ ์‹คํ–‰ ์•ˆํ•จ ๋ฐ์ดํ„ฐ๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ์ €์žฅ๋จ
์˜ค๋ฅ˜ ๋ฐœ์ƒ โŒ ์‹คํ–‰ ์•ˆํ•จ โœ… ์‹คํ–‰ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์ทจ์†Œ๋จ
์•„๋ฌด๊ฒƒ๋„ ์‹คํ–‰ ์•ˆ ํ•จ โŒ ์‹คํ–‰ ์•ˆํ•จ โŒ ์‹คํ–‰ ์•ˆํ•จ ์„ธ์…˜์ด ์ข…๋ฃŒ๋˜๋ฉด ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์‚ฌ๋ผ์ง

 

5. `BAPI_TRANSACTION_COMMIT`๊ณผ `WAIT = 'X'`์˜ ์ฐจ์ด

CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
  EXPORTING
    WAIT = 'X'.
์˜ต์…˜ ์„ค๋ช…
`WAIT = 'X'` ๋™๊ธฐ์‹ ์ปค๋ฐ‹(Synchronous Commit). ์ฆ‰, ์ปค๋ฐ‹์ด ์™„๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฐ ํ›„ ๋‹ค์Œ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹คํ–‰ํ•จ.
`WAIT` ์—†์Œ ๋น„๋™๊ธฐ์‹ ์ปค๋ฐ‹(Asynchronous Commit). ์ปค๋ฐ‹์„ ์š”์ฒญํ•˜๊ณ  ๋ฐ”๋กœ ๋‹ค์Œ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹คํ–‰ํ•˜๋ฉฐ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ณ€๊ฒฝ์ด ์ฆ‰์‹œ ๋ฐ˜์˜๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Œ.
  • ์ฆ‰, `WAIT = 'X'`๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํŠธ๋žœ์žญ์…˜์ด ์™„๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ ค์•ผ ํ•˜๋ฏ€๋กœ, ๋ฐ์ดํ„ฐ ์ผ๊ด€์„ฑ์„ ๋ณด์žฅํ•˜๋Š” ๋ฐ ์œ ์šฉ.

 

6. `BAPI_TRANSACTION_COMMIT`๊ณผ `COMMIT WORK` ์ฐจ์ด์ 

๋น„๊ต ํ•ญ๋ชฉ BAPI_TRANSACTION_COMMIT COMMIT WORK
์‚ฌ์šฉ ๋Œ€์ƒ BAPI ์‹คํ–‰ ํ›„ ์‚ฌ์šฉ SAP ํ‘œ์ค€ ABAP ํŠธ๋žœ์žญ์…˜์—์„œ ์‚ฌ์šฉ
ํŠธ๋žœ์žญ์…˜ ์ฒ˜๋ฆฌ BAPI๋ฅผ ํ†ตํ•ด ๋ณ€๊ฒฝ๋œ ๋ฐ์ดํ„ฐ๋งŒ ์ปค๋ฐ‹ ๋ชจ๋“  ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ปค๋ฐ‹
WAIT ์˜ต์…˜ `WAIT = 'X'` ์‚ฌ์šฉ ๊ฐ€๋Šฅ `AND WAIT` ์‚ฌ์šฉ ๊ฐ€๋Šฅ
  • BAPI๋ฅผ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ `BAPI_TRANSACTION_COMMIT`์„ ์‚ฌ์šฉํ•ด์•ผ ํ•จ.
  • ์ผ๋ฐ˜์ ์ธ ๋‚ด๋ถ€ ํ…Œ์ด๋ธ” ์กฐ์ž‘ ๋“ฑ์—์„œ๋Š” `COMMIT WORK` ์‚ฌ์šฉ ๊ฐ€๋Šฅ.

 

7. ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉด ์–ด๋–ป๊ฒŒ ๋ ๊นŒ?

  1. `BAPI_TRANSACTION_COMMIT`์„ ํ˜ธ์ถœํ•˜์ง€ ์•Š์œผ๋ฉด?
    • ๋ฐ์ดํ„ฐ๊ฐ€ ๋ณ€๊ฒฝ๋˜์—ˆ์–ด๋„ ์„ธ์…˜์ด ์ข…๋ฃŒ๋˜๋ฉด ๋ฐ˜์˜๋˜์ง€ ์•Š์Œ.
    • ์˜ˆ๋ฅผ ๋“ค์–ด, `BAPI_GOODSMVT_CREATE`๋กœ ์ž…๊ณ ๋ฅผ ํ–ˆ๋Š”๋ฐ ์ปค๋ฐ‹์„ ํ•˜์ง€ ์•Š์œผ๋ฉด ์‹ค์ œ๋กœ ์ž…๊ณ ๋˜์ง€ ์•Š์Œ.
  2. `BAPI_TRANSATION_ROLLBACK`์„ ํ˜ธ์ถœํ•˜์ง€ ์•Š์œผ๋ฉด
    • ์˜ค๋ฅ˜ ๋ฐœ์ƒ ์‹œ ์ž˜๋ชป๋œ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฐ˜์˜๋  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์Œ.
    • ์˜ˆ๋ฅผ ๋“ค์–ด, ๊ณ ๊ฐ์„ ์ƒ์„ฑํ•œ ํ›„ ์˜ค๋ฅ˜๋กœ ์ธํ•ด ๊ฑฐ๋ž˜๊ฐ€ ์‹คํŒจํ–ˆ๋Š”๋ฐ, ๋กค๋ฐฑ์„ ํ•˜์ง€ ์•Š์œผ๋ฉด ์ž˜๋ชป๋œ ๊ณ ๊ฐ์ด ๋“ฑ๋ก๋  ์ˆ˜๋„ ์žˆ์Œ.

 

8. ์ •๋ฆฌ

ํ•ญ๋ชฉ BAPI_TRANSACTION_COMMIT BAPI_TRANSACTION_ROLLBACK
๊ธฐ๋Šฅ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ **ํ™•์ •(Commit)**ํ•˜์—ฌ DB์— ๋ฐ˜์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ **์ทจ์†Œ(Rollback)**ํ•˜์—ฌ DB ๋ฐ˜์˜ ๋ฐฉ์ง€
์‚ฌ์šฉ ๋ชฉ์  BAPI ์‹คํ–‰ ํ›„ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ €์žฅ ์˜ค๋ฅ˜ ๋ฐœ์ƒ ์‹œ ์ด์ „ ์ƒํƒœ๋กœ ๋ณต๊ตฌ
ํ˜ธ์ถœ ์‹œ์  BAPI ์‹คํ–‰ ํ›„ ๋ฐ์ดํ„ฐ ์ €์žฅ์ด ํ•„์š”ํ•  ๋•Œ BAPI ์‹คํ–‰ ์ค‘ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ
์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉด? ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ๋ฐ˜์˜๋˜์ง€ ์•Š์Œ ์ž˜๋ชป๋œ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฐ˜์˜๋  ์ˆ˜ ์žˆ์Œ

 

 

728x90
๋ฐ˜์‘ํ˜•