cancel
Showing results for 
Search instead for 
Did you mean: 

RFC >> XI >> JDBC to external database.... Get data in multiple rows

niranjan_yerraguntla
Participant
0 Kudos

Hi,

We have been really struggling with this scenario. We have created a RFC that has 1 Import parameter (Order_ID) and table parameter (3 Columns: Order_ID, Partner_type, Partner_no).

When we call this RFC in SAP, it should make a connection to external database via JDBC and get multiple row data for every Order_ID. We are not using Oracle Stored Procedure, instead we are using simple Select statement. Did all the mapping and configured correctly. However, we are getting short-dump when we execute RFC. When we checked in XI, it says " Check xml instance is valid for source xsd and target-field mapping fulfills requirements of target xsd at "

Has anyone tried getting multiple row information from external database(Oracle) using Select statement in XI ? IF so, can you pl let us know if we need to something different in Mapping ?

Niranjan

Accepted Solutions (0)

Answers (5)

Answers (5)

niranjan_yerraguntla
Participant
0 Kudos

ok,

Thanks to all for your input. The request is now working with RFC. I had to make Statement <i>1..Unbounded</i> in request message. It was just 1.

I am getting back multi row information from Oracle database but there is some problem in mapping to RFC back. So, I am not getting back the result in table in RFC. I can see multi row information in SXMB_MONI. I have assigned all the fields of Response Meesage type to fields in table of RFC. It even says 0..unbounded at row level. I have also mapped upper 2 items; ZXI_GET_LIST_QUOTES_response TO MT_JDBC_SELECT_JDBC_RES <i>AND</i> ZQUOTE TO Statement_Response.

Anything else missing above ?

Niranjan

niranjan_yerraguntla
Participant
0 Kudos

Hi udo,

I was able to upload XML into 'Test' tab of Message mapping of XI and I see RED dot now. Does it indicate that mapping is wrong ? I have just assigned Order_ID (Import parameter of RFC to Order_ID of Data type DT_ACCESS that has Order_ID as first field.

When I check by selecting 'All', I am getting message " Cannot produce target element /ns1:MT_JDBC_SELECT_JDBC_REQ/Statement/TableName/KEY/ORDER_ID. Check xml instance is valid for source xsd and target-field mapping fulfills requirements of target xsd Cannot produce target element /ns1:MT_JDBC_SELECT_JDBC_REQ/Statement/TableName/KEY/QUOTE_ID. Check xml instance is valid for source xsd and target-field mapping fulfills requirements of target xsd.

Niranjan

bhavesh_kantilal
Active Contributor
0 Kudos

> I was able to upload XML into 'Test' tab of Message

> mapping of XI and I see RED dot now. Does it indicate

> that mapping is wrong ? I have just assigned Order_ID

> (Import parameter of RFC to Order_ID of Data type

> DT_ACCESS that has Order_ID as first field.

Which mapping are you testing? Request or response? When you load the XML from MONI and you see the red symbol in IR, this implies that the XML does not match with the actual datatype / messagetype created.

Regards

Bhavesh

udo_martens
Active Contributor
0 Kudos

Hi Niranjan,

>>> I see RED dot now

I ve given you the answer before...

Regards,

Udo

VijayKonam
Active Contributor
0 Kudos

> and target-field mapping fulfills requirements of

> target xsd Cannot produce target element

> /ns1:MT_JDBC_SELECT_JDBC_REQ/Statement/TableName/KEY/Q

> UOTE_ID. Check xml instance is valid for source xsd

Hi,

Seems like, the data type that you have created and the one that is being sent to Xi are not matching I believe. You must have alter either of the one, so that they are in sync with each other. Then check for any mapping error (the red dots).

VJ

niranjan_yerraguntla
Participant
0 Kudos

Hi Uno,

Thanks for the response.

1. Can you throw some more light on how we can avoid short-dump using exception ? Any sample code will help us.

2. Also, I am not clear how to upload message from SXMB_MONI into Message mapping of XI respository and test ? Again, if you can provide any steps, I would appreciate.

Niranjan

bhavesh_kantilal
Active Contributor
0 Kudos

Niranjan,

Check this blog of mine to see how the datatype for Synchronous Select should be constructed,

https://weblogs.sdn.sap.com/pub/wlg/3928. [original link is broken] [original link is broken] [original link is broken] [original link is broken]

If this looks good, a few checks

1. Check the request inbound payload , i.e the RFC request in MONI. Is this as expected?

2. Check the output of the request mapping and check if this is as expected.

3. Check the response from JDBC, is this as per the datatype defined.

4. Check the mapping from JDBC response to RFC response.

To me this looks like an issue with the JDBC response structure.

Meanwhile to understand how to test mapping, check blog of michal,

/people/michal.krawczyk2/blog/2005/09/16/xi-how-to-test-your-mapping-in-real-life-scenarios

Regards

Bhavesh

udo_martens
Active Contributor
0 Kudos

Hi Niranjan,

Can you throw some more light on how we can avoid short-dump using exception ? Any sample code will help us


DATA: nachricht(80)  TYPE  c.

  CALL FUNCTION MYFUNCTION
    DESTINATION MYDESTINATION
    EXPORTING
..
    TABLES
..
    EXCEPTIONS
      system_failure        = 1  MESSAGE nachricht
      communication_failure = 2  MESSAGE nachricht.

  IF sy-subrc <> 0.
    WRITE:/ nachricht,/.
  ENDIF.

<a href="/people/jin.shin/blog/2007/05/21/handling-web-service-soap-fault-responses-in-sap-netweaver-xi Web Service SOAP Fault Responses in SAP NetWeaver XI</a>

>>>Also, I am not clear how to upload message from SXMB_MONI into Message mapping of XI respository and test ?

Right click on payload, view source, save as or download at navigation frame. At Message Mapping Modus Test and the green upload Button.

Regards,

Udo

udo_martens
Active Contributor
0 Kudos

Hi Niranjan,

>>>we are getting short-dump when we execute RFC

You can avoid that by defining an exception

>>>Check xml instance is valid for source xsd and target-field mapping fulfills requirements of target xsd

Seems to be a mapping problem, assumedly you are using a Message Mapping. Download the incoming message from SXMB_MONI and test the mapping inside the Integration Builder Repository. Switch the trace to "all" for having good error description. If you load the downloaded file into test modus and some fields are red (on the left side), you have to reload the RFC (coz changed) and to restart the adaper (just change the description field of Com Channel and activate). If the mappings fails, look which requirements of target couldnt be satisfied.

Regards,

Udo

Former Member
0 Kudos

Hi,

Go through this

/people/yining.mao/blog/2006/09/13/tips-and-tutorial-for-sender-jdbc-adapter

/people/sap.user72/blog/2005/06/01/file-to-jdbc-adapter-using-sap-xi-30

Regards

Hemant

Award points if find helpful