Need help with mapping from an SAP IDOC

Hopefully someone here can help because this is driving me insane. I have searched every way I know how and read several dozen posts but did not find the answer to my problem. It seems obvious and easy but somehow I am missing it.

I am running SAP Business Connector Developer 4.7.

I send an IDOC from the SAP system to BCD/WebMethods. No problem, I used transformFlatToHierarchy and it goes into the boundNode. In that step I map it to my IDOC structure created from the DTD generated by SAP. Once again, no problem. The next step is a Map step. I have been through several attempts but I am currently using a transformer(appendToRecordList) to append the data to a reference record list that has the same structure as the IDOC. That works. However, in the same step I try to map a text string contained inside the record to a stand alone text string. It is like it never happens. In looking at my pipeline the variable does not even show up. I am OK with this assuming I can later map it using the RecordList I just created. The next step is to Loop over the record list and try to map my needed values. I have tried everything I can think of and all I get is null values.

What am I doing wrong? It seems like this should be the easy part. If I hard code values I get want I want so I know that the outbound portion works. I am seeing what I want to see from the SAP side so I know my outbound IDOC development works. The mapping between is the only place I cannot figure out. I’ll gladly write java code to put the two together if needed but I am not sure how to reference the needed information.

I have made up a really simple example Flow for testing purposes and will show it below.

I would greatly appreciate any help on this issue. Thanks.


The sample flow takes and inbound SAP XMLIDOC file to make debugging easier.

I could not get the pictures to fit so I have hosted them at the following:
http://www.netadventure.net/files/stewabr/part1.JPG
http://www.netadventure.net/files/stewabr/part2.JPG
http://www.netadventure.net/files/stewabr/part3.JPG
http://www.netadventure.net/files/stewabr/part4.JPG
http://www.netadventure.net/files/stewabr/part5.JPG

They show my example and the problems I have having.

Brian,
Recent SAP package service packs (SP4a or SP5) required new property called “watt.sap.ignoreCIMTYP”. Make sure this value set to “false”. This has to be set when you are using IDOC extensions ( Custom IDOCs). I believe you are using custom IDOC for your mapping. If you don’t have set this property in webMethods extended properties, IS will consider its basic IDOC structure while runtime and most of the maps wouldn’t work.

Hope this will help you…

P.S) Make sure you added above property manually in IS/config/server.cnf after shutting down the IS, or else it wouldn’t take effect.

Vijaya,

Thanks for your help. Since I do not have immediate access to the server machine from an admin view I made a new map using a standard SAP IDOC, ORDERS01. It still does the same thing but I found out some other interesting items that may give more clues to the solution.

  1. The test server I am working on does not have that key value. It is a 4.6 SR2a. I am using a 4.7 developer front end. It does not seem like that should effect it but maybe it does. Also, I searched OSS to try to find the solution and it seems we should be running 4.6 SR5 on this box. The actual production machine will be 4.7 but I do not have access yet.

  2. It seems the last time anything was updated on this machine at all was updated was last September. Perhaps this is a known problem that will be fixed with the upgrades.

Anyway, I really appreciate the help. If anyone else has any suggestions please let me know. I hope to have access to the 4.7 machine this week so maybe my problems will just go away.

Hello,

If the field in the IDOC is within a record list, the direct mapping does not work. You may have to specify the index of the Record list, from which the field needs to be picked up from.

The black colour for the mapping indicates, no index has been specified.

To check whether any index needs to be given, you need to double click on the mapping line and check the Indexing screen.

Hope this helps for the string mapping.

Bhavani,

You appear to be correct although it will not let me give an index since the field is not supposed to be inside of a list. I did some more tests last night and found that when I fill the structure myself instead of taking it in from flatToHierarchy it works just fine. Then based on reading other information here I did indeed notice that both the IDOC and ZSIMPLE sub records had become lists for no apparent reason. So I tried double clicking on the mapping to pick the index and it tells me the field is not indexable. Based on other posts I have read I believe there is a likely and error in this version of flatToHierarchy.

I appreciate the help and will let you know if that is the problem.

Thanks,

Brian