Beruflich Dokumente
Kultur Dokumente
Version 5.4
© 2015-2022 Stephan Kittel, Basware GmbH
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
Außerdem muss die Supplier LookUpListe an die SupplierID gelinkt werden, auch wenn das Feld nicht unbedingt angezeigt wird.
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
Die vordefinierten identifier keys dürfen auf keinen Fall gelöscht werden.
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.
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.
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
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).
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:
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:
Allowed values:
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)
GoodsReceiptDataExportEnabled false This setting will enable Goods Receipt (UBL 2.0 ReceiptAdvice xml) export, XML will be generated for all Goods Receipts.
Organization Import:
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.
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.
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
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.
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
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>/
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.
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.
Max = 1000
MaxInvoiceLimitForSmartCoding 100
using this parameter the number of past invoices that are used for smart coding can be configured.
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
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.
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.
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
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
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
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.
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
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
Allowed values:
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:
Hidden tenant settings - stored in CMN_TENANT_SETTINGS-table, but not visible in tenant settings UI.
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.
ManualActivationBaswareUsers false
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.
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
G FORCE_MATCH
REQUEST_MANUA_APPROVAL
CONFIRM_MATCHING RESERVE_IN_MANUAL_MATCHING
CONFIRM_MATCHING
LoopUpListSource:
Felder:
TEXT24 = Filterfeld mit der Supplier, ID, TEXT27 + TEXT28 werden gefüllt.
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.
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.
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.
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.
Konfiguration:
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.36 BPME
From IP:
N8 = Denominator
N9 = Numerator
<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>
Damit „Self Billing“ auswählbar ist und funktioniert muss folg. definiert werden:
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.
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
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
Then the fields of the XML file has to be copied to anyERP coding and changed as follows:
===>
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)
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:
<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>
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
….[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:
1.55 User Login type beim Generieren von Usern mittels Script
Tabelle ADM_USER_DATA
Defaultwert setzen:
"P2P Admin -> „Organization“ -> Element auswählen -> "Default Login Type:"
Darstellung:
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.
Coding:
https://www.freeformatter.com/cron-expression-generator-quartz.html
SYMPTOMS
When executing scheduled tasks to import for example basic data, AnyERP logs includes the following error message:
TROUBLESHOOTING
<variable name="sys_schema_validation_inuse">False</SystemVariable>
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.
muss im BT-Import „CustomerInvoice_Pro_BT_Import.xml“ derselbe Key angegeben werden und der Import findet nun den Kreditor:
Im File “InvoicePro_SAP_Customer_Common_Initialize.xml” folg. Variable setzen (bei “Distributed Environment” im Destination folder.)
<variable name="CreateArchiveLink">True</variable>
Parameter:
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
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.
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
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
Das reguläre Script, das ALLE Rechnungs/ Bestelldaten (getrennt _IA/ _PURCHASE) vom System entfernt.
1.92 Hinzufügen der URL für das InvoiceImage zum TRANSFER.XML file.
Hierzu muss man in der GDM folg. Eintrag hinzufügen:
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
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
https://baswarecorp.sharepoint.com/sites/BWCN/BCN/P2P/ProductReleases/P2P/Exceptions/Lists/Exceptions%20to%20JIRA/NewForm.aspx?RootFolder=
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
AutomaticCoding = 31
Closed = 32
Manually created = 1
E-Invoices = 2
NotPrebooked = 0
PrebookInProgress = 1
Basware Supplier Portal = 3
Prebooked = 2
PrebookFailed = 3
Basware Scan = 4
Selfbilling = 6
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
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
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
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
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
Cancelled
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}
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
- - ApprovedCount - APPROVED_COUNT
- - DeliveryNoteNumber - DELIVERY_NOTE_NUMBER
- - GrossTotalCompany - GROSS_SUM_COMP
- - GrossTotalOrganization - GROSS_SUM_ORG
- - Id - ID
- - InvoiceID - INVOICE_ID
- - LastComment - LAST_COMMENT
- - MatchingMode - MATCHING_MODE
- - MatchingSubStatus - MATCHING_SECONDARY_STATUS
- - NetTotalCompany - NET_SUM_COMP
- - NetTotalOrganization - NET_SUM_ORG
- - OrderNetTotal - NUM2
- - OrderGrossTotal - NUM20
- - OrderedNetPrice - NUM8
- - OrderedGrossPrice - NUM9
CompanyCode - - - -
- - OrganizationElementName - ORGANIZATION_ELEMENT_NAME
- - Origin - ORIGIN
- - Percentage - PERCENTAGE
- - ReviewedCount REVIEWED_COUNT
- - Sealed - SEALED
- - TaxSumComp - TAX_SUM_COMP
- - TaxSumOrg - TAX_SUMORG
- - TaxSum2Comp - TAX_SUM2_COMP
- - TaxSum2Org - TAX_SUM2_ORG
- - InvoiceId - INVOICE_ID
- - InvoicePaymentDate - INVOICE_PAYMENT_DATE
- - OwnerName - OWNER_NAME
- - MatchedQuantity - MATCHED_QTY
- - MatchedNetSum - MATCHED_NET_SUM
- - MatchedGrossSum - MATCHED_GROSS_SUM
- - FiscalYear - -
- - ConditionType - -
- - FreightSlip - -
DistributionCode - - - -
DistributionMode - - - -
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.
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>
<variable name="readCursor">0</variable>
<variable name="readBuffer">50000</variable>
<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 <> 'X' AND SPERR <> '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>
<parameter name="connectionstring">{v,connstr}</parameter>
<parameter name="table">supplier</parameter>
</outputCommands>
<outputCommands>
</outputCommands>
</output>
<clearTable>LFA1</clearTable>
<variable name="readCursor">{F,CALC(v,readCursor;"+";v,readBuffer)}</variable>
</section>
1.110 anyERP-Errorhandling
<transaction name="GetInternalOrdersRFC">
</onError>
</transaction>
<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="server">smtp.muenster.de.root.net</parameter>
<parameter name="from">BaswareEPP@ista.com</parameter>
</builtInMethodParameterList>
86.1 F,ISDATE
<variable name="BSEGABPER_dummy">{F,TODATE(v,BSEGABPER_dummy;"dd.MM.yyyy")}</variable>
<variable name="BSEGABPER_dummy">{v,BSEGABPER_dummy,"yyyyMM"}</variable>
<variable name="BSEGABPER_dummy">{F,TODATE(sourcedata,VALID_FROM;"dd/MM/yyyy"),"dd-MMM-yy"}</variable>
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)
<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>
<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>
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.
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.
<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.
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" />
Outer
Inner
<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>
<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.14 Daten aus einer gejointen Datasource (Vendors) aus den Ursprungstabellen (LFA1+LFB1) lesen:
Join:
Loop:
<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)}
F,REPLACE(v,variable; ”;”;”,”)
Lösung:
<variable name="testlength">{F,CALC(1;+;F,LEN(v,accSortString);"-";F,LEN(F,REPLACE(v,accSortString;",";"")))}</variable>
Ergebnis:
1.118 Umlaute-Umwandlung
ä = ä
ö = ö
ü = ü
(...)
</section>
<variable name=”Looper”>{F,IF(F,CURSORINDEX(ds);<>;50)}</variable>
</section>
</section>
Hier loopt anyERP durch die gesamte Datasource 50 mal, bis Cursorindex = 50 ist.
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
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_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.
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>
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 <> '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.
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">
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>
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 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>
Supported parameters:
command Predefined value is ‘rename’
filename Name of the renamed file or directory
newname New name
<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>
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>
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>
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:
3.6.3.6 Dir
This command is used to read a directory listing.
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.
Configuration example:
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.
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">
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.
<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>
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>
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.
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>
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)
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>
In this example the id field is given the 1st parameter, which is the number 5 and the val field the string ‘misc data’.
<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>
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>
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.
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>
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>
The example configuration above tries to send an email as ‘user1’ in ‘domain.com’ domain.
Supported parameters:
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"/>
<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>
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>
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>
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.
Configuration example:
<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.
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>
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.
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">(&(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>
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">(&(objectClass=user)(name=Testuser))</parameter>
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:
<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
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.
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.
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.
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.
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
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.
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:
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.
(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!)
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.126 FI-Modul
<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>
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:
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
FI
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:
Eventuell haben wir keine Schreibberechtigung auf das File => Ticket eröffnen
https://developer.basware.com/
.JSON Doku:
Swagger UI (basware.com)