Abap Cloud Cheat Sheet
Abap Cloud Cheat Sheet
Abap Cloud Cheat Sheet
More and more organizations are coming across the term ABAP on Cloud. Whether they are
considering Side-by-Side Extension with SAP Business Technology Platform or On-stack Extension in
S4 HANA, I’m certain that this is discussed in your strategy meeting at least once.
ABAP on Cloud(aka ABAP for Cloud Development language version) is similar yet different
from standard ABAP in many ways. Even if your organization holds in-house ABAP developers, the
transition path to ABAP on Cloud may not be easy. This is due to the fact that certain APIs(table, function
module, tcode, etc.) exist in your system built with standard ABAP language are not functional in ABAP
on Cloud. On the front-end level, the major factor of not being able to use SAP GUI changes certain
ABAP based solutions. In addition, there are changes in ABAP syntax as well.
This blogs is a one-stop shop for developers and IT strategist who like to make smooth transition from
standard ABAP to ABAP for Cloud Development. It consists of three parts:
You can choose to just refer to the cheat sheet, or you can deep dive into each solution at later half of this
blog.
Disclaimer:
Availability of ABAP object for cloud development may differ between ABAP Platform
for S4 HANA and BTP ABAP Environment
ABAP object for cloud development may be renewed and deprecated over time
The list covers the most common ABAP topics and Line of Business(from personal
perspective) but certain areas of your interest may be missing. You are welcome to
comment these areas and I maybe able to add them later on.
LoB(Line of Business)
Standard ABAP object/ based solution Public local API to use instead in
ABAP for Cloud Development
Business Partner
Table: CDS view:
KNA1 i_customer
KNB1 i_customercompany
KNVK i_contactperson
KNVP i_custsalespartnerfunc
KNVV i_customersalesarea
LFA1 i_supplier
LFB1 i_suppliercompany
LFM1 i_supplierpurchasingorg
Delivery
Table: CDS view:
LIKP i_deliverydocument
LIPS i_deliverydocumentitem
TVST i_shippingpoint
Finance
Table: CDS view:
BKPF i_journalentry
BSEG i_operationalacctgdocitem
ACDOCA i_journalentryitem
SKA1 i_glaccountlineitem
SKB1 i_glaccountlineitemrawdata
T001 i_glaccountinchartofaccounts
T003 i_glaccountincompanycode
CEPC i_companycode
Function Module: i_profitcenter
BAPI_ACC_EMPLOYEE_EXP_POST Behavior Definition:
BAPI_ACC_INVOICE_RECEIPT_CHECK i_journalentrytp
BAPI_ACC_INVOICE_RECEIPT_POST
BAPI_ACC_DOCUMENT_CHECK
BAPI_ACC_DOCUMENT_POST
BAPI_ACC_ACT_POSTINGS_REVERSE
Finance(Hierarchy)
Table: CDS view:
SETHEADER i_costcenterhierarchy
SETHEADERT i_costcenterhierarchynode
SETLEAF i_costctractivitytypehiernode
SETNODE i_functionalareahierarchy
i_functionalareahiernode
i_profitcenterhierarchy
i_profitcenterhierarchynode
Manufacturing
Table: CDS view:
MARA i_product
MARC i_productqm
MARD i_productsales
MARM i_productprocurement
AFKO i_productplantbasic
AFPO i_productsupplyplanning
AFRU i_productstoragelocationbasic
AFVC i_productunitsofmeasure
AFVU i_manufacturingorder
AFVV i_manufacturingorderitem
MKAL i_mfgorderconfirmation
PLKO i_manufacturingorderoperation
PLPO i_manufacturingorderoperation
Function Module: i_manufacturingorderoperation
BAPI_MATERIAL_MAINTAINDATA_RT i_productionversion
BAPI_MATERIAL_SAVEREPLICA i_billofoperationsgroup
BAPI_MATERIAL_SAVEDATA i_mfgbillofoperationsoperation
BAPI_PLANNEDORDER_GET_DETAIL Behavior Definition:
BAPI_PRODORD_CHANGE i_producttp_2
BAPI_PRODORD_COMPLETE_TECH i_plannedordertp
BAPI_PRODORD_CREATE i_productionordertp
BAPI_PRODORD_RELEASE i_productionordconfirmationtp
BAPI_MATERIAL_STOCK_REQ_LIST i_plndindeprqmttp
i_supplydemanditemtp
Payment
Table: CDS view:
REGUH i_paymentprogramcontrol
REGUP i_paymentproposalpayment
REGUV i_paymentproposalitem
REGUT i_paymentproposalcontrol
IMPORT <parameter name> TO <output variable> FROM TO INTERNAL TABLE / DATA BUFF
MEMORY ID <ID name>.
IMPORT <parameter name> = <outp
ABAP Object
Table: Class:
DD01L xco_cp_abap_dictionary
DD02L xco_cp_database_table
DD02V xco_cp_cds
DD03L xco_cp_data_element
DD04L xco_cp_domain
Access management
SAP Role x Profiles based access management Access Control based on Authority
Type/Field, IAM app, CDS Access C
Business Catalog/Role
Synatax:
break-point
Documents change logs
Table: Change Document Object
CDHDR
CDPOS Class:
Tcode: <name space>CL_<change docume
SCDO cl_chdo_read_tools
Function module: …
CHANGEDOCUMENT_READ_HEADERS For the detailed solution , scroll do
CHANGEDOCUMENT_READ_HEADERS document logging“
Event Blocks
LOAD-OF-PROGRAM Not allowed because 1. Program ob
created 2. No dynpro allowed there
INITIALIZATION
AT SELECTION-SCREEN
START-OF-SELECTION, etc..
Excel upload to itab
Function module: Class:
GUI UPLOAD xco_cp_xlsx
TEXT_CONVERT_XLS_TO_SAP xco_cp_xlsx_selection
ALSM_EXCEL_TO_INTERNAL_TABLE xco_cp_xlsx_read_access
Class: …
cl_fdt_xl_spreadsheet For the detailed solution , scroll do
upload to itab“
Exchange rate
Table: Class:
TCURR cl_exchange_rates(only update and
V_TCURR …
For reading the exchange rate, scr
“Exchange rate“
Forms and printing
Tcode: Tool:
SE71~SE77(SAP Script) Adobe LiveCycle Designer(for desig
SMARTFORMS, SMARTSTYLES(Smartforms) Services:
SFP(Adobe forms) Forms Service by Adobe(for render
Function module: Adobe LiveCycle Designer)
OPEN_FORM Class:
START_FORM cl_print_queue_utils(writing print q
WRITE_FORM Fiori app:
END_FORM Maintain print queues
CLOSE_FORM …
Call Function ‘<Smartform/Adobe form FM>’ For the detailed solution , scroll do
printing“
Fiori programming model
Gateway service builder SEGW RESTful ABAP Programming model
BOPF framework
HTTP Service
Tcode: ABAP object:
SICF Create HTTP service and implemen
Interface: ABAP class
IF_HTTP_EXTENSION
Identity Management
Table: CDS View:
AGR_USERS I_IAMBusinessUserBusinessRole(B
USR01 to Business User)
USR03 I_IAMBusinessRole(Business Role)
Tcode: I_IAMBusinessUserLogonDetails (B
PFCG I_BusinessPartner(Employee gener
SU01 I_WorkplaceAddress(Employee add
SU10 Class:
cl_iam_business_role_factory
cl_iam_business_user_factory
Fiori app:
Maintain Business User
Maintain Business Roles
XML handling
Function module: Class:
SMUM_XML_PARSE cl_demo_xml_access
SMUM_XML_CREATE cl_sxml_string_reader
SMUM_XML_CREATE_X cl_sxml_string_writer
TEXT_CONVERT_XML_TO_SAP cl_sxml_table_reader
Tcode: cl_sxml_table_writer
XSLT_TOOL
Job scheduling
Tcode: Fiori app:
SM36 Application Jobs
SM37 Application Job Templates
Function module: Maintain Job Users
JOB_OPEN Class:
JOB_CLOSE cl_apj_dt_create_content(Creating
JOB_SUBMIT cl_apj_rt_api(Start, change, delete
BP_JOB_DELETE …
BP_JOB_READ For the detailed solution , scroll do
SHOW_JOBSTATE scheduling“
Large object handing(storing as MIME)
1.Use MIME Repository: ABAP RAP with Large object handi
Tcode: @Semantics.largeObject
SMW0 @Semantics.mimeType
Class: …
CL_MIME_REPOSITORY_API For the detailed solution , scroll do
CL_WB_MIME_REPOSITORY object handling“
2.Store as XSTRING in custom table:
OPEN DATASET, TRANSFER, CLOSE DATAET(from
application server)
Function module:
GUI_UPLOAD(upload from local)
SCMS_BINARY_TO_XSTRING(conversion to xstring)
Lock object
Function module: Class:
ENQUEUE_E_TABLE cl_abap_lock_object_factory
DEQUEUE_E_TABLE
DEQUEUE_ALL
Loop group level processing
LOOP AT lt_tab ASSIGNING FIELD-SYMBOL(<tab>). LOOP AT lt_table ASSIGNING FIELD
AT NEW field1.ENDAT. GROUP BY ( field1 = <lw_table>-fie
ENDLOOP. LOOP AT GROUP <lw_table> ASSIG
SYMBOL(<lw_field1>).ENDLOOP.
ENDLOOP.
Number range
Tcode: Class:
SNRO cl_numberrange_objects(maintain n
Table: cl_numberrange_intervals(maintain
NRIV cl_numberrange_runtime(get next n
Function module: number)Fiori app:
NUMBER_GET_NEXT Manage number range intervals
NUMBER_CHECK
Parallel processing
CALL FUNCTION … STARTING NEW TASK Class:
cl_abap_parallelFor the detailed so
to “Parallel processing”
Regex
DATA:lv_input TYPE string VALUE ‘ABCDE12345’. Class:
REPLACE ALL OCCURRENCES OF cl_abap_matcher
REGEX ‘[A-Z]’ IN lv_input cl_abap_regex
WITH space. xco_cp_regular_expression
or
DATA:lv_input TYPE string VALUE
REPLACE ALL OCCURRENCES OF
PCRE ‘[A-Z]’ IN lv_input
WITH space.
RFC
Tcode: ABAP object:
SE37 For Outbound
SM59 – Create outbound service with ser
– Create communication scenario f
For Inbound
– Create function module and set t
RFC
– Create Communication Scenario
there as inbound service
– Create Communication Arrangem
Communication Scenario.
– Client can now trigger the API cre
Arrangement to process the logic i
module.
Class:
cl_rfc_destination_provider(create
destination)
Search string
DATA: text TYPE string VALUE `ABCDEFG`. DATA: text TYPE string VALUE `AB
SEARCH text FOR ‘CD’ IN CHARACTER MODE. FIND ‘CD’ IN text IN CHARACTER M
SOAP Service
Tcode: ABAP object:
SOAMANAGER Create outbound service with serv
SPROXY Create communication scenario fo
Function module based web service creation Class:
cl_soap_destination_provider(creat
destination)
*Inbound SOAP service creation is
System date, time, timezone
sy-datum cl_abap_context_info=>get_system
sy-uzeit cl_abap_context_info=>get_system
sy-zonlo cl_abap_context_info=>get_user_tim
System fields
Everything else than those specified on the right sy-batch, sy-dbcnt, sy-fdpos, sy-in
sy-mandt, sy-msgno,
sy-msgty, sy-msgv1234, sy-subrc, s
uname
Translation
SAP GUI based translation maintenance Class:
xco_cp_i18n
Fiori app:
Maintain translations
…
For the detailed solution , scroll do
“Translation“
Transport request
Table: Class:
E070 xco_cp_cts
E071 xco_cp_transport
UI
SAP GUI/WebGUI ADT output console
Fiori app generate by ABAP UI serv
Write statement Fiori app generate by ABAP2UI5(op
ALV …
For the detailed solution , scroll do
UNIX timestamp
No easy way to convert UNIX timestamps without Class:
calculations. xco_cp=>sy->unix_timestamp( )
Units of Measurement
Table: Class:
T006* cl_uom_maintenance(Units of Meas
Function Module: cl_uom_dim_maintenance(Dimensio
UNIT_CONVERSION_SIMPLE cl_uom_conversion
UNIT_GET CDS View:
MC_UNIT_CONVERSION I_UnitOfMeasure
CONVERSION_EXIT_CUNIT_INPUT
Tcode:
CUNI
ABAP memory
You may use BUFFER or INTERNAL TABLE to exchange ABAP memory but former is much simpler to
use. BUFFER transfers to cluster data the buffer data object which is in xstring format.
The main difference is that passing data using MEMORY ID is not supported anymore. Therefore only
these 2 options are available.
Access management
* Below example demonstrates how to restrict access inside IAM app. In addition, you may choose to
implement Access Control on your CDS Data Definition.
Similar to in SAP on-premise access management, Authorization Object and Role are still relevant in
ABAP for Cloud development. The big difference is that User Profiles is not used anymore and instead,
IAM App and Business Catalog are used to map Authorization Object and Business Role. User Profile is
where the fine-grained access control is setup, so that some users have display access to certain table
objects, while some users don’t. This is in turn done by IAM App and Access Control Object in the ABAP
for Cloud development.
The actual authorization check uses the same ABAP syntax, AUTHORITY-CHECK OBJECT. This
checks the authorization object and activity value, which hasn’t changed from standard ABAP.
In the Behavior Handler class, implement the authorization check in method “get_global_authorizations”.
Set a debug on this logic so that we see what is going on.
IF requested_authorizations-%create EQ if_abap_behv=>mk-on.
* check create authorization
AUTHORITY-CHECK OBJECT 'ZAUTH_OBJ' ID 'ACTVT' FIELD '01'.
result-%create = COND #( WHEN sy-subrc = 0 THEN
if_abap_behv=>auth-allowed ELSE
if_abap_behv=>auth-unauthorized ).
ENDIF.
IF requested_authorizations-%update EQ if_abap_behv=>mk-on.
* check update authorization
AUTHORITY-CHECK OBJECT 'ZAUTH_OBJ' ID 'ACTVT' FIELD '02'.
result-%update = COND #( WHEN sy-subrc = 0 THEN
if_abap_behv=>auth-allowed ELSE
if_abap_behv=>auth-unauthorized ).
ENDIF.
Now go to the Fiori application generated from the Odata service and go to the item to edit the record. The
debugger should start and you can see that the result of authorization check for update(sy-subrc = 0) is OK.
This is because in IAM app, 02(change) is allowed.
Now let’s create a new record. This time, the authority check fails because IAM app does not allow
01(create).
Calendar(Factory calendar)
This example shows part of the feature to handle factory calendar from released API
cl_fhc_calendar_runtime.
DATA(lo_holidaycalendar) =
cl_fhc_calendar_runtime=>create_holidaycalendar_runtime(
EXPORTING
iv_holidaycalendar_id = 'SAP_CA' ). "Canada
lo_holidays->get_text(
EXPORTING
iv_language = sy-langu
RECEIVING
rs_text = DATA(ls_text)
).
Log Field values for insert – Create log entry record for each field value that’s entered.
Log Initial values for insert – Create log entry record for each field value even if they are empty. This
created high volumn of change doucment records. Use with caution.
Log Field values for deletion – When object is deleted, create log entry record for each field value that’s
entered.
Log Initial values for deletion – When object is deleted, create log entry record for each field value even
if they are empty. This created high volumn of change doucment records. Use with caution.
3. Creating change document entry. Use the generated class to write change document logging. In the
below example, it’s logging update of table field
DATA:lt_xzcd_test TYPE zcl_zobj_cd_test_chdo=>tt_zcd_test,
lt_yzcd_test TYPE zcl_zobj_cd_test_chdo=>tt_zcd_test,
lv_username TYPE if_chdo_object_tools_rel=>ty_cdusername.
DATA(lv_sys_datum) = cl_abap_context_info=>get_system_date( ).
DATA(lv_sys_time) = cl_abap_context_info=>get_system_time( ).
DATA(lv_user) = cl_abap_context_info=>get_user_formatted_name( ).
lv_username = lv_user.
zcl_zobj_cd_test_chdo=>write(
EXPORTING
objectid = 'ZOBJ_CD_TEST'
utime = lv_sys_time
udate = lv_sys_datum
username = lv_username
* planned_change_number =
object_change_indicator = 'U'
* planned_or_real_changes =
* no_change_pointers =
xzcd_test = lt_xzcd_test
yzcd_test = lt_yzcd_test
upd_zcd_test = 'U'
IMPORTING
changenumber = DATA(lv_changenumbner)
).
4. Reading the change document entry. In the generated class, add method implementation
“if_chdo_enhancements~authority_check” and put below code inside. This method is for implementing
your own autheority check, but in the below example, it is simply returning rv_is_authorized = ‘X’,
meaning the authroity check is succesfull.
METHOD if_chdo_enhancements~authority_check.
"No Auth check performed. Allow all
rv_is_authorized = 'X'.
ENDMETHOD.
cl_chdo_read_tools=>changedocument_read(
EXPORTING
i_objectclass = 'ZOBJ_CD_TEST'
IMPORTING
et_cdredadd_tab = DATA(lt_cdredadd_tab)
).
Step1. Upload excel file by RAP Odata service described in “Large object handing(storing as MIME)”.
This way, the excel data is transformed to XSTRING.
Step2. Read the XSTRING to with xco_cp_xlsx. This class will read worksheet specified. Prepare an
internal table that matches the file structure of excel. Use IF_XCO_XLSX_RA_WORKSHEET to select
the range of the worksheet. Finally, use write_to method in if_xco_xlsx_ra_rs_operation_fc to write the
values in internal table.
TYPES:
BEGIN OF ts_row,
Column1 TYPE string,
Column2 TYPE string,
END OF ts_row,
DATA(lo_selection_pattern) = xco_cp_xlsx_selection=>pattern_builder-
>simple_from_to( )->get_pattern( ).
lo_worksheet->select( lo_selection_pattern
)->row_stream(
)->operation->write_to( REF #( lt_rows )
)->if_xco_xlsx_ra_operation~execute( ).
Exchange rate
The released API cl_exchange_rates performs currency conversion and exchange rate update, but it does
not have method to read the list of exchange rate. To workaround this, we can use standard app “Upload
Business Configuration” from Fiori Launchpad. Role “SAP_CA_BC_IC_LND_PC” is required to access
this, or assign role template “SAP_BR_BPC_EXPERT”.
This app is meant to maintain your custom Z customizing table but by default, SAP has generously
allowed the maintenance of below standard currency tables.
Preparation
Forms Service by Adobe and Forms Service by Adobe API are required in Business Technology Platform.
On the service instance of Forms Service by Adobe API, create a service key. Finally, create destination
for Forms Service by Adobe instance.
Since there is no SAP Script or Smartforms, Adobe LiveCycle Designer must be used to create form
layout. Follow note 2187332 to install it to your local PC.
Once the template is created, download in Adobe XML Form (*xdp), then upload this to Forms Template
Store.
Rendering Forms
Rendering forms requies Forms Service by Adobe. Follow my blog below to set it up and consume from
ABAP. https://blogs.sap.com/2022/12/14/get-started-with-forms-service-by-adobe-rest-api-in-btp/
Render PDF by calling Forms Service by Adobe API URI “/v1/adsRender/pdf”. You can find the complete
list of supported URI of this API here. https://adsrestapi-
formsprocessing.cfapps.eu10.hana.ondemand.com/swagger
The rendering will return the PDF content result with base64 encoded string.
Viewing PDF
To view the content, we must first convert base64 encoded content to xstring. Then upload this xstring as
mime object in your Ztable. This Z table can be created following “Excel upload to itab” part of this blog.
"Upload the xstring to z table, so the content can be viewed with RAP
generated report
DATA: lt_input TYPE STANDARD TABLE OF zblob_test.
lt_input = VALUE #( ( docnum = '1000000001' filename = 'test.pdf' attachment =
lv_pdf_xstring mimetype =
'application/pdf' )
).
INSERT zblob_test FROM TABLE @lt_input.
Go to the RAP service and the inserted record is disaplayed. Click on the attachment and the generated
PDF from Form Service by Adobe will open.
Print Queue
Create a print queue by using cl_print_queue_utils. The below examples sends data from table zcd_test
and send it to print queue.
The print queue can be viewed in Fiori app Maintain Print Queue.
If you want to integrate physical printer to ABAP Environment, follow this blog that guides you from
setting up communication scnerio and installing Cloud Print Manager.
https://blogs.sap.com/2017/08/07/cloud-print-manager-installation-and-configuration/
Job scheduling
Required roles: Application Jobs(SAP_CORE_BC_APJ_JCE), Application Job
Templates(SAP_CORE_BC_APJ_TPL), Maintain Job Users(SAP_CORE_BC_APJ_USR_PC)
1. There are predefined job template to schedule your job from. If none of them meet your need, you must
create your custom job template.
2. To create your custom template, first define your job entry by creating below class. This defines design
time information on your job.
ENDMETHOD.
METHOD if_apj_rt_exec_object~execute.
"Execution logic when the job is started
TYPES ty_id TYPE c LENGTH 10.
" Getting the actual parameter values(Just for show. Not needed for the logic
below)
LOOP AT it_parameters INTO DATA(ls_parameter).
CASE ls_parameter-selname.
WHEN 'S_ID'.
APPEND VALUE #( sign = ls_parameter-sign
option = ls_parameter-option
low = ls_parameter-low
high = ls_parameter-high ) TO s_id.
WHEN 'P_DESCR'.
p_descr = ls_parameter-low.
WHEN 'P_SIMUL'.
p_simul = ls_parameter-low.
ENDCASE.
ENDLOOP.
"Implement core process you want to execute with this job
".......................
".......................
".......................
ENDMETHOD.
ENDCLASS.
3. Then create another class to create the job catalog and job template from the job you defined. Note that
you need package and transport request.
PUBLIC SECTION.
INTERFACES if_oo_adt_classrun.
PROTECTED SECTION.
PRIVATE SECTION.
ENDCLASS.
lo_apj_create->create_job_template_entry(
iv_template_name = 'Z_TESTJOB_TEMPLATE'
iv_catalog_name = 'Z_TESTJOB_CATALOG'
iv_text = 'Job template text'
it_parameters = lt_parameters
iv_transport_request = 'H01K900008'
iv_package = 'ZSANDBOX'
).
out->write( |Job template created successfully| ).
ENDMETHOD.
ENDCLASS.
4. After successful execution, go to Fiori app maintain Application Job Template and the new job template
is created.
5. Use Fiori app Application jobs to create a job with the job template.
7. If you want to start, change, delete jobs programmatically, use class cl_apj_rt_api.
Large object handling
The completely guide to storing large object in database table can be found in Streams in RAP : Uploading
PDF , Excel and Other Files in RAP Application | SAP Blogs
Parallel processing
Here is example use case to trigger parallel processing.
Parallel process 1
PROTECTED SECTION.
PRIVATE SECTION.
DATA gt_time_1 TYPE TABLE OF cl_abap_context_info=>ty_system_time.
DATA gv_wp_number TYPE char3.
ENDCLASS.
gv_wp_number = '001'.
ENDMETHOD.
METHOD get_time.
rt_time = gt_time_1.
ENDMETHOD.
METHOD get_wp_number.
rv_wp_number = gv_wp_number.
ENDMETHOD.
ENDCLASS.
Parallel process 2
CLASS zcl_paralell2 DEFINITION
PUBLIC
FINAL
CREATE PUBLIC .
PUBLIC SECTION.
TYPES ty_t_time TYPE STANDARD TABLE OF cl_abap_context_info=>ty_system_time
WITH DEFAULT KEY.
INTERFACES if_abap_parallel.
METHODS get_time RETURNING VALUE(rt_time) TYPE ty_t_time.
METHODS get_wp_number RETURNING VALUE(rv_wp_number) TYPE char3.
PROTECTED SECTION.
PRIVATE SECTION.
DATA gt_time_2 TYPE TABLE OF cl_abap_context_info=>ty_system_time.
DATA gv_wp_number TYPE char3.
ENDCLASS.
lo_parallel->run_inst(
EXPORTING
p_in_tab = VALUE #( ( lo_instance_1 ) ( lo_instance_2 ) )
IMPORTING
p_out_tab = DATA(lt_out_tab)
).
Translation
Since there is no GUI, the GUI based translation maintenance is no longer available. For this purpose,
Maintain Translations app is used.
Define the source language and target language. Demonstrate translation for metadata extension for RAP
based application.
XLF file is downloaded and this is the file that defines the translation. Add target translation of Japanese.
Upload the same file back in the Maintain Translation app and don’t forget to publish the translation.
Start the application in Japanese and English. The field names are translated based on the uploaded XLF
file.
UI
ABAP Development Tool output console
Since there is no SAP GUI, write statement or ALV output is not possible. The easiest way in ABAP for
Cloud Development is to use output console in ADT. Wrap IF_OO_ADT_CLASSRUN into your class and
use it’s Write method to output data.
This output is only suited for simple string output. It is not meant only for developer, and not for
generating report for business application user.
Supported feature:
List page, object page to display data
Search, filter, variant
CRUD operation for backend database
Visualization(graph, chart)
Screen logic(Validation, conversion, user event)
Draft & Copy capabilitties
Inline edit
Locking mechanism
Limitation:
All limitation with Fiori Element apply(No flexibility in UI, limitation in screen control, etc.)
Must be deployed outside of ABAP Environment, using WebEDI such as Business Application
Studio or Visual Studio.
Highlights:
Avaialble for ABAP releases (from NW 7.02 to ABAP 2305)
Avaialble for both ABAP for Cloud and Standard ABAP language version
Supports Selection Screens, Tables, Lists, Popups, F4-Helps, MIME Editor, File
Upload/download, Chart/Graph, Side Effects, etc..
Supports all Fiori Elements floorplan
If you want to create more flexible UI with ABAP, consider using ABAP2UI5 instead of ABAP
RAP(below is a sample UI I created with ABAP2UI5).