0% found this document useful (0 votes)
222 views44 pages

Cloud ERP Extensibility Guide

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
222 views44 pages

Cloud ERP Extensibility Guide

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 44

Inhaltsverzeichnis

DT280 - CLOUD ERP EXTENSIBILITY ......................................................................................... 2


REFERENCE MATERIAL ........................................................................................................... 2
GETTING STARTED .................................................................................................................. 2
EX1: NEW APP ON STACK (DEVELOPER EXTENSIBILITY).................................................................. 3
GO TO RELEASED OBJECTS AND SELECT API I_BANKTP .................................................................. 3
GENERATE ABAP REPOSITORY OBJECTS ....................................................................................... 4
CHANGED THE NAMES ABAP REP.OBJECTS................................................................................... 5
GENERATE THE OBJECTS AND PROVIDE THE TRANSPORT REQUEST ...................................................... 10
PUBLISH THE SERVICE AND ACTIVATE SERVICE BINDING ................................................................. 11
PREVIEW THE SERVICE BINDING ............................................................................................... 11
TEST OUTPUT ...................................................................................................................... 12
CREATE NEW BANK COUNTRY ................................................................................................. 12
CHECK THE KNOWLEDGE TRANSFER DOCUMENT ......................................................................... 14
CHECK FOR AUTHORIZATION OBJECT ........................................................................................ 14
ADDED NEW BANK NAME ....................................................................................................... 19
EX.2 BEHAVIOR EXTENSION .................................................................................................. 19
ADD IMPLEMENTATION CODE ................................................................................................... 21
ACTIVATE IT AND CREATE BEHAVIOR IMPLEMENTATION .................................................................... 23
OPEN THE SERVICE BINDING ................................................................................................... 24
PREVIEW THE SHOP RAP BO................................................................................................... 25
EX.3 EXTEND THE BEHAVIOR DEFINITION WITH DETERMINATION . ....................................................... 26
ADD DETERMINATION ............................................................................................................ 27
FINAL OUTPUT .................................................................................................................... 29
EX.2.3: EXTEND THE BEHAVIOR DEFINITION WITH SIDE EFFECTS ..................................................... 29
ADD THE CODE FOR SIDE EFFECTS ............................................................................................ 29
EX.3 EXTEND THE CDS DATA MODEL OF THE EXTENSIBLE RAP BO .................................................. 30
ADD NEW FIELD ................................................................................................................... 33
TEST THE EXTENSION FIELD ..................................................................................................... 36
EX:4 EXTEND THE BUSINESS OBJECT WITH AN ACTION .................................................................. 37
CREATE AN ABSTRACT ENTITY ................................................................................................... 37
ADD ABSTRACT ENTITY CODE ................................................................................................... 38
EXTEND THE BEHAVIOR DEFINITION ........................................................................................... 39
ADD ACTION CODE ............................................................................................................... 39
ADD METHOD IMPLEMENTATION ............................................................................................... 40
EX 4.4 EXTEND THE PROJECTION BDEF ..................................................................................... 41
ADD ACTION CODE............................................................................................................... 42
ADD UI ANNOTATION ............................................................................................................ 42
FINAL OUTPUT UPDATE FEEDBACK ............................................................................................ 44
DT280 - Cloud ERP Extensibility
Reference Material
https://github.com/SAP-samples/teched2024-
DT280/blob/main/README.md#requirements-for-attending-this-workshop

Getting started

Execute the class


Now two packages will be created

Please add the below packages into Favorite Packages

Ex1: New App on stack (Developer Extensibility)


In this exercise , you will build a custom UI on top of the released API I_BankTP.

Go to Released objects and select API I_BANKTP


Generate ABAP Repository objects
Changed the names ABAP Rep.objects
• Service Projection Entities
• Service Projection Behavior
• Service Definition
• Service Binding
Generate the objects and provide the transport request
Publish the service and Activate Service Binding

Preview the service binding


Test Output

Create New Bank Country


Check the Knowledge Transfer Document

Check for Authorization Object

Ex 1.2 Use a Released RAP BO in Custom Application


Please replace the value for '###' with a string that only contains numbers( I have
used 991).

CLASS zcl_test_abap_cloud_991 DEFINITION

PUBLIC

FINAL

CREATE PUBLIC .

PUBLIC SECTION.

INTERFACES:if_oo_adt_classrun.

PROTECTED SECTION.

PRIVATE SECTION.

ENDCLASS .
CLASS zcl_test_abap_cloud_991 IMPLEMENTATION.

