Sie sind auf Seite 1von 208

Alusta FAQ

Version 5.4
© 2015-2022 Stephan Kittel, Basware GmbH

Seite 1 von 208


Inhalt
Overview................................................................................................................................................................................................................................................................................................... 9
1.1 P2P Schema..................................................................................................................................................................................................................................................................................... 9
Konfiguration........................................................................................................................................................................................................................................................................................... 10
1.2 Session timeout definieren............................................................................................................................................................................................................................................................ 10
1.3 TAX – Rundungsfehler vermeiden:................................................................................................................................................................................................................................................ 10
1.4 eMail-Sendeadresse:..................................................................................................................................................................................................................................................................... 10
1.5 SSO-Link........................................................................................................................................................................................................................................................................................ 10
1.6 Hinzufügen neuer Sprachen.......................................................................................................................................................................................................................................................... 11
1.7 Übersetzungen/Änderungen Mailtexte......................................................................................................................................................................................................................................... 11
1.8 Supplierauswahl füllt Payment Term – Feld.................................................................................................................................................................................................................................. 11
1.9 Filter dependence Used if a filter is set to lookup list columns..................................................................................................................................................................................................... 12
1.10 Columns...................................................................................................................................................................................................................................................................................... 12
1.11 File Attachments definieren........................................................................................................................................................................................................................................................ 12
1.12 Identifiers in SaaS........................................................................................................................................................................................................................................................................ 13
1.13 Anzahl maximal möglicher Kontierungszeilen ändern................................................................................................................................................................................................................. 13
1.14 IA_CONFIG parameter................................................................................................................................................................................................................................................................. 13
1.15 CMN_TENANT_SETTINGS............................................................................................................................................................................................................................................................ 15
1.16 IA_CONFIG_SETTINGS................................................................................................................................................................................................................................................................. 26
1.17 Additional Data beim Supplier mit auswählen............................................................................................................................................................................................................................ 27
Users/Groups/Struktur............................................................................................................................................................................................................................................................................ 29
1.18 Default Tenant Struktur nach Bereitstellung............................................................................................................................................................................................................................... 29
1.19 Organization Elements................................................................................................................................................................................................................................................................ 29
1.20 User Groups................................................................................................................................................................................................................................................................................ 29
Rules........................................................................................................................................................................................................................................................................................................ 30
1.21 Regel welche mit ToNumber Werte vergleicht:.......................................................................................................................................................................................................................... 30
1.22 Regel welche prüft, ob Kontierungszeile vorhanden ist (Review)................................................................................................................................................................................................ 30

Seite 2 von 208


1.23 Advanced Validation (Definition)................................................................................................................................................................................................................................................. 30
1.24 Meldung: „Advanced Validation is not enabled”......................................................................................................................................................................................................................... 32
Workflow................................................................................................................................................................................................................................................................................................. 33
1.25 Recipient nach Kreditoren........................................................................................................................................................................................................................................................... 33
1.26 Approve ohne Review (Alusta stürzt beim Approve ab).............................................................................................................................................................................................................. 34
1.27 Advanced User Rights – Workflow auf RowLevel........................................................................................................................................................................................................................ 34
1.28 Standard-Workflow – NON-PO.................................................................................................................................................................................................................................................... 36
1.29 Standard-Workflow PO+Matching.............................................................................................................................................................................................................................................. 40
1.30 Advanced Tax Calculation............................................................................................................................................................................................................................................................ 40
Purchase.................................................................................................................................................................................................................................................................................................. 42
1.31 Anlegen von Purchase Categories............................................................................................................................................................................................................................................... 42
Matching................................................................................................................................................................................................................................................................................................. 43
1.32 Matching PO Nummer und/oder Delivery note Nummer........................................................................................................................................................................................................... 43
1.33 Matching zeigt nur 0-Werte........................................................................................................................................................................................................................................................ 43
1.34 Erzwingen von Manual Matching................................................................................................................................................................................................................................................ 44
1.35 Order Matching........................................................................................................................................................................................................................................................................... 45
1.36 BPME........................................................................................................................................................................................................................................................................................... 45
1.37 Subsequent Matching................................................................................................................................................................................................................................................................. 46
1.38 Matching-Beispiel “ILO”.............................................................................................................................................................................................................................................................. 46
1.39 Matching-Beispiel “SODEXO“ (2 und 3-way match und framework PO)..................................................................................................................................................................................... 53
1.40 Match Plans................................................................................................................................................................................................................................................................................. 64
1.41 Prozess für Matching gegen den PayPlan definieren:.................................................................................................................................................................................................................. 66
1.42 Match Orders Old Data Cleanup................................................................................................................................................................................................................................................. 69
Webservice.............................................................................................................................................................................................................................................................................................. 72
1.43 Creating WSDL file by the customer............................................................................................................................................................................................................................................ 72
1.44 Web Service parameters:............................................................................................................................................................................................................................................................ 74
1.45 SAPSELECT and SAPSELECTWS.................................................................................................................................................................................................................................................... 75
1.46 Lesen von Daten aus einer SAP Tabelle (wenn SAPSELECTWS einen Error 500 erzeugt).............................................................................................................................................................77

Seite 3 von 208


1.47 AWS Alusta Web Service integration IPs..................................................................................................................................................................................................................................... 78
Master Data............................................................................................................................................................................................................................................................................................. 79
1.48 Full logging.................................................................................................................................................................................................................................................................................. 79
1.49 Supplier Import........................................................................................................................................................................................................................................................................... 79
1.50 PO import MainSupplierName und InvoicingSupplierName....................................................................................................................................................................................................... 81
1.51 Extrakte für S&C erstellen (SaaS)................................................................................................................................................................................................................................................. 82
1.52 Standard Password Policy für User.............................................................................................................................................................................................................................................. 83
1.53 PaymentTerm Felder................................................................................................................................................................................................................................................................... 84
1.54 User-Import................................................................................................................................................................................................................................................................................. 85
1.55 User Login type beim Generieren von Usern mittels Script......................................................................................................................................................................................................... 85
1.56 Wechselkurse darstellen............................................................................................................................................................................................................................................................. 85
1.57 Probleme mit Currency und Exchange-Rates beim BT-Import.................................................................................................................................................................................................... 86
1.58 Import von Bestelldaten.............................................................................................................................................................................................................................................................. 86
1.59 Datenimport (update)................................................................................................................................................................................................................................................................. 87
1.60 Struktur PO daten:...................................................................................................................................................................................................................................................................... 89
1.61 Suchen von Bestellungen welche auch einen GR haben............................................................................................................................................................................................................. 90
Scheduler................................................................................................................................................................................................................................................................................................. 91
1.62 Eigene Scheduler Tasks für eigenes Coding................................................................................................................................................................................................................................. 91
1.63 Cron expression (minutengenaue Schedule Tasks)..................................................................................................................................................................................................................... 91
1.64 Scheduled task fails to import data............................................................................................................................................................................................................................................. 92
Rechnungsimport.................................................................................................................................................................................................................................................................................... 94
1.65 BT-Import.................................................................................................................................................................................................................................................................................... 94
1.66 Duplicate Check........................................................................................................................................................................................................................................................................... 95
1.67 Case sensitive.............................................................................................................................................................................................................................................................................. 95
1.68 Invoice Origins (Invoice Sources)................................................................................................................................................................................................................................................. 96
Archive.................................................................................................................................................................................................................................................................................................... 97
1.69 Archive Link deaktivieren............................................................................................................................................................................................................................................................ 97
Transfer................................................................................................................................................................................................................................................................................................... 98

Seite 4 von 208


1.70 Struktur Verbuchung F-43:.......................................................................................................................................................................................................................................................... 98
1.71 Batch Input Mappe mitschreiben beim FI-Verbuchen............................................................................................................................................................................................................... 101
1.72 Transfer mit Pre-Call definieren................................................................................................................................................................................................................................................ 102
1.73 Transfer response verhindern................................................................................................................................................................................................................................................... 103
1.74 Transfer recovery – wie definieren?.......................................................................................................................................................................................................................................... 104
1.75 Re-Transfer bereits transferierter Rechnungen......................................................................................................................................................................................................................... 105
1.76 Fiscal Year Shift.......................................................................................................................................................................................................................................................................... 105
Datenbank............................................................................................................................................................................................................................................................................................. 107
1.77 Prozess Check – History Log auslesen....................................................................................................................................................................................................................................... 107
1.78 String bis zu einem Zeichen lesen (Alusta-Übersetzungen)....................................................................................................................................................................................................... 107
1.79 Alle User mit Supervisor auslesen............................................................................................................................................................................................................................................. 107
1.80 Prozess und Prozesschritte herausfinden.................................................................................................................................................................................................................................. 108
1.81 Logfiles per Script löschen......................................................................................................................................................................................................................................................... 108
1.82 Bestelldaten per Script oder per SQL löschen........................................................................................................................................................................................................................... 108
1.83 Supplierdaten per Script löschen............................................................................................................................................................................................................................................... 108
1.84 Datum für Bestelldatenabruf setzen......................................................................................................................................................................................................................................... 108
1.85 Datenfelddefinitionen für Dokumentation auslesen................................................................................................................................................................................................................. 108
1.86 Extrakt für den IA-Bereich generieren....................................................................................................................................................................................................................................... 109
1.87 Tabellen für Attachments.......................................................................................................................................................................................................................................................... 110
1.88 Reports...................................................................................................................................................................................................................................................................................... 110
1.89 Löschen der Daten um Orga-Struktur ändern zu können:......................................................................................................................................................................................................... 111
1.90 Löschen von allen Rechnungen................................................................................................................................................................................................................................................. 111
1.91 Löschen aller Order-/Matchdaten............................................................................................................................................................................................................................................. 112
1.92 Hinzufügen der URL für das InvoiceImage zum TRANSFER.XML file.......................................................................................................................................................................................... 112
1.93 Auslesen der activities und transitions...................................................................................................................................................................................................................................... 113
1.94 Hilfreiche Datenbankscripte:..................................................................................................................................................................................................................................................... 113
1.95 GDM settings multiplizieren:..................................................................................................................................................................................................................................................... 113
1.96 Offene Bestellungen anzeigen................................................................................................................................................................................................................................................... 114

Seite 5 von 208


1.97 Abruf Anzahl diverser Stammdaten........................................................................................................................................................................................................................................... 115
1.98 Hinzufügen von neuen Order Mappings.................................................................................................................................................................................................................................... 116
Infos....................................................................................................................................................................................................................................................................................................... 118
1.99 Full Export/Import..................................................................................................................................................................................................................................................................... 118
1.100 Status Codes............................................................................................................................................................................................................................................................................ 118
1.101 Email notifications variables.................................................................................................................................................................................................................................................... 128
1.102 SFTP Adressen/Parameter....................................................................................................................................................................................................................................................... 131
1.103 Standard Coding Fields............................................................................................................................................................................................................................................................ 131
Archivierung.......................................................................................................................................................................................................................................................................................... 139
anyERP................................................................................................................................................................................................................................................................................................... 140
1.104 LoopExit – Funktionalität......................................................................................................................................................................................................................................................... 140
1.105 LoopExit ./. LoopInclude ./. Include......................................................................................................................................................................................................................................... 140
1.106 Lesen großer Stammdatenmengen......................................................................................................................................................................................................................................... 141
1.107 eMail - Funktionen.................................................................................................................................................................................................................................................................. 142
1.108 Millisekunden mit F,NOW() erzeugen..................................................................................................................................................................................................................................... 142
1.109 Runden auf zwei Nachkommastellen...................................................................................................................................................................................................................................... 143
1.110 anyERP-Errorhandling............................................................................................................................................................................................................................................................. 143
1.111 anyERP Kommandos und Funktionen...................................................................................................................................................................................................................................... 144
86.1 F,ISDATE........................................................................................................................................................................................................................................................................... 144
86.2 String in ein Datum mit speziellem Format umwandeln.................................................................................................................................................................................................. 144
86.3 File Funktionen................................................................................................................................................................................................................................................................ 145
86.3.1 Rename File................................................................................................................................................................................................................................................................. 145
86.3.2 Move File..................................................................................................................................................................................................................................................................... 145
86.3.3 Rename Directory........................................................................................................................................................................................................................................................ 145
86.3.4 Delete File(s)................................................................................................................................................................................................................................................................ 145
86.3.5 Delete Directory(s)...................................................................................................................................................................................................................................................... 146
86.3.6 Create Directory.......................................................................................................................................................................................................................................................... 146
86.3.7 COPY File(s).................................................................................................................................................................................................................................................................. 146

Seite 6 von 208


86.3.8 Directory auslesen (DIR).............................................................................................................................................................................................................................................. 146
86.4 TIFF-Files splitten/mergen............................................................................................................................................................................................................................................... 147
86.5 String splitten................................................................................................................................................................................................................................................................... 147
86.6 Felder einer Datasource ermitteln................................................................................................................................................................................................................................... 148
86.7 onError – Behandlung...................................................................................................................................................................................................................................................... 148
86.8 CSV-Export....................................................................................................................................................................................................................................................................... 149
86.9 Joins................................................................................................................................................................................................................................................................................. 149
86.10 Archive function.......................................................................................................................................................................................................................................................... 150
86.11 Unarchive function...................................................................................................................................................................................................................................................... 150
86.12 Listarchive function..................................................................................................................................................................................................................................................... 150
86.13 FTP-Filetransfer (Beispiel)............................................................................................................................................................................................................................................ 151
86.14 Daten aus einer gejointen Datasource (Vendors) aus den Ursprungstabellen (LFA1+LFB1) lesen:..............................................................................................................................151
1.112 Konstanten definieren............................................................................................................................................................................................................................................................. 152
1.113 Variable als numerisch definieren........................................................................................................................................................................................................................................... 152
1.114 Semikolon in einem String ersetzen........................................................................................................................................................................................................................................ 152
1.115 Stringformatierungen.............................................................................................................................................................................................................................................................. 153
1.116 Finden der ersten Position eines Zeichens in einem String..................................................................................................................................................................................................... 153
1.117 Zählen der Felder innerhalb eines Strings............................................................................................................................................................................................................................... 153
1.118 Umlaute-Umwandlung............................................................................................................................................................................................................................................................ 153
1.119 Änderung des Formats in der Dateiausgabe (UTF-8 / ANSI).................................................................................................................................................................................................... 155
1.120 Do…While in anyERP............................................................................................................................................................................................................................................................... 156
1.121 BPM / BPME............................................................................................................................................................................................................................................................................ 156
1.122 Built-in methods...................................................................................................................................................................................................................................................................... 157
1.123 Interface Distribution.............................................................................................................................................................................................................................................................. 190
1.124 Nachträgliche Belastung / Entlastung...................................................................................................................................................................................................................................... 201
1.125 Ungeplante Bezugsnebenkosten............................................................................................................................................................................................................................................. 201
1.126 FI-Modul.................................................................................................................................................................................................................................................................................. 201
1.126.1 Steuer rechnen................................................................................................................................................................................................................................................................. 201

Seite 7 von 208


1.126.2 Ungeplante Kontierung / Kontierungsänderung.............................................................................................................................................................................................................. 202
1.127 Withholding tax....................................................................................................................................................................................................................................................................... 203
Fehler/Probleme................................................................................................................................................................................................................................................................................... 205
1.128 Interface Distribution.............................................................................................................................................................................................................................................................. 205
Analytics................................................................................................................................................................................................................................................................................................ 206
1.129 Analytics Rollenzuordnung...................................................................................................................................................................................................................................................... 206
1.130 Erstellung von Custom Reports............................................................................................................................................................................................................................................... 206
API:........................................................................................................................................................................................................................................................................................................ 221

Seite 8 von 208


Overview
1.1 P2P Schema

Seite 9 von 208


Konfiguration

1.2 Session timeout definieren


Wird in der GDM definiert

1.3 TAX – Rundungsfehler vermeiden:


Folgende Formel dem Feld „Tax Amount“ hinterlegen:
ROUND(([CodingRow.NetSum]*(([CodingRow.TaxPercent]+[CodingRow.TaxPercent2])/100))+0.005),2)

1.4 eMail-Sendeadresse:
Wird im “Configuration Mode” unter „eMail-Types“ definiert.

1.5 SSO-Link
EDGE:

https://alpla.p2p.basware.com/Portal/WifLogin

https://alpla.p2p.basware.com/Portal/WifLogin/Default.aspx?returnUrl=%2fedge%2f

Seite 10 von 208


1.6 Hinzufügen neuer Sprachen
Funktioniert über Configuration Tool -> UI Texts -> rechts auf das kleine Zahnrad -> Sprache hinzufügen.
Wichtig: anschließend ab- und wieder anmelden, damit die Sprache verfügbar ist.

1.7 Übersetzungen/Änderungen Mailtexte


Summary eMails über die Resource-ID ecf.summary_emails.content….. in UI-TEXT
Standard eMails über die Resource-ID IA.emails.content…..

1.8 Supplierauswahl füllt Payment Term – Feld


Damit die Supplierauswahl das Payment Feld mit füllt, muss das Feld „Supplier ID“ definiert werden und im Feld „Unique column“ eingerichtet sein:

Außerdem muss die Supplier LookUpListe an die SupplierID gelinkt werden, auch wenn das Feld nicht unbedingt angezeigt wird.

Seite 11 von 208


1.9 Filter dependence Used if a filter is set to lookup list columns.
Clear : All values retrieved from a lookup list are cleared if a field used as filter is cleared.
None : Values will remain when user change the field value in filter.
Retain : Values retrieved from a lookup list are retained if a field used in a filter is cleared or changed.

1.10 Columns
Name column:Name column is used by Edge client to show the name. In other application it is only for reference.
Value column: Where the value is taken from that is shown in the lookup list (Must be a column with a Target)
Unique column: Define the Unique column. User need a unique entry in the DB (which is different from the ID. Because you could have multiple times the very same
text_1, text_2 combinations for different text_3 values (filter set on text_3) in order to get the system to work with this list, you'd probably have to combine text_1+text_3
as text_4 to generate the unique column in the application (mapping issue in the import mostly). It is not necessary that value column and unique column are identical

1.11 File Attachments definieren


Change the values in the table CMN_ATTACHMENT_ALLOWED_TYPE by

1. remove unwanted attachments types


2. change the order to guarantee, that PDF is on the first.

Here the result:

Seite 12 von 208


1.12 Identifiers in SaaS

Die vordefinierten identifier keys dürfen auf keinen Fall gelöscht werden.

1.13 Anzahl maximal möglicher Kontierungszeilen ändern

1. View the coding row limit using below command (currently set to 800):
select * from cmn_tenant_settings where Name='MaxCodingRowLimitForRegularDocument'
2. Update the value for MaxCodingRowLimitForRegularDocument field in cmn_tenant_settings table.

1.14 IA_CONFIG parameter


Supported
Value Description General Description
Config Setting Values

Allowed Coding Tolerance fixed numeric value Defines the allowed coding tolerance that invoice can have in coding difference when executing the retransfer action.

Storage Language Code Supported language codes in the system. Defines the language which is used when creating a pdf-file from the invoice when invoice is archived.

Ex. en-US.
External Tax Calculation for Coding 0,1 0 = not in use Calculate tax is a feature that calls the anyERP. All coding rows are send in the call.

Seite 13 von 208


Rows
1= in use anyERP can modify existing coding rows, delete or create new coding rows based on the rules set in anyERP
template.Cal
Entry Point Name for External Tax AdvancedTaxCalculation1 -
Entry point name for anyERP call. Mandatory information to get the anyERP call working.
Calculation AdvancedTaxCalculation5
0= rows are editable Coding rows generated in automatic matching are sealed and in default read only for end users.
Coding Row Sealed 0,1
1= rows are read only With this settings that can be overrided so that also these codings rows can be edited
External validation is a feature that calls the anyERP when coding row is edited in UI. One call per row after focus is
0 = not in use
left from the row.
Advanced Validation for Coding Rows 0,1
1= in use
Based on the response from the anyERP, row can be set to Ok, Warning or Error state with an Error message.
Entry Point Name for Advanced CustomerAdvancedValidation1 -
Entry point name for anyERP call. Mandatory information to get the anyERP call working.
Validation CustomerAdvancedValidation10
Supported language codes in the system.
External Image Viewer Language
Defines the language which is used when creating a pdf-file from the invoice when external image viewer is used.
Code
Ex. en-US.
0 = not required
Require Complete Coding 0,1 Defines whether the invoice is needed to be complete coded when executing the retransfer action.
1 = required
Row approval feature has two modes for allocating rows based on the advanced user rights.

0 = rows are allocated based on the


In default the limit set in either user rights or in the organization level permissions is not taken into use.
dimension values only
Approval Limit used in Row Approval
0,1
Allocation Limit can be configured to take into use with this setting. Then all same dimension rows must be under the supported
1 = rows are allocated based on the
limit granted in user rights.
dimension values and limit

If limit exceeded, then the next person is used from the advanced user rights.
0 = use net sums
Gross Total Used in Limit Calculations 0,1 Defines are either net sums or gross sums used in calculations when limit mode is used in row approval allocation.
1 = use gross sums
0 = use company sums
Gross/Net Total (Organization) used in Defines are either company sums or organization sums used in calculations when limit mode is used in row approval
0,1
Limit Calculations allocation.
1 = use organization sums
CustomerCancelInvoice1 –
Removed Invoice Entry Point Entry point name for anyERP call. Mandatory information to get the anyERP call working.
CustomerCancelInvoice10
0 = Default mode Default mode - can't approve same invoice both as an original recipient and backup user
Allow Backup Approval of Self-
0,1
Handled Tasks
1 = Multiple mode Multiple mode - can approve same invoice both as an original recipient and backup user.
Ignore Row Level Recipient Check 0,1 0 =Recipient added at row level
(approve/review) will be ignored while

Seite 14 von 208


creating header level task

1 =Recipients added at row level


(approve/review) will not be ignored while
creating header level task
If enabled, extensions will run on the rows added by AnyERPCallHandler. These extensions include expression formulas, lookup
list extensions (e.g. fetching name based in code), execution of permission codes (for resolving row level recipients).
0 = Disabled (For old customers)
Enable Processing of Coding Rows This will allow row approval as all coding rows added by a generic anyERP task will get recipient assigned based on the advanced
0,1
Added by anyERP 1 = Enabled (For new Customers) authorization rules. The recipient resolving for row approval works in same way as it works for other coding rows created during
the invoice process.

This parameter will have no impact in case any existing row is modified in AnyERPCallHandler
0 means application validate coding rows in
one go that is whole batch of imported coding
rows will be validate and success/failure
message will be available to user immediately
with all imported rows. Chunk size of
validating coding rows in batch is of 50. Prevent validating coding rows feature is to improve the performance of validate coding rows in batch based on
Prevent validating coding rows in batch 0, 1
Organisation
1 means application will validate the imported
coding row in batch one by one that is
validation success/failure message will be
available to user one by one for each
imported coding row.

1.15 CMN_TENANT_SETTINGS
Tenant Setting Name Default Value Description

This setting is to control whether or not secure_variables field is passed to AnyERP. When it is set to false secure variables will be passed to AnyERP and when it
AnyERPLegacyVariables false
is set to true secure variabes will not be passed to AnyERP.

This setting is to control the visibility of SaaS Administrator users in the user pickers.
BaswareUsersExcluded true True: Basware users will not display in the user pickers but they still have their rights as earlier.
False: Basware users will be visible in the Users pickers as recipients.

BCS.AnyERP.Enrich.Enabled false

BCS.Transfer.Id N/A This option is for ICS for Importing the Invoice from Portal

2016-06- This setting will check the Catalog Indexes. If there is any change in suplier, Category or catalog, it will update the indexes. It run (checked) in every 10 mins
CatalogIndexUpdatedTimeStamp
29T11:55:31 duration

ClosePOwithGrRequiredInDays 14 This will Define the number of days for PO closing if GR is True. Received status PO will close after 14 days (Default value for the field).

Seite 15 von 208


0 = automatic closing of PO's is disabled (all PO's would have to be manually changed to status "Closed" when deemed appropriate)
X = automatic closing of PO's would happen X days after fully receiving all of the PO lines (default value of X should be 14 to make the new solution compatible
with the current hard coded implementation)

This will Define the number of days for PO closing if GR is False. Order and Confirmed status PO will close after 14 days (Default value for the field).
Closing an order without receipts allow invoices to be matched with ordered total. Invoices with 2-way match can be steered to manual invoice process using the
matching validation rule ”Review required for invoices matched without goods receipts”.
ClosePOwithNoGrRequiredInDays 14
0 = automatic closing of PO's is disabled (all PO's would have to be manually changed to status "Closed" when deemed appropriate)
X = automatic closing of PO's would happen X days after fully receiving all of the PO lines (default value of X should be 14 to make the new solution compatible
with the current hard coded implementation)

CodingMatrixEnabled false This Setting will enabled the FTF lookup list. apart from this Ct configuration is required to run the feature correctly.

This setting is for overwritting the existing data of Additional Data tab of a Supplier with data present in xml while importing. Set it as 'true' if user wants to
DeleteAdditionalDataDuringSupplierIm false
overwrite the existing data of Additional Data tab with the one present in xml file while importing a Supplier.
port

This setting will enable the 'Edit requisition' button on the following Workplace views:

 Products List & Detail


 Free-text forms
 Compare products
 Shopping basket

EditRequisitionShortcutEnabled true Allowed values:

 true: the button is visible


 false: the button is not visible
 workplace: the button is visible
 (edge: if you want to enable the button for Edge, use the Edge-specific settings EdgeEditRequisitionShortcutEnabledInBasket or
EdgeEditRequisitionShortcutEnabledInFreeTextForm)

EnableAdvancedPermissionImportHist false This setting is for enabling the history for importing Advance User Rights. Set it as 'true' if user wants to generate history for imported Advance User Rights.
oryGeneration

EnableImportLogging false This setting is for generating logs while importing Supplier. Set it as 'true' if user wants to have error logs for failed Supplier Import.

ExpressCheckoutEnabled true This setting will enable the 'Order Now' button on the following Workplace views:

 Products List & Detail

Seite 16 von 208


 Free-text forms
 Compare products
 Shopping basket

Allowed values:

 true: the button is visible


 false: the button is not visible
 workplace: the button is visible
 (edge: if you want to enable the button for Edge, use the Edge-specific settings EdgeExpressCheckoutEnabledInBasket or
EdgeExpressCheckoutEnabledInFreeTextForm)

This setting defines if goods receipts are recorded for purchase orders in Basware Purchase.

GoodReceiptRequired true
When 'true' the system requires goods receipts to be recorded before invoice can be matched with an order. Set it as 'false', if goods receipts are not required. This
will result 2-way matching in invoice processing.
OrderDataExportEnabled false This setting will enable the PO export, XML will be generated for any changes in Purchase order.

SupplierImportSanityCheck 1000 This option is for setting the limit of data [Bank Account, Additional Data, Identifiers, Location] to be imported with Supplier while importing.

TEM.Url N/A

EnableEdgeClient false This option is for setting the redirection of the user to Silverlight Client OR Edge Client. By default setting is set as False, so the users will be redirected to
silverlight client & when setting is set as True then users will be redirected to Edge Client.

Access workplace even when the tenant specific setting is on (Edge enabled):
Direct link to workplace - http://$hostname/Portal/FormsLogin/ Default.aspx?forms=1&sl=1&returnUrl=/P2PPortal/Default.aspx &tz=120&ln=en-US&lnf=en-US
To use workplace even when the setting is true to use edge client, then alusta link needs to be added with return url text: "returnUrl=/P2PPortal/"

More examples:
WifLogin:
https://$hostname/Portal/WifLogin/?sl=1&ln=en-US&lnf=en-US&bwua=bwsaasad&tid=DIV (Will work as per tenant setting)
http://$hostname/Portal/Default.aspx?sso=1&sl=1&ln=en-US&lnf=en-US&bwua=bwsaasad&tid=DIV (Will work as per tenant setting)
http://$hostname/Portal/Default.aspx?sso=1&sl=1 (Will work as per tenant setting)
https://$hostname/Portal/WifLogin/?sl=1&returnUrl=/P2PPortal &ln=en-US&lnf=en-US&bwua=bwsaasad&tid=DIV (Will always open workplace even if tenant is
enabled to use edge client)

Portal:
https://$hostname/Portal/FormsLogin/Default.aspx?forms=1 &sl=1&tz=330&ln=en-US&lnf=en-US (Will work as per tenant setting)
https://$hostname/Portal/FormsLogin/Default.aspx?forms=1&sl=1&returnUrl=/P2PPortal/Default.aspx&tz=120&ln=en-US&lnf=en-US (Will always open workplace
even if tenant is enabled to use edge client)

Domain:
https://$hostname/Portal/DomainLogin/Default.aspx?forms=0&sl=1&tz=330&ln=en-US&lnf=en-US&tid=tenant01 (Will work as per tenant setting)
https://$hostname/Portal/DomainLogin/Default.aspx?forms=0&returnUrl=/P2PPortal&sl=1&tz=330&ln=en-US&lnf=en-US&tid=tenant01 (Will always open
workplace even if tenant is enabled to use edge client)

Seite 17 von 208


If Url contains "returnUrl=/P2PPortal", user is navigated to workflow irrespective of the tenant setting, else application will use edge client as per tenant setting.

GoodsReceiptDataExportEnabled false This setting will enable Goods Receipt (UBL 2.0 ReceiptAdvice xml) export, XML will be generated for all Goods Receipts.

This setting is for:

Organization Import:

When AllowEHFOrdering is true for tenant:

 Admin import will allow only ISO specific country codes to be set into country address part.
 If a valid country code is found, admin will set the corresponding country name to country_name country_ID address part in organization's default
language provided.
 Admin will show an error in the end of import if some addresses are not compatible.
 Import will skip the address part if any address part is not compatible.

When allow EHFOrdering is false for the tenant:

 Admin import will not restrict country address part in any manner.
 If a valid country code is still found, admin will set the corresponding country name to country_name country_ID address part in organization's default
language provided.
 If valid country code is not found, Admin import will now set the same value into country_name country_ID address part as well .
 User is warned about incompatible countries in the end of import. Import is not stopped. Incompatible changes are imported. NOTE: This could conflict
with long term goal of moving all tenants towards ISO compatible country lists.

Supplier Import:
AllowEHFOrdering false
When AllowEHFOrdering is true for tenant:

 Admin import will allow only ISO specific country codes to be set into country address part.
 If a valid country code is found, admin will set the code to country_code address part and set the name of that country to country_ID address part.
 Depending on LoggingEnabled, Admin will log an error during import if some addresses are not compatible.
 Import will skip country address part if the address part is not compatible with ISO list. This is general approach in Supplier import for required fields.
 The errors will be sent via email to the user as per existing rules applicable to supplier import so that user can fix the import file.

When AllowEHFOrdering is false for the tenant:

 Admin import will not restrict country address part in any manner.
 If a valid country code is still found, admin will set the corresponding country name to country_name address part.
 If NO valid country code is found, Admin import will set the same value into country_code address part as well.
 User is not warned about incompatible countries in the end of import. Import is not stopped. All address parts are imported.

Note: If invalid values are saved for country field when the setting is False then on making the setting as True then the invalid value will be retained. No error

Seite 18 von 208


message will be displayed. This needs to be fixed manual.
This setting is of assigning User Group to Users:

 By Default it is false & Default would mean that functionality will be working as previously, so that groups are shown from upper administrative site only.
