Pricing Conditions on the Purchase Order sent to Ariba Network
Pricing Conditions on the Purchase Order sent to Ariba Network
One of the requirements that comes up from time to time while implementing Ariba Network or Commerce Automation is the inclusion of additional pricing details onto the Purchase Order.
Some customers when sending a Purchase Order to their suppliers would like to include pricing conditions related to:
- freight / shipping cost
- surcharges such as administrative fee or custom related fees
- pre-negotiated discounts
Example from SAP:
While implementing this, following considerations needs to be done:
- The SAP PO item could have more than one type condition: Freight 1, surcharge 1, surcharge 2, etc (e.g. ZB00,RB00, etc) –> Supported by this solution
- Purchase orders could have many items with many different conditions (freights and surcharges) by item –> Supported by this solution
- The same type of condition could appear on the same PO item (e.g. FR00 could appear twice under the same PO item) –> Not supported by this solution
- Customer cannot duplicate conditions in the same PO item, otherwise both values would be concatenated in the same line on XML. For example, if the same PO line has 2 conditions “Freight 1”, this information would be concatenated on the XML into the same source <Modification> element for “Freight 1”.
- The solution presented here shows the mapping of price conditions related to surcharges (see screenshot above – conditions ZB00 and FRB1, for example). In order to add type conditions of discounts (see screenshot above – condition RB00, for example) , the customer must use the PO XML segment <AdditionalDeduction> instead of <AdditionalCost> as presented in the following solution.
Price conditions are not part of the SAP PO IDOC. The ARBCIG_ORDERS IDOC has a standard segment for conditions, the E1EDP05 (item) in which is not populate by CIG Add-on as out of the box solution. In order to have this information in E1EDP05, customer needs to customize it picking the PO condition information and adding it to this IDOC segment:
Next step after having values appearing in the PO IDOC is to map it in CIG mapping tool:
- PO item is represented by IDOC element E1EDP01
- Conditions are represented by PO IDOC element E1EDP05
- Each PO item could have 0 or 1+ conditions
- Xml element <Modifications> refers to Allowances and surcharges
- Xml element <Modifications> contains 1 or more element <Modification>.
- The xml element in which matches with the IDOC element E1EDP05 is the element <Modification>.
The corresponding values from IDOC and cXML (Ariba Purchase Order) can be outlining in the following manner:
Going one step further, PO IDOC Element <E1EDP05> under element <E1EDP01> has to be mapped to XML <Modification> element under <Modifications> element
Righ-click on <Modifications> and Create/Replace node à A green line on the right side of the node will appears. This step is required in order to activate the node to be displayed on the XML.
Pick the fields of <E1EDP05> to be mapped to xml element <Modifcation>. For this requirement I had 4 IDOC elements to be mapped (KSCHL, KOTXT, BETRG, KOEIN) and 7 different conditions.
The element <KSCHL> shows the condition type in which will be used as value of “Add Source of condition”
- For field <KSCHL>, please run steps of section a.1.
p.s. Steps on section a.1 must be executed for all the 4 fields KSCHL, KOTXT, BETRG, KOEIN.
- Create loop over xml element <ItemOut> to IDOC item element <E1EDP01>
- Right-click on the target field @name > Click on xml node ItemOut
- Righ-click on the mapped line > Add source condition > Click on <E1EDP01>
- Adding source of condition to use field (PO pricing condition type) to differentiated each IDOC pricing condition received per PO item
- Right-click on the mapped line > Add source Condition > Click on KSCHL > type in the type condition to be used
After you finish the Steps a.1 and place the mouse over the mapped line the following information should shows up:
—– END of Section a.1 —–
b. Mapping <KOTXT> to <Description xml:lang=”en-US”> Manual Freight </Description>
- Right-click on field @xml:lang > Add Constant Value > Type “en-US” and click “OK”à Blue line will appears on the right side of the field
<Description xml:lang=”en-US”> Manual Freight </Description>
- Run steps of section a.1 for field <KOTXT>
c. Mapping <BETRG> to Money. <AdditionalCost> <Money>
- Run steps of section a.1 for field <BETRG>
d. Mapping <KOEIN> to @currency
<AdditionalCost> <Money alternateCurrency=”” alternateAmount=”” currency=”USD”>
- Run steps of section a.1 for field <KOEIN>
So far, we have mapped the pricing condition to the condition type YFR0 only. In order to have different condition types mapped, the xml element <Modification> has to be duplicated until we have 7 <Modification> elements (for this case I need to map 7 different condition types).
- Right-click on <Modification> node > Click on Duplicate Node à A new node <Modification #2> will be added to xml structure.
Repeat the STEP 2 all over again, now considering the remaining condition types to be mapped. That is, remember to use the specific condition type to be mapped instead of the condition YFR0 shown above (<ModificationDetail name=”YFR0″>).
Ariba Network does accept pricing conditions as out of the box solution, but CIG AddOn and CIG doesn’t. So, in order to send pricing conditions to AN, customers need to customize it on their end with 2 different actions: populating the segment E1EDP05 in ARBCIG_ORDERS IDOC with the PO pricing conditions and creating a CIG mapping to map this segment to the cXML PO document which will be read by Ariba Network.
This is a good article as we have a customer who had requested the same thing. We had followed the exact same step given but we have an issue where the Modification node is not being displayed in the cxml. Any reason on why this happen?
Make sure you have executed step 1: Righ-click on <Modifications> and Create/Replace node. You must see a small green line on the right side of the node (see screenshots on step 1). This step is required in order to activate the node to be displayed on the XML.
Thanks for the response. Managed to get it out in cXML. Besides, will there be any steps needed if I have a multiple condition types (assuming 4 condition types) that need to be shown only if it is exists within IDOC. Means that in a PO, my IDOC may only consists of 2 out of 4 condition types that need to be displayed (depending on the condition types that had been selected by the users). I had tried but if all modifications do not meet (if all 4 condition types are not there in IDOC), no modification will be shown at all in cXML.
Appreciate your advice.
If I understood correctly your scenario, this CIG mapping should work for this situation. For example, if you have mapped 4 conditions A,B,C and D, and you have a Purchase order from SAP with item 1 with condition A and item 2 with condition B and C, the same information would be displayed on Ariba Network.
This IF CONDITION action is done within the "Section a.1" with the feature "Add Source Condition" when the name of the condition type is added as value. For instance, the condition type 'A' will be mapped and displayed on AN PO item as long as condition type 'A' is part of SAP PO item.
Dear Filipe, Thank you for sharing the information for the benefit of CIG Community members. I am sure this step-by-step approach is very informative for community members.
Appreciate your contribution.
Thanks for your positive comment.
Hi Filipe, great write up! Can I find out how are these similar charges going to be included in the invoice coming back from Ariba to SAP?
If you want these charges to go back to SAP within the invoice, a new CIG mapping must be created now for Invoices. Nowadays, Ariba network is able to create the segment E1EDP05 in the Invoice cXML file but tCIG doesn't convert it to the Invoice IDOC. It means that you will need to map these allowances and charges to ARBCIG_INVOIC IDOC.
You can try to use the following Invoice elements to convert the information:
<E1EDP01> <E1EDP05> <KSCHL>ZF00</KSCHL>
<E1EDP01> <E1EDP05> <KOTXT>Freight</KOTXT>
<E1EDP01> <E1EDP05> <BETRG>0.75</BETRG>
<E1EDP01> <E1EDP05> <KOEIN>USD</KOEIN >
Thank you for such a good article!!
I have mapped my CIG as per your guidance. We could able to map 3 pricing condition. But when we send PO from S4HANA. I am getting below error.
"Schema Validation failed for cXML - 0000 - OrderRequest .. Suggested Action : Please check the attachment for error details . For implementation guidelines ,please refer to corresponding refer to corresponding cXML specs at CIG Portal -> Resources -> Implementation Guides . For further assistance, please contact CIG Support with Error Code : CIG-PLT-00623".
Can you please guide why am i getting this error after mapping.
Are you able to send POs to CIG before the CIG mapping?
I found this note that might help you:
Regards, Filipe Migueis
Hi Filipe Migueis ,
We are facing some issue when mapping for duplication mandatory node. Seem like "Modification #2" is not recognize as "Modification".
Hi Fatt Chai Gan,
The above mapping is not working for the latest versions of CIG. Today, I published a guided answer related to CIG custom mappings. A new version of the PO allowances and Charges mapping can also be found there. New mappings will be added in the future.
CIG Mapping Tool - Custom mappings at: https://ga.support.sap.com/dtp/viewer/index.html#/tree/2873/actions/41970
Click on "OrderRequest - Order" and "Allowances and Charges". Please give us your feedback and help us improve CIG mapping solution.
I hope this is going to help SAP customers and partners with CIG custom mappings.
Best regards, Filipe Migueis
Hi Filipe Migueis ,
Thanks it is working now. I think it would be better to update the blog as well as the old mapping no longer working for latest CIG. Thanks.
thank you very much for the very successful and interesting documentation. I have tried to implement the mapping for a current customer.
I have only done it once for one condition type, but when I save the mapping I get these error messages.
Mandatory child not mapped: /cXML/Request/OrderRequest/ItemOut/@quantity
Mandatory child not mapped: /cXML/Request/OrderRequest/ItemOut/ItemID
Mandatory child not mapped: /cXML/Request/OrderRequest/ItemOut/? Choice #1/ItemDetail/Description
Mandatory child not mapped: /cXML/Request/OrderRequest/ItemOut/? Choice #1/ItemDetail/UnitOfMeasure
Mandatory child not mapped: /cXML/Request/OrderRequest/ItemOut/? Choice #1/ItemDetail/Classification
Mandatory child not mapped: /cXML/Request/OrderRequest/ItemOut/? Choice #1/ItemDetail/UnitPrice/Money
Can you help to find out what the problem could be?
Thanks in advance.
One quick question about this mapping:
PO created with a Gross Price of 2000 EUR and discount price of 100 EUR. The PO has the net price of 1900 EUR. When supplier submitted invoice in Ariba, invoice amount should be 1900 EUR.
We did a mapping in Ariba and Invoice amount from Ariba shows 1800 EUR as final invoice amount instead of 1900 EUR. It seems that Ariba did another round of 100 EUR net off.
Thanks a lot for this article.
Do you know by any chance if there is a way to confirm those conditions in Ariba Network insead of confirming the total price ?