cancel
Showing results for 
Search instead for 
Did you mean: 

Nested Structures in adaptive RFC?

Former Member
0 Kudos

Hello,

I have a question. Are nested Structures as import or export parameters possible for adaptive RFC?

I have one big structure that contains 2 elements of similar structure and some other fields. So I want to build something like:

BigStructure as defined in BAPI:

- Field0

- SubStructure1 TYPE Substructure

--- Subfield1

--- Subfield2

- SubStructure2 TYPE Substructure

--- Subfield1

--- Subfield2

- Field1

- Field2

I know that this is <u>not</u> allowed with Table Parameters. The backend system is 4.6C.

Best regards

Frank

Accepted Solutions (1)

Accepted Solutions (1)

Former Member
0 Kudos

Frank,

Yes, such structures are possible.

Btw, the statement should be "this is not recommended" rather then "this is not allowed". Actually, you may nest tables and structures as you wish -- Adaptive RFC model generator generates valid code.

Valery Silaev

EPAM Systems

http://www.netweaverteam.com/

Former Member
0 Kudos

The Problem is when I do that and call the Model I get an Error:

Expecting a tag to begin with < instead of 0, in "0183970400", error key: JCO_ERROR_XML_PARSER

The number 01839704 without the two "00" at the end is my input Parameter (an ID). The "00" is the first entry of a structure beginning here.

Field ID Value 01839704

--StructureField Value 0001...

This happens if the structure is used as an <u>export</u> Parameter.

If I use the same Structure as Import Parameter for another BAPI I don't get an error.

So if that should be allowed there is something wron my code? I tried to reimport the Model and also restarted the J2EE Server.

Frank

Former Member
0 Kudos

Frank,

Could you post complete stack trace?

Seems like that this is error in JCo core classes, but not in RFC model.

VS

Former Member
0 Kudos

Here is the Stack trace I get:

[code]com.sap.tc.webdynpro.modelimpl.dynamicrfc.WDDynamicRFCExecuteException: Expecting a tag to begin with < instead of 0, in "00-XXX", error key: JCO_ERROR_XML_PARSER

at com.sap.tc.webdynpro.modelimpl.dynamicrfc.DynamicRFCModelClassExecutable.execute(DynamicRFCModelClassExecutable.java:101)

at de.mgi.appraisal.application.Appraisal.getAppraisal(Appraisal.java:222)

at de.mgi.appraisal.application.wdp.InternalAppraisal.getAppraisal(InternalAppraisal.java:696)

at de.mgi.appraisal.application.AppraisalStep1View.wdDoInit(AppraisalStep1View.java:102)

at de.mgi.appraisal.application.wdp.InternalAppraisalStep1View.wdDoInit(InternalAppraisalStep1View.java:151)

at com.sap.tc.webdynpro.progmodel.generation.DelegatingView.doInit(DelegatingView.java:61)

at com.sap.tc.webdynpro.progmodel.controller.Controller.initController(Controller.java:215)

at com.sap.tc.webdynpro.progmodel.view.View.initController(View.java:274)

at com.sap.tc.webdynpro.progmodel.controller.Controller.init(Controller.java:200)

at com.sap.tc.webdynpro.progmodel.view.ViewManager.getView(ViewManager.java:540)

at com.sap.tc.webdynpro.progmodel.view.ViewManager.bind(ViewManager.java:398)

at com.sap.tc.webdynpro.progmodel.view.ViewManager.getView(ViewManager.java:555)

at com.sap.tc.webdynpro.progmodel.view.ViewManager.bindRoot(ViewManager.java:422)

at com.sap.tc.webdynpro.progmodel.view.ViewManager.init(ViewManager.java:130)

at com.sap.tc.webdynpro.progmodel.view.InterfaceView.initController(InterfaceView.java:43)

at com.sap.tc.webdynpro.progmodel.controller.Controller.init(Controller.java:200)

at com.sap.tc.webdynpro.progmodel.view.ViewManager.getView(ViewManager.java:540)

at com.sap.tc.webdynpro.progmodel.view.ViewManager.bindRoot(ViewManager.java:422)