And groups cannot be assigned from user home organization’s lower or sibling organization.

 If setting is true then it provides solution so that all user groups from different organization structures will be accessible/visible to user group picker and
AllowUserGroupMembershipFromAllOr also can be assigned through user import. This would mean that groups can be accessible and assigned from any organization or hierarchy.
false
ganizations
ReleaseNotesUrl This parameter defines the URL that "What's new in this release"-button opens in P2P. By default it opens P2P release notes page
N/A

This parameter is related to integration between Purchase Manager and P2P AP Automation. A valid URL in this parameter indicates that a successful integration
between Purchase Manager and P2P AP Automation is active.. Empty value or an incorrect URL means that the integration is disabled.

Expected value is URL for Purchase Manager's login view.

A user is redirected to the URL defined with this parameter at the time when user tries to enter P2P login.

VerianIntegrationRedirection N/A
https://<pm_server>/<tenant_code>/cfms/security/login.cfm

<pm_server> is replaced with the load balancer URL for Purchase Manager.

<tenant_code> is replaced with the name of the customer instance for Purchase Manager.

Example: https://example.verian.com/myexample/cfms/security/login.cfm
This parameter is related to integration between Purchase Manager and P2P AP Automation. It defines P2P Edge landing page in case the URL where the user accessed the
system pointed towards P2P AP Automation instead of Purchase Manager. In the integrated environment the user login always takes place in Purchase Manager.

http://<p2p_server>/edge/
VerianIntegrationEdgeLandingPage N/A

<p2p_server> is replaced with the P2P AP Automation server name

Example: https://example.basware-saas.com/edge/
VerianIntegrationVerianLandingPage

This parameter is related to integration between Purchase Manager and P2P AP Automation. It defines PM landing page that is used in the P2P standard access point
towards PM.

https://<pm_server>/<tenant_code>/

Seite 19 von 208


<pm_server> is replaced with the load balancer URL for PM

<tenant_code> is replaced with the name of the customer instance

Example: https://example.verian.com/myexample/
True = In Professional Mode tabs, Invoices are loaded automatically when tab / screen is changed. (According to the max item limit of List View configuration)

SearchInvoicesOnNavigation True
False = Prevents automatic screen loading when navigating between different List Views.

TEM.EdgeURL N/A TEM navigation link to be used in Edge top navigation for customers that have TEM in use.

This parameter is related to Match Orders business logic and is valid since version 18.2.

When False, the system uses unit price defined in the matched order line in all calculations.
MatchingWithGRUnitprice False
When True, the system uses unit price from the matched goods receipt in cases where matching is done between an invoice and goods receipt.

When parameter is missing, the default value is 'False'.


This parameter is related to Match Orders business logic and is valid since version 18.3.

SumBasedSubsequentInvoiceMatching false When False, the system behaves as in earlier versions for subsequent invoice matching.

When True, then one subsequent sum is proportionally allocated across multiple PO rows or GR rows
True = UI will show Smart Coding.

SmartCoding true False = UI will not show Smart Coding option.

More details: HERE


Default = 100

Max = 1000
MaxInvoiceLimitForSmartCoding 100
using this parameter the number of past invoices that are used for smart coding can be configured.

More details: HERE


MaxCodingRowLimitForRegularDocum 800 Default = 800
ent
Flag to define the number of coding rows which determines is the invoice large or regular.

If invoice contains less coding rows than parameter value -> Invoice is regular -> actions are performed synchronous. Means that the user is waiting to action to

Seite 20 von 208


happen.

If invoice contains more coding rows than parameter value -> Invoice is large -> actions are performed asynchronous. Means that the action happens on the
background as a batch action and user can take another actions meanwhile.

More details: HERE


True = On opening any recipient picker to select row approve users will automatically fetch and display the list of users. The behavior is same in Workplace and
Edge client.

False = On opening any recipient picker to select row approve users, the list of users will not be loaded automatically. Following is the UI behavior in Workplace and
true Edge client:
AutomaticallyLoadRowApproveRecipie
nts
o Workplace Client: When the recipient picker is opened, the list of users is not displayed. The user can perform a search by entering some text.
If the search is performed without the text, then all the list of applicable users is fetched and displayed.
o Edge Client: When the recipient picker is opened, the list of of users is not displayed. An option "View all recipients" is available. The users can
click this option to see the list of all the applicable users or perform a search by entering some text.

More details: HERE


If this setting is set as TRUE, then only SSO users (login type 'ExternalAuthenticatonLogin') are allowed to login in Alusta and Non SSO users (login type
'Username and Password') login are not allowed.
OnlySSOLogin false

More details: HERE


This parameter enables user to populate the remaining header invoice sum to the newly added coding rows
EdgeAutoFillCodingSum true
More details: HERE
InvoiceEmailTokenPeriod 30 This is used to set valid days for link sent in email while invoice dispute.
This is used to set valid days for link sent in email while approving invoices over email.
InvoiceEmailApprovalTokenPeriod 8
More details: HERE
If this setting is set as TRUE, then the entities can be defined separately in Purchase.
EnableOrgSpecificEntities false
More details: HERE
This determines the number of days to delay GR notifications by after the PO creation date.
0
GRTaskNotificationDelayInDays
More details: HERE
This determines the logic by which GR notifications are delayed. See valid values from the detailed article.
GRTaskNotificationStartDate DelayInDays
More details: HERE

Seite 21 von 208


Session idle timeout setting. With no value uses system default. Value in minutes, 15-120. N/A if user specific session timeout is in use.
SessionExpiration N/A
More details: Session Timeout Configuration

false: system default or SessionExpiration value


true: user specific setting or system default
EnableUserBasedSessionExpiration false
More details: Session Timeout Configuration

The latter part of the matching process (generating coding rows, calculate invoice row statuses) is done in smaller slices if
MatchingSliceSize 30000
total count of associations is bigger than given value

MatchingLoggingEnabled False Matching own log. Good for testing phase.

MatchingWithGRUnitprice New GR Unitprice validations in use


True

SumBasedSubsequentInvoiceMatching False Sum based Subsequent handling

WaitNextMatchingExecutionWhenNew False Disable dynamic automatic matching when a new goods receipt arrives
GRArrives

MatchingCalculateOrderAsynchronousl False Whether PO Status Calculation is called async in AWS when cancelling process
y

OMBypassOrderNumberUpdate False Bypass updating Invoice's PO Numbers after association

LimitedFiltersInMatchingGRSearch Limited number of effective fields in goods receipt search


True

LockMatchingOrderWhileUpdating True Lock's PO at the time of import. ONLY for OPENAPI

MatchingBigData False BigData Search in use

MatchingWaitingForMissingPO False If true and PO not found invoice ends up to "waiting for something"

MatchingBigDataPOHeader Performance increases dramatically in PO Header Basic Search and GR advanced search
False

MatchingPartialMissingGRAllowed False If True, then all lines with enough goods receipts is matched automatically when Invoice lands in MM

MatchingOrderReferenceFromInvoiceLi False If True, then the order number will be picked from the invoice lines.
nes

Seite 22 von 208


False If true matching searches child PO:s from table OM2_ORDER_REFERENCE
MatchingOrderReference

If true, suppliers that are set in Alusta to receive POs by email will instead receive SmartOrder emails. From the SmartOrder emails they can access the PO in
Basware Network to accept, decline, or make changes. The supplier does not need a Basware Network account to do this.

If false, suppliers set to receive POs by email will receive the normal email sent by Alusta, with the PO PDF attached.
EnableSmartOrders False
This setting affects all of the tenant's suppliers.

For more information, see SmartOrders

AccessDomain N/A URL for Basware Access service. Needed when authentication is via Basware Access.

False for Alusta autentication. True for tenants where authentication is via Basware Access.
BaswareAccess false Basware Access requires service provisioning via CMOS and users through MDD. Basware Access enables MFA and allows using same user data in several
Basware services

IF invoices are deleted permanently, this setting is used to configure the temporary trashcan where deleted images and attachments are stored before they are
IA.Invoice.TrashcanBucketName N/A permanently deleted.

This setting will enable the 'Edit requisition' button on the 'Your Requisition' view in Edge.

Allowed values:
EdgeEditRequisitionShortcutEnabledIn true
Basket  true: the button is visible
 false: the button is not visible

This setting will enable the 'Edit requisition' button on the Edge free-text forms.

Allowed values:
EdgeEditRequisitionShortcutEnabledIn
FreeTextForm true
 true: the button is visible
 false: the button is not visible

This setting will enable the 'Get Approval' button on the 'Your Requisition' view in Edge.

Allowed values:
EdgeExpressCheckoutEnabledInBaske
t true
 true: the button is visible
 false: the button is not visible

true This setting will enable the 'Get Approval' button on the edge free-text forms.
EdgeExpressCheckoutEnabledInFreeT
extForm

Seite 23 von 208


Allowed values:

 true: the button is visible


 false: the button is not visible

HTML invoice image upload/import can be disabled with this setting.

EnableHTMLImageUpload Allowed values:


true - true: HTML images can be uploaded
- false: HTML images cannot be uploaded

TRUE: When a user copies a purchase requisition to a new PR, all the Price fields are set to blank.
FALSE: When a user copies a purchase requisition to a new PR, the price fields retain their original information.
NOTE this does not update any product prices to reflect price changes. It instead copies prices as they were on the original

ClearItemPricesonCopiedPR FALSE

It is inadvisable to set ClearItemPricesonCopiedPR to TRUE if price fields are not configured in CT to be editable in the PR draft state. If this happens, the user
cannot enter new prices, and will not be able to submit the purchase requisition to get approval.

TRUE: When a user copies a PR, the Cost Center field is re-evaluated, and changed to match the user's Cost Center. (this results in a change of cost center if one
user is copying another user's PR; current behavior on copy
FALSE: When a user copies a PR, the Cost Center field retains the original document owner's Cost Center. It will not be changed to the new user's cost center
ResolveUserCostCenteronCopiedPR TRUE

If a user is copying a purchase requisition outside their home organization, and ResolveUserCostCenteronCopiedPR is set to TRUE, the cost center remains as it
was on the original PR. This is because the user’s cost center does not exist in an organization outside their home organization.

With the tenant setting 'PaymentPlanNavigation' it is possible to configure whether the P2P professional users view and manage payment plans in Accounts
Payable or in Procurement.
Allowed values

PaymentPlanNavigation  accountsPayable - users can view and manage payment plans in the Accounts Payable solution
accountsPayable  procurement - users can view and manage payment plans in Procurement (Purchase professional tools)

Note: It is not recommended to change this setting to procurement if the customer's users are not using the most recent Edge version (Chromium-based Edge) as
their browser. Payment plans are only supported in the Chromium-based Edge browser, while other views in Procurement will also work with an older version of
Edge.

ApProEnabled True With the new AP Pro, its easier to track invoices. AP Pro enables AP professionals to better manage their workload and further speed up the invoice processing

Seite 24 von 208


cycle.

This setting is used to enable AP Pro in tenant environments.

Allowed values:

 true: AP Pro is enabled for use.


 false: AP Pro cannot be used.

DynamoDBControlStateEnabled True When this setting is true, DynamoDB is used for storing control state (grid configuration, selected search filters etc.) of AP Pro, PpPro and Purchase Pro.

Allowed values:

PpProEnabled True  true: Spend Plans Pro is enabled for use.


 false: Spend Plans Pro cannot be used.

Hidden tenant settings - stored in CMN_TENANT_SETTINGS-table, but not visible in tenant settings UI.

Tenant Setting Name Default Value Description

This setting is for overriding the cluster specific AnyERP file server location for one tenant.
AnyERPFileServer N/A
Never to be changed unless infra deployment so requires

There are two types of invoice token: AnyErp-0 and Dispute-1. This authorization setting is only for the
permanent AnyERP-0 tokens. Dispute-1 tokens are temporary and always TOKENBASED.

SSOAUTHENTICATION - User session is validated and action log entry written to invoice history. Requires
ImageViewerAuthorization DISABLED SSO from the user.
TOKENBASED - User session is not validated, token is checked to retrieve right invoice.
DISABLED - Functionality not in use.

To be turned on only with customer's written request.

Defines whether invoice approvals via email are allowed or not.


InvoiceEmailApprovalInUse false
To be turned on only with customer's written request.

ManualActivationBaswareUsers false

Seite 25 von 208


Basware user accounts are created on first login without the customer's approval or knowledge.Tenant
specific setting so that when a basware user first attempts to login the account is created but set to be
inactive. Customer actions are required for Basware user to login.

To be turned on only with customer's written request.

More details: HERE

Login reason for operator users, is a 'SaaS only' Tenant specific functionality that asks for a reason of login
from every operator that logs into the system.

LoggingLoginReasonForBaswareAndPartnerUsers false
To be turned on only with customer's written request.

More details: HERE


Basware Customer ID for services that do not have Alusta tenant. Managed internally, never to be changed
N/A via tenant settings.
Basware.Customer.Id
Settings for accessing OpenAPI Transformation Services via consulting tools. Never to be changed via tenant
N/A settings.
OpenApi.ConsultingTools.Settings
DeleteInvoiceEnablerKey N/A Never to be changed via tenant settings UI.

1.16 IA_CONFIG_SETTINGS
Parameter name Possible values Comment
ACTION FORWARD This specifies the action on which the setting is to be applied.

FORCE_MATCH FORWARD - This parameter will have an impact to both Personal and
Professional modes.
REQUEST_MANUA_APPROVAL
These parameters are impacted only in the Profesional mode and the Matching
RESERVE_IN_MANUAL_MATCHIN

Seite 26 von 208


view:

G  FORCE_MATCH
 REQUEST_MANUA_APPROVAL
CONFIRM_MATCHING  RESERVE_IN_MANUAL_MATCHING
 CONFIRM_MATCHING

SETTING REQUIRE_COMMENT This specifies the setting to be applied on the action.


This specifies the value to be set for the setting. This takes the following
values:
0
0 – Not Required (This is same as 1 for this setting)
VALUE 1
1 – Optional (This means comment is optional during forward action)
2
2- Mandatory (This means comment is mandatory during forward action)

1.17 Additional Data beim Supplier mit auswählen


Für weitere Daten muss das Feld eingerichtet werden und mit einer separaten LookUpList gefüllt werden.
Die weitere LookUpList muss einen Filter haben, welche aus der Kreditorenauswahl den Wert in der zusätzlichen Liste filtert:
Hilfsfeld:

LoopUpListSource:

Tabelleninhalt der ADM_SUPPLIER_BANK_ACCOUNT:

Seite 27 von 208


LookUpList:
Füllt anhand der Supplier ID in TEXT24 die Felder TEXT27 + TEXT28:

Felder:
TEXT24 = Filterfeld mit der Supplier, ID, TEXT27 + TEXT28 werden gefüllt.

Seite 28 von 208


Users/Groups/Struktur

1.18 Default Tenant Struktur nach Bereitstellung


Wenn man für ein neues Projekt einen SaaS Tenant aufgesetzt bekommt, stellt sich dieser wie folgt dar:

Man sollte nicht in Versuchung geraten diese Gruppe zu löschen, weil man evtl. eine Company oder andere Strukturelemente anstatt einer Gruppe verwenden möchte. Es gibt einige
Elemente innerhalb von Alusta die auf diese Gruppe basieren.

1.19 Organization Elements


Damit beim Erstellen einer neuen Rechnung auch die Organisationen korrekt angezeigt werden, müssen die Buchungskreise unterhalb der Organisation eingerichtet worden sein. D.h.
Besteht eine Struktur nur aus Gruppen, werden diese nicht angezeigt bzw. Gruppen werden generell nicht angezeigt.

1.20 User Groups


BASIC USER GROUP = Rolle kann auf jedem Organization Element anders sein! (Siehe ACCOR)
HOME USER GROUP = Rolle ist überall identisch = inherit down für diese Ebene und alles darunter

Seite 29 von 208


Rules
1.21 Regel welche mit ToNumber Werte vergleicht:
Hinweis: der zu vergleichende Wert muss ebenfalls mit ToNumber formatiert werden.
((ToNumber([PlanCodingRow.AccountCode]) < ToNumber("400000")) and (LEN([PlanCodingRow.CostCenterCode]) > 0)) or (ToNumber([PlanCodingRow.AccountCode]) > ToNumber("399999"))

1.22 Regel welche prüft, ob Kontierungszeile vorhanden ist (Review)

1.23 Advanced Validation (Definition)


Check ähnlich Feldstatusgruppen.
Konfiguration in InvoicePro_Customer_AdvancedValidation.xml
Advanced Validation muß erstmal eingeschaltet werden:

Seite 30 von 208


Die geprüften Felder werden in EXT_IF_VALIDATION_ROUTINES angelegt. Im „Keyfield“ wird definiert, in welchem Feld geprüft wird. Dimension-Felder sind dann jene, die dann gefüllt werden
müssen, nicht dürfen oder können, was dann in EXT_VALIDATION_RULES definiert wird (siehe unten)

In EXT_VALIDATION_RULES wird definiert, wenn das Keyfield den Wert „1000“ enthält, welche der oben definierten Felder dann unten mit welchen Werten gefüllt werden
1- Müssen
2- Nicht dürfen
3- Können
…definiert im Feld Dimension1, Dimension2, Dimension3…..

Die Grenzwerte werden dann jeweils in DimenstionX from und DimensionX to definiert.

Seite 31 von 208


Hier bedeutet es nun: Bei Account „1000“ muss das Cost Center 1000 – 1999 eingetragen werden, außerdem kann TEXT15 (Dimension 2) gefüllt werden.

1.24 Meldung: „Advanced Validation is not enabled”


Problem: Beim genannten Buchungskreis ist in IA_CONFIG die „Advanced Validation“ nicht auf aktiv gesetzt:

Seite 32 von 208


Workflow

1.25 Recipient nach Kreditoren


Für bestimmte Kreditoren sollen User die Rechnung als erster Empfänger zugewiesen bekommen.
Tabelle „EXT_RECIPIENT_RESOLVER“ muss gefüllt werden. Diese Tabelle muss für den User freigegeben werden, indem der „Configuration Type“ in der GDM gesetzt wird und der User
Adminrechte erhält, damit er diese Tabelle pflegen kann. In dieser Tabelle wird der Rechnungsempfänger, der Supplier-Code und die Belegart gefüllt. Hierbei ist darauf zu achten, dass dieser
auf dem richtigen Administrator_site_id – Level angelegt wird. (sieht man im anyERP – Logfile, wenn kein User gefunden wird)
Fehlerbeispiel:
25/09/2017 14:14:17.395 [ELEMENT]Loading Parameter 'parameter1' with value 'c1beabeea48b484f865ea68000ae2700'
25/09/2017 14:14:17.395 [ELEMENT]Loading Parameter 'parameter2' with value '70068'
25/09/2017 14:14:17.395 [ELEMENT]Loading Parameter 'parameter3' with value 'INV'

25/09/2017 14:14:17.426 [ELEMENT]Query 'SELECT A.LOGIN_ACCOUNT as LOGIN_ACCOUNT, A.MANDATORY AS MANDATORY FROM EXT_RECIPIENT_RESOLVER A, ADM_USER_DATA B WHERE UPPER(B.LOGIN_ACCOUNT) =
UPPER(A.LOGIN_ACCOUNT) AND A.ADMINISTRATIVE_SITE_ID = :parameter1 AND A.SUPPLIER_CODE = :parameter2 AND A.INVOICE_TYPE = :parameter3' affected 0 records.

Beispiel („Key Value“ ist die Kreditornummer):

Im Workflow muss dann unter „Review Activity“ ein AnyERPResolver definiert werden:
Hinweis: Es darf kein „Additional Parameter“ definiert werden, da sonst nicht das Corefile angesprungen wird sondern der dort definierte CustomerResolverX.
Im Core gibt es bereits eine Logik, die die Rechnungen korrekt zuweist.

Seite 33 von 208


1.26 Approve ohne Review (Alusta stürzt beim Approve ab)
Problem: beim Approve oder Forward stürzt Alusta ab.
Lösung: Auch wenn im System nur „Approve“ laufen soll, braucht der Approver das „Review“ – Recht.

1.27 Advanced User Rights – Workflow auf RowLevel

 Definition der DimensionX – Felder zu einem Datenfeld. (hier: Projektnummer)

 Definition des Workflows

Seite 34 von 208


Seite 35 von 208
1.28 Standard-Workflow – NON-PO

Seite 36 von 208


Seite 37 von 208
Seite 38 von 208
Seite 39 von 208
1.29 Standard-Workflow PO+Matching

1.30 Advanced Tax Calculation


Es gibt keine Standard Tax Calculation in Alusta.
Die erweiterte Steuerberechnung von Basware Purchase-to-Pay ermöglicht die Codierung der Zeilenmanipulation in Basware P2P Invoice Automation. Das Modul kann die Codierungszeilenfelder
ändern und eine Codierungszeile entfernen oder hinzufügen.

Die Funktion kann für jeden Verwaltungsstandort separat aktiviert werden. Die erweiterte Steuerberechnung ist eine benutzerdefinierte Funktion. Es gibt keine standardmäßige
Geschäftslogikfunktionalität. Alle Konfigurationen basieren auf technischen Lösungen und werden gemäß den Kundenspezifikationen erstellt. Die Konfiguration erfolgt mit AnyERP.

Seite 40 von 208


Die erweiterte Steuerberechnung wird im persönlichen oder professionellen Modus aufgerufen. Sobald es aktiviert wurde, wird eine neue Schaltfläche über der Codierungszeile angezeigt:

Konfiguration:

Die erweiterte Steuerberechnung wird in der anyERP-Konfiguration InvoicePro_Customer_AdvancedTaxCalculation.xml erstellt.


Die unterstützte Funktionalität ändert eine vorhandene Codierungszeile und fügt eine Codierungszeile hinzu oder entfernt sie. Suchlisten und Ausdrücke werden wie in der Konfiguration der
verwendeten Entität definiert verwendet.
Rechnungskopfdaten sind schreibgeschützt und können mit der erweiterten Steuerberechnung nicht aktualisiert werden.

Seite 41 von 208


Purchase
1.31 Anlegen von Purchase Categories.
Damit man Kategorien importieren kann muss ein neuer LogonUser erstellt werden, der als “System User-Admin” definiert wird. Dort kann man das Recht „Manage Purchase Categories“
einrichten und der gewünschte Button wird eingeblendet:

Seite 42 von 208


Matching
1.32 Matching PO Nummer und/oder Delivery note Nummer
Wie verhält sich das System basierend auf den MatchingWaitingForMissingPO Parameter?

MatchingWaitingForMissingPO = True

If PO and DN are correct --> associates the DN’s that been given
If only DN given and is correct --> associates the DN’s that been given
If only PO given and is correct --> associates the PO that been given
If PO correct and all given DN incorrect --> associates using PO nro, ignores DN’s
If PO is correct and some DN are correct, some not, all GR’s received --> associates the correct, received DN (overmatch)
If PO and some DN are correct, some not, GR’s partly received --> waiting for GR

If MatchingWaitingForMissingPO = False
If PO and DN are correct --> associates the DN’s that been given
If only DN given and is correct --> associates the DN’s that been given
If only PO given and is correct --> associates the PO that been given
If PO correct and all given DN incorrect --> invoice in MM with PO not found error
If PO is correct and some DN are correct, some not, all GR’s received --> associates the correct, received DN (overmatch)
If PO and some DN are correct, some not, GR’s partly received --> waiting for GR

1.33 Matching zeigt nur 0-Werte


Lösung: Sum used und Matched sum muss von GrossSum auf NetSum umgestellt werden.

Seite 43 von 208


1.34 Erzwingen von Manual Matching
Wenn eine Rechnung erfolgreich gematcht wurde und trotzdem immer noch einmal vom User darüber geschaut werden soll, folg. Parameter setzen:

Seite 44 von 208


1.35 Order Matching

1.36 BPME

From IP:
N8 = Denominator
N9 = Numerator

<subProperty name="po_pr_qnt" type="system.decimal">{F,CALC(Invoice.A,N5;"*";Invoice.A,N9;"/";F,EVAL(Invoice.A,N8;"=";"";1;Invoice.A,N8))}</subProperty>

Seite 45 von 208


In other words:
<subProperty name="po_pr_qnt" type="system.decimal">{F,CALC(Invoice.A,Quantity;"*";Invoice.A,Numerator;"/";F,EVAL(Invoice.A,Denominator;"=";"";1;Invoice.A,Denominator))}</
subProperty>

Version for Alusta:

<property
name="PO_PR_QNT">{F,ROUND(F,EVAL(Invoice.A,MatchingMode;=;1;0;F,EVAL(Invoice.A,MatchingMode;=;3;0;F,CALC(Invoice.A,AllocatedQuantity;"*";Invoice.A,ConversionDenominator;"/";Inv
oice.A,ConversionNumerator)));3)}</property>

1.37 Subsequent Matching


damit Subsequent debit/credit (nachträgliche Be-/Entlastung) sauber im Matching arbeitet, ist erforderlich, dass man die Daten sowohl in der Invoice Line (subsequent flag), als auch in der
PO Line in den „xxxToMatch“ Feldern einträgt.
Nur dann funktioniert das Subsequent Matching. Laut Olav Maas findet hier derzeit eine Weiterentwicklung statt. Wir sollten also zukünftige Release Trainings im Auge behalten.
Side note: In den Validierungsregeln sind „subsequent debit/credit“ unter den Document Types auszuschließen, sonst bekommt man nur Validierungsfehler.

1.38 Matching-Beispiel “ILO”

Seite 46 von 208


FillUp

Seite 47 von 208


Seite 48 von 208
Seite 49 von 208
Seite 50 von 208
Basic

Seite 51 von 208


Seite 52 von 208
Seite 53 von 208
1.39 Matching-Beispiel “SODEXO“ (2 und 3-way match und framework PO)
2-way-match

Seite 54 von 208


Seite 55 von 208
Seite 56 von 208
Seite 57 von 208
3-way match

Seite 58 von 208


Seite 59 von 208
Seite 60 von 208
Framework PO

Seite 61 von 208


Seite 62 von 208
Seite 63 von 208
Seite 64 von 208
1.40 Match Plans

1. Es gibt drei Arten von „Match Plans“


Schedule-based: Hier wird lediglich ein Zeitplan definiert und welcher Betrag jeweils erwartet wird (zzgl. Toleranz). Es wird dann gegen eine Rechnung gematcht.
Budget-based: Es wird ein Budget definiert. Rechnungen können in Summe bis zu diesem Budget gematcht werden.
Self-billing: Es werden automatisch Rechnungen erzeugt. Hierzu muss ein Schedule-Task definiert sein welcher einmal in der Nacht läuft und keine weiteren Parameter hat:

2. Prozess für Match Plans approval:


a) “PayPlanReference” – Headerfeld einrichten (dagegen wird mit dem „PayPlanReference“-Feld des Plans gematcht.)
b) Userrollen einrichten (PP-Admin, PP-Reviewer, PP-Approver, Self-Billing nicht vergessen)
c) Usergroups einrichten (PP_Admin,PP_Reviewer, PP_Approver)
d) Usern die Gruppen hinzufügen
e) PayPlan-Approvel-Prozess wie folgt definieren:

Seite 65 von 208


Seite 66 von 208
1.41 Prozess für Matching gegen den PayPlan definieren:

Dann Association-Rules definieren:

Seite 67 von 208


Association Expression: [Invoice.PaymentPlanReference]=[PayPlan.PaymentPlanReference]

Dann alle PayPlan relevanten Datenfelder definieren.


Hinweis: die LookUp-Listen der normalen Invoice Felder dürfen hierbei nicht mehr verwendet werden. Es gibt dazu spezielle PayPlan LookUp-Listen

Damit „Self Billing“ auswählbar ist und funktioniert muss folg. definiert werden:

Seite 68 von 208


Entweder das Feld „Payment Message“ oder „Reference Number“ muss auf der Received/Create – Seite eingerichtet sein.

1.42 Match Orders Old Data Cleanup


CONFIGURATION
Go to the Admin Scheduler Task Configuration and find Matching cleanup task (under Basware Invoice Automation -module).
Set appropriate parameter values in Task Configuration for Matching cleanup task.

Seite 69 von 208


Parameter Descriptions

Parameter name Manda Parameter value Description An example


tory
Type Yes OldOrders Task copies associations into historical table and deletes them from Order A has CREATED date as 1.3.2011 (day /month/year), order B as
the original table if the order is older than defined in 2.3.2011 and order C as 3.3.2011.
MarkHistoricalAfterNumberOfYears parameter.
MarkHistoricalAfterNumberOfYears parameter is defined as 5 and the value is
The order age is calculated using OM_ORDER_DATA table and in years. DeleteOrders parameter is defined as true.
CREATED column. If there is no value in CREATED column,
LAST_UPDATED column is used instead. If the date today is 2.3.2017 and the task is run, orders A and B and their
associations are copied into historical tables and deleted from original tables
The task also copies orders into historical table and deletes them from since order A’s and B’s age is 6 years.
the original table if DeleteOrders parameter is defined as true.
OrdersWithoutAnyAction Task copies associations into historical table and deletes them from Order A was associated on 1.3.2011 (day /month/year), order B on 2.3.2011
the original table if there is no association or un-association done for and order C on 3.3.2011.
the order within a period of time defined
with MarkHistoricalAfterNumberOfYears parameter. External MarkHistoricalAfterNumberOfYears parameter is defined as 5 and the value is
associations/un-associations are excluded and only associations/un- in years. DeleteOrders parameter is defined as false.
associations done in Alusta are considered.
If the date today is 2.3.2017 and the task is run, order A’s and B’s associations
are copied into historical tables and deleted from original tables since the last
The last association or un-association is checked from association for these orders was done at least 6 years ago. Orders are not

Seite 70 von 208


OM_ASSOCIATION table and ASSOCIATION_TIME column. copied into historical tables or removed from the original table since the
DeleteOrders parameter was false.
The task also copies orders into historical table and deletes them from
the original table if DeleteOrders parameter is defined as true.
FullyMatchedAndOldOrders Task copies associations into historical table and deletes them from Order A has one standard order row with quantity as 10 and matched quantity
the original table if the order is older than defined as 9
in MarkHistoricalAfterNumberOfYears parameter and fully matched. Order B has one standard order row with quantity as 10 and matched quantity
as 8
Order C has one service order row with net sum as 100 and matched net sum
The order age is calculated using OM_ORDER_DATA table and as 95
CREATED column. If there is no value in CREATED column, Order D has one service order row with net sum as 100 and matched net sum
LAST_UPDATED column is used instead. as 90
All orders have CREATED date as 1.3.2011
The order is considered as fully matched if all it’s order rows are fully
matched or their matched sum or matched quantity is within the MarkHistoricalAfterNumberOfYears parameter is 5
tolerance. The tolerances are defined with the following parameters: The sum/quantity tolerances are:
 AbsoluteToleranceForSum AbsoluteToleranceForSum is 5
PercentualToleranceForSum is 0
 PercentualToleranceForSum AbsoluteToleranceForQuantity is 5
 AbsoluteToleranceForQuantity PercentualToleranceForQuantity is 0
 PercentualToleranceForQuantity The DeleteOrders parameter is false
