Mapping : Complex Structured Source to JDBC receiver structure

Hello...
We have a source structure as
<?xml version="1.0" encoding="UTF-8"?>
<ns0:MTO_Corporate xmlns:ns0="http://axis.com/authorization">
   <Details>
      <Corporate_Details> ---------- (occurence 1 to n)
         <ID/>
         <Name/>
         <Address/>
         <Delivery_Address/>
         <Email_ID/>
         <Request_Limit/>
         <Total_Limit/>
         <Used_Limit/>
         <Availability_Limit/>
         <Sanction_Date/>
         <Created_By/>
         <Created_Date/>
         <Fax_No/>
         <Max_Authorizers/>
         <Account_Details> ---------- (occurence 1 to m)
            <Corp_Acc_Type/>
            <Corp_Acc_Num/>
            <Branch_Code/>
            <Branch_Name/>
            <Bank_City/>
         </Account_Details>
         <Department_Details> ---------- (occurence 0 to x)
            <Dept_Code/>
            <Dept_Name/>
         </Department_Details>
         <Designation_Details>---------- (occurence 0 to y)
            <Desig_Code/>
            <Desig_Name/>
         </Designation_Details>
         <Status/>
         <State/>
      </Corporate_Details>
   </Details>
</ns0:MTO_Corporate>
In this structure, each corporate can have more than one accounts and departments and designations. We need to map this with the following target structure:
<?xml version="1.0" encoding="UTF-8"?>
<ns0:MTI_Corporate_DB xmlns:ns0="http://axis.com/authorization">
<StatementCorporate>
<AXIS_STORED_PROCEDURE action="EXECUTE">
<Table>SP_CORPORATE_MASTER_INSERT</Table>
<f_corp_code isInput="true"></f_corp_code>
<f_corp_name isInput="true"></f_corp_name>
<f_corp_addr1 isInput="true"></f_corp_addr1>
<f_corp_addr2 isInput="true"></f_corp_addr2>
<f_primary_email isInput="true"></f_primary_email>
<f_corp_req_limit isInput="true"></f_corp_req_limit>
<f_corp_total_limit isInput="true"></f_corp_total_limit>
<f_corp_upper_limit isInput="true"></f_corp_upper_limit>
<f_corp_avail_limit isInput="true"></f_corp_avail_limit>
<f_effective_from isInput="true"></f_effective_from>
<f_created_by isInput="true"></f_created_by>
<f_created_date isInput="true"></f_created_date>
<f_corp_fax isInput="true"></f_corp_fax>
<f_Max_Authorizers isInput="true"></f_Max_Authorizers>
<f_corp_acc_type isInput="true"></f_corp_acc_type>
<f_corp_acc_num isInput="true"></f_corp_acc_num>
<f_corp_branch_code isInput="true"></f_corp_branch_code>
<f_corp_branch_name isInput="true"></f_corp_branch_name>
<f_corp_bank_city isInput="true"></f_corp_bank_city>
<f_corp_dept_code isInput="true"></f_corp_dept_code>
<f_corp_dept_name isInput="true"></f_corp_dept_name>
<f_corp_desig_code type="true"></f_corp_desig_code>
<f_corp_desig_name isInput="true"></f_corp_desig_name>
<f_corp_enable isInput="true"></f_corp_enable>
<f_corp_status isInput="true"></f_corp_status>
<p_err_msg isOutput="true" type="VARCHAR">
</p_err_msg><p_status isOutput="true" ype="VARCHAR">
</p_status>
</AXIS_STORED_PROCEDURE>
</StatementCorporate>
</ns0:MTI_Corporate_DB>
Yes, we are using a stored procedure which will insert 5 tables. The problem is in the mapping between souce and target fields.
Plese provide your inputs on this query.
Regards
Suraj

Hi Manisha,
>>U need to create number of target message as that of number of account details so that it will be one query for ur database.
Yes this could have been done if we were sure that a corporate will have more accounts than departments/designations... But that is not always the case.
>>So map ur source <account_details> node with target root node and change context of <account_detail> to <details>..these will create number of target messages.
So what I did is to check the larger of account, department and designation and then repeat the traget strucutre that much times...
>>Now map ur target node with account, dept, and designation details by changing it context to root node
But still I have some elements like ID, name etc.which comes one for each corporate and they also needs to repeated.. I am thinking that this will not be an easy solution.
Anyway thanks for the reply and please keep updated if you have any other idea.
Regards
Suraj

