Sepasoft MES Module Suite
![]()
Description
The SAP BAPI Action Block is specifically designed to interact with SAP. It can filter from a list of available schemas and map SAP database property fields to property fields in the chart (Chart Parameters and/or the selected B2MML schema for MES Objects, such as Operations Schedule, Operations Definition, Process Segment or Material). The resulting array can be accessed by other Blocks for creating decision-making expressions, modification via custom scripting, iterating through on a row-by-row basis, or creating MES Objects.
Connections
Two connections are required:
Input — (input) Receives execution control from the previous Block in the sequence. Unlimited input connections are allowed (spread across up to three available edges).
Output — (output) Passes execution control to the next Block in the sequence (typically an Iteration Block or a Save MES Object Block).
Properties
The optional Name and Description fields are included on most Blocks for clarity and documentation benefit. Note: The text in the Name field will also appear on the Block's icon on the Design Grid.
The Properties pane is used to configure the SAP data source and filtering parameters:
SAP BAPI Action Block Properties Pane
| Property | Description | ||
|---|---|---|---|
| Name | Name of the SAP BAPI Action Block (for local use within the chart). Naming Characters Allowed
| ||
| Description | Description of the block's function (optional, helpful for documentation purposes) | ||
| Destination | Selected Destination instance in the Interface for SAP ERP section of the Ignition Project Browser. The Destination is pre-configured to connect to an SAP hosting server. See SAP Destinations for details on creating a Destination for use with a SAP BAPI Action Block. | ||
| Remote Function Call Settings | |||
| SAP BAPI Options | Select whether to sort the list of available BAPI options alphabetically or hierarchically. The tree-structured list below will change based on the selection. | ||
| (list of available BAPI options) | The list of available BAPI options is displayed in a tree-structured list that can be expanded to locate and highlight the desired BAPI option. Clicking the Select button in the Selected BAPI row will populate the Selected BAPI field with the highlighted BAPI option). | ||
| Selected BAPI | Once a BAPI option is highlighted in the tree-structured list of available BAPI options above, clicking the Select button in the Selected BAPI row will populate the Selected BAPI field with the highlighted BAPI option. If you change to a new selection, the following warning message will appear (click Yes to change to the new selection or No to cancel and retain the previous selection). | ||
| Advanced Settings | |||
| RFC Type | Type of Remote Function Call to be performed:
| ||
| Queue Name | Fixed queue name or chart parameter. | ||
| Context - Stateful | Checkbox to indicate the session is 'stateful' (remembers states between sessions). | ||
| Context - End Session | Checkbox to indicate that the current 'stateful' session is to be terminated after execution of the block. | ||
| Session Name | The name of the 'stateful' session (can be a directly-entered string value or a Chart Parameter (e.g. @SAP_session_name). | ||
Stateful Sessions
|
For stateful sessions with BAPI Action or RFM Action Blocks, refer to Understanding Sessions. |
Non XML 1.0 Characters
|
Only XML 1.0 character codes are allowed with Business Connector. Characters that are returned from an ERP by the SAP BAPI Action Block and SAP RFM Action Block that are not included in XML 1.0 will be replaced with “□” (U-25A0 Black Square Unicode). The squares will be passed along with the data (including being saved with MES Object data), so it is up to the user to clean them from data being sent by the ERP. |
Schema Refreshing and Changes
Clicking the Refresh ( ) button will cause a re-fetch of both the input and output schemas. If both schemas still match what is currently selected for each in the Block, then a "Confirm" dialog box will appear.
- Clicking Yes will cause the Block to fetch fresh data.
- Clicking No will abort the refresh.
If either schema has been edited, an "Outdated Mapping" dialog box will immediately appear (without the need to press Refresh), with two choices on how to handle the schema mismatch, plus Cancel.
- Clicking Continue will apply all the mappings that are still valid and clean up the outdated mappings.
- Clicking Reset will clear all the saved data and mapping connections and then fetch a fresh copy of both schemas.
- Clicking Cancel will abort the refresh, allowing the user to manually fix the schema without losing saved data.
Usage
Connecting the SAP BAPI Action Block
- Drag an SAP BAPI Action Block onto the Design Grid (position to be the next block in the chart sequence).
- Click on the previous Block in the sequence and draw a Connector to the SAP BAPI Action Block (any available edge). This becomes the Input connection. Repeat for any additional input Blocks, if applicable (unlimited connections are allowed on up to three edges).
- Click on the SAP BAPI Action Block and draw a Connector (from any available edge) to the next Block in the sequence. This becomes the Output connection.
Configuring the BAPI Properties
To configure the SAP BAPI Action Block properties, use the SAP BAPI Action Block Properties Pane table above, as well as information from the following pages:
Basic steps to configure:
- Name the SAP BAPI Action Block.
- Choose a previously-created SAP Destination (see link above). The search tree area should populate with all available BAPIs from your selected SAP Destination (if not, then the connection to SAP has not been properly established).
- Select your searching method preference as either Hierarchical or Alphabetical (the latter choice is easier for finding your BAPI by name, regardless of its position in the hierarchy).
- Highlight your desired BAPI in the search tree.
- Press Select to retain the selection.
Example
Iteratively Create Material Definitions
This example chart collects a list of Material Definitions from an SAP database and creates an MES Material Definition object for each.
Start Block
A Chart Parameter called maxRows is used to limit the number of SAP entries to fetch from the SAP database. The number will be input into the chart during the chart execution function executeChart(chartPath, chartParameters, returnChartParameters).
| Sample Setting | Description |
|---|---|
| maxRows | Integer. Used to pass in to the chart the number of rows to fetch from the database. |
| b2mml_materials | B2MML array. Used to hold the entries aggregated by the Aggregation Block (one row per loop). |
| rows_aggregated | Integer. Used to return the count of how many rows were aggregated by the Aggregation Block. |
| rows_verify_no | Integer. Used to return the count of how many rows failed the Verify MES Object Block (row data was not a proper MES Object). |
| rows_decision_no | Integer. Used to return the count of how many rows failed the Decision Block (equation was False, so decision is "No"). |
SAP BAPI Action Block - Properties
This block fetches the Material Definitions from the specified SAP database. It is configured as follows:
A Destination called My SAP Server was previously configured in the Interface for SAP ERP section of the Global area in Designer:

The Remote Function Call section is configured to filter down to just the BAPI_MATERIAL_GETLIST module where the Material Definitions are stored:
| Property | Sample Setting | Description |
|---|---|---|
| Name | Get Materials | Name of the Block (available, if needed, for local use within the chart by other Blocks). |
| Destination | My SAP Server | Selected SAP Connector Destination (created in the Interface for SAP section of the Global area in Designer). |
| SAP BAPI Options (Hierarchical/Alphabetical) (tree of available BAPI options) | Alphabetical checkbox and Material/BAPI_MATERIAL_GETLIST | The two checkboxes decide how the tree of available SAP BAPI options below is sorted. Alphabetical is usually chosen if you know the name of the BAPI you want, else drill down to find it in Hierarchical mode. |
| Selected BAPI | (shows the selected BAPI) | Display only. Shows (and remembers) the selected BAPI after the Select button is pushed. |
| RFC Type | sRFC | Synchronous Remote Function Call (expects an immediate answer from the receiving system, else an error will be reported). |
| Queue Name | N/A |
SAP BAPI Action Block - Mapping
The Input tab of the SAP BAPI Action Block includes mapping for the Chart Parameter maxRows to be passed into the BAPI function call that the block makes to the SQL database (limits the number of entries fetched). There is also a requirement that MATNRSELECTION in BAPI_MATERIAL_GETLIST be restricted to positive integer values only.

The Output tab of the SAP BAPI Action Block includes mapping for MATERIAL → ID and MATL_DESC → Description. Note that it must first include a mapping connector at the parent level, to provide the block with a means of knowing the array sizes on both sides so it can map the connections properly. Each member of the BAPI_MATERIAL_GETLIST will be mapped into a B2MML array that includes Material Definition properties of ID and Description. These are collected, one at a time by the Aggregation Block in the iteration loop (into the Chart Parameter b2mml_materials), and then turned into MES Material Definition objects by the SAVE MES Object Block.

Iteration Block
This block increments a pointer to one row of data at a time in the data array selected in the Array Path field. For each row pointed to, control passes to the Block connected to its Next output. It accepts a return trigger input (Next Trigger) to increment the pointer to the next row. When there are no more rows in the selected data array, it will pass control to the Block connected to its Done output.
In this example, the path is to MaterialDefinition in the B2MML array, MATERIAL, which contains the ID and Description properties that the Aggregation Block will append, one row at a time, to Chart Parameter b2mml_materials (which the Save MES Object Block will later use to create the MES Material Definition Objects).
On each loop through the Iteration Block, the row pointer is incremented and control passes to the Decision Block that is connected to its Next output Connector.
Once all rows have been iterated through, control passes to the Save MES Object Block connected to its Done output.


Decision Block
In this example, the expression used to arrive at a 'True' decision is simply whether the last character in the ID property in the row currently being pointed to (by the Iteration Block) is equal to "8" (the asterisk is a wildcard that ignores all the preceding characters). If the ID ends in "8", control passes to the Verify MES Object Block connected to its True output. Otherwise, control passes to the Script Block connected to its False output.
Verify MES Object Block
This Block is used to test whether an array of data (or a row of data pointed to by an Iteration Block) contains appropriate information to successfully create an MES Object. It does not create the object.
In this example, if the row contains appropriate information required to successfully create an MES Object, control passes to the Aggregation Block connected to its Yes output, to be appended to the end of the current b2mml_materials array. If not, then control is passes to the Script Block connected to its No output.
Aggregation Block
This Block appends iteratively-collected data values, one per pass, into a user-created Chart Parameter.
In this example, b2mml_materials was created in the Start Block to hold the aggregated data. Chart execution control only passes into the Aggregation Block after it has successfully passed through the Decision Block (ID property ends in "8") and the Verify MES Object Block (data is determined to be sufficient to successfully create an MES Object).
After the row has been 'aggregated' (appended to the end of b2mml_materials), control passes back to the Iteration Block and the loop repeats with the next row.
Script Block - Connected to Decision Block
This script increments the Chart Parameter rows_decision_no any time the expression in the Decision Block resolves to False (which passes control to this Script Block).
Script Block - Connected to Verify MES Object Block
This script increments the Chart Parameter rows_verify_no any time the Verify MES Object Block resolves to No (which passes control to this Script Block).
Script Block - Connected to Aggregation Block
This script increments the Chart Parameter rows_aggregated immediately after the Aggregation Block completes its task (appending a row to b2mml_materials).
Script Block - Connected Last in the Iteration Loop
This Block has no scripting inside except for the pass instruction (which is a non-operation), so it does absolutely nothing! It is placed in the chart at its current position simply to make the Connectors exiting the three other Script Blocks flow nicely. Otherwise, they end up auto-routing strangely, making the chart more difficult to understand. Feel free to sprinkle empty Script Blocks as needed to keep your 'wiring' neat and self-explanatory.
Save MES Object Block
This block creates an MES Object for each entry in the selected RFM (the drop-down list Target will list all of the Action Blocks in the chart. The filtered RFM in the selected Action Block will be used to create the list of MES Objects). For this example, one MES Material Definition object will be created for each entry in the RFM selected in the "Get Materials" SAP RFM Action Block (up to the limit defined by the Chart Parameter maxRows).
| Property | Sample Setting | Description |
|---|---|---|
| Target | Get Materials | "Get Materials" is the data source selected from the drop-down list of blocks with available data (it's the only choice in this example). |
Executing the Chart
This example chart is being executed from a script within a Button component on an Ignition Designer window:
If "10" is entered into the Rows to Fetch text field, then when the Button is pressed:
- The number in the text field is loaded into numRows.
- The chart is executed, passing in numRows to the Chart Parameter maxRows in the Start Block, and listing three Chart parameters to include in the resulting object when chart execution concludes. Unlike the other two variants of .executeChart, the function will wait for chart execution to conclude so it can return a Python dictionary containing the Chart Parameters specified (in this example: rows_aggregated, rows_verify_no and rows_decision_no).
- The various counts are retrieved from the returned chart parameter object and printed to the Output Console.
The result of the chart execution is that ten rows are fetched from BAPI_MATERIAL_GETLIST in the SAP database and six MES Material Definition objects are created (those that have an ID that ends with "8", per the Decision Block expression):
Sepasoft MES Module Suite