AbsoluteToleranceForQuantity and PercentualToleranceForQuantity
parameters are used for service and framework PO row types and If the task is run, order A’s and C’s associations are deleted since both the
AbsoluteToleranceForSum and PercentualToleranceForSum are used order A’s matched quantity and the order C’s matched sum are withing the
for all other PO row types. tolerance of ordered values. Orders are not removed since DeleteOrders
parameter was false.
The task also copies orders into historical table and deletes them from
the original table if DeleteOrders parameter is defined as true.
DeleteOrders Yes true Case-insensitive ”true” or ”1” defines that both orders and associations
should be moved into historical table and deleted from their original
table
1

MarkHistoricalAft Yes 0-n A number that defines how old orders are moved into historical table
erNumberOfYears and deleted from their original table. The parameter value is defined in
years.

DeleteOrphans No true Case-insensitive ”true” or ”1” defines that orphan rows are removed
1
false Case-insensitive ”false” or ”0” defines that orphan rows are not
removed
0
AbsoluteToleranc No 0.0-n.n A decimal number that defines which order rows are considered as
eForSum fully matched. The parameter value is an absolute tolerance used
when comparing order row sum against matched sum.

Seite 71 von 208


Used only with Framework and ServicePOs

No 0.0-n.n A decimal number that defines which order rows are considered as
fully matched. The parameter value is a percentage tolerance used
PercentualToleran when comparing order row sum against matched sum.
ceForSum Used only with Framework and ServicePOs

AbsoluteToleranc No 0.0-n.n A decimal number that defines which order rows are considered as
eForQuantity fully matched. The parameter value is an absolute tolerance used
when comparing order row quantity against matched quantity.
Used only with Standard and ReturnPOs

PercentualToleran No 0.0-n.n A decimal number that defines which order rows are considered as
ceForQuantity fully matched. The parameter value is a percentage tolerance used
when comparing order row quantity against matched quantity.
Used only with Standard and ReturnPOs

Seite 72 von 208


Webservice

1.43 Creating WSDL file by the customer

Beispiel: http://10.175.3.28:8001/sap/bc/soap/wsdl?sap-client=150&services=BAPI_INCOMINGINVOICE_CANCEL
Vom Kunden zurückerhaltenes WSDL muss mit SoapUI konvertiert werden.
File => New Soap Project => Namen vergeben und bei "Initial WSDL" das File laden
=> Request 1 zeigt das gewünschte File

Seite 73 von 208


Kann dann mit Copy&Paste nach Notepad++ übernommen werden.

Then the fields of the XML file has to be copied to anyERP coding and changed as follows:

===>

Seite 74 von 208


1.44 Web Service parameters:

How to execute WebSerivce from anyERP

Seite 75 von 208


1.45 SAPSELECT and SAPSELECTWS
The variables in connection file can be like this :

And the SAPSELECTWS in the configuration file should be like this:

Seite 76 von 208


Here is the text versions:
<command type="write">{F,NVL(F,SAPSELECTWS(v,sapurl;v,sapUsername;v,sapPassword;ADRC;SORT2;"ADDRNUMBER =
'?'";vendors,LFA1.ADRNR;F,EVAL(F,AND(F,IF(F,EXISTS(v;SAPWS_ReadTableFunction);=;1);F,IF(F,LEN(F,NVL(v,SAPWS_ReadTableFunction;""));>;0));=;True;v,SAPWS_ReadTableFunction;BBP_RFC_
READ_TABLE);F,EVAL(F,AND(F,IF(F,EXISTS(v;SAPWS_Expect100Continue);=;1);F,IF(F,LEN(F,NVL(v,SAPWS_Expect100Continue;""));>;0));=;True;v,SAPWS_Expect100Continue;True);F,EVAL(F,AND(F
,IF(F,EXISTS(v;SAPWS_KeepAlive);=;1);F,IF(F,LEN(F,NVL(v,SAPWS_KeepAlive;""));>;0));=;True;v,SAPWS_KeepAlive;True));"")}</command>

We will use the values from the variables only if they are initialized, else use the default value.

The documentation for the SAPSELECTWS says like below and more can be found here AnyERP Adapter - Expression Syntax.aspx

SAPSELECTWS
Read a single value from a table in SAP.
SAPSELECT(<url>;<username>;<password>;<v1>;<v2>;<v3>;<p1>;<p2>;<pn>;<ReadTable function>))
This function takes four to n parameters:
url url of sap to connect to
username username of sap user
password password of sap user
v1 SAP table to read
v2 Column to read from table
v3 Restriction to use ('where' expression)
p1 First parameter used in v3 (optional)
p2 Second parameter used in v3 (optional)

Seite 77 von 208


pn Last parameter used in v3 (optional)
ReadTableFunction This parameter can be set to RFC_READ_TABLE or two yRFC_READ_TABLE and it allows you to choose which Read_Table function is used. By
default the RFC_READ_TABLE parameter is used (optional)
expect100Continue true/false (default true) see IETF RFC 2616 Section 10.1.1
keepAlive true/false (defuault true) An application uses KeepAlive to indicate a preference for persistent connections. When the KeepAlive property is true, the
application makes persistent connections to the servers that support them.
Note! The parameters p1-pn are replaced in the order they appear in the where- string. The single quotation marks for parameters in this function need to be explicitly set (unlike
e.g. SQL parameters).
Expression example:
F,SAPSELECTWS(v,sapurl;v,sapUsername;v,sapPassword;PRPS;PSPNR;"POSKI = '?'";"1000-2";RFC_READ_TABLE) = '1000-AC2'

1.46 Lesen von Daten aus einer SAP Tabelle (wenn SAPSELECTWS einen Error 500 erzeugt)

Die Daten können dann aus der XML-Source wie folgt gelesen werden:

Seite 78 von 208


1.47 AWS Alusta Web Service integration IPs
DUB: 34.243.62.34, 52.19.145.19
PDX: 34.216.254.175, 35.164.161.183
SYD: 13.210.180.113, 13.211.54.222
CA(YUL): 35.182.179.37, 35.183.88.218

Seite 79 von 208


Master Data

1.48 Full logging


Per Default werden beim Import nur die ersten 100 Einträge mit gelogged. Mit dem folg. Parameter wird alles mitgeschrieben:

1.49 Supplier Import


Damit alle Adress-Zusatzdaten verfügbar sind und korrekt importiert werden, müssen diese als Supplier Keys korrekt definiert werden.
General => Additional Configuration => Supplier Address Part Key

Auszug aus dem suppliers.xml – File:

Seite 80 von 208


Resultat:

Seite 81 von 208


1.50 PO import MainSupplierName und InvoicingSupplierName
Per default werden die Namen nicht importiert und sind im PO BAPI auch nicht vorhanden. Wir lesen sie daher aus der Supplier-Tabelle nach:

