cancel
Showing results for 
Search instead for 
Did you mean: 

Idoc control record without changing mapping

former_member196519
Participant
0 Kudos

Hi Team,

My scenario is file to Idoc. I have doubt that when we are transporting scenario from dev to QA, how Idoc can be sent without any change in Idoc control in message mapping.

I have done all required setting in Idoc adapter by check or uncheck “apply control from payload” in Idoc adapter. But It is not working without changing in mapping.

Could you please share your comments

Thanks in advance!

Kumar

Accepted Solutions (0)

Answers (6)

Answers (6)

former_member184681
Active Contributor
0 Kudos

Hi,

I would suggest using standard PI configuration for that purpose. In each system, go to your sender and receiver Business Component, choose "Communication Component" -> "Adapter-Specific Identifiers" from the top menu and provide a "Logical System" name for IDoc Adapter. If you do this correctly in each environment (D, Q, A, P), it should work as expected without modifying the mapping.

If you are using Business Systems instead, same is done in SLD.

Regards,

Greg

0 Kudos

Hi S Kumar,

Do following in the Mapping.

In Control Record(EDI_DC40)

1.TABNAM - EDI_DC40

2.DIRECT - Constant(2)

3.IDOCTYP - Your IDOC type (eg. CREMAS04)

4.MESTYP - Your IDOC Message type (eg. CREMAS)

5.SNDPOR- Constant(SNDPORT)

6.SNDPRT- Constant(LS)

7.SNDPFC - Constant(LS)

8.SNDPRN - Constant(Your Sender System)

9.RCVPOR- Constant(RCVPORT)

10.RCVPRT - Constant(LS)

11. RCVPRN - Functions:--->Constants----> receiver

And in Receiver IDOC Comm Channel:

Check option *Take Sender from Payload*

Regards,

Roshan

former_member196519
Participant
0 Kudos

Hi Roshan,

By applying your suggestion, I have to change SNDPRN, SNDPOR, RCVPRN & RCVPOR when I will transport these object in to other environment.

Thanks,

Kumar

0 Kudos

Hi S Kumar,

No You need not to change the SNDPRN, SNDPOR, RCVPRN & RCVPOR, they will be constant in all the three environment.

I am saying this bcoz, we to had this problem and we got resolution by the above method.

Thanks,

Roshan

former_member196519
Participant
0 Kudos

Hi Roshan,

Thanks for your comment!

But in our system, these SNDPRN, SNDPOR, RCVPRN & RCVPOR are having different different value in Dev, Qty and prod environment. So we have to change in mapping.

Thats why I was asking if we have any approch to work in all three environment with out changing in Mapping.

Thanks!

Kumar

ambrish_mishra
Active Contributor
0 Kudos

Hi Kumar,

I hope you have taken a look at my post. You can apply the solution outlined.

Work with Simple UDF:

with the help of a simple UDF:

----------------------------------

String systemName = System.getProperty("SAPSYSTEMNAME");

return systemName+client;

----------------------------------

If resultant value from this UDF is DevPI001 -> SNDPRN_Dev

     else if QaPI001->SNDPRN_QA

     else if ProdPI01->SNDPRN_Prod

Similarly apply logic for other fields and it should work.

Hope it helps!

Ambrish

former_member196519
Participant
0 Kudos

Thanks Raja for your response!

I have disable mapping and take sender&receiver payload in channel as you mention above

But it show below error in SXMB_MONI when i am triggering data from RWB.

<SAP:Stack>Error: Copy Sender from Payload: Sender Is  Missing in Payload</SAP:Stack>

Thanks !

former_member196519
Participant
0 Kudos

Hi Team,

I can run this successfully but I want to run this without changing in EDI_DC40 segment or by disabling this segment EDI_DC40 because during transport it will have issue.

Please help!

Thanks,

Kumar

Former Member
0 Kudos

Hi,

Did you tried enabling the EDI_DC40 and unchecking the options take sender receiver from payload..

in the above case SNDPOR & RCVPOR will be replaced according the values of logical system names of business systems ...

Check if that suits your requirement...

HTH

Rajesh




ambrish_mishra
Active Contributor
0 Kudos

Hi,

If you are applying control record from payload and populating EDI_DC40 in mapping, then try to apply logic for system dependent fields based on the system:

For ex:

with the help of a simple UDF:

----------------------------------

String systemName = System.getProperty("SAPSYSTEMNAME");

return systemName+client;

----------------------------------

client is the constant value passed to the UDF... say 001.

Based on this UDF, you can simply pass the resultant value to field SNDPRN.

Similarly you can build the logic for other system dependent fields.

don't map optional fields if not required

Hope it answers your question.

Ambrish

rajasekhar_reddy14
Active Contributor
0 Kudos

Disable E1EDC40 segment in mapping then dont check Apply control record values from payload,take sender and receiver pay load. In this case values will be taken from configurtaion time and no need to change mapping n QA/Prod.

udo_martens
Active Contributor
0 Kudos

Hi Kumar,

the sap standard here is to define partys and determine the control records via "Identifiers".

/Udo