METHOD if_oo_adt_classrun~main.

DATA create_bank TYPE STRUCTURE FOR CREATE i_banktp.

DATA bank_id_number TYPE i_banktp-BankInternalID VALUE '8###'.

create_bank = VALUE #( bankcountry = 'CZ'

bankinternalid = bank_id_number

longbankname = 'Bank name'

longbankbranch = 'Bank branch'

banknumber = bank_id_number

bankcategory = ''

banknetworkgrouping = ''

swiftcode = 'SABMGB2LACP'

ismarkedfordeletion = ''

).

MODIFY ENTITIES OF i_banktp

ENTITY bank

CREATE FIELDS ( bankcountry

bankinternalid

longbankname

longbankbranch

banknumber

bankcategory

banknetworkgrouping
swiftcode

IsMarkedForDeletion

WITH VALUE #( (

%cid = 'cid1'

bankcountry = create_bank-bankcountry

bankinternalid = create_bank-bankinternalid

longbankname = create_bank-longbankname

longbankbranch = create_bank-longbankbranch

banknumber = create_bank-banknumber

bankcategory = create_bank-bankcategory

banknetworkgrouping = create_bank-banknetworkgrouping

SWIFTCode = create_bank-SWIFTCode

IsMarkedForDeletion = create_bank-IsMarkedForDeletion

) )

MAPPED DATA(mapped)

REPORTED DATA(reported)

FAILED DATA(failed).

LOOP AT reported-bank INTO DATA(reported_error_1).

DATA(exc_create_bank) = cl_message_helper=>get_longtext_for_message(

EXPORTING

text = reported_error_1-%msg

).

out->write( |error { exc_create_bank } | ).

ENDLOOP.

COMMIT ENTITIES

RESPONSE OF i_banktp
FAILED DATA(failed_commit)

REPORTED DATA(reported_commit).

LOOP AT reported_commit-bank INTO DATA(reported_error_2).

DATA(exc_create_bank2) = cl_message_helper=>get_longtext_for_message(

EXPORTING

text = reported_error_2-%msg

).

out->write( |error { exc_create_bank2 } | ).

ENDLOOP.

IF reported_commit-bank IS INITIAL.

COMMIT WORK.

SELECT SINGLE * FROM I_Bank_2 WHERE BankInternalID = @bank_id_number INTO @DATA(my_bank).

out->write( |my new bank { my_bank-BankName } { my_bank-BankInternalID }| ).

ENDIF.

ENDMETHOD.

ENDCLASS.

Activate the class.

Added new Bank Name

We have learned about how to leverage API I_BANKTP in ABAP Cloud.

Ex.2 Behavior Extension


We will learn here ,how to add a validation, determination and side-effects to the
behavior of the RAP BO.
Add implementation code
extend behavior for Shop
{
validation zz_validateDeliverydate on save { create; field DeliveryDate; }

extend draft determine action Prepare


{
validation zz_validateDeliveryDate;
}
}
Activate it and Create behavior implementation

CLASS lhc_shop DEFINITION INHERITING FROM cl_abap_behavior_handler.

PUBLIC SECTION.
CONSTANTS state_area_check_delivery_date TYPE string VALUE
'CHECK_DELIVERYDATE' ##NO_TEXT.
PRIVATE SECTION.
METHODS zz_validateDeliverydate FOR VALIDATE ON SAVE
IMPORTING keys FOR Shop~zz_validateDeliverydate.

ENDCLASS.

CLASS lhc_shop IMPLEMENTATION.


METHOD zz_validateDeliverydate.
READ ENTITIES OF ZRAP630i_ShopTP_05e IN LOCAL MODE
ENTITY Shop
FIELDS ( DeliveryDate OverallStatus )
WITH CORRESPONDING #( keys )
RESULT DATA(onlineorders).

LOOP AT onlineorders INTO DATA(onlineorder).


APPEND VALUE #( %tky = onlineorder-%tky
%state_area = state_area_check_delivery_date )
TO reported-shop.
DATA(deliverydate) = onlineorder-DeliveryDate -
cl_abap_context_info=>get_system_date( ).
IF onlineorder-deliverydate IS INITIAL .
APPEND VALUE #( %tky = onlineorder-%tky ) TO failed-shop.
APPEND VALUE #( %tky = onlineorder-%tky
%state_area = state_area_check_delivery_date
%msg = new_message_with_text(
severity = if_abap_behv_message=>severity-error
text = 'delivery period cannot be initial'
))
TO reported-shop.
ENDIF.
ENDLOOP.
ENDMETHOD.
ENDCLASS.

I have used “05E” as my identifier for this exercise.

Open the service binding


Preview the shop RAP BO

Click “create”

Then Select “OrderItem”


But do not select “Delivery Date” and create it.

You will get below message .That is the end of this exercise.

Ex.3 Extend the behavior definition with determination.


Select the behavior
Add determination
METHOD ZZ_setOverallStatus.

DATA update_bo TYPE TABLE FOR UPDATE ZRAP630i_ShopTP_05E\\Shop.


DATA update_bo_line TYPE STRUCTURE FOR UPDATE ZRAP630i_ShopTP_05E\\Shop .

READ ENTITIES OF ZRAP630I_ShopTP_05E IN LOCAL MODE


ENTITY Shop
ALL FIELDS " ( OrderItemPrice OrderID )
WITH CORRESPONDING #( keys )
RESULT DATA(OnlineOrders)
FAILED DATA(onlineorders_failed)
REPORTED DATA(onlineorders_reported).

DATA(product_value_help) = NEW zrap630_cl_vh_product_05E( ).


data(products) = product_value_help->get_products( ).

LOOP AT onlineorders INTO DATA(onlineorder).

update_bo_line-%tky = onlineorder-%tky.

SELECT SINGLE * FROM @products as hugo


WHERE Product = @onlineorder-OrderedItem INTO @data(product).

update_bo_line-OrderItemPrice = product-Price.
update_bo_line-CurrencyCode = product-Currency.

IF product-Price > 1000.


update_bo_line-OverallStatus = 'Awaiting approval'.
ELSE.
update_bo_line-OverallStatus = 'Automatically approved'.
ENDIF.

APPEND update_bo_line TO update_bo.


ENDLOOP.

MODIFY ENTITIES OF zrap630i_shoptp_05E IN LOCAL MODE


ENTITY Shop
UPDATE FIELDS (
OverallStatus
CurrencyCode
OrderItemPrice
)
WITH update_bo
REPORTED DATA(update_reported).

reported = CORRESPONDING #( DEEP update_reported ).

ENDMETHOD.

Final Output
On the draft ,overall status is updated

Ex.2.3: Extend the behavior definition with side effects


Add the code for side effects

Below 1000 Euro, overall is status updated with “Automatically approved”


Now more than 1000 Euro, the overall status is updated with “Awaiting approval”

Now we have extended the behavior of the base RAP BO

Ex.3 Extend the CDS data model of the extensible RAP BO


Add new field
Test the extension Field
Ex:4 Extend the business object with an action
Create an abstract entity
Add abstract entity code
@EndUserText.label: 'Pass feedback as a parameter'
define abstract entity ZRAP630_A_Feedback_05E
{
feedback : abap.char(100);
}
Extend the behavior definition

Add action code


field ( readonly ) zzfeedbackzaa;

action ( authorization : global, features : instance ) ZZ_ProvideFeedback parameter


ZRAP630_A_Feedback_05e result [1] $self;
Add method implementation

Add the feedback implementation


MODIFY ENTITIES OF ZRAP630I_ShopTP_05E IN LOCAL MODE
ENTITY Shop

UPDATE FIELDS ( zzfeedbackzaa )


WITH VALUE #( FOR key IN keys ( %tky = key-%tky
zzfeedbackzaa = key-%param-feedback ) ).

"Read the changed data for action result


READ ENTITIES OF ZRAP630I_ShopTP_05e IN LOCAL MODE
ENTITY Shop
ALL FIELDS WITH
CORRESPONDING #( keys )
RESULT DATA(result_read).
"return result entities
result = VALUE #( FOR order_2 IN result_read ( %tky = order_2-%tky
%param = order_2 ) ).
Ex 4.4 Extend the projection BDEF

Add Action code


use action ZZ_ProvideFeedback;
Add UI Annotation
extend view entity ZRAP630C_ShopTP_05E with
{
@EndUserText.label: 'Feedback'
@UI.dataFieldDefault: [{hidden: false}]
@UI.identification: [{hidden: false},
{type: #FOR_ACTION, dataAction: 'ZZ_ProvideFeedback', label: 'Update feedback' } ]
@UI.lineItem: [{hidden: false},
{type: #FOR_ACTION, dataAction: 'ZZ_ProvideFeedback', label: 'Update feedback' } ]
Shop.ZZFEEDBACKZAA as ZZFEEDBACKZAA
}

Final Output update Feedback

You might also like