Skip to Content
Technical Articles
Author's profile photo Maria Trinidad MARTINEZ GEA

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…

Business Collaboration

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.

eInvoicing XML

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

When you configure your Output Channel either at Document Instance, Business Partner or Output channel level an optional Transformation parameter asks for a Transformation configuration. By pointing to the desired transformation, the output xml will be formed based on the selected transformation.

How will the transformed output XML be accessible

Depending on the output channel selected the transformed XML will be provided differently:

Output History

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.

Printer

Transformed XML can be saved locally via Cloud Print Manager tool.

E-Mail

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.

Here we can see an XML example generated by applying the XSLT configured in the previous sections:

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 ?

Assigned tags

      6 Comments
      You must be Logged on to comment or reply to a post.
      Author's profile photo Josip Spajic
      Josip Spajic

      Hello Trinidad,

      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%20an%20output%20rule%20there%20is%20no%20com.%20systems%20to%20select

      Defining an output rule there is no com. systems to select

       

      A%20list%20of%20all%20my%20systems%20that%20I%20already%20use

      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 ?

      Author's profile photo Maria Trinidad MARTINEZ GEA
      Maria Trinidad MARTINEZ GEA
      Blog Post Author

      Hi Josip,

      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
      Trinidad.

       

      Author's profile photo Josip Spajic
      Josip Spajic

      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 ?

      Author's profile photo Siim-Joonas Räim
      Siim-Joonas Räim

      Hello Josip,

       

      I have also faced this problem.

      Steps:

      1. Create another version of the transformation.
      2. Set “Obsolete” to the old version.
      3. Upload the new file to the new version
      4. Activate the new version.

      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.

       

      Kind regards,

      Siim

      Author's profile photo Tony Tatasciore
      Tony Tatasciore

      Hi Maria,

      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?

      Many Thanks!

      KR,

      Tony

      Author's profile photo Christian LARZILLIERE
      Christian LARZILLIERE

      Hi Trinidad,

       

      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.)?

      best regards