SAP Business By Design Output Management – part 2
This blog post is the second part of the SAP Business ByDesign Output Management series and covers Output Management Business Configuration as well as XML output formatting details.
1. Business Configuration/Scoping
Several questions and scope elements need to be setup in the SAP Business ByDesign Business Configuration/Scoping to take full advantage of the Output Management capabilities.
Activate External System
To be able to use the different output channels as part of the Output Management feature you need to explicitly enable them in your project scope. Without enabling them you might not see them as possible options in the Output Channel selection view.
In the following screen you see the Questions for Process-Integrated Input and Output Management where we can scope the E-mail, External System Based Communication…
You need to select the business documents that you want to send or receive electronically to or from your business partners as part of your project scope.
For each type of document, you can enable the question for communication section “Do you want to transmit XYZ documents to your customers electronically using Electronic Data Exchange?”
Enable Web Service Messages monitoring
If you want to use the Web Service Messaging Monitoring view as proposed in the section How to check your Output Channel configuration section of my precedent blog post, you need to activate the Web Service Message Monitoring group part of the Questions for Process-Integrated Input and Output Management.
2. XML format
Let’s check the format of the XML sent to our External System.
XML default format
You can download the specific form template xml and xsd schema for each document type in the work center Application and User Management -> Form Template Maintenance. This will be the default XML format sent to your External System.
For Invoice Documents you can maintain an XSLT file for XML transformation. You can make use of the transformations in the output channel definition. When you release a customer invoice document an additional output is provided following the transformed XML format.
Check the help center for details on How to Maintain Transformation ID in Output Management to Support Electronic Invoicing.
How to build the XSLT transformation
In order to build your specific XSLT file, you can download the Application and User Management -> Form Template Maintenance templates proposed previously.
Here you can find a Customer Invoice transformation example:
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2" xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2"> <xsl:output encoding="UTF-8" indent="yes" method="xml" /> <xsl:strip-space elements="*" /> <xsl:template match="/"> <b1i-xs1:Invoice xmlns:b1i-xs1="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2" xmlns:n0="http://sap.com/xi/SAPGlobal20/Global" xmlns:prx="urn:sap.com:proxy:Q2Q:/1SAI/TAS369B8FA8185C943E30C3:711:2008/09/23"> <cbc:ID> <xsl:value-of select="/n0:FormInvoiceRequest/CustomerInvoice/ID" /> </cbc:ID> <cbc:DueDate> <xsl:value-of select="/n0:FormInvoiceRequest/CustomerInvoice/Date" /> </cbc:DueDate> <cac:PayeeParty> <cac:PartyIdentification> <cbc:ID> <xsl:value-of select="/n0:FormInvoiceRequest/CustomerInvoice/BuyerParty/InternalID" /> </cbc:ID> </cac:PartyIdentification> <cac:PartyName> <cbc:Name> <xsl:value-of select="/n0:FormInvoiceRequest/CustomerInvoice/BuyerParty/FormattedName" /> </cbc:Name> </cac:PartyName> </cac:PayeeParty> <cac:LegalMonetaryTotal> <cbc:LineExtensionAmount currencyCode="USD"> <xsl:value-of select="/n0:FormInvoiceRequest/CustomerInvoice/PriceAndTax/NetAmount" /> </cbc:LineExtensionAmount> <cbc:TaxExclusiveAmount currencyCode="USD"> <xsl:value-of select="/n0:FormInvoiceRequest/CustomerInvoice/PriceAndTax/TaxAmount" /> </cbc:TaxExclusiveAmount> <cbc:TaxInclusiveAmount currencyCode="USD"> <xsl:value-of select="/n0:FormInvoiceRequest/CustomerInvoice/PriceAndTax/GrossAmount" /> </cbc:TaxInclusiveAmount> </cac:LegalMonetaryTotal> <cac:InvoiceLine> <xsl:for-each select="/n0:FormInvoiceRequest/CustomerInvoice/Item"> <cac:Item> <cbc:ID> <xsl:value-of select="ID" /> </cbc:ID> <cbc:Description> <xsl:value-of select="Description" /> </cbc:Description> </cac:Item> </xsl:for-each> </cac:InvoiceLine> </b1i-xs1:Invoice> </xsl:template> </xsl:transform>
How to maintain the XSLT transformations in ByDesign
To maintain the XSLT file for XML transformation search for Common Master Data Configuration in the Business Configuration Overview work center. Some extra details are shared in the What’s New in Cross-Area Topics – Electronic Invoicing help documentation.
How to assign the transformation to your Output Channel
How will the transformed output XML be accessible
Depending on the output channel selected the transformed XML will be provided differently:
Transformed XML (As per the transformation defined for the document earlier) can be accessed in the Output History tab via the View Data XML button.
Transformed XML can be saved locally via Cloud Print Manager tool.
Transformed XML gets sent along with form PDF via email.
External System XML
Transformed XML gets sent as part of <OutputDataXML> content tag to an end point URL.
I hope this blog will help you configure Output Management on your environment.
Don’t hesitate to provide feedback and share some business use cases implemented with this feature, you can reach me here or in Twitter @TrinidadMGea.
Thank you for reading ?
thank you for this helpfull blog.
I have followed all your steps from blog 1 and 2 but I get stuck trying to define the output channel rule for customer invoicing - there is no communication system to select. I have a couple of communication systems defined that are active, and I use them sucesfuly for web service calls. They should be listed in the output rule screen. (Attached screenshots for easier understanding)
Defining an output rule there is no com. systems to select
A list of all my systems that I already use
Did you have that issue at some point ? Do you perhaps know how to fix it or if I should have done something else in scoping ?
What is the type of your Communication Arrangement?
The Communication Arrangement has to be based on the “Output Management XML Integration” Communication Scenario and the Communication Type has to be “Application Integration”.
Also the System Instance of your Communication System requires "Protocol 5-Web Service" as Preferred Application.
Please check the previous blog on this topic for all details on how to create the Communication System and Communication Arrangement.
Let me know how it goes with the specific definitions given in blog 1.
Hope it helps
You were right it fixed it ! Thank you so much !
Sadly now I am stuck on the XSLT maintenance. I tried replacing the XSLT file I originaly uploaded but its not possible, so I deleted it and uploaded a new file. Unfortunately I cant delete the whole configuration because "It is in active use" even tho I removed the only outbound rule that used it for customer invoice. I tried every possible way but I cant delete it, and when I add a new XSLT file and click deploy configuration absolutely nothing happens. Now nothing is generated for my XMLs. Do you maybe know what could be the problem with XSLT maintenance ?
I have also faced this problem.
For every version, You must add a new row. The configuration ID is the same, just the version of transformation in that configuration must be new and file must be uploaded again.
Thanks a lot for your blog and the detailed explanation.
I’m also looking at the process to upload incoming electronic supplier invoice in XML format in SAP ByDesign. We did the required configuration and uploaded / validated the XLS transformation file. The transformation works fine outside of SAP.
However when we load the XML file via the workcenter Supplier invoicing > File upload, we constantly received the error message that the XML file is invalid without any additional detailed log. I can only assume that the target SAP invoice format is incorrect.
As a reference, we have used the XML structure from the Excel upload template of supplier invoice (ns1:ManageSupplierInvoiceIn) delivered by SAP.
Is there any reference file / template / target format XML structure that SAP requires in this solution and that you could share?
is there any way (API, Migration tool, Odata, ...) to mass update (from an external application) the Account Output channel (email addresses and 'To/Cc' on a regular basis.)?
First fo all thanks for these blog posts, they have been very useful in understanding this capability.
We have been trying to apply this to Purchase Orders (send PO's from ByD to an external system) and would like to share a couple of points we learned along the way.
Two points took us a long time to resolve:
The second point adds an additional indirection that took some re-work on the external endpoint and is not at all mentioned anywhere in the documentation (or these blog posts).