<?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 Re: What is wrong in this code? in Application Development and Automation Discussions</title>
    <link>https://community.sap.com/t5/application-development-and-automation-discussions/what-is-wrong-in-this-code/m-p/1497829#M230929</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Use the BAPI_TRANSACTION_COMMIT which you commented out and pass 'X' to the WAIT parameter. Alternatively, use COMMIT WORK AND WAIT. Your problem seems to be with not waiting long enough until the previous commits are done.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Also, do not check for sy-subrc = 0 after the BAPI calls. All errors are returned to you in the RETURN parameter. So you have to see if RETURN contains a message of type 'E' and then commit or rollback accordingly.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE&gt;&lt;CODE&gt;
CALL FUNCTION 'BAPI_DOCUMENT_SETSTATUS'
  EXPORTING
    documenttype = 'SWD'
    documentnumber = itab-doknr
    documentpart = itab-dokar
    documentversion = itab-dokvr
*   STATUSEXTERN = ' '
    statusintern = 'AD'
*   STATUSLOG = ' '
  IMPORTING
    return = return.

IF return-type &amp;lt;&amp;gt; 'E' AND
   return-type &amp;lt;&amp;gt; 'A'.
*-- successful
  CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
    EXPORTING
      wait   = 'X'
    IMPORTING
      return = return.

*-- call the next BAPI
  bapi_data-authoritygroup = 'VIEW'.
  bapi_data_x-authoritygroup = 'X'.

  CALL FUNCTION 'BAPI_DOCUMENT_CHANGE2'
    EXPORTING
      documenttype = 'SWD'
      documentnumber = itab-doknr
      documentpart = itab-dokar
      documentversion = itab-dokvr
      documentdata = bapi_data
      documentdatax = bapi_data_x
*     HOSTNAME =
*     DOCBOMCHANGENUMBER =
*     DOCBOMVALIDFROM =
*     DOCBOMREVISIONLEVEL =
*     SENDCOMPLETEBOM = ' '
*     PF_FTP_DEST = ' '
*     PF_HTTP_DEST = ' '
*     CAD_MODE = ' '
    IMPORTING
      return = return.
*   TABLES
*     CHARACTERISTICVALUES =
*     CLASSALLOCATIONS =
*     DOCUMENTDESCRIPTIONS =
*     OBJECTLINKS =
*     DOCUMENTSTRUCTURE =
*     DOCUMENTFILES =
*     LONGTEXTS =
*     COMPONENTS =
  .

  IF return-type &amp;lt;&amp;gt; 'E' AND
     return-type &amp;lt;&amp;gt; 'A'.
*-- successful
    CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
      EXPORTING
        wait   = 'X'
      IMPORTING
        return = return.
  ELSE.
*-- fail
    CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'
      IMPORTING
        return = return.
    EXIT.
  ENDIF.
  CALL FUNCTION 'BAPI_DOCUMENT_SETSTATUS'
    EXPORTING
      documenttype = 'SWD'
      documentnumber = itab-doknr
      documentpart = itab-dokar
      documentversion = itab-dokvr
*     STATUSEXTERN = ' '
      statusintern = 'RE'
*     STATUSLOG = ' '
    IMPORTING
      return = return.
  IF return-type &amp;lt;&amp;gt; 'E' AND
     return-type &amp;lt;&amp;gt; 'A'.
*-- successful
    CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
      EXPORTING
        wait   = 'X'
      IMPORTING
        return = return.
  ELSE.
*-- failed
    CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'
      IMPORTING
        return = return.
    EXIT.
  ENDIF.
ELSE.
*-- failed
  CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'
    IMPORTING
      return = return.
  EXIT.
ENDIF.&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 03 Aug 2006 19:58:00 GMT</pubDate>
    <dc:creator>Former Member</dc:creator>
    <dc:date>2006-08-03T19:58:00Z</dc:date>
    <item>
      <title>What is wrong in this code?</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/what-is-wrong-in-this-code/m-p/1497827#M230927</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;This code, has to set the status of the document as 'AD' , then change some data save it and again set the status to RE. WHen i run this in debug mode , it actually updates everything , but when i dont go in the debug mode , it just updates the first status set to 'AD' and then doesnt do anything ...any insights why ?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CALL FUNCTION 'BAPI_DOCUMENT_SETSTATUS'&lt;/P&gt;&lt;P&gt;  EXPORTING&lt;/P&gt;&lt;P&gt;    DOCUMENTTYPE          = 'SWD'&lt;/P&gt;&lt;P&gt;    DOCUMENTNUMBER        = ITAB-DOKNR&lt;/P&gt;&lt;P&gt;    DOCUMENTPART          = ITAB-DOKAR&lt;/P&gt;&lt;P&gt;    DOCUMENTVERSION       = ITAB-DOKVR&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  STATUSEXTERN          = ' '&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;   STATUSINTERN          = 'AD'&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  STATUSLOG             = ' '&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt; IMPORTING&lt;/P&gt;&lt;P&gt;   RETURN                = RETURN&lt;/P&gt;&lt;P&gt;          .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;         CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'&lt;/P&gt;&lt;/LI&gt;&lt;UL&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;          EXPORTING&lt;/P&gt;&lt;/LI&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;            WAIT          =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;          IMPORTING&lt;/P&gt;&lt;/LI&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;            RETURN        =&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                   .&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;IF SY-SUBRC = 0.&lt;/P&gt;&lt;P&gt;COMMIT WORK.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;BAPI_DATA-AUTHORITYGROUP = 'VIEW'.&lt;/P&gt;&lt;P&gt;BAPI_DATA_X-AUTHORITYGROUP = 'X'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CALL FUNCTION 'BAPI_DOCUMENT_CHANGE2'&lt;/P&gt;&lt;P&gt;  EXPORTING&lt;/P&gt;&lt;P&gt;    DOCUMENTTYPE               = 'SWD'&lt;/P&gt;&lt;P&gt;    DOCUMENTNUMBER             = itab-doknr&lt;/P&gt;&lt;P&gt;    DOCUMENTPART               = itab-dokar&lt;/P&gt;&lt;P&gt;    DOCUMENTVERSION            = itab-dokvr&lt;/P&gt;&lt;P&gt;    DOCUMENTDATA               = BAPI_DATA&lt;/P&gt;&lt;P&gt;    DOCUMENTDATAX              = BAPI_DATA_X&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  HOSTNAME                   =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  DOCBOMCHANGENUMBER         =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  DOCBOMVALIDFROM            =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  DOCBOMREVISIONLEVEL        =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  SENDCOMPLETEBOM            = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  PF_FTP_DEST                = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  PF_HTTP_DEST               = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  CAD_MODE                   = ' '&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt; IMPORTING&lt;/P&gt;&lt;P&gt;  RETURN                     = RETURN.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;TABLES&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  CHARACTERISTICVALUES       =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  CLASSALLOCATIONS           =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  DOCUMENTDESCRIPTIONS       =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  OBJECTLINKS                =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  DOCUMENTSTRUCTURE          =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  DOCUMENTFILES              =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  LONGTEXTS                  =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  COMPONENTS                 =&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;          .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;IF SY-SUBRC = 0.&lt;/P&gt;&lt;P&gt;COMMIT WORK.&lt;/P&gt;&lt;P&gt;ELSE.&lt;/P&gt;&lt;P&gt;ROLLBACK WORK.&lt;/P&gt;&lt;P&gt;ENDIF.&lt;/P&gt;&lt;P&gt;CALL FUNCTION 'BAPI_DOCUMENT_SETSTATUS'&lt;/P&gt;&lt;P&gt;  EXPORTING&lt;/P&gt;&lt;P&gt;    DOCUMENTTYPE          = 'SWD'&lt;/P&gt;&lt;P&gt;    DOCUMENTNUMBER        = ITAB-DOKNR&lt;/P&gt;&lt;P&gt;    DOCUMENTPART          = ITAB-DOKAR&lt;/P&gt;&lt;P&gt;    DOCUMENTVERSION       = ITAB-DOKVR&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  STATUSEXTERN          = ' '&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;   STATUSINTERN          = 'RE'&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  STATUSLOG             = ' '&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt; IMPORTING&lt;/P&gt;&lt;P&gt;   RETURN                = RETURN&lt;/P&gt;&lt;P&gt;          .&lt;/P&gt;&lt;P&gt;          if sy-subrc = 0 .&lt;/P&gt;&lt;P&gt;          commit work.&lt;/P&gt;&lt;P&gt;          else.&lt;/P&gt;&lt;P&gt;          rollback work.&lt;/P&gt;&lt;P&gt;          endif.&lt;/P&gt;&lt;P&gt;ELSE.&lt;/P&gt;&lt;P&gt;ROLLBACK WORK.&lt;/P&gt;&lt;P&gt;ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDLOOP.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 03 Aug 2006 19:38:04 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/what-is-wrong-in-this-code/m-p/1497827#M230927</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2006-08-03T19:38:04Z</dc:date>
    </item>
    <item>
      <title>Re: What is wrong in this code?</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/what-is-wrong-in-this-code/m-p/1497828#M230928</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Oh, I guess you would have to commit at each step since it appears that you are changing the same object.  &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Rich Heilman&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Message was edited by: Rich Heilman&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 03 Aug 2006 19:39:40 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/what-is-wrong-in-this-code/m-p/1497828#M230928</guid>
      <dc:creator>RichHeilman</dc:creator>
      <dc:date>2006-08-03T19:39:40Z</dc:date>
    </item>
    <item>
      <title>Re: What is wrong in this code?</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/what-is-wrong-in-this-code/m-p/1497829#M230929</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Use the BAPI_TRANSACTION_COMMIT which you commented out and pass 'X' to the WAIT parameter. Alternatively, use COMMIT WORK AND WAIT. Your problem seems to be with not waiting long enough until the previous commits are done.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Also, do not check for sy-subrc = 0 after the BAPI calls. All errors are returned to you in the RETURN parameter. So you have to see if RETURN contains a message of type 'E' and then commit or rollback accordingly.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE&gt;&lt;CODE&gt;
CALL FUNCTION 'BAPI_DOCUMENT_SETSTATUS'
  EXPORTING
    documenttype = 'SWD'
    documentnumber = itab-doknr
    documentpart = itab-dokar
    documentversion = itab-dokvr
*   STATUSEXTERN = ' '
    statusintern = 'AD'
*   STATUSLOG = ' '
  IMPORTING
    return = return.

IF return-type &amp;lt;&amp;gt; 'E' AND
   return-type &amp;lt;&amp;gt; 'A'.
*-- successful
  CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
    EXPORTING
      wait   = 'X'
    IMPORTING
      return = return.

*-- call the next BAPI
  bapi_data-authoritygroup = 'VIEW'.
  bapi_data_x-authoritygroup = 'X'.

  CALL FUNCTION 'BAPI_DOCUMENT_CHANGE2'
    EXPORTING
      documenttype = 'SWD'
      documentnumber = itab-doknr
      documentpart = itab-dokar
      documentversion = itab-dokvr
      documentdata = bapi_data
      documentdatax = bapi_data_x
*     HOSTNAME =
*     DOCBOMCHANGENUMBER =
*     DOCBOMVALIDFROM =
*     DOCBOMREVISIONLEVEL =
*     SENDCOMPLETEBOM = ' '
*     PF_FTP_DEST = ' '
*     PF_HTTP_DEST = ' '
*     CAD_MODE = ' '
    IMPORTING
      return = return.
*   TABLES
*     CHARACTERISTICVALUES =
*     CLASSALLOCATIONS =
*     DOCUMENTDESCRIPTIONS =
*     OBJECTLINKS =
*     DOCUMENTSTRUCTURE =
*     DOCUMENTFILES =
*     LONGTEXTS =
*     COMPONENTS =
  .

  IF return-type &amp;lt;&amp;gt; 'E' AND
     return-type &amp;lt;&amp;gt; 'A'.
*-- successful
    CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
      EXPORTING
        wait   = 'X'
      IMPORTING
        return = return.
  ELSE.
*-- fail
    CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'
      IMPORTING
        return = return.
    EXIT.
  ENDIF.
  CALL FUNCTION 'BAPI_DOCUMENT_SETSTATUS'
    EXPORTING
      documenttype = 'SWD'
      documentnumber = itab-doknr
      documentpart = itab-dokar
      documentversion = itab-dokvr
*     STATUSEXTERN = ' '
      statusintern = 'RE'
*     STATUSLOG = ' '
    IMPORTING
      return = return.
  IF return-type &amp;lt;&amp;gt; 'E' AND
     return-type &amp;lt;&amp;gt; 'A'.
*-- successful
    CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
      EXPORTING
        wait   = 'X'
      IMPORTING
        return = return.
  ELSE.
*-- failed
    CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'
      IMPORTING
        return = return.
    EXIT.
  ENDIF.
ELSE.
*-- failed
  CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'
    IMPORTING
      return = return.
  EXIT.
ENDIF.&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 03 Aug 2006 19:58:00 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/what-is-wrong-in-this-code/m-p/1497829#M230929</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2006-08-03T19:58:00Z</dc:date>
    </item>
  </channel>
</rss>

