<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic COMMIT WORK in ABAP OO and BAPI in Application Development and Automation Discussions</title>
    <link>https://community.sap.com/t5/application-development-and-automation-discussions/commit-work-in-abap-oo-and-bapi/m-p/14023613#M2038570</link>
    <description>&lt;P&gt;Hello,&amp;nbsp;&lt;/P&gt;&lt;P&gt;I have a code with comment. I need to use "COMMIT WORK" in ABAP Object Oriented but I know it don't work just like in Functional Module. I found&amp;nbsp;DEMO_TRANSACTION_SERVICE, but is not enough.&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="abap"&gt;METHOD SAVE_ALL.
 DATA: transaction         TYPE REF TO if_os_transaction,
          transaction_manager TYPE REF TO if_os_transaction_manager.

    IF cl_os_system=&amp;gt;init_state IS INITIAL.
      cl_os_system=&amp;gt;init_and_set_modes( i_external_commit = oscon_false
                                        i_update_mode = oscon_dmode_update_task_sync ).
    ENDIF.

    transaction_manager = cl_os_system=&amp;gt;get_transaction_manager( ).
    transaction = transaction_manager-&amp;gt;create_transaction( ).
TRY.
 transaction-&amp;gt;start( ).
"(1)
MODIFI ztable_1 from ls_1.
    IF sy-subrc &amp;lt;&amp;gt; 0.
      RAISE EXCEPTION TYPE zcx_wm_util
        EXPORTING
          textid = zcx_wm_util=&amp;gt;data_not_saved.
    ENDIF.
"(2)
MODIFI ztable_2 from ls_2.
    IF sy-subrc &amp;lt;&amp;gt; 0.
      RAISE EXCEPTION TYPE zcx_wm_util
        EXPORTING
          textid = zcx_wm_util=&amp;gt;data_not_saved.
    ENDIF.
"(3)
    CALL FUNCTION 'BAPI_GOODSMVT_CREATE' " DESTINATION 'NONE'
      EXPORTING
        goodsmvt_header  = ls_goodsmvt_header
        goodsmvt_code    = iv_movement
      IMPORTING
        goodsmvt_headret = ls_goodsmvt_headret
      TABLES
        goodsmvt_item    = lt_goodsmvt_item
        return           = rt_error.

    DATA(lv_check_error) = REDUCE i( INIT x = 0 FOR &amp;lt;line&amp;gt; IN rt_error
                                     WHERE ( type = 'E' OR type = 'A' ) NEXT x = x + 1 ).

    IF lv_check_error = 0.
"HERE IS DUMP
" Do I need use TRANSACTION COMMIT?
      CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
        EXPORTING
          wait   = abap_true
        IMPORTING
          return = rt_error.
    ELSE.
      RAISE EXCEPTION TYPE zcx_wm_util
        EXPORTING
          textid = zcx_wm_util=&amp;gt;goodsmvt_not_create.
    ENDIF.


    WAIT UP TO 2 SECONDS.

    CALL FUNCTION 'L_TO_CREATE_MULTIPLE' 
...

    IF sy-subrc &amp;lt;&amp;gt; 0.
" Do I need use ROLLBACK?
      CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'
        IMPORTING
          return = rt_error.

      RAISE EXCEPTION TYPE zcx_wm_util
        EXPORTING
          textid = zcx_wm_util=&amp;gt;data_not_saved.
    ENDIF.


        transaction-&amp;gt;end( ). "Succes if all is ok


      CATCH zcx_wm_util INTO DATA(lx_wm_utill).
" Not so good, needed rollback all changes
         transaction-&amp;gt;undo( ). "
        clear_screens_data( ).
