Skip to Content
Product Information
Author's profile photo Hari Krishna

Electronic Document Advance Test (SAP Business One)

Advance test using SAP Business One Add-on Electronic File Manager (EFM).

This blog post is to explain how to perform advance test on electronic documents using SAP Business One Add-on EFM (Electronic File Manager) as a tool to analyse errors arising at the time of generating document and rejections/objections coming from the recipients of the generated document.

Two demonstrate how to perform the advance test using SAP Business One Add-on EFM, I have created three simple video recordings. In the demonstration videos, as a example I have used Italy Electronic Invoice process. But same advance test methodology can be used for many other electronic document solutions like for Argentina, Hungary, Czech republic, Mexico, Italy, Spain etc.

In the first video Advance test for Electronic Documents in SAP Business One, I have put some slides with some screenshots and check list to fallow before you carry out the advance test for electronic documents.

In the second video Schema Validation, I have demonstrated performing advanced test in EFM for the scenario where system throw error message due to failed schema validation, when adding the electronic document.

In the third video Rejections/Objections coming from the recipients of the generated files, I have demonstrated how to identify reasons for the rejection/objection coming from the recipients when a electronic document was added but failed to Generate.

Once you have identified the issues by performing advance test and trouble shooting the reasons for rejections/objection, you have to make changes accordingly in the system to avoid these errors.