Similar Messages

  • JDBC  Receiver Structure for Synchronous scenario

    Hi,
    I have synchronous scenairo of jdbc where we are executing the stored procedure, up to response message  mapping it is working fine and getting value from stored procedure but the problem is that response result not able to send to response target. where response is sending output ot jdbc receiver in response target.
    In SXMB_Moni we get response id like this
      <?xml version="1.0" encoding="UTF-8" ?>
    - <ns0:MT_SP_RESPONSE_TARGET xmlns:ns0="http://ns_jdbctest">
    - <TESTSP>
    - <row action="INSERT">
      <table>TESTSP</table>
      </row>
      </TESTSP>
      </ns0:MT_SP_RESPONSE_TARGET>
    Where access element is missing but in response mapping it is properly structured like this
    MT_SP_RESPONSE_TARGET     Element     DT_SP_RESPONSE_TARGET               null               
    TESTSP     Element          1               
    row     Element          1..unbounded               
    action     Attribute     xsd:string     required                    
    table     Element     xsd:string     1               
    access     Element          0..unbounded                    
    Result     Element     xsd:integer     0..1          
    Please Suggest.
    Regards
    Laxmi Bhushan

    Its All Done the same way.
    XSMB_MONI and CC Monitoring have not any problem , Message Is sucessfully DLVD.
    But in SXMB_MONI response  struecture is like this
    <?xml version="1.0" encoding="UTF-8" ?>
    - <ns0:MT_SP_RESPONSE_TARGET xmlns:ns0="http://ns_jdbctest">
    - <TESTSP>
    - <row action="INSERT">
      <table>TESTSP</table>
      </row>
      </TESTSP>
      </ns0:MT_SP_RESPONSE_TARGET>
    And INBOUND Payload for source response is like this
    <?xml version="1.0" encoding="utf-8" ?>
    - <ns0:MT_SP_JDBC_response xmlns:ns0="http://ns_jdbctest">
    - <GetNextSiteNumberTEST_response>
      <Result>113</Result>
      </GetNextSiteNumberTEST_response>
      </ns0:MT_SP_JDBC_response>
    Result key is not in the access element.
    Pls correct me.
    Regards
    Laxmi Bhushan

  • JDBC Receiver

    Hi All,
    I have created a JDBC receiver structure in the following format:
    DT_Test
            Table
                   MATERIAL
                             action  (attribute)
                             access
                                     <Field1>
                                     <Field2>
    and  i have created action as an attribute and i have mapped the field Table with <tablename> and action with UPDATE_INSERT, rest of the table field are mapped with corresponding field mapping. But i m getting the following error, when it hits the DB. Let me know if I need to make any changes to the structure
    Message processing failed. Cause: com.sap.engine.interfaces.messaging.api.exception.MessagingException: Error processing request in sax parser: Error when executing statement for table/stored proc. 'MATERIAL' (structure 'Table'): java.sql.SQLException: FATAL ERROR document format: structure 'Table', no key element found
    Error processing request in sax parser: Error when executing statement for table/stored proc. 'MATERIAL' (structure 'Table'): java.sql.SQLException: FATAL ERROR document format: structure 'Table', no key element found
    Regards,
    Nithiyanandam

    Hi
    Please take a look here.
    http://help.sap.com/saphelp_nwpi71/helpdata/en/43/9519abb1146353e10000000a11466f/frameset.htm
    Something is wrong with your message that is send to JDBC Adapter.
    BR
    Maciej

  • Not able to insert the data in JDBC receiver

    hi Team,
    Please help me i am working on IDOC - JDBC interface i am not able to insert data into the table.
    error says that table doesn't exists, but if i check in the database the table exists..
    below is the error getting triggered.
    could not execute statement for table/stored proc."A_PORDER_REG"(structure " STATEMENT") due to
    java.sql.SQLException: ORA - 00942 table does not exist
    Thanks & Regards,
    Vishnu vardhan.

    Might be u have given table name is diffarent, table name must be match in table field of jdbc receiver structure and table name of data base tables.both places u must give the same table names . this is one reason another one u might be given jdbc structure is wrong. u must specify jdbc structure like this.
       STATEMENT
       TEST
        action(attribute) (action u specify as INSERT)
       TABLE( here  u give the table name )
    access ( below u write the fields)
    and one more is u check the receiver communication channel in that u check properly u have given jdbc drivers, connections , user name and pass word.
    check all those things definatly u wil find the error.

  • Problem between SOAP Sender and JDBC Receiver

    Hi,
    I have a asynchronous scenary between SOAP Sender and JDBC Receiver.
    The idea is sending an ID for updating one register.
    Table structure is:
    TABLE AS_PERSONA
        (P_RUT                         VARCHAR2(10) NOT NULL,
        P_NOMBRE                       VARCHAR2(50),
        P_APELLIDO                     VARCHAR2(50))
    The ID is the P_RUT field.
    The structure of message that I send by SOAP, is the following:
    <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
         <SOAP-ENV:Body>
              <m:MT_CONS_SOAP xmlns:m="urn:prueba:voliva">
                   <CONSULTA>
                        <P_RUT>15445</P_RUT>
                   </CONSULTA>
              </m:MT_CONS_SOAP>
         </SOAP-ENV:Body>
    </SOAP-ENV:Envelope>
    The JDBC receiver structure is:
    <?xml version="1.0" encoding="UTF-8"?>
    <ns0:MT_CONS_PERSONA xmlns:ns0="urn:prueba:voliva">
         <Statement>
              <AS_PERSONA action="UPDATE">
                   <table>AS_PERSONA</table>
                   <access>
                        <P_NOMBRE>DELETE_BY_XI</P_NOMBRE>
                        <P_APELLIDO>DELETE_BY_XI</P_APELLIDO>
                   </access>
                   <key>
                        <P_RUT>15445</P_RUT>
                   </key>
              </AS_PERSONA>
         </Statement>
    </ns0:MT_CONS_PERSONA>
    When I do a call to SOAP by XMLspy, it returns a message without data, that means succesfull reply.
    I see message monitor and see the succesfull flag. But in the database it doesn't update the register.
    This scenario was proved using the File Sender and same JDBC Receiver, then result was succesfull.
    I proved SOAP Sender with a File Receiver, storing information from SOAP sender in an archive, and works well.
    Then I imagine that exist some problem between SOAP and JDBC. what could be happening ?
    Thanks.

    Hi,
    Looks like the problem is with the JDBC receiver...try updating the value in the table by using a File-JDBC scenario..does it work..check the adapter monitor in RWB..
    Regards,
    Sushumna

  • JDBC Receiver doesn't work (and doesn't show any error msg)

    Hi all,
    I'm now trying to test a file to JDBC scenario. After many msgs sent, I'm checking at sxmb_moni and the file sender is ok, the msg mapping is ok, and the JDBC receiver is ok - the status is "processed successfully".
    But... in my database (Oracle9i), the row I tried to insert is not there. No error message and no data inserted in database... I read many posts here about the constring, and I have already tried with all constrings suggested... Can anyone suggest me what can I do to try to discover what is wrong?
    thanks!
    roberti

    Thanks Krishna!
    I found it at RWB (after mutch work!
    The path is not exactly the same as yours, I think because de WAS version (ours is 7.00), but i find the problem in the audit log.
    thanks again for your help!
    cheers!
    roberti

  • Idoc to jdbc mapping duplicate source node to target structure

    Dear all,
    I am working on PI 7.1
    My sceniro
    IDOC to JDBC  [sap to mssql ]  where the target is a table structure shown below: I execute a stored procedure to insert the below message type into sql table.
    <ns0:MT_SP_LFBK xmlns:ns0="http://test.com">
    - <Statement_Name>
    - <storedProcedureName action="EXECUTE">
      <table>spr_test</table>
      <BANKS type="Char">BOA</BANKS>
      <BANKL type="char">122207</BANKL>
      <BANKN type="char">4555--0</BANKN>
      <LIFNR type="char">1100000218</LIFNR>
      <KOINH type="char">varchar</KOINH>
      <BKONT type="char">01</BKONT>
      <BANKA type="varchar">S.A.</BANKA>
      </storedProcedureName>
      </Statement_Name>
      </ns0:MT_SP_LFBK>
    The mapping is between source CREMAS02 and the above target structure. Everything works fine.
    The problem is when the  vendor has more than one bank account number the IDOC CREMAS02 replicates the below segment E1LFBKM for each BANK account information. Since target and source are mapped one to one how can i map the second bank account information to the same target structure or genereate a new target Message type for the second bank account  information and send it to sql ?
    <E1LFBKM SEGMENT="1">
      <MSGFN>005</MSGFN>
      <LIFNR>110000021</LIFNR>
      <BANKS>BOA</BANKS>
      <BANKL>122207</BANKL>
      <BANKN>4555-0</BANKN>
      <BKONT>02</BKONT>
      <BANKA>S.A.</BANKA>
      <BNKLZ>3000000</BNKLZ>
      </E1LFBKM>
    Thank you ,
    Teresa

    Hi Teresa,
    which segment have you mapped with <storedProcedureName action="EXECUTE"> ?
    Because according to me , if you send <E1LFBKM> to <storedProcedureName action="EXECUTE">
    , you will be able to use your stored procedure several times, in fact each times that you have a <E1LFBKM>.
    Reminds: inside <Statement_Name> you can do several SQL actions like execute one or several stored procedures (could be different).
    Of course, after that your table should accept to have several bank account for a same customer.
    So to have something like that:
    <Statement_Name>
    <storedProcedureName action="EXECUTE">
    </storedProcedureName>
    <storedProcedureName action="EXECUTE">
    </storedProcedureName>
    <storedProcedureName action="EXECUTE">
    </storedProcedureName>
    </Statement_Name>
    regards
    mickael

  • Question about Sender and Receiver Structure for JDBC

    Dear All,
    I want to know why there is a fixed format for sender and receiver structure for JDBC. why cant we use the structure like what we want? explain me in detail.
    Thanks

    Good Question:
    We have to create our data structure based on the existing database table structure. While reading or writing , JDBC adapter convert our data type structure in to SQL Query Statements that matches Table structure.

  • More than one sender structure assigned to receiver structure R_*

    We are doing a time based reduction using TDMS 3.0.
    At the phase called " assign domain rules", we get warning (not error):
    "more than one sender structure assigned to receiver structure R_*".
    I have searched SND and SMP, google as well but no thread is found for this warning.
    How to fix this problem?
    Thanks!

    Hi David,
    They basically are referring to some of TDMS tables where the data type of the header table is different when compared to the underlying child table. The header table refers to TDMS own table for which the data element has been deliberately changed to hold data from other tables as well. This warning will not have any effect. You can ignore them.
    Regards
    Niraj

  • Message Mapping from flat XML to a Record structure

    Hi All,
    We have a scenario in which the input message is a PDF document. we are following below the blog to convert PDF to XML format which uses <b>PDF box utitlity</b>.
    /people/sap.user72/blog/2005/07/31/xi-read-data-from-pdf-file-in-sender-adapter
    We are able to convert the PDF doc to a flat XML file.
    Now we have the following queries...
    what are the different ways to map the flat XML to our record structure?
    Do we have any utitlity in PDF box to do that?
    Regards,
    Rakesh.

    Hi Rakesh,
    You have Graphical mapping, Java mapping, ABAP mapping and XSLT mapping. The choice depends on the scenario and what target result you require.
    <b>Message mapping using graphical mapping editor:</b>
    http://help.sap.com/saphelp_nw04/helpdata/en/49/1ebc6111ea2f45a9946c702b685299/frameset.htm
    <b>XSLT mapping:</b>
    http://help.sap.com/saphelp_nw04/helpdata/en/73/f61eea1741453eb8f794e150067930/frameset.htm
    <b>Java Mapping:</b>
    http://help.sap.com/saphelp_nw04/helpdata/en/e2/e13fcd80fe47768df001a558ed10b6/frameset.htm
    <b>ABAP mapping:</b>
    http://help.sap.com/saphelp_nw04/helpdata/en/ba/e18b1a0fc14f1faf884ae50cece51b/frameset.htm
    As said earlier, graphical mapping is the simplest and quite a few built in options are available with it, explore it and see which is suitable for your scenario.
    Regards,
    Chandra

  • Graphical Message mapping complexity in SAP PI 7.31 single stack

    Hi All,
    I have a source structure 1..unbounded
    <Material>
    <row>    1....unbounded
    <Mat_ID>123<Mat_ID>
    <Desc><text</Desc>
    <uom>EA</uom>
    <plant>AB</plant>
    <org>XY</org>
    </row>
    <row>
    <Mat_ID>123<Mat_ID>
    <Desc><text</Desc>
    <uom>ST</uom>
    <plant>CD</plant>
    <org>FG</org>
    </row>
    <row>
    <Mat_ID>123<Mat_ID>
    <Desc><text</Desc>
    <uom>XY</uom>
    <plant>DE</plant>
    <org>ZX</org>
    </row>
    </Material>
    Target Structure
    <Material>
    <row>  --->  1....unbounded
    <Mat_ID>123<Mat_ID>
    <Desc><text</Desc>
    <uomdata> ---> 0 ----unbounded
    <uom>EA</uom>
    <uomdata>
    <uomdata>
    <uom>ST</uom>
    </uomdata>
    <uomdata>
    <uom>XY</uom>
    </uomdata>
    <plantdata> ----> 0 ----unbounded
    <plant>AB</plant>
    </plantdata>
    <plantdata>
    <plant>CD</plant>
    </plantdata>
    <plant>DE</plant>
    </plantdata>
    <orgdata> ---->  0 ----unbounded
    <org>XY</org>
    </orgdata>
    <orgdata>
    <org>FG</org>
    </orgdata>
    <orgdata>
    <org>ZX</org>
    </orgdata>
    </row>
    </Material>
    How do I do message mapping (preferably graphical mapping) to achieve the target structure. The values of each elements are manipulated for easiness. There are more than one fields under each node in real scenario. Please let me know
    thx
    mike

    Beautiful..Thx...
    I will try out and let you know Amit
    One more request.
    I have to do this mapping first and use it in receiver interfaces of ICO using an operation mapping and inbound interface as usual.
    Now, I have to add 2 more inbound interfaces in the receiver interfaces and maintain order at Runtime to execute the above mapping first always and then execute the 2 additional inbound interfaces based on some condition.
    The condition has to be something like this (source structure <flag> field value dependent condition)
    /Material/row/flag  = 'N'       call the second inbound interface to execute a operation mapping
    /Material/row/flag  = 'N'       call the third interface to execute another operation mapping
    Now the complexity here is:
    If the source structure is like this below
    <Material>
    <row>    1....unbounded
    <Mat_ID>123<Mat_ID>
    <Desc><text</Desc>
    <uom>EA</uom>
    <plant>AB</plant>
    <org>XY</org>
    <flag>N</flag>  -- this is the flag field for the first material
    </row>
    <row>
    <Mat_ID>123<Mat_ID>
    <Desc><text</Desc>
    <flag>N</flag> -- this is the flag field for the first material again
    <uom>ST</uom>
    <plant>CD</plant>
    <org>FG</org>
    </row>
    <row>
    <Mat_ID>345<Mat_ID>
    <Desc><text</Desc>
    <flag>N</flag> --this is the flag field for the second material
    <uom>XY</uom>
    <plant>DE</plant>
    <org>ZX</org>
    </row>
    and so on
    </Material>
    The target structure for the additional 2 inbound interface are shown below
    2nd inbound interface target structure
    <Material>
    <Mat_ID>123</Mat_ID> 
    <flag>N</flag>  - constant value 'N'
    <Mat_ID>345</Mat_ID>
    <flag>N</flag> - constant value 'N'
    </Material>
    3rd inbound interface target structure
    <Material>
    <Mat_ID>123</Mat_ID> 
    <flag>Y</flag>  - constant value 'Y'
    <Mat_ID>345</Mat_ID>
    <flag>Y</flag>  - constant value 'Y'
    </Material>
    first question: how do I write a condition for checking the source structure <flag> field value for every unique material ?
    second question: what would be the message mapping and operation mapping for the 2nd and 3rd inbound interfaces?
    thx
    mike

  • JDBC Receiver error

    Hi All,
    I have a scenario where XI has to pick the file from ftp and update the stagging databse through JDBC.
    XI is picking the file, but not getting failed while sending the data to JDBC.
    Unable to execute statement for table or stored procedure. 'MSDYNAMICSEMPLINFO' (Structure 'STATEMENT') due to com.microsoft.sqlserver.jdbc.SQLServerException: Invalid object name 'MSDYNAMICSEMPLINFO'.
    JDBC message processing failed; reason Error processing request in sax parser: Error when executing statement for table/stored proc. 'MSDYNAMICSEMPLINFO' (structure 'STATEMENT'): com.microsoft.sqlserver.jdbc.SQLServerException: Invalid object name 'MSDYNAMICSEMPLINFO'
    Exception caught by adapter framework: null
    MP: Exception caught with cause com.sap.aii.af.ra.ms.api.RecoverableException: Error processing request in sax parser: Error when executing statement for table/stored proc. 'MSDYNAMICSEMPLINFO' (structure 'STATEMENT'): com.microsoft.sqlserver.jdbc.SQLServerException: Invalid object name 'MSDYNAMICSEMPLINFO'
    Delivery of the message to the application using connection JDBC_http://sap.com/xi/XI/System failed, due to: com.sap.aii.af.ra.ms.api.RecoverableException: Error processing request in sax parser: Error when executing statement for table/stored proc. 'MSDYNAMICSEMPLINFO' (structure 'STATEMENT'): com.microsoft.sqlserver.jdbc.SQLServerException: Invalid object name 'MSDYNAMICSEMPLINFO'
    But the client say that the table is created at their end.
    Please help
    Edited by: Lavanya Ravi on May 17, 2011 8:01 AM

    HI Lavanya,
    1) StatementName should be 0..Unbounded and need to be mapped with the source which is repeating which is Record.
    2) No need to mapp TableName node.
    3) Action will be attribute and needs to be mapped to constant with eiter Insert,Update and UPDATE_INSERT as well.
    4) Table will be mapped to the constant and needs to provide the table name in the database.
    5) No need to map with access as you have mapped the Record to Statement Name. When ever multiple records exists from source the statement will be excuted for each and every record.
    Try to use this mapping and update the status.
    Finally if you see the payload in the receiver JDBC channel your structure will be like below. If your payload in the receiver JDBC showing the structure like below then your problem will be solved.
    <MessageType Name>
      <StatementName>
    <dbTableName action=u201DINSERTu201D | u201CINSERTu201D>
        <table>MSDYNAMICSEMPLINFO</table>
    <access>
    <col1>val1</col1>
    <col2>val2new</col2>
    </access>
    Thanks,
    Raju

  • JDBC Receiver Select issue

    Hi,
    in the scnario soap to jdbc i am selecting records from oracle database from the soap request and response as to be sent back to soap.
    here i am getting this error as
    com.sap.engine.interfaces.messaging.api.exception.MessagingException: Error processing request in sax parser: Error when executing statement for table/stored proc. 'table' (structure 'Statement'): java.sql.SQLException: FATAL ERROR document format: structure 'Statement', key element 'DATA_COMPLETE' contains no values
    even i have checked the blog /people/bhavesh.kantilal/blog/2006/07/03/jdbc-receiver-adapter--synchronous-select-150-step-by-step
    kindly suggest
    Regards
    Vijay

    for this i noticed that there are no columns in the statement...
    now to mapp this column names in request as i get only one field as input so that i can only htat filed ..
    Map that field itself to the target structure.....the values in the column wont be populated automatically.
    If the one source field contains concatenated value then using substring populate target columns accordingly.
    Regards,
    Abhishek.

  • JDBC Receiver to ORACLE Stored Procedure

    Hi Experts
    I browed the forum and could not find a strait answer to my problem. Hence I am posting this thread.
    I have a sync call using JDBC Receiver to ORACLE stored procedure.
    The definition of the procedure is as follows:
    CREATE OR REPLACE procedure TW.XI_TEST
        (p_edi_extract_id varchar2, p_res out edi_extract%rowtype) is
    t edi_extract%rowtype;
    begin
      select *
      into p_res
      from edi_extract e
      where e.edi_extract_id = to_number(p_edi_extract_id);
    exception
       when no_data_found then
            p_res := t;
    end XI_TEST;
    The request XML is as follows:
    <?xml version="1.0" encoding="UTF-8" ?>
    <ns0:MT_EDIExtractSelectionRequest xmlns:ns0="urn:zim.com:tests">
    <STATEMENT>
    <PROC_NAME ACTION="EXECUTE">
      <TABLE>TW.XI_TEST</TABLE>
      <EDI_EXTRACT_ID isInput="true" type="STRING">4223142</EDI_EXTRACT_ID>
      </PROC_NAME>
      </STATEMENT>
      </ns0:MT_EDIExtractSelectionRequest>
    The error I am getting is as follows:
    com.sap.engine.interfaces.messaging.api.exception.MessagingException:
    Error processing request in sax parser:
    Error when executing statement for table/stored proc. 'TW.XI_TEST' (structure 'STATEMENT'):
    java.sql.SQLException: ORA-06550: line 1, column 7: PLS-00306:
    wrong number or types of arguments in call to 'XI_TEST' ORA-06550: line 1, column 7:
    PL/SQL: Statement ignored
    Any help would be appreciated.
    Regards
    Effi.

    >
    Rajesh wrote:
    > > Hi Rajesh
    > >
    > > The structure of my data type for the request query is as follows:
    > >
    > >
    DT_EDIExtractSelectionRequest (Complex Type)
    > >    STATEMENT (Element)
    > >       PROC_NAME (Element)
    > >          ACTION (Attribute) _mapped to_: EXECUTE
    > >          TABLE (Element) _mapped to_: TW.XI_TEST
    > >          EDI_EXTRACT_ID (Element) _mapped to_: 123456
    > >             isInput (Attribute) _mapped to_: true
    > >             type (Attribute) _mapped to_: STRING
    > >          EDI_EXTRACT (Element)
    > >             isOutput (Attribute) _mapped to_: true
    > >             type (Attribute) _mapped to_: CURSOR
    > >
    > >
    >
    >
    > Change the DT type to like below
    >
    >            STATEMENT (Element)
    >                   ACTION (Attribute) _mapped to_: EXECUTE
    >                   TABLE (Element) _mapped to_: TW.XI_TEST
    >                   EDI_EXTRACT_ID (Element) _mapped to_: 123456
    >                        isInput (Attribute) _mapped to_: true
    >                        type (Attribute) _mapped to_: STRING
    >                   EDI_ETRACT (Element)
    >                      isOutput (Attribute) _mapped to_: true
    >                     type (Attribute) _mapped to_: CURSOR

    > and try ...actually i dont remeber the exact strucuture..but i tolo faced the same pain of this
    >
    > HTH
    > Rajesh
    Hi Rajesh
    Changing the DT per your suggestion result in the following error:
    <SAP:AdditionalText>com.sap.engine.interfaces.messaging.api.exception.MessagingException: Error processing request in sax parser:
    No 'action' attribute found in XML document
    (attribute "action" missing or wrong XML structure)</SAP:AdditionalText>
    Omitting the PROC_NAME element from the DT is not correct.
    Also, I would also like to clarify that the variables of the DT I am using are:
    EDI_EXTRACT_ID is defined as string
    EDI_EXTRACT is defined as string
    Because the variable p_res is mapped to nothing in the request payload it does not show.
    I read in one of the posts that this is correct and the variable is used due to the fact the isOutput attribute is true.
    Regards,
    Effi.
    Edited by: Effi Olivkovitch on Dec 6, 2009 9:11 AM
    Edited by: Effi Olivkovitch on Dec 6, 2009 9:18 AM

  • Oracle JDBC Receiver

    Hi XI Guru,
    I have problem in JDBC Receiver. My error is
    " Message processing failed. Cause: com.sap.aii.af.ra.ms.api.RecoverableException: Error processing request in sax parser: Error when executing statement for table/stored proc. 'ps_gl_active_acct_' (structure 'Statement'): java.sql.SQLException: ORA-01843: not a valid month  "
    Currently I am using TransformDate function in graphical mapping.
    Source Format : yyyy-mm-dd    Type xsd:date
    Target format : dd/mm/yyyy.      Type xsd:date
                          I have tried mm/dd/yyyy
    Please give me some advise and tips to solve my problem.
    Regards,

    use this function
    TO_DATE('<originalDate>','YYYY/MM/DD') :  You have to form this string using the concate function in the graphical mapping.
    Use the above function in graphical mapping to map the exact date in ORACLE.
    You will have to use 'hasquot' attribute and set it to "NO" of the Date field. It will be solved then..
    follow this link: /people/alessandro.berta/blog/2005/10/04/datetime-datatypes-and-oracle-database
    Regards.
    Jeet
    Edited by: Jeet Jeswani on Feb 25, 2008 12:44 PM

Maybe you are looking for