Documen en BI SAP
Documen en BI SAP
Scenario Development
Last Modified: March 28, 2017
Public
© 2017 SAP SE or an SAP affiliate company.
All rights reserved 2
1 Concepts of Scenario Development
The integration framework is an integration and collaboration server that allows you to develop
and run integration scenarios. Integration scenarios let systems automatically exchange data with
each other.
EXAMPLE
A company has a headquarters and subsidiaries. For daily business in the subsidiaries,
employees need the customer and item master data from the headquarters in their
subsidiary systems. In the integration framework, you provide a scenario package that
initially loads the master data from the headquarters system to all subsidiary systems
and then, you provide a mechanism that also provides master data changes and
additions to the subsidiary systems afterwards.
SAP and SAP partners deliver integration scenarios that run in the integration framework, or
customers develop them based on individual requirements for a specific project. The technical
term for a scenario package in the integration framework BizStore is vPac (virtual package).
Public
© 2017 SAP SE or an SAP affiliate company.
All rights reserved 3
Inbound, Processing and Outbound (IPO)
A scenario step has an inbound, a process, and an outbound phase.
In the inbound phase, the integration framework receives the incoming message and transforms
it to the internal XML format. In the process phase, the integration framework transforms and
enriches the message, determines the receivers and maps message values. In the outbound
phase, the integration framework transforms the message into the technical format required by
the receiver system or systems and finally sends out the message to the receiver system or
systems.
An internal queuing mechanism is available to hand over data internally from one scenario step
to another. Thus you can combine scenario steps in a scenario package.
In a scenario package, you can combine synchronous and asynchronous scenario steps.
However, one scenario step exactly belongs to one scenario package. You cannot assign a
scenario step to several scenario packages. If you want to use the same or a similar scenario
step in different packages, copy the scenario step and adjust it accordingly.
Design
In the design phase, you develop the scenario package content. You decide, for example, which
system types communicate with each other, and how the integration framework must transform
messages from the sender system to the format required by the receiver system. You decide
whether you have specific security-related requirements, or whether you must fulfill specific
monitoring requirements, for example.
When you create a scenario package, it has the design status by default, and you can develop
content. You can, depending on your authorization rights, change all documents assigned to the
scenario package as well as all scenario steps belonging to the scenario package. The scenario
steps are not active, that means, you cannot yet run them. Even, if a sender system triggers the
Public
© 2017 SAP SE or an SAP affiliate company.
All rights reserved 4
appropriate events to start the integration, nothing happens. By default, new and imported
scenario packages are in design mode.
Setup
Setting up a scenario package means that you prepare it for runtime in the specific system
landscape. During setup, you select scenario steps you want to run, assign the systems from
System Landscape Directory (SLD), define optional publishing and subscriber filters, define
scheduler settings, if required, set values for properties, variables, global tables, and so on. The
selected scenario steps are still not active. Therefore, you can easily switch the processes on or
off.
In the integration framework, you have the following options to set up a scenario package:
● The integration framework provides a setup wizard that guides you through the setup steps.
Select Scenarios → Setup, and click the button.
● Select Scenarios → Setup, and click the Sender, Receiver, Timer, Data Management
buttons.
● You can also call the scenario setup using the scenario control user interface, Scenarios →
Control → Setup.
There is an option available for a predefined automatic setup during scenario package import.
For more information about defining sender and receiver systems in SLD, see the Operations
Guide Part 1, section System Landscape Directory
Active
If a scenario package is active, it processes messages from sender to receiver systems and writes
messages for monitoring purposes, if monitoring is switched on. After activation, you can no
longer make changes to the scenario package. The scenario steps are active and run.
There is also an option for predefined automatic activation during import of a scenario package.
The scenario package must have the design & setup status for activation.
To allow changes, select Maintenance → Cfg Dev Environment, and click the Allow Active Step
Modification checkbox.
You can programmatically activate a scenario package using an integration framework API.
For more information, see the API Guide, section Scenario APIs
Public
© 2017 SAP SE or an SAP affiliate company.
All rights reserved 5
2 Creating a Scenario Package
2.1 Scenario Package User Interface and Parameters
To create a scenario package, logon to the integration framework and select Scenarios →
Package Design.
The maximum length of the identifier is 20 characters. You can use all letters, numbers, point and
hyphen.
EXAMPLE
sap.B1if.Samples is the identifier for the integration framework examples delivered
by SAP.
Public
© 2017 SAP SE or an SAP affiliate company.
All rights reserved 6
To change a scenario package, click the […] button and select it from the list.
Business Area
You can assign your scenario package to a business area. Use the assignment in the Scenarios
→ Control section to sort scenario packages by business area.
The following options are available:
● Master Data
● Management Reporting
● Financial Accounting
● HR – Payroll
● Marketing
● Planning and Reporting
● Procurement
● Production
● CRM
● SRM
● FSCM
● Test
Authentication
If a scenario package contains at least one scenario step triggered by an incoming HTTP or Web
service call, define the authentication method. The following options are available:
● No Authentication
The integration framework does not require credentials in incoming HTTP or Web service
calls.
● Basic Authentication (user name, password)
The integration framework requires providing a user name and password of an integration
framework runtime user in incoming HTTP or Web service calls.
● Basic Secure Authentication (enforce HTTPS, user name, password)
The integration framework requires HTTPS and providing a user name and password of an
integration framework runtime user in incoming HTTP or Web service calls.
● B1 Authentication
The integration framework requires providing a user name and password in incoming HTTP
or Web service calls. The user name and the password must be available in a SAP Business
One company database.
● B1 Secure Authentication
The integration framework requires HTTPS and providing a user name and password in
incoming HTTP or Web service calls. The user name and the password must be available in
a SAP Business One company database.
● Optionally a special user-defined authentication
For more information about user-defined authentication, see section 13 Authentication for
Scenario Packages
Status
The read-only field displays the current status of the scenario package, for example, design or
active.
Public
© 2017 SAP SE or an SAP affiliate company.
All rights reserved 7
Vendor
The information depends on the settings of the development environment. By default, the
integration framework inserts the value of the field Development Prefix Description of the
Maintenance → Cfg Dev Environment function. You can overwrite it.
Version
Enter the version number of your scenario package. If you create a scenario package, the
integration framework sets the version to 1.0.0.
For more information, see section 11 Versioning of Scenario Packages and Steps
Timestamp
The read-only field displays the timestamp of the last change of the scenario package. The
integration framework does not reflect here changes in assigned scenario steps.
Description
Enter a description for the scenario package.
Scenario Steps
The read-only field displays the scenario steps that are assigned to the scenario package. You
assign scenario steps to a scenario package in the Scenario Step Design user interface. In this
way you cannot assign scenario steps to different scenario packages at the same time.
, ,
An inbuilt consistency check validates your definitions against the model specification of the
integration framework. The integration framework triggers the check when you open the user
interface.
● The green icon indicates that all definitions are correct and complete.
● The yellow icon indicates that some warnings exist.
● The red icon indicates inconsistencies due to errors or incompleteness.
If the integration framework displays a yellow or red icon, click the icon. The integration framework
displays details of the consistency check result and provides an incident number and a description
for each warning and inconsistency. To check and solve the indicated issue in the related design
user interface, click the [Design] button.
Public
© 2017 SAP SE or an SAP affiliate company.
All rights reserved 8
The integration framework supports providing documentation for a scenario package. Write
documentation and save it in Portable Document Format (PDF) format in the base directory of
the scenario package.
For more information, see section 12 Creating Documentation for a Scenario Package
Optionally, you can generate a document based on the definitions. Select Scenarios → Package
Design → [Tools] → Generate documentation. If both documents exist, a dropdown list allows
you to select the documentation.
To delete a scenario package including all assigned scenario steps, click the button.
RECOMMENDATION
We recommend archiving scenario packages before deletion. The integration framework
requests you to trigger archiving before deletion.
Public
© 2017 SAP SE or an SAP affiliate company.
All rights reserved 10
letters, numbers, point and hyphen. The integration framework adds the namespace
abbreviation. The abbreviation depends on the settings of the development environment.
The integration framework adjusts the scenario package and references in the assigned
scenario steps. Note that archived versions still have the old name.
● Copy package
The function allows you to copy a scenario package from another to your namespace.
● Generate documentation
To generate a PDF document with information about the scenario package, and the
assigned scenario steps, select the function. The integration framework saves the document
in the base directory of the scenario package. To open the document, click the icon.
Public
© 2017 SAP SE or an SAP affiliate company.
All rights reserved 11
3 Developing a Scenario Step
3.1 Step Development Parameters, Functions and Tools
A scenario step is an integration flow. The integration framework support asynchronous flows
between a sender and a receiver system type and synchronous flows, triggered by a caller. The
short form for a scenario step in the integration framework BizStore is vBIU. BIU is the
abbreviation for Business Integration Unit.
RECOMMENDATION
To easily associate the step by name with the corresponding scenario package, we
recommend reflecting a package abbreviation at the beginning of the name, similar to
the example above.
To select a step, click the […] button to open a list with all scenario steps, sorted by scenario
packages.
Asynchronous Processing
In asynchronous processing, a sender system sends a message or trigger, for example a SAP
Business One event, to the integration framework that starts the scenario step processing.
Alternatively, you have defined a timer for the scenario step that induces the integration
framework to retrieve data from a sender system.
The inbound phase hands over the message in XML format to processing. The process flow
transforms the message so that the integration framework can hand it over to the outbound phase.
In the process flow, you have the option to define calls to various systems to enrich the message.
The outbound phase transforms the message to the protocol the receiver system understands
and hands over the message to the receiver system or systems.
Public
© 2017 SAP SE or an SAP affiliate company.
All rights reserved 13
Synchronous Processing
In synchronous processing, the inbound phase gets a request call from a sender system. The
inbound phase hands over the message in XML format to processing. The process flow
transforms the message so that the integration framework can hand it back to the original sender
system. In the process flow, you have the option to define calls to various systems to enrich the
message.
Public
© 2017 SAP SE or an SAP affiliate company.
All rights reserved 14
Version
The integration framework supports a versioning concept for scenario steps. The field displays
the current version of the scenario step. The integration framework initializes a new scenario step
with the 1.0.0 version.
For more information, see 11 Versioning of Scenario Packages and Steps
Internal
By default, a scenario step is a public step that you can set up and activate by selecting Scenarios
→ Setup → [Steps].
If you want to use a scenario step internally to be only called by other scenario steps in the process
flow, select Internal.
The following applies for internal scenario steps:
● The integration framework displays but disables internal scenario steps for setup. This
ensures that no one activates such a step accidentally.
● Only the processing phase definition is relevant for internal scenario steps. The inbound
and outbound phase definitions are not relevant. You can ignore them.
Public
© 2017 SAP SE or an SAP affiliate company.
All rights reserved 15
processing phase. This leads to an error that cannot be resolved and complex manual steps
are required.
The DI transaction stays in in-doubt status, and the integration framework deactivates the
IPO step. The integration framework recovery function tries to perform the transaction again
after some time, but cannot succeed. If other subsequent steps try to perform their functions,
but cannot do so, the integration framework deactivates them, too. If the integration
framework has to handle many deactivated steps, other internal IPO steps are also affected
and overall performance deteriorates.
● As long as a scenario step processing communicates with SAP Business One using the DI
API, the related records in SAP Business One are locked for other users and processes,
and the connection to the DI stays open. The related resources are occupied. This can have
a negative impact on overall performance.
To change the integration framework behavior in connection with the DI API, select the SAP
Business One DI Single Transaction checkbox. By default, the integration framework continues
supporting the two-phase commit protocol and is, therefore, backward compatible.
If you select the new behavior for your scenario step, the following applies:
For the scenario step, the changed behavior affects SAP Business One inbound, the SAP
Business One object, service, function, and the message call atoms, and SAP Business One
outbound.
● Calls to SAP Business One are self-contained and the effects are immediately persistent
after the return of the call. The behavior is similar to HTTP or synchronous Web service
calls.
● Self-contained calls to the SAP Business One company database lock the database for only
a very short time.
● Since the adapter no longer participates in the two-phase commit protocol, lengthy retry and
rollback mechanisms no longer happen.
● The deactivation of internal integration framework IPO steps in conjunction with the DI API
happens less often.
RECOMMENDATION
● If you enable the function, the integration framework does not perform the scenario
step as an atomic and consistent transaction.
● If an error occurs in the step, for overall data consistency, provide suitable
compensation to undo changes in SAP Business One that have happened already.
Note that for some objects, it is not possible to undo changes in SAP Business
One. You cannot change objects that create journal entries. This is, for example,
the case for invoices.
● We recommend using the function if you access SAP Business One only for
reading data.
● Use the function if you write data to SAP Business One only once, and the call to
SAP Business One is the last in processing.
● To make several calls to SAP Business One for writing data, distribute the calls to
several scenario steps that you connect using the internal queue mechanism of the
integration framework.
● Do not use the function if you perform several calls writing to SAP Business One,
if the write operations depend on each other.
Public
© 2017 SAP SE or an SAP affiliate company.
All rights reserved 16
3.1.2 Scenario Step Functions
, ,
The integration framework consistency check validates the definitions you have entered against
the framework model specification. The integration framework checks definitions when you open
the user interface, after selecting another scenario step or when you close a nested user interface,
for example, Inbound to return to the current user interface.
● The green icon indicates that all definitions are correct and complete.
● The yellow icon indicates that some warnings exist.
● The red icon indicates inconsistencies due to errors or incompleteness.
If the integration framework displays a yellow or red icon, click the icon. The integration framework
displays details of the consistency check result and provides an incident number and a description
for each warning and inconsistency. To check and solve the indicated issue in the related design
user interface, click the [Design] button.
Use the arrow icons to navigate between the steps. The integration framework sorts steps by the
scenario step identifier.
[Inbound]
To define the inbound phase of a scenario step, click the [Inbound] button. No development is
required for the phase. For the inbound phase, you define the inbound channel including the
following:
● The system type that initiates the scenario step
● The trigger to start the scenario step, for example, a SAP Business One event
● The processing mode (synchronous, asynchronous)
● The identification method of incoming data, for example, a file name
● Optionally, you also define data retrieval from the sender system and data formatting during
the inbound phase.
[Processing]
After the inbound phase, the integration framework hands over the inbound message to
processing. You define processing using the BizFlow language in the graphical flow designer.
The BizFlow language is a problem domain-specific language, especially focusing on the tasks
Public
© 2017 SAP SE or an SAP affiliate company.
All rights reserved 17
required for integrating business applications. The functional components of the flow are
sequences, conditions and iterations. Atoms as elements of the language offer transformations,
conversions, calls, and so on. To open the graphical flow designer, click the [Processing] button.
Here you define your processing logic.
[Outbound]
For asynchronous scenario steps, define outbound processing to specify the destinations the
integration framework sends data to. The outbound definition is fully declarative, supported by
multiple nested user interfaces that provide lists with appropriate options. Define the receiver
system type and optionally some call details to allow the integration framework to handle the data
handover.
To create a scenario step, click the button. Alternatively, enter a new name in the Scenario Step
Identifier field.
Public
© 2017 SAP SE or an SAP affiliate company.
All rights reserved 18
you no longer need the XSL files no longer linked to an XSL transformation atom, use the
function to clean up your development environment.
● Scenario Step Information
Use the function to display all settings of the scenario step. Optionally, you can display the
information as an XML document.
Public
© 2017 SAP SE or an SAP affiliate company.
All rights reserved 19
3.2 Inbound User Interfaces
The integration framework supports the following inbound channels:
● SAP Business One
● SAP ERP
● Web Service Call
● HTTP Call
● Flat File
● Database
● Timer-based database retrieval
● Internal Queue
● Void (timer-based inbound)
● Predecessor
For more information about configuration details of the inbound channels, see the documentation
assigned to the channel in the integration framework graphical flow designer user interface.
Data Retrieval
The read-only field displays how inbound data reaches the scenario step. It depends on the
inbound channel type, whether data retrieval is required. Data retrieval is, for example, not
Public
© 2017 SAP SE or an SAP affiliate company.
All rights reserved 20
required for all incoming calls that hand over data. Define data retrieval, if the incoming trigger,
for example, an SAP Business One event, does not hand over the relevant business data.
Formatting
The read-only field is usually set to dynamic. If you must process a special formatting based on
external instructions during the inbound phase, define the format control document. You need
formatting information, for example, for an incoming text file, to control the conversion to XML by
offset definitions or regular expressions.
For example, the channel INB_HT_CALL_SYNC_XPT indicates an inbound (INB) channel for
HTTP (HT), a call triggers the process (CALL), processing is synchronous (SYNC), and an XPath
statement defines the identification of the call (XPT). Appendix A (Table of Inbound Channels)
displays channels that the integration framework supports.
Inbound Type
The inbound type defines the initiator system or system type. The following inbound types are
available:
● Business Process
● SAP Business One
● SAP ERP
● Web Service Call
Public
© 2017 SAP SE or an SAP affiliate company.
All rights reserved 21
● HTTP Call
● Flat File
● Database
● Timer-based
● Internal Queue (internal explicit triggering by another scenario step)
● Void
● Predecessor (result process of another scenario step)
Process Mode
The process mode defines how the integration framework performs the processing. The
supported mode depends on the inbound type. The mode can be Synchronous or
Asynchronous:
● If a sender system calls the integration framework and waits for a response, select
Synchronous.
● If you want to send a message from a sender system to a receiver system, select the
Asynchronous mode for message-based integration.
Process Trigger
Process triggers depend on the selected inbound type and process mode. The following triggers
are available:
● Call
An incoming call triggers the step.
● B1Event
An event coming from SAP Business One triggers the step.
● Timer
Scheduler-based settings trigger the step.
● File Exist
The existence of a file triggers the step.
● Queue
A message in an internal queue triggers the step.
● IDOC
An incoming IDoc from an ABAP-based system triggers the step.
Identification Method
The integration framework supports inbound channels in a generic way. In contrast to other
integration solutions, you do not need to setup inbound processes per business object or method
using extensive proxy generation. The integration framework can support, for example, all
incoming Web service calls with a generic channel or all incoming events from a SAP Business
One system with one generic channel. Define the business object or the required method based
on the inbound data.
EXAMPLE
● You define a scenario step that retrieves all business partners from an SAP
Business One system. The identification method is B1Event.
● An incoming HTTP call hands over an XML message with a specific name of the
root tag. The identification method is Root Tag.
Public
© 2017 SAP SE or an SAP affiliate company.
All rights reserved 22
The supported methods depend on the selected inbound type, the process mode, and the process
trigger. The following identification methods are available:
● B1 Logic
Incoming XML file, following the syntax of SAP Business One XML
● B1Event
Incoming event from an SAP Business One system
● File Name
Name of an incoming flat file
● First Line
First line of an incoming text file
● Fix Value
The integration framework looks for a fixed value.
● Queue/Stream
Name of internal queue and stream
● Root Tag
Name of the root tag of the inbound message
● vBIU (scenario step) Name
Name of the predecessor scenario step
● xPath
Any XPath statement that the integration framework processes on the inbound message
Identification Parameter
This parameter is optional. It depends on the selected identification method. If you select File
Name as the identification method, you can optionally define the start position and the length of
the file name that is relevant for identification. The format is x,y calculated as
substring(filename,x,y). If your incoming file name is always different because the
timestamp is added to the file name, you can use this function to identify the file by only comparing
the fixed parts of the file name.
EXAMPLE
The identification parameter is set to 1,6.
The identifier is myfile.
The settings let the integration framework retrieve all files that start with the myfile file
name, for example, myfile.xml, myfile12.xml, myfilexyz.txt, and so on
If you select xPath as the identification method, define the XPath expression. Use the $msg
variable for the incoming message.
Identifier
This is the identifier of the incoming business object or called method that the scenario step
subscribes to. The integration framework compares the inserted string using the selected
identification method against the value based on the incoming message.
Identification Namespace
This parameter is optional. If the processing of the incoming message requires the declaration of
XML namespaces, define the XML namespaces. The integration framework generates the XML
Public
© 2017 SAP SE or an SAP affiliate company.
All rights reserved 23
namespaces into all documents that are relevant for processing. Use the xmlns:ns=”nsdef”
xmlns:ns=”nsdef” … syntax.
[Timer]
If the process trigger is a timer, define the default scheduler settings for the scenario step. During
setup of the scenario package, the customer can overwrite the settings.
To define timer settings, click the button.
The timer definition is based on CRON syntax. CRON is time-based job schedule in Unix-like
computer operating systems. A CRON entry has six fields to define day, date and time. The
integration framework triggers the scenario step, if all entries are true. The integration framework
compares the entries with the system time zone settings of the machine where the integration
framework runs.
Scheduler (Minute)
Define the value for the minute part of the time. Use * or a list of elements separated by comma.
An element is either a number in the range 0 to 59 or two numbers in the range separated by a
hyphen (meaning an inclusive range).
Scheduler (Hour)
Define the value for the hour part of the time. Use * or a list of elements separated by comma. An
element is either a number in the range 0 to 23 or two numbers in the range separated by a
hyphen (meaning an inclusive range).
Scheduler (Day)
Define the value for the day part of the date. Use * or a list of elements separated by commas.
An element is either a number in the range 1 to 31 or two numbers in the range separated by a
hyphen (meaning an inclusive range).
Scheduler (Month)
Define the value for the month part of the date. Use * or a list of elements separated by commas.
An element is either a number in the range 1 to 12 or two numbers in the range separated by a
hyphen (meaning an inclusive range).
Public
© 2017 SAP SE or an SAP affiliate company.
All rights reserved 24
Scheduler (Day of Week)
Define the value for the day of the week. Use * or a list of elements separated by commas. An
element is either a number in the range 0 to 6 (Sunday = 0) or two numbers in the range separated
by a hyphen (meaning an inclusive range).
Scheduler (Year)
Define the value for the year part of the date. Use * or a list of elements separated by comma. An
element is either a number, specifying a year, for example, 2010, or two numbers in the range,
separated by a hyphen (meaning an inclusive range).
Retrieval Method
If the integration framework displays Retrieval, define a method.
Retrieval Adapter
Select the adapter the integration framework uses to retrieve the inbound data. The available
options depend on the selected inbound channel. To display the adapters, click the […] button.
The following adapters are available:
● DI API
Data interface of SAP Business One
● JDBC
Database request
● WSAS
Web Services Solicit Response
● HTTA
HTTP call
● FILI
Public
© 2017 SAP SE or an SAP affiliate company.
All rights reserved 25
File inbound
Retrieval Type
Select the protocol type for data retrieval. The values depend on the selected retrieval adapter.
To select a value, click the […] button. The following values are available:
● Object
Object call, retrieval adapter is DI API
Object call, retrieval adapter is service layer for SAP Business One, version for SAP HANA
● Service
Service call, retrieval adapter is DI API)
● SQL
SQL statement, retrieval adapter is JDBC
● Call
Retrieval adapter is FILI, WSAS, HTTA
[Details]
Depending on the selected retrieval adapter and retrieval type, click the button to enter more
details. The integration framework requires details for the following retrieval types:
● Service
● JDBC SQL
● Incoming RFC Call
The integration framework needs details to perform a call to retrieve inbound data from the sender
system. Note that no details are necessary for a DI API object. For a DI API service call, enter the
service call details.
This data retrieval performs only the retrieval of the inbound data. If you want to retrieve additional
data or information from the sender system or from another external system, do not perform such
calls during the inbound phase. Define calls in the scenario step processing phase instead.
For more information, see section 3.3.
Public
© 2017 SAP SE or an SAP affiliate company.
All rights reserved 26
JDBC Call Details
Retrieval Statement
Define the SQL statement for data retrieval. You can use $key. The integration framework
replaces the variable with the value handed over by the B1 event.
The integration framework supports the following placeholders in your SQL statement:
● Use $Top as a placeholder for the top value.
● Use $BlockNo as a placeholder for number of the block.
● Use $StartTime as a placeholder for an identifier, if you want to retrieve data using a
timestamp. The integration framework sets the initial timestamp to 2006-10-01
00:00:00. In any further data retrieval the integration framework sets the $StartTime to
the last retrieved time.
● Use $EndTime as a placeholder. The integration framework sets it to the current
timestamp.
Clear Statement
Enter the SQL statement to clear the data after retrieval in the database table. This is optional.
Set, for example, the flag from N for new to P for processed.
The integration framework supports following the placeholder in your SQL statement:
Use $where as a placeholder for the where clause calculation.
Block Size
If you want to retrieve data blocks from the database table, enter the block size. Enter a number
greater than zero. If you use the $Top placeholder in your SQL statement, the integration
framework replaces it with this value.
Key(s)
The field is optional. You need it, if you use the $where parameter in the Clear Statement field.
If you enter more than one key field, separate the entries by comma.
For more information, see the Timer-Triggered Database Inbound document
Public
© 2017 SAP SE or an SAP affiliate company.
All rights reserved 27
Filter Invalid XML Characters
To filter invalid XML characters from database fields, select the checkbox.
To define settings valid for all SQL calls performed in a scenario package, you can do the
following:
1. Create the sqlcfg.xml document in the base directory of the scenario package.
For the xxx.<package>, provide the document in the following place in the BizStore:
/com.sap.b1i.vplatform.scenarios.design/vPac.xxx.<package>/sqlcfg.xml
2. In the XML document, enter the following:
<sqlconfig xmlns="urn:com.sap.b1i.vplatform:entity">
<filterInvalXMLChar>true</filterInvalXMLChar>
</sqlconfig>
If you are using explicit settings in XSL transformation atoms, you overlay the general setting.
[HANA]
To enter the SQL statement for SAP HANA, click [HANA].
Service Identifier
Define the service identifier of the B1 service, you want to call.
For more information, see the DI API help.
Request Method
Define the name of the request method.
For more information, see the DI API help.
Request Structure
Define the name of the request structure.
For more information, see the DI API help.
Request Keys
Public
© 2017 SAP SE or an SAP affiliate company.
All rights reserved 28
Define the key names of the request method. Usually, the key name in the request structure differs
from the key name in the event, both values are necessary. Define the keys in format
requestkey(eventkey).
For more information, see the SAP Business One DI API help.
3.2.4 Inbound Formatting for Flat Files and Files with Field-Offset
Definitions
If the integration framework calculates the formatting based on an external control document, click
the [Formatting] button to enter the required information. Formatting is relevant for incoming flat
files that the integration framework transforms to XML files, based on regular expressions.
Formatting is also relevant for a file with field-offset definitions. For delimiter-separated files, you
can select to consider or ignore empty fields.
Skip Empty
If you have defined the csv payload type to handle delimiter-separated files, use the parameter
to define the handling of empty fields.
● If you set the value to true, the integration framework ignores empty fields when
converting the file to XML format.
● If you set the value to false, the integration framework creates tags for empty fields in the
XML file. This is the default.
Public
© 2017 SAP SE or an SAP affiliate company.
All rights reserved 29
Format Control Document
The format control document contains XML tag names and the structure. Click the Create Ctrl.
Doc button to provide the document in the base directory of the scenario step.
If you have enabled the embedded XML editor in the Configuration of Development Environment
function, click the button and edit the format control document.
For incoming flat files, enter the technical inbound formatting settings, such as encoding, delimiter,
wrapchar and payload type in SLD. For setting up a file system, see the Operations Guide, section
File System
Public
© 2017 SAP SE or an SAP affiliate company.
All rights reserved 30
3.4 Processing
3.4.1 The Process Flow
After the inbound phase, the integration framework hands over the incoming message to the
process flow or BizFlow. The message runs through multiple steps and the process flow finally
hands the message back to the integration framework for further processing. The complete
process flow is one transaction.
In the process flow, you can define one or multiple flow atoms. Each atom hands over the
outbound message as an inbound message to the next atom. The next atom works based on this
inbound message and again creates an outbound message. The last atom in the flow creates the
correct message for the receiver system for asynchronous processing, or for the caller for
synchronous processing.
The integration framework offers many different flow atom types. The last flow atom in processing
is always the final transformation (atom0, final).
When opening the process user interface for a scenario step for the first time, the integration
framework generates a simple flow, consisting of the final transformation step. For asynchronous
processing between a sender and a receiver system, this is often sufficient. The only required
development is the adjustment of the generated XSL document (atom0.xsl). By default, the
generated XSL document copies the message one-to-one.
Public
© 2017 SAP SE or an SAP affiliate company.
All rights reserved 31
3.4.2 The Integration Framework Message Format
The XML message that the integration framework processes from one flow atom to the next, is
always a well formed integration framework message. It consists of a header and a body section.
The header contains process control information, the body contains the payload. Inside the body,
different payload sections are available. The main payload sections are the following:
The T (trigger) and S (sender) payload sections are available at the beginning of the process flow.
The final transformation creates the R (receiver) payload section at the end of the process flow.
At runtime, each flow atom adds outbound information as an additional payload section to the
body of the integration framework message. Each flow atom has a unique identifier, starting with
atom, followed by a sequential number, for example, atom1, atom2, and so on. Access each
payload section using the absolute path or by using the identifier.
In the upper right corner, the tool bar provides the following functions:
[Test]
Opens the test environment
For more information, see the Testing and Debugging the Process Flow section of this guide.
Refresh
Refreshes the user interface
Remove XSL documents that are no longer part of the flow. If you create a new XSL
transformation atom (xform), the integration framework creates an XSL document in the BizStore.
If you delete the transformation atom in the flow definition, the integration framework does not
delete the assigned XSL document. In this way, the integration framework prevents deleting your
work. The function allows deleting XSL documents without assignments to XSL transformation
atoms.
[VarL]
Create and change local variables for the scenario step
[VarG]
Create and change global variables for the scenario package the scenario step is assigned to.
[PropL]
Create and change local properties for the scenario step.
[PropG]
Create and change global properties for the scenario package the scenario step is assigned to.
Save the current window size. To save the window size, select Maintenance → Cfg Dev
Environment → Store Resized Window. This is only possible, if your browser supports the
function.
Public
© 2017 SAP SE or an SAP affiliate company.
All rights reserved 33
The integration framework displays the icon of the inbound or sender system type that triggers
the scenario step. To display documentation for the inbound channel, click the icon.
If the scenario package contains an individual step for error handling, the integration framework
displays the red icon.
The integration framework displays the icon for the outbound system type or receiver of the
message. If you have defined a synchronous scenario step, the integration framework does not
display the icon. To display documentation for the outbound channel, click the icon.
To display available atoms in the integration framework, select Maintenance → System Info →
[Functions] → Available Process Atoms.
The green and red icons display the result of the plausibility check for the transformation atom. If
values are missing or inconsistent, the integration framework displays the red icon, otherwise the
integration framework displays the green icon.
Public
© 2017 SAP SE or an SAP affiliate company.
All rights reserved 34
Moving Atoms
To select an atom, click the icon. The integration framework displays the selected atom in a red
frame.
If you click a branch or for-each atom, you select a complete sequence of atoms. You can move
the selected atom or sequence to another place in the flow. Another click on the icon deselects
the atom or sequence of atoms. To move the atom to another position in the process flow, click
the grey arrow in the atom that is the new predecessor of the selected atom.
To edit an atom, click the icon. Each atom type has an individual user interface with specific
attributes.
To delete an atom, click the button. If you click the button in a branch of a for-each atom, you
delete the complete sequence of atoms.
Adding an Atom
To add an atom on the right side, click the [Add] button.
With the [Add] button that is only available in a path for conditional processing, you add a new
path to the branch atom. If you have selected another atom or sequence and the integration
framework displays it or them in a red frame, you move this atom or sequence with the [Add]
button to this place.
The integration framework generates the start and end atom. The atoms indicate the start and
the end point of a process flow of the scenario step.
Above the start atom, the integration framework displays the scenario step and the dataset name
where the integration framework has saved the scenario step in the BizStore. The [Add] button
allows you to add a new atom in this place. To display the BizFlow in XML format, click the
[View] icon.
If it is necessary to call the receiver system before handing over the data, for example, for data
enrichment, you cannot use the option.
Public
© 2017 SAP SE or an SAP affiliate company.
All rights reserved 36
Running in the Receiver Context
The [R] icon indicates that the integration framework processes the BizFlow in the context of
the receiver system after receiver determination. Consider that if you process a message to
multiple receiver systems, the integration framework processes the BizFlow multiple times.
This option is necessary, if you must call the receiver system before handing over the data. Click
the [S] button to change the setting to [R] or vice versa.
By default, the integration framework processes all atoms one after the other. If you design steps
in the process flow, the integration framework ensures that it processes the steps in exactly this
order.
NOTE
Note that one scenario step is one transaction. That means, that you cannot save
information at runtime and no subsequent atom can rely on this information. However,
you do not need saved information. Use the message or memory variables to hand over
information between atoms.
Conditional processing allows you to process information based on conditions in the message.
Define the conditions as XPath expressions.
Public
© 2017 SAP SE or an SAP affiliate company.
All rights reserved 37
You can use multiple path atoms and one otherwise atom. The integration framework processes
all path atoms for which the condition is true. The unbranch atom continues processing when
the integration framework has processed all path atoms.
NOTE
Note that this is different from xsl:choose. It only processes the first true condition.
The integration framework works in parallel mode; the processing order of different
paths is random.
The integration framework processes the otherwise path, if none of the path conditions
is true. If you click the radio button in the lower right corner of the otherwise atom, the
integration framework always processes the otherwise path. This can be very useful to
keep the original message, in case the original message is lost in the processing path.
Branch Identifier
The read-only field displays the name of the corresponding branch atom. The integration
framework generates the name.
Path Identifier
The read-only field displays the number of the current path. Note that the number does not
indicate the processing order of multiple path constructs. The integration framework generates
the number.
XPath Expression
Define which part of the message the integration framework hands over to the path processing
and the condition to process this path. You cannot use variables or properties for this XPath
expression. You must declare the full path. For example, the
/*[/vpf:Msg/vpf:Body/vpf:Payload[./@Role='S']/inbound/flag='true'] XPath
hands over the complete message of the sender system under the condition that
/inbound/flag=’true’ in the message. If the expression is too complex, run a transformation
beforehand. Add a transformation atom before the branch, which calculates a simple flag that you
can check instead.
The unbranch atom consolidates the results of all path processing. To guarantee a well-formed
XML document, the unbranch atom adds an artificial root tag <bfa:unbranch> to the XML
document to consolidate all results from the different path sequences. Take this into account in
the first subsequent transformation atom. To correct the unbranch atom, open the edit user
interface for the subsequent transformation atom, click the [Generate] button and select the
Correct after Branch option.
Public
© 2017 SAP SE or an SAP affiliate company.
All rights reserved 38
<bfa:unbranch xmlns:bfa="urn:com.sap.b1i.bizprocessor:bizatoms"
schemaversion="1.0">
...
</bfa:unbranch>
The for-each atom allows you to run through iterations in the process flow, typically for all
elements of a particular type or name, depending on a condition. You can use it, for example, in
a transformation of an order to run through a processing for each order position.
The for-each construct consists of the for-each start atom and the join end atom. The join
atom continues processing when the integration framework has finished all iterations. The
integration framework usually works in parallel mode; the processing order of different iterations
not necessarily follows the order of the positions and is therefore random.
Identifier
The read-only field displays the identifier of the atom. The integration framework generates the
identifier.
Description
Enter a description for the atom.
Expression
Define, which parts of the message the integration framework hands over to for-each
processing. You cannot use variables for the XPath expression, declare the complete path. If the
expression is too complex, run a transformation atom prior to the iteration. Add a transformation
atom in front of the for-each atom. It calculates a simple flag that you can check instead.
The message in processing has the last element of the defined XPath expression as a root tag.
Following the example above, where the split expression for the for-each atom is
Public
© 2017 SAP SE or an SAP affiliate company.
All rights reserved 39
/vpf:Msg/vpf:Body/vpf:Payload[./@id='atom5']/Order/Position[./@status=
'ok'], each message inside the for-each processing has the root tag <Position>.
The join atom consolidates the results of all iterations. To guarantee a well-formed XML
document, the join adds the artificial <bfa:join> root tag to cover all results. Take this into
account in the first following transformation atom.
<bfa:join xmlns:bfa="urn:com.sap.b1i.bizprocessor:bizatoms"
schemaversion="1.0">
...
</bfa:join>
NOTE
Note that for-each processing invalidates the integration framework message. After
for-each processing, the original integration framework message is no longer
available. This is not a problem inside a path of a conditional processing, because the
otherwise path (always=true) keeps the message.
If you create a for-each loop, choose the complete for-each processing (branch, split – join,
xform). If you need another for-each loop inside an already existing path, use the simple for-
each processing (split - join).
The complete sequence guarantees that the integration framework consolidates all results and
the integration framework corrects the message to the integration framework message format.
Public
© 2017 SAP SE or an SAP affiliate company.
All rights reserved 40
The xform and final transformation atoms possess a corresponding XSL document. The
integration framework saves the XSL document in the base directory of the scenario step. To
display the XSL document, click the yellow area of the atom. To define the transformation, use an
XML editor. All transformation atoms are yellow.
The simple call atoms work with the values you define. The atoms are blue. An example for a
simple atom is the Call URL atom.
The complex call or conversion atoms send data to a conversion function or to a specific
interface. You need a predecessor transformation, which prepares the data that you send to the
function or interface. The complex call and conversion atoms are blue. An example is the Send
Email atom.
If you create a complex call or conversion atom, the integration framework asks you whether you
want to create a predecessor transformation atom. If you agree, the integration framework creates
two atoms. In the call atom, the integration framework inserts the link to the predecessor
transformation. The integration framework generates the correct schema for data handover to the
following call or conversion atom into the XSL document of the predecessor transformation atom.
If you want to generate the request schema later into the XSL document, open the edit user
interface of the transformation atom and click the [Generate] button.
For configuration details of the processing atoms, see the documentation of the specific atom.
As a working principle, you can assume that you are in the role of a printer and your task is to
print the correct outbound message for the receiver. The information you have is the current
inbound message, which the sender system or the predecessor atom provides. Like a printer you
cannot jump from the end to the beginning to add some data. Your development flow is strictly
sequential.
Your outbound is always an XML document, which means it has to follow the XML guidelines. An
XML document must have exactly one root tag. So you start your task by defining the root tag of
your outbound message. Each tag consists of a start and an end tag, which you provide in one
line or in two lines. Between the start and the end tag, provide a value or more nested start and
end tags.
Let us assume you have the following sender message and your task is to create the following
receiver message:
Public
© 2017 SAP SE or an SAP affiliate company.
All rights reserved 42
Sender Message Receiver Message
<SNDMsg> <RCVMsg>
<Header> <RcvHeaderFieldA<value01</RcvHeaderFieldA>
<Field1>value01</Field1> <RcvHeaderFieldB<value02</RcvHeaderFieldB>
<Field2>value02</Field2> <LineCount>2</LineCount>
</Header> <RcvLine pos="1">
<Lines> <First>value01</First>
<Line> <Second>value02</Second>
<LField1>value01</ LField1> </RcvLine>
<LField2>value02</ LField2> <RcvLine pos="2">
</Line> <First>value03</First>
<Line> <Second>value04</Second>
<LField1>value03</ LField1> </RcvLine>
<LField2>value03</ LField2> </RCVMsg>
</Line>
</Lines>
</SNDMsg>
The XSL (eXtensible Stylesheet Language) below transforms the sender to the receiver message:
<RCVMsg>
<RcvHeaderFieldA><xsl:value-of select="SNDMsg/Header/Field1"/></RcvHeaderFieldA>
<RcvHeaderFieldB><xsl:value-of select="SNDMsg/Header/Field2"/></RcvHeaderFieldB>
<xsl:variable name="linecount" select="count(SNDMsg/Lines/Line"/>
<LineCount><xsl:value-of select="$linecount"/></LineCount>
<xsl:if test="$linecount>0">
<xsl:for-each select="SNDMsg/Lines/Line">
<RcvLine>
<xsl:attribute name="pos"><xsl:value-of select="position()"/></xsl:attribute>
<First><xsl:value-of select="./LField1"/></First>
<Second><xsl:value-of select="./LField2"/></Second>
</RcvLine>
</xsl:for-each>
</xsl:if>
</RCVMsg>
Procedure
1. Create the <RCVMsg></RCVMsg> root tag.
2. To start defining the message, create the <RcvHeaderFieldA> and
<RcvHeaderFieldB> header tags.
3. To insert the value of the sender message in between, use the <xsl:value-of> XSL
command.
This is the most important command.
4. In the select section of the command, enter the XPath statement that leads to the exact
location in the sender message from where you want to retrieve the value.
In our example the XPath is SNDMsg/Header/Fieldx.
5. To introduce the linecount variable, use the <xsl:variable> command.
6. Assign the number of lines in the sender message that are equal to the number of tags with
<Line> name between the <Lines> tags to the variable.
7. Again, describe the location using the count(SNDMsg/Lines/Line) XPath statement.
8. To complete the header information, create the <LineCount> tag and place there the value
gathered by the variable.
Public
© 2017 SAP SE or an SAP affiliate company.
All rights reserved 43
9. Define a variable with $, followed by the name of the variable.
10. Provide the lines of the message. Provide a line only, if there is at least one line in the
sender message. The condition in XSL is the <xsl:if> command.
NOTE
Be careful when using special characters, such as <, >, &.
Do not use >, but the > sequence instead.
11. Another important XSL command is the <xsl:for-each> command. It allows you running
through multiple sections in a message. In the example, we run through all lines, again the
sections are defined by an XPath statement. For each of the sections, create the
<RcvLine> tag and with the pos attribute to which you assign the current position number,
using the position() function.
12. Create the <First> and <Second> tags and assign the values of the sender message.
Use the <xsl:value-of> XSL command. You currently define inside the for-each
section. Address the location of the value relative to the section you are in. Define the XPath
using ./LFieldx. . addresses the current tag.
XSLT Library
Select the library you want to use
[Load Docu]
Public
© 2017 SAP SE or an SAP affiliate company.
All rights reserved 44
To open the documentation, click the [Load Docu] button. The documentation displays available
templates with a short description. The templates names start with the b1ilib. abbreviation,
followed by the name.
In the beginning, the integration framework displays the include command. Use the statement
from the documentation and write it to the appropriate place in your XSL stylesheet.
NOTE
Without the include instruction, the template is not accessible at runtime and the
integration framework throws a runtime error.
To display a function, click the name, and the integration framework displays the information. For
example, to display detailed information about the b1ilib.today_minus template, click the
name. it provides information about how to call the function, a detailed description, the
parameters, the default settings and an example how to use it. You can copy the example and
paste it to your XSL stylesheet.
Public
© 2017 SAP SE or an SAP affiliate company.
All rights reserved 45
To navigate back to the overall list, click the [Back to Top] link. To use a template, copy the
example from the documentation and paste it to your XSL stylesheet.
[Test]
To test the library, click the button. The integration framework displays the test result for the
selected library.
<xsl:template name="transform">
Public
© 2017 SAP SE or an SAP affiliate company.
All rights reserved 46
...
</xsl:template>
<xsl:include href="../../com.sap.b1i.system.lib/xsl/string.xsl"/>
Public
© 2017 SAP SE or an SAP affiliate company.
All rights reserved 47
3.4.7 Variables, Properties and Tables
This section provides you with information about variables, properties that you can use for
scenario development
Using Variables, Properties and Tables in Parameter Fields of Atom User Interfaces
Variable Description
$string Placeholder for the value of a system variable, local variable, global
variable or local or global property.
$string(name) Placeholder for the value of a system variable, local variable, global
variable or local or global property.
The notation is only relevant in the context of an SQL call atom.
It provides explicit type casting to string to bypass the cross-side
scripting check for an SQL call.
$[name] Placeholder for the value of the first element with this name in the
integration framework message.
$[atomx/name] Placeholder for the value of the first element with this name in the
section, created by atomx in the integration framework message.
$(name) Placeholder for the value of a memory variable
$((name)) Placeholder for the value of a session variable
$*sysid.adapter.prop* Placeholder for the value of a property related to an SLD entry, for
example, $*0010000101.JDBC.url*
${tbl[row,col]} Placeholder for the value of a global table type 1. row can be a
number (for example, 2) or a condition (for example, 2=’233’ or
2=233)
${tbl[row,row,col]} Placeholder for the value of a global table type 2. row can be a
number (for example, 2) or a condition (for example, 2=’233’ or
2=233)
$?cfgpar? Placeholder for the value of an integration framework connectivity or
runtime parameter
Public
© 2017 SAP SE or an SAP affiliate company.
All rights reserved 48
For all notations in brackets or parenthesis, you can use a local or global variable in the notation
to define the values (name, atomx, tbl, row, col).
EXAMPLE
$(($name))
Fixed Values
● A fixed value always starts with #.
EXAMPLE
If you enter #0010000105, the integration framework hands over the 0010000105
value to the atom call.
● For parameter field names followed by the asterisk sign (*) in the user interface, you can
use variables and properties.
EXAMPLE
The $mySysId variable defines an XPath.
If you enter #$mySysId, the integration framework uses the XPath statement that is
defined for the mySysId variable and runs this XPath statement against the integration
framework message. The integration framework replaces $mySysId with the result
value of the XPath statement.
EXAMPLE
For a property, you define the following value: #123$Var1DEF
Var1=/vpf:Msg/vpf:Body/vpf:Payload[./@id=’atom2’]/root
Dynamic Values
Public
© 2017 SAP SE or an SAP affiliate company.
All rights reserved 49
Dynamic values do not start with #.
The integration framework interprets values that do not start with # as an XPath statement. The
integration framework runs the XPath statement against the integration framework message and
replaces it with the value of the XPath.
If you want to mix fixed values and XPath statements, use the concat XPath function.
EXAMPLE
concat(’ABC’,/vpf:Msg/vpf:Body/vpf:Payload[./@id=’atom5’]/root/@att1,’D
EF’)
Atom References
In many atoms, you can use an atom reference. An atom reference links to the result of a
predecessor transformation atom to pick up the request document that the current atom needs
to send to the call or to define call properties.
You can define an atom name, the sender system string, or a valid SysId.
Variables
$*xxxxxxxxxx.B1DI.b1Server*
$*xxxxxxxxxx.B1DI.licenseServer*
$*xxxxxxxxxx.B1DI.company*
$*xxxxxxxxxx.B1DI.dbType*
$*xxxxxxxxxx.B1DI.dbUser*
Public
© 2017 SAP SE or an SAP affiliate company.
All rights reserved 51
$*xxxxxxxxxx.B1DI.dbPassword*
$*xxxxxxxxxx.B1DI.userName*
$*xxxxxxxxxx.B1DI.password*
$*xxxxxxxxxx.B1DI.language*
$*xxxxxxxxxx.B1DI.isTrust*
$*xxxxxxxxxx.B1DI.jcoPath*
$*xxxxxxxxxx.B1DI.diProxyHost*
$*xxxxxxxxxx.B1DI.diProxyPort*
$*xxxxxxxxxx.B1DI.proxyHost*
$*xxxxxxxxxx.B1DI.proxyPort*
Variables
$*xxxxxxxxxx.FILI.filePattern*
$*xxxxxxxxxx.FILI.Encoding*
$*xxxxxxxxxx.FILI.Delimiter*
$*xxxxxxxxxx.FILI.WrapChar*
$*xxxxxxxxxx.FILI.PayloadType*
$*xxxxxxxxxx.FILO.filePattern*
Variables
$*xxxxxxxxxx.JDBC.driver*
$*xxxxxxxxxx.JDBC.url*
$*xxxxxxxxxx.JDBC.username*
$*xxxxxxxxxx.JDBC.password*
Variables
$*xxxxxxxxxx.HTTA.destProtocol*
$*xxxxxxxxxx.HTTA.destHost*
$*xxxxxxxxxx.HTTA.destPort*
$*xxxxxxxxxx.HTTA.destPath*
$*xxxxxxxxxx.HTTA.query*
$*xxxxxxxxxx.HTTA.proxyHost*
$*xxxxxxxxxx.HTTA.proxyPort*
$*xxxxxxxxxx.HTTA.method*
$*xxxxxxxxxx.HTTA.authentication*
$*xxxxxxxxxx.HTTA.user*
$*xxxxxxxxxx.HTTA.password*
$*xxxxxxxxxx.HTTA.user2query*
$*xxxxxxxxxx.HTTA.password2query*
$*xxxxxxxxxx.HTTA.trustStoreURI*
Public
© 2017 SAP SE or an SAP affiliate company.
All rights reserved 52
$*xxxxxxxxxx.HTTA.keyStoreURI*
$*xxxxxxxxxx.HTTP.associatedSrvIP*
Variables
$*xxxxxxxxxx.RFCA.applicationSever*
$*xxxxxxxxxx.RFCA.client*
$*xxxxxxxxxx.RFCA.user*
$*xxxxxxxxxx.RFCA.password*
$*xxxxxxxxxx.RFCA.language*
$*xxxxxxxxxx.RFCA.systemNumber*
$*xxxxxxxxxx.RFCA.maxConnections*
$*xxxxxxxxxx.RFCA.gatewayServiceNumber*
$*xxxxxxxxxx.RFCA.gatewayHost*
$*xxxxxxxxxx.RFCA.senderPartner*
$*xxxxxxxxxx.RFCA.senderPort*
$*xxxxxxxxxx.RFCA.receiverPartner*
$*xxxxxxxxxx.RFCA.receiverPort*
$*xxxxxxxxxx.RFCP.applicationSever*
$*xxxxxxxxxx.RFCP.client*
$*xxxxxxxxxx.RFCP.user*
$*xxxxxxxxxx.RFCP.password*
$*xxxxxxxxxx.RFCP.language*
$*xxxxxxxxxx.RFCP.systemNumber*
$*xxxxxxxxxx.RFCP.maxConnections*
$*xxxxxxxxxx.RFCP.gatewayServiceNumber*
$*xxxxxxxxxx.RFCP.gatewayHost*
$*xxxxxxxxxx.RFCP.programID*
$*xxxxxxxxxx.RFCP.unicode*
Variables
$*xxxxxxxxxx.WSAN.destProtocol*
$*xxxxxxxxxx.WSAN.destHost*
$*xxxxxxxxxx.WSAN.destPort*
$*xxxxxxxxxx.WSAN.destPath*
$*xxxxxxxxxx.WSAN.query*
$*xxxxxxxxxx.WSAN.proxyHost*
$*xxxxxxxxxx.WSAN.proxyPort*
$*xxxxxxxxxx.WSAN.authentication*
$*xxxxxxxxxx.WSAN.user*
$*xxxxxxxxxx.WSAN.sslTrustStorePassword*
$*xxxxxxxxxx.WSAN.password*
$*xxxxxxxxxx.WSAN.sslTrustStorePath*
$*xxxxxxxxxx.WSAR.associatedSrvIP*
$*xxxxxxxxxx.WSAS.destProtocol*
Public
© 2017 SAP SE or an SAP affiliate company.
All rights reserved 53
$*xxxxxxxxxx.WSAS.destHost*
$*xxxxxxxxxx.WSAS.destPort*
$*xxxxxxxxxx.WSAS.destPath*
$*xxxxxxxxxx.WSAS.query*
$*xxxxxxxxxx.WSAS.proxyHost*
$*xxxxxxxxxx.WSAS.proxyPort*
$*xxxxxxxxxx.WSAS.authentication*
$*xxxxxxxxxx.WSAS.user*
$*xxxxxxxxxx.WSAS.password*
$*xxxxxxxxxx.HTTA.trustStoreURI*
$*xxxxxxxxxx.HTTA.keyStoreURI*
The following table gives you an overview about variables, values, properties and tables. It
describes, where you can define them, how you can assign values, where they are valid and
where you can use them.
Definition Assign Scope Usage
Values
System Predefined by the integration framework Internally Everywhere Atom user
variables during interfaces
processing
Local Scenarios, Step Design Atom user Fixed by Scenario Access in
variables Processing [VLocal] interface design or step XSL
[VarL] dynamically coding or
Global Scenario Scenarios – Atom user based on the All scenario in the
variables Package Step Design - interface inbound steps of a atom user
Design - Processing [VarG] message scenario interface
Definitions [VGlobal] package to define
Memory In XSL <xsl:variable name=”mem1” Programmatic Scenario the atom
variables select0”document(‘/com.sap.b1i.in ally during step parameter
ternal.xc/xml/ipobag.xml?mem1=ABC process flow s
’)”/>
Session In XSL coding (authentication and/or process Existing with
variables flow) the first
<xsl:variable name=”mem1” incoming
select0”document(‘/com.sap.b1i.in HTTP call of
ternal.xc/xml/sessioninfo.xml?ses a scenario
s1=ABC’)”/> package,
accessible
for all
scenario
steps,
triggered by
synchronous
HTTP.
Expires with
the session.
Message Tags inside the XSL coding Scenario
value step
Global Scenario Scenario package design – Default from All scenario
properties package Processing [PGlobal] design or steps of a
design - customized scenario
Definitions based on package
customer
definitions
Public
© 2017 SAP SE or an SAP affiliate company.
All rights reserved 54
Definition Assign Scope Usage
Values
during
scenario setup
Local Scenarios, Scenario package design – Default from Scenario
properties Step Design Processing [PLocal] design or step
Processing customized
[PLocal] based on
customer
definitions
during
scenario setup
SLD Predefined in the integration framework SLD Everywhere
properties maintenance
user interface
Config Maintenance – Cfg Runtime and Customer
properties Maintenance – Cfg Connectivity definition
Global Scenarios – Package Design - Definitions Customer All scenario
tables definition steps of a
during setup scenario
package
Public
© 2017 SAP SE or an SAP affiliate company.
All rights reserved 55
3.4.7.2 System Variables
System variables are predefined. The following system variables are available:
Variable Description
$msg Addressing the root tag of the message provided by the sender system
$now Current time in HH:MM:SS format
$today Current date in YY-MM-DD format
The following variables are only relevant for session-based login using HTTP to access user
information. You can only access the variables at runtime; they are not available in the test
environment. The values depend on the settings in authentication processing.
Variable Description
$userid Identifier of the user that is logged in
$username Name of the user that is logged in
Scope
System variables always exist.
Value Assignment
The integration framework assigns values to the variables at runtime directly before it triggers the
process flow. The integration framework sets the values for the system variables at the beginning
of the transaction based on system timestamp or based on settings in the authentication.
Examples
● In scenario step processing, you define the data retrieval using an SQL statement and in
the where-clause you define the value of the primary key for which entry you want to
retrieve the data. The data can be found in a specific place of the inbound message.
● During setup, you define a filter criterion for the receiver system based on a value in the
incoming message. You use the variables in XPath statements or other processing
instructions, such as SQL statements with a leading $, similar to using variables in XSLT.
Public
© 2017 SAP SE or an SAP affiliate company.
All rights reserved 56
runtime before it triggers the process flow. The XPath statement can therefore access all data in
the message, which is available at this point in time.
Variable Value
gvar1 #any text
gvar2 #001
gvar3 ’001’
gvar4 001
gvar5 concat($gvar2,$gvar3,string($gvar4))
gvar6 number($gvar2)+number($gvar3)+$gvar4
gvar7 $msg/root/@flag
gvar8 /vpf:Msg/vpf:Header/vpf:Sender/@ObjId
gvar9 concat($gvar7,$gvar8,$gvar5)
To provide values for local variables, you have the following options
Variable Value
gvar1 any text
gvar2 001
gvar3 001
gvar4 1
gvar5 0010011
gvar6 3
gvar7 true
gvar8 myobject
gvar9 truemyobject0010011
Scope
Local Variables are only valid for the scenario step for which you define them.
If you define a variable as a local and as a global variable, only the local variable is valid. You can
use all variables in the complete process flow. Local variables are available in the header of the
integration framework message.
Public
© 2017 SAP SE or an SAP affiliate company.
All rights reserved 57
<Msg ... >
<Header>
...
<Variables>
<var id="mystring" value="value"/>
...
By default, the integration framework generates local variables into the XSL stylesheet of a
transformation atom. This allows you to directly access them in the XSL coding.
To optionally deactivate the generation, select Maintenance → Cfg Dev Environment → Generate
Variables to XSL).
Value Assignment
The integration framework assigns the values to the variables at runtime, directly before triggering
the process flow.
The values for local variables can be fixed literals defined at design time, or the integration
framework dynamically sets them based on the incoming message.
In the XSL coding you can directly access the value of a local variable using $, the leading vp
abbreviation, and the name of the variable, for example, <xsl:value-of
select="$vpmystring"/>. It is a prerequisite that you have activated the generation into
the XSL document. You can also use the incoming message in the following way: <xsl:value-
of select="/vpf:Msg/vpf:Header/vpf:Variables/vpf:var[./@id='mystring']/@value"/>.
In the atom user interface, you can enter local variables similar to the XPath notation with $name.
In a parameter field, you can use the same variable multiple times and you can combine them
with other variables, properties, and so on.
Example
#select * from TABLE where key1=’$myVar1’ and key2=’$myVar2’
NOTE
To avoid cross-site scripting, the integration framework checks variables in an SQL
statement of an SQL call atom at runtime. If the variable is set in quotations marks
(apostrophe), the integration framework handles it as a string, otherwise as a number. If
the variable is not in quotation marks and not a number, the integration framework
replaces the value with NaN. If you use a variable, for example, for a table name, you
can avoid this behavior by explicitly type-casting the variable to a string using
$string(variable-name).
Public
© 2017 SAP SE or an SAP affiliate company.
All rights reserved 58
3.4.7.4 Global Variables
Use global variables in the design and setup of a scenario package to address variable values in
the inbound message. Global variables are valid for the scenario package and all steps assigned
to the package.
You can add and delete global variables. You can enter explicit values (literals) or XPath
expressions. At runtime, the integration framework sets the variables before triggering the process
flow. The XPath statement can access all data in the integration framework message that is
available at this point in time.
Variable Value
gvar1 #any text
gvar2 #001
gvar3 ’001’
gvar4 001
gvar5 concat($gvar2,$gvar3,string($gvar4))
gvar6 number($gvar2)+number($gvar3)+$gvar4
gvar7 $msg/root/@flag
gvar8 /vpf:Msg/vpf:Header/vpf:Sender/@ObjId
gvar9 concat($gvar7,$gvar8,$gvar5)
You have the following options to provide values for global variables:
Variable Value
gvar1 any text
gvar2 001
Public
© 2017 SAP SE or an SAP affiliate company.
All rights reserved 59
Variable Value
gvar3 001
gvar4 1
gvar5 0010011
gvar6 3
gvar7 true
gvar8 myobject
gvar9 truemyobject0010011
Scope
Global variables are valid for all scenario steps of a scenario package. Local Variables are valid
for the Scenario Step in which you define them.
If you define a variable as local and as global variable, the local variable wins. You can use all
variables in the complete process flow. Global variables are available in the header of the
integration framework message.
By default, the integration framework generates global variables into the XSL stylesheet of a
transformation atom. This allows you to directly access them in the XSL coding. To deactivate the
generation, select Maintenance → Cfg Dev Environment → Generate Variables to XSL.
Value Assignment
The integration framework assigns values to the variables at runtime directly before it triggers the
process flow. The integration framework assigns values for global variables using literals during
at design time or dynamically at runtime based on the incoming message.
In the XSL coding, access the global variable value using $, the leading vp abbreviation and the
name of the variable in the following way: <xsl:value-of select="$vpmystring"/>. You can
use it, if the generation into the XSL stylesheet is active or by using the incoming message
(<xsl:value-of
select="/vpf:Msg/vpf:Header/vpf:Variables/vpf:var[./@id='mystring']/@value"/>)
.
In the atom user interfaces you can note the variables similar to the XPath notation using $name.
In a parameter field, you can use one variable multiple times and you can combine the variables
with other variables, properties, and so on.
Example
#select * from TABLE where key1=’$myVar1’ and key2=’$myVar2’
Public
© 2017 SAP SE or an SAP affiliate company.
All rights reserved 60
NOTE
To avoid cross-site scripting, the integration framework checks variables in an SQL
statement of an SQL call atom at runtime. If the variable is set in quotations marks
(apostrophe), the integration framework handles it as a string, otherwise as a number. If
the variable is not in quotation marks and not a number, the integration framework
replaces the value with NaN. If you use a variable, for example, for a table name, you
can avoid this behavior by explicitly type-casting the variable to a string using
$string(variable-name).
Memory Variables
Developers use memory variables at design time to hand over messages between multiple XSL
transformations. In the process flow, all transformation stylesheets have read and write access.
You can also use memory variables as placeholders for parameter definitions in an atom user
interface.
Session Variables
Session variables are only available for scenario steps that the integration framework processes
in a synchronous HTTP call where the scenario step runs in a session. The integration framework
typically sets the session variables in the authentication phase and in the process flow, you can
access the values. All transformation stylesheets have read and write access in the process flow.
You can also use session variables as placeholders for parameter definitions in an atom user
interface.
Definition
In the integration framework a container is available for memory variables and for session
variables. The name of the session container is sessioninfo, the name for the memory
container is ipobag.
The definition of a in memory variable happens by adding a variable to the container. You can do
this in the stylesheet of a transformation atom or during authentication specifying a variable using
the xsl:variable command. Choose any variable name for this.
Public
© 2017 SAP SE or an SAP affiliate company.
All rights reserved 61
Scope
Memory variables exist for the scenario step in which you define them. You can use memory
variables in the process flow.
Session variables exist with the first incoming HTTP call of a scenario package and you can
access them in all scenario steps triggered by synchronous HTTP calls. Session variables expire
with the session expiration. They are the only variables you can use to communicate between
different scenario steps inside one session.
Value Assignment
You assign memory variables and session variables with the same statement as the definition.
In XSL coding, access the value of a variable using the following XPath statements:
<xsl:value-of select="document('/com.sap.b1i.internal.xc/xml/ipobag.xml')/xci:ipo-bag
/xci:key[./@name='mem1']/@value)"/>
<xsl:value-of
select="document('/com.sap.b1i.internal.xc/xml/sessioninfo.xml')/xci:session-
info/xci:key[./@name='sess1']/@value)"/>
In the atom user interfaces, use memory variables in parenthesis $(name), session variables in
double parenthesis $((name)). In a parameter field, you can use a variable multiple times.
Combine a variable with other variables, properties, and so on.
Example
#select * from TABLE where key=’$(myMemVar)’
Example
#select * from TABLE where key=’$((sess1))’
<Msg…>
<Header>
…
</Header>
<Body>
<Payload Role=”T” Type=”Handover”>…</Payload>
<Payload Role=”S”> …</Payload>
<Payload Role=”X” id=”atom1>
…
</Payload>
…
<Payload Role=”X” id=”atomn>
…
</Payload>
<Payload Role=”R” id=”atom0”>
<cache.list xmlns=””>
<cache.del count=”0”/>
<cache.deactive count=”0”/>
<cache.active count=”0”/>
<jobs.count=”0”/>
<cache.list/>
</Payload>
</Body>
</Msg…>
Any transformation atom can create any kind of XML structure, for example, the following, which
is then immediately available as a payload section after atom processing:
<root>
<myheader>123</myheader>
<positions>
<posdef>definitions</posdef>
</positions>
</root>
Scope
Once the integration framework has created the section, it is part of the message until the end of
the process flow. After processing, you can always access the information using the message
log, if the message log is switched on.
Value Assignment
The integration framework assigns values in the transformation atom that creates the data
section. No subsequent transformation can change it.
Public
© 2017 SAP SE or an SAP affiliate company.
All rights reserved 63
Using Message Values in the Process Flow
You can access the data section of any predecessor atom in your XSL coding and as a
placeholder in the atom user interface in the parameter definition. All parameters supporting the
message values are marked with *.
In the XSL coding, access any value of a predecessor data section using XPath statements. The
following XPath statement shows how to access data, produced by atomx, based on the example
above.
<xsl:value-of
select="/vpf:Msg/vpf:Body/vpf:Payload[./@id=’atomx’]/root/myheader
In the atom user interfaces, you can access element values from such a data section using the
message values with a leading $ and the name in brackets. You can define the name of an
existing element or filtered to a particular atom output section. In a parameter field, you can use
a message value multiple times and you can combine it with other variables, properties, and so
on.
Example
#select * from TABLE where key1=’$[myheader]’ or
key2=’$[atomx/posdef]’
Definition
The SLD properties are predefined in the integration framework repository. The integration
framework provides so called SysTypes that are linked to active and passive adapters. You define
the connectivity with the corresponding properties.
Public
© 2017 SAP SE or an SAP affiliate company.
All rights reserved 64
SysType (System Type) Active Adapter Passive Adapter
T.AnySystem CRON
E.AnySystem SMTP, MAIR
Scope
SLD properties are always available. They are saved in an XML document in the BizStore
repository. At runtime, the values are available in the processed integration framework message
for all scenario steps.
Value Assignment
When you set up the customer environment, you create the required entries in SLD selecting SLD
→ Create System. When you select a SysType, the integration framework requests the required
properties to access the system using the linked adapters.
<xsl:variable name="sysiddoc"
select="document('/com.sap.b1i.system.sld.directory/SysId.xml/0010000101(Id)')"/>
<xsl:variable name="url"
select="$sysiddoc/sim:SysId/sim:ConnectivityList/sim:Connectivity
[./@ConnectivityTypeId='JDBC']/sim:Parameter[./@Key='url']/@Value"/>
Example
#select * from TABLE where key=’$*0010000101.JDBC.url*’
Definition
To define general environment settings, use config properties. There are two types of config
properties, the connectivity parameters and the runtime parameters.
Scope
Config properties always exist. They are saved in an XML document. At runtime, the values are
available in the processed integration framework message for all scenario step.
Value Assignment
When you set up the customer environment, define the parameters by selecting Maintenance →
Cfg Connectivity and Maintenance → Cfg Runtime.
In XSL coding you can access the config property values with the following XSL coding:
Public
© 2017 SAP SE or an SAP affiliate company.
All rights reserved 66
<xsl:value-of
select="document('/com.sap.b1i.vplatform.ide/mode/mode.xml')/vpf:vPlatform/vpf:smtppwd"/>
In the atom user interfaces, add a config property using $ and the name of the property wrapped
with the ? character.
Example
#select * from TABLE where key=’$?Connectivity.SendEmail:SMTPServer’
or key=’$?Runtime.B1iHTTPPort?’
Definition
To define global properties, select Scenarios → Step Design → Processing → PGlobal or
Scenarios → Package Design → Definitions.
You can add and delete global properties and you can maintain the default values and
enumerations for the properties. Default values are explicit values (literals) only.
To define a literal, enter the value. The integration framework interprets numeric values as
numbers, it deletes leading zeroes. Explicitly mark the string as a string, such as for prop2.
Public
© 2017 SAP SE or an SAP affiliate company.
All rights reserved 67
[Details]
To add a description, enumerations, or to define a property as a password, click the [Details]
button.
Description
Add a description. The integration framework displays it as quick info text on the setup user
interface when the customer enters his or her values for the properties.
Enumeration
You can define an enumeration. It is a list of allowed values. Separate the values by * (asterisk).
Add an asterisk after the last value. In the setup user interface, the integration framework provides
a dropdown list for the customer. The customer can select one of the defined values.
Password
To define a property that is a password, select Password. If you have already entered a default
value, or you have defined enumerations, the integration framework removes the values. There
are no default values for passwords. In scenario setup, the partner or customer enters a valid
password. When the user enters the password, the integration framework conceals the value and
displays dots instead.
/com.sap.b1i.vplatform.scenarios.design/vPac.<name>/vProp.xml
<vProp>
<prop id="prop1" value="_WorkingArea" enum="" desc=""/>
<prop id="prop2" value="'00'" enum="" desc=""/>
<prop id="prop3" value="2;" enum="" desc=""/>
<prop id="prop4" value="Synchronous Insert" enum="Synchronous Insert*Synchronous
Update*" desc="This Is the fourth property" pwd="false"/>
</vProp>
Scope
Global property definitions are available in the vProp.xml document in the scenario design area
of the BizStore. At runtime, the values are available in the processed integration framework
message for all scenario steps that belong to the scenario package.
By default, the integration framework generates the global properties into the XSL stylesheet of a
transformation atom. It allows you to access the properties from your XSL coding.
To deactivate the generation, choose Maintenance → Cfg Dev Environment → Generate
Variables to XSL.
Public
© 2017 SAP SE or an SAP affiliate company.
All rights reserved 68
Value Assignment
To define property default values at design time, choose Scenarios → Step Design → Processing
→ PGlobal or Scenarios → Package Design → Definitions. When you set up a scenario package
for a customer, you can overwrite the default values in scenario setup. To open the scenario setup
user interface, choose Scenarios → Setup → [Data Mgt.] → Global Properties.
If enumerations exist for the property, the integration framework enables the selection button […]
to open a list with enumeration definitions, for example, for prop4.
In XSL coding, access the value of a global property directly by entering $, the vp abbreviation
and the name of the property (<xsl:value-of select="$vpprop1"/>) if the generation into
the XSL is active, or by using the incoming message (<xsl:value-of
select="/vpf:Msg/vpf:Header/vpf:Properties/vpf:prop[./@id='prop1']/@value"/>).
In the atom user interfaces you can note the global property similar to the XPath notation with
$name. In a parameter field you can use a global property multiple times and you can combine
the property with other variables, properties, and so on.
Example
#select * from TABLE where key=‘$prop1’
Public
© 2017 SAP SE or an SAP affiliate company.
All rights reserved 69
3.4.7.10 Local Properties
Use local properties, if you cannot code a fixed value. This can, for example, be the case, if you
provide your integration development to many customers and each of them needs a different
setting or you want to allow your customer to frequently change the settings. At design time, you
introduce the properties, optionally with a default value and enumerations. During setup the
customer sets his or her values and the scenario works accordingly. Use local properties instead
of global properties, if they are only valid for a scenario step of a scenario package.
Definition
To define local properties choose Scenarios → Step Design → Processing → PLocal.
You can add and delete local properties and you can maintain the default values and
enumerations for the properties. Default values are explicit values (literals) only.
[Details]
To define a description and enumerations, click the button.
Description
Add a description. The integration framework displays it as quick info text in the user interface
when the customer maintains his or her values for the properties.
Enumeration
You can define an enumeration. It is a list of allowed values. Separate the values by * (asterisk).
Add an asterisk after the last entry. In the setup user interface, the integration framework provides
a drop-down list for the customer. The customer can select one of the defined values.
Password
If you want to define a property that is a password, select Password. If you have entered a default
value, or you have defined enumerations, the integration framework removes the values. Only in
scenario setup, the partner or customer enters a valid password. When the user enters the
password, the integration framework conceals the value and displays dots instead.
Public
© 2017 SAP SE or an SAP affiliate company.
All rights reserved 70
Scope
Local properties are valid for the scenario step. The integration framework saves them in an XML
document. At runtime, the values are available in the processed integration framework message
for the scenario step.
By default, the integration framework generates the local properties into the XSL stylesheet of a
transformation atom. It allows you to access the properties from your XSL coding as a variable.
To deactivate the generation, choose Maintenance → Cfg Dev Environment → Generate
Variables to XSL.
Value Assignment
At design time, you define property default values. To open the scenario step design user
interface, select Scenarios → Step Design → Processing → PLocal. When you set up a scenario
package for a customer, you can overwrite the default values. To open the scenario setup user
interface, select Scenarios → Setup → [Data Mgt.] → Local Properties.
The integration framework generates the user interface based on your definition at design time.
The integration framework displays the selection buttons […] to open a list with enumeration
definitions and displays the description text in the explanation area of the user interface.
In the atom user interfaces, you can note the local property similar to the XPath notation with
$name. In a parameter field you can use a local property multiple times and you can combine it
with other variables, properties, and so on.
Example
#select * from TABLE where key=’$prop1’
Public
© 2017 SAP SE or an SAP affiliate company.
All rights reserved 71
3.4.7.11 Global Tables
Use the global table function, if defining properties does not cover what you need. Whenever you
need multiple entries, each with a set of values instead of a single value, introduce a global table
of level 1. Global tables of level 2 support a structure of a 1:n relationship. You can define a set
of values for parent and child segments. An example is a list of values, depending on
combinations of sender and receiver systems.
Definition
● To define global tables, select Scenarios → Package Design → Definitions → Global
Tables and click the button.
● In the input field, enter the name of the global table and click Select.
The integration framework opens the following user interface:
You can define multiple tables. When the integration framework displays the user interface, it
displays a table with one header entry for each global table definition for the scenario package.
In the header entry, you define the structure of the global table. To expand the definition, use the
(Expand) button to display all field definitions for the table. To collapse the entry, click the
(Collapse) button.
You can compare global tables to database tables. The integration framework allows you, similar
to a database system, defining the structure of the table or tables. Additionally, you can define
the user interface for editing the table. Later, it allows the customer to enter his or her values in
scenario setup.
Public
© 2017 SAP SE or an SAP affiliate company.
All rights reserved 72
You define the structure definition and the definition of the setup user interfaces in this definition
user interface. The definition of the setup user interface supports labels, selections, enumerations,
plausibility checks and defining field lengths. The integration framework generates the user
interface for editing the table based on the definitions. You can always change the definitions and
regenerate the tables. The integration framework does not overwrite existing values.
Buttons
[Generate]
To create new tables and update existing tables, click the button.
[Clear]
To delete tables for which definitions no longer exist, click the button.
Position Section
Variable Description
Level Defines, if the field belongs to the header or the child segment.
Possible values are 1 and 2. The integration framework generates
the value.
Field Field number
The integration framework generates the value.
Disp Len Input field length
Max Len (maximum With the maximum length, cut the field entry to the defined length.
length)
Selection The integration framework provides inbuilt selection functions, for
example, systems in SLD.
Use them to provide users with a selection list. You can also define
enumerations. Enter values, separated by *.
Label Enter a text. The integration framework displays it as the field label.
Public
© 2017 SAP SE or an SAP affiliate company.
All rights reserved 73
Variable Description
Check You can use plausibility checks, for example, isNumber to verify the
field entries.
Scope
Global tables are valid for a scenario package. You can access such a global table in all scenario
steps of the package. The integration framework saves global table definitions to an XML
documents in the scenario package design path in the BizStore:
/com.sap.b1i.vplatform.scenarios.design/ vPac.name/vTbl.name.xml
Value Assignment
To edit global tables, select Scenarios → Setup → [Data Mgt]. → Table:vTbl.name.
The customer can maintain his or her values in scenario setup either in the setup wizard or in the
Data Management section.
The picture above displays the edit function for a global table of type 1.
Compare the generated user interface for editing with the definitions user interfaces. You find that
the generated user interfaces are based on the definitions above.
To add a record to the table, click the button. If it is an edit user interface for a global table of type
2, the button is available on both levels.
Global tables are saved as XML documents in the scenario package design path in the integration
framework database:
/com.sap.b1i.vplatform.scenarios.design/ vPac.name/vTbl.name.xml
The XML structure shows an example for a global table of type 2 definition:
You can also use global tables in the parameter definition of an atom. All parameters supporting
global tables are marked with *.
In the atom user interfaces, you can note the global tables following the supported syntax. In a
parameter field, you can use one global table entry multiple times and you can combine entries
with other variables, properties, and so on.
Expression Description
${tbl[row,col]} Placeholder for the value of a global table of type 1.
row can be a number (for example, 2) or a condition (for
example, 2=’233’ or 2=233)
${tbl[row,row,col]} Placeholder for the value of a global table of type 2.
row can be a number (for example, 2) or a condition (for
example, 2=’233’ or 2=233)
Example
#select * from slsp where key1=’${myTable3[1=0010000115,1=555,2] or
key2=’${myTable1[1=0010000112,2]}
Public
© 2017 SAP SE or an SAP affiliate company.
All rights reserved 75
3.4.7.12 SysType Properties
SAP delivers properties for SLD system types. You can add your own properties to the system
types.
Definition
To display properties delivered by SAP and define properties for system types, select SLD →
SysType Properties.
The integration framework displays property names and default values for system type
properties that SAP delivers. You cannot change properties delivered by SAP.
[Add]
If you want to add system type properties for a system type, scroll down to the system type and
click the [Add] button for the system type.
The integration framework adds a new entry at the end of the property list.
[Details]
To provide property details, click the [Details] button.
The integration framework opens a user interface. You can edit the following:
● Name
Enter the property name.
Public
© 2017 SAP SE or an SAP affiliate company.
All rights reserved 76
● Default Value
If you want to provide a default value for the property, enter the default value.
● Description
Enter a description for the property.
● Enumeration
If you want to define a list of values, where the user selects one, enter the values in the
following way:
Value1*Value2*Value3*
[Delete]
To delete a system type property, click the [Delete] button. You can only delete properties that
are not delivered by SAP.
Scope
SysType properties always exist. They are saved in an XML document. At runtime their values
are available in the processed integration framework message for all scenario steps.
Value Assignment
At design time you can define default values.
To define property default values at design time, select SLD → SysType Properties. When you
set up a scenario package for a customer, you can overwrite the default values. To open the SLD,
select SLD, select the system for which you want to define values and select the [Properties]
button.
If you have developed a scenario in SAP Business One integration for SAP NetWeaver prior to
the 9.0 release, you can change the representation of SysType properties. Select Scenarios →
Step Design and select the B1iSN88 Compatibility Mode checkbox. In this way, you do not have
to change how you access the properties in the process flow.
Public
© 2017 SAP SE or an SAP affiliate company.
All rights reserved 77
Definition
To define criteria fields, select Scenarios → Package Design → Definitions → Criteria Fields.
You can add or delete criteria fields.
Name
Enter the criteria field name.
Selection Path
Enter the selection path (XPath) to the field. Use $msg for the incoming message.
Filter Type
You can define the following:
● Sender: In scenario package setup, the integration framework only displays this criterion in
the sender filter section. You can only set a value in this section.
● SenderReceiver: In scenario package setup, the integration framework only displays this
criterion in the SenderReceiver filter section. You can only set a value in this section.
● Both: In scenario package setup, the integration framework displays this criterion in the
Sender filter and in the SenderReceiver filter section. You can set a value in both sections.
Default Step
You can define the following:
● By default, the integration framework sets the value to All. In scenario setup, the
integration framework displays the criteria field for all scenario steps in scenario package
setup and you can set values.
● If you select a scenario step, the integration framework displays the criteria field only for the
scenario step and you can set a value.
Default Value
Enter a default value. The integration framework provides this value in the scenario package
setup as a default value for the criteria field. You can overwrite the default value in scenario
package setup.
Description
Enter a description for the criteria field.
Public
© 2017 SAP SE or an SAP affiliate company.
All rights reserved 78
To delete a criteria field definition, click the button.
Scope
Criteria fields are valid for all scenario steps of the scenario package for which you have defined
them.
Value Assignment
Assign values to the criteria fields in the setup configuration wizard in the third Filter Definitions
step.
For more information, see the Operations Guide Part 1, section Setting Up a Scenario Package
At runtime, the integration framework only processes messages that fulfill the filter definitions
you have defined. You can find messages that do not fulfill the filter criteria in the Filtered
section of the message log.
Public
© 2017 SAP SE or an SAP affiliate company.
All rights reserved 79
3.4.8 Testing and Debugging the Process Flow
The integration framework provides a test and debugging environment for the process flow. To
access the test environment click the [Processing] button in scenario step design and click the
[Test] button in the graphical flow designer. The integration framework opens the following user
interface:
If you have activated and run the scenario step and you have selected the Record Test
Message at Runtime checkbox in the Scenario Development Configuration user interface
(Maintenance → Cfg Dev. Env.), the rectest.xml test message is available for selection.
Transaction ID
The integration framework displays a transaction ID after you have clicked the [Run] button.
[Run]
To start the test, click the button.
[Analysis]
To analyze the scenario step on B1iP level, click the button. The integration framework displays
the following:
Public
© 2017 SAP SE or an SAP affiliate company.
All rights reserved 80
[Debug]
To display the graphical flow designer in debug mode, click the button. The integration
framework displays, for example, the following:
The process flow in the illustration above belongs to the sap.sample.000 scenario step of the
sap.B1if.Samples scenario package.
For each atom, click the red arrow to display the inbound message for the atom. This enables
you checking how the message changes running through the process flow. The step picks up
files from a folder. In the folder, there are five files available. In for-each processing, select
one of the five calls, you want to display.
Additionally, the integration framework displays the processing time in milliseconds and the size
of the message.
The integration framework displays the test result with status and more detailed information.
[Result]
To display the processing result, click the button.
[Clear]
To clear integration framework processing from transactions that have ended in INCOMMIT
status, click the button.
Public
© 2017 SAP SE or an SAP affiliate company.
All rights reserved 81
3.5 Outbound
3.5.1 Outbound User Interfaces
To open the outbound definition, in the scenario step definition user interface, click the [Outbound]
button.
Outbound Channel
To select the technical adapter for the outbound phase, click the […] button. The following
channels are available:
● Business Process
The integration framework hands over data to a business process
● SAP Business One
The integration framework inserts data using the SAP Business One DI API, the SAP
Business One service layer, version for SAP HANA or SQL statements
● SAP ERP
The integration framework hands over data using a remote function call.
● Flat File
The integration framework saves data in a flat file in the file system.
● Web Service
The integration framework hands over data using a Web service call
● HTTP Call
The integration framework hands over data with an HTTP call.
● Database
The integration framework hands over data using SQL.
● Void
The integration framework does not use the outbound phase and does not hand over any
data.
Outbound Format
To select the outbound format, click the […] button. The values depend on the selected outbound
channel. The following values are available:
Public
© 2017 SAP SE or an SAP affiliate company.
All rights reserved 82
● DI Object, DI Service, SQL, B1i SQL, service layer for SAP Business One, version for SAP
HANA
● rfc for the SAP ERP outbound channel
● file for the Flat File outbound channel
● ws for the Web Service outbound channel
● http for the HTTP outbound channel
● jdbc for the Database outbound channel
● queue for business process
● void for the Void outbound channel
The selected format corresponds to the message that the scenario step processing creates. For
more information about the correct outbound schema, see the integration framework reference
guide 05 about the available APIs.
Details
The read-only field displays detailed settings. To enter detailed settings, click the [Details] button.
Successor
The integration framework allows you to define another scenario step which the integration
framework calls after it finishes the processing of the current scenario step. You can use this
mechanism to send back result information to the sender system, for example. Select a scenario
step from the list. The list displays only scenario steps, assigned to the same scenario package
and that have the Predecessor inbound type.
Successor Mode
This field is only relevant if you trigger another scenario step when the integration framework has
finished the processing of the current scenario step. Enter the type of information you are
interested in:
● Status information only
The integration framework hands over the summarized execution status of the predecessor
scenario step to the successor step.
Example
<?xml version="1.0"?>
<vPStatus offline.id="" succ="sap.ScenarioStep2"
ReceiverObjectTypeId="" SenderObjectTypeId="sap.ScenarioStep1"
ReceiverSysId="0010000100" SenderSysId="0010000000"
EndTimeStamp="20140423142735" BeginTimeStamp="20140423142734"
SubMessageId="1" B1IMessageId="140423142734739111450A3B26D56049"
Phase="final" Message="Processing completed" no="0000"
status="success" xmlns=""/>
● Status information and payload
The integration framework hands over the execution status and the integration framework
message payload content to the successor step.
● Status information and complete message
The integration framework hands over the execution status and the complete integration
framework message to the successor step.
Public
© 2017 SAP SE or an SAP affiliate company.
All rights reserved 83
Error Inbox Resend Mode
If you process your scenario step on the receiver side, you can determine, from which place in
processing the integration framework resends messages in the error inbox. You have the
following options:
● Resend from outbound phase
● Resend including mapping
[Details]
Depending on the selected outbound channel and outbound format, enter some more details. To
define the details, click the [Details] button. The integration framework requires details for the
following outbound channels and formats:
● Outbound channel is Flat File
● Outbound channel is Web Service
● Outbound format is DI object
● Outbound format is DI service
● Outbound format is service layer (SL) object
● Outbound format is SQL
● Outbound channel is Database
Outbound Format
To define the outbound format of the flat file, click the […] button. The following values are
available:
● xml (XML representation)
● dsv (delimiter-separated value)
● txt (offset-defined values)
Character Encoding
Optional character encoding is necessary to apply the technical representation of characters
according to the country or system-specific needs. The following entries are available: ISO 8859-
1, ISO 8859-2, ISO 8859-3, ISO 8859-4, ISO 8859-5, ISO 8859-6, ISO 8859-7, ISO 8859-8, ISO
8859-9, ISO 8859-11, ISO 8859-13, ISO 8859-14, ISO 8859-15, ISO 8859-16, US-ASCII,
Public
© 2017 SAP SE or an SAP affiliate company.
All rights reserved 84
EBCDIC, Shift-JIS, EUC-JP, ISO-2022, GB2312, EUC-KR, Big5, Unicode UTF-7, Unicode UTF-
8, Unicode UTF-16, ISO-10646-UCS2, ISO-10646-UCS4. The default is ISO-8859-1.
Byte-Order-Mark
If you select the field, the integration framework creates a byte order mark at the beginning of the
text stream that signals the order of the text stream.
Method
To define the method for handing over data to B1, click the […] button. The following values are
available:
● Synchronous insert
● Synchronous insert with fallback to update
● Synchronous update
● Synchronous update with fallback to Insert
● Synchronous delete
Object Identifier
To define the identifier of the SAP Business One object, click the […] button. For more information,
see the SAP Business One DI documentation.
Key Name
Define the name of the primary key. If there are multiple keys, enter the keys separated by
comma. For more information, see the SAP Business One DI documentation.
Public
© 2017 SAP SE or an SAP affiliate company.
All rights reserved 85
Update Policy
For update, you can either delete and insert a record, or use the default behavior.
Service Identifier
To define the service identifier of the B1 service, you want to call, click the […] button. For more
information, see the SAP Business One DI API documentation.
Request Structure
Define the name of the request structure. For more information, see the SAP Business One DI
API documentation.
Request Keys
Define the key names of the request method. For more information, see the SAP Business One
DI API documentation.
Public
© 2017 SAP SE or an SAP affiliate company.
All rights reserved 86
Web Service Details
SOAP Action
By default, the integration framework hands over an empty SOAP action. Some older Web
services require the definition of the called method using the SOAP action. For this purpose, you
can define the SOAP action in the outbound definition.
Public
© 2017 SAP SE or an SAP affiliate company.
All rights reserved 87
4 Obfuscating Development Content
To make your code difficult to read for human beings, use the obfuscation function.The software
is unintelligible but still functionally equivalent to the original code.
The integration framework allows you to obfuscate your individual scenario package content
and datasets, you have developed using your development prefix.
Prerequisites
Archive or export your scenario package content before obfuscating it. If you forget the
obfuscation key, you cannot undo this function.
● To archive your scenario package content, select Package Design → Tools → Save current
version to archive.
● To export your scenario package, select Scenarios → Export.
Obfuscation Key
Enter an obfuscation key. Use digits, upper-case, and lower-case characters for the key. The
key can have any length. A longer key improves the protection.
XSL Stylesheets
To obfuscate all XSL stylesheets of the scenario package, select this option.
After obfuscation, you cannot read the xform atoms any more.
BFD BizFlows
To obfuscate the bfd BizFlows of the scenario package, select the option.
Additional Datasets
Public
© 2017 SAP SE or an SAP affiliate company.
All rights reserved 88
To obfuscate additional datasets, select the checkbox. The integration framework identifies the
datasets by the development prefix, you have defined in the configuration function of the
development environment (Maintenance → Cfg. Dev. Env.). It searches the BizStore and
includes datasets that contain .<your_development_prefix>..
[Generate Skeleton]
Before obfuscating XSL stylesheets or bfd BizFlow documents, generate skeletons of all
scenario steps. The skeletons enable debugging of obfuscated content. If you generate
skeletons, the integration framework generates the vBIU.skeleton.bfd document in the
basic directory of the scenario package.
● To indicate obfuscated content in the scenario step, the start atom is orange:
….
● You can click the debug arrows to displays the message.
● You can display detailed information for all atoms delivered by SAP.
● Partner content in xform atoms, the path condition in the path atom, or the statements in an
SQL call remain unreadable.
[Obfuscation]
To obfuscate your scenario package content, click the button.
[Undo Obfuscation]
To undo obfuscation, click the button.
Public
© 2017 SAP SE or an SAP affiliate company.
All rights reserved 89
5 Developing an Individual Error Handling Step
5.1 Introduction
The integration framework provides a default error handling. To define settings for the default
error handling, select Maintenance → Cfg Error Handling.
On scenario package level, you can additionally define individual error handling steps that replace
the default error handling. If you define individual error handling steps, the integration framework
hands over the message to individual steps and deletes the message.
The message that the integration framework sends to the queue of your error handling step
contains the following information:
● All processing information until the error has happened.
● In the payload role S section, find all header attributes.
● In the ErrorInfos additional payload, find detailed error descriptions.
Use the information in the message to provide your individual error handling.
The inbound type, the outbound type and the number of receivers determine, which IPO steps
are involved in asynchronous message processing:
Inbound
The sender system triggering the inbound dispatcher, the inbound DB trigger, the inbound trigger
and the successor steps trigger the integration framework processing.
Processing
In processing, the inbound data retriever retrieves data from a database. The processing step
retrieves data from the sender system, for example, for SAP Business One inbound, and calls the
vBIU.
Distributor
The distributor step handles message processing for multiple receivers.
Outbound
The outbound step hands over message to the receiver system and to a successor step.
Public
© 2017 SAP SE or an SAP affiliate company.
All rights reserved 91
There is a difference between an IPO step and the IPO instance. Each IPO step can run multiple
times in parallel. A running IPO is an IPO instance. The IPO is typically set up per sender system
and in some cases per sender system and scenario step. Find information about the instance
granularity in the tables of each chapter below.
The inbound dispatcher IPO step supports the following inbound types:
Public
© 2017 SAP SE or an SAP affiliate company.
All rights reserved 92
Inbound Dispatcher Outbound Queue
System
Type IPO ID IPO Instance Queue Stream
SAP
Business
One INB_B1_EVNT_ASYN_EVT vP.<Sender>.in_BEAE Q.PRC_B1.<Sender> S.<vBIU>
SAP ERP INB_R3_IDOC_ASYN_XPT vP.<Sender>.in_RIAX Q.PRC_R3.<Sender> S.<vBIU>
INB_FI_EXST_ASYN_XPT vP.<Sender>.in_FEAX Q.PRC_Fix.<Sender> S.<vBIU>
INB_FI_EXST_ASYN_NAM vP.<Sender>.in_FEAN Q.PRC_Fin.<Sender> S.<vBIU>
File INB_FI_EXST_ASYN_FIX vP.<Sender>.in_FEAF Q.PRC_FIi.<Sender> S.<vBIU>
System INB_FI_EXST_ASYN_FSL vP.<Sender>.in_FEAL Q.PRC_FIf.<Sender> S.<vBIU>
Internal
Queue INB_IQ_INTQ_ASYN_QS vP.<Sender>.in_IQ.<vBIU> Q.PRC_QS.<Sender> S.<vBIU>
The table above displays the system types that trigger the inbound dispatcher, the related IPO
step identifiers, the IPO instances at runtime and the queues and streams the inbound
dispatcher writes to.
The inbound database trigger IPO step triggers the inbound data retriever IPO step, unless the
step still runs, because the inbound database trigger IPO step has triggered it before.
Public
© 2017 SAP SE or an SAP affiliate company.
All rights reserved 93
No default and individual error handling is available for the IPO step, because it does not handle
critical data processing.
The inbound data retriever IPO step has the following tasks:
● It retrieves the data from the database.
● It assembles the basic integration framework message with the database data in the S
payload section.
● It puts the integration framework message into an internal queue to trigger data processing.
● If the integration framework retrieves data from the database block by block, the IPO step
calls itself using an internal queue until it has retrieved all data.
5.3.6 Processing
The processing IPO step has the following tasks:
● It retrieves data from the sender, if applicable, for example, for SAP Business One inbound.
● If processing happens on the sender side, the processing IPO step calls the vBIU
(processing phase of the scenario step.)
● The integration framework optionally deletes the message from the inbound queue.
It depends on the settings for default error handling, whether the integration framework
deletes the message. To define the default error handling, select Maintenance → Cfg Error
Handling.
If you select an individual scenario step to handle errors, the integration framework deletes
the message from the queue, regardless of the default setting. It is the general concept that
the individual error handling step takes over the responsibility for erroneous messages. The
default error handling hands over the message to individual error handling, deletes the
message from the queue and processing continues. The individual error handling step is
responsible for correct processing and takes care that the information in the message is not
lost.
Public
© 2017 SAP SE or an SAP affiliate company.
All rights reserved 95
However, to overlay the above described behavior, define settings for the Async.
Processing: Overlay Default field.
For each scenario step of the package, you can select either to keep messages in the
queue or to delete messages from the queue.
The value of the Async. Processing: Overlay Default field displays for how many steps you
have selected individual settings.
5.3.7 Distributor
The integration framework only calls the distributor IPO step, if the message has more than one
receiver. The integration framework hands over the message to the processing IPO step
including the receiver list. The distributor IPO step performs the value mapping and hands over
the message to the first receiver system. Then, the integration framework puts the message
back into the queue triggering itself again for the next receiver.
Public
© 2017 SAP SE or an SAP affiliate company.
All rights reserved 96
Default Error Handling
If an error occurs, the integration framework triggers the following default error handling:
● The integration framework deactivates the distributor instance for one minute.
It avoids high load on the server.
● The integration framework writes an entry to the Failure section of the message log.
5.3.8 Outbound
The outbound IPO step hands over the generated payload to the receiver system. If the integration
framework performs processing on the receiver side, it calls the vBIU processing.
Public
© 2017 SAP SE or an SAP affiliate company.
All rights reserved 97
● In default error handling, the integration framework deletes the message from the inbound
queue.
To overlay the default behavior, create an error action for the scenario package, the
scenario step or the outbound phase, optionally in combination with sender and receiver
definitions.
To define the error action, select Maintenance → Cfg Error Handling → [Outbound Error
Actions], and select Keep in Inbound Queue.
● By default, the integration framework hands over the message to the error inbox.
The integration framework provides an error inbox for each receiver system. In the error
inbox, it collects messages that the receiver system has rejected.
● To change the default behavior, define an error action for a scenario package, a
scenario step or the outbound phase, optionally in combination with sender and receiver
system definitions.
To define the error action, select Maintenance → Cfg Error Handling → [Outbound Error
Actions], and select Don’t Send to Error Inbox.
● Alternatively, for your scenario package, deselect the Asynchronous Outbound: Error
Inbox.
● The integration framework runs a successor scenario step.
Each scenario step can have a successor scenario step that is triggered by an internal
queue. The integration framework triggers the successor step after it has finished the
outbound phase. If an error occurs in the outbound phase, it still triggers the successor step.
To define a successor step, select Scenarios → Step Design → [Outbound).
EXAMPLE
The sap.Xcelsius and sap.DATEV-HR scenario packages use this function. This
way, the integration with dashboards and Datev-HR is always available for all SAP
Business One company databases.
To create jobs, select Scenarios → Package Design → [Definitions] and select Job List.
Select an option, and the integration framework opens the user interface for job list definition,
either for adding a new SAP Business One company, or for removing a deleted SAP Business
One company:
In the input field, enter a number for the position of the job, and click [Select].
The integration framework adds Job 1 to the list:
To select the task, click the […] button, and select the Add new company to Scenario
Package configuration option. The other option is obsolete.
Public
© 2017 SAP SE or an SAP affiliate company.
All rights reserved 99
7 Defining Processes
If a scenario package contains scenario steps that run in both directions between sender and
receiver systems, you can use processes to assign scenario steps to a direction.
EXAMPLE
In the illustration above, the scenario package has three scenario steps. An incoming message
of the sender system type triggers message processing in scenario step A. The message that
processing hands over to the receiver system type leads to subsequent steps in the receiver
system type that trigger first scenario step B and then scenario step C.
If you have, for example, defined criteria fields for the scenario package, the setting of directions
simplifies the entry of filter definitions in the scenario setup wizard. The wizard only displays filter
definitions for the valid combinations of sender and receiver systems.
To define processes, select Scenarios → Package Design → [Definitions] and select Processes.
Public
© 2017 SAP SE or an SAP affiliate company.
All rights reserved 100
To select scenario steps for the Sender -> Receiver direction, click the […] browse button. Select
one or more scenario steps.
To select scenario steps for the Receiver -> Sender direction, click the […] browse button. Select
one or more scenario steps.
[Clear]
To remove all entries, click the button.
Result
If you define processes, the scenario setup wizard provides the option to apply the processes to
simplify the input of filter definitions.
The message that the integration framework sends to the queue of your message log step,
contains all information that the default message receives.
● In the <Payload Role="S"> section, in the <B1ifMsgLog> tag, find information that the
integration framework uses to display the default message log:
● SenderSysId
● SenderSysIdName
● SenderObjectTypeId
Public
© 2017 SAP SE or an SAP affiliate company.
All rights reserved 101
● ReceiverSysId
● ReceiverSysIdName
● BeginTimeStamp
● EndTimeStamp
● Status
● In the <ResultMessage> tag, the integration framework displays the result of message
processing.
● If the integration framework runs a synchronous scenario step, it creates one message
log entry.
● If the integration framework runs an asynchronous scenario step, it calls the message
log twice. The default message log only displays the message log for which Status is
not processing. Take this also into consideration when you create your individual
message log information.
Use an XSL transformation (xform) atom, to retrieve the information you want to use in your
individual message log.
Retrieve the information in the following way, for example for the sender system name:
<xsl:value-of
select="/vpf:Msg/vpf:Body/vpf:Payload[@Role='S']/B1ifMsgLog/@SenderSys
IdName"></xsl:value-of>
8.2 Defining the Individual Message Log Step for the Scenario
Package
To select a message log step and define settings for the individual message log, select
ScenariosPackage Design [Definitions] and select Message Log.
Public
© 2017 SAP SE or an SAP affiliate company.
All rights reserved 102
Call Log Step with Default Log Switched Off
To enable the individual log step to receive message log information, although the default
message log is switched off (Maintenance → Cfg MsgLog, Message Log not selected) select the
option.
[Search Key]
To define individual search keys that you can use in the message log selection, click the button.
For each scenario step of the scenario package, you can define two search keys. The search
keys are XPath expressions. In the XPath, you can use the following variables:
● $S for the sender message section
● $R for the receiver message section
● $T for the trigger message section
You can only use XPath statements using the variables, XPath statements without using the
variables are not supported.
At runtime, value mapping takes place after scenario step processing and before handover to the
receiver system or systems. If the integration framework finds tags in the receiver XML message
with one of the defined names, and value mapping definitions exist for the fields, the integration
framework maps the values according to the definitions.
If you use VOID outbound, use the Value Mapping atom to perform the value mapping in the
process flow.
To define fields in the outbound message for which the integration framework performs a value
mapping, select Scenarios → Package Design → [Definitions] →Value Mappings.
[Delete]
To delete a value mapping field, click the button. The integration framework deletes the field
from the list.
Result
During scenario setup, the administrator can define value mappings for the fields for sender and
receiver systems.
NOTE
As of integration framework version 1.22.9, the Java Runtime Environment (JRE) XML
processor is the default processor. If you create scenario packages, the option to select
an XML processor is no longer available.
Procedure
To change the processor, perform the following steps:
Public
© 2017 SAP SE or an SAP affiliate company.
All rights reserved 104
Scenario Package
● On scenario package level, the integration framework provides a function to save the design
definitions of the current version to archive. The integration framework creates the new
com.sap.b1i.vplatform.scenarios.archive dataset in the BizStore and a
subfolder with the name of the scenario package identifier. The integration framework adds
all scenario package design content to a ZIP file. The ZIP file has the name of the scenario
package plus the version of the scenario package.
● You can set the scenario package to a higher version and continue with development.
● If you need to go back to a previous scenario package version, use the Restore from
archive function. To retrieve an older version from archive, archive and delete the current
version in the integration framework.
● The integration framework provides a function to delete versions from archive.
To work with scenario package versions, select Scenarios → Package Design, click the Tools
button and select one of the following options:
● Save current version to archive
● Restore version from archive
● Delete version from archive.
Scenario Step
The integration framework supports a powerful version control for scenario steps. It allows
keeping multiple versions of the same scenario step in the framework environment. You always
have an active version relevant for setup and activation. The Version parameter displays the
version number. All other versions of the same scenario step are in the archive folder.
● Save current version to archive saves the current version to the archive folder. The
integration framework collects all documents of the scenario step and archives them in a
<step_name>.<version>.zip ZIP file. The integration framework system overwrites an
existing ZIP file with an identical name.
● Create new version allows you to create a new version for a scenario step. The version
number consists of three parts, separated by dot. The first part reflects the main version, the
second part the sub version and the last part reflects minor extensions in the step. The
integration framework calculates the version number. Before creating a new version,
consider saving the current version to the archive. You have the following options:
● Create a new minor version, for example, 1.0.1
● Create a new subversion, for example, 1.1.0
● Create a new main version, for example, 2.0.0
● Restore archived version restores a version from the archive. If you need to go back to a
previous version, the integration framework stores the current version to archive and then
let you select the version from archive.
NOTE
Note that each scenario step has a link to a scenario package. The link is part of the
restored version. If the link of an older, restored step is no longer valid, the integration
framework indicates it with a red light during the consistency check.
● Delete version from archive provides you with the function to clean up the archive
To work with scenario step versions, select Scenarios → Step Design, click the Tools button,
select Version Control and select one of the following options:
Public
© 2017 SAP SE or an SAP affiliate company.
All rights reserved 105
● Save current version to archive
● Create new version with the additional option to create a new minor, sub, or main version
● Restore version from archive
● Delete version from archive.
Documentation Delivery
To deliver the documentation with the scenario package, create a PDF document called
vPac.pdf and load it to the following place in the BizStore:
/com.sap.b1i.vplatform.scenarios.design/vPac.<name>/vPac.pdf
<name> is the name of your scenario step.
To upload the documentation, select Tools → Control Center → Maintenance → BizStore Upload
For more information, see the guide Development Environment, Document Handling, Uploading
a Document
Public
© 2017 SAP SE or an SAP affiliate company.
All rights reserved 106
User-Defined Authentication Identifier
To define an authentication procedure for a scenario package, enter an authentication identifier.
The integration framework creates a folder with the authentication identifier name in the
BizStore in the following place: com.sap.b1i.vplatform.scenarios.authen
Create all documents required for your authentication procedure in this folder.
User List
Select the user list for authentication from the BizStore. If you leave the field empty, the
integration framework uses the global user list for IPO step authentication of B1iP by default.
Find the global list in the following place in the BizStore:
com.sap.b1i.system.xc/xml/users_ipo.xml. The document for the user list must
conform to the com.sap.b1i.system.xc/xsd/users.xsd schema.
Session Timeout
Define the timeout of a pending HTTP session in minutes. The integration framework does not
establish a session for an empty or zero value.
Public
© 2017 SAP SE or an SAP affiliate company.
All rights reserved 107
To enforce a secure connection for incoming call, select true. If the caller does not use
HTTPS, the integration framework rejects incoming calls.
● false
If the incoming call can use HTTP, select false.
On_Session.xsl
Select an XSL document that describes where the session identifier is provided. This is only
relevant, if you do not use cookies.
On_Authenticate.bfd
If you have selected the user-defined (userdef) option for handing over the user name and
password, select a BizFlow that retrieves the authentication credentials. The execution profile is
SAPXML.
If you leave the field empty, the integration framework calls the stylesheet for any authentication
mode. The default retrieval mechanism searches for the first user and password tag in the
input message. The stylesheet gets the input message conforming to the
com.sap.b1i.system.xc/xsd/on_authenticate.xsd schema. The stylesheet returns
the message with credentials.
On_Authenticate Event.bfd
Select a BizFlow for authentication events, such as logon, logoff, timeout, and so on. The
BizFlow gets an input message conforming to the
com.sap.b1i.system.xc/xsd/on_authevent.xsd schema. The integration framework
performs the BizFlow asynchronously to the incoming action.
If you do not provide a BizFlow, refer to the authentication events provided in the user
administration.
Authentication.bfd
Select a BizFlow for the authentication validation. The integration framework calls the BizFlow
for the basic and the userdef authentication modes. If you leave the field empty, the
integration framework validates against the user list relevant for the IPO step. The BizFlow input
message must conform to the input message tag of the
com.sap.b1i.system.xc/xsd/on_authcheck.xsd schema. If the integration framework
rejects a user, it returns a negative or empty result. It returns 0 for a positive result. Cache the
result for later use. The integration framework checks again after N minutes to confirm the
check.
Public
© 2017 SAP SE or an SAP affiliate company.
All rights reserved 108
The standard authentications check whether the user name and password are available in the
SAP Business One company database and performs the call, if the check was successfully
performed.
Prerequisites
● In SLD, a system of H.AnySystem type or W.AnySystem type must be available for the
SAP Business One company database that you use for the authentication check. Leave all
entries of the H.AnySystem type or W.AnySystem type empty, except for the
associatedSrvIP field. Enter here the information that is available in the b1server field of the
SAP Business One company database SLD entry.
● In the incoming call, provide the user information in the following way:
● User: language/username/company or language\user\company
For example: en-US/manager/SBODemoDE
● Password: password
language
Provide the language abbreviation. The parameter is mandatory. The integration
framework removes leading and trailing spaces. If the parameter value does not fit the
enumeration, the integration framework uses the en-US default value.
cs-CZ, da-DK, de-DE, el-GR, en-CY, en-GB, en-US, en-SG, es-AR, es-CO, es-ES, es-
PA, fi-FI, fr-FR,he-IL, hu-HU, it-IT, ja-JP, ko-KR, nl-NL, no-NO, pl-PL, pt-BR, pt-PT, ru-
RU,sk-SK, sr-YU, sv-SE, xx-XX, zh-CN, zh-TW.
username
This is the user code of an SAP Business One user with the B1i license attached to
access SAP Business One remotely through the integration framework. The integration
framework removes leading and trailing spaces.
company
This is the name of an SAP Business One company database. The company database
must have an entry in the integration framework SLD. The name you provide must be
identical with the value of the company field of the SLD entry. The integration framework
uses the company database to verify the authentication for the user who requests
access. The parameter is case-insensitive. The integration framework removes leading
and trailing spaces.
password
Provide the password for the username.
The integration framework performs the following checks for the incoming call using the
technical B1i user:
● With an SQL call to the company database, the integration framework checks whether the
user defined in the incoming call is available.
● Using the AuthenticateUser method, the integration framework performs a DI call and
checks the user name and password in the company database.
If the authentication is successful, the integration framework returns an HTTP 200 response and
the response matching the request.
Public
© 2017 SAP SE or an SAP affiliate company.
All rights reserved 109
If the authentication is not successful, the integration framework returns an HTTP error code, for
example, 401 and an error message:
● b1i user wrong username or password
● wrong username or password
● not able to assign the associated B1 server
● name of B1 company db is empty
● user is empty
● password is empty
● not able to find the assigned user id in SAP Business One
● not able to find the system identifier of the associated B1 company
db
● error in B1 authentication check (DI call)
● unknown error in authentication
Public
© 2017 SAP SE or an SAP affiliate company.
All rights reserved 110
Appendix A. Table of Inbound Channels
Public
© 2017 SAP SE or an SAP affiliate company.
All rights reserved 111
System Inbound Mode
Channel (IPO) Type Trigger Mode Identification
Inbound for SQL data retrieval for a
scenario step, triggered via internal
queue
Public
© 2017 SAP SE or an SAP affiliate company.
All rights reserved 112
Appendix C. Table of Process Steps
vBIU System Type Process Step ID Phase Task Processing
INB_B1_EVNT_ASYN_EVT Inbound Event triggered asynchronous
PRC_B1 Processing Data Retrieval
PRQ_B1 Processing Data Distributor
SAP Business
One OUT_B1 Outbound Outbound
INB_R3_IDOC_ASYN_XPT Inbound IDOC triggered asynchronous
PRC_R3 Processing Data Retrieval
PRQ_R3 Processing Data Distributor
SAP ERP OUT_R3 Outbound Outbound
INB_DB_TIMR_DATA Timer-trigggered
RETRIEVER Inbound database inbound asynchronous
INB_DB_TIMR_ASYN_FIX Inbound Timer triggered asynchronous
Database OUT_DB Outbound Outbound
INB_FI_EXST_ASYN_XPT Inbound file exist triggered asynchronous
PRC_FIx Processing Data Retrieval
PRQ_FIx Processing Data Distributor
INB_FI_EXST_ASYN_NAM Inbound file exist triggered asynchronous
PRC_FIn Processing Data Retrieval
PRQ_FIn Processing Data Distributor
INB_FI_EXST_ASYN_FS Inbound file exist triggered asynchronous
PRC_FIf Processing Data Retrieval
PRQ_FIf Processing Data Distributor
INB_FI_EXST_ASYN_FIX Inbound file exist triggered asynchronous
PRC_FIi Processing Data Retrieval
PRQ_FIi Processing Data Distributor
INB_FI_TIMR_ASYN_XPT Inbound timer triggered asynchronous
PRC_FTx Processing Data Retrieval
PRQ_FTx Processing Data Distributor
INB_FI_TIMR_ASYN_FIX Inbound timer triggered asynchronous
PRC_FTf Processing Data Retrieval
PRQ_FTf Processing Data Distributor
File System OUT_FILE Outbound Outbound
HTTP INB_HT_CALL_SYNC_XPT Inbound Incoming HTTP call synchronous
Web Service INB_WS_CALL_SYNC_XPT Inbound Incoming HTTP call synchronous
INB_IQ_INTQ_ASYN_BIU Inbound vBIU triggered asynchronous
Predecessor PRQ_IQ Processing Data Processing
Public
© 2017 SAP SE or an SAP affiliate company.
All rights reserved 113
vBIU System Type Process Step ID Phase Task Processing
Internal Queue
INB_WS_CALL_ASYN_XPT Inbound triggered asynchronous
PRC_QS Processing Data Retrieval
Internal Queue PRQ_QS Processing Data Distributor
Void VOID Outbound Outbound
Public
© 2017 SAP SE or an SAP affiliate company.
All rights reserved 114
Copyrights, Trademarks, and Disclaimers
© Copyright 2017 SAP SE. All rights reserved.
Public
© 2017 SAP SE or an SAP affiliate company.
All rights reserved 115