at com.sap.tc.webdynpro.progmodel.view.ViewManager.makeVisible(ViewManager.java:624)

at com.sap.tc.webdynpro.progmodel.view.ViewManager.performNavigation(ViewManager.java:263)

at com.sap.tc.webdynpro.clientserver.cal.ClientApplication.navigate(ClientApplication.java:775)

at com.sap.tc.webdynpro.clientserver.task.WebDynproMainTask.handleActionEvent(WebDynproMainTask.java:359)

at com.sap.tc.webdynpro.clientserver.task.WebDynproMainTask.execute(WebDynproMainTask.java:649)

at com.sap.tc.webdynpro.clientserver.cal.AbstractClient.executeTasks(AbstractClient.java:59)

at com.sap.tc.webdynpro.clientserver.cal.ClientManager.doProcessing(ClientManager.java:252)

at com.sap.tc.webdynpro.serverimpl.defaultimpl.DispatcherServlet.doWebDynproProcessing(DispatcherServlet.java:154)

at com.sap.tc.webdynpro.serverimpl.defaultimpl.DispatcherServlet.doContent(DispatcherServlet.java:116)

at com.sap.tc.webdynpro.serverimpl.defaultimpl.DispatcherServlet.doPost(DispatcherServlet.java:55)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)

at com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.runServlet(HttpHandlerImpl.java:392)

at com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.handleRequest(HttpHandlerImpl.java:266)

at com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet(RequestAnalizer.java:345)

at com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet(RequestAnalizer.java:323)

at com.sap.engine.services.httpserver.server.RequestAnalizer.invokeWebContainer(RequestAnalizer.java:865)

at com.sap.engine.services.httpserver.server.RequestAnalizer.handle(RequestAnalizer.java:240)

at com.sap.engine.services.httpserver.server.Client.handle(Client.java:92)

at com.sap.engine.services.httpserver.server.Processor.request(Processor.java:148)

at com.sap.engine.core.service630.context.cluster.session.ApplicationSessionMessageListener.process(ApplicationSessionMessageListener.java:37)

at com.sap.engine.core.cluster.impl6.session.UnorderedChannel$MessageRunner.run(UnorderedChannel.java:71)

at com.sap.engine.core.thread.impl3.ActionObject.run(ActionObject.java:37)

at java.security.AccessController.doPrivileged(Native Method)

at com.sap.engine.core.thread.impl3.SingleThread.execute(SingleThread.java:95)

at com.sap.engine.core.thread.impl3.SingleThread.run(SingleThread.java:159)

Caused by: com.sap.aii.proxy.framework.core.BaseProxyException: Expecting a tag to begin with '<' instead of '0', in "00-XXX", error key: JCO_ERROR_XML_PARSER

at com.sap.aii.proxy.framework.core.AbstractProxy.send$(AbstractProxy.java:150)

at de.mgi.appraisal.model.appraisal.Appraisal.zct_Appraisal_Get(Appraisal.java:213)

at de.mgi.appraisal.model.appraisal.Zct_Appraisal_Get_Input.doExecute(Zct_Appraisal_Get_Input.java:137)

at com.sap.tc.webdynpro.modelimpl.dynamicrfc.DynamicRFCModelClassExecutable.execute(DynamicRFCModelClassExecutable.java:92)

... 43 more

[/code]

For explanation the Data coming from the R/3 system (4.6C) starts with "00-XXX". So there is data send from the R/3 system because it is the first call and this was <u>not</u> in the input of the RFC call.

I can't see anything that would help me in this... Hopefully you can see more

Thanx for your help anyway!

Frank

Former Member
0 Kudos

Hmmm...

I can't see the exact reason either

But, I can guess that you are using non-fixed length data here. What is a type of related field? If it is not like CHAR(<length>) could you alter the type?

VS

Former Member
0 Kudos

Hello,

all elements in the structures are of fixed length either CHAR or NUMC or Dates. The first field which gives the error is for example char(12).

Frank

Former Member
0 Kudos

I have requested to have no more nested structures and now it works. Even it is maybe not recommended, that you use nested structures, this seems to be ab bug in the SAP Enterprise Connector.

Frank

Answers (0)