ENDTRY.
ENDMETHOD.&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;with comment&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Fri, 21 Feb 2025 11:32:59 GMT</pubDate>
    <dc:creator>szyba</dc:creator>
    <dc:date>2025-02-21T11:32:59Z</dc:date>
    <item>
      <title>COMMIT WORK in ABAP OO and BAPI</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/commit-work-in-abap-oo-and-bapi/m-p/14023613#M2038570</link>
      <description>&lt;P&gt;Hello,&amp;nbsp;&lt;/P&gt;&lt;P&gt;I have a code with comment. I need to use "COMMIT WORK" in ABAP Object Oriented but I know it don't work just like in Functional Module. I found&amp;nbsp;DEMO_TRANSACTION_SERVICE, but is not enough.&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="abap"&gt;METHOD SAVE_ALL.
 DATA: transaction         TYPE REF TO if_os_transaction,
          transaction_manager TYPE REF TO if_os_transaction_manager.

    IF cl_os_system=&amp;gt;init_state IS INITIAL.
      cl_os_system=&amp;gt;init_and_set_modes( i_external_commit = oscon_false
                                        i_update_mode = oscon_dmode_update_task_sync ).
    ENDIF.

    transaction_manager = cl_os_system=&amp;gt;get_transaction_manager( ).
    transaction = transaction_manager-&amp;gt;create_transaction( ).
TRY.
 transaction-&amp;gt;start( ).
"(1)
MODIFI ztable_1 from ls_1.
    IF sy-subrc &amp;lt;&amp;gt; 0.
      RAISE EXCEPTION TYPE zcx_wm_util
        EXPORTING
          textid = zcx_wm_util=&amp;gt;data_not_saved.
    ENDIF.
"(2)
MODIFI ztable_2 from ls_2.
    IF sy-subrc &amp;lt;&amp;gt; 0.
      RAISE EXCEPTION TYPE zcx_wm_util
        EXPORTING
          textid = zcx_wm_util=&amp;gt;data_not_saved.
    ENDIF.
"(3)
    CALL FUNCTION 'BAPI_GOODSMVT_CREATE' " DESTINATION 'NONE'
      EXPORTING
        goodsmvt_header  = ls_goodsmvt_header
        goodsmvt_code    = iv_movement
      IMPORTING
        goodsmvt_headret = ls_goodsmvt_headret
      TABLES
        goodsmvt_item    = lt_goodsmvt_item
        return           = rt_error.

    DATA(lv_check_error) = REDUCE i( INIT x = 0 FOR &amp;lt;line&amp;gt; IN rt_error
                                     WHERE ( type = 'E' OR type = 'A' ) NEXT x = x + 1 ).

    IF lv_check_error = 0.
"HERE IS DUMP
" Do I need use TRANSACTION COMMIT?
      CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
        EXPORTING
          wait   = abap_true
        IMPORTING
          return = rt_error.
    ELSE.
      RAISE EXCEPTION TYPE zcx_wm_util
        EXPORTING
          textid = zcx_wm_util=&amp;gt;goodsmvt_not_create.
    ENDIF.


    WAIT UP TO 2 SECONDS.

    CALL FUNCTION 'L_TO_CREATE_MULTIPLE' 
...

    IF sy-subrc &amp;lt;&amp;gt; 0.
" Do I need use ROLLBACK?
      CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'
        IMPORTING
          return = rt_error.

      RAISE EXCEPTION TYPE zcx_wm_util
        EXPORTING
          textid = zcx_wm_util=&amp;gt;data_not_saved.
    ENDIF.


        transaction-&amp;gt;end( ). "Succes if all is ok


      CATCH zcx_wm_util INTO DATA(lx_wm_utill).
" Not so good, needed rollback all changes
         transaction-&amp;gt;undo( ). "
        clear_screens_data( ).
ENDTRY.
ENDMETHOD.&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;with comment&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 21 Feb 2025 11:32:59 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/commit-work-in-abap-oo-and-bapi/m-p/14023613#M2038570</guid>
      <dc:creator>szyba</dc:creator>
      <dc:date>2025-02-21T11:32:59Z</dc:date>
    </item>
  </channel>
</rss>