<command type="startelement">InvoicingSupplierName</command>
<command type="write">{F,NVL(F,DBSELECT("select adm_supplier.name from adm_supplier, adm_organization_element where
(adm_supplier.administrative_site_id=adm_organization_element.id) and (adm_supplier.code=?) and
(adm_organization_element.code=?)";v,providerconnection;POHEADER,DIFF_INV,0;v,bwCompanyCode);C,"")}</command>
<command type="endelement"></command>
<command type="startelement">MainSupplierName</command>
<command type="write">{F,NVL(F,DBSELECT("select adm_supplier.name from adm_supplier, adm_organization_element where
(adm_supplier.administrative_site_id=adm_organization_element.id) and (adm_supplier.code=?) and
(adm_organization_element.code=?)";v,providerconnection;POHEADER,VENDOR,0;v,bwCompanyCode);C,"")}</command>
<command type="endelement"></command>

Seite 82 von 208


1.51 Extrakte für S&C erstellen (SaaS)
Die Logik um Extracte erstellen zu können ist bereits in AnyERP für Alusta integriert.
Das File hierzu heißt InvoicePro_Core_ScanCapture_Extract.xml

Dieses Coding wird zusammen mit dem Stammdaten für die Supplier aufgerufen, muß aber aktiviert und konfiguriert werden. Dies geschieht im File
InvoicePro_Customer_SystemVariables.xml

Die folgende Parameter hierfür sind zu setzen:

Die Extracte werden unter folg. Pfad abgelegt:

….[Customer]\SCData\

Damit die Files in den richtigen extracts\upload – Pfad kopiert werden, muss dieser in der Datei ..\Configuration Files\SC\SC_EXTRACTS.xml in Zeile 455 geändert werden:

Der Scheduler Task ist wie folgt zu parametrisieren:

Seite 83 von 208


1.52 Standard Password Policy für User

Seite 84 von 208


1.53 PaymentTerm Felder

Seite 85 von 208


1.54 User-Import
 Im Excel-Sheet muss die Überschrift „GroupName“ exakt so geschrieben sein, da dieser im XML-File verwendet wird.
 Zum Generieren des xml-Files auf „Entwicklertools“ und „Makro ausführen“ gehen.
 Das exportierte File muss zwingend „users.xml“ heißen.
 Man muss anschließend das File auf \\[server]\[customer]\Interfaces\Inbound ablegen
 Das script wird mit „Import user“ importiert. Wurde der Login-Type korrekt definiert (siehe nächsten Punkt), dann wird auch eine Password-eMail sofort generiert.
 Sind Supervisors definiert, dann kann diese Alusta nur dann an den User hängen, wenn der Supervisor im System schon existiert. D.h. man muss dann das User-File zweimal importieren
(es werden hierbei die Passwörter nicht nochmal verschickt)

1.55 User Login type beim Generieren von Usern mittels Script
Tabelle ADM_USER_DATA

Hier die Login-Type-Codes:


0 = Username/Password
1 = Windows domain logon
2 = External Authentication
99 = default (an dem organization element)

Defaultwert setzen:

"P2P Admin -> „Organization“ -> Element auswählen -> "Default Login Type:"

1.56 Wechselkurse darstellen


Damit die Wechselkurse korrekt dargestellt werden können, muß ein Datum (z.B. Invoice Date) dem Feld „Exchange Rate Base Date“ zugewiesen werden. Außerdem muss das Invoice_Date
auch in der Rechnung gefüllt sein:

Es muss aber nicht zwingend angezeigt werden.

Darstellung:

Seite 86 von 208


1.57 Probleme mit Currency und Exchange-Rates beim BT-Import
Es kann sein, daß beim BT-Import Currency und Exchange Rates leer bleiben obwohl sie im BT-Import-Interface an Alusta übermittelt werden.

Lösung: Wenn in der Lookup-List „Supplier“ für das Feld SUPPLIER_CURRENCY_CODE der Parameter „Overwrite value“ auf „YES“ steht, dann werden die Informationen auf jeden Fall aus der
Supplier-Tabelle genommen und nicht aus dem BT-Interface. Mit „Conditionally yes“ oder „NO“ wird dies verhindert.

1.58 Import von Bestelldaten


Felder vom Typ „ITEM“ landen in der Tabelle OM_ORDER_ROWS (kommen aus XML – File aus dem tag <CodingRow>….
Data maintenance => anyERP OrderImport Mappings

Seite 87 von 208


1.59 Datenimport (update)
Definition schedule task:

Coding:

Seite 88 von 208


Seite 89 von 208
1.60 Struktur PO daten:

Seite 90 von 208


1.61 Suchen von Bestellungen welche auch einen GR haben.
select distinct h.created, h.company_code, h.order_number, h.order_type_code, h.invoicing_supplier_code, h.currency_code, h.net_sum
from om_order_data h
join om_order_row r on r.order_number = h.order_number
left join om_goods_receipt g on g.order_row_id = r.id
where g.id is not null
and g.net_sum > 0
and h.net_sum > 0
and (
h.id not in (select order_id from om2_matching_order) and
r.id not in (select order_row_id from om2_matching_row) and
g.id not in (select goods_receipt_id from om2_matching_gr)
)
and trunc(h.created) >= trunc(sysdate)-90
order by h.created desc , h.company_code, h.order_number desc;

Seite 91 von 208


Scheduler

1.62 Eigene Scheduler Tasks für eigenes Coding


Eigene Tasks sind wie folgt zu definieren:

1.63 Cron expression (minutengenaue Schedule Tasks)

0 24 * ? * * * = Sekunde 0, Minute 24, Stündlich, ? für täglich, und 3x * hintendran

0 30 1 ? * * * = jeden Tag um 00:30

https://www.freeformatter.com/cron-expression-generator-quartz.html

Seite 92 von 208


1.64 Scheduled task fails to import data.

SYMPTOMS

When executing scheduled tasks to import for example basic data, AnyERP logs includes the following error message:

8/12/2016 11:05:44 AM.494 [ERROR ]--------------------------- Error Details ---------------------------


8/12/2016 11:05:44 AM.494 [ERROR ]Data at the root level is invalid. Line 1, position 1.
---->Calling xml validation method failed!
-------->Processing element failed!
------------>Error processing element 'method'!
---------------->Handling element failed!

8/12/2016 11:05:44 AM.494 [ERROR ]


Stack trace:
at System.Xml.XmlTextReaderImpl.Throw(Exception e)
at System.Xml.XmlTextReaderImpl.ParseRootLevelWhitespace()
at System.Xml.XmlTextReaderImpl.ParseDocumentContent()
at System.Xml.Schema.Parser.StartParsing(XmlReader reader, String targetNamespace)
at System.Xml.Schema.XmlSchema.Read(XmlReader reader, ValidationEventHandler validationEventHandler)
at BasWare.ErpConnector.ElementHandlers.XMLValidationMethodHandler.ExecuteMethod(ElementEventArgs v_objElementEventArgs)
at BasWare.ErpConnector.ElementHandlers.MethodHandlerBase.ProcessElement(ElementEventArgs v_objElementEventArgs)
at BasWare.ErpConnector.ElementHandlers.MethodHandlerBase.InternalHandleElement(ElementEventArgs v_objElementEventArgs)
at BasWare.ErpConnector.ElementHandlers.HandlerBase.HandleElement(ElementEventArgs v_ElementEventArgs)
at BasWare.ErpConnector.IElementEventSource.MethodElementFoundEventHandler.Invoke(ElementEventArgs v_objArgs)
at BasWare.ErpConnector.ConnectorController.OnMethodElementFound(ElementEventArgs v_objArgs)
at BasWare.ErpConnector.ConnectorController.ProcessSingleNode(XmlNode v_xnNodeToProcess)
at BasWare.ErpConnector.ConnectorController.ProcessNode(XmlNode v_objXmlNode)
at BasWare.ErpConnector.ConnectorController.OnSectionElementFound(ElementEventArgs v_objArgs)
at BasWare.ErpConnector.ConnectorController.ProcessSingleNode(XmlNode v_xnNodeToProcess)
at BasWare.ErpConnector.ConnectorController.ProcessNode(XmlNode v_objXmlNode)
at BasWare.ErpConnector.ConnectorController.OnOnErrorElementFound(ElementEventArgs v_objArgs)

8/12/2016 11:05:44 AM.494 [ERROR ]----------------------------------------------------------------------

TROUBLESHOOTING

Seite 93 von 208


In this particular case the interface that was executed was InvList10. The folder AnyERP/DataSchemas did not include schema for InvList10, but the Schema Validation was
enabled in InvoicePro_Customer_SystemVariables.xml file. Workaround is to disable the schema validation by disabling the schema validation in the
InvoicePro_Customer_SystemVariables.xml:

<variable name="sys_schema_validation_inuse">False</SystemVariable>

Seite 94 von 208


Rechnungsimport

1.65 BT-Import
1.1. Supplier wird nicht erkannt
Der Identifier Key wird im Alusta definiert:

Das Feld „Identifier Key“ definiert den Identifier für BT. Dieser muss in der Suppliers.xml gefüllt werden.

Im Alusta sind diese dann als Identifier verfügbar:

muss im BT-Import „CustomerInvoice_Pro_BT_Import.xml“ derselbe Key angegeben werden und der Import findet nun den Kreditor:

Seite 95 von 208


1.66 Duplicate Check

1.67 Case sensitive


Alle Tags und „true“ und „false“ – Werte müssen wie im Beispiel gezeigt definiert werden. Sonst wird evtl. der Supplier Identifier nicht erkannt.

Seite 96 von 208


1.68 Invoice Origins (Invoice Sources)
Tabellenfeld: IA_INVOICE.ORIGIN
Origin value Description
0 Unknown
1 Manually created
2 eInvoices
3 Supplier Portal
4 BW scan
5 Other scanned
6 Self Billing (PayPlan)

Seite 97 von 208


Archive
1.69 Archive Link deaktivieren

Im File “InvoicePro_SAP_Customer_Common_Initialize.xml” folg. Variable setzen (bei “Distributed Environment” im Destination folder.)
<variable name="CreateArchiveLink">True</variable>

Seite 98 von 208


Transfer

1.70 Struktur Verbuchung F-43:


<commandSection name="HeaderData">
2 PROGRAM: SAPMF05ADynpro: 0100
3 BDC-OK-CODE: /00
4
5 <commandSection name="VendorData">
6 PROGRAM: SAPMF05A
7 Dynpro: 0302
8
9 <commandSection name="WithholdingTax" include="False">
10 PROGRAM: SAPLFWTD
11 Dynpro: 0100
12
13 <commandSection name="VendorBankCode" include="{F,NOT(F,IF(Invoice.I,GrossSum;=;0))}">
14 PROGRAM: SAPMF05A
15 Dynpro: 0332
16
17 <commandSection name="ItemData" loopDataSource="Invoice.A" loopInclude="{F,IF(F,ROWCOUNT(Invoice.A);>;0)}"
18 PROGRAM: SAPMF05A
19 Dynpro: 0700
20 BDC-OK-CODE: /00
21
22 <commandSection name="VendorItemData" include=
"{F,AND(F,IF(F,LEN(Invoice.A,AccountCode);=;0);F,IF(F,LEN(Invoice.A,FixedAssetCode);=;0);F,IF(F,LEN(Invoice.A,CustomerCode);>;0))}"
23 PROGRAM: SAPMF05A
24 BDC-OK-CODE: =ZK
25
26 <commandSection name="VendorItemBankCode" include=
"{F,AND(F,IF(F,LEN(Invoice.A,AccountCode);=;0);F,IF(F,LEN(Invoice.A,FixedAssetCode);=;0);F,IF(F,LEN(Invoice.A,CustomerCode);>;0);F,IF(F,LEN(Invoice.A,Comment);=;0))}"
27 PROGRAM: SAPMF05A
28 Dynpro: 0332
29 BDC-OK-CODE: =AB
30
31 <commandSection name="VatAccount" include=
"{F,AND(F,IF(F,LEN(Invoice.A,AccountCode);>;0);v,isTaxAccount;F,IF(F,LEN(Invoice.A,FixedAssetCode);=;0);F,IF(F,LEN(Invoice.A,CustomerCode);=;0))}"
32 PROGRAM: SAPMF05A
33 Dynpro: 0312
34 BDC-OK-CODE: {F,EVAL(F,LEN(Invoice.A,Comment);>;0;"=LTXT";"=AB")}

Seite 99 von 208


35
36 <commandSection name="GLAccount" include=
"{F,AND(F,IF(F,LEN(Invoice.A,AccountCode);>;0);F,NOT(v,isTaxAccount);F,IF(F,LEN(Invoice.A,FixedAssetCode);=;0);F,IF(F,LEN(Invoice.A,CustomerCode);=;0))}"
37 PROGRAM: SAPMF05A
38 Dynpro: 0300
39 BDC-OK-CODE: =ZK
40
41 <commandSection name="Asset" include=
"{F,AND(F,IF(F,LEN(Invoice.A,AccountCode);=;0);F,IF(F,LEN(Invoice.A,FixedAssetCode);>;0);F,IF(F,LEN(Invoice.A,CustomerCode);=;0))}">
42 PROGRAM: SAPMF05A
43 BDC-OK-CODE: =ZK
44
45 <commandSection name="Codeblock" include=
"{F,AND(F,NOT(v,isTaxAccount);F,OR(F,IF(F,LEN(Invoice.A,AccountCode);>;0);F,IF(F,LEN(Invoice.A,FixedAssetCode);>;0));F,IF(F,LEN(Invoice.A,CustomerCode);=;0))}"
46 PROGRAM: SAPLKACB
47 Dynpro: 0002
48 BDC-OK-CODE: {F,EVAL(v,isCOPA;"=";True;"=COBL_XERGO";"=ENTE")}
49
50 <commandSection name="COPABlock" include="{v,isCOPA}">
51 PROGRAM: SAPLKEAK
52 Dynpro: 0300
53 BDC-OK-CODE: =WEIT
54
55 <commandSection name="COPABlockOK" include="{v,isCOPA}">
56 PROGRAM: SAPLKACB
57 Dynpro: 0002
58 BDC-OK-CODE: =ENTE
59
60 <commandSection name="DynProData">
62 PROGRAM: SAPMF05A
63 Dynpro: {F,EVAL(F,LEN(Invoice.A,CustomerCode);>;0;"0332";F,EVAL(F,LEN(Invoice.A,FixedAssetCode);=;0;"0330";"0335"))}
67 BDC-OK-CODE: =ZK
68
69 <commandSection name="VatAccountToOverview" include=
"{F,AND(F,IF(F,LEN(Invoice.A,Comment);>;0);F,IF(F,LEN(Invoice.A,AccountCode);>;0);v,isTaxAccount;F,IF(F,LEN(Invoice.A,FixedAssetCode);=;0);F,IF(F,LEN(Invoice.A,CustomerCode);
=;0))}"
70 PROGRAM: SAPMF05A
71 Dynpro: 0312
72 BDC-OK-CODE: =AB
73
74 <commandSection name="GLAccountToOverview" include=
"{F,AND(F,OR(F,IF(F,LEN(Invoice.A,AccountCode);>;0);F,IF(F,LEN(Invoice.A,FixedAssetCode);>;0));F,NOT(v,isTaxAccount);F,IF(F,LEN(Invoice.A,CustomerCode);=;0))}"
75 PROGRAM: SAPMF05A
76 Dynpro:

Seite 100 von 208


{F,EVAL(F,LEN(Invoice.A,Comment);>;0;F,EVAL(F,LEN(Invoice.A,FixedAssetCode);>;0;"0305";"0300");F,EVAL(F,LEN(Invoice.A,FixedAssetCode);=;0;"0330";"0335"))}
77 BDC-OK-CODE: =AB
78
79 <commandSection name="VendorItemBankCodeToOverview" include=
"{F,AND(F,IF(F,LEN(Invoice.A,AccountCode);=;0);F,IF(F,LEN(Invoice.A,FixedAssetCode);=;0);F,IF(F,LEN(Invoice.A,CustomerCode);>;0);F,IF(F,LEN(Invoice.A,Comment);>;0))}"
80 PROGRAM: SAPMF05A
81 Dynpro: {F,EVAL(F,LEN(Invoice.A,Text2);>;0;F,EVAL(Invoice.A,Text2;=;"D";"0303";"0304");"0302")}
82 BDC-OK-CODE: =AB
83
84 <commandSection name="TaxScreens" include="{v,transferTaxes}">
85 <commandSection name="GoToVendor">
86 <commandSection name="DynProData">
88 PROGRAM: SAPMF05A
89 Dynpro: 0700
90 BDC-OK-CODE: =PI
91
92 <commandSection name="SetCursor">
93 BDC-OK-CODE: RF05A-AZEI1({F,EVAL(Invoice.I,GrossSum;=;0;v,firstVendorItem,"00";"01")})
94
95 <commandSection name="GoToTaxes">
96 PROGRAM: SAPMF05A
97 Dynpro: {F,EVAL(Invoice.I,GrossSum;&lt;
;0;"0302";F,EVAL(v,vendorItemInCoding;=;True;"0304";F,EVAL(F,LEN(Invoice.A,Text2);>;0;F,EVAL(Invoice.A,Text2;=;"H";"030
3";"0304");"0302")))}
98 BDC-OK-CODE: =STER
99
100 <commandSection name="ClearTaxes" include="{F,AND(F,IF(F,EXISTS(fiTaxes);=;1);F,IF(F,ROWCOUNT(fiTaxes);>;0))}" loopDataSource="{F,ROWCOUNT(fiTaxes)}">
103 PROGRAM: SAPLTAX1
104 Dynpro: 0300
108 BDC-OK-CODE: =DELZ
109
110 <commandSection name="SetCursor">
112 FNAMBDC_CURSOR
113 BDC-OK-CODE: BSET-FWSTE(01)
114
115 <commandSection name="AddTaxes" include="{F,AND(F,IF(F,EXISTS(fiTaxes);=;1);F,IF(F,ROWCOUNT(fiTaxes);>;0))}">
118 PROGRAM: SAPLTAX1
119 Dynpro: 0300
120 DYNBEGINX
121
122 <commandSection name="Add TAX Data" loopDataSource="fiTaxes"/>
123
124 <commandSection name="ExitTaxes">
125 PROGRAM: SAPLTAX1

Seite 101 von 208


126 Dynpro: 0300
127 BDC-OK-CODE: =GO
128
129 <commandSection name="ToOverview">
130 PROGRAM: SAPMF05A
131 Dynpro:
{F,EVAL(Invoice.I,GrossSum;<;0;"0302";F,EVAL(v,vendorItemInCoding;=;True;"0304";F,EVAL(F,LEN(Invoice.A,Text2);>;0;F,EVAL(Invoice.A,Text2;=;"H";"0303";"0304");"0302")))}
132 BDC-OK-CODE: =AB
133
134 <commandSection name="EndTransaction">
135 item" attribute="//BT_DATA"/>
136 PROGRAM: SAPMF05A
137 Dynpro: 0700
138 BDC-OK-CODE: =BU
139
140 <commandSection name="FinalScreen">
141 PROGRAM: SAPMF05A
142 Dynpro: 0700
143 BDC-OK-CODE: /EEND
144
145 <commandSection name="ExitBatch">
146 PROGRAM: SAPLSPO1
147 Dynpro: 0200
148 DYNBEGINX
149 BDC-OK-CODE: =Yes
150
151

1.71 Batch Input Mappe mitschreiben beim FI-Verbuchen


Im FI-Transfer – File muss folg. Ergänzung gemacht werden:

Seite 102 von 208


1.72 Transfer mit Pre-Call definieren
In GDM folg. Definieren:

Seite 103 von 208


Codingausschnitt:
Wenn das Ergebnis der Variable Invoice.A,Text_39 und/oder Text_41 leer ist, soll der Transfer fehlschlagen.

1.73 Transfer response verhindern

Seite 104 von 208


1.74 Transfer recovery – wie definieren?

Parameter:

Seite 105 von 208


TimeUnit hour/minute/second
TimeSpan
RecoveryMode Completed / Cancel / Failed “Failed” ist der Defaultwert wenn nichts anderes definiert wurde
ForceInvoiceId Id der Rechnung welche zurückgesetzt werden soll
Wenn ForceInvoiceId verwendet wird, werden andere Rechnungen nicht wiederhergestellt, die die Kriterien erfüllen (z. B. den
Datumskriterien entsprechen).

Nur die ForceInvoiceId entsprechende Rechnung wird gemäß dem definierten Wiederherstellungsmodus wiederhergestellt.

Wenn ForceInvoiceId verwendet wird, werden zeitbezogene Parameter ignoriert. Nur dieser Parameter wird zum Wiederherstellen
der Rechnung verwendet.

Wenn ForceInvoiceId verwendet wird, werden alle Statusprüfungen während der Wiederherstellung der Rechnung (Status wie
geschlossen, Entwurf, Header-Genehmigung, Header-Überprüfung usw.) ignoriert.
Forceinvoiceidlist Value:Comma Separated Invoice Ids

1.75 Re-Transfer bereits transferierter Rechnungen

update ia_invoice set release_batch_id='', transfer_type = 0, status=3, secondary_status=12, voucher_number_1 = '' where invoice_number in ('JC07042013','JC07042014')

Damit hat die Rechnung den Status „Ready for transfer“ und kann neu transferiert werden.

1.76 Fiscal Year Shift


Hierbei muss man zu einem bestimmtem entweder ein Jahr hinzuaddieren oder abziehen. Dies ist nur notwendig bei „auswertenden“ SAP-Zugriffen bei denen mittels Buchungsjahr nach Werten
gesucht wird (z.B. Payment Response oder Archive Link). Hier ein Beispiel von PaymentResponse (Kunde: TCR):

Seite 106 von 208


Seite 107 von 208
Datenbank

1.77 Prozess Check – History Log auslesen


select p_task.id,p_task.task_name,p_a_instance.activity_name,p_a_instance.state, p_task.created from PE_PROCESS_task p_task
inner join PE_activity_instance p_a_instance
on p_a_instance.ID=p_task.activity_instance_ID
where p_task.document_ID=
(select Id from IA_invoice where invoice_number='Test_CR_78') order by p_task.created desc;

select pp.name, p_task.id,p_task.task_name,p_a_instance.activity_name,p_a_instance.state, p_task.created from PE_PROCESS_task p_task


inner join PE_activity_instance p_a_instance on p_a_instance.ID=p_task.activity_instance_ID
join pe_process_instance ppi on ppi.id = p_task.process_instance_id
join pe_process pp on pp.ID=ppi.process_id
where p_task.document_ID= (select Id from IA_invoice where id = '4f67a87a57114cb5b9a59bc94c1b4aee') order by p_task.created;

1.78 String bis zu einem Zeichen lesen (Alusta-Übersetzungen)

1.79 Alle User mit Supervisor auslesen


select u.first_name, u.surname, u.login_account, u.email, u.person_code, u.login_allowed, u.login_type, a.fullname supervisor_is

Seite 108 von 208


from adm_user_data u left join adm_user_data a on a.id = u.supervisor_id where u.email not like '%basware.com';

1.80 Prozess und Prozesschritte herausfinden


select pp.name, pp.priority_index, p_task.task_name,p_a_instance.activity_name,p_a_instance.state, p_task.created, p_task.recipient_name from PE_PROCESS_task p_task
inner join PE_activity_instance p_a_instance on p_a_instance.ID=p_task.activity_instance_ID
join pe_process_instance ppi on ppi.id = p_task.process_instance_id
join pe_process pp on pp.ID=ppi.process_id
where p_task.document_ID= (select Id from IA_invoice where id = 'c98fe5db11c049369c43edf59c249c83') order by p_task.created desc

1.81 Logfiles per Script löschen

1.82 Bestelldaten per Script oder per SQL löschen

1.83 Supplierdaten per Script löschen

1.84 Datum für Bestelldatenabruf setzen


update ext_template_deltarun_lock set lastruntimestamp = sysdate - 365, locktimestamp = sysdate - 365;

1.85 Datenfelddefinitionen für Dokumentation auslesen

Reading of header data Reading of coding rows Reading of line data


SELECT c.NAME AS EntityName, SELECT c.NAME AS EntityName, SELECT c.NAME AS EntityName,

Seite 109 von 208


e.name AS EntityItemName, e.name AS EntityItemName, e.name AS EntityItemName,
i.entity_property AS entity_property, i.entity_property AS entity_property, i.entity_property AS entity_property,
e.mandatory, e.mandatory, e.mandatory,
e.readonly AS EntityReadOnly, e.readonly AS EntityReadOnly, e.readonly AS EntityReadOnly,
v.VISIBLE, v.VISIBLE, v.VISIBLE,
e.expression, e.expression, e.expression,
e.LOOKUP_LIST_ID, e.LOOKUP_LIST_ID, e.LOOKUP_LIST_ID,
e.DEFAULT_VALUE, e.DEFAULT_VALUE, e.DEFAULT_VALUE,
i.FORMAT, i.FORMAT, i.FORMAT,
i.MAX_LENGTH, i.MAX_LENGTH, i.MAX_LENGTH,
v.COLUMN_INDEX v.COLUMN_INDEX v.COLUMN_INDEX
FROM CMN_ENTITY_CONFIG c, FROM CMN_ENTITY_CONFIG c, FROM CMN_ENTITY_CONFIG c,
CMN_ENTITY_TYPE_CONFIG t, CMN_ENTITY_TYPE_CONFIG t, CMN_ENTITY_TYPE_CONFIG t,
CMN_ENTITY_CONFIG_ITEM e, CMN_ENTITY_CONFIG_ITEM e, CMN_ENTITY_CONFIG_ITEM e,
CMN_SCREEN s, CMN_SCREEN s, CMN_SCREEN s,
CMN_SCREEN_SCHEMA h, CMN_SCREEN_SCHEMA h, CMN_SCREEN_SCHEMA h,
CMN_SCHEMA_ITEM i, CMN_SCHEMA_ITEM i, CMN_SCHEMA_ITEM i,
CMN_EDIT_VIEW w, CMN_EDIT_VIEW w, CMN_EDIT_VIEW w,
CMN_EDIT_TYPE_VIEW y, CMN_EDIT_TYPE_VIEW y, CMN_EDIT_TYPE_VIEW y,
CMN_EDIT_VIEW_ITEM v CMN_EDIT_VIEW_ITEM v CMN_EDIT_VIEW_ITEM v
WHERE c.ACTIVE = 1 WHERE c.ACTIVE = 1 WHERE c.ACTIVE = 1
AND v.VISIBLE = 1 AND v.VISIBLE = 1 AND v.VISIBLE = 1
AND h.name = 'Received_Invoice screen schema' AND h.name = 'Received_Invoice screen schema' AND h.name = 'Received_Invoice screen schema'
AND c.name = 'Default Invoice Configuration' AND c.name = 'Default Invoice Configuration' AND c.name = 'Default Invoice Configuration'
-- entity AND w.name = 'ReceivedDetailsPage (Invoice)' -- AND w.name = 'ReceivedDetailsPage (Invoice)' --
AND w.name = 'ReceivedDetailsPage (Invoice)' entity entity
AND t.name = 'Invoice Header Data' -- Invoice AND t.name = 'Invoice Coding Rows' -- Invoice Coding AND t.name = 'Invoice Lines' -- Invoice Coding Rows or
Coding Rows or Invoice Header Data or Invoice Rows or Invoice Header Data or Invoice Lines Invoice Header Data or Invoice Lines
Lines AND c.id = t.ENTITY_CONFIG_ID AND c.id = t.ENTITY_CONFIG_ID
AND c.id = t.ENTITY_CONFIG_ID AND w.id = y.EDIT_VIEW_ID AND w.id = y.EDIT_VIEW_ID
AND w.id = y.EDIT_VIEW_ID AND v.EDIT_TYPE_VIEW_ID = y.ID AND v.EDIT_TYPE_VIEW_ID = y.ID
AND v.EDIT_TYPE_VIEW_ID = y.ID AND e.id = v.ENTITY_CONFIG_ITEM_ID AND e.id = v.ENTITY_CONFIG_ITEM_ID
AND e.id = v.ENTITY_CONFIG_ITEM_ID AND e.ENTITY_TYPE_CONFIG_ID = t.id AND e.ENTITY_TYPE_CONFIG_ID = t.id
AND e.ENTITY_TYPE_CONFIG_ID = t.id AND s.id = h.SCREEN_ID -- and s.PRODUCT_CODE = 'IA' AND s.id = h.SCREEN_ID -- and s.PRODUCT_CODE = 'IA'
AND s.id = h.SCREEN_ID -- and s.PRODUCT_CODE AND i.id = e.SCHEMA_ITEM_ID AND i.id = e.SCHEMA_ITEM_ID
= 'IA' ORDER BY column_index; ORDER BY column_index;
AND i.id = e.SCHEMA_ITEM_ID
ORDER BY column_index;

1.86 Extrakt für den IA-Bereich generieren

Alusta Solution Description Creation Area EditViews


Mit Hilfe des folgenden SQL Statements kann man für MSSQL Datenbanken relativ leicht einen vollständigen Extrakt für den IA-Bereich ziehen:

Copy-Paste aus dem Query-Result in Excel und schon hat man eine geeignete Gesamttabelle.
Spalten:
Screen: Welcher Bereich? Bspw. "InWorkFlowDetailsPage (Invoice)"
Entity_Type_Config_ID: Rechnungsteil bspw: Invoice_Coding, Invoice_Header, ...
Index: Index des Feldes innerhalb des Screens

Seite 110 von 208


EditorType: Art des Inputs (0 = General Property Editor, 1 = Lookup List, 5 = CheckBox, 7 = DateSelection, 8 = SupplierPicker, 21 = DeliveryNoteHeader)
Visible: Sichtbar JA/NEIN (1/0)
Readonly: Schreibgeschützt JA/NEIN (1/0)
Expression: Ausdruck zur Berechnung sofern vorhanden, sonst 'N/A'
LookupList: Gebundene LookupListe sofern vorhanden, sonst 'N/A'
DefaultValue: Standardwert sofern vorhanden, sonst 'N/A'

1.87 Tabellen für Attachments


cmn_attachment_file_info
cmn_attachment_file

1.88 Reports
User Liste mit seinen Supervisors.

select a.first_name, a.middle_initial, a.surname, a.login_account, a.email, a.person_code, a.title, a.cost_center_code, a.ui_language,
a.login_allowed, a.login_type, a.valid_from, a.valid_to, b.surname||', '||b.first_name Supervisor from adm_user_data a, adm_user_data b where
a.supervisor_id = b.id

User Gruppen-Report
SELECT aug.external_code group_code, substr(aug.user_group_name,7,instr(aug.user_group_name,'/')-7) group_name, aoe.code administrative_site,
aoe.name, substr(aur.user_role_name,7,instr(aur.user_role_name,'/')-7) roles_in_organization from adm_user_group aug, adm_user_group_role augr,
adm_user_role aur, adm_organization_element aoe where aug.id = augr.user_group_id and augr.organization_element_id = aoe.id order by aug.external_code

Seite 111 von 208


User/Gruppenliste:
SELECT adm_user_data.login_account, adm_user_group.external_code FROM adm_user_data, adm_user_group_member, adm_user_group where adm_user_data.id =
adm_user_group_member.user_data_id and adm_user_group_member.user_group_id = adm_user_group.id order by adm_user_data.login_account

1.89 Löschen der Daten um Orga-Struktur ändern zu können:


(funktioniert nur, wenn noch keine Rechnungen im System sind)
DELETE FROM ADM_SUPPLIER_IDENTIFIER;
DELETE FROM ADM_SUPPLIER_EMAIL_ADDRESS;
DELETE FROM ADM_SUPPLIER_CLASSIFICATION;
DELETE FROM ADM_SUPPLIER_CHANGE_DETAILS;
DELETE FROM ADM_SUPPLIER_CHANGE_HISTORY;
DELETE FROM ADM_SUPPLIER_BANK_ACCOUNT;
DELETE FROM ADM_SUPPLIER_ADDRESS_PART;
DELETE FROM ADM_SUPPLIER_ADDR_PART_KEY;
DELETE FROM ADM_SUPPLIER_ADDITIONAL_DATA;
DELETE FROM ADM_SUPPLIER;
DELETE FROM ADM_SUPPLIER_ADDRESS;
DELETE FROM ADM_EXCHANGE_RATE;
DELETE FROM ADM_ACCOUNT;
DELETE FROM ADM_COST_CENTER;
DELETE FROM ADM_PAYMENT_TERM;
DELETE FROM ADM_TAX_CODE;

1.90 Löschen von allen Rechnungen


im regulären P2P Paket findet sich folgende Ordnerstruktur:
\\BWP2P 2.3.1\Basware Purchase-to-Pay 2.3.1\DB\Src\DbScripts\DataDeletion\SQL Server\Company specific

Seite 112 von 208


Zeile 84 ist hier entscheidend für SQL Server:
set @CompCode = 'DE'
als Code hier den „Code“ der Organisationseinheit eintragen für die man alle Rechnungsdaten löschen will.
(Vorsicht! Dies entfernt auch gleich alles für darunterliegende Organisationseinheiten!)

Ansonsten gibt es hier:


\\BWP2P 2.3.1\Basware Purchase-to-Pay 2.3.1\DB\Src\DbScripts\DataDeletion\SQL Server

Das reguläre Script, das ALLE Rechnungs/ Bestelldaten (getrennt _IA/ _PURCHASE) vom System entfernt.

1.91 Löschen aller Order-/Matchdaten


Alle Bestell- und Matchdaten können mit folg. Script gelöscht werden:

1.92 Hinzufügen der URL für das InvoiceImage zum TRANSFER.XML file.
Hierzu muss man in der GDM folg. Eintrag hinzufügen:

Seite 113 von 208


1.93 Auslesen der activities und transitions

select * from pe_activity, pe_process where (pe_activity.process_id=pe_process.id) and (pe_process.enabled=1) and (pe_process.name='P2P Pro Row Level Approve - HC') order by
activity_index

1.94 Hilfreiche Datenbankscripte:

1.95 GDM settings multiplizieren:

Multiplikation von EXT_IF_BASICDATA: Multiplication von EXT_IF_BASICDATA_MAPPINGS


INSERT INTO EXT_IF_BASICDATA(ID, ADMINISTRATIVE_SITE_ID, INTERFACE, FILENAME, INSERT INTO EXT_IF_BASICDATA_MAPPINGS (ID, ADMINISTRATIVE_SITE_ID, SOURCE,
PATH, TYPE, DESTINATIONIP, COMPLETECUSTOMINTERFACE, DESTINATIONPM, DESTINATION, MODULE, INTERFACE, TYPE, CHILDNODEID, DEST_TYPE)
COREPOSTCALLENABLED, CUSTOMPRECALL, COREPRECALLENABLED, CUSTOMPOSTCALL, SELECT dbms_random.string('X', 32),
IPCOMPFIELD, PMCOMPFIELD, LOOPINGNODE, USEWCF, FTPPATH, ADDON, ADDONFILE) '{v,new_org_Id}',
SELECT dbms_random.string('X', 32), SOURCE,
'{v,new_org_Id}', DESTINATION,
CONCAT('SAPELL_', INTERFACE), MODULE,
CONCAT('SAPELL_', FILENAME), CONCAT('SAPELL_', INTERFACE),
REPLACE(PATH, '{v,home_org_Code}', '{v,new_org_Code}'), TYPE,
TYPE, CHILDNODEID,
DESTINATIONIP, DEST_TYPE
COMPLETECUSTOMINTERFACE, FROM EXT_IF_BASICDATA_MAPPINGS
DESTINATIONPM, WHERE ADMINISTRATIVE_SITE_ID = '{v,home_org_Id}'
COREPOSTCALLENABLED,

Seite 114 von 208


CUSTOMPRECALL,
COREPRECALLENABLED,
CUSTOMPOSTCALL,
IPCOMPFIELD,
PMCOMPFIELD,
LOOPINGNODE,
USEWCF,
FTPPATH,
'InterfaceDistribution',
'basicdata_interfacedistribution.xml'
FROM EXT_IF_BASICDATA
WHERE ADMINISTRATIVE_SITE_ID = '{v,home_org_Id}'

Multiplication von EXT_IF_BASICDATA_CHILDNODES Miltiplication von EXT_IF_ORDERIMPORT_MAPPINGS


INSERT INTO EXT_IF_BASICDATA_CHILDNODES (ID, ADMINISTRATIVE_SITE_ID, NODE, INSERT INTO EXT_IF_ORDERIMPORT_MAPPINGS (ID, ADMINISTRATIVE_SITE_ID, INTERFACE,
LOOPNODE, INTERFACE, DESTINATION, PARENTKEYFIELD) TYPE, SOURCE, DESTINATION, NODE, DATATYPE)
SELECT dbms_random.string('X', 32), SELECT dbms_random.string('X', 32),
'{v,new_org_Id}', '{v,new_org_Id}',
NODE, CONCAT('SAPNO_', INTERFACE),
LOOPNODE, TYPE,
CONCAT('SAPNO_', INTERFACE), SOURCE,
DESTINATION, DESTINATION,
PARENTKEYFIELD NODE,
FROM EXT_IF_BASICDATA_CHILDNODES DATATYPE
WHERE ADMINISTRATIVE_SITE_ID = '{v,home_org_Id}' FROM EXT_IF_ORDERIMPORT_MAPPINGS
WHERE ADMINISTRATIVE_SITE_ID = '{v,home_org_Id}'

1.96 Offene Bestellungen anzeigen

SELECT DISTINCT H.CREATED,


H.ORDER_NUMBER,
H.ORDER_TYPE_CODE,
H.INVOICING_SUPPLIER_CODE,
H.CURRENCY_CODE,
H.NET_SUM,
H.COMPANY_CODE
FROM om_order_data h
JOIN om_order_row r ON r.order_number = h.order_number
LEFT JOIN om_goods_receipt g ON g.order_row_id = r.id
WHERE g.id IS NOT NULL
AND G.NET_SUM > 0
AND h.net_sum > 0
AND (H.ID NOT IN
(SELECT ORDER_ID
FROM OM2_MATCHING_ORDER)
AND r.ID NOT IN
(SELECT ORDER_ROW_ID
FROM OM2_MATCHING_ROW)

Seite 115 von 208


AND g.ID NOT IN
(SELECT GOODS_RECEIPT_ID
FROM OM2_MATCHING_GR))
AND TRUNC(H.CREATED) < TRUNC(SYSDATE)-5
ORDER BY H.CREATED DESC,
H.ORDER_NUMBER DESC;

1.97 Abruf Anzahl diverser Stammdaten

SELECT *
FROM
(--Suppliers
SELECT 'Suppliers' datatype,
org.code orgcode,
count(*) COUNT
FROM adm_supplier s
JOIN ADM_ORGANIZATION_ELEMENT org ON org.id = s.ADMINISTRATIVE_SITE_ID
WHERE org.code in ('C010',
'C011',
'')
GROUP BY org.code
UNION --Payment Term Codes
SELECT 'Payment Term Codes',
org.code,
count(*)
FROM adm_payment_term s
JOIN ADM_ORGANIZATION_ELEMENT org ON org.id = s.ADMINISTRATIVE_SITE_ID
WHERE org.code in ('C010',
'C011',
'')
GROUP BY org.code
UNION --Payment Methods - 40 hits
SELECT 'Payment Methods',
org.code,
count(*)
FROM EXT_INV_LIST_2 s
JOIN ADM_ORGANIZATION_ELEMENT org ON org.id = s.ADMINISTRATIVE_SITE_ID
WHERE org.code in ('C010',
'C011',
'')
GROUP BY org.code
UNION
SELECT 'Exchange Rates',
org.code,
count(*)
FROM ADM_EXCHANGE_RATE s
JOIN ADM_ORGANIZATION_ELEMENT org ON org.id = s. ORGANIZATION_ELEMENT_ID
WHERE org.code in ('C010',
'C011',
'')
GROUP BY org.code
UNION

--G/L Accounts 2736 hits


SELECT 'G/L Accounts',
org.code,
count(*)

Seite 116 von 208


FROM ADM_ACCOUNT s
JOIN ADM_ORGANIZATION_ELEMENT org ON org.id = s.ADMINISTRATIVE_SITE_ID
WHERE org.code in ('C010',
'C011',
'')
GROUP BY org.code
UNION SELECT 'Payment Methods',
org.code,
count(*)
FROM EXT_INV_LIST_2 s
JOIN ADM_ORGANIZATION_ELEMENT org ON org.id = s.ADMINISTRATIVE_SITE_ID
WHERE org.code in ('C010',
'C011',
'')
GROUP BY org.code
UNION --Cost Centers 1346 hits
SELECT 'Cost Centers',
org.code,
count(*)
FROM ADM_COST_CENTER s
JOIN ADM_ORGANIZATION_ELEMENT org ON org.id = s.ADMINISTRATIVE_SITE_ID
WHERE org.code in ('C010',
'C011',
'')
GROUP BY org.code
UNION --Tax Codes 328 hits
SELECT 'Tax Codes',
org.code,
count(*)
FROM ADM_TAX_CODE s
JOIN ADM_ORGANIZATION_ELEMENT org ON org.id = s.ADMINISTRATIVE_SITE_ID
WHERE org.code in ('C010',
'C011',
'')
GROUP BY org.code
UNION --Purchase Order
SELECT 'Purchase Order',
org.code,
count(*)
FROM om_order_data s
JOIN ADM_ORGANIZATION_ELEMENT org ON org.id = s.company_id
WHERE org.code in ('C010',
'C011',
'')
GROUP BY org.code)
WHERE orgcode not in ('ABB_GROUP',
'NO')
ORDER BY datatype,
orgcode;

1.98 Hinzufügen von neuen Order Mappings

INSERT INTO EXT_IF_ORDERIMPORT_MAPPINGS


( ID
, ADMINISTRATIVE_SITE_ID
, INTERFACE
, TYPE

Seite 117 von 208


, SOURCE
, DESTINATION
, NODE
, DATATYPE
)
SELECT
dbms_random.string('X', 32)
, '10010f1417ff44ce9908bf381687fc63'
, 'ORDERIMPORTPVX'
, TYPE
, SOURCE
, DESTINATION
, NODE
, DATATYPE
FROM
EXT_IF_ORDERIMPORT_MAPPINGS
WHERE
ADMINISTRATIVE_SITE_ID = '10010f1417ff44ce9908bf381687fc63'

Seite 118 von 208


Infos

Walker reports („breaches“)


https://confluence.basware.com/display/SAAS/Processes+-+Template+Walker+Weekly+Results
wenn Ausnahmen genehmigt werden sollen, muss für jede Ausnahme ein eigenes Jira-Ticket eröffnet werden:

https://baswarecorp.sharepoint.com/sites/BWCN/BCN/P2P/ProductReleases/P2P/Exceptions/Lists/Exceptions%20to%20JIRA/NewForm.aspx?RootFolder=

1.99 Full Export/Import


Beim Full-Import werden nicht alle Datentabellen gelöscht. Vor allem die ADM_xxxxx – Tabellen bleiben erhalten.

1.100 Status Codes


Zu finden unter https://baswarecorp.sharepoint.com/sites/BWCN/ConfigurationManual/Pages/Basware%20P2P%20Status%20Codes.aspx

List of statuses used in P2P:


Invoice Status (STATUS) Invoice Secondary Status (SECONDARY_STATUS)

Received = 0 Draft = 0
Process Started = 1
Matching = 1 In Validation = 2
Valid = 3
Workflow = 2 Not Valid = 4
OM Automatic Matching = 5
OM Manual Matching = 6
Transfer = 3
Waiting For GR = 7
Review = 8
Completed = 4 Row Approve = 9
Header Approve = 10
Cancelled = 5 Admin Approve = 11
Ready For Transfer = 12
Archive = 6 Waiting For Transfer = 13

Seite 119 von 208


Transferred = 14
Transfer Failed = 15
Unclear = 16
No Status = 17
Waiting For Archiving = 18
Archived = 19
Ready For AnyErp Processing = 20
Waiting For AnyErp Processing = 21
AnyERP = 7 AnyErp Processing Done = 22
AnyErp Processing Failed = 23
Closed = 8 Returned = 24
PP Automatic Matching = 25
PP Manual Matching = 26
Completed = 27
Cancelled = 28
Personal Draft = 29
Row Review = 30

AutomaticCoding = 31

Closed = 32

Invoice Prebook Status Invoice Origin


Unknown = 0

Manually created = 1

E-Invoices = 2
NotPrebooked = 0
PrebookInProgress = 1
Basware Supplier Portal = 3
Prebooked = 2
PrebookFailed = 3
Basware Scan = 4

Other Scanned Invoices = 5

Selfbilling = 6

Seite 120 von 208


Matching Status Matching Secondary Status

New = 0
CategoryNotFound = 1
CategoryFound = 2
Associated = 3
AssociationFailed = 4
Validated = 5
ValidationFailed = 6
EndProcess = 7
RematchByUser = 8
ForceMatchByUser = 9
CancelMatchByUser = 10
PartiallyAssociated = 11
CopyCoding = 12
Adjustment = 13
ValidationFailedMatchManually = 14
WaitingGoodsReceipts = 15
Unmatched = 0
WaitingErpUpdate = 16
Matched = 1
OMConfigrationNotFound = 17
Partially Matched = 2
InvoiceSaveFailed = 18
Matched With Errors = 3
RequestManualInvoiceApproval = 19
Unmatched With Credit Note = 4
WaitingGoodsReceiptsFailed = 20
Partially Matched With Credit Note = 5
MatchingFailedUnexpectedly = 21
LicenseCheckFailed = 22
CalculationMethodNotFound = 23
CreditInvoiceFound = 27
SupplierValidationFailed = 28
CurrencyValidationFailed = 29
UnitOfMeasureValidationFailed = 30
OrganizationUnitValidationFailed = 31
ProductCodeValidationFailed = 32
TaxCodeValidationFailed = 33
PriceValidationFailed = 34
CodingValidationFailed = 35
ToleranceValidationFailed = 36
QuantityValidationFailed = 37
MultipleValidationsFailed = 38
AbsoluteFrameworkOvermatchError = 53

Seite 121 von 208


PercentualFrameworkOverMatchError = 54
PercentualAutomaticFrameworkMatchError
= 55 FrameworkValidityPeriodError = 56
ReturnPOWithPositiveInvoiceSum = 57

Payment Plan Matching


Matching Error Status Error Status

NoError = 0
ConfigurationError = 1
CategoryError = 2
MissingGRsError = 3
ValidationError = 4
ExpressionError = 5
MultipleErrors = 6
InvoiceLineNotFoundError = 7
CalculationMethodNotFoundError = 8
Warning = 9 No Error = 0
NoOrderRowAssociated = 10 Payment Schedule Sum
AdditionalCostError = 11 Tolerance Error = 1
SupplierValidationError = 12 Payment Schedule Date
CurrencyValidationError = 13 Tolerance Error = 2
PriceValidationError = 14 Multiple Errors = 3 Error = 255
QuantityValidationError = 15
CodingValidationError = 16
ToleranceValidationError = 17
OrganizationUnitValidationError = 18
ProductCodeValidationError = 19
TaxCodeValidationError = 20
UnitOfMeasureValidationError = 21
AbsoluteFrameworkOvermatchError = 36
PercentualFrameworkOverMatchError = 37

Seite 122 von 208


PercentualAutomaticFrameworkMatchError = 38
FrameworkValidityPeriodError = 39
SubsequentInvoiceQuanityValidationError = 40
InvoiceRowSumAndQuantityValidationError = 41
SubsequentCreditInvoiceSumValidationError = 42
Error=255

Payment Plan Status Payment Plan Secondary Status

Imported = 0
Draft = 10
Process Started = 11
In Validation = 12
Received = 0 Valid = 13
Workflow = 10 Header Approve = 50
Approved = 20 Deactivated = 60
Archived = 30 Active = 70
Removal = 40 Expired = 80
No Status = 90
Invalid = 120
Review = 130
Waiting For Activation = 140

Purchase Requisition Status Purchase Order Status

Ready for Order = 8


Draft = 0 Ordered = 9
Returned To Owner = 1 Supplier Rejected = 10
In Workflow = 2 Supplier Confirmed = 11
Approved = 6 Modified by Supplier = 12
Ordered = 9 Partially Received = 13
Partially Received = 13 Received = 14
Received = 14 Canceled = 16
Canceled = 16
Rejected = 17
Order Created = 19
Order Created = 19

Seite 123 von 208


Closed = 21

Order Sub Status Purchase Line Status

Draft = 0

ReturnedToOwner = 1
InWorkflow = 2
Reviewed = 3
Recommended = 4
Opposed = 5
Approved = 6

Confirmed = 7
ReadyForOrder = 8
Ordered = 9
Supplier Confirmed = 0
Supplier Rejected = 1
Supplier Confirmed Changes = 2 SupplierRejected = 10
Supplier Sending Failed = 3 SupplierConfirmed = 11
ModifiedBySupplier = 12
PartiallyReceived = 13
Received = 14
CostLine = 15
Canceled = 16

Rejected = 17
Deleted = 18
OrderCreated = 19
AttachedToOrder = 20
Closed = 21
SelfApproved = 22

Seite 124 von 208


Received

Draft
Task State In Validation
Initialized = 0 Valid
Pending = 1 Not Valid
Forwarded = 2
Failed = 3
Cancelled = 4
Completed = 5 Matching
Rejected = 6
Hold/Reserved = 7
Automatic
Duplicate Task = 8
Manual
Suspended = 9
Waiting for GR
Error = 10

Workflow
Process Instance State
None = 0
Active = 1 Review
Completed = 2 Row Approve
Canceled =3 Header Approve
Suspended = 4
In Error = 5 Processed

Activity Instance State Ready For Transfer


None = 0 Waiting For Transfer
Initiallized = 1 Transferred
Executing = 2 Transfer Failed
Completed =3 Unclear
Skipped = 4
Completed

Cancelled

History Log status codes

ACTIONCODEID ACTIONLOGCODE PROCESSERROR MATCHINGERROR NAME


1001009 InvoiceImported 0 0 Invoice imported
1001010 InvoiceCancelled 0 0 Invoice cancelled

Seite 125 von 208


1001016 SavedAsDraft 0 0 Save draft
1001017 Saved 0 0 Saved
2001012 SentToProcess 0 0 Sent to process
2001013 ProcessCancelled 0 0 Process cancelled
2001014 ProcessError 1 0 Process error
2001018 SendToValidation 0 0 Save to Validation
2001021 Reviewed 0 0 Reviewed
2001023 HeaderApproved 0 0 Header approved
2001025 AdminApproved 0 0 Admin approved
2001029 RowApproved 0 0 Row approved
2002002 Forwarded 0 0 Forwarded
2002003 AutoForwarded 0 0 Autoforwarded
2002005 PutOnHold 0 0 Put on hold
2002006 HoldReleased 0 0 Hold released
2002007 Rejected 0 0 Rejected
2002008 TaskAdded 0 0 Task added
2002009 TaskCancelled 0 0 Task cancelled
2002010 Receipted 0 0 Receipted
2002011 TaskMovedToBackUp 0 0 Task moved to backup
3001001 PrebookFailed 1 0 Prebook failed
3001002 PrebookSucceeded 0 0 Prebok succeeded
3001099 Validated 0 0 Validated
3002001 ValidationSucceed 0 0 Validation succeeded
3002002 ValidationFailed 0 0 Validation failed
4001000 CommentAdded 0 0 Comment added
4001001 AttachmentAdded 0 0 Attachment added
4001002 AttachmentDeleted 0 0 Attachment deleted
4001003 ImageAdded 0 0 Image added
4001004 ImageDeleted 0 0 Image deleted
5001000 TransferStarted 0 0 Transfer started
5001001 TransferFailed 0 0 Transfer failed
5001002 TransferCompleted 0 0 Transfer completed
5001003 PaymentInfoUpdated 0 0 Payment info updated
5001004 TransferTimedOut 0 0 Transfer timedout

Seite 126 von 208


6001000 ArchivingCompleted 0 0 Archiving completed
6001001 ArchivingFailed 1 0 Archiving failed
7001000 AnyERPWaitingForProcessing 0 0 AnyERP waiting for processing
7001001 AnyERPProcessingStarted 0 0 AnyERP processing started
7001002 AnyERPProcessingFailed 1 0 AnyERP processing failed
7001003 AnyERPProcessingCompleted 0 0 AnyERP processing completed
8001001 OMConfigrationNotFound 0 1 Order matching configuration not found
8001002 AssociationFailed 0 1 Association failed
8001003 CategoryNotFound 0 1 Category not found
8001004 OMValidationFailed 0 0 Order matching validation failed
8001005 CategoryFound 0 0 Category found
8001006 OMConfigrationFound 0 0 Order matching configuration found
8001007 AssociationSucceed 0 0 Association succeeded
8001008 CodingRowsCreated 0 0 Coding rows created
8001009 ValidationStep1Succeed 0 0 Validation step 1 succeeded
8001010 ValidationStep2Succeed 0 0 Validation step 2 succeeded
8001011 FinalizeSucceed 0 0 Finalize succeeded
8001012 MatchingSavedSucceed 0 0 Matching saved successfully
8001013 MatchingConfirmedSucceed 0 0 Matching confirmed successfully
8001014 MatchingForceByUserSucceed 0 0 Matching forced by user successfully
8001015 ManualInvoiceApprovalRequestSucceed 0 0 Manual invoice approval request succeeded
8001016 InvoicePutOnHoldSucceed 0 0 Put on hold succeeded
8001017 OrderCandidateFound 0 0 Order candidate found
8001018 OrganizationElementNotFound 0 1 Organization element not found
8001019 MultipleCategoryFound 0 0 Multiple categories found
8001020 GoodReceiptWaitingFound 0 0 Goods receipt waiting found
8001021 OrderListFound 0 0 Order list found
8001022 OrderListNotFound 0 0 Order list not found
8001023 OrderNumberUpdated 0 0 Order number updated
80010024 CodingRowsUpdated 0 0 coding rows updated
80010025 MultipleOrdersFound 0 0 Multiple orders found
80010026 ExpressionEvaluationFailed 0 1 Expression evaluation failed
80010027 InvoicePutOnHoldFailed 1 0 Invoice put on hold failed
80010028 InvoiceReleaseFromHoldFailed 1 0 Invoice release from hold failed

Seite 127 von 208


80010029 LicenseCheckFailed 1 0 License check failed
80010030 UnableImportOrdersThroughGateway 0 1 Unable to import orders through gateway
80010031 UnableExportOrdersThroughGateway 0 1 Unable to export orders through gateway
UnableToCallExtensionPointThroughGatew
80010032 ay 0 1 Unable to call extension point through gateway
80010033 UnhandledExceptionInMatchingProcess 0 1 Unhandled exception in matching process
80010034 CalculationMethodNotFound 0 1 Calculation method not found
OrderAlreadyAssociatedWithAnotherInvoic
80010035 e 0 0 Order already associated with another invoice
80010036 SendInvoiceBackToAutomaticMatching 0 0 Sent invoice back to automatic matching
80010037 PPConfigurationFound 0 0 Pay plan configuration found
80010038 PPConfigurationNotFound 0 0 Pay plan configuration not found
80010039 PPNotApproved 0 0 Pay plan not approved
80010040 PPInActive 0 0 Pay plan inactive
80010041 PPExpired 0 0 Pay plan expired
80010042 PPStartDateInFuture 0 0 Pay plan start date in future
80010043 PPRemainingSumLessThanInvoiceSum 0 0 Pay plan remaining sum less than invoice sum
80010044 MultiplePaymentPlansFound 0 0 Multiple payment plans found
80010045 PPFound 0 0 Pay plan found
80010046 PPScheduleFound 0 0 Pay plan schedule found
80010047 PPNotAssociatedDueToExpectedDate 0 0 Pay plan not associated due to expected date
80010048 PPNotAssociatedDueToExpectedSum 0 0 Pay plan not associated due to expected sum
80010049 PPPercentageMismatch 0 0 Pay plan percentage mismatch
80010050 PPAssociationMappingRuleFailed 0 0 Pay plan association mapping rule failed
80010051 PPAssociationExpressionRuleFailed 0 0 Pay plan association expression rule failed
80010052 OrderMatched 0 0 Order matched
80010053 OrderUnMatched 0 0 Order unmatched
80010054 OrderRowsMatched 0 0 Order rows matched
80010055 OrderRowsUnMatched 0 0 Order rows unmatched
80010056 AssociationRowFilterFailed 0 0 Association row filter failed
80010057 AssociationMappingRulesFound 0 0 Association mapping rules found
80010058 PPMathingManuallyUpdated 0 0 Pay plan manually updated
80010059 PaymentScheduleAlreadyUsed 0 0 Payment schedule already used
80010060 PPCurrencyMismatch 0 0 Pay plan currency mismatch

Seite 128 von 208


1.101 Email notifications variables

Descrtiption Variable
Supplier name ${OrderData.InvoicingSupplierName}
Order number ${OrderData.OrderNumber}
Order line ${row.OrderRow.RowIndex}
User account ${User.LoginAccount}
Approval password expiration ${User.ApprovalPasswordExpirationDays}
Login link ${Portal.LoginLink}
Change password link ${Link.ChangePasswordLink}
Approval password ${User.PlainApprovalPassword}
Customer ${License.CustomerName}
License expiration days ${License.ExpirationDays}
License mode ${License.Mode}
Password ${User.PlainPassword}
Password expiration ${User.PasswordExpirationDays}
Transaction history - org name ${transactionHistory.TransactionData.OrganizationName}
Transaction history - transaction type ${transactionHistory.TransactionData.TransactionType}
Transaction history - used transactions ${transactionHistory.TransactionData.UsedTransactions}
Transaction history - max transactions ${transactionHistory.TransactionData.MaxTransactions}
Pending task total ${IA_OpenInvoiceTasks.TotalCount}
Pending task review ${IA_OpenInvoiceTasks.ReviewCount}
Pending task row review ${IA_OpenInvoiceTasks.RowReviewCount}
Pending task row approval ${IA_OpenInvoiceTasks.RowApprovalCount}
Pending task header approval ${IA_OpenInvoiceTasks.HeaderApprovalCount}
Pending task additional approval ${IA_OpenInvoiceTasks.AdminApprovalCount}

Seite 129 von 208


Supplier ${Invoice.Supplier}
Invoice currency code ${Invoice.CurrencyCode}
Gross total $Invoice.GrossSum.ToString("f2",$UserData.FormatLanguage)
Cash date ${Invoice.CashDate.ToString("D",$UserData.FormatLanguage)}
Invoice due date ${Invoice.DueDate.ToString("D",$UserData.FormatLanguage)}
Invoice number ${Invoice.InvoiceNumber}
Invoice payment term ${Invoice.PaymentTermName}
Invoice handling time ${Invoice.Handlingtime}
Reduction amount $Invoice.CashDiscount.ToString("f2",$UserData.FormatLanguage)
Invoice ID ${Invoice.InvoiceID}
Review user ${Invoice.ReviewerUserName}
Export organization ${ExportDetails.Organization}
Export voucher date range ${ExportDetails.VoucherDateRange}
Export ID ${ExportDetails.InternalId}
Export description ${ExportDetails.Description}
Export time of completion ${ExportDetails.TimeOfCompletion}
Total count of invoices before export ${ExportDetails.InitialDocumentCount}
Total count of invoices after export ${ExportDetails.FinalExportedDocumentCount}
Difference ${ExportDetails.DifferenceInDocumentCount}
Export failed reason ${ExportDetails.ExportFailedReason}
Task name ${Task.ActionName}
Invoice sender user name ${Invoice.SenderUserName}
Invoice sender email body ${Invoice.SenderEmailBody}
Payment plan number ${Plan.PlanNumber}
Payment plan number ${PayPlan.PaymentPlanNumber}
Payment plan invoice number ${Plan.InvoiceNumber}

Seite 130 von 208


Payment plan supplier name ${PayPlan.SupplierName}
Payment plan total $PayPlan.Total.ToString("f2",$UserData.FormatLanguage)
Payment plan currency code ${PayPlan.CurrencyCode}
Payment plan ID ${PayPlan.Id}
Payment plan org name ${PayPlan.OrganizationElementName}
Payment plan reference ${PayPlan.PaymentPlanReference}
Invoice reference number ${Invoice.ReferenceNumber}
Payment message ${Invoice.PaymentMessage}
Payment plan contact name ${PayPlan.ContactPersonName}
Payment plan contact email ${PayPlan.ContactPersonEmailId}
Purchase requisition number ${Purchase_PR.Number}
Purchase requisition date ${Purchase_PR.CreatedAt.ToString("D", $UserData.FormatLanguage)}
Purchase requisition created by ${Purchase_PR.CreatedByFullName}
Purchase requisition gross total ${Purchase_PR.GrossSum.ToString("f2",$UserData.FormatLanguage)}
Purchase requisition currency code ${Purchase_PR.CurrencyCode}
PO number ${Purchase_PO.Number}
PO creation time ${Purchase_PO.CreationTime}
PO buyer company name ${Purchase_PO.BuyerCompanyName}
PO buyer company web address ${Purchase_PO.BuyerCompanyWebAddress}
PO reply email address ${Purchase_PO.EmailReplyAddress}
PO Desired delivery date ${Purchase_PO.DesiredDeliveryDate}
PO Created by ${Purchase_PO.CreatedBy}
PO Creator Email ${Purchase_PO.CreaterEmail}
PO Purpose ${Purchase_PO.Purpose}
PO Payment term ${Purchase_PO.PaymentTerm}
PO Note to supplier ${Purchase_PO.NoteToSupplier}

Seite 131 von 208


1.102 SFTP Adressen/Parameter
Alusta Inbound/Outbound access

1.103 Standard Coding Fields

Schema Item Label in Purchase Schema Item Label in Matching Order Schema Item Label in Invoice Coding OM_CODING_ROW IA_CODING_ROW
Order Invoicing Coding Rows Rows

AccountCode AccountCode AccountCode ACCOUNT_CODE ACCOUNT_CODE

AccountName AccountName AccountName ACCOUNT_NAME ACCOUNT_NAME

- - ApprovedCount - APPROVED_COUNT

CostCenterCode CostCenterCode CostCenterCode COST_CENTER_CODE COST_CENTER_CODE

Seite 132 von 208


CostCenterName CostCenterName CostCenterName COST_CENTER_NAME COST_CENTER_NAME

CurrentRecipientName - CurrentRecipientName - CURRENT_RECIPIENT_NAME

LineInvoicingDate1 Date1 Date1 DATE1 DATE1

LineInvoicingDate2 Date2 Date2 DATE2 DATE2

LineInvoicingDate3 Date3 Date3 DATE3 DATE3

LineInvoicingDate4 Date4 Date4 DATE4 DATE4

LineInvoicingDate5 Date5 Date5 DATE5 DATE5

- - DeliveryNoteNumber - DELIVERY_NOTE_NUMBER

GrossTotal GrossTotal GrossTotal GROSS_SUM GROSS_SUM

- - GrossTotalCompany - GROSS_SUM_COMP

- - GrossTotalOrganization - GROSS_SUM_ORG

- - Id - ID

- - InvoiceID - INVOICE_ID

- - LastComment - LAST_COMMENT

- - MatchingMode - MATCHING_MODE

- - MatchingSubStatus - MATCHING_SECONDARY_STATUS

- NetTotal NetTotal NET_SUM NET_SUM

- - NetTotalCompany - NET_SUM_COMP

- - NetTotalOrganization - NET_SUM_ORG

LineInvoicingNum1 Num1 Num1 NUM1 NUM1

LineInvoicingNum2 Num2 Num2 NUM2 NUM2

LineInvoicingNum3 Num3 Num3 NUM3 NUM3

LineInvoicingNum4 Num4 Num4 NUM4 NUM4

LineInvoicingNum5 Num5 Num5 NUM5 NUM5

- - OrderedQuantity NUM10 NUM10

Seite 133 von 208


- - OrderLineNetTotal NUM11 NUM11

- - OrderLineGrossTotal NUM12 NUM12

- - ReceivedQuantity NUM13 NUM13

- - ReceivedNetPrice NUM14 NUM14

- - ReceivedGrossPrice NUM15 NUM15

- - ReceivedNetTotal NUM16 NUM16

- - ReceivedGrossTotal NUM17 NUM17

- ConversionNumerator ConversionNumerator NUM19 NUM19

- ConversionDenominator ConversionDenominator NUM20 NUM20

- - OrderNetTotal - NUM2

- - OrderGrossTotal - NUM20

- - OrderedNetPrice - NUM8

- - OrderedGrossPrice - NUM9

CompanyCode - - - -

OrganizationElementCode - OrganizationElementCode - ORGANIZATION_ELEMENT_CODE

OrganizationElementId - OrganizationElementId - ORGANIZATION_ELEMENT_ID

- - OrganizationElementName - ORGANIZATION_ELEMENT_NAME

- - Origin - ORIGIN

- - Percentage - PERCENTAGE

- PermissionCode1 PermissionCode1 PERMISSION_CODE1 PERMISSION_CODE1

- PermissionCode2 PermissionCode2 PERMISSION_CODE2 PERMISSION_CODE2

- PermissionCode3 PermissionCode3 PERMISSION_CODE3 PERMISSION_CODE3

- PermissionCode4 PermissionCode4 PERMISSION_CODE4 PERMISSION_CODE4

- PermissionCode5 PermissionCode5 PERMISSION_CODE5 PERMISSION_CODE5

- PermissionCode6 PermissionCode6 PERMISSION_CODE6 PERMISSION_CODE6

Seite 134 von 208


- PermissionCode7 PermissionCode7 PERMISSION_CODE7 PERMISSION_CODE7

ProjectCode ProjectCode ProjectCode PROJECT_CODE PROJECT_CODE

ProjectName ProjectName ProjectCode PROJECT_NAME PROJECT_CODE

- - ReviewedCount REVIEWED_COUNT

CodingLineNumber RowIndex RowIndex ROW_INDEX ROW_INDEX

- - Sealed - SEALED

- TaxCode TaxCode TAX_CODE TAX_CODE

- TaxPercent TaxPercent TAX_PERCENT TAX_PERCENT

- TaxPercent2 TaxPercent2 TAX_PERCENT2 TAX_PERCENT2

- TaxSum TaxSum TAX_SUM TAX_SUM

- - TaxSumComp - TAX_SUM_COMP

- - TaxSumOrg - TAX_SUMORG

- TaxSum2 TaxSum2 - TAX_SUM2

- - TaxSum2Comp - TAX_SUM2_COMP

- - TaxSum2Org - TAX_SUM2_ORG

LineInvoicingText1 Text1 Text1 TEXT1 TEXT1

LineInvoicingText2 Text2 Text2 TEXT2 TEXT2

LineInvoicingText3 Text3 Text3 TEXT3 TEXT3

LineInvoicingText4 Text4 Text4 TEXT4 TEXT4

LineInvoicingText5 Text5 Text5 TEXT5 TEXT5

- BuyerName BuyerName TEXT10 TEXT10

- OrderLineUOM OrderLineUOM TEXT11 TEXT11

- OrderLineDescription OrderLineDescription TEXT12 TEXT12

- OrderLinePriceUnit OrderLinePriceUnit TEXT13 TEXT13

- OrderLinePriceUnitDescription OrderLinePriceUnitDescription TEXT14 TEXT14

Seite 135 von 208


- Plant Plant TEXT15 TEXT15

- PartnerProfitCenter PartnerProfitCenter TEXT16 TEXT16

FixedAssetCode FixedAssetCode FixedAssetCode TEXT17 TEXT17

FixedAssetName FixedAssetName FixedAssetName TEXT18 TEXT18

FixedAssetSubCode FixedAssetSubCode FixedAssetSubCode TEXT41 TEXT41

FixedAssetSubName FixedAssetSubName FixedAssetSubName TEXT42 TEXT42

- GRItemNumber GRItemNumber TEXT19 TEXT19

- GRNumber GRNumber TEXT20 TEXT20

LineInvoicingDimCode1 DimCode1 DimCode1 TEXT21 TEXT21

LineInvoicingDimName1 DimName1 DimName1 TEXT22 TEXT22

LineInvoicingDimCode2 DimCode2 DimCode2 TEXT69 TEXT69

LineInvoicingDimName2 DimName2 DimName2 TEXT70 TEXT70

LineInvoicingDimCode3 DimCode3 DimCode3 TEXT25 TEXT25

LineInvoicingDimName3 DimName3 DimName3 TEXT26 TEXT26

LineInvoicingDimCode4 DimCode4 DimCode4 TEXT27 TEXT27

LineInvoicingDimName4 DimName4 DimName4 TEXT28 TEXT28

LineInvoicingDimCode5 DimCode5 DimCode5 TEXT29 TEXT29

LineInvoicingDimName5 DimName5 DimName5 TEXT30 TEXT30

LineInvoicingDimCode6 DimCode6 DimCode6 TEXT31 TEXT31

LineInvoicingDimName6 DimName6 DimName6 TEXT32 TEXT32

LineInvoicingDimCode7 DimCode7 DimCode7 TEXT33 TEXT33

LineInvoicingDimName7 DimName7 DimName7 TEXT34 TEXT34

LineInvoicingDimCode8 DimCode8 DimCode8 TEXT35 TEXT35

LineInvoicingDimName8 DimName8 DimName8 TEXT36 TEXT36

LineInvoicingDimCode9 DimCode9 DimCode9 TEXT37 TEXT37

Seite 136 von 208


LineInvoicingDimName9 DimName9 DimName9 TEXT38 TEXT38

LineInvoicingDimCode10 DimCode10 DimCode10 TEXT39 TEXT39

LineInvoicingDimName10 DimName10 DimName10 TEXT40 TEXT40

InternalOrderCode InternalOrderCode InternalOrderCode TEXT43 TEXT43

InternalOrderName InternalOrderName InternalOrderName TEXT44 TEXT44

ProfitCenterCode ProfitCenterCode ProfitCenterCode TEXT45 TEXT45

ProfitCenterName ProfitCenterName ProfitCenterName TEXT46 TEXT46

BusinessUnitCode BusinessUnitCode BusinessUnitCode TEXT47 TEXT47

BusinessUnitName BusinessUnitName BusinessUnitName TEXT48 TEXT48

ProjectSubCode ProjectSubCode ProjectSubCode TEXT49 TEXT49

ProjectSubName ProjectSubName ProjectSubName TEXT50 TEXT50

EmployeeCode EmployeeCode EmployeeCode TEXT51 TEXT51

EmployeeName EmployeeName EmployeeName TEXT52 TEXT52

VehicleNumber VehicleNumber VehicleNumber TEXT53 TEXT53

VehicleName VehicleName VehicleName TEXT54 TEXT54

SalesOrderCode SalesOrderCode SalesOrderCode TEXT55 TEXT55

SalesOrderName SalesOrderName SalesOrderName TEXT56 TEXT56

SalesOrderSubCode SalesOrderSubCode SalesOrderSubCode TEXT57 TEXT57

SalesOrderSubName SalesOrderSubName SalesOrderSubName TEXT58 TEXT58

CustomerCode CustomerCode CustomerCode TEXT59 TEXT59

CustomerName CustomerName CustomerName TEXT60 TEXT60

AccountingAssignmentCategoryCode AccAssignmentCategoryCode AccAssignmentCategoryCode TEXT61 TEXT61

AccountingAssignmentCategoryName AccAssignmentCategoryName AccAssignmentCategoryName TEXT62 TEXT62

BudgetCode BudgetCode BudgetCode TEXT63 TEXT63

BudgetName BudgetName BudgetName TEXT64 TEXT64

Seite 137 von 208


ServiceCode ServiceCode ServiceCode TEXT65 TEXT65

ServiceName ServiceName ServiceName TEXT66 TEXT66

BusinessAreaCode BusinessAreaCode BusinessAreaCode TEXT67 TEXT67

BusinessAreaName BusinessAreaName BusinessAreaName TEXT68 TEXT68

- TaxJuridisdictionCode TaxJuridisdictionCode TEXT71 TEXT71

- SubUOM SubUOM TEXT72 TEXT72

WorkOrderCode WorkOrderCode WorkOrderCode TEXT73 TEXT73

WorkOrderName WorkOrderName WorkOrderName TEXT74 TEXT74

WorkOrderSubCode WorkOrderSubCode WorkOrderSubCode TEXT75 TEXT75

WorkOrderSubName WorkOrderSubName WorkOrderSubName TEXT76 TEXT76

- CommitmentItem CommitmentItem TEXT77 TEXT77

- ControllingArea ControllingArea TEXT78 TEXT78

- FunctionalArea FunctionalArea TEXT79 TEXT79

- Network Network TEXT80 TEXT80

- NetworkActivity NetworkActivity TEXT81 TEXT81

- OrderCodingRowNumber OrderCodingRowNumber TEXT82 TEXT82

- - FreightSlip TEXT83 TEXT83

- - PurchasingCategoryCode TEXT84 TEXT84

- - PurchasingCategoryName TEXT85 TEXT85

- OrderNumber OrderNumber ORDER_NUMBER ORDER_NUMBER

- OrderRowId OrderRowId ORDER_ROW_ID ORDER_ROW_ID

- OrderRowNumber OrderRowNumber ORDER_ROW_NUMBER ORDER_ROW_NUMBER

- - InvoiceId - INVOICE_ID

- - InvoicePaymentDate - INVOICE_PAYMENT_DATE

- - OwnerName - OWNER_NAME

Seite 138 von 208


- AllocatedQuantity AllocatedQuantity QUANTITY ALLOCATED_QUANTITY

- - MatchedQuantity - MATCHED_QTY

- - MatchedNetSum - MATCHED_NET_SUM

- - MatchedGrossSum - MATCHED_GROSS_SUM

- - FiscalYear - -

- - ConditionType - -

- - FreightSlip - -

Split Percent - Percentage - PERCENTAGE

DistributionCode - - - -

DistributionMode - - - -

Seite 139 von 208


Archivierung

Zur Archivierung muss ein Archive-Task wie folgt aktiviert werden:

Dann muss im Outbound-Verzeichnis ein “ARCHIVE” – Verzeichnis angelegt werden. Dort werden dann die Archivdaten abgelegt (incl. Anhängen). Eine Nacharchivierung ist (noch) nicht möglich.

Seite 140 von 208


anyERP

1.104 LoopExit – Funktionalität


Wenn loopExit erfüllt ist, dann wird der Loop verlassen
<section name="loopFetchTimes" loopDataSource="{BT.Properties,FetchTimes}" loopExit="{F,IF(BT.Properties,FetchTimes;=;0)}">
…..
</section>

1.105 LoopExit ./. LoopInclude ./. Include

Hier die Möglichkeiten: (xxxxxxx ist hier angenommen eine F,IF oder F,EVAL – Bedingung oder eine Variable, die dann TRUE oder FALSE ergibt.)

<section name=“test1“ loopDatasource = “A” Hier wird nur einmalig der include abgefragt, im xxxxxx =
include=”xxxxxxx”> „FALSE“ – Fall wird die gesamte Section übersprungen.
….
</section>

<section name=“test1“ loopDatasource = “A” Hier wird der Include abgefragt aber im xxxxxx = „FALSE“ – Fall
LoopInclude=”xxxxxxx”> nur der eine Durchlauf übersprungen und trotzdem weiter
geloopt bis „A“ durchgelaufen ist.
….
</section>

<section name=“test1“ loopDatasource = “A” Hier wird solange geloopt, bis loopExit = „TRUE“ (= vorzeitiger
loopExit=”xxxxxxx”> Abbruch) oder der Datasource „A“ die Luft ausgeht.
….
</section>

Seite 141 von 208


1.106 Lesen großer Stammdatenmengen
In manchen Fällen kommt es zu einem Memory overflow, wenn sehr viele Daten zu lesen sind. Hier eine Lösung, wie man die Daten in kleineren Segmenten liest und wegschreibt.

<variable name="readCursor">0</variable>

<variable name="readBuffer">50000</variable>

<section name="readXTimesLFA1" loopDataSource="5">

<clearTable>LFA1</clearTable>

<method name="GetVendorCompany">

<builtInMethodParameterList name="{v,readTableFunction}">

<parameter name="fields">LIFNR;NAME1;NAME2;STRAS;PSTLZ;ORT01;LAND1;STCEG;PFACH;TELF1;STCD1;STCD2;STENR;SORTL;LNRZA</parameter>

<parameter name="table">LFA1</parameter>

<parameter name="where">LOEVM &lt;> 'X' AND SPERR &lt;> 'X' AND (LIFNR like '00018%' OR LIFNR like '000599%' OR LIFNR like '00999%')</parameter>

<parameter name="rowskips">{v,readCursor}</parameter>

<parameter name="rowcount">{v,readBuffer}</parameter>

</builtInMethodParameterList>

</method>

<output name="OutputVendors_SQL" type="BasWare.ErpConnector.OutputResource.OleDbOutputResource" include="{F,IF(F,ROWCOUNT(LFA1);>;0)}">

<parameter name="connectionstring">{v,connstr}</parameter>

<outputCommands type="sqlUpdate" loopDataSource="LFA1">

<parameter name="table">supplier</parameter>

<parameter name="where">supplier_num ='{LFA1,LIFNR,0}'</parameter>

<command type="supplier_name" attribute="System.String">{F,TRIM(LFA1,NAME1,,70)}</command>

<command type="supplier_name2" attribute="System.String">{F,TRIM(LFA1,NAME2,,50)}</command>

<command type="supplier_14" attribute="System.String">{F,TRIM(LFA1,LNRZA,0)}</command>

</outputCommands>

<outputCommands>

Seite 142 von 208


<command type="sql">DELETE FROM SUPPLIER WHERE SUPPLIER_NAME = '' or SUPPLIER_NAME is null and comp_no = 'A999'</command>

</outputCommands>

</output>

<clearTable>LFA1</clearTable>

<variable name="readCursor">{F,CALC(v,readCursor;"+";v,readBuffer)}</variable>

</section>

1.107 eMail - Funktionen


Supported parameters:
to Address of the recipient
cc Address of the carbon copy recipient
bcc Address of the blind carbon copy recipient
subject Subject of the e-mail
server SMTP server‟s address
serverport SMTP server‟s port (default is 25)
from Address of the sender
body Email content. Message can have more than one body within one message. This parameter has an attribute named type, which can be used to set
content type for the alternative body. Eg. One body with text and other with html. Attribute „type‟ accepts values „html‟ and „text‟.
attachment Attachment file path or stream variable. This parameter also supports loopDatasource attribute which can be used to supply attachments from a
datasource.
username optional encrypted username for SMTP server credentials credentials (NOTE: the username MUST be encrypted with ENCRYPT expression
Function, or similar encryption)
password optional
encrypted password for SMTP server credentials (NOTE: the password MUST be encrypted with ENCRYPT expression Function or similar encryption)
domain optional domain name for SMTP server credentials
format optional value „html‟ indicates the mail body is HTML in case there is only one message body with the email.

Seite 143 von 208


1.108 Millisekunden mit F,NOW() erzeugen
F,NOW(),"yyyyMMddHHmmssfff"

1.109 Runden auf zwei Nachkommastellen


{F,TONUMBER(F,ROUND(AccountingData,bruttocalc;2);","),"#.00"}

1.110 anyERP-Errorhandling

Abfangen des Errors In jeder “Get….” - Transaction

<transaction name="GetInternalOrdersRFC">

<onError name="ExceptionHandler" onErrorJumpToXPath="//section[@name='ErrorHandler']" />

</onError>
</transaction>

eMailversand beim Fehler

<section name="ErrorHandler">

<section name="SendMail">

<method name="DoMailing_single">

<variable name="currentMailBody"><html>There was an error running transaction <br><br>>>>> <b>{v,current_entry_point}</b> <<<<<br><br>You can finde the logfile here:<br><b>{v,
ENVIRONMENT_LOG_FILE }</b></html></variable>

<builtInMethodParameterList name="email">

<parameter name="to">stephan.kittel@basware.com</parameter>

<parameter name="subject">Basware anyERP reports an error on reading basic data</parameter>

<parameter name="server">smtp.muenster.de.root.net</parameter>

<parameter name="from">BaswareEPP@ista.com</parameter>

<parameter name="body" type="html">{v,currentMailBody}</parameter>

</builtInMethodParameterList>

Seite 144 von 208


</method>
</section>
</section>

Die Datasource „error‟ hat folgende Felder:

exception the string representation of the exception


message message of the exception
innerexception innerexception message (if exists)
source the source (app or object) of the exception
stacktrace stacktrace for the exception

1.111 anyERP Kommandos und Funktionen

86.1 F,ISDATE

<variable name="id1">{F,ISDATE("blsbls")}</variable> => false


<variable name="id2">{F,ISDATE("13-03-2010")}</variable> => false
<variable name="id3">{F,ISDATE("13-03-2010";"dd-mm-yyyy")}</variable> => true
<variable name="id4">{F,ISDATE("13-03-2010")}</variable> => false
<variable name="id5">{F,ISDATE("13.03.2010")}</variable> => false
<variable name="id6">{F,ISDATE("13.03.2010";"dd.mm.yyyy")}</variable> => true
<variable name="id7">{F,ISDATE("2.3.2010";"dd.mm.yyyy")}</variable> => false
<variable name="id8">{F,ISDATE("20110315";"yyyymmdd")}</variable> => true
<variable name="id9">{F,ISDATE("2011-03-15";"yyyy-mm-dd")}</variable> => true

86.2 String in ein Datum mit speziellem Format umwandeln

Hier: von dd.MM.YYYY nach YYYYMM

Seite 145 von 208


<variable name="BSEGABPER_dummy">{F,DBSELECT("select t64 from acc_data where (doc_id=?) and (sort_order=?)";v,connstr;Invoice.I,DOCID;Invoice.A,SORTORDER)}</variable>

Ergebnis: 14.08.2018 als String

<variable name="BSEGABPER_dummy">{F,TODATE(v,BSEGABPER_dummy;"dd.MM.yyyy")}</variable>

Ergebnis: 14.08.2018 als Datum

<variable name="BSEGABPER_dummy">{v,BSEGABPER_dummy,"yyyyMM"}</variable>

Ergebnis: 201808 als Datum

<variable name="BSEGABPER_dummy">{F,TODATE(sourcedata,VALID_FROM;"dd/MM/yyyy"),"dd-MMM-yy"}</variable>

dd/MM/yyyy = source Datumsformat

dd-MMM-yy = destination Datumsformat

Ergebnis: 12-MAR-20 als Datum

86.3 File Funktionen


86.3.1 Rename File
<builtInMethodParameterList name="bw_file_functions">
<parameter name="command">rename</parameter>
<parameter name="filename">C:\testfile.txt</parameter>
<parameter name="newname">C:\newname.dat</parameter>
</builtInMethodParameterList>

86.3.2 Move File


<builtInMethodParameterList name="bw_file_functions">
<parameter name="command">rename</parameter>
<parameter name="filename">C:\pictures\testfile.txt</parameter>
<parameter name="newname">C:\pictures\backup\testfile.txt</parameter>
</builtInMethodParameterList>

86.3.3 Rename Directory


<builtInMethodParameterList name="bw_file_functions">
<parameter name="command">rename</parameter>
<parameter name="filename">C:\temp\olddir</parameter>
<parameter name="newname">C:\temp\newdir </parameter>
</builtInMethodParameterList>

Seite 146 von 208


86.3.4 Delete File(s)
<builtInMethodParameterList name="bw_file_functions">
<parameter name="command">delete</parameter>
<parameter name="filename">D:\temp\*delfile?.txt</parameter>
</builtInMethodParameterList>

86.3.5 Delete Directory(s)


<builtInMethodParameterList name="bw_file_functions">
<parameter name="command">deletedir</parameter>
<parameter name="filename">C:\temp\mydir*</parameter>
</builtInMethodParameterList>

86.3.6 Create Directory


<builtInMethodParameterList name="bw_file_functions">
<parameter name="command">createdir</parameter>
<parameter name="filename">C:\temp\testdir</parameter>
</builtInMethodParameterList>

86.3.7 COPY File(s)


<builtInMethodParameterList name="bw_file_functions">
<parameter name="command">copy</parameter>
<parameter name="filename">C:\temp\log*.txt</parameter>
<parameter name="newname">D:\backup</parameter>
</builtInMethodParameterList>

86.3.8 Directory auslesen (DIR)


<builtInMethodParameterList name="bw_file_functions">
<parameter name="command">dir</parameter>
<parameter name="filename">D:\temp</parameter>
<return name="fileList">
<filter />
<sort />
</return>
</builtInMethodParameterList>

Returnwerte:
name = File name
path = File path + Filename(!)
created = File creation time
lastaccess = File last accession time
lastwrite = File last write operation time
attributes = File attributes
isfile = Bezeichnet den Typ: („true“ = File, „false“ = Directory)

Seite 147 von 208


length = File size

<builtInMethodParameterList name="bw_file_functions">
<parameter name="command">dir</parameter>
<parameter name="filename">C:\temp\lock.txt</parameter>
<return name="fileList">
<filter />
<sort />
</return>
</builtInMethodParameterList>

86.4 TIFF-Files splitten/mergen


splitten

<builtInMethodParameterList name="bw_file_functions">
<parameter name="command">SplitTiff</parameter>
<parameter name="filename">d:\inbox\images\multipage.tif</parameter>
<parameter name="newname">d:\processed\</parameter>
<return name="fileList">
<filter />
<sort />
</return>
</builtInMethodParameterList>

mergen

<builtInMethodParameterList name="bw_file_functions">
<parameter name="command">JoinTiff</parameter>
<parameter name="filestojoin">fileList,path</parameter>
<parameter name="newname">d:\processed\jointimage.tif</parameter>
<parameter name="arguments"></parameter>
<return name="fileList">
<filter />
<sort />
</return>
</builtInMethodParameterList>

86.5 String splitten


<builtInMethodParameterList name="bw_string_functions">
<parameter name="operation">split</parameter>
<parameter name="sourcestring">{v,mystring}</parameter>

Seite 148 von 208


<parameter name="separator">,</parameter>
<return name="parts">
<filter />
<sort />
</return>
</builtInMethodParameterList>

Hinweis: Der Separator selbst wird hierbei entfernt. Der return name muss zwingend „parts“ lauten. Die Datasource wird dann mit loopDataSource=“parts“ ausgelesen. Die Partstrings stehen dann unter {parts,parts}
Achtung! Verwendet man einen Separator wie z.B. „hier“, dann wird der String an „h“, „i“, „e“ und „r“ getrennt.

86.6 Felder einer Datasource ermitteln


<builtInMethodParameterList name="bw_ds_describe">
<parameter name="inputDataSource">MyDataSource</parameter>
<return name="MyOutputDataSource" />
</builtInMethodParameterList>

Parameter Description
AllowDBNull A value that indicates whether null values are allowed in
this column for rows that belong to the table.
Caption The caption for the column.
ColumnMapping The MappingType of the column.
ColumnName The name of the column.
DataType The type of data stored in the column.
DateTimeMode The DateTimeMode for the column.
DefaultValue The default value for the column when you are creating
new rows.
Expression The expression used to filter rows, calculate the values in
a column, or create an aggregate column.
MaxLength The maximum length of a text column.
Namespace The namespace of the DataColumn.
Ordinal The column in the DataColumnCollection collection.
Prefix An XML prefix that aliases the namespace of the
DataTable.
ReadOnly A value that indicates whether the column allows for
changes as soon as a row has been added to the table.
Unique A value that indicates whether the values in each row of
the column must be unique.

86.7 onError – Behandlung


<onError name="Transactions_1" onErrorJumpToXPath="//section[@name='ErrorHandler']">
<transaction>
<variable name="success">{C,1}</variable>
</transaction>
<transaction>

Seite 149 von 208


<variable name="failure">{jkldf}</variable>
</transaction>
</onError>

<section name="ErrorHandler">
<variable name="ExceptionOccured">True</variable>
</section>

86.8 CSV-Export
Configuration example for character separated file. Configuration example for character separated file with column names Configuration example for fixed length file.
in a first line.

<builtInMethodParameterList name="bw_csv_input"> <builtInMethodParameterList name="bw_csv_input"> <builtInMethodParameterList name="bw_csv_input">


<parameter name="filename">C:\temp\data1.txt </parameter> <parameter name="filename">C:\temp\data2.txt </parameter> <parameter name="filename"> C:\temp\data2.txt </parameter>
<parameter name="colseparator">,</parameter> <parameter name="colseparator">;</parameter> <parameter name="colseparator">FixedLength</parameter>
<parameter name="colnameheader">false</parameter> <parameter name="colnameheader">true</parameter> <parameter name="colnameheader">false</parameter>
<parameter name="decimalseparator">.</parameter> <return name="returntable"> <parameter name="skiplines">1</parameter>
<parameter name="skiplines">1</parameter> <filter /> <parameter name="column" columnName="profitno" type="Char" width="9"></parameter>
<return name="returntable"> <sort /> <parameter name="column" columnName="name" type="Char" width="25"></parameter>
<filter /> </return> <parameter name="column" columnName="no" type="Char" width="7"></parameter>
<sort /> </builtInMethodParameterList> <return name="returntable">
</return> <filter />
</builtInMethodParameterList> <sort />
</return>
</builtInMethodParameterList>

86.9 Joins

<method>
<builtInMethodParameterList name="bw_ds_join">
<parameter name="parentDataSource">Accounts</parameter>
<parameter name="childDataSource">SKB1Data</parameter>
<parameter name="joinType">Left</parameter>
<criteria left="code" right="BUKRS" operator="="/>
<criteria left="text_1" right="SAKNR" operator="="/>
<returnColumn datasource="Accounts" column="code" name="code"/>
<returnColumn datasource="Accounts" column="text_1" name="text_1"/>
<returnColumn datasource="Accounts" column="text_2" name="text_2"/>
<returnColumn datasource="SKB1Data" column="MWSKZ" name="MWSKZ"/>
<returnColumn datasource="SKB1Data" column="FSTAG" name="FSTAG"/>
<returnColumn datasource="SKB1Data" column="XMWNO" name="XMWNO"/>
<return name="JoinedAccountData" />

Seite 150 von 208


</builtInMethodParameterList>
</method>

Andere Join Methoden:

Outer

Inner

86.10 Archive function

<builtInMethodParameterList name="bw_file_functions">
<parameter name="command">Archive</parameter>
<parameter name="filename">{v,LogFile}</parameter>
<parameter name="append">True</parameter>
<parameter name="archive">{v,ZipFile}</parameter>
</builtInMethodParameterList>

86.11 Unarchive function

<builtInMethodParameterList name="bw_file_functions">
<parameter name="command">Unarchive</parameter>
<parameter name="filename">{v,path}\{filelist,filename}</parameter>
<parameter name="archivepath">{filelist,fileuri}</parameter>
<parameter name="archive">{v,archivefile}</parameter> </builtInMethodParameterList>

86.12 Listarchive function

Seite 151 von 208


<builtInMethodParameterList name="bw_file_functions">
<parameter name="command">Listarchive</parameter>
<parameter name="archive">{v,archivefile}</parameter>
<return name="filelist" />
</builtInMethodParameterList>

86.13 FTP-Filetransfer (Beispiel)


<method name="ftpUploadSupplier">
<builtInMethodParameterList name="bw_ftp_functions">
<parameter name="command">put</parameter>
<parameter name="username">MedSat</parameter>
<parameter name="password">*****</parameter>
<parameter name="localfile">{v,OutputDirectory}SupplierExtract.txt</parameter>
<parameter name="remoteurl">ftp://nova.basware.com/SupplierExtract.txt</parameter>
<parameter name="useproxy">False</parameter>
<parameter name="usessl">True</parameter>
<parameter name="usepassive">True</parameter>
</builtInMethodParameterList>
</method>

86.14 Daten aus einer gejointen Datasource (Vendors) aus den Ursprungstabellen (LFA1+LFB1) lesen:
Join:

Loop:

Seite 152 von 208


1.112 Konstanten definieren

<variable name="NULLS">{C,” ( NULLS = 'X' ) “}</variable>

1.113 Variable als numerisch definieren


Obwohl man eine Variable mit

<variable name=“bwCurrentDiffAbsolute“>5</variable>

scheinbar als numerisch definiert, wird diese als String gespeichert. Damit gibt es ggf. Probleme mit dem Vergleich von Werten. Daher sollte man im Vergleich folg. verwenden:

{F,IF(v,value1,NUM;>;v,value2,NUM)}

1.114 Semikolon in einem String ersetzen


Hier: ersetzt durch Komma

F,REPLACE(v,variable; ”&#59;”;”,”)

Seite 153 von 208


1.115 Stringformatierungen

„@@@@!“ (füllt recht mit Space auf 4 Stellen auf)


„!@@@@“ (füllt links mit Space auf 4 Stellen auf)
„!0000“ (füllt links mit „0“ auf 4 Stellen auf)

1.116 Finden der ersten Position eines Zeichens in einem String


Hinweis: Im Text “Test variable” soll die Position des “Space” gefunden werden

<variable name="var1">Test variable</variable>

<variable name="var2">{F,CALC(F,LEN(F,CSV(v,var1;1;" "));"+";1)}</variable>

Rückgabe: “5” in Variable “var2”

1.117 Zählen der Felder innerhalb eines Strings


Evtl. hat man einen String mit allen Bestellnummern mit Kommas separiert. Nun will man evtl. wissen, wie oft man durch den Bestellnummernstring loopen muss, bis man alle
Bestellnummern abgearbeitet hat.

Lösung:

<variable name="testlength">{F,CALC(1;+;F,LEN(v,accSortString);"-";F,LEN(F,REPLACE(v,accSortString;",";"")))}</variable>

Ergebnis:

09.10.2009 11:07:16 [ELEMENT]Loading variable 'accSortString' with value 12345,12346,12347,12348'

09.10.2009 11:07:16 [ELEMENT]Loading variable 'testlength' with value '4'

1.118 Umlaute-Umwandlung
ä = &auml;
ö = &ouml;
ü = &uuml;

Seite 154 von 208


Ä = &Auml;
Ö = &Ouml;
Ü = &Uuml;
ß = &szlig;
&#09; = Horizontal tab
&#10; = Line feed
&#13; = Carriage Return
&#32; = Space
&#38; = &

Seite 155 von 208


1.119 Änderung des Formats in der Dateiausgabe (UTF-8 / ANSI)
<output name="CreateIndexFile" type="BasWare.ErpConnector.OutputResource.TextOutputResource">
<parameter name="path">{v,indexFileName}</parameter>
<parameter name="append">True</parameter>
<parameter name="encoding">windows-1252</parameter>
<outputCommands>

Folg. Formate werden unterstützt:

Seite 156 von 208


"UTF-16LE", "utf-16", "ucs-2", "unicode", "ISO-10646-UCS-2" "UTF-16BE" or "unicodeFFFE", "windows-1252" "utf-7", "csUnicode11UTF7", "unicode-1-1-utf-7", "unicode-2-0-utf-7", "x-unicode-1-1-utf-7", "x-unicode-2-0-utf-7" "utf-8",
"unicode-1-1-utf-8", "unicode-2-0-utf-8", "x-unicode-1-1-utf-8", "x-unicode-2-0-utf-8" "us-ascii", "us", "ascii", "ANSI_X3.4-1968", "ANSI_X3.4-1986", "cp367", "csASCII", "IBM367", "iso-ir-6", "ISO646-US", "ISO_646.irv:1991" "GB18030"

1.120 Do…While in anyERP


<section name="DO">

(...)

<section name="WHILE" include="{F,IF(...)}" jumpToXPath="//section[@name='DO']"/>

</section>

oder eine Schleife über eine Datasource

<section name=”one” loopDataSource=”ds”>

<section name=”two” include=”{v,Looper}”>

<variable name=”Looper”>{F,IF(F,CURSORINDEX(ds);&lt;&gt;;50)}</variable>

</section>

</section>

Hier loopt anyERP durch die gesamte Datasource 50 mal, bis Cursorindex = 50 ist.

1.121 BPM / BPME

Damit die Werte richtig errechnet werden muß folg. berücksichtigt werden:

Bestellte Menge ist 100. Der Preis „Einzel-netto“ bezeichnet den Preis, was „Menge Best.-EH + Best.Pr.-ME“ kosten. Also hier: 11.-€ pro 10 ST. Dadurch ergibt sich 110,00 Nettobetrag.

Bestellte Menge ist 100. Der Preis „Einzel-netto“ bezeichnet den Preis, was „Menge Best.-EH + Best.Pr.-ME“ kosten. Also hier: 11.-€ pro 1 ST. Dadurch ergibt sich 1100,00 Nettobetrag

Seite 157 von 208


1.122 Built-in methods
3.6.1.1 bw_Calc_Order_History
This method is used to calculate SAP purchase order history totals as required for logistics invoice verification in SAP.
The following parameters (‘parameter’ node) can be defined for this method:
po_number Purchase order to calculate history for
document_currency Currency of the document that the calculated values will be used for.
subsequent_dc If this node contains any value (other than ‘false’), then purchase order values are calculated for a subsequent debit or credit invoice.
show_blocked_qty If this node contains any value (other than ‘false’) then blocked goods receipts are included in the returned values.
credit_memo Defines if values should be created for a credit memo. The following values are possible:
NoCreditMemo – Normal invoice.
NegativeValues – Credit memo with negative amounts
PositiveValues – Credit memo with positive amounts
po_rate Exchange rate to use for converting amounts in the purchase order currency to the document currency.
local_rate Exchange rate to use for converting amounts in the company local currency to the document currency.

Before calling this method, the SAP BAPI function PurchaseOrder-GetDetail should have been called, and the following return tables should have been saved (defined with the
‘return’ node):

po_header

po_items

po_item_account_assignment (if account assignment information is required)

po_item_history

The column ‘Po_Number’ must be added to the tables ‘po_item_account_assignment’ and ‘po_item_history’ to guarantee a way of identifying unique records when handling
multiple purchase orders.

Seite 158 von 208


In case conditional cost should be included in the calculated rows, the tables EKBZ and/or KONV should be read before calling this method. The following fields are required:
For table KONV:
KNUMV;KPOSN;KSCHL;MWSK1;ZAEHK;STUNR;KKURS;KRECH;KBETR;KPEIN;
For table EKBZ: EBELN;EBELP;GJAHR;BELNR;BUZEI;MENGE;DMBTR;SHKZG;KSCHL;VGABE;ZAEHK;STUNR;REEWR;WRBTR;REFWR;WAERS;
The calculated values are stored in the table ‘bw_po_item_history’ that has the same columns as the SAP table ‘po_item_history’.

3.6.1.2 bw_nco_call_function
This method is used to invoke a SAP function (ABAP function module). It does not require compiled SAP proxy and does not use the librfc32.dll. The benefits are better
performance and usability. The following parameters are supported:
Destination The reference to user and logon information provided in the BasWare anyERP Adapter.exe.config

The ‘function’ –node represents the SAP function. It supports following attributes:
Name Defines the SAP function name to be called.

‘funcparameter’ –node is used to define the parameters for the SAP function. The attributes supported by this node are:
name Name of the parameter
direction Parameter direction. Possible values: ‘in’ - input parameter; ‘out’ - output parameter.
Type Defines the type of the parameter. Attribute type can be used to define SAP structure or table. Possible values are ‘structure’ and ‘table’
function parameters with the types ‘structure’ and ‘table’ can contain child nodes especially if those are used as input parameters. In case the type is ‘table’ then the child node is
‘item’, which also has child node called ‘property’. If the type is ‘structure’ then there is not ‘item’, but ‘property’ node is straight under it.
In case the structure is defined as out-parameter, property-nodes will be used as a schema for the returntable. When used this way the returntable will contain only the columns
defined, with the type defined for each column. So the property-node has following attributes:
name Name of the property
type For use with the return table. When type is provided, the column will have this type.
defaultreturnvalue This attribute can be used to convert nulls to a default value.

The return node provides name of the function parameters that are to be used as datasources. The name of the return node is the same as the function parameter with the
direction set to ‘out’.
Here is an example for invoking BAPI_PO_GETDETAIL:
<builtInMethodParameterList name="bw_nco_call_function">
<parameter name="destination">BW_SAP_RD</parameter>
<function name="BAPI_PO_GETDETAIL">
<funcparameter name="account_assignment" direction="in" include="">X</funcparameter>
<funcparameter name="confirmations" direction="in" include="" />
<funcparameter name="extensions" direction="in" include="" />
<funcparameter name="header_texts" direction="in" include="">X</funcparameter>
<funcparameter name="history" direction="in" include="">X</funcparameter>
<funcparameter name="item_texts" direction="in" include="" />
<funcparameter name="items" include="">X</funcparameter>
<funcparameter name="purchaseorder" direction="in">{v,id}</funcparameter>
<funcparameter name="schedules" direction="in" include="" />
<funcparameter name="service_texts" direction="in" include="" />
<funcparameter name="services" direction="in" include="" />
<funcparameter name="po_header" type="structure" direction="out" include="" />
<funcparameter name="po_items" type="table" direction="out" include="" />
<funcparameter name="po_item_account_assignment" type="table" direction="out" include="" />
<funcparameter name="po_item_history" type="table" direction="out" include="" />
</function>

Seite 159 von 208


<return name="po_header" />
<return name="po_items" />
<return name="po_item_account_assignment" />
<return name="po_item_history" />
</builtInMethodParameterList>

3.6.1.3 bw_nco_rfc_read_table
Note! The SAP function used by this method is not released for customer use, and thus not supported by SAP. The customer must be made aware that we cannot guarantee the
functionality of this method in upcoming SAP versions.
The method reads the defined column from the defined table in SAP. It does not require compiled SAP proxy and does not use the librfc32.dll. The benefits are better
performance and usability. Following parameters are supported:
Destination The reference to user and logon information provided in the BasWare anyERP Adapter.exe.config
table Name of SAP table to read.
fields CSV string (separated with semicolon) containing the names of the fields to return from the read table.
where The ‘where’ string to use for selecting rows from the table.
rowcount Maximum number of rows to return from SAP.
rowskips Number of rows to skip before starting to read rows in SAP.
readerbuffersize Number of rows that saptablereader is buffering.
column user definable name and type for given columns
By default the returned table is automatically saved for later use, but the ‘return’ node can be use to define additional filters, sorting or to add columns to the returned table. The
returned table name by default is the same as the SAP table read, but this table can be renamed by using the name-attribute in the <return>. The fields and field types can be
altered with the column parameters. Take fields are taken in the order the column parameter are in the configuration.
Return –node supports also a type attribute and bw_Rfc_Read_Table supports a return type of ‘reader’. Reader-Datasource is vaguely similar to normal Table-Datasource with
some benefits and restrictions. Basically Reader-Datasource provides a way of reading forward-only stream of data from a data source. This means that it consumes less memory
since all the data is not loaded into a Table-Datasource in memory. Consider using it when transferring large amount of data. This behaviour sets some limits so that it cannot be
sorted or filtered with return node or joined to Datasource.
Below is an example of a configuration node used to read the 10 first rows (fields EBELN and LIFNR) from table EKKO in SAP. The column parameter renames the EBELN field
to Col1 and sets the type to system.string with a maximum width of 15 characters.
<method name="GetPoHeader" include="">
<builtInMethodParameterList name="bw_nco_rfc_read_table">
<parameter name="destination">BW_SAP</parameter>
<parameter name="fields">EBELN;LIFNR;</parameter>
<parameter name="where">LOEKZ &lt;&gt; 'X' AND ( BSTYP = 'F' OR BSTYP = 'K' OR BSTYP = 'L' )</parameter>
<parameter name="table">EKKO</parameter>
<parameter name="rowcount">10</parameter>
<parameter name="column" columnName="Col1" type="System.String" width="15"/>
<return name="returntable">
<filter />
<sort />
</return>
</builtInMethodParameterList>
</method>

3.6.1.4 bw_nco_Rfc_Call_Transaction
Note! The SAP function used by this method is not released for customer use, and thus not supported by SAP. The customer must be made aware that we cannot guarantee the
functionality of this method in upcoming SAP versions.

Seite 160 von 208


This method is used to call the SAP RFC function RFC_CALL_TRANSACTION. It does not require compiled SAP proxy and does not use the librfc32.dll. The benefits are better
performance and usability. Following parameters are supported:
destination The reference to user and logon information provided in the BasWare anyERP Adapter.exe.config
batchfile If defined, a batch file is created using the defined filename (and path) that can be used in the SAP transaction SHDB for debugging purposes.
dateformat Default date format to use in batch file. When a value is inserted that is a date type, it will automatically be formatted using this formatting string.
decimalcharacter Decimal character to use for numeric values. When a value is inserted that is a double or decimal type, the decimal character will automatically be
replace with the defined decimal character.
ignoreError The ignoreError parameter lets you define errors that should be ignored. This parameter is can be added multiple times and each occurrence should
contain the message ID and the message type separated by a comma.
ignoreMessage The ignoreMessage parameter lets you prevent the messages being added to messages collection – normally showing in client-side. Acceptable
values are true and false. Default value is False.
The SAP return values are automatically evaluated, and in case the SAP return value indicated a successful execution, this method will attempt to extract a voucher number from
the return message. If a number is extracted from the return message is placed in the variable ‘voucher_<transaction code>’. In case the transaction code contains the value ‘-‘,
this character is excluded, e.g. the voucher for transaction F-43 is stored in the variable ‘voucher_F43’.
The ‘screens’ nodes are processed in the order they appear in the ‘builtInMethodParameterList’ node.’
Attributes for ‘screens’ nodes:
trancode Transaction code to use
updmode Update mode, S=synchronous, A = asynchronous (default is ‘S’)
For each ‘screens’ node all ‘screen’ child nodes are processed in the order they appear.
Attributes for ‘screen’ nodes
number Screen number
program SAP program that displays screen
For each ‘screen’ node all ‘parameter’ child nodes are processed in the order they appear.
Attributes for ‘parameter’ node
allowZero Its value can be true or false (by default value is false). True means zero as a value in parameter for text field is allowed. False means
zero as a value in parameter for text field is not allowed and will not be passed to SAP.

The ‘parameter’ node defines fields to use for the defined screen. The ‘name’ attribute of this node is the batch field name in SAP.
<builtInMethodParameterList name="bw_nco_Rfc_Call_Transaction">
<parameter name="destination">BW_SAP</parameter>
<parameter name="batchfile">%temp%\trans_FB09.txt</parameter>
<screens updmode="S" trancode="FB09" >
<screen program="SAPMF05L" number="0102>
<parameter name="BDC_OKCODE">/00</parameter>
<parameter name="RF05L-BELNR">1900000000</parameter>
<parameter name="RF05L-XKKRE">X</parameter>
<parameter name="RF05L-BUKRS">1000</parameter>
<parameter name="RF05L-GJAHR">2005</parameter>
</screen>
<screen program="SAPMF05L" number="0302">
<parameter name="BDC_OKCODE">=ZK</parameter>
<parameter name="BSEG-SGTXT">Test text</parameter>
</screen>
<screen program="SAPMF05L" number="1302">
<parameter name="BDC_OKCODE">=ENTR</parameter>
<screen>
<screen program="SAPMF05L" number="0302">

Seite 161 von 208


<parameter name="BDC_OKCODE">=AE</parameter>
<parameter name="BSEG-SGTXT" allowZero="true">0</parameter>
</screen>
</screens>
</builtInMethodParameterList>

3.6.1.5 bw_nco_Rfc_Call_Transaction_Using
This method provides bw_nco_rfc_call_transaction functionality support for SAP 5.0 and 6.0 versions.
Attributes for ‘screens’ nodes in Rfc_Call_Transaction_Using:
trancode Transaction code to use
mode Display mode, A=display all, E = Display errors only, N = No display
<builtInMethodParameterList name="bw_nco_rfc_call_transaction_using">

3.6.1.6 bw_nco_create_destination
This method provides ability to create SAP destination from anyERP configuration instead of anyERP application configuration file. The destination parameters are then shared
with other entrypoint executions. This means that it is not recommended to create destination with each entrypoint execution accessing SAP, but create all usable SAP
destinations once after anyERP service start. If a new destination is created for each entrypoint execution – and with unique name for entry point execution – those parameters
will remain in the memory until anyERP service is restarted. The main benefit of this function can be seen in SAAS environment, where restarting shared anyERP service is not
always a simple task.
The parameters for this function are the same that SAP connector 3.0 supports. eg.Following parameters are supported:
name name for SAP destination - unique for each SAP instance (required)
ashost the host name of SAP or a SAP Router string
sysnr The SAP system number - relates to the port or service number
user SAP login user that is RFC enabled
passwd user password
lang login language
Warning! If one does not use unique name for each SAP instance, it is possible that creating connection with same name causes simultaneous entry point execution to access
wrong ERP.
<builtInMethodParameterList name="bw_nco_create_destination">
<parameter name="name">BW_SAP_RAC</parameter>
<parameter name="user"></parameter>
<parameter name="passwd"></parameter>
<parameter name="client">800</parameter>
<parameter name="lang">EN</parameter>
<parameter name="ashost">cpc4101</parameter>
<parameter name="sysnr">05</parameter>
<parameter name="saprouter">/H/192.168.106.47/S/3299/H/155.56.49.16/H/</parameter>
<return name="returnDest" />
</builtInMethodParameterList>

The following columns are in the return table of this function.

Seite 162 von 208


Column Description
SystemID The system ID
Client The client
User The user
Language The logon language
ISOLanguage The logon language as ISO name
PartnerHost The partner application server host name
HostName The own host name
Destination The destination used for the current connection
SystemNumber The system number
PartnerReleaseNumber The partner release as a number
PartnerRelease The partner release
KernelRelease The kernel release of the partner
Release Own release
CodePage The code page
PartnerCodePage The partner code page
PartnerType The type which specifies the partner of the communication
RfcRole The rfc role, which describes the role of the connection

3.6.2 Bw_textfile_input method


This method can be used to read file content from the CSV files. Read file content is stored into a Datasource which name is defined in the return element’s name attribute.
Supported parameters:
filename Defines the file name of the input file.
colnameheader Defines if the first row is used for column header names . Allowed values are true or false. If value is false, columns are named F1, F2, F3, F4,…
Default value is true.
colseparator Defines the character that is used to separate the values. Also word “tab” is allowed when the file is tabdelimited and for fixed length data use
‘fixedlength’. Default value is comma (,)
decimalseparator Defines the decimal separator used in the input data. Default value is comma(,). Note! if the colnameseparator and the decimalseparator are the
same character, eg. comma, then the read operation will cause an error. If comma is used for colnameseparator and input data contains numeric
values with commas then the decimalseparator character must defined to be different.
skiplines Defines the number of skipped lines from the beginning. Default value is zero (0).
column Defines a single data field (data type, field width) in fixed length files. (optional). Column attribute can also be used with CSV data to explicitly define
the column data type.
Textdelimiter Defines textdelimiter. Default is double quote. Disable using “none”.
encoding Defines the character encoding for the input file. Default encoding is Unicode.
dateformat Defines the format of the dates in the textfile.

Seite 163 von 208


Supported values for the column node’s type attribute are:

system.int32 The Int32 value type represents signed integers with values ranging from negative 2,147,483,648 through positive 2,147,483,647.

system.double The Double value type represents a double-precision 64-bit number with values ranging from negative 1.79769313486232e308 to positive
1.79769313486232e308
system.decimal The Decimal value type represents decimal numbers ranging from positive 79,228,162,514,264,337,593,543,950,335 to negative
79,228,162,514,264,337,593,543,950,335.
system.string A string is a sequential collection of Unicode characters that is used to represent text.
system.char Char structure represents Unicode characters.
system.datetime The DateTime value type represents dates and times with values ranging from 12:00:00 midnight, January 1, 0001 Anno Domini (Common Era)
through 11:59:59 P.M., December 31, 9999 A.D. (C.E.)

Configuration example for character separated file.


<builtInMethodParameterList name="bw_textfile_input">
<parameter name="filename">C:\temp\data1.txt< /parameter>
<parameter name="colseparator">,</parameter>
<parameter name="colnameheader">false</parameter>
<parameter name="decimalseparator">.</parameter>
<parameter name="skiplines">1</parameter>
<return name="returntable">
<filter />
<sort />
</return>
</builtInMethodParameterList>

Configuration example for character separated file with column names in a first line.
<builtInMethodParameterList name="bw_textfile_input">
<parameter name="filename">C:\temp\data2.txt< /parameter>
<parameter name="colseparator">;</parameter>
<parameter name="colnameheader">true</parameter>
<return name="returntable">
<filter />
<sort />
</return>
</builtInMethodParameterList>

Configuration example for fixed length file.


<builtInMethodParameterList name="bw_textfile_input">
<parameter name="filename"> C:\temp\data2.txt </parameter>
<parameter name="colseparator">FixedLength</parameter>
<parameter name="colnameheader">false</parameter>
<parameter name="skiplines">1</parameter>
<parameter name="column" columnName="profitno" type="system.string" width="9"></parameter>
<parameter name="column" columnName="name" type="system.string" width="25"></parameter>
<parameter name="column" columnName="no" type="system.string" width="7"></parameter>
<return name="returntable">
</builtInMethodParameterList>

3.6.2.1 Column specific formatting

Seite 164 von 208


It is possible to set column specific formatting for date and number columns.
Date columns can be formatted individually with the dateFormat attribute.
Configuration
<parameter name="column" columnName="dt1" dateFormat="yyyyMMdd" type="System.Date"></parameter>

For number columns there is a set of attributes that can be used.


Attribute name Description
decimalSeparator defines the decimal separator
negativeSign sign to be used for negative numbers
groupingSeparator the separator for groupings (thousands etc)
negativePattern pattern to be used with negative numbers. Defined by number.
The negativePattern has the following patterns defined
Value Associated pattern
0 (n)
1 -n
2 -n
3 n-
4 n-
Note that a column can’t have both dateFormat and a number format attribute. This will cause an exception.
3.6.2.2 Using reader type with large files
For extremely large text files it is possible to use a “one-row-at-a-time”-reader for processing the file. The Reader-Datasource is created by setting the type attribute in the return
node to ‘reader’. After this the created Reader-Datasource (with the given name in the name-node) can be looped. Note, that the data can be only looped once. The file is also
closed only after the file has been looped thru, so be sure you loop the reader thru to prevent files being locked.
To create the reader use, for example :
<builtInMethodParameterList name="bw_textfile_input">
<parameter name="filename">C:\temp\data2.txt< /parameter>
<parameter name="colseparator">;</parameter>
<parameter name="colnameheader">true</parameter>
<return name="returnreader" type="reader">
</builtInMethodParameterList>

The ‘returnreader’ –datasource can then be looped with the loopDataSource.


If the given reader name exists, then the old reader is overwritten.

3.6.3 File functions


File functions can be used to implement basic file operations with the anyERP. Configuration is done with a single built in function called ‘bw_file_functions’. Specific file operation
is defined with a parameter called ‘command’. Each file operation is described more detail in a following sub chapters.

3.6.3.1 Rename file


This command is used to rename a file or a directory.

Supported parameters:
command Predefined value is ‘rename’
filename Name of the renamed file or directory
newname New name

Seite 165 von 208


Configuration example:
<builtInMethodParameterList name="bw_file_functions">
<parameter name="command">rename</parameter>
<parameter name="filename">C:\testfile.txt</parameter>
<parameter name="newname">C:\newname.dat</parameter>
</builtInMethodParameterList>

<builtInMethodParameterList name="bw_file_functions">
<parameter name="command">rename</parameter>
<parameter name="filename">C:\temp\olddir</parameter>
<parameter name="newname">C:\temp\newdir </parameter>
</builtInMethodParameterList>

3.6.3.2 Delete file


This command is used to delete a file.
Supported parameters:
command Predefined value is ‘delete’
filename Name of the deleted file. Two different wildcards are supported. The first wildcard is the '*' or asterisk. It stands for any character. The other wildcard,
the '?'. It substitutes for a single character only.

Configuration example:
<builtInMethodParameterList name="bw_file_functions">
<parameter name="command">delete</parameter>
<parameter name="filename">C:\temp\testfile.txt</parameter>
</builtInMethodParameterList>

<builtInMethodParameterList name="bw_file_functions">
<parameter name="command">delete</parameter>
<parameter name="filename">D:\temp\*delfile?.txt</parameter>
</builtInMethodParameterList>

3.6.3.3 Delete directory


This command is to delete a directory.
Supported parameters:
command Predefined value is ‘deletedir’
filename Name of the deleted directory. Wildcards are supported.

Configuration example:
<builtInMethodParameterList name="bw_file_functions">
<parameter name="command">deletedir</parameter>
<parameter name="filename">C:\temp\testdir</parameter>
</builtInMethodParameterList>

<builtInMethodParameterList name="bw_file_functions">
<parameter name="command">deletedir</parameter>
<parameter name="filename">C:\temp\mydir*</parameter>
</builtInMethodParameterList>

Seite 166 von 208


3.6.3.4 Create directory
This command is used to create a directory
Supported parameters:
command Predefined value is ‘delete’
filename Name for the created directory

Configuration example:
<builtInMethodParameterList name="bw_file_functions">
<parameter name="command">createdir</parameter>
<parameter name="filename">C:\temp\testdir</parameter>
</builtInMethodParameterList>

3.6.3.5 Copy
This command is used copy a file.
Supported parameters:
command Predefined value is ‘copy’
filename File(s) to be copied. Wildcards are supported
newname File or directory where files are copied to
mkdir Create directory if it's not exist (true).

Configuration examples:

Copying one file to different location.


<builtInMethodParameterList name="bw_file_functions">
<parameter name="command">copy</parameter>
<parameter name="filename">C:\temp\input.xml</parameter>
<parameter name="newname">D:\misc\copyofinput.xml</parameter>
</builtInMethodParameterList>

Copying multiple files to given target directory.


<builtInMethodParameterList name="bw_file_functions">
<parameter name="command">copy</parameter>
<parameter name="filename">C:\temp\log*.txt</parameter>
<parameter name="newname">D:\backup</parameter>
</builtInMethodParameterList>

Create directory if it does not exist.


<builtInMethodParameterList name="bw_file_functions">
<parameter name="command">copy</parameter>
<parameter name="filename">C:\temp\input.xml</parameter>
<parameter name="newname">C:\temp\copy\xmlfiles\input.xml</parameter>
<parameter name="mkdir">true</parameter>
</builtInMethodParameterList>

3.6.3.6 Dir
This command is used to read a directory listing.

Seite 167 von 208


Supported parameters:
command Predefined value is ‘dir’
filename Specifies a directory or file(s) to list

Return Datasource’s column names:


name File name
path File path
created File creation time
lastaccess File last accession time
lastwrite File last write operation time
attributes File attributes
isfile Boolean (true, if the entry is a file, false if it is a directory)
length File size

Note, the "dir" inside the command-parameter is not case-sensitive

Configuration example:
<builtInMethodParameterList name="bw_file_functions">
<parameter name="command">dir</parameter>
<parameter name="filename">D:\temp</parameter>
<return name="fileList">
<filter />
<sort />
</return>
</builtInMethodParameterList>

<builtInMethodParameterList name="bw_file_functions">
<parameter name="command">dir</parameter>
<parameter name="filename">C:\temp\lock.txt</parameter>
<return name="fileList">
<filter />
<sort />
</return>
</builtInMethodParameterList>

3.6.3.7 SplitTiff
This command is used to split multipart TIFF image files.

Supported parameters:
command Predefined value is ‘SplitTiff’
filename Name of the TIFF image file.
newname Name of the out path for split image files.
return name Datasource containing names of the created image files.

Return data source’s column names:


filename Absolute file path of the image file

Configuration example:

Seite 168 von 208


<builtInMethodParameterList name="bw_file_functions">
<parameter name="command">SplitTiff</parameter>
<parameter name="filename">d:\inbox\images\multipage.tif</parameter>
<parameter name="newname">d:\processed\</parameter>
<return name="fileList">
<filter />
<sort />
</return>
< /builtInMethodParameterList>

3.6.3.8 JoinTiff
This command is used to join image files to multipart TIFF.

Supported parameters:
command Predefined value is ‘JoinTiff’
filestojoin Table-Datasource and its field that contain paths to files
newname Name of the out path for join image file
arguments Encryption of the image files (3dde, bwde), optional
return name Datasource containing names of the created image file.

Return Datasource’s column names:


filename Absolute file path of the image file

Configuration example:
<builtInMethodParameterList name="bw_file_functions">
<parameter name="command">JoinTiff</parameter>
<parameter name="filestojoin">fileList,path</parameter>
<parameter name="newname">d:\processed\jointimage.tif</parameter>
<parameter name="arguments"></parameter>
<return name="fileList">
<filter />
<sort />
</return>
</builtInMethodParameterList>

3.6.3.9 Encrypt
Encrypt is a function used for encrypting a file using TripleDes or Basware Tiff encoding. Note that the created encrypted file will overwrite any file with the same given name.

Supported parameters:
command Predefined value is ‘encrypt’
filename Name of the file to encrypt.
newname Name of the encrypted file.
arguments coding to be used – possible values are 3des and bwec

Configuration example
<builtInMethodParameterList name="bw_file_functions">

Seite 169 von 208


<parameter name="command">encrypt</parameter>
<parameter name="filename”>c:\files\image.tif</parameter>
<parameter name="newname">c:\files\encoded_image.tif</parameter>
<parameter name="arguments">3des</parameter>
</builtInMethodParameterList>

3.6.3.10 Decrypt
Decrypt is a function used for decoding an encrypted file. Possible codecs are TripleDes and Basware Tiff encoding. Note that the created decrypted file will overwrite any file with
the same given name.

Supported parameters:
command Predefined value is ‘decrypt’
filename Name of the file to decrypt.
newname Name of the decrypted file.
arguments coding to be used – possible values are 3des and bwec

Configuration example
<builtInMethodParameterList name="bw_file_functions">
<parameter name="command">decrypt</parameter>
<parameter name="filename”>c:\files\ encoded_image.tif </parameter>
<parameter name="newname">c:\files\decoded_image.tif</parameter>
<parameter name="arguments">3des</parameter>
</builtInMethodParameterList>
Example 25 - Decrypt command

3.6.3.11 EncodeBase64
EncodeBase64 function is used for encoding binary data into a ASCII text representation.

Supported parameters:
command Predefined value is ‘EncodeBase64’
filename Name of the file to encode..
return name Datasource containing the base 64 representation of the file.
<builtInMethodParameterList name="bw_file_functions">
<parameter name="command">EncodeBase64</parameter>
<parameter name="filename”>c:\files\image.tif </parameter>
<return name="file">
<filter />
<sort />
</return>
</builtInMethodParameterList>

3.6.3.12 ConvertFromBase64
ConvertFromBase64 function is used for converting base64 representation back to file.

Supported parameters:
command Predefined value is ‘ConvertFromBase64’
sourcestring String containing the base 64 representation of the file.

Seite 170 von 208


filename Name of the converted file

<builtInMethodParameterList name="bw_file_functions">
<parameter name="command">ConvertFromBase64</parameter>
<parameter name="sourcestring”>{v,base64string}</parameter>
<parameter name="filename”>c:\files\image.tif </parameter>
</builtInMethodParameterList>

3.6.3.13 Creating stream from file


It is possible to create a stream from a file with the ‘READ’ function.
Supported parameters:
command Predefined value is ‘Read’
filename Name of the file of which the stream is created.
Use the return-node to define the name of the stream variable. Set also the return node type to ‘stream’
<builtInMethodParameterList name="bw_file_functions">
<parameter name="command">READ</parameter>
<parameter name="filename">{v,fileName}</parameter>
<return type="stream" name="{v,streamName}"/>
</builtInMethodParameterList>

3.6.3.14 Writing stream into file


It is possible to write the contents of a stream into a file. This can be done with the ‘WRITE’ function.
Supported parameters:
command Predefined value is ‘Read’
filename the stream variable is set into this parameter
newname The name of the file, where the stream contents is written
<builtInMethodParameterList name="bw_file_functions">
<parameter name="command">WRITE</parameter>
<parameter name="filename">{v,streamName}</parameter>
<parameter name="newname">{v,fileName}</parameter>
</builtInMethodParameterList>

3.6.3.15 Save function


This function is used to save xml-, tabledatasource or variable to a file.
Supported parameters:
command Predefined value is ‘Save’
filename The name of the file where datasource is saved.
datasource Datasource name to be saved
<builtInMethodParameterList name="bw_file_functions">
<parameter name="command">SAVE</parameter>
<parameter name="datasource">MyXmlDatasource</parameter>
<parameter name="filename">C:\temp\MyDataSource.xml</parameter>
</builtInMethodParameterList>

3.6.3.16 Archive function

Seite 171 von 208


This function is used to create a zip archive. Most common application is compressing old logfiles. Note: Archive file will contain one extra file named ‘[Content_Types].xml’, which
in most scenarios serves no purpose.
Supported parameters:
command Predifined value is ‘Archive’
filename Full path of the file to be added to compressed file. This parameter supports also wildcards (*, ?)
archive name of the archive file.
append Optional. ‘True’ if file is added to an existing archive file. Otherwise ‘False’ and a new file will be created. True by default
archivepath Optional. If replacing a file part in an existing compressed file, this is the file location in the archive e.g. ‘/xl/worksheets/’.
archivecontenttype Optional. This is the content type of the data. Useful with some packages e.g. ‘application/vnd.openxmlformats-
officedocument.spreadsheetml.worksheet+xml’
Configuration example:
<builtInMethodParameterList name="bw_file_functions">
<parameter name="command">Archive</parameter>
<parameter name="filename">{v,LogFile}</parameter>
<parameter name="append">True</parameter>
<parameter name="archive">{v,ZipFile}</parameter>
</builtInMethodParameterList>

3.6.3.17 Unarchive function


This function is used to extract file from existing archive created with the Archive function. It can process only one file at a time so Listarchive function can be used to create
tabledatasource from archive content for looping.
Supported parameters:
command Predefined value is ‘Unarchive’
archive Full filename of the archive file.
filename Filename for the file to be saved. This will be the name of the file after extracting it from archive.
archivepath location of the file in the archive in the form of relative uri

Configuration example:
<builtInMethodParameterList name="bw_file_functions">
<parameter name="command">Unarchive</parameter>
<parameter name="filename">{v,path}\{filelist,filename}</parameter>
<parameter name="archivepath">{filelist,fileuri}</parameter>
<parameter name="archive">{v,archivefile}</parameter>
</builtInMethodParameterList>

3.6.3.18 Listarchive function


This function is used to list the files in the archive file created using the Archive function.
Supported parameters:
command Predefined value is ‘Listarchive’
archive Full filename of the archive file.

Return Datasource’s column names:


filename File name
fileuri Location of the file in the archive
contenttype MIME type of the content stream if available

Seite 172 von 208


Configuration example:
<builtInMethodParameterList name="bw_file_functions">
<parameter name="command">Listarchive</parameter>
<parameter name="archive">{v,archivefile}</parameter>
<return name="filelist" />
</builtInMethodParameterList>

3.6.3.19 Shell function


This method can be used to execute external commands and executables. Executed commands are run under anyERP process’s user rights. Command line arguments can be
passed to execution target by using the arguments parameter. Output of the executable is returned in the return Datasource. Name of the return Datasource can be defined in the
return element’s name attribute.

Supported parameters:
command Predefined value is ‘execute
filename Executed command
arguments Input arguments for the command

The arguments-tag is optional; it can be used to pass arguments to the executable. If it is missing, then not arguments are passed.

The return datasource contains the following columns:


exitcode Exitcode should contain the process executed process exit code but for some unknown reason .NET always gets the value 0 even
though some other value was supposed to be returned from the process, so do not rely on this value.
stdoutput Stdoutput contains the output of the executed process as a single string.
stderror Stderror contains the error output of the executed process as a single string.

Configuration Example:
<builtInMethodParameterList name="bw_file_functions">
<parameter name="command">execute</parameter>
<parameter name="filename">C:\myapp.exe</parameter>
<parameter name="arguments">echo123</parameter>
<return name="output">
<filter />
<sort />
</return>
</builtInMethodParameterList>

3.6.4 HTTP client function


This function can be used to implement simple HTTP client which is able to send and receive XML messages to and from given URL. Send message is given in a ‘request’
parameter and received message is store into return Datasource. Name of the return Datasource can be defined in the return element’s name attribute.

Supported parameters:
uri Address of the web service
soapAction SOAPAction HTTP request header field can be used to indicate the intent of the SOAP HTTP request (optional)
method Defines the HTTP method type, eg. POST, GET
username Username to be used to authenticate user (optional)

Seite 173 von 208


password Password of the user (optional)
domain The domain or computername that verifies the credentials (optional)
contentType Defines the HTTP message content type
host Setsthe HTTP message host(18.11release)
request Message to be send. It is possible to give a stream variable to this parameter.
useproxy Are the IE proxysettings used or not. Default is TRUE
clientcertificate subject –field of the client certificate used for authentication. Default is empty, so certificate-based authentication is not used.
The value must be a string representing the subject name of the certificate. The method performs a case-insensitive string
comparison using the supplied value. For example, if you pass "MyCert" to the method, it will take first certificate with the
subject name containing that string, regardless of other subject values.
responseheader Defines the Table-Datasource to be created with the headerdata, optional. If a Table-Datasource with the name already
exists, it will be replaced.
requestheader Can be used to add custom header fields to request headers. Requestheader parameter has an attribute named
headername, which defines the name of the header field.
returnRawMessage Defines if the whole raw data response from the server is to be returned. Default is false.
keepAlive If set to true, makes a persistent connection to the servers that support them.
timeout Sets the timeout for the http request. Time is given in milliseconds. Default is 100000 ms (100 seconds).
accept Sets the value of the Accept HTTP header. The Accept request-header field can be used to specify certain media types which
are acceptable for the response. Accept headers can be used to indicate that the request is specifically limited to a small set
of desired types.
securityProtocolType Sets the type of protocol to be used with SSL connections. Valid protocols are tls11 and tls12, default is tls11 depending
target system settings.
cookieEnabled Turns on support for cookies. Use for web pages with logins etc. Set to ‘True’ to turn cookies on.
expect100continue When this parameter is set to true, client requests that use the POST method expect to receive a 100-Continue response
from the server to indicate that the client should send the data to be posted. Default is true.
If a webException occurs while executing an HTTP request, then the data in the response stream (which usually contains server error data) from the server is put in the
‘return_message’ variable. The extended webException data is also added to the normal exception message.
Configuration example:
<builtInMethodParameterList name="bw_ws_function">
<parameter name="uri">http://localhost/mywsdemo/demo1.asmx</parameter>
<parameter name="soapAction">http://localhost/mywsdemo/demo1/echo</parameter>
<parameter name="method">POST</parameter>
<parameter name="contentType">text/xml; charset=utf-8</parameter>
<parameter name="request">{v,request}</parameter>
<parameter name="timeout">300000</parameter>
<return name="response" />
</builtInMethodParameterList>

3.6.4.1 Returning a stream from HTTP call


Normally the return data from the HTTP call is put in the response-variable. But, it is also possible to return a stream of the response. This is done by setting the return node type
to ‘stream’. NOTE that the response-variable is not created, if a stream is returned. Also note that this stream is connected to the http server, so if the reading of the stream is
delayed, then a timeout exception might occur.
See the example below on how to set the return node to return a stream variable.
<return type=”stream” name="responseStream" />

Seite 174 von 208


3.6.4.2 Multi-part file post
This function can be used to implement simple HTTP client which is able to post any kind of file in multi part to a given URL. File to post is given in ‘fileSource’ parameter and
received message is store into return Datasource. Name of the return Datasource can be defined in the return element’s name attribute.
Supported parameters:
uri Address of the web service
soapAction SOAPAction HTTP request header field can be used to indicate the intent of the SOAP HTTP request (optional)
fileSource Filename to post with complete file path
targetFileName Name with which you want to save file on server (optional)
postParameter You can send n-numbers of postParameter with different name. Their type will be 'postParameter' (optional)
username Username to be used to authenticate user (optional)
password Password of the user (optional)
domain The domain or computername that verifies the credentials (optional)
useproxy Are the IE proxysettings used or not. Default is TRUE
clientcertificate subject –field of the client certificate used for authentication. Default is empty, so certificate-based authentication is not used.
The value must be a string representing the subject name of the certificate. The method performs a case-insensitive string
comparison using the supplied value. For example, if you pass "MyCert" to the method, it will take first certificate with the
subject name containing that string, regardless of other subject values.
responseheader Defines the Table-Datasource to be created with the headerdata, optional. If a Table-Datasource with the name already
exists, it will be replaced.
requestheader Can be used to add custom header fields to request headers. Requestheader parameter has an attribute named
headername, which defines the name of the header field.
returnRawMessage Defines if the whole raw data response from the server is to be returned. Default is false.
keepAlive If set to true, makes a persistent connection to the servers that support them.
timeout Sets the timeout for the http request. Time is given in milliseconds. Default is 100000 ms (100 seconds).
accept Sets the value of the Accept HTTP header. The Accept request-header field can be used to specify certain media types which
are acceptable for the response. Accept headers can be used to indicate that the request is specifically limited to a small set
of desired types.
securityProtocolType Sets the type of protocol to be used with SSL connections. Valid protocols are tls11 and tls12, default is tls11 depending
target system settings.
cookieEnabled Turns on support for cookies. Use for web pages with logins etc. Set to ‘True’ to turn cookies on.
expect100continue When this parameter is set to true, client requests that use the POST method expect to receive a 100-Continue response
from the server to indicate that the client should send the data to be posted. Default is true.
If a webException occurs while executing an HTTP request, then the data in the response stream (which usually contains server error data) from the server is put in the
‘return_message’ variable. The extended webException data is also added to the normal exception message.
Configuration example:
<builtInMethodParameterList name="bw_filepost_function">
<parameter name="uri">http://localhost/mywsdemo/api/filepost</parameter>
<parameter name="UploadType" type="postParameter">GLFile</parameter>
<parameter name="TenantID" type="postParameter">263</parameter>
<parameter name="fileSource">D:\files\abc.xml</parameter>
<parameter name="targetFileName">xyz.xml</parameter>
<parameter name="timeout">300000</parameter>
<return name="response" />
</builtInMethodParameterList>

Seite 175 von 208


3.6.5 Database function
3.6.5.1 bw_db_functions
This method can be used to retrieve data from a SQL database using an oledb connection. The following parameters are supported:
connectionstring OleDb connection string to use for connecting to the database.[Note: OleDb and ODBC connections are not supported in
SAAS environment]
command SQL select command to use for selecting records
tablename Name to assign to returned rows. This name is simply the name that will be used in the anyERP Adapter configuration file for
the returned table, and has nothing to do with the name(s) of the table(s) where the selected rows originated from.
timeout This parameter defines the timeout for this db action. Value is given in seconds. The default is 600 (seconds). This parameter
is optional.
driver Attribute defines used db connection type. Default type is OleDb. ODBC can be used by defining the value to ODBC.
Also .Net data providers can be used by defining the value to provider.[Note: OleDb and ODBC connections are not
supported in SAAS environment]
setischanged This parameter sets the null values as original values of the datarow before conversion to default value. If set to ‘true’ then
ischanged function can be used to find fields that were converted to default values.
transactionless This parameter detaches the command from transaction. If set to ‘true’ it enables the usage of database driver that for some
reason does not support transactions. Parameter is optional and has a default value of false. Consider carefully when using
this parameter because it also disables the rollback possibility for its commands.
storedprocedure This parameter enables to call stored procedures with bound variables.
dataprovider If driver type is provider then provide the name of the type that is used to create connection.
assemblyName If driver type is provider then provide the fullname of the assembly from where the dataProvider type can be found.
allownull Allows null-values to the returning datasource. By default this parameter has a value ‘false’, which indicates that null-values
are converted to default values. Note! Using this parameter must be carefully considered and tested, since null-values can
cause unexpected symptoms with the expression functions.
prefix allows defining the dataprovider specific parameter prefix. eg “:” for Oracle. By default the prefix is character “@”.

It is possible to use the <return> node to set the return Datasource name and type. To get an XML-Datasource, use ‘type=”xml”’. Default is Table-Datasource. If both tablename
parameter and return node exist, then the return node is used.
Return –node supports also a type attribute and bw_db_functions supports a return type of ‘reader’. Reader is vaguely similar to normal Table-Datasource with some benefits and
restrictions. Basically Reader provides a way of reading forward-only stream of data from a data source. This means that it consumes less memory since all the data is not loaded
into a datatable in memory. Consider using it when transferring large amount of data. This behaviour sets some limitations so that it cannot be sorted or filtered with return node or
joined to Datasource. Notice that bw_db_function Reader-Datasource works only when inside a transaction.
Configuration example of OleDB: [Not supported - It is forbidden to use this functionality in P2P SAAS]
<builtInMethodParameterList name="bw_db_functions">
<parameter name="tablename">sysobjects</parameter>
<parameter name="connectionstring">{v,oledb_cnn_str}</parameter>
<parameter name="timeout">10</parameter>
<parameter name="command">select top 10 * from sysobjects</parameter>
<return name="TestTable" type=”xml”>
<filter />
<sort />
</return>
</builtInMethodParameterList>

Seite 176 von 208


Configuration example of ODBC: [Not supported - It is forbidden to use this functionality in P2P SAAS ]
<builtInMethodParameterList name="bw_db_functions" driver="ODBC">
<parameter name="tablename">sysobjects</parameter>
<parameter name="connectionstring">{v,odbc_cnn_str}</parameter>
<parameter name="timeout">10</parameter>
<parameter name="command">select top 10 * from sysobjects</parameter>
<return name="TestTable">
<filter />
<sort />
</return>
</builtInMethodParameterList>

Configuration example of Provider:


<builtInMethodParameterList name="bw_db_functions" driver="provider">
<parameter name="tablename">sysobjects</parameter>
<parameter name="connectionstring">{v,sql_cnn_str}</parameter>
<parameter name="dataprovider">System.Data.SqlClient.SqlConnection</parameter>
<parameter name="assemblyName">System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</parameter>
<parameter name="timeout">10</parameter>
<parameter name="command">select top 10 * from sysobjects</parameter>
<return name="TestTable">
<filter />
<sort />
</return>
</builtInMethodParameterList>

3.6.5.1.1 Bound variables with bw_db_functions


It’s possible and advisable to use bound variables with the bw_db functions. To do this, the parameters have to be passed to the function. This is done with parameters named
‘parameter?’ where the ‘?’ is the order number of the parameter(or variable). So, the 1st variable is called parameter1, the 2nd parameter2 and so on.
To use the bound variables in the sql statement, replace the values to be used with parameters like in example below.
Configuration example of insert with bound variables:

<builtInMethodParameterList name="bw_db_functions" driver="provider">


<parameter name="connectionstring" log="False">{v,connstr}</parameter>
<parameter name="dataprovider">{v,dataprovider}</parameter>
<parameter name="assemblyname">{v,assemblyname}</parameter>
<parameter name="parameter1">{F,TONUMBER("5";",")}</parameter>
<parameter name="parameter2">misc_data</parameter>
<parameter name="prefix">{v,BoundVariableChar}</parameter>
<parameter name="command">INSERT INTO EXT_INV_LIST_1 (id, administrative_site_id) VALUES ({v,BoundVariableChar}parameter1,{v,BoundVariableChar}parameter2)</
parameter>
</builtInMethodParameterList>

In this example the id field is given the 1st parameter, which is the number 5 and the val field the string ‘misc data’.

3.6.5.1.2 Stored procedures with bw_db_functions


It is possible to call stored procedure using bw_db_functions. To do this parameters have to be passed to the function. This is done with parameters named ‘parameter?’ where
the ‘?’ is the name of the parameter. Eg. Procedure GetUser ( UserId int ) would have parameter called ‘parameteruserid’

Seite 177 von 208


Configuration example:
<builtInMethodParameterList name="bw_db_functions">
<parameter name="connectionstring">{v,oledb_cnn_str}</parameter>
<parameter name="parameteruserid">102</parameter>
<parameter name="storedprocedure">dbo.GetUser</parameter>
<return name="returntable" />
</builtInMethodParameterList>
It is also possible to use ouput parameters by using the parameter name also as the name of the return node. Also the size in characters must be provided as follows:

<builtInMethodParameterList name="bw_db_functions">
<parameter name="connectionstring">{v,oledb_cnn_str}</parameter>
<parameter name="parameterid">1</parameter>
<parameter name="parameterval" />
<parameter name="storedprocedure">dbo.GetData</parameter>
<return name="parameterval" size="50" />
</builtInMethodParameterList>

This example creates a datatable named parameterval with column called parameterval.
Configuration example using ODBC:
<builtInMethodParameterList name="bw_db_functions" driver="ODBC">
<parameter name="connectionstring">{v,odbc_cnn_str}</parameter>
<parameter name="parameterid">1</parameter>
<parameter name="parameterval" />
<parameter name="storedprocedure">CALL dbo.GetData2(?, ?)</parameter>
<return name="parameterval" size="6" />
</builtInMethodParameterList>

3.6.6 XSL transform function


This method can be used to execute XSL transforms.

Supported parameters:
inputfile File to be converted.
outputfile File where the transformation result is outputted. If outputfile parameter is not provided then a stylesheet reference is
searched from the input file.
stylesheet Location of the XSLT file. Can be file or URL path.
xsltargumentlist For passing parameters to the xsl transformation. Use ‘attribute’ attribute to give the xsl parameter name and ‘type’ to define
a namespace for the parameter. It is possible to define multiple xsltargumentlist parameters.

Configuration example:
<builtInMethodParameterList name="bw_xsl_transform">
<parameter name="inputfile">inputdoc.xml</parameter>
<parameter name="outputfile">outputdoc.xml</parameter>
<parameter name="stylesheet">transform.xsl</parameter>
<parameter name="xsltargumentlist" attribute="date" type="">1.1.2000</parameter>
</builtInMethodParameterList>

3.6.7 XML segment splitter


These methods can be used to split XML segments into smaller chunks.
3.6.7.1 Split XML file by given segment

Seite 178 von 208


Method name : bw_xml_split.
This method can be used to separate XML segments from one file to several files based on the given segment root name.

Supported parameters:
inputfile File containing XML source data.
outputdir Directory where temporary output files are created.
Identifier Segment’s root element name, multiple names are separated with # character. If multiple segments names are given then the
rootnode parameter must be provided.
rootnode New parent root node for the split segment, is written to temporary file. Rootnode parameter is optional if the identifier
parameter contains only one element name.
return Name of the Datasource which is returned containing full file paths of the created temporary files.

Configuration example:
<builtInMethodParameterList name="bw_xml_split">
<parameter name="inputfile">d:\inbox\invoice.xml</parameter>
<parameter name="outputdir">d:\temp\output</parameter>
<parameter name="identifier">#Finvoice</parameter>
<return name="files">
<filter />
<sort />
</return>
</builtInMethodParameterList>
This example configuration creates separate files for each Finvoice element segments in the invoice.xml file.

<builtInMethodParameterList name="bw_xml_split">
<parameter name="inputfile">d:\inbox\invoices.xml</parameter>
<parameter name="outputdir">d:\temp\output</parameter>
<parameter name="identifier">#SOAP-ENV:Header#Finvoice</parameter>
<parameter name="rootnode">myRoot</parameter>
<return name="files">
<filter />
<sort />
</return>
< /builtInMethodParameterList>
This example configuration creates separate files for each SOAP-ENV and Finvoice segment pairs, new root element for the segment pair will be myRoot.
To split nodes with a namespace, put the namespace definition in the identifier (e.g. ‘ns:SplitThisNode’) and define the rootnode. Note that you must define the rootnode
parameter explicitly if you split nodes with namespaces.

3.6.7.2 Split XML file into chunks


Method name : bw_xml_split_with_chunk_count.
This method is used to split large xml files into smaller files on basis of chunk count.
Supported parameters:
inputfile File containing path of file along with filename which we need to split.
outputdir Directory where temporary output files are created.
Identifier Contains the tag name on basis which we need to split the file.
rootnode The parent node of identifier tag.
fileprefix Prefix for new generated smaller files.

Seite 179 von 208


chunkcount Count on basis of which file will split.
return Table contains list of new generated files along with path
Configuration example:
<method name="SplitXMLFile">
< builtInMethodParameterList name="bw_xml_split_with_chunk_count">
<parameter name="inputfile">D:\Supplier Import chuncks\suppliers.xml</parameter>
< parameter name="outputdir">D:\Supplier Import chuncks\output</parameter>
< parameter name="identifier">Supplier</parameter>
< parameter name="rootnode">DocumentElement</parameter>
< parameter name="fileprefix">Suppliers</parameter>
< parameter name="chunkcount">2000</parameter>
< return name="SplitFilesDataSource">
< filter />
< sort />
< /return>
< /builtInMethodParameterList>
< /method>

3.6.7.3 XML identische Strukturen lessen (DHL Express)


Wir hatten den Wert unter „<LEVEL>xx</LEVEL>“ zu lesen.

Und hier, wie man an die Daten rankommt incl. Include:

3.6.8 String functions

Seite 180 von 208


This method is used to perform different string manipulation functions.

3.6.8.1 Split operation


Split operation splits given input string into a substring parts based on the given separator character. Method creates a Datasource which has one predefined column. Name of
the column is the same than the name of the returned Datasource.

Supported parameters:
operation Predefined value ‘split’
sourcestring String to be split.
separator Separator character(s) for a substrings.
return Name of the Datasource containing string parts.
Example configuration:
<builtInMethodParameterList name="bw_string_functions">
<parameter name="operation">split</parameter>
<parameter name="sourcestring">{v,mystring}</parameter>
<parameter name="separator">,</parameter>
<return name="parts">
<filter />
<sort />
</return>
</builtInMethodParameterList>

3.6.9 Email/bw_eMail_functions client


Email client method can be used to send email via an SMTP-server. The "server" parameter must contain the address of a standard SMTP-server that the handler will contact
when it sends the email.
It is possible to use ‘email’ or ‘bw_eMail_Functions’ as the builtInMethodParameterList name attribute.
Supported parameters:
to Address of the recipient
cc Address of the carbon copy recipient
bcc Address of the blind carbon copy recipient
subject Subject of the e-mail
server SMTP server’s address
serverport SMTP server’s port (default is 25)
from Address of the sender
body Email content. Message can have more than one body within one message. This parameter has an attribute named type, which can be used to set
content type for the alternative body. Eg. One body with text and other with html.
Attribute ‘type’ accepts values ‘html’ and ‘text’.
attachment Attachment file path or stream variable. This parameter also supports loopDatasource attribute which can be used to supply attachments from a
datasource.
username optional encrypted username for SMTP server credentials credentials (NOTE: the username MUST be encrypted with ENCRYPT expression Function,
or similar encryption)
password optional encrypted password for SMTP server credentials (NOTE: the password MUST be encrypted with ENCRYPT expression Function or similar
encryption)
ssl optional for SMTP to set secure connection with email server(true/false). default value is false

Seite 181 von 208


domain optional domain name for SMTP server credentials
format optional value ‘html’ indicates the mail body is HTML in case there is only one message body with the email.

Configuration example:
<builtInMethodParameterList name="email">
<parameter name="to">testrecipient1@unittest.com</parameter>
<parameter name="cc">testcc1@unittest.com</parameter>
<parameter name="bcc">testbcc1@unittest.com</parameter>
<parameter name="subject">testsubject</parameter>
<parameter name="server">127.0.0.1</parameter>
<parameter name="from">unittest@from.com</parameter>
<parameter name="body">some body here</parameter>
</builtInMethodParameterList>

Sending attachments:
<builtInMethodParameterList name="bw_eMail_Functions">
<parameter name="to">admin1@corp.com</parameter>
<parameter name="to">admin2@corp.com</parameter>
<parameter name="subject">testsubject</parameter>
<parameter name="server">127.0.0.1</parameter>
<parameter name="from">unittest@from.com</parameter>
<parameter name="body">some body here</parameter>
<parameter name="attachment">file1.txt< /parameter>
<parameter name="attachment">file2.txt</parameter>
</builtInMethodParameterList>

Attachments now also support stream variables. Note, that the stream is closed automatically after sending the email, so it can’t be used anymore after the email is sent.
For streams use
<parameter name="attachment">{v,streamname}</parameter>

where ‘streamname’ is the variable name of the stream.


Using specific credentials for SMTP server
<builtInMethodParameterList name="email">
<parameter name="username">user1</parameter>
<parameter name="password">NrVpGcH3+lN8e9h00kCFxQ==</parameter>
<parameter name="domain">domain.com</parameter>
<parameter name="to">admin2@corp.com</parameter>
<parameter name="subject">testsubject</parameter>
<parameter name="server">127.0.0.1</parameter>
<parameter name="from">unittest@from.com</parameter>
<parameter name="body">some body here</parameter>
</builtInMethodParameterList>

The example configuration above tries to send an email as ‘user1’ in ‘domain.com’ domain.

3.6.10 FTP client


Ftp client method can be used to perform ftp client operations with anyERP. It’s strongly recommended that FTP is not used over insecure networks due to its poor data security
and unreliability.

Supported parameters:

Seite 182 von 208


username Login username
password Login password
command FTP command, supported commands are get,put,list,delete
localfile File name in local file system. Put command supports also streams. Localfile –parameter supports also loopdatasource -
attribute for multiple file transfer (get, put).
remoteurl Remote URL containing remote file path on a FTP server. Remoteurl –parameter supports also loopdatasource -attribute for
multiple file transfer (get, put, delete).
useproxy Is the IE proxysettings used or not
usessl Unless the UseSsl parameter is true, all data and commands, including your user name and password information, are sent to
the server in clear text. Anyone monitoring network traffic can view your credentials and use them to connect to the server. If
you are connecting to an FTP server that requires credentials and supports SSL, you should set UseSsl to true. Notice
that .NET Framework does not support implicit SSL, only explicit, meaning that connecting directly to a port (990) to be used
for secured connection is not supported. Instead the connection is taken to port 21 and “AUTH TLS" command is sent to the
server to request an encrypted session. If the server does not recognize this command, you will receive an exception.
usePassive Used to define if the client should use Passive mode or not. The usePassive parameter is set to true by default.
transfertype Specifies the data type for file transfers. Allows Binary or ASCII for transfer mode
return Returned Datasource containing file list data returned from FTP server. Returned Datasource has a one column ‘name’,
which contains name of the single file on a FTP server.

Configuration example:
<builtInMethodParameterList name="bw_ftp_functions">
<parameter name="command">get</parameter>
<parameter name="username">user</parameter>
<parameter name="password">pass</parameter>
<parameter name="localfile">ftptestfile.txt</parameter>
<parameter name="remoteurl">ftp://localhost/anyerp/ftpremotefile.txt</parameter>
</builtInMethodParameterList>

<builtInMethodParameterList name="bw_ftp_functions">
<parameter name="command">put</parameter>
<parameter name="username">user</parameter>
<parameter name="password">pass</parameter>
<parameter name="localfile">ftptestfile.txt</parameter>
<parameter name="remoteurl">ftp://localhost/anyerp/ftpremotefile.txt</parameter>
</builtInMethodParameterList>
<builtInMethodParameterList name="bw_ftp_functions">
<parameter name="username">user</parameter>
<parameter name="password">pass</parameter>
<parameter name="command">list</parameter>
<parameter name="remoteurl">ftp://localhost/out/</parameter>
<return name="fileList"/>
</builtInMethodParameterList>

<builtInMethodParameterList name="bw_ftp_functions">
<parameter name="username">user</parameter>
<parameter name="password">pass</parameter>
<parameter name="command">list</parameter>
<parameter name="remoteurl">ftp://localhost/out/</parameter>
<parameter name="usepassive">false</parameter>
<return name="fileList"/>

Seite 183 von 208


</builtInMethodParameterList>

<builtInMethodParameterList name="bw_ftp_functions">
<parameter name="command">put</parameter>
<parameter name="username">user</parameter>
<parameter name="password">pass</parameter>
<parameter name="localfile">ftptestfile.txt</parameter>
<parameter name="localfile">ftptestfile2.txt</parameter>
<parameter name="remoteurl">ftp://localhost/anyerp/ftpremotefile.txt</parameter>
<parameter name="remoteurl">ftp://localhost/anyerp/ftpremotefile2.txt</parameter>
</builtInMethodParameterList>

3.6.11 Table function


3.6.11.1 Import table from XML
Import table command imports .net datatable from given xmlstring. Xmlstring should contain the table schema and data.

Supported parameters:
command Predefined value ‘xmlimport’
xml_table XML containing schema and data.

Example configuration:
<builtInMethodParameterList name="bw_Table_method">
<parameter name="command"> xmlimport</parameter>
<parameter name="xml_table">{v,xmlstring}</parameter>
</builtInMethodParameterList>

3.6.11.2 Export table


Export table command returns in-memory tabledatasource as XML. Return table contains XML with table data and depending on the selection with or without a schema.

Supported parameters:
command Predefined value ‘xmlexport’
table The name of the table to be exported.
includeschema ‘true’ if table schema should be included with the return XML. Default value is false.

Example configuration:
<builtInMethodParameterList name="bw_Table_method">
<parameter name="command">xmlexport</parameter>
<parameter name="table">MyTable</parameter>
<parameter name="includeschema">true</parameter>
<return name="returnTable" />
</builtInMethodParameterList>

3.6.11.3 Rename table


Rename table command renames existing table-datasource. Return node provides the new name for the datasource. Note that using this function while looping the named
datasource is not supported. Also filter and sort are not supported.
Supported parameters:
table The name of the table to be renamed

Seite 184 von 208


Example configuration:
<builtInMethodParameterList name="bw_Table_method">
<parameter name="command">rename</parameter>
<parameter name="table">OldTable</parameter>
<return name="newTable" />
</builtInMethodParameterList>
Example 34 - Rename command

3.6.12 XML validation


bw_xml_validate –method provides a way to validate XML-document against DTD or XSD. Result of validation is returned in a Datasource. Returned Datasource contains column
for validation success true/false and a column for validation result explanation. First column is named “success” and the other is “errors”.
Example configurations:
External schema file.
<builtInMethodParameterList name="bw_xml_validate">
<parameter name="inputfile">inputdoc1.xml</parameter>
<parameter name="schema">outputdoc.xsd</parameter>
<return name="isvalid"/>
</builtInMethodParameterList>
External dtd file.
<builtInMethodParameterList name="bw_xml_validate">
<parameter name="inputfile">inputdoc2.xml</parameter>
<parameter name="schema">outputdoc.dtd</parameter>
<return name="isvalid"/>
</builtInMethodParameterList>
Schema is declared in the xml document.
<builtInMethodParameterList name="bw_xml_validate">
<parameter name="inputfile">inputdoc3.xml</parameter>
<return name="isvalid"/>
</builtInMethodParameterList>

3.6.13 Bw_ds_Join – Table-Datasource Join function


This method can be used to join two already existing Table-Datasources and write the result of the join to a third Table-Datasource.
Supported parameters:
ParentDataSource First Table-Datasource to be joined.
ChildDataSource Second Table-Datasource to be joined.
ParentPrefix Optional, prefix for the column names of the parent Table-Datasource.
ChildPrefix Optional, prefix for the column names of the Child Table-Datasource.
JoinType Type of Join e.g. INNER (Default), LEFT, RIGHT, OUTER or CROSS.
Criteria With the criteria parameter you can specify the criteria for the join. You can specify multiple column parameters.
Configuration example 1:
<builtInMethodParameterList name="bw_ds_join">
<parameter name="parentDataSource">MyDataSource1</parameter>
<parameter name="childDataSource">MyDataSource2</parameter>
<parameter name="joinType">Left</parameter>
<criteria left="Col1" right="Col1" operator="="></criteria>
<criteria left="Col2" right="Col2"></criteria>
<return name="MyOutputDataSource" />

Seite 185 von 208


</builtInMethodParameterList>

Configuration example 2:
<builtInMethodParameterList name="bw_ds_join">
<parameter name="parentDataSource">MyDataSource1</parameter>
<parameter name="childDataSource">MyDataSource2</parameter>
<parameter name="joinType">Left</parameter>
<criteria left="Col1" right="Col1" operator="="></criteria>
<criteria left="Col2" right="Col2"></criteria>
<returnColumn datasource="MyDataSource1" column="Col1" name="ResultCol1"></returnColumn>
<returnColumn datasource="MyDataSource1" column="Col2" name="ResultCol2"></returnColumn>
<returnColumn datasource="MyDataSource2" column="Col1" name="ResultCol3"></returnColumn>
<returnColumn datasource="MyDataSource2" column="Col2" name="ResultCol4"></returnColumn>
<return name="MyOutputDataSource" />
</builtInMethodParameterList>

If a column with the same name exists in both the left table and the right table then the column from the right table is added to the result Table-Datasource only if there are no
prefixes defined.

3.6.14 bw_ds_describe – Table-Datasource Describe function


This method can be used to describe an already existing Table- or Reader-Datasource.
Supported parameters:
inputDataSource Datasource to be described.

Configuration example:
<builtInMethodParameterList name="bw_ds_describe">
<parameter name="inputDataSource">MyDataSource</parameter>
<return name="MyOutputDataSource" />
</builtInMethodParameterList>

The following column properties are extracted from the datasource.

Parameter Description
AllowDBNull A value that indicates whether null values are allowed in this column for
rows that belong to the table.
Caption The caption for the column.
ColumnMapping The MappingType of the column.
ColumnName The name of the column.
DataType The type of data stored in the column.
DateTimeMode The DateTimeMode for the column.
DefaultValue The default value for the column when you are creating new rows.

Seite 186 von 208


Expression The expression used to filter rows, calculate the values in a column, or
create an aggregate column.
MaxLength The maximum length of a text column.
Namespace The namespace of the DataColumn.
Ordinal The column in the DataColumnCollection collection.
Prefix An XML prefix that aliases the namespace of the DataTable.
ReadOnly A value that indicates whether the column allows for changes as soon as a
row has been added to the table.
Unique A value that indicates whether the values in each row of the column must
be unique.

3.6.15 Bw_ds_sort – Table-Datasource Sort function


This method can be used to sort rows of an existing Table-Datasource. This function will create a new Table-Datasource.
Supported parameters:
DataSource Table-Datasource to be sorted
Column Name of the column to be used for sorting. Column parameter supports type-attribute, which can be used to define “asc”
(ascending) or “desc” (descending) sorting. Columns are sorted ascending by default.
return Name of the Datasource that will contain the sorted rows.

Configuration example:
<builtInMethodParameterList name="bw_DS_Sort">
<parameter name="DataSource">MyDataSource</parameter>
<parameter name="Column" type="Asc">MyDSCol1</parameter>
<parameter name="Column" type="Desc">MyDSCol2</parameter>
<return name="MyOutputDataSource" />
</builtInMethodParameterList>

3.6.16 bw_ds_select – Table-Datasource Select function


This method can be used to select rows of an existing Table-Datasource. This function will create a new Table-Datasource.
Supported parameters:
dataSource Source Table-Datasource
criteria The criteria to be used to filter the rows
return Name of the Datasource that will contain the filtered rows.

Configuration example:
<builtInMethodParameterList name="bw_ds_select">
<parameter name="Table">MyDataSource</parameter>
<parameter name="criteria">MyDSCol1 = 2 and MyDSCol2 = 'B'</parameter>
<return name="NewDataSource" />
</builtInMethodParameterList>

3.6.17 bw_AD_functions – Active Directory functions [Not supported - It is forbidden to use this functionality in P2P SAAS]
This method can be used to retrieve data from Active Directory.

Seite 187 von 208


Supported parameters:
entryPath The path to the wanted directory entry.
searchString The search string for the data to be searched
username Username for entrypath (if needed)
password Password for entrypath (if needed)
Supported authentication parameters:
The authentication parameters work as a bit type flag. It’s either on or off. All are off by default. To set a flag on use the parameter with value True. Default is Secure.
authenticationNone Equates to zero, which means to use basic authentication (simple bind) in the LDAP provider.
authenticationSecure Requests secure authentication. When this flag is set, the WinNT provider uses NTLM to
authenticate the client. Active Directory Domain Services uses Kerberos, and possibly NTLM, to
authenticate the client. When the user name and password are a null reference (Nothing in
Visual Basic), ADSI binds to the object using the security context of the calling thread, which is
either the security context of the user account under which the application is running or of the
client user account that the calling thread is impersonating.
authenticationEncryption Attaches a cryptographic signature to the message that both identifies the sender and ensures
that the message has not been modified in transit.
authenticationSigning Verifies data integrity to ensure that the data received is the same as the data sent. The Secure
flag must also be set to use signing.
authenticationSealing Encrypts data using Kerberos. The Secure flag must also be set to use sealing.
authenticationDelegation Enables Active Directory Services Interface (ADSI) to delegate the user's security context, which
is necessary for moving objects across domains.
authenticationServerBind If your ADsPath includes a server name, specify this flag when using the LDAP provider. Do not
use this flag for paths that include a domain name or for serverless paths. Specifying a server
name without also specifying this flag results in unnecessary network traffic.
authenticationSecureSocketsLayer Attaches a cryptographic signature to the message that both identifies the sender and ensures
that the message has not been modified in transit. Active Directory Domain Services requires the
Certificate Server be installed to support Secure Sockets Layer (SSL) encryption.
authenticationAnonymous No authentication is performed.
authenticationReadOnlyServer For a WinNT provider, ADSI tries to connect to a domain controller. For Active Directory Domain
Services, this flag indicates that a writable server is not required for a serverless binding.

return The name of the output Datasource. The Datasource columns will be dynamically created according to the property names of the retrieved
data.
Below is an example that retrieves all users from basware server, with encryption on. :
<builtInMethodParameterList name="bw_ad_functions">
<parameter name="entryPath">LDAP://basware</parameter>
<parameter name="searchString">(&amp;(objectClass=user))</parameter>
<parameter name="authenticationSecure">True</parameter>
<parameter name="authenticationEncryption">True</parameter>
<parameter name="username">TestUser</parameter>
<parameter name="password">Basware</parameter>
<return name="AD_Output"></return>

Seite 188 von 208


</builtInMethodParameterList>

Example 35 – bw_ad_functions
More information can be found from :
https://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-
US&k=k(System.DirectoryServices.AuthenticationTypes);k(SolutionItemsProject);k(TargetFrameworkMoniker-.NETFramework,Version%3Dv4.6.1);k(DevLang-
VB)&rd=true
To get user(s) according to objectclass property, use e.g (here using the ‘name’ –property):
<parameter name="searchString">(&amp;(objectClass=user)(name=Testuser))</parameter>

3.6.18 bw_ds_GroupBy – datasource GroupBy function


This method is used to group data in a datasource. Supported datasource types are Table-Datasource and Reader-Datasource.
Supported parameters :
ParentDataSource This is the Datasource that contains the data to be grouped
Column This is the column(s) used to group the data from the ParentDataSource. Multiple columns can be used for grouping.
Filter This parameter can be used to filter out data to be used in the grouping.
The aggregates for the groupBy are defined with returnColumn nodes. Supported attributes for the returnColumn are:
Function This attribute defines the aggregate used. Possible aggregates are Max,Min,First,Last,Sum,Count,Sum.
Column This is the column in the ParentDatasource that is used as input data for the aggregate
Name This is the column name for the output datasource that will have the aggregate result.
The return node is used as usual with the name-attribute defining the output Datasource name and the filter and sort childnodes defining a filter to filter out data in the output
Datasource and a sort column for sorting the order of data in the output Datasource.
The supported aggregates for groupBy are :
Max This is the maximum value in the defined column.
Min This is the minimum value in the defined column.
First This is the value on the first row of the defined column.
Last This is the value on the last row of the defined column
Count This is the amount of rows.
Sum This is the counted sum of values of the defined column.
For an example of the GroupBy method, see below:
<method name="GroupByTestMethod">
<builtInMethodParameterList name="bw_ds_GroupBy">
<parameter name="ParentDataSource">MyDataSource</parameter>
<parameter name="Column">MyDSCol1</parameter>
<parameter name="Column">MyDSCol2</parameter>
<parameter name="filter">MyDSCol4 > 0</parameter>
<returnColumn function="Max" column="MyDSCol3" name="ResultCol1"></returnColumn>
<returnColumn function ="Min" column="MyDSCol3" name="ResultCol2"></returnColumn>
<returnColumn function ="First" column="MyDSCol3" name="ResultCol3"></returnColumn>
<returnColumn function ="Last" column="MyDSCol4" name="ResultCol4"></returnColumn>
<returnColumn function ="Sum" column="MyDSCol4" name="ResultCol5"></returnColumn>
<returnColumn function ="Count" column="MyDSCol3" name="ResultCol6"></returnColumn>
<returnColumn function ="Sum" column="MyDSCol3" name="ResultCol7"></returnColumn>
<return name="MyOutputDataSource">
<filter>ResultCol5 > 0</filter>
<sort>ResultCol6</sort>
</return>
</builtInMethodParameterList>

Seite 189 von 208


</method>
Example 36 – bw_groupBy_functions

3.6.19 bw_bulkCopy_SqlServer
Lets you efficiently bulk load a SQL Server table with data from another source.
Supported parameters:
Connectionstring connection string to use for connecting to the database. The provided connectionstring must be in the .Net provider format.
Datasource This is the Datasource that contains the data to be inserted to database. Table-Datasource is supported and readers from
textfile_input, db_functions and nco_rfc_read_table have support for bulkcopy operations.
Targettablename Name of the destination table in the database.
Column Defines mapping between datasource column and target table column. This parameter has an attribute columnName that defines the
target tables column and the parameter value defines the datasource table column for the mapping. If at least one column mapping is
provided then not mapped columns will be ignored.
Batchsize Number of rows in each batch. At the end of each batch, the rows in the batch are sent to the database. Optional parameter.
Notifyafter Defines the number of rows to be processed before generating a notification in the log file. Optional parameter.
Copyoption An option that can be used with bulkcopy. Optional parameter. Possible values are:

Option value Description

default Use the default values for all options.


keepidentity Preserve source identity values. When not
specified, identity values are assigned by the
destination.
checkconstraints Check constraints while data is being inserted. By
default, constraints are not checked.
tablelock Obtain a bulk update lock for the duration of the
bulk copy operation. When not specified, row locks
are used.
keepnulls Preserve null values in the destination table. When
not specified, null values are replaced by default
values where applicable.
firetriggers When specified, cause the server to fire the insert
triggers for the rows being inserted into the
database.
useinternaltransaction When specified, each batch of the bulk-copy
operation will occur within a transaction.

For an example of the bulkcopy method, see below:


<builtInMethodParameterList name="bw_bulkcopy_sqlserver">
<parameter name="connectionstring">{v,sql_cnn_str}</parameter>
<parameter name="datasource">MyDataTable</parameter>
<parameter name="targettablename">dbo.Suppliers</parameter>
< /builtInMethodParameterList>
Example 37 – bw_bulkCopy_SqlServer

Seite 190 von 208


3.6.20 bw_bulkCopy_Oracle
An OracleBulkCopy efficiently bulk loads or copies data into an Oracle table from another data source. Note! Oracle bulkcopy can fail if used inside anyERP transaction.
Supported parameters:
Connectionstring connection string to use for connecting to the database. The provided connectionstring must be in the .Net provider format.
Datasource This is the Datasource that contains the data to be inserted to database. Table-Datasource is supported and readers from
textfile_input, db_functions and nco_rfc_read_table have support for bulkcopy operations.
Targettablename Specifies the database table that the data is loaded in.
Column Defines mapping between datasource column and target table column. This parameter has an attribute columnName that defines the
target tables column and the parameter value defines the datasource table column for the mapping. If at least one column mapping is
provided then not mapped columns will be ignored.
Batchsize Specifies the number of rows to be sent as a batch to the database. Optional parameter.
Notifyafter Defines the number of rows to be processed before a notification message is generated to the log file. Optional parameter.
Copyoption An option that can be used with bulkcopy. Optional parameter. Possible values are:
Option value Description

default Use the default values for all options.


UseInternalTransaction Indicates that each batch of the bulk copy operation
occurs within a transaction.

For an example of the bulkcopy method, see below:

<builtInMethodParameterList name="bw_bulkcopy_oracle">
<parameter name="connectionstring">{v,ora_cnn_str}</parameter>
<parameter name="datasource">MyDataTable</parameter>
<parameter name="targettablename">suppliers</parameter>
< /builtInMethodParameterList>

Example 38 – bw_bulkCopy_Oracle

1.123 Interface Distribution

Basware P2P can integrate with multiple ERP systems using Basware AnyERP. Typically, you use 1 set of AnyERP Configuration Files for each integration/ERP. Once you start
to integrate with many ERP systems it can be difficult to organize these Configuration Files and the Interface Distribution helps in this case.

With the Interface Distribution approach each integration is grouped and each group uses its own set of Configuration Files which are neatly organized in Configuration
Files/subfolder.. For getting data for all companies in a group only 1 task has to run to load e.g. Cost Centers, Import Orders etc.

Once the Interface Distribution XML file has collected all the relevant organizations in the DistributedOrgList, it will jump to the relevant subfolder with configuration files for that
particular ERP. From there the ERP specific AnyERP file will collect the interface data for all companies in that interface group.

Seite 191 von 208


Folder structure example for interface distribution with ORACLE and SAP:

For example, when loading basic data, you would configure in EXT_IF_BASICDATA to go to the InterfaceDistribution/basicdata_InterfaceDistribution.xml first and then logic inside
that file would work out which companies belong to the interface group and which subfolder to jump to.
For Order Import, you would use EXT_IF_ORDERIMPORT_ROUTINES and Transfer EXT_IF_TRANSFER_ROUTINES etc.

Seite 192 von 208


PRE-REQUISITES
Access to tenants:

 P2P Admin - Task Scheduler/Organizations


 Data maintenance tools (EXT_IF tables)
 AnyERP Integration Files

A package with the required files for InterfaceDistribution folder is available here from the Express Delivery site.
InterfaceDistribution.zip

For Configuration Files inside the specific ERP subfolders, you can use the standard templates where available or use the ones that come with the tenant rollout. Links are
provided below in the references section.

Seite 193 von 208


CONFIGURATION
By using the Interface Distribution, you are essentially instructing anyERP to read from a specific folder instead of the default Configuration Files folder. This allows us to have
subfolders e.g., one for each ERP system, country etc. Determine the best way to group by listening to your customer needs and discuss this as early as possible in the process
e.g., interface workshop.

The following interfaces can use the Interface Distribution.

 Basic (Master) data & supplier


 Order import/refresh
 Transfer & responses

For each company, the following fields are used in this example to indicate to which interface group they belong and where to find the AnyERP Configuration Files.

Column Description Example value


PATH (TEXT_9) Custom ERP Path (name/path to Configuration files subfolder) ORACLE
SYSTEMTYPE (TEXT_10) Custom System type (internal name for system name e.g. ORACLE) ORACLE
INTERFACEGROUP (INT_1) Interface group number 1

Basic data load process description (see Visio diagram above)


Column 1 Task scheduler
In the scheduler task you provide the parameters so that a single interface confguration can be selected in the next step. The following parameters are required:

Parameter Description
entrypoint_1 standard value for interface
interface matches interface column in EXT_IF table
OrganizationCode used to select interface configuration from a specific organization/group level in the

Seite 194 von 208


EXT_IF tables
Unique group number for interface distribution, used to retrieve data/configuration for
InterfaceGroup
multiple companies in a group

Column 2 Data maintenace configuration


With the parameters from the scheduler task it should be possible to identify a single row from the EXT_IF table being called. This row has the columns Add-on module and Add-
on File and these point towards the Configuration Files\Interface Distribution subfolder that contains BasicData_InterfaceDistribution.xml

EXT_IF table column Value


ADDON InterfaceDistribution (points to Interface Distribution folder under Configuration Files in Integration tool)
ADDONFILE BasicData_InterfaceDistribution.xml (note; multiple files can be used e.g. use a different one for Order Import)

Seite 195 von 208


Note that using the group level is recommended for default scenarios but not mandatory!

Column 3 AnyERP Integration Files

Basic data
When anyERP executes the logic in BasicData_InterfaceDistribution.xml (see diagram above), its possible to query the P2P database. This can be useful for identifying the
companies for which the task needs to load data for or to check which languages are active (note that there are more applications possible here).

In the organization table you can for example mark the following fields to group companies together, INT_1 = Interface group code and matches scheduler task parameter in the
examples used for this article.

Seite 196 von 208


In the Interface Distribution AnyERP file you can also define to which subfolder you want to jump to.
How to approach if current setup needs to be converted to use Interface Distribution
ImportOrder/RefreshOrder/BatchOrderRefresh

From the EXT_IF_ORDERIMPORT_ROUTINES its posible to set InterfaceDistribution as the Add-on module/file as well and it works in a similar way as the basic data, just using
different files, tables and entry points.

When you run this task it will find the Add-On file as configured in the EXT_IF_ORDERIMPORT table and you can then use apply your logic per the following entry points:

Seite 197 von 208


Seite 198 von 208
 ImportOrder (standard Import)
 RefreshOrder (refreshing a single order from UI)
 BatchOrderRefresh (refreshing a batch of orders from UI)

Seite 199 von 208


Inside the Order_InterfaceDistribution.xml the query selecting companies for data retrieval is actually based on the parent organization because this is designed to work with an
organization structure where you have all the companies for a single ERP system in the same group. You can take the query from the basicdata_InterfaceDistribution if you want
to base the company selection on interface group instead (ADM_ORGANIZATION_ELEMENT.INT_1) but then take into account that you need to make sure Order refresh &
Batch Order Refresh know how to work out the interfacegroup because its no longer passed from the scheduler task when you execute those from the UI.

Invoice Transfer & responses


The process is similar to configuring this for basic data & order import, the main difference is that you use different tables/configuration files. There is also the need for keeping the
ADDONFILE variable secure when pointing to the InterfaceDistributionFolder from the InvoicePro_Customer_Transfer.xml which you have to use for Transfer version 2. An
overview is provided below:

Interface Distribution file to


Interface Table/config file for configuring Add-On modules
use
InvoicePro_Customer_Transfer.xml

Transfer (v2) Transfer_InterfaceDistribution.xml

TransferResponse EXT_IF_TRANSFER_RESP_ROUTINES BasicData_InterfaceDistribution.xml


PaymentResponse EXT_IF_TRANSFER_RESP_ROUTINES BasicData_InterfaceDistribution.xml

Seite 200 von 208


Copying interface mappings when using a dedicated/custom interface name

If you plan to a use a dedicated interface name such as ORACLE_IMPORTORDER below then note that you have to add the mappings to EXT_IF_ORDERIMPORT_MAPPINGS
as well. This can be done on dev/test tenants where you have write access with a query but requires an exception request for production tenants. You can use the below as well
for basic data/transfer mappings, you just have to update the table and column names accordingly.

Seite 201 von 208


INSERT INTO EXT_IF_ORDERIMPORT_MAPPINGS
SELECT SYS_GUID(), ADMINISTRATIVE_SITE_ID, 'ORACLE_IMPORTORDER', TYPE, SOURCE, DESTINATION, NODE, DATATYPE FROM
EXT_IF_ORDERIMPORT_MAPPINGS

(note that this query assumes that there is only the single original set of mappings in the EXT_IF_ORDERIMPORT_MAPPINGS table before excection, add another condition if
you want to copy mappings from a specific interface!)

1.124 Nachträgliche Belastung / Entlastung


Originaltext aus der SAP-Doku:

Erzeugen von nachträglichen Be- und Entlastungen

Wenn Sie in die Tabelle ItemData in das Feld DE_CRE_IND ein X eingeben und in die Tabelle HeaderData in das Feld INVOICE_IND ein X für das Buchen einer Rechnung
eingeben, erzeugt das System eine nachträgliche Belastung, d.h. der zu berechnende Betrag wird auf die bereits abgerechneten Mengen verteilt.

Wenn Sie in die Tabelle ItemData in das Feld DE_CRE_IND ein X eingeben und in der Tabelle HeaderData das Feld INVOICE_IND leer lassen, erzeugt das System eine
nachträgliche Entlastung.

Somit muß in der Kontierungszeile ein Feld für „DE_CRE_IND“ vorhanden sein.

1.125 Ungeplante Bezugsnebenkosten


Diese werden verbucht, indem man nur den Nettobetrag und den Steuercode und in PO AA eine ‚99‘ angibt. AnyERP macht dann den Rest.

1.126 FI-Modul

1.126.1 Steuer rechnen


Es gibt bestimmte Rechnungen / Gutschriften, die sich nur mit der „Steuer rechnen“ Checkbox buchen
lassen. Es kommt meistens dann vor, wenn die Steuerbeträge in den Basis- und Kontierungsdaten nich
„übereinstimmen“. Zum Beispiel haben wir eine Rechnung über 4810 €, die drei Positionen enthält:
1. Eine Rechnungsposition mit 3000 € und Steuerschlüssel V0 (Betrag=0€)
2. Eine Gutschriftposition mit 1000 € und Steuerschlüssel V1 (Betrag=190€)
3. Eine Rechnungsposition mit 3000 € und Steuerschlüssel V0 (Betrag=0€)

Seite 202 von 208


Dadurch, dass man in den Basisdaten den Steuerbetrag nur positiv eintragen darf (im SAP), entsteht in
diesem Fall eine Differenz – weil der Steuerbetrag in der Kontierung negativ ist (die zwei anderen
Positionen haben keinen Steuerbetrag). Dies kann man einfach dadurch lösen, dass man die „Steuer
rechnen“ Checkbox im SAP anklickt und in den Positionen statt Netto den Bruttobetrag nach SAP
überträgt:
<parameter name="BSEG-WMWST">{F,EVAL(I,50,">";"=";"X";"";I,VAT)}</parameter>
<parameter name="BKPF-XMWST">{F,EVAL(I,50,">";"=";"X";I,50;"")}</parameter>

Und bei den Positionsbeträgen zum Beispiel:

<parameter name="BSEG-WRBTR">{F,EVAL(I,50,">";"=";"X";A,BRUTTO,ABS;A,NETSUM,ABS)}</parameter>

";F,EVAL(A,T13;=;"";"";F,SETDATA(v;crossCompany;"0701"));""));=;"";"";"")}</parameter>

1.126.2 Ungeplante Kontierung / Kontierungsänderung


Wenn eine Kontierung gegenüber der Bestellung anders verbucht werden soll:

Originaltext aus der SAP-Doku: „Geben Sie im Feld XUNPL ' ' ein, und im Feld SERIAL_NO die Zeile, die Sie ändern möchten, z.B. '2'.“

ungeplante Kontierung:

Originaltext aus der SAP-Doku: „Geben Sie im Feld XUNPL 'X' ein, und lassen Sie das Feld SERIAL_NO leer. „
Hier bestand früher ein Fehler in der IncomingInvoice.xml der Passus für die beiden Felder muß folg. lauten:

<subProperty name="xunpl" type="system.string">{F,EVAL(A,T7;=;"99";C,X;"")}</subProperty>

<subProperty name="serial_no" type="system.string">{F,EVAL(A,T7;=;"99";"";A,T7)}</subProperty>

Zum Verbuchen einer ungeplanten Kontierung muss folg. beachtet werden:

 Es muss immer eine Ursprungskontierung existieren.


 Pos.Nummer muss sich auf eine Ursprungskontierung beziehen.

Seite 203 von 208


 Die Menge muss in der Summe „aufgehen“.
 Serial.Nr. muß für die Ursprungskontierungszeile 01, 02 usw sein, für die Kontierungsänderung aber 99

Beispiel:

Kontierungsänderung:

Die Konfiguration in IncomingInvoice.xml ist so verfasst, daß immer eine Kontierungsänderung beim Verbuchen erfolgt. Dadurch muss man sich darum nicht kümmern

1.127 Withholding tax

Seite 204 von 208


M
M (is
not in
use at
Nexan
s but
the
fields
are
there)

FI

Seite 205 von 208


Fehler/Probleme

1.128 Interface Distribution

Beim Ausführen eines Stammdatenabrufs unter „InterfaceDistribution“ kommt es zu einem Fehler, dass auf ein File nicht zugegriffen werden kann:

20/01/2021 12:01:56.540 Error handler '' received an exception. Jumping to XPATH '//section[@name='errorHandlers']/section[@name='BasicDataHighLevelError']'.
20/01/2021 12:01:56.540 --------------------------- Error Details ---------------------------
20/01/2021 12:01:56.540 Access to path 'BasicData_InterfaceDistribution.xml' is not allowed for this tenant.

Abhilfe:

Im File SaaS_SystemVariables.xml muss folg. Parameter gesetzt werden:

Eventuell haben wir keine Schreibberechtigung auf das File => Ticket eröffnen

Seite 206 von 208


API:
Doku ist erreichbar unter:

https://developer.basware.com/

.JSON Doku:

Swagger UI (basware.com)

Seite 207 von 207

Das könnte Ihnen auch gefallen