Skip to Content
Technical Articles

End To End RFC Synchronous Interface with SAP CPI and Cloud Connector – Customer Purchase Order Update

Lets consider the below common business requirement which you see in all most all companies.

Customer place a purchase order and we do the integration to pick the customer PO and creates SO -Sales order in ECC through IDOC, PROXY, or RFC. Once Sales Order created in ECC corresponding Delivery or Advanced shipping notification will get created. Post Goods Issue will be done for creating the billing document and invoice creation.

Flow is as below.

Customer PO –> SAP Cloud API/ CPI –> SO creates in ECC/ S4/ HANA  –> ASN –> PGI –> Billing Document and Invoice Document.

Now Customer wants to know the Delivery Date, status of PO which created earlier. we build the RFC – End To End RFC Synchronous Interface with SAP CPI and Cloud Connector – Customer Purchase Order Update.

 

SAP ECC FM Code – for PO Update… create a FM as a remote enabled and the code in sourcecode tab.

FUNCTION zrfc_postatus.
*"----------------------------------------------------------------------
*"*"Local Interface:
*"  IMPORTING
*"     VALUE(V_BSTNK) TYPE  VBAK-BSTNK
*"  EXPORTING
*"     VALUE(KUNNR) TYPE  KUNNR
*"     VALUE(NAME) TYPE  NAME1
*"     VALUE(STATUS) TYPE  CHAR30
*"     VALUE(REQDEVDATE) TYPE  EDATU_VBAK
*"----------------------------------------------------------------------
  TABLES: vbak,
          vbuk,
          kna1.
  TYPES: BEGIN OF ty_vbak,
        vbeln TYPE vbak-vbeln,
        vdatu TYPE vbak-vdatu,
        kunnr TYPE vbak-kunnr,
        END OF ty_vbak.

  TYPES : BEGIN OF ty_final,
          mandt TYPE sy-mandt,
          kunnr TYPE vbak-kunnr,
          name TYPE kna1-name1,
          status(30),
          reqdevdate TYPE vbak-vdatu,
          END OF ty_final.


  DATA: wa_vbak TYPE ty_vbak,
        it_vbak TYPE STANDARD TABLE OF ty_vbak.
  DATA: l_gbstk TYPE vbuk-gbstk.


  SELECT vbeln vdatu kunnr FROM vbak INTO CORRESPONDING FIELDS OF TABLE it_vbak WHERE auart = 'ZOR'
                                                                                AND bstnk = v_bstnk .
  if sy-subrc NE 0.
    translate v_bstnk to LOWER CASE .
   SELECT vbeln vdatu kunnr FROM vbak INTO CORRESPONDING FIELDS OF TABLE it_vbak WHERE auart = 'ZOR'
                                                                                AND bstnk = v_bstnk .
  endif.

  LOOP AT it_vbak INTO wa_vbak.

    kunnr = wa_vbak-kunnr.

    SELECT SINGLE name1 FROM kna1 INTO name WHERE kunnr = wa_vbak-kunnr .

    SELECT SINGLE gbstk FROM vbuk INTO l_gbstk WHERE vbeln = wa_vbak-vbeln.

    CASE l_gbstk.
      WHEN 'C' .
        status = 'Closed'.
      WHEN 'A' .
        status = 'Open'.
      WHEN 'B' .
        status = 'Partially Delivered'.
      WHEN ' ' .
        status = 'Cancelled'.
    ENDCASE.
    reqdevdate = wa_vbak-vdatu.

    CLEAR wa_vbak.
  ENDLOOP.
ENDFUNCTION.

 

Test the FM by giving PO number and FM returns, Customer number, Name and Status of PO, Delivery Date as mentioned below.

Now lets bring this FM to SAP Cloud connector – and complete the require configuration setup in cloud connector. Advantage of this is no need to work with Network team to open the firewall between Customer  ON PREMISE systems and External network customer application.

 

login into SAP Cloud connector on premise system where it is installed -and maintain the ECC server host name host entries and host file at OS level.

 

In the above screenshot protocol RFC -should be reachable – you need enter right details while creating the RFC connection with ABAP System and then add Function module with Exact Name.

 

Login into SAP CPI cockpit – and verify the RFC connection – or create new RFC connection in cockpit and check status is working or not. you can ref help.sap CPI document for setting up RFC connection.

 

 

The connection status should be successful – if not seek help from SAP BASIS Team!!

 

Now all communication is ready – and lets build the IFLOW in SAP Cloud CPI.

 

 

As i have selected my sender as SOAP because i want to trigger the input data from POSTMAN Tool. as this is very simple mapping which is one step for request and another is for response and in between we are calling RFC FM from back end systems via SAP Cloud connector.

 

 

Deploy the IFLOW and switch on Trace – to check the complete end to end log.

 

Go to POSTMAN —

Select as POST method – maintain the require input data in body as below.

You can generate the code in all scripting languages – you can provide the external code as per the external application requirement -to build their Mobile/ tablet/browser apps.

 

 

all pipeline steps are executed – and we got the PO update in the response as below. i have also used groovy script for downloading payload  – you can ref help.sap document for groovy scripts.

 

 

you can also refer my another blog which is little complex for new technology – Integration approach.

https://blogs.sap.com/2019/05/24/end-to-end-integration-between-sap-cloud-api-cloud-cpi-with-xs-odata-services-oauth-bearer-token-integration-with-external-cloud-applications.

 

Hope, This blog helps in your technical/project work!!

 

Best Regards,

Krushi Nenavath.

Be the first to leave a comment
You must be Logged on to comment or reply to a post.