Assigned Tags

      5 Comments
      You must be Logged on to comment or reply to a post.
      Author's profile photo Taseeb Saeed
      Taseeb Saeed

      Hello Hari Krishna ,

      Very Helpful blog. I have some questions if you can answer.

      1. Target for now is to generate electronic (xml) AR Invoice without getting any clearance from authorities as they are not ready for integration.
      2. I have created Invoice.spp file and imported it to B1.
      3. While generating the AR Invoice i choose Generate option and choose the format as Invoice.spp.
      4. Upon generation of AR system is taking almost 2 minutes and finally raise an error that is time out.

      My questions are

      1. Can we generate only XML file without configuring B1i scenarios as at this level no integration required with tax authorities?
      2. What should i choose in document setting filed "Processing Target".

       

       

      Regards,

      Taseeb Saeed

      Author's profile photo Hari Krishna
      Hari Krishna
      Blog Post Author

      Hello Taseeb Saeed,

      Yes its is possible to generate xml from the invoice.

      To achieve that, you need to select the relevant xml connectors in the Processing Target.

      For example, in German localization: I would select 'Business One Client - xml connector' or 'Electronic Document Service - XML Connector V1'.

      Regards,

      Hari Krishna

      Author's profile photo Taseeb Saeed
      Taseeb Saeed

      Hello Hari Krishna,

      Thanks for the answer, yes it worked , i choosed "Business One Client -xml connector".

      Now i have to create the Invoice.spp file with Target of UBL 2.1.xsd. I am trying to import xsd file but getting an error. By tracing into it i found that UBL 2.1.xsd file has some Import (dependant xsd files).

      Can you guide how i can import a xsd data source as target where it has further dependant xsd files. I am attaching here the image for the reference.

       

      Thanks

      Taseeb Saeed

      Author's profile photo Taseeb Saeed
      Taseeb Saeed

      Hello Hari Krishna.

      Any updates?

       

      Regards,

      Taseeb Saeed

      Author's profile photo Hari Krishna
      Hari Krishna
      Blog Post Author

      Hi Taseeb Saeed,

      Apologies, I could not reply earlier as i was on holidays.

      When you create a new spp format for document in EFM, a default source will be loaded.
      However, that is the source for exporting XML file from SAP Business One. If you check the structure of the default source, you will find that it is SAP Business One table structure which will retrieve data from SAP Business One, and then export the data following the structure of target file.

      However, for importing document, the source should be a external schema of the xml file to be imported and the target should be SAP Business One.

      We attached an XSD schema for your reference to design your own format.

      Hope this helps. For more information on this, i suggest to post your question in SAP Business One Community:  https://www.sap.com/community/topic/business-one.html

      <?xml version="1.0" encoding="UTF-8"?>
      <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:edfi="urn:com.sap.b1.edf:import" targetNamespace="urn:com.sap.b1.edf:import" elementFormDefault="qualified" attributeFormDefault="unqualified">
      	<xs:element name="Document" type="edfi:DocumentType"/>
      	<xs:complexType name="DocumentType">
      		<xs:sequence>
      			<xs:element name="Type"/>
      			<xs:element name="BP" type="edfi:BPType"/>
      			<xs:element name="TaxDate" type="xs:date" minOccurs="0"/>
      			<xs:element name="DocDate" type="xs:date" minOccurs="0"/>
      			<xs:element name="DocDocDate" type="xs:date" minOccurs="0"/>
      			<xs:element name="VatDate" type="xs:date" minOccurs="0"/>
      			<xs:element name="DocCurrency" minOccurs="0"/>
      			<xs:element name="DocRate" minOccurs="0"/>
      			<xs:element name="TotalAmounts" type="edfi:TotalAmountsType" minOccurs="0"/>
      			<xs:element name="Tax" type="edfi:TaxType" minOccurs="0"/>
      			<xs:element name="EDoc" type="edfi:EDFType" minOccurs="0"/>
      			<xs:element name="Remark" minOccurs="0"/>
      			<xs:element name="UDFs" type="edfi:UDFListType" minOccurs="0"/>
      			<xs:element name="Lines" type="edfi:DocLinesType"/>
      			<xs:element name="Expenses" type="edfi:ExpenseListType" minOccurs="0"/>
      		</xs:sequence>
      	</xs:complexType>
      	<xs:complexType name="BPType">
      		<xs:choice>
      			<xs:element name="CardCode" minOccurs="0"/>
      			<xs:element name="CardName" minOccurs="0"/>
      			<xs:element name="FederalTaxID" minOccurs="0"/>
      			<xs:element name="AdditionalID" minOccurs="0"/>
      			<xs:element name="UnifiedFederalTaxID" minOccurs="0"/>
      			<xs:element name="AliasName" minOccurs="0"/>
      			<xs:element name="IBAN" minOccurs="0"/>
      			<xs:element name="CNPJ" minOccurs="0"/>
      			<xs:element name="UDFs" type="edfi:UDFListType" minOccurs="0"/>
      		</xs:choice>
      	</xs:complexType>
      	<xs:complexType name="UDFListType">
      		<xs:sequence>
      			<xs:element name="UDF" type="edfi:UDFType" maxOccurs="unbounded"/>
      		</xs:sequence>
      	</xs:complexType>
      	<xs:complexType name="UDFType">
      		<xs:sequence>
      			<xs:element name="Name"/>
      			<xs:element name="Value"/>
      		</xs:sequence>
      	</xs:complexType>
      	<xs:complexType name="TotalAmountsType">
      		<xs:sequence>
      			<xs:element name="NetTotal" type="edfi:B1DecimalType" minOccurs="0"/>
      			<xs:element name="GrossTotal" type="edfi:B1DecimalType" minOccurs="0"/>
      			<xs:element name="DiscountAmount" type="edfi:B1DecimalType" minOccurs="0"/>
      			<xs:element name="DiscountPercent" type="edfi:B1DecimalType" minOccurs="0"/>
      		</xs:sequence>
      	</xs:complexType>
      	<xs:complexType name="TaxType">
      		<xs:sequence>
      			<xs:element name="Code"/>
      			<xs:element name="Rate" type="edfi:B1DecimalType" minOccurs="0"/>
      			<xs:element name="Amount" minOccurs="0"/>
      			<xs:element name="Segments" minOccurs="0">
      				<xs:complexType>
      					<xs:sequence maxOccurs="unbounded">
      						<xs:element name="Segment">
      							<xs:complexType>
      								<xs:sequence>
      									<xs:element name="Code"/>
      									<xs:element name="Rate" type="edfi:B1DecimalType" minOccurs="0"/>
      									<xs:element name="Amount" type="edfi:B1DecimalType" minOccurs="0"/>
      								</xs:sequence>
      							</xs:complexType>
      						</xs:element>
      					</xs:sequence>
      				</xs:complexType>
      			</xs:element>
      		</xs:sequence>
      	</xs:complexType>
      	<xs:simpleType name="B1DecimalType">
      		<xs:restriction base="xs:decimal">
      			<xs:totalDigits value="19"/>
      			<xs:fractionDigits value="6"/>
      		</xs:restriction>
      	</xs:simpleType>
      	<xs:complexType name="ExpenseListType">
      		<xs:sequence>
      			<xs:element name="Expense" type="edfi:ExpenseType" maxOccurs="unbounded"/>
      		</xs:sequence>
      	</xs:complexType>
      	<xs:complexType name="ExpenseType">
      		<xs:sequence>
      			<xs:element name="Code"/>
      			<xs:element name="Amount" type="edfi:B1DecimalType" minOccurs="0"/>
      			<xs:element name="Tax" type="edfi:TaxType" minOccurs="0"/>
      		</xs:sequence>
      	</xs:complexType>
      	<xs:complexType name="EDFType">
      		<xs:sequence>
      			<xs:element name="EDocNum"/>
      		</xs:sequence>
      	</xs:complexType>
      	<xs:complexType name="DocLinesType">
      		<xs:sequence>
      			<xs:element name="Type"/>
      			<xs:element name="Line" type="edfi:DocLineType" maxOccurs="unbounded"/>
      		</xs:sequence>
      	</xs:complexType>
      	<xs:complexType name="DocLineType">
      		<xs:sequence>
      			<xs:element name="Item" type="edfi:ItemType"/>
      			<xs:element name="UnitPrice" type="edfi:B1DecimalType" minOccurs="0"/>
      			<xs:element name="GrossPrice" type="edfi:B1DecimalType" minOccurs="0"/>
      			<xs:element name="PriceAfterDiscount" type="edfi:B1DecimalType" minOccurs="0"/>
      			<xs:element name="Quantity" type="edfi:B1DecimalType" minOccurs="0"/>
      			<xs:element name="DiscountAmount" type="edfi:B1DecimalType" minOccurs="0"/>
      			<xs:element name="DiscountRate" type="edfi:B1DecimalType" minOccurs="0"/>
      			<xs:element name="Warehouse" minOccurs="0"/>
      			<xs:element name="Tax" type="edfi:TaxType"/>
      			<xs:element name="Expenses" type="edfi:ExpenseListType" minOccurs="0"/>
      			<xs:element name="UDFs" type="edfi:UDFListType" minOccurs="0"/>
      		</xs:sequence>
      	</xs:complexType>
      	<xs:complexType name="ItemType">
      		<xs:choice>
      			<xs:element name="Code" minOccurs="0"/>
      			<xs:element name="Description" minOccurs="0"/>
      			<xs:element name="EAN" minOccurs="0"/>
      			<xs:element name="UDFs" type="edfi:UDFListType" minOccurs="0"/>
      		</xs:choice>
      	</xs:complexType>
      </xs:schema>
      

      Regards,

      Hari