<?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 Validation in Application Development and Automation Discussions</title>
    <link>https://community.sap.com/t5/application-development-and-automation-discussions/inbound-idoc-validation/m-p/4090131#M977987</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Maic,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Why not locking the KNA1, execute your checks, and then delocking the KNA1 just before you call the IDOC_INPUT_DEBITOR?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;John.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 03 Jul 2008 11:19:02 GMT</pubDate>
    <dc:creator>Former Member</dc:creator>
    <dc:date>2008-07-03T11:19:02Z</dc:date>
    <item>
      <title>Inbound IDoc Validation</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/inbound-idoc-validation/m-p/4090130#M977986</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi all,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;we process an extended version of DEBMAS01 IDoc on inbound and need to verify if the incoming IDoc does not contain outdated information already. Basically, we check if the underlying record was not yet changed in SAP based on change pointer BDCPS.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;To achieve this we created a new process code that executes a new function module. This function module first retrieves the SAP kunnr of the DEBMAS01 and retrieves the record from KNA1. Afterwards we check if there any entries in BDCPS that are not yet processed. If so, we reject the IDoc. If not, we validate a specific version in KNA1 in addition against a custom field in DEBMAS01. At the end the standard function module IDOC_INPUT_DEBITOR to apply the information to KNA1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Now, our problem is we need to lock the KNA1 record before we check for change pointers, otherwise the whole logic will not work if there happens a change at the same time. We tried to use enqueue/dequeue functions, but then the IDOC_INPUT_DEBITOR function module raises the error that the record is already locked. We also tried to update the KNA1 record before we check BDCPS, but unfortunately when IDOC_INPUT_DEBITOR is called the update gets committed and we loose the database lock.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Do you have any ideas how we could lock the record or another concept in mind? We don't want to copy IDOC_INPUT_DEBITOR and utilize as much standard as possible.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Many thanks for your input...we drive crazy here...especially as with a WAIT UP TO we cannot test the database LUWs as they are committed with a WAIT....&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Cheers&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Our custom function module:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FUNCTION Z_IDOC_INPUT_DEBITOR.&lt;/P&gt;&lt;P&gt;*"----&lt;/P&gt;&lt;P&gt;-&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;STRONG&gt;"&lt;/STRONG&gt;"Lokale Schnittstelle:&lt;/P&gt;&lt;P&gt;*"  IMPORTING&lt;/P&gt;&lt;P&gt;*"     VALUE(INPUT_METHOD) LIKE  BDWFAP_PAR-INPUTMETHD&lt;/P&gt;&lt;P&gt;*"     VALUE(MASS_PROCESSING) LIKE  BDWFAP_PAR-MASS_PROC&lt;/P&gt;&lt;P&gt;*"     VALUE(PI_XD99_USED) TYPE  CHAR1 DEFAULT SPACE&lt;/P&gt;&lt;P&gt;*"     VALUE(PI_KNVK_SPECIAL) TYPE  CHAR1 DEFAULT SPACE&lt;/P&gt;&lt;P&gt;*"  EXPORTING&lt;/P&gt;&lt;P&gt;*"     VALUE(WORKFLOW_RESULT) LIKE  BDWFAP_PAR-RESULT&lt;/P&gt;&lt;P&gt;*"     VALUE(APPLICATION_VARIABLE) LIKE  BDWFAP_PAR-APPL_VAR&lt;/P&gt;&lt;P&gt;*"     VALUE(IN_UPDATE_TASK) LIKE  BDWFAP_PAR-UPDATETASK&lt;/P&gt;&lt;P&gt;*"     VALUE(CALL_TRANSACTION_DONE) LIKE  BDWFAP_PAR-CALLTRANS&lt;/P&gt;&lt;P&gt;*"  TABLES&lt;/P&gt;&lt;P&gt;*"      IDOC_CONTRL STRUCTURE  EDIDC&lt;/P&gt;&lt;P&gt;*"      IDOC_DATA STRUCTURE  EDIDD&lt;/P&gt;&lt;P&gt;*"      IDOC_STATUS STRUCTURE  BDIDOCSTAT&lt;/P&gt;&lt;P&gt;*"      RETURN_VARIABLES STRUCTURE  BDWFRETVAR&lt;/P&gt;&lt;P&gt;*"      SERIALIZATION_INFO STRUCTURE  BDI_SER&lt;/P&gt;&lt;P&gt;*"  EXCEPTIONS&lt;/P&gt;&lt;P&gt;*"      WRONG_FUNCTION_CALLED&lt;/P&gt;&lt;P&gt;*"----&lt;/P&gt;&lt;P&gt;-&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: zzfred like ZZFRED,  "SFDC Extended Segment&lt;/P&gt;&lt;P&gt;      i_e1kna1m like e1kna1m,&lt;/P&gt;&lt;P&gt;      i_kna1 like kna1,&lt;/P&gt;&lt;P&gt;      ls_idoc_data type edidd, "manipulierte IDOC DATA&lt;/P&gt;&lt;P&gt;      lv_index type sy-tabix. "Index in table IDOC_DATA&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: i_CPIDENT like BDCPS-CPIDENT,&lt;/P&gt;&lt;P&gt;      number_records type NUM.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Flag signals if customer already locked.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt; DATA: locked(1) type c value 'N'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;TABLES: bdcp,&lt;/P&gt;&lt;P&gt;        bdcps.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*-------&lt;/P&gt;&lt;P&gt;*Sleep Pointer setzen, um LOCK auf Datensatz zu testen&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;WAIT UP TO 300 SECONDS.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*-------&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;LOOP AT IDOC_DATA.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CASE IDOC_DATA-segnam.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    E1KNA1M&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      WHEN 'E1KNA1M'.&lt;/P&gt;&lt;P&gt;        i_e1kna1m = IDOC_DATA-SDATA.&lt;/P&gt;&lt;P&gt;        read table idoc_data into ls_idoc_data&lt;/P&gt;&lt;P&gt;          with key segnam = IDOC_DATA-segnam.&lt;/P&gt;&lt;P&gt;        lv_index = sy-tabix.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    ZZFRED&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      WHEN 'ZZFRED'.&lt;/P&gt;&lt;P&gt;        zzfred = IDOC_DATA-SDATA.&lt;/P&gt;&lt;P&gt;    ENDCASE.&lt;/P&gt;&lt;P&gt;ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;&amp;lt;---------------------------------------------------------------------&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Prüfen ob KUNNR übergeben wurde, sonst auf SFDC prüfen&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;und dann mit SFDC_ID die KUNNR aus SAP holen,&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;ansonsten eine neue SAP KUNNR erzeugen als nächst höhere freie Nr&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    IF i_e1kna1m-KUNNR eq '/'.    "Kundennummer wurde nicht mit IDOC&lt;/P&gt;&lt;P&gt;                                  "übergeben = '/' oder blank '' je nach&lt;/P&gt;&lt;P&gt;                                  "Einstellung in INFA&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      SELECT SINGLE * FROM kna1 into i_kna1&lt;/P&gt;&lt;P&gt;        WHERE sfdc_id = zzfred-sfdc_id.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      IF sy-subrc eq 0. " Kunde gefunden in Kna1&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      IDOC Feld KUNNR den Wert aus Tabelle KNA1 zuweisen&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        i_e1kna1m-kunnr = i_kna1-kunnr.&lt;/P&gt;&lt;P&gt;      ELSE.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      neuen Wert für KUNNR erstellen und dann IDOC Segment zuweisen&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        i_e1kna1m-kunnr = '0000059376'. "&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Code wechseln, so dass Wert&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      aus Tabelle ankommt&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      ENDIF. "sy-subrc&lt;/P&gt;&lt;P&gt;    ENDIF. "Kunnr nicht gefüllt&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;KUNNR nun im manipulierten IDOC DATA Record vorhanden, aber noch nicht&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;an IDOC_DATA übertragen. Dies geschieht durch modify Anweisung folgend&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     i_e1kna1m-KUNNR = '0000059377'.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     i_e1kna1m-STRAS = 'Hinterm Hornbach'.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;manipulierte IDOC Daten übertragen&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    ls_idoc_data-sdata = i_e1kna1m. "man. Segment übertragen&lt;/P&gt;&lt;P&gt;    modify idoc_data from ls_idoc_data index lv_index.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;---------------------------------------------------------------------&amp;gt;&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*------- Konto sperren KNA1 -&lt;/P&gt;&lt;P&gt;-&lt;/P&gt;&lt;HR originaltext="------------------------------------------" /&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   CALL FUNCTION 'ENQUEUE_EXKNA1'&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;             KUNNR          = i_e1kna1m-kunnr&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;            FOREIGN_LOCK   = 1&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;            SYSTEM_FAILURE = 2.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   CASE SY-SUBRC.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     WHEN 1.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      LOCKED = 'Y'.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      ROLLBACK WORK.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;       "MESSAGE E042 WITH kna1m-kunnr.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                                     "von anderem Benutzer gesperrt&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     WHEN 2.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      "MESSAGE E038.                  "Systemfehler&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;       ROLLBACK WORK.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   ENDCASE.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&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;&amp;lt;---------------------------------------------------------------------&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Nun prüfen, ob IDOC verarbeitet werden soll, hier auf Kriterien prüfen&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  SAP_VERSION prüfen&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Change Pointer prüfen&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  Status für IDOC ändern (Bsp.: S.648 Buch)&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 locked eq 'N'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SELECT SINGLE * FROM kna1 into i_kna1&lt;/P&gt;&lt;P&gt;  WHERE kunnr = i_e1kna1m-kunnr.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;IF sy-subrc eq 0. " Kunde gefunden in Kna1&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    i_kna1-system_of_change = 'SFDC'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    update kna1 from i_kna1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    SELECT COUNT(*) INTO number_records&lt;/P&gt;&lt;P&gt;      FROM BDCPS AS a INNER JOIN BDCP AS b&lt;/P&gt;&lt;P&gt;      ON a&lt;SUB&gt;CPIDENT = b&lt;/SUB&gt;CPIDENT&lt;/P&gt;&lt;P&gt;      WHERE a&lt;SUB&gt;PROCESS &amp;lt;&amp;gt; 'X' AND a&lt;/SUB&gt;MESTYPE = 'DEBMAS'&lt;/P&gt;&lt;P&gt;        AND b~CDOBJID = i_e1kna1m-kunnr.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    IF number_records &amp;gt; 0.&lt;/P&gt;&lt;P&gt;      i_kna1-sap_version = i_kna1-sap_version + number_records.&lt;/P&gt;&lt;P&gt;      EXIT.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; ENDSELECT.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF zzfred-sap_version &amp;lt; i_kna1-sap_version&lt;/P&gt;&lt;P&gt;    OR zzfred-sfdc_version &amp;lt; i_kna1-sfdc_version.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    IDOC_STATUS-DOCNUM = IDOC_CONTRL-DOCNUM.&lt;/P&gt;&lt;P&gt;    IDOC_STATUS-STATUS = '51'.&lt;/P&gt;&lt;P&gt;    IDOC_STATUS-MSGTY = 'E'.&lt;/P&gt;&lt;P&gt;    IDOC_STATUS-MSGID = 'ZE'.&lt;/P&gt;&lt;P&gt;    IDOC_STATUS-MSGNO = '005'.&lt;/P&gt;&lt;P&gt;    IDOC_STATUS-MSGV1 = i_e1kna1m-kunnr.&lt;/P&gt;&lt;P&gt;    APPEND IDOC_STATUS.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    WORKFLOW_RESULT = '99999'.  "C_WF_RESULT_ERROR.&lt;/P&gt;&lt;P&gt;    RETURN_VARIABLES-WF_PARAM = 'Error_IDOCs'.&lt;/P&gt;&lt;P&gt;    RETURN_VARIABLES-DOC_NUMBER = IDOC_CONTRL-DOCNUM.&lt;/P&gt;&lt;P&gt;    APPEND RETURN_VARIABLES.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    EXIT.&lt;/P&gt;&lt;P&gt;  ENDIF. "zzfred-sap_version&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDIF.  "sy-subrc&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Und wenn abgelehnt, dann EXIT setzen, oder IF Bedingung, aber die&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;nachstehende Function 'IDOC_INPUT_DEBITOR' nicht ausführen&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;---------------------------------------------------------------------&amp;gt;&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Wenn alles in Ordnung ist und IDOC nicht abgelehnt wird, dann Function&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;aufrufen, um IDOC verarbeiten zu lassen, allerdings mit den&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;manipulierten Daten.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CALL FUNCTION 'IDOC_INPUT_DEBITOR'&lt;/P&gt;&lt;P&gt;         DESTINATION SPACE&lt;/P&gt;&lt;P&gt;         EXPORTING&lt;/P&gt;&lt;P&gt;              INPUT_METHOD          = INPUT_METHOD&lt;/P&gt;&lt;P&gt;              MASS_PROCESSING       = MASS_PROCESSING&lt;/P&gt;&lt;P&gt;         IMPORTING&lt;/P&gt;&lt;P&gt;              WORKFLOW_RESULT       = WORKFLOW_RESULT&lt;/P&gt;&lt;P&gt;              APPLICATION_VARIABLE  = APPLICATION_VARIABLE&lt;/P&gt;&lt;P&gt;              IN_UPDATE_TASK        = IN_UPDATE_TASK&lt;/P&gt;&lt;P&gt;              CALL_TRANSACTION_DONE = CALL_TRANSACTION_DONE&lt;/P&gt;&lt;P&gt;         TABLES&lt;/P&gt;&lt;P&gt;              IDOC_CONTRL           = IDOC_CONTRL&lt;/P&gt;&lt;P&gt;              IDOC_DATA             = IDOC_DATA&lt;/P&gt;&lt;P&gt;              IDOC_STATUS           = IDOC_STATUS&lt;/P&gt;&lt;P&gt;              RETURN_VARIABLES      = RETURN_VARIABLES&lt;/P&gt;&lt;P&gt;              SERIALIZATION_INFO    = SERIALIZATION_INFO&lt;/P&gt;&lt;P&gt;         EXCEPTIONS&lt;/P&gt;&lt;P&gt;              WRONG_FUNCTION_CALLED = 1&lt;/P&gt;&lt;P&gt;              OTHERS                = 2&lt;/P&gt;&lt;P&gt;              .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;rollback work.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;------ Konto entsperren ---------------------------------------------*&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   CALL FUNCTION 'DEQUEUE_EXKNA1'&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;             KUNNR          = i_e1kna1m-kunnr&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;            SYSTEM_FAILURE = 1.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;endif.&lt;/P&gt;&lt;P&gt;ENDFUNCTION.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 03 Jul 2008 10:48:47 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/inbound-idoc-validation/m-p/4090130#M977986</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2008-07-03T10:48:47Z</dc:date>
    </item>
    <item>
      <title>Re: Inbound IDoc Validation</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/inbound-idoc-validation/m-p/4090131#M977987</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Maic,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Why not locking the KNA1, execute your checks, and then delocking the KNA1 just before you call the IDOC_INPUT_DEBITOR?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;John.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 03 Jul 2008 11:19:02 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/inbound-idoc-validation/m-p/4090131#M977987</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2008-07-03T11:19:02Z</dc:date>
    </item>
    <item>
      <title>Re: Inbound IDoc Validation</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/inbound-idoc-validation/m-p/4090132#M977988</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Yes, we did this already, but still somebody could change the record between we release the lock and the IDoc is processed in the standard module. Is there a way to get the lock and "pass" it into the module or better to say that the standard module can relock the record as it's the same transaction and user.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 03 Jul 2008 13:36:11 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/inbound-idoc-validation/m-p/4090132#M977988</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2008-07-03T13:36:11Z</dc:date>
    </item>
  </channel>
</rss>

