Hi guys, in this article we will explore one more adapter in CPI – Kafka adapter. Particular, we will explore how to send file to Kafka and receive file from Kafka. Yes, It’s same SFTP.
Step 1 Build Kafka service
First, we need build server which install service Kafka. Fortunately, we have one service free trial 30 days on cloud. Kindly go to here to create Kafka service on Cloud.
After created Kafka on cloud, we will have Kafka as below

Download 3 files
- Access key -> Service.key
- Access Certificate -> Service.cert
- CA Certificate -> ca.pem
Step 2 Create key store (file P12)
By using OpenSSL tool, run command line to create key store (P12 file)
pkcs12 -export -name server-cert -in service.cert -inkey service.key -out dev-cpi-server-key-store.p12

Enter password. This password will use in another step.
After done, we will have file in the same folder of service.cert, ca.pem and service.key

Step 3 Create Key Pair in SAP CPI
In this step we will use key store which created in Step 2 and add it into SAP CPI.
Monitor – Keystore

Add – KeyPair


- (1) : File P12 which created in step 2
- (2) : Password in step 2.

Step 4 Down load Server Certificate of Kafka and import into CPI
Next, we will connect to Kafka host with key pair in step 3 to download Kafka certificate and after that import this certificate into CPI
Go to Kafka cloud service and copy host

Go to CPI – Monitor – Connectivity Tests

Use keypair in step 3 with host and port kafka to test connection to kafka service and download server certificate

Import certificate into key store SAP CPI
Monitor – Key Store – Add Certificate

We have to import 2 certificates of server into SAP CPI


Step 5 Test connection Kafka in SAP CPI
Monitor – Connectivity Tests – Kafka

As we see, connection is ok. Go to here we finished connection from SAP CPI to Kafka.
Next, we will create 2 scenarios which will be work with Kafka.
NOTE
In Kafka, files will have 2 formats:
Binary : we have to convert payload to base64 and after that save it into Kafka with Binary
JSON : We have to convert payload to JSON and after that save it into Kafka with JSON
So, in CPI we also do that by using components to convert base64 or convert JSON from XML format
Kafka Receiver: Send file from S4 to Kafka (Outbound)
Data send from S4/HANA and Save into Kafka with JSON Format





Unit Test
Send Data from S4. Check in WE02

Copy IDOC number: xxxxx35 search in SAP CPI

Check in topic Kafka

Data send from S4/HANA and Save into Kafka with Binary Format

NOTE
With this format, we will use component Base64 Encode to convert payload XML of S4/HANA to Base64 binary
This scenario, you can try by yourself.
Kafka Sender : Collect data from Kafka to S4 IDOC (Inbound IDOC)
Data in Kafka is XML to Binary

With this format, 3rd system will create payload with Format XML, after that convert XML payload to Base64 and send to Kafka
CPI will collect data in Kafka with Kafka sender adapter and send it to S4/HANA by IDOC Receiver adapter.
Payload XML

Convert to base64 and save to Kafka

Integration Flow with sender is Kafka and Receiver is IDOC



Check log in SAP CPI with Payload


Check on S4/HANA

Data in Kafka is JSON

All step is the same above. You can try by yourself.
NOTE
After collect data from KAFKA send to S4/HANA, message in Kafka will not deleted, but It will marked with anything and will not send to S4/HANA many times.
Summary
This article is talking about integration of SAP CPI and Kafka. Normally, we often using SFTP to handle file up/down S4 through PI/PO/CPI. But today, I want to share one more another way to handle file. It is Kafka, because Kafka is one of adapters which SAP CPI included. Thanks for your reading and any advise, kindly leave your comment on this.
Thanks.
Joseph.
Very helpful! Would be great to demonstrate this using Kafka cluster running in SAP BTP
LikeLike