SAP S/4HANA Cloud, SAP HANA, SAP Cloud

Extend Form Template using SAP S/4 HANA Cloud In-App Extensibility

In this blog, we will see how a standard form template can be extended for Custom Fields. We will also see how an HTTP Call can be made from Custom Logic.

In this business scenario, the Standard Form Template of Purchase Order needs to be extended with the value of the Characteristic Value assigned to a material. In this example, we assume that this requirement is needed only for Class Type ‘001’ and this can have only one characteristic value.

To achieve this, we do the following steps as depicted below.

SAP S/4HANA Cloud, SAP HANA, SAP Cloud

Step 1: Create a Custom Field

  1. Login to SAP S/4 HANA Cloud with user having role SAP_BR_ADMINISTRATOR.
  2. Create a Custom Field using the app Custom Fields and Logic under the catalog Extensibility.

SAP S/4HANA Cloud, SAP HANA, SAP Cloud

3. Enable the following usages and Save and Publish.

  • UIs and Reports: Manage Purchase Order
  • Form Templates: Form Template Purchase Order

SAP S/4HANA Cloud, SAP HANA, SAP Cloud

Step 2: Add this Custom Field in a Form Template

Prerequisite:

Form Templates are modified using Adobe LiveCycle Designer. The software can be downloaded from the app Install Additional Software under the catalog Additional Software.

SAP S/4HANA Cloud, SAP HANA, SAP Cloud

Once the software is installed, do the following steps.

  1. Continue with the user having role SAP_BR_ADMINISTRATOR. Choose the app Maintain Form Templates under the catalog Output Management.
  2. Download the SAP pre-delivered form template MM_PUR_PURCHASE_ORDER. The file gets downloaded as a zip file. Extract the files to a folder.

SAP S/4HANA Cloud, SAP HANA, SAP Cloud

3. Open the file xdp using Adobe LiveCycle Designer. Add a Column “Characteristic” between the columns Description and Quantity. The field should be binded to custom field YY1_CHARCVALUE_PDI.

SAP S/4HANA Cloud, SAP HANA, SAP Cloud

4. This Custom Form Template needs to be uploaded. Use the app Maintain Form Templates under the catalog Output Management to do this.

SAP S/4HANA Cloud, SAP HANA, SAP Cloud

Step 3: Enable the usage of Custom Form Template using Output Determination

  1. Login to SAP S/4 HANA Cloud with user having role SAP_BR_BPC_EXPERT.
  2. Choose the app Manage Your Solution under the catalog Implementation Cockpit.
  3. Choose Configure Your Solution and Search with keywords Form Template.

SAP S/4HANA Cloud, SAP HANA, SAP Cloud

4. Navigate to the details of Output Control. Under the Configuration Steps, choose Configure under Assign Form Templates.

SAP S/4HANA Cloud, SAP HANA, SAP Cloud

5. Create a new assignment for Purchase Order.

SAP S/4HANA Cloud, SAP HANA, SAP Cloud

6. Login with user having role SAP_BR_ADMINISTRATOR.
7. Choose the app Output Parameter Determination under the catalog Output Control.
8. Choose the following parameters and Click Edit.

Show Rule For: Purchase Order
Determination Step: Form Template

9. Change the value of Form Template to YY1_MOD_PURCHASE_ORDER_01.

SAP S/4HANA Cloud, SAP HANA, SAP Cloud

Step 4: Create Communication Arrangements to enable HTTP Call

1. Login with the user having role SAP_BR_ADMINISTRATOR.
2. Create a Communication User using the app Maintain Communication Users under the catalog Communication Management. In this example we create a user named HTTP_USER.
3. Create a Communication System using the app Communication Systems under the catalog Communication Management with following details.

System ID: INT_HTTP

System Name: INT_HTTP

  • Enter the following details for the Communication System and click Save.

Host Name: myXXXXXX-api.s4hana.ondemand.com (Replace XXXXXX with your tenant URL)

HTTPS Port: 443

User for Inbound Communication: HTTP_USER

User for Outbound Communication: HTTP_USER

SAP S/4HANA Cloud, SAP HANA, SAP Cloud

4. Create a Custom Communication Scenario using the app Custom Communication Scenarios under the catalog Extensibility.

  • Create a new Communication Scenario with the following details.

Communication Scenario ID: YY1_INT_HTTP

Description: Internal HTTP

  • Create an Outbound Service with the following details.

Description: INT_HTTP

Outbound Service ID: YY1_INT_HTTP_REST

URL Path: /sap/opu/odata/sap

5. Create Communication Arrangement using the app Communication Arrangements under the catalog Communication Management.

  • Click New, enter the following details and click Create.

Scenario: YY1_INT_HTTP

Arrangement Name: YY1_INT_HTTP

  • In the details page, enter the details shown below and click Save.

SAP S/4HANA Cloud, SAP HANA, SAP Cloud

  • Repeat Step 5 for Communication Scenario SAP_COM_0309. The Inbound User will be HTTP_USER.

Step 5: Custom Logic to make HTTP Call and Pre-Populate the Custom Field

In this section, we make an HTTP call to a whitelisted API in order to read characteristic value of the Product and populate the custom field created in Step 1.

  1. Login with user having role SAP_BR_ADMINISTRATOR.
  2. Choose the app Custom Fields and Logic under the catalog Extensibility.
  3. Choose the tab Custom Logic. Click +, enter the following details and click Create.

SAP S/4HANA Cloud, SAP HANA, SAP Cloud

4. Click on Create Draft and paste the following lines of code.

CHECK cl_ble_http_client=>is_service_available(
communication_scenario = ‘YY1_INT_HTTP’
outbound_service = ‘YY1_INT_HTTP_REST’
) = abap_true.

DATA(lo_client) = cl_ble_http_client=>create(
communication_scenario = ‘YY1_INT_HTTP’
outbound_service = ‘YY1_INT_HTTP_REST’
).

DATA(request) = cl_ble_http_request=>create( ).
DATA lv_q1 TYPE string VALUE ‘/API_CLFN_PRODUCT_SRV/A_ProductCharcValue?$filter=Product eq ‘.
DATA lv_q2 TYPE string VALUE ‘ and ClassType eq ”001”’.
DATA lv_material TYPE string.

CONCATENATE lv_q1 ”” purchaseorderitem-material ”” lv_q2 INTO lv_material.

request->set_method( ‘GET’ )->set_resource_extension( lv_material ).

TRY .
DATA(response) = lo_client->send( request ).

DATA(lv_string) = response->get_body( ).
SPLIT lv_string at ‘CharcValue>’ INTO lv_q1 lv_q2.
SPLIT lv_q2 at ‘<‘ INTO purchaseorderitemchange-yy1_charcvalue_pdi lv_q1.

CATCH cx_ble_http_exception INTO DATA(lx).
ENDTRY.

5. Click Save Draft and Publish.

This code can be replaced by SELECT statements to whitelisted CDS views which can read the characteristic value of a Material once it is available. The whitelisted CDS view is planned for 1805 release.

Test the Scenario

  1. Login with user having role SAP_BR_PURCHASER.
  2. Choose the app Manage Purchase Orders under the catalog Purchase Order Processing.
  3. Create a new Purchase Order. In the PO line items include materials which have classification maintained as well as which do not have maintained.
  4. View the preview file in Output Management tab. The Custom Field Characteristic can be seen in the output.

SAP S/4HANA Cloud, SAP HANA, SAP Cloud

Leave a Reply

Your email address will not be published. Required fields are marked *