Connectors > SAP® Advanced Event Mesh
Overview
ASAPIO integration Add-on facilitates the integration of supported SAP NetWeaver® systems with SAP Advanced Event Mesh (AEM). AEM is based on Solace PubSub+, therefore many settings are similar and you may find configuration values to be named “Solace” within this guide.
Add-on/component name | Type |
ASAPIO Integration Add-on – Framework | Base component (required) |
ASAPIO Integration Add-on – Connector for SAP® Advanced Event Mesh | Additional package |
Key features:
- Supports a wide range of SAP NetWeaver based systems, including SAP ERP, S/4HANA, BW, HCM and many more
- Out-of-the-box connectivity to SAP AEM broker
- Supported communication direction: Outbound, push-based
- Support for high-availability scenarios with a fallback broker
- Support for dynamic topics
- Mass data capable
- Switch between event-driven (single events) or batch mode (job-driven) calls
- Batch mode allows multi-threading with multiple SAP work processes
Pre-requisites
Create a broker instance
An instance of SAP Advanced Event Mesh, part of Integration Suite on SAP BTP is required.
Please follow available documentation from SAP or Community Blogs on how to create an AEM instance, e.g.:
Establish connectivity
To establish connectivity with the SAP Advanced Event mesh broker, please proceed with the following activities and refer to the specific chapter.
- Create RFC destinations to the SAP Advanced Event mesh broker in SAP system settings
- Set-up basic configuration to lay the foundation of using the connector
- Set-up connection instance to SAP Advanced Event mesh in ASAPIO Integration Add-on
- Endpoint configuration to define the topic data is sent to
- See article example outbound message for a simple example to test the connectivity
Create RFC destinations
Note: in case you have a HA setup with 2 brokers, create on destination for each
Create a new RFC destination of type “G” (HTTP Connection to External Server).
- Transaction: SM59
- Create new destination of type “G”
- Specify Target Host and Service No.(Port): endpoint for the SAP Advanced Event mesh
- Credentials or certificates for authentication can be specified on tab Logon & Security:
Browser specific way to get a certificate.
Note: This is just one option to get a certificate.
Step 1: Open your endpoint that is used in SM59 with your browser (here we used google chrome) and click on the padlock –> Connection is secure.
Step 2: Click on Certificate is valid.
Step 3: Got to the Details tab and Export the file in order to save it.
In the next step this certificate can be added to the Trust Store in SAP.
Add Certificates to Trust Store
- Transaction: STRUST
- Select Certificate List as used in RFC destination created above
- Click button Import certificate (1)
- Click button Add to Certificate List (2)
Set-up basic settings
Activate BC-Set
Business Configuration sets (BC-Set) contain customizing and configuration-related table entries that are not imported with the add-on.
- Transaction: SCPR20
- BC-Set includes:
- Configuration for cloud adapter
- Configuration for cloud codepages
- Definition of IDoc segments
- Activate the BC-Set with default values: /ASADEV/ACI_BCSET_FRAMEWORK_AEM
Configure cloud adapter
Add an entry for the connector to the list of cloud adapters:
- Transaction: SPRO
- Goto ASAPIO Cloud Integrator – Maintain Cloud Adapter. Add New Entry and specify:
- Cloud Type: name with which to reference this type of connector
- ACI Handler Class: /ASADEV/CL_ACI_SOLACE_HANDLER
Set-up Codepages
Specify codepages used in the integration:
- Transaction: SPRO
- Goto ASAPIO Cloud Integrator – Maintain Cloud Codepages
- Add New Entry and specify the code pages to be used:
Set-up connection instance
Create the connection instance customizing that ties together the RFC destination created earlier and the cloud connector type:
- Transaction: SPRO
- Goto ASAPIO Cloud Integrator – Connection and Replication Object Customizing
- Or go directly to transaction: /ASADEV/68000202
- Add New Entry and specify:
- Field Instance: a name for this connection in
- Field RFC Dest. (Upload): the RFC destination create for the messaging endpoint
- Field ISO Code: the code page to use
- Field Cloud Type: SOLACE (or the name you chose when adding the connector)
Note
In case you have a HA setup with 2 Solace brokers enter the second RFC destination in field RFC Dest. (Download)
Send example outbound message
Create Message Type
Example:
We use the Sales Order (BUS2032) event as an example.
Please choose any other suitable example if required.
For each object to be sent via ACI you have to create a message type:
- Transaction: WE81
- Add New Entry and specify:
- Message Type: unique name for the integration
- Description: description of the purpose
Activate Message Type
The created message type has to be activated:
- Transaction: BD50
- Add New Entryand specify:
- Message Type: the created message type
- Active: tick the checkbox
Create Outbound Object configuration
This example uses the built-in notification event.
- Transaction: SPRO
- Goto ASAPIO Cloud Integrator – Connection and Replication Object Customizing
- Or go directly to transaction: /ASADEV/68000202
- Select the created Connection
- Go to section Outbound Objects
- Add New Entry and specify:
- Object: name of the outbound configuration
- Extraction Func. Module: /ASADEV/ACI_GEN_NOTIFY_SOLACE
- Message Type: the created message type
- Load Type: Incremental Load
- Trace: activate for testing purposes
Set-up target endpoint in ‘Header Attributes’
The header attributes for each object contain some technical information for the call to the Solace broker and establishes the header table for this object (i.e. the main table with information on this object). The header table can then be used to create a dynamic topic with the field mappings.
- Go to section Header Attributes
- Add New Entry and specify:
- Header Attribute: name of the attribute
- Header Attribute Value: value of the attribute
Header Attribute | Header Attribute Value | Description |
---|---|---|
SOLACE_CALL_METHOD | POST | Call Method |
SOLACE_CONT_TYPE | text/plain | Content type (e.g. application/json) |
SOLACE_DELIV_MODE | Persistent | Delivery Mode |
SOLACE_OBJECT_HEADER_DB_TABLE | VBAK | DB table to use for dynamic topics (e.g. VBAK) |
SOLACE_TOPIC | /fallback/static/topic | Fixed topic (if dynamic topics should not be used) |
Set up ‘Business Object Event Linkage’
Link the configuration of the outbound object to a Business Object event:
- Go to section Event Linkage
- Add New Entry and specify:
- Object Category: BO BOR Object Type
- Object Type: the Business Object Type sending the event
- Event: the event to react to
- Receiver Type: the message type of the outbound object (this is the link to the Addon configuration)
- Receiver Call: Function Module
- Receiver Function Module: /ASADEV/ACI_EVENTS_TRIGGER
- Type linkage Activated: tick the checkbox
Test the outbound event creation
In the example above, please pick any test sales order in transaction /nVA02 and force a change event, e.g. by changing the requested delivery date on header level.
Outbound messaging
For outbound messaging, you can use and even combine the following methods:
- Simple Notifications
- Message Builder (Generic View Generator)
- Custom-built triggers and extractors
Pre-requisite for all methods is to create a message type, which will be used throughout the configuration process.
The following articles explain the individual possibilities.
Create a new Message Type
Create Message Type
Note:
In the example below, we use the Sales Order (BUS2032) event.
Please use suitable data for your use-case as required.
For each object to be sent via ACI you have to create a message type:
- Transaction: WE81
- Add New Entry and specify:
- Message Type: unique name for the integration
- Description: description of the purpose
Activate Message Type
- Transaction: BD50
- Add New Entry and specify:
- Message Type: the created message type
- Active: tick the checkbox
Simple Notifications
Create Outbound Object configuration
- Transaction: SPRO
- Goto ASAPIO Cloud Integrator – Connection and Replication Object Customizing
- Or go directly to transaction: /ASADEV/68000202
- Select the created Connection
- Go to section Outbound Objects
- Add New Entry and specify:
- Object: name of the outbound configuration
- Extraction Func. Module: /ASADEV/ACI_GEN_NOTIFY_SOLACE
- Message Type: the created message type
- Load Type: Incremental Load
- Trace: activate for testing purposes
This example uses the built-in notification event.
Set-up target endpoint in ‘Header Attributes’
The header attributes for each object contain some technical information for the call to the Solace broker and establishes the header table for this object (i.e. the main table with information on this object). The header table can then be used to create a dynamic topic with the field mappings.
- Go to section Header Attributes
- Add New Entry and specify:
- Header Attribute: name of the attribute
- Header Attribute Value: value of the attribute
Header Attribute | Header Attribute Value | Description |
---|---|---|
SOLACE_CALL_METHOD | POST | Call Method |
SOLACE_CONT_TYPE | text/plain | Content type (e.g. application/json) |
SOLACE_DELIV_MODE | Persistent | Delivery Mode |
SOLACE_OBJECT_HEADER_DB_TABLE | VBAK | DB table to use for dynamic topics (e.g. VBAK) |
SOLACE_TOPIC | /fallback/static/topic | Fixed topic (if dynamic topics should not be used) |
Set-up dynamic topic inside the ‘Field Mapping’
- Go to section Field Mapping
- Add New Entry and specify:
- Target structure: URL segment
- Target field: Description
- Source structure: Table for the dynamic field.
- Source field: Dynamic value for URL segment.
- Default value: Static value for URL segment.
Dynamic topic is visible inside the monitor with dynamic (highlighted) and static url segments:
Set up ‘Business Object Event Linkage’
Link the configuration of the outbound object to a Business Object event:
- Go to section Event Linkage
- Add New Entry and specify:
- Object Category: BO BOR Object Type
- Object Type: the Business Object Type sending the event
- Event: the event to react to
- Receiver Type: the message type of the outbound object (this is the link to the Addon configuration)
- Receiver Call: Function Module
- Receiver Function Module: /ASADEV/ACI_EVENTS_TRIGGER
- Type linkage Activated: tick the checkbox
Test the outbound event creation
In the example above, please pick any test sales order in transaction /nVA02 and force a change event, e.g. by changing the requested delivery date on header level.
Message Builder (Generic View Extractor)
Create Outbound Object configuration
- Transaction: SPRO
- Goto ASAPIO Cloud Integrator – Connection and Replication Object Customizing
- Or go directly to transaction: /ASADEV/68000202
- Select the created Connection
- Go to section Outbound Objects
- Add New Entry and specify:
- Object: name of the outbound configuration
- Extraction Func. Module: /ASADEV/ACI_GEN_VIEWEXT_SOLACE
- Message Type: the created message type
- Load Type: Incremental Load
- Trace: activate for testing purposes
- Formatting Function: /ASADEV/ACI_GEN_VIEWFRM_SOLACE
Create database view
For the data events also configure the DB view that is used to define the extraction:
- Transaction: SE11 (for SAP ERP or S/4HANA on-prem deployments with SAP GUI access)
- Alternatively, you can use Eclipse with ABAP Development Tools, or the SAP Fiori App “Create Custom CDS Views” to create a database view if you have this app available in SAP S/4HANA.
Example: Material master view (e.g. to be used for Material Master (BUS1001) change events)
Set up ‘Business Object Event Linkage’
Link the configuration of the outbound object to a Business Object event:
- Go to section Event Linkage
- Add New Entry and specify:
- Object Category: BO BOR Object Type
- Object Type: the Business Object Type sending the event
- Event: the event to react to
- Receiver Type: the message type of the outbound object (this is the link to the Addon configuration)
- Receiver Call: Function Module
- Receiver Function Module: /ASADEV/ACI_EVENTS_TRIGGER
- Type linkage Activated: tick the checkbox
Set-up Packed Load (split large data)
Create Outbound Object configuration
- Transaction: SPRO
- Goto ASAPIO Cloud Integrator – Connection and Replication Object Customizing
- Or go directly to transaction: /ASADEV/68000202
- Select the created Connection
- Go to section Outbound Objects
- Add New Entry and specify:
- Object: name of the outbound configuration
- Extraction Func. Module: /ASADEV/ACI_GEN_VIEWEXT_SOLACE
- Item Lines: 1
- Message Type: the created message type(optional)
- Load Type: Packed Load
- Trace: activate for testing purposes
- Formatting Function: /ASADEV/ACI_GEN_VIEW_FORM_CB (depending on your use case)
Create database view
Note
Please also refer to chapter 4.3.2
For the data events also configure the DB view that is used to define the extraction:
- Transaction: SE11 (for SAP ERP or S/4HANA on-prem deployments with SAP GUI access)
- Alternatively, you can use Eclipse with ABAP Development Tools, or the SAP Fiori App “Create Custom CDS Views” to create a database view if you have this app available in SAP S/4HANA.
Example: Material master view
Set-up ‘Header Attributes’
- Go to section Header Attributes of the outbound object created previously
- Add New Entry and specify the header attributes and values
Header attribute | Header attribute value | Example |
---|---|---|
ACI_PACK_BDCP_COMMIT | Flag for changepointer creation.
If set, changepointers will be generated for every entry. IF this flag is set, a messagetype has to be maintained in the outbound object. Caution: This approx.. halves performance. |
X |
ACI_PACK_TABLE | Name of the table to take the keyfields from. This is typically different then the db view specified in ‘Extraction View Name‘ as we only want to build packages based on the header object and the db view typically contains sub-objects as well | MARA |
ACI_PACK_TRY | Number of attempts to get a new ressource from the servergroup (typically you should choose a very high number here) | 100000 |
ACI_PACK_RETRY_TIME | Time in seconds. This is the duration in which the framework will attempt to get a new ressource from the servergroup | Note: this is not yet released, use ACI_PACK_TRY instead |
ACI_PACK_WHERE_COND | Condition that is applied to the table defined in ‘ACI_PACK_TABLE‘ | |
ACI_PACK_SIZE | Number of entries to send | 500 |
ACI_PACK_KEY_LENGTH | Length of the key to use from the ACI_PACK_TABLE (e.g. MANDT + MATNR) | 13 |
Execute the initial load
Warning
depending on the amount of data this can stress the SAP system servers immensely.
Please always consult with your basis team for the correct server group to use!
- Transaction: /ASADEV/ACI
- Select the Connection and hit enter
- Select Upload Type: P
- Select Replication Object
- Select a Servergroup (this is mandatory)
Demo
Event-enable your SAP data with Solace
Demo with SAP sales orders, inbound and outbound. Also shows dynamic topics features.