cancel
Showing results for 
Search instead for 
Did you mean: 

Provide the java code for the following scenario.

Former Member
0 Kudos

Hi Experts,

I have tried with all the combinations for this scenario. As per my understanding i require java code for the following scenario

so that it becomes easy........

I require a Message mapping for this Logic.

In the Source there are 4 fields and, the Target side, the fields should appear like this.

Source Structure- File

Record

|-> Header

Order_No

Date

|-> Item

Mat_No

Quantity

Target Structure-IDoc

IDoc

|-> Header

|-> Segment

Delivery_Order_No

Recv_Date

|-> Item

|-> Segment

Delivery_Order_No

Material_Num

Recv_Quantity.

The Logic is for every Order number an IDOC is generated.And if the Material num matches then the quantity should be added. and important note is that the material numbers are different for every order number. That means if a material number is 2 in the order number A. Then the material number can never be 2 in any of the order numbers.Here is the following with an example for the above scenario.

For example:-

we have

Source Structure- File

Order-no Date Mat_No Quantity

1 01/02/2011 A 10

1 01/02/2011 B 15

1 01/02/2011 A 10

2 01/02/2011 C 10

2 01/02/2011 C 10

3 01/02/2011 D 20

3 01/02/2011 D 10

3 01/02/2011 E 25

Target Structure-IDoc

Delivery_Order_No Recv_Date Material_Num Recv_Quantity

1 01/02/2011 A 20

1 01/02/2011 B 15

2 01/02/2011 C 20

3 01/02/2011 D 30

3 01/02/2011 E 25

So for this example total of 5-Idocs created. That means for this example if Order_No is 1 When the Mat_No is A the quantity gets added. For this Scenario 1 IDoc with four Fields 2 in Header(Delivery_Order_No, Recv_Date) and 2 in Item(Material_Num, Recv_Quantity) is generated by adding the quantity field in the Target Side. Similarly if Order_No is 1 when the Mat_No is B then separate IDoc is generated with four Fields 2 in Header(Delivery_Order_No, Recv_Date) and 2 in Item(Material_Num, Recv_Quantity) in the Target Side. Similarly, if Order_No is 2 when the Mat_No is C, an IDoc is generated with four Fields 2 in Header(Delivery_Order_No, Recv_Date) and 2 in Item(Material_Num, Recv_Quantity) by adding the quantity field in the Target Side. ike wise the process goes on upto 3.Kindly do the needy..

Kindly provide the java code.

Thanq very much in advance..

Accepted Solutions (0)

Answers (1)

Answers (1)

Former Member
0 Kudos

what i have understood from ur example is that u want to generate an idoc for unique combination of Order-no and Mat_No

if yes then chk the below mapping..

change the context of Order_No, Date, Mat_No and Quantity to Record (right click-> context)

1)


Order-no 
----------------------concat[;]---sort----splitbyvalue(valuechanged)-----collapse context---IDoc
Mat_No

2)


Order-no 
--------concat[;]---sort----splitbyvalue(value changed)---collapse context---UDF1--splitbyvalue(each value)--Delivery_Order_No
Mat_No

3)



Order-no 
-----------concat[;]---sortbykey----------------------- \
Mat_No                       /                            \
                           /                               \
Date--------------- /                                       \
----------------------------------------------------------FormatByExample-----collapsecontext---splitbyvalue(each value)----Recv_Date 
                                                           /
Order-no                                                 / 
-----------concat[;]---sort----splitbyvalue(value changed)
Mat_No

4)


Order-no 

--------concat[;]---sort----splitbyvalue(value changed)---collapse context-UDF2--splitbyvalue(each value)--Material_Num 

Mat_No

5)


Order-no 
-----------concat[;]---sortbykey
Mat_No                       / 
                           /
Quantity --------------- /
----------------------------------------------------------FormatByExample-----SUM(under statistic)----Recv_Quantity
Order-no 
-----------concat[;]---sort----splitbyvalue(value changed)
Mat_No

UDF1:


String [] temp= a.split(";");
return temp[0];

UDF2:


String [] temp= a.split(";");
return temp[1];