<?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: inbound IDOC processing, error duplicate key in Application Development and Automation Discussions</title>
    <link>https://community.sap.com/t5/application-development-and-automation-discussions/inbound-idoc-processing-error-duplicate-key/m-p/1243922#M142969</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Sven,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;This is just a hunch, but I think it is worth a try.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Before appending the record to V_STATUS;&lt;/P&gt;&lt;P&gt;Can you enter V_STATUS-STACOD = 'SAPE0183' or 'SAPE0184'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Can you please check and let me know if this works ? &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Also at the start of function module "EDI_DOCUMENT_CLOSE_EDIT" can you put a break-point and check what the value of the field&lt;/P&gt;&lt;P&gt;DOCUMENT_IN_EDIT-ORIGINAL is ? This value should probably not be 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks,&lt;/P&gt;&lt;P&gt;Urmila&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Mon, 27 Mar 2006 10:05:29 GMT</pubDate>
    <dc:creator>Former Member</dc:creator>
    <dc:date>2006-03-27T10:05:29Z</dc:date>
    <item>
      <title>inbound IDOC processing, error duplicate key</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/inbound-idoc-processing-error-duplicate-key/m-p/1243919#M142966</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;We want to retrieve certain order-idocs in our system, before they are processed, to change AND insert segment data. &lt;/P&gt;&lt;P&gt;Flow we use in our current program&lt;/P&gt;&lt;P&gt;- DOC_STATUS_WRITE_TO_DATABASE &lt;/P&gt;&lt;P&gt;to change the status of the idoc (ok) (status 69)&lt;/P&gt;&lt;P&gt;- EDI_DOCUMENT_OPEN_FOR_EDIT (ok) &lt;/P&gt;&lt;P&gt;- EDI_CHANGE_DATA_SEGMENTS (ok)&lt;/P&gt;&lt;P&gt;- EDI_DOCUMENT_CLOSE_EDIT =&amp;gt; not ok &lt;/P&gt;&lt;P&gt;This program gives SAPSQL error&lt;/P&gt;&lt;P&gt;Via debugging, we see that a new idoc number is &lt;/P&gt;&lt;P&gt;called (save as backup idoc ?), but we want the &lt;/P&gt;&lt;P&gt;current IDOC to be processed.&lt;/P&gt;&lt;P&gt;The system wants to insert in EDID4 =&amp;gt; dump :&lt;/P&gt;&lt;P&gt;"Use an ABAP/4 Open SQL array insert only if you &lt;/P&gt;&lt;P&gt;are sure that none of the records passed already &lt;/P&gt;&lt;P&gt;exists in the database."&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;( I prefer to use these standard functions, in stead of just deleting and inserting into "EDID4" )&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;regards,&lt;/P&gt;&lt;P&gt;answers will be rewarded.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;code extract &lt;/P&gt;&lt;P&gt;INCLUDE ZBE01458_TOP.&lt;/P&gt;&lt;P&gt;INITIALIZATION.&lt;/P&gt;&lt;P&gt;V_EDIT_STATUS = '69'.&lt;/P&gt;&lt;P&gt;V_PROCESSED_STATUS = '32'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;start-of-selection.&lt;/P&gt;&lt;P&gt;clear t_edidc. refresh t_edidc.&lt;/P&gt;&lt;P&gt;SELECT * FROM EDIDC into table t_edidc&lt;/P&gt;&lt;P&gt;WHERE DOCNUM in S_docnum&lt;/P&gt;&lt;P&gt;and mestyp in S_mestyp&lt;/P&gt;&lt;P&gt;and idoctp in S_idoctp&lt;/P&gt;&lt;P&gt;and credat in S_credat&lt;/P&gt;&lt;P&gt;and rcvpor in S_rcvpor&lt;/P&gt;&lt;P&gt;and rcvprt in S_rcvprt&lt;/P&gt;&lt;P&gt;and rcvprn in S_rcvprn&lt;/P&gt;&lt;P&gt;and sndpor in S_sndpor&lt;/P&gt;&lt;P&gt;and sndprt in S_sndprt&lt;/P&gt;&lt;P&gt;and sndprn in S_sndprn&lt;/P&gt;&lt;P&gt;and status in S_status.&lt;/P&gt;&lt;P&gt;loop at t_edidc.&lt;/P&gt;&lt;P&gt;move t_edidc-docnum to v_docnum.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;refresh v_status.&lt;/P&gt;&lt;P&gt;V_STATUS-docnum = V_DOCNUM.&lt;/P&gt;&lt;P&gt;V_STATUS-status = V_EDIT_STATUS.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;clear EDIDS.&lt;/P&gt;&lt;P&gt;select single * from EDIDS where docnum = v_docnum.&lt;/P&gt;&lt;P&gt;if sy-subrc = 0.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;MOVE EDIDS-STACOD to V_STATUS-STACOD.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;endif .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;APPEND V_STATUS.&lt;/P&gt;&lt;P&gt;PERFORM CHANGE_IDOC_STATUS tables V_STATUS USING V_DOCNUM.&lt;/P&gt;&lt;P&gt;****&lt;/P&gt;&lt;P&gt;changing part for DEDIDD "idoc data&lt;/P&gt;&lt;P&gt;****&lt;/P&gt;&lt;P&gt;PERFORM OPEN_IDOC_FOR_CHANGE.&lt;/P&gt;&lt;P&gt;PERFORM CHANGE_IDOC.&lt;/P&gt;&lt;P&gt;PERFORM CLOSE_IDOC_FOR_CHANGE.&lt;/P&gt;&lt;P&gt;refresh v_status.&lt;/P&gt;&lt;P&gt;V_STATUS-docnum = V_DOCNUM.&lt;/P&gt;&lt;P&gt;V_STATUS-status = V_PROCESSED_STATUS.&lt;/P&gt;&lt;P&gt;APPEND V_STATUS.&lt;/P&gt;&lt;P&gt;PERFORM CHANGE_IDOC_STATUS tables V_STATUS &lt;/P&gt;&lt;P&gt;USING V_DOCNUM.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;endloop.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp; Form OPEN_IDOC_FOR_CHANGE&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;--&amp;gt; p1 text&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;&amp;lt;-- p2 text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM OPEN_IDOC_FOR_CHANGE.&lt;/P&gt;&lt;P&gt;CALL FUNCTION 'EDI_DOCUMENT_OPEN_FOR_EDIT'&lt;/P&gt;&lt;P&gt;EXPORTING&lt;/P&gt;&lt;P&gt;DOCUMENT_NUMBER = V_DOCNUM&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;ALREADY_OPEN = 'N'&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;IMPORTING&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;IDOC_CONTROL =&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;TABLES&lt;/P&gt;&lt;P&gt;IDOC_DATA = DEDIDD&lt;/P&gt;&lt;P&gt;EXCEPTIONS&lt;/P&gt;&lt;P&gt;DOCUMENT_FOREIGN_LOCK = 1&lt;/P&gt;&lt;P&gt;DOCUMENT_NOT_EXIST = 2&lt;/P&gt;&lt;P&gt;DOCUMENT_NOT_OPEN = 3&lt;/P&gt;&lt;P&gt;STATUS_IS_UNABLE_FOR_CHANGING = 4&lt;/P&gt;&lt;P&gt;OTHERS = 5&lt;/P&gt;&lt;P&gt;.&lt;/P&gt;&lt;P&gt;IF SY-SUBRC &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;ENDIF.&lt;/P&gt;&lt;P&gt;ENDFORM. " OPEN_IDOC_FOR_CHANGE&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp; Form CHANGE_IDOC&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;--&amp;gt; p1 text&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;&amp;lt;-- p2 text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM CHANGE_IDOC.&lt;/P&gt;&lt;P&gt;CALL FUNCTION 'EDI_CHANGE_DATA_SEGMENTS'&lt;/P&gt;&lt;P&gt;TABLES&lt;/P&gt;&lt;P&gt;IDOC_CHANGED_DATA_RANGE = DEDIDD&lt;/P&gt;&lt;P&gt;EXCEPTIONS&lt;/P&gt;&lt;P&gt;IDOC_NOT_OPEN = 1&lt;/P&gt;&lt;P&gt;DATA_RECORD_NOT_EXIST = 2&lt;/P&gt;&lt;P&gt;OTHERS = 3.&lt;/P&gt;&lt;P&gt;IF SY-SUBRC &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;ENDIF.&lt;/P&gt;&lt;P&gt;ENDFORM. " CHANGE_IDOC&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp; Form CLOSE_IDOC_FOR_CHANGE&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;--&amp;gt; p1 text&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;&amp;lt;-- p2 text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM CLOSE_IDOC_FOR_CHANGE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CLEAR t_EDI_DS40.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;t_edi_ds40-docnum = v_docnum.&lt;/P&gt;&lt;P&gt;t_edi_ds40-status = '51'.&lt;/P&gt;&lt;P&gt;t_edi_ds40-repid = sy-repid.&lt;/P&gt;&lt;P&gt;t_edi_ds40-tabnam = 'EDI_DS'.&lt;/P&gt;&lt;P&gt;t_edi_ds40-mandt = sy-mandt.&lt;/P&gt;&lt;P&gt;t_edi_ds40-stamqu = 'SAP'.&lt;/P&gt;&lt;P&gt;t_edi_ds40-stamid = 'B1'.&lt;/P&gt;&lt;P&gt;t_edi_ds40-stamno = '999'.&lt;/P&gt;&lt;P&gt;t_edi_ds40-stapa1 = 'Changes made to idoc ...'.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;t_edi_ds40-stapa2 = t_new_kunnr.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;t_edi_ds40-logdat = sy-datum.&lt;/P&gt;&lt;P&gt;t_edi_ds40-logtim = sy-uzeit.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;APPEND t_edi_ds40.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CALL FUNCTION 'EDI_DOCUMENT_CLOSE_EDIT'&lt;/P&gt;&lt;P&gt;EXPORTING&lt;/P&gt;&lt;P&gt;DOCUMENT_NUMBER = V_DOCNUM&lt;/P&gt;&lt;P&gt;DO_COMMIT = 'X'&lt;/P&gt;&lt;P&gt;DO_UPDATE = 'X'&lt;/P&gt;&lt;P&gt;WRITE_ALL_STATUS = 'X'&lt;/P&gt;&lt;P&gt;TABLES&lt;/P&gt;&lt;P&gt;STATUS_RECORDS = t_EDI_DS40&lt;/P&gt;&lt;P&gt;EXCEPTIONS&lt;/P&gt;&lt;P&gt;IDOC_NOT_OPEN = 1&lt;/P&gt;&lt;P&gt;DB_ERROR = 2&lt;/P&gt;&lt;P&gt;OTHERS = 3&lt;/P&gt;&lt;P&gt;.&lt;/P&gt;&lt;P&gt;IF SY-SUBRC &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;ENDIF.&lt;/P&gt;&lt;P&gt;ENDFORM. " CLOSE_IDOC_FOR_CHANGE&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp; Form CHANGE_IDOC_STATUS&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;--&amp;gt; p1 text&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;&amp;lt;-- p2 text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM CHANGE_IDOC_STATUS tables P_IDOC_STATUS structure V_IDOC_STATUS&lt;/P&gt;&lt;P&gt;USING P_DOCNUM.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CALL FUNCTION 'IDOC_STATUS_WRITE_TO_DATABASE'&lt;/P&gt;&lt;P&gt;EXPORTING&lt;/P&gt;&lt;P&gt;IDOC_NUMBER = p_docnum&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;IDOC_OPENED_FLAG = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;NO_DEQUEUE_FLAG = 'X'&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;IMPORTING&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;IDOC_CONTROL =&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;TABLES&lt;/P&gt;&lt;P&gt;IDOC_STATUS = P_IDOC_STATUS&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;EXCEPTIONS&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;IDOC_FOREIGN_LOCK = 1&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;IDOC_NOT_FOUND = 2&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;IDOC_STATUS_RECORDS_EMPTY = 3&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;IDOC_STATUS_INVALID = 4&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;DB_ERROR = 5&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;OTHERS = 6&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;.&lt;/P&gt;&lt;P&gt;IF SY-SUBRC &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;else.&lt;/P&gt;&lt;P&gt;commit work.&lt;/P&gt;&lt;P&gt;ENDIF.&lt;/P&gt;&lt;P&gt;ENDFORM. " CHANGE_IDOC_STATUS&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 27 Mar 2006 08:30:33 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/inbound-idoc-processing-error-duplicate-key/m-p/1243919#M142966</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2006-03-27T08:30:33Z</dc:date>
    </item>
    <item>
      <title>Re: inbound IDOC processing, error duplicate key</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/inbound-idoc-processing-error-duplicate-key/m-p/1243920#M142967</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Sven,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I am unclear as to whether you are trying to insert data to the database or trying to change certain segment data (of your Inbound IDOC) before it gets posted to the database. ( using EDI_CHANGE_DATA_SEGMENTS )&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Can you please confirm that ?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Urmila&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 27 Mar 2006 09:38:22 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/inbound-idoc-processing-error-duplicate-key/m-p/1243920#M142967</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2006-03-27T09:38:22Z</dc:date>
    </item>
    <item>
      <title>Re: inbound IDOC processing, error duplicate key</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/inbound-idoc-processing-error-duplicate-key/m-p/1243921#M142968</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Urmila,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;THX for the already quick response&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;We receive the IDOC from an external system, &lt;/P&gt;&lt;P&gt;and before processing the IDOC we want to change the segments (inserting plus modifying)&lt;/P&gt;&lt;P&gt;we will then call the program to actually process the IDOC.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards ,&lt;/P&gt;&lt;P&gt;Sven&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 27 Mar 2006 09:46:01 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/inbound-idoc-processing-error-duplicate-key/m-p/1243921#M142968</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2006-03-27T09:46:01Z</dc:date>
    </item>
    <item>
      <title>Re: inbound IDOC processing, error duplicate key</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/inbound-idoc-processing-error-duplicate-key/m-p/1243922#M142969</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Sven,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;This is just a hunch, but I think it is worth a try.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Before appending the record to V_STATUS;&lt;/P&gt;&lt;P&gt;Can you enter V_STATUS-STACOD = 'SAPE0183' or 'SAPE0184'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Can you please check and let me know if this works ? &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Also at the start of function module "EDI_DOCUMENT_CLOSE_EDIT" can you put a break-point and check what the value of the field&lt;/P&gt;&lt;P&gt;DOCUMENT_IN_EDIT-ORIGINAL is ? This value should probably not be 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks,&lt;/P&gt;&lt;P&gt;Urmila&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 27 Mar 2006 10:05:29 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/inbound-idoc-processing-error-duplicate-key/m-p/1243922#M142969</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2006-03-27T10:05:29Z</dc:date>
    </item>
    <item>
      <title>Re: inbound IDOC processing, error duplicate key</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/inbound-idoc-processing-error-duplicate-key/m-p/1243923#M142970</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Urmila,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thx again for the response,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I also found in debug that these are the parameters that SAP sets to indicate an original document or not; this is in the function : "EDI_DOCUMENT_OPEN_FOR_EDIT" &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;and then when closing and updating in the function "EDI_DOCUMENT_CLOSE_EDIT" he checks on these parameters.&lt;/P&gt;&lt;P&gt;(actually it seems SAP wants tomake a copy ... )&lt;/P&gt;&lt;P&gt;&amp;lt;i&amp;gt;IF DOCUMENT_IN_EDIT-ORIGINAL EQ 0.  &lt;/P&gt;&lt;P&gt;" noch keine Kopie vorhanden&amp;lt;/i&amp;gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SO I already tried to manipulate these settings (its already in my code):&lt;/P&gt;&lt;P&gt;(like you also suggested)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;lt;i&amp;gt; clear EDIDS.&lt;/P&gt;&lt;P&gt;    select single * from EDIDS where docnum = v_docnum.&lt;/P&gt;&lt;P&gt;    if sy-subrc = 0.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    MOVE EDIDS-STACOD to V_STATUS-STACOD.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    endif .&amp;lt;/i&amp;gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I thought it was a field I could provide in the STATUS-structure (in the function 'IDOC_STATUS_WRITE_TO_DATABASE')but it isn't. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SO do you know where I can provide the "STACOD" field ?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;when I check "DOCUMENT_IN_EDIT-ORIGINAL" it's '0'&lt;/P&gt;&lt;P&gt;in the function "EDI_DOCUMENT_CLOSE_EDIT". this could indeed be THE parameter to manipulate.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Hope to hear from you soon,&lt;/P&gt;&lt;P&gt;points will of course be rewarded.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;greets,&lt;/P&gt;&lt;P&gt;Sven&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 27 Mar 2006 11:12:15 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/inbound-idoc-processing-error-duplicate-key/m-p/1243923#M142970</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2006-03-27T11:12:15Z</dc:date>
    </item>
    <item>
      <title>Re: inbound IDOC processing, error duplicate key</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/inbound-idoc-processing-error-duplicate-key/m-p/1243924#M142971</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Sven,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;What I am about to propose is a little complex, but seems to be the only possible solution.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Use the following Function Modules in sequence:&lt;/P&gt;&lt;P&gt;1. EDI_DOCUMENT_OPEN_FOR_PROCESS&lt;/P&gt;&lt;P&gt;2. EDI_DOCUMENT_STATUS_SET&lt;/P&gt;&lt;P&gt;3. EDI_DOCUMENT_CLOSE_PROCESS&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Let me know if this works....&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Urmila&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 27 Mar 2006 12:37:24 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/inbound-idoc-processing-error-duplicate-key/m-p/1243924#M142971</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2006-03-27T12:37:24Z</dc:date>
    </item>
    <item>
      <title>Re: inbound IDOC processing, error duplicate key</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/inbound-idoc-processing-error-duplicate-key/m-p/1243925#M142972</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Urmila,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I use the function in the following order :&lt;/P&gt;&lt;P&gt;-   EDI_DOCUMENT_OPEN_FOR_EDIT &lt;/P&gt;&lt;P&gt;    (I kept it to get the EDIDD internal table with the &lt;/P&gt;&lt;P&gt;     sdata for the IDOC in an easy way) &lt;/P&gt;&lt;P&gt;-   EDI_DOCUMENT_OPEN_FOR_PROCESS&lt;/P&gt;&lt;P&gt;-   EDI_DOCUMENT_STATUS_SET (status 51 edit mode)&lt;/P&gt;&lt;P&gt;-   EDI_CHANGE_DATA_SEGMENTS &lt;/P&gt;&lt;P&gt;    (if I don't keep this function, where can you change &lt;/P&gt;&lt;P&gt;    the EDIDD data table)&lt;/P&gt;&lt;P&gt;-   EDI_DOCUMENT_STATUS_SET (status 32 processed mode)&lt;/P&gt;&lt;P&gt;-   EDI_DOCUMENT_CLOSE_PROCESS&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;It doesnt give any errors, but it also doesn't change the idoc...&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Do you still have suggestions ?&lt;/P&gt;&lt;P&gt;what do you think about &lt;/P&gt;&lt;P&gt;delete from EDID4 and insert into EDID4 ?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Hope to here from you.&lt;/P&gt;&lt;P&gt;Here is the code extract :&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;INCLUDE ZBE01458_TOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;INITIALIZATION.&lt;/P&gt;&lt;P&gt;  V_EDIT_STATUS = '69'.&lt;/P&gt;&lt;P&gt;  V_PROCESSED_STATUS = '32'.&lt;/P&gt;&lt;P&gt;  V_SAPCODE = 'SAPE0184'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;start-of-selection.&lt;/P&gt;&lt;P&gt;  clear t_edidc. refresh t_edidc.&lt;/P&gt;&lt;P&gt;  SELECT  * FROM  EDIDC into table t_edidc&lt;/P&gt;&lt;P&gt;         WHERE  DOCNUM  in S_docnum&lt;/P&gt;&lt;P&gt;           and  mestyp  in S_mestyp&lt;/P&gt;&lt;P&gt;           and  idoctp  in S_idoctp&lt;/P&gt;&lt;P&gt;           and  credat  in S_credat&lt;/P&gt;&lt;P&gt;           and  rcvpor  in S_rcvpor&lt;/P&gt;&lt;P&gt;           and  rcvprt  in S_rcvprt&lt;/P&gt;&lt;P&gt;           and  rcvprn  in S_rcvprn&lt;/P&gt;&lt;P&gt;           and  sndpor  in S_sndpor&lt;/P&gt;&lt;P&gt;           and  sndprt  in S_sndprt&lt;/P&gt;&lt;P&gt;           and  sndprn  in S_sndprn&lt;/P&gt;&lt;P&gt;           and  status  in S_status.&lt;/P&gt;&lt;P&gt;  loop at t_edidc.&lt;/P&gt;&lt;P&gt;    move t_edidc-docnum to v_docnum.&lt;/P&gt;&lt;P&gt;    move-corresponding T_EDIDC to WA_EDIDC.&lt;/P&gt;&lt;P&gt;    PERFORM OPEN_IDOC_FOR_CHANGE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    refresh v_status.&lt;/P&gt;&lt;P&gt;    V_STATUS-docnum = V_DOCNUM.&lt;/P&gt;&lt;P&gt;    V_STATUS-status = V_EDIT_STATUS.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   V_STATUS-STACOD = V_SAPCODE.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    clear EDIDS.&lt;/P&gt;&lt;P&gt;    select single * from EDIDS where docnum = v_docnum.&lt;/P&gt;&lt;P&gt;    if sy-subrc = 0.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    MOVE EDIDS-STACOD to V_STATUS-STACOD.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    endif .&lt;/P&gt;&lt;P&gt;    APPEND V_STATUS.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    V_STA-docnum      = v_docnum.&lt;/P&gt;&lt;P&gt;    V_STA-status      = '51'.&lt;/P&gt;&lt;P&gt;    V_STA-repid       = sy-repid.&lt;/P&gt;&lt;P&gt;    V_STA-tabnam      = 'EDI_DS'.&lt;/P&gt;&lt;P&gt;    V_STA-mandt       = sy-mandt.&lt;/P&gt;&lt;P&gt;    V_STA-stamqu      = 'SAP'.&lt;/P&gt;&lt;P&gt;    V_STA-stamid      = 'B1'.&lt;/P&gt;&lt;P&gt;    V_STA-stamno      = '999'.&lt;/P&gt;&lt;P&gt;    V_STA-stapa1      = 'Changes made to idoc ...'.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; t_edi_ds40-stapa2      = t_new_kunnr.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    V_STA-logdat      = sy-datum.&lt;/P&gt;&lt;P&gt;    V_STA-logtim      = sy-uzeit.&lt;/P&gt;&lt;P&gt;    V_STA-STACOD       =  V_SAPCODE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    PERFORM CHANGE_IDOC_STATUS&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   tables V_STATUS&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    USING V_STA&lt;/P&gt;&lt;P&gt;    V_DOCNUM.&lt;/P&gt;&lt;P&gt;...&lt;/P&gt;&lt;P&gt;*************&lt;/P&gt;&lt;P&gt;changing EDIDD&lt;/P&gt;&lt;P&gt;**************&lt;/P&gt;&lt;P&gt;...&lt;/P&gt;&lt;P&gt;    PERFORM CHANGE_IDOC.&lt;/P&gt;&lt;P&gt;    PERFORM CLOSE_IDOC_FOR_CHANGE.&lt;/P&gt;&lt;P&gt;    refresh v_status.&lt;/P&gt;&lt;P&gt;    V_STATUS-docnum = V_DOCNUM.&lt;/P&gt;&lt;P&gt;    V_STATUS-status = V_PROCESSED_STATUS.&lt;/P&gt;&lt;P&gt;    APPEND V_STATUS.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    V_STA-docnum      = v_docnum.&lt;/P&gt;&lt;P&gt;    V_STA-status      = '32'.&lt;/P&gt;&lt;P&gt;    V_STA-repid       = sy-repid.&lt;/P&gt;&lt;P&gt;    V_STA-tabnam      = 'EDI_DS'.&lt;/P&gt;&lt;P&gt;    V_STA-mandt       = sy-mandt.&lt;/P&gt;&lt;P&gt;    V_STA-stamqu      = 'SAP'.&lt;/P&gt;&lt;P&gt;    V_STA-stamid      = 'B1'.&lt;/P&gt;&lt;P&gt;    V_STA-stamno      = '999'.&lt;/P&gt;&lt;P&gt;    V_STA-stapa1      = 'Changes made to idoc ...'.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; t_edi_ds40-stapa2      = t_new_kunnr.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    V_STA-logdat      = sy-datum.&lt;/P&gt;&lt;P&gt;    V_STA-logtim      = sy-uzeit.&lt;/P&gt;&lt;P&gt;    V_STA-STACOD       =  V_SAPCODE.&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;   PERFORM CHANGE_IDOC_STATUS&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   tables V_STATUS&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   USING V_STA&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   V_DOCNUM.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  endloop.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  OPEN_IDOC_FOR_CHANGE&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; --&amp;gt;  p1        text&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; &amp;lt;--  p2        text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM OPEN_IDOC_FOR_CHANGE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'EDI_DOCUMENT_OPEN_FOR_EDIT'&lt;/P&gt;&lt;P&gt;   EXPORTING&lt;/P&gt;&lt;P&gt;     DOCUMENT_NUMBER                     = V_DOCNUM&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  ALREADY_OPEN                        = 'N'&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;IMPORTING&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  IDOC_CONTROL                        = WA_EDIDC&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;   TABLES&lt;/P&gt;&lt;P&gt;     IDOC_DATA                           = DEDIDD&lt;/P&gt;&lt;P&gt;  EXCEPTIONS&lt;/P&gt;&lt;P&gt;    DOCUMENT_FOREIGN_LOCK               = 1&lt;/P&gt;&lt;P&gt;    DOCUMENT_NOT_EXIST                  = 2&lt;/P&gt;&lt;P&gt;    DOCUMENT_NOT_OPEN                   = 3&lt;/P&gt;&lt;P&gt;    STATUS_IS_UNABLE_FOR_CHANGING       = 4&lt;/P&gt;&lt;P&gt;    OTHERS                              = 5&lt;/P&gt;&lt;P&gt;           .&lt;/P&gt;&lt;P&gt;  IF SY-SUBRC &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'EDI_DOCUMENT_OPEN_FOR_PROCESS'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  DB_READ_OPTION                 = DB_READ&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      DOCUMENT_NUMBER                = V_DOCNUM&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  ENQUEUE_OPTION                 = SYNCHRONOUS&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt; IMPORTING&lt;/P&gt;&lt;P&gt;   IDOC_CONTROL                   = WA_EDIDC&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;EXCEPTIONS&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  DOCUMENT_FOREIGN_LOCK          = 1&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  DOCUMENT_NOT_EXIST             = 2&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  DOCUMENT_NUMBER_INVALID        = 3&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  DOCUMENT_IS_ALREADY_OPEN       = 4&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  OTHERS                         = 5&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;            .&lt;/P&gt;&lt;P&gt;  IF SY-SUBRC &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " OPEN_IDOC_FOR_CHANGE&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  CHANGE_IDOC&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; --&amp;gt;  p1        text&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; &amp;lt;--  p2        text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM CHANGE_IDOC.&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'EDI_CHANGE_DATA_SEGMENTS'&lt;/P&gt;&lt;P&gt;       TABLES&lt;/P&gt;&lt;P&gt;            IDOC_CHANGED_DATA_RANGE = DEDIDD&lt;/P&gt;&lt;P&gt;       EXCEPTIONS&lt;/P&gt;&lt;P&gt;            IDOC_NOT_OPEN           = 1&lt;/P&gt;&lt;P&gt;            DATA_RECORD_NOT_EXIST   = 2&lt;/P&gt;&lt;P&gt;            OTHERS                  = 3.&lt;/P&gt;&lt;P&gt;  IF SY-SUBRC &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;ENDFORM.                    " CHANGE_IDOC&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  CLOSE_IDOC_FOR_CHANGE&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; --&amp;gt;  p1        text&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; &amp;lt;--  p2        text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM CLOSE_IDOC_FOR_CHANGE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CLEAR t_EDI_DS40.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  t_edi_ds40-docnum      = v_docnum.&lt;/P&gt;&lt;P&gt;  t_edi_ds40-status      = '51'.&lt;/P&gt;&lt;P&gt;  t_edi_ds40-repid       = sy-repid.&lt;/P&gt;&lt;P&gt;  t_edi_ds40-tabnam      = 'EDI_DS'.&lt;/P&gt;&lt;P&gt;  t_edi_ds40-mandt       = sy-mandt.&lt;/P&gt;&lt;P&gt;  t_edi_ds40-stamqu      = 'SAP'.&lt;/P&gt;&lt;P&gt;  t_edi_ds40-stamid      = 'B1'.&lt;/P&gt;&lt;P&gt;  t_edi_ds40-stamno      = '999'.&lt;/P&gt;&lt;P&gt;  t_edi_ds40-stapa1      = 'Changes made to idoc ...'.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; t_edi_ds40-stapa2      = t_new_kunnr.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  t_edi_ds40-logdat      = sy-datum.&lt;/P&gt;&lt;P&gt;  t_edi_ds40-logtim      = sy-uzeit.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  APPEND t_edi_ds40.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'EDI_DOCUMENT_CLOSE_PROCESS'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      DOCUMENT_NUMBER           = V_DOCNUM&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  BACKGROUND                = NO_BACKGROUND&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  NO_DEQUEUE                = ' '&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt; IMPORTING&lt;/P&gt;&lt;P&gt;   IDOC_CONTROL              = WA_EDIDC&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;EXCEPTIONS&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  DOCUMENT_NOT_OPEN         = 1&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  FAILURE_IN_DB_WRITE       = 2&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  PARAMETER_ERROR           = 3&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  STATUS_SET_MISSING        = 4&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  OTHERS                    = 5&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;            .&lt;/P&gt;&lt;P&gt;  IF SY-SUBRC &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; CALL FUNCTION 'EDI_DOCUMENT_CLOSE_EDIT'&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   EXPORTING&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     DOCUMENT_NUMBER        = V_DOCNUM&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     DO_COMMIT              = 'X'&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     DO_UPDATE              = 'X'&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     WRITE_ALL_STATUS       = 'X'&lt;/P&gt;&lt;/LI&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;  STATUS_RECORDS         = t_EDI_DS40&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  EXCEPTIONS&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    IDOC_NOT_OPEN          = 1&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    DB_ERROR               = 2&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    OTHERS                 = 3&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;           .&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; IF SY-SUBRC &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;/LI&gt;&lt;UL&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO&lt;/P&gt;&lt;/LI&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;        WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; ENDIF.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;ENDFORM.                    " CLOSE_IDOC_FOR_CHANGE&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  CHANGE_IDOC_STATUS&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; --&amp;gt;  p1        text&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; &amp;lt;--  p2        text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM CHANGE_IDOC_STATUS&lt;/P&gt;&lt;P&gt;*tables P_IDOC_STATUS structure V_IDOC_STATUS&lt;/P&gt;&lt;P&gt;USING P_STA&lt;/P&gt;&lt;P&gt;P_DOCNUM.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'EDI_DOCUMENT_STATUS_SET'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      DOCUMENT_NUMBER               = P_DOCNUM&lt;/P&gt;&lt;P&gt;      IDOC_STATUS                   = P_STA&lt;/P&gt;&lt;P&gt; IMPORTING&lt;/P&gt;&lt;P&gt;   IDOC_CONTROL                  = WA_EDIDC&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;EXCEPTIONS&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  DOCUMENT_NUMBER_INVALID       = 1&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  OTHER_FIELDS_INVALID          = 2&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  STATUS_INVALID                = 3&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  OTHERS                        = 4&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;            .&lt;/P&gt;&lt;P&gt;  IF SY-SUBRC &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&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;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   CALL FUNCTION 'IDOC_STATUS_WRITE_TO_DATABASE'&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; EXPORTING&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   IDOC_NUMBER                     = p_docnum&lt;/P&gt;&lt;/LI&gt;&lt;UL&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;        IDOC_OPENED_FLAG                = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;        NO_DEQUEUE_FLAG                 = 'X'&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;        IDOC_CONTROL                    =&lt;/P&gt;&lt;/LI&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;   IDOC_STATUS                     = P_IDOC_STATUS&lt;/P&gt;&lt;/LI&gt;&lt;UL&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;      EXCEPTIONS&lt;/P&gt;&lt;/LI&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;        IDOC_FOREIGN_LOCK               = 1&lt;/P&gt;&lt;/LI&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;        IDOC_NOT_FOUND                  = 2&lt;/P&gt;&lt;/LI&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;        IDOC_STATUS_RECORDS_EMPTY       = 3&lt;/P&gt;&lt;/LI&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;        IDOC_STATUS_INVALID             = 4&lt;/P&gt;&lt;/LI&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;        DB_ERROR                        = 5&lt;/P&gt;&lt;/LI&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;        OTHERS                          = 6&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;LI level="1" type="ul"&gt;&lt;P&gt;   IF SY-SUBRC &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;/LI&gt;&lt;UL&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO&lt;/P&gt;&lt;/LI&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;        WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   else.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     commit work.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   ENDIF.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;ENDFORM.                    " CHANGE_IDOC_STATUS&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 27 Mar 2006 14:24:02 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/inbound-idoc-processing-error-duplicate-key/m-p/1243925#M142972</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2006-03-27T14:24:02Z</dc:date>
    </item>
    <item>
      <title>Re: inbound IDOC processing, error duplicate key</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/inbound-idoc-processing-error-duplicate-key/m-p/1243926#M142973</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Actually Sven, The sequence I was thinking of is more like this ( though I haven't worked out whether you have all the necessary data for each FM interface )&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;- EDI_DOCUMENT_OPEN_FOR_PROCESS&lt;/P&gt;&lt;P&gt;- EDI_DOCUMENT_STATUS_SET &lt;/P&gt;&lt;P&gt;- EDI_DOCUMENT_CLOSE_PROCESS&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;- EDI_DOCUMENT_OPEN_FOR_EDIT&lt;/P&gt;&lt;P&gt;- EDI_CHANGE_DATA_SEGMENTS&lt;/P&gt;&lt;P&gt;- EDI_DOCUMENT_CLOSE_EDIT&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Also the second point, I think you should update the IDOC Status in step 2 with '69' and not '51'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I really hope this works ...&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 27 Mar 2006 18:06:22 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/inbound-idoc-processing-error-duplicate-key/m-p/1243926#M142973</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2006-03-27T18:06:22Z</dc:date>
    </item>
    <item>
      <title>Re: inbound IDOC processing, error duplicate key</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/inbound-idoc-processing-error-duplicate-key/m-p/1243927#M142974</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Sven,&lt;/P&gt;&lt;P&gt;Thanks for the points....let me know what final solution you come up with ....:-)&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 28 Mar 2006 07:48:16 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/inbound-idoc-processing-error-duplicate-key/m-p/1243927#M142974</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2006-03-28T07:48:16Z</dc:date>
    </item>
    <item>
      <title>Re: inbound IDOC processing, error duplicate key</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/inbound-idoc-processing-error-duplicate-key/m-p/1243928#M142975</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Urmila,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I tried this sequence : code extract follows...&lt;/P&gt;&lt;P&gt;I got the duplicate key errors again.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;what about delete first and then insert again in EDID4 table ? &lt;SPAN __jive_emoticon_name="happy"&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;source code extract:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;INCLUDE ZBE01458_TOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;INITIALIZATION.&lt;/P&gt;&lt;P&gt;  V_EDIT_STATUS = '69'.&lt;/P&gt;&lt;P&gt;  V_PROCESSED_STATUS = '32'.&lt;/P&gt;&lt;P&gt;  V_SAPCODE = 'SAPE0184'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;start-of-selection.&lt;/P&gt;&lt;P&gt;  clear t_edidc. refresh t_edidc.&lt;/P&gt;&lt;P&gt;  SELECT  * FROM  EDIDC into table t_edidc&lt;/P&gt;&lt;P&gt;         WHERE  DOCNUM  in S_docnum&lt;/P&gt;&lt;P&gt;           and  mestyp  in S_mestyp&lt;/P&gt;&lt;P&gt;           and  idoctp  in S_idoctp&lt;/P&gt;&lt;P&gt;           and  credat  in S_credat&lt;/P&gt;&lt;P&gt;           and  rcvpor  in S_rcvpor&lt;/P&gt;&lt;P&gt;           and  rcvprt  in S_rcvprt&lt;/P&gt;&lt;P&gt;           and  rcvprn  in S_rcvprn&lt;/P&gt;&lt;P&gt;           and  sndpor  in S_sndpor&lt;/P&gt;&lt;P&gt;           and  sndprt  in S_sndprt&lt;/P&gt;&lt;P&gt;           and  sndprn  in S_sndprn&lt;/P&gt;&lt;P&gt;           and  status  in S_status.&lt;/P&gt;&lt;P&gt;  loop at t_edidc.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    move t_edidc-docnum to v_docnum.&lt;/P&gt;&lt;P&gt;    move-corresponding T_EDIDC to WA_EDIDC.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    V_STA-docnum      = v_docnum.&lt;/P&gt;&lt;P&gt;    V_STA-status      = '51'.&lt;/P&gt;&lt;P&gt;    V_STA-repid       = sy-repid.&lt;/P&gt;&lt;P&gt;    V_STA-tabnam      = 'EDI_DS'.&lt;/P&gt;&lt;P&gt;    V_STA-mandt       = sy-mandt.&lt;/P&gt;&lt;P&gt;    V_STA-stamqu      = 'SAP'.&lt;/P&gt;&lt;P&gt;    V_STA-stamid      = 'B1'.&lt;/P&gt;&lt;P&gt;    V_STA-stamno      = '999'.&lt;/P&gt;&lt;P&gt;    V_STA-stapa1      = 'Changes made to idoc ...'.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; t_edi_ds40-stapa2      = t_new_kunnr.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    V_STA-logdat      = sy-datum.&lt;/P&gt;&lt;P&gt;    V_STA-logtim      = sy-uzeit.&lt;/P&gt;&lt;P&gt;    V_STA-STACOD       =  V_SAPCODE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    PERFORM OPEN_FOR_PROCESS.&lt;/P&gt;&lt;P&gt;    PERFORM SET_IDOC_STATUS USING V_DOCNUM V_STA.&lt;/P&gt;&lt;P&gt;    PERFORM CLOSE_IDOC_FOR_PROCESS.&lt;/P&gt;&lt;P&gt;    PERFORM OPEN_IDOC_FOR_CHANGE.&lt;/P&gt;&lt;P&gt;    PERFORM PROCESS_IDOC_STRUCTURE.&lt;/P&gt;&lt;P&gt;    PERFORM CHANGE_IDOC.&lt;/P&gt;&lt;P&gt;    PERFORM CLOSE_IDOC_FOR_CHANGE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   refresh v_status.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   V_STATUS-docnum = V_DOCNUM.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   V_STATUS-status = V_EDIT_STATUS.&lt;/P&gt;&lt;/LI&gt;&lt;UL&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;   V_STATUS-STACOD = V_SAPCODE.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   clear EDIDS.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   select single * from EDIDS where docnum = v_docnum.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   if sy-subrc = 0.&lt;/P&gt;&lt;/LI&gt;&lt;UL&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;    MOVE EDIDS-STACOD to V_STATUS-STACOD.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   endif .&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   APPEND V_STATUS.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   PERFORM CHANGE_IDOC_STATUS tables V_STATUS USING  V_DOCNUM.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  endloop.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  OPEN_IDOC_FOR_CHANGE&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; --&amp;gt;  p1        text&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; &amp;lt;--  p2        text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM OPEN_IDOC_FOR_CHANGE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'EDI_DOCUMENT_OPEN_FOR_EDIT'&lt;/P&gt;&lt;P&gt;   EXPORTING&lt;/P&gt;&lt;P&gt;     DOCUMENT_NUMBER                     = V_DOCNUM&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  ALREADY_OPEN                        = 'N'&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt; IMPORTING&lt;/P&gt;&lt;P&gt;   IDOC_CONTROL                        = WA_EDIDC&lt;/P&gt;&lt;P&gt;   TABLES&lt;/P&gt;&lt;P&gt;     IDOC_DATA                           = DEDIDD&lt;/P&gt;&lt;P&gt;  EXCEPTIONS&lt;/P&gt;&lt;P&gt;    DOCUMENT_FOREIGN_LOCK               = 1&lt;/P&gt;&lt;P&gt;    DOCUMENT_NOT_EXIST                  = 2&lt;/P&gt;&lt;P&gt;    DOCUMENT_NOT_OPEN                   = 3&lt;/P&gt;&lt;P&gt;    STATUS_IS_UNABLE_FOR_CHANGING       = 4&lt;/P&gt;&lt;P&gt;    OTHERS                              = 5&lt;/P&gt;&lt;P&gt;           .&lt;/P&gt;&lt;P&gt;  IF SY-SUBRC &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " OPEN_IDOC_FOR_CHANGE&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  CHANGE_IDOC&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; --&amp;gt;  p1        text&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; &amp;lt;--  p2        text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM CHANGE_IDOC.&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'EDI_CHANGE_DATA_SEGMENTS'&lt;/P&gt;&lt;P&gt;       TABLES&lt;/P&gt;&lt;P&gt;            IDOC_CHANGED_DATA_RANGE = DEDIDD&lt;/P&gt;&lt;P&gt;       EXCEPTIONS&lt;/P&gt;&lt;P&gt;            IDOC_NOT_OPEN           = 1&lt;/P&gt;&lt;P&gt;            DATA_RECORD_NOT_EXIST   = 2&lt;/P&gt;&lt;P&gt;            OTHERS                  = 3.&lt;/P&gt;&lt;P&gt;  IF SY-SUBRC &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;ENDFORM.                    " CHANGE_IDOC&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  CLOSE_IDOC_FOR_CHANGE&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; --&amp;gt;  p1        text&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; &amp;lt;--  p2        text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM CLOSE_IDOC_FOR_CHANGE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CLEAR t_EDI_DS40.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  t_edi_ds40-docnum      = v_docnum.&lt;/P&gt;&lt;P&gt;  t_edi_ds40-status      = '69'.&lt;/P&gt;&lt;P&gt;  t_edi_ds40-repid       = sy-repid.&lt;/P&gt;&lt;P&gt;  t_edi_ds40-tabnam      = 'EDI_DS'.&lt;/P&gt;&lt;P&gt;  t_edi_ds40-mandt       = sy-mandt.&lt;/P&gt;&lt;P&gt;  t_edi_ds40-stamqu      = 'SAP'.&lt;/P&gt;&lt;P&gt;  t_edi_ds40-stamid      = 'B1'.&lt;/P&gt;&lt;P&gt;  t_edi_ds40-stamno      = '999'.&lt;/P&gt;&lt;P&gt;  t_edi_ds40-stapa1      = 'Changes made to idoc ...'.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; t_edi_ds40-stapa2      = t_new_kunnr.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  t_edi_ds40-logdat      = sy-datum.&lt;/P&gt;&lt;P&gt;  t_edi_ds40-logtim      = sy-uzeit.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  APPEND t_edi_ds40.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'EDI_DOCUMENT_CLOSE_EDIT'&lt;/P&gt;&lt;P&gt;       EXPORTING&lt;/P&gt;&lt;P&gt;            DOCUMENT_NUMBER  = V_DOCNUM&lt;/P&gt;&lt;P&gt;            DO_COMMIT        = 'X'&lt;/P&gt;&lt;P&gt;            DO_UPDATE        = 'X'&lt;/P&gt;&lt;P&gt;            WRITE_ALL_STATUS = 'X'&lt;/P&gt;&lt;P&gt;       TABLES&lt;/P&gt;&lt;P&gt;            STATUS_RECORDS   = t_EDI_DS40&lt;/P&gt;&lt;P&gt;       EXCEPTIONS&lt;/P&gt;&lt;P&gt;            IDOC_NOT_OPEN    = 1&lt;/P&gt;&lt;P&gt;            DB_ERROR         = 2&lt;/P&gt;&lt;P&gt;            OTHERS           = 3.&lt;/P&gt;&lt;P&gt;  IF SY-SUBRC &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;ENDFORM.                    " CLOSE_IDOC_FOR_CHANGE&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  CHANGE_IDOC_STATUS&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; --&amp;gt;  p1        text&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; &amp;lt;--  p2        text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM CHANGE_IDOC_STATUS tables P_IDOC_STATUS structure V_IDOC_STATUS&lt;/P&gt;&lt;P&gt;USING P_DOCNUM.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'IDOC_STATUS_WRITE_TO_DATABASE'&lt;/P&gt;&lt;P&gt;EXPORTING&lt;/P&gt;&lt;P&gt;  IDOC_NUMBER                     = p_docnum&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        IDOC_OPENED_FLAG                = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        NO_DEQUEUE_FLAG                 = 'X'&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      IMPORTING&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        IDOC_CONTROL                    =&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;TABLES&lt;/P&gt;&lt;P&gt;  IDOC_STATUS                     = P_IDOC_STATUS&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      EXCEPTIONS&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        IDOC_FOREIGN_LOCK               = 1&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        IDOC_NOT_FOUND                  = 2&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        IDOC_STATUS_RECORDS_EMPTY       = 3&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        IDOC_STATUS_INVALID             = 4&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        DB_ERROR                        = 5&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        OTHERS                          = 6&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        .&lt;/P&gt;&lt;P&gt;  IF SY-SUBRC &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  else.&lt;/P&gt;&lt;P&gt;    commit work.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;ENDFORM.                    " CHANGE_IDOC_STATUS&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  OPEN_FOR_PROCESS&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; --&amp;gt;  p1        text&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; &amp;lt;--  p2        text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM OPEN_FOR_PROCESS.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'EDI_DOCUMENT_OPEN_FOR_PROCESS'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  DB_READ_OPTION                 = DB_READ&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      DOCUMENT_NUMBER                = V_DOCNUM&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  ENQUEUE_OPTION                 = SYNCHRONOUS&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt; IMPORTING&lt;/P&gt;&lt;P&gt;   IDOC_CONTROL                   = WA_EDIDC&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;EXCEPTIONS&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  DOCUMENT_FOREIGN_LOCK          = 1&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  DOCUMENT_NOT_EXIST             = 2&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  DOCUMENT_NUMBER_INVALID        = 3&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  DOCUMENT_IS_ALREADY_OPEN       = 4&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  OTHERS                         = 5&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;            .&lt;/P&gt;&lt;P&gt;  IF SY-SUBRC &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " OPEN_FOR_PROCESS&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  SET_IDOC_STATUS&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; --&amp;gt;  p1        text&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; &amp;lt;--  p2        text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM SET_IDOC_STATUS USING P_DOCNUM P_STA.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'EDI_DOCUMENT_STATUS_SET'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      DOCUMENT_NUMBER               = P_DOCNUM&lt;/P&gt;&lt;P&gt;      IDOC_STATUS                   = P_STA&lt;/P&gt;&lt;P&gt; IMPORTING&lt;/P&gt;&lt;P&gt;   IDOC_CONTROL                  = WA_EDIDC&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;EXCEPTIONS&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  DOCUMENT_NUMBER_INVALID       = 1&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  OTHER_FIELDS_INVALID          = 2&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  STATUS_INVALID                = 3&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  OTHERS                        = 4&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;            .&lt;/P&gt;&lt;P&gt;  IF SY-SUBRC &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;ENDFORM.                    " SET_IDOC_STATUS&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  CLOSE_IDOC_FOR_PROCESS&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; --&amp;gt;  p1        text&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; &amp;lt;--  p2        text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM CLOSE_IDOC_FOR_PROCESS.&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'EDI_DOCUMENT_CLOSE_PROCESS'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      DOCUMENT_NUMBER           = V_DOCNUM&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  BACKGROUND                = NO_BACKGROUND&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  NO_DEQUEUE                = ' '&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt; IMPORTING&lt;/P&gt;&lt;P&gt;   IDOC_CONTROL              = WA_EDIDC&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;EXCEPTIONS&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  DOCUMENT_NOT_OPEN         = 1&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  FAILURE_IN_DB_WRITE       = 2&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  PARAMETER_ERROR           = 3&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  STATUS_SET_MISSING        = 4&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  OTHERS                    = 5&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;            .&lt;/P&gt;&lt;P&gt;  IF SY-SUBRC &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;ENDFORM.                    " CLOSE_IDOC_FOR_PROCESS&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 28 Mar 2006 08:00:35 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/inbound-idoc-processing-error-duplicate-key/m-p/1243928#M142975</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2006-03-28T08:00:35Z</dc:date>
    </item>
  </channel>
</rss>

