What is EML?
Suppose we need to access RAP functionality in ABAP. We can do this using EML (Entity Manipulation Language) in ABAP. EML allows us to perform create and update operations without using OData or an API.
Use cases include:
– Consuming RAP functionality directly within plain ABAP code.
– Developing specialised business logic.
– Generating test data.
– Integrating with classic code.
Syntax
Read:
READ ENTITIES OF /DMO/R_Travel_D IN LOCAL MODE ENTITY Booking BY \_Travel FIELDS ( TravelUUID ) WITH CORRESPONDING #( keys ) RESULT DATA(travels) LINK DATA(link) FAILED DATA(failed) REPORTED DATA(reported).
Update:
MODIFY ENTITIES OF /DMO/R_Travel_D ENTITY Booking UPDATE FIELDS ( BookingStatus ) WITH VALUE #( ( BookingUUID = '<Booking_UUID>' %is_draft = if_abap_behv=>mk-off BookingStatus = 'A' ) ( BookingUUID = '<Booking_UUID>' %is_draft = if_abap_behv=>mk-off BookingStatus = 'A' ) )FAILED DATA(failed)REPORTED DATA(reported).COMMIT ENTITIES.
Delete:
MODIFY ENTITIES OF /DMO/R_Travel_D ENTITY TRAVEL DELETE FROM VALUE #( ( TravelUUID = '<Travel_UUID>' %is_draft = if_abap_behv=>mk-off ) )FAILED DATA(failed)REPORTED DATA(reported).COMMIT ENTITIES.
Example
- Create a Class



CLASS zcl_ha_sa_eml DEFINITION PUBLIC FINAL CREATE PUBLIC . PUBLIC SECTION. data: lv_operation TYPE char1 VALUE 'C'. INTERFACES if_oo_adt_classrun. PROTECTED SECTION. PRIVATE SECTION.ENDCLASS.CLASS zcl_ha_sa_eml IMPLEMENTATION.METHOD if_oo_adt_classrun~main.CASE lv_operation.WHEN 'R'. "readREAD ENTITIES OF ZHA_SA_TRAVELENTITY TravelFIELDS ( travelid agencyid customerid overallstatus ) WITHVALUE #( ( TravelId = '00000017' ) ( TravelId = '00000055' ) ( TravelId = '00000089' ) ) RESULT DATA(lt_result) FAILED DATA(lt_failed) REPORTED DATA(lt_messages).when 'C'."CreateDATA(lv_description) = 'Sangeeta RAP'.DATA(lv_agency) = '080088'.DATA(lv_customer) = '0008756'.MODIFY ENTITIES OF ZHA_SA_TRAVELENTITY TravelCREATE FIELDS ( TravelId AgencyId CurrencyCode BeginDate EndDate Description OverallStatus )WITH VALUE #(( %CID = 'SAN' TravelId = '0007894' AgencyId = lv_agency CustomerId = lv_customer BeginDate = cl_abap_context_info=>get_system_date( ) EndDate = cl_abap_context_info=>get_system_date( ) + 30 Description = lv_description OverallStatus = 'O' ) ( %CID = 'SAN-1' TravelId = '000717894' AgencyId = lv_agency CustomerId = lv_customer BeginDate = cl_abap_context_info=>get_system_date( ) EndDate = cl_abap_context_info=>get_system_date( ) + 30 Description = lv_description OverallStatus = 'O' ) ( %CID = 'SAN-2' TravelId = '00000060' AgencyId = lv_agency CustomerId = lv_customer BeginDate = cl_abap_context_info=>get_system_date( ) EndDate = cl_abap_context_info=>get_system_date( ) + 30 Description = lv_description OverallStatus = 'O' ) )MAPPED DATA(lt_map)FAILED lt_failedREPORTED lt_messages.COMMIT ENTITIES.out->write(EXPORTINGdata = lt_map ).out->write(EXPORTINGdata = lt_failed ).WHEN 'U'."Updatelv_description = 'Update'.lv_agency = '080036'.MODIFY ENTITIES OF ZHA_SA_TRAVELENTITY TravelUPDATE FIELDS ( AgencyId Description )WITH VALUE #(( TravelId = '00001133' AgencyId = lv_agency Description = lv_description ) ( TravelId = '00001135' AgencyId = lv_agency Description = lv_description ))MAPPED lt_mapFAILED lt_failedREPORTED lt_messages.COMMIT ENTITIES.out->write(EXPORTINGdata = lt_map ).out->write(EXPORTINGdata = lt_failed ).when 'D'."DeleteMODIFY ENTITIES OF ZHA_SA_TRAVELENTITY TravelDELETE FROM VALUE #( ( TravelId = '00012678' ) )MAPPED lt_mapFAILED lt_failedREPORTED lt_messages.COMMIT ENTITIES.out->write(EXPORTINGdata = lt_map ).out->write(EXPORTINGdata = lt_failed ).ENDCASE.ENDMETHOD.ENDCLASS.
2. Execute class and see the result.


Thanks for reading!

Leave a Reply