Skip to content

Quick Start

A short tour through the most useful helpers. Every snippet works on every supported release.

Strings

abap
DATA(lv_upper) = zabaputil_cl_util=>c_trim_upper( ` Hello World  ` ). " => 'HELLO WORLD'
DATA(lv_lower) = zabaputil_cl_util=>c_trim_lower( ` Hello World  ` ). " => 'hello world'
DATA(lv_trim)  = zabaputil_cl_util=>c_trim( ` Hello World  ` ).       " => 'Hello World'

IF zabaputil_cl_util=>c_starts_with( val = 'Hello' prefix = 'He' ) = abap_true.
  " ...
ENDIF.

See Strings for the full list.

JSON

abap
" Structure → JSON
DATA(lv_json) = zabaputil_cl_util=>json_stringify( ls_flight ).
" => '{"CARRID":"LH","CONNID":"0400","FLDATE":"2025-01-15"}'

" JSON → Structure
zabaputil_cl_util=>json_parse(
    val  = lv_json
    data = ls_flight ).

XML

abap
" Any ABAP data → XML (asXML / S-RTTI)
DATA(lv_xml) = zabaputil_cl_util=>xml_stringify( ls_data ).

" XML → ABAP
zabaputil_cl_util=>xml_parse(
    xml = lv_xml
    any = ls_data ).

UUIDs

abap
DATA(lv_uuid_32) = zabaputil_cl_util=>uuid_get_c32( ). " => '550E8400E29B41D4A716446655440000'
DATA(lv_uuid_22) = zabaputil_cl_util=>uuid_get_c22( ). " => 'VQ6EAOKbQdSnFkRmVU'

RTTI

abap
" Class existence
IF zabaputil_cl_util=>rtti_check_class_exists( 'ZCL_MY_CLASS' ) = abap_true.
  " ...
ENDIF.

" Type name of any value
DATA(lv_type) = zabaputil_cl_util=>rtti_get_type_name( ls_flight ). " => 'SFLIGHT'

" Build a dynamic table by DDIC name
DATA(lr_table) = zabaputil_cl_util=>rtti_create_tab_by_name( 'SFLIGHT' ).

URL Parameters

abap
DATA(lv_id) = zabaputil_cl_util=>url_param_get(
    val = 'ID'
    url = '/sap/bc/http/myapp?ID=12345&MODE=edit' ). " => '12345'

DATA(lv_url) = zabaputil_cl_util=>url_param_create_url(
    t_params = VALUE #(
        ( n = 'ID'   v = '12345' )
        ( n = 'MODE' v = 'edit' ) ) ). " => 'ID=12345&MODE=edit'

Base64 & Encoding

abap
DATA(lv_xstring) = zabaputil_cl_util=>conv_get_xstring_by_string( 'Hello' ).
DATA(lv_string)  = zabaputil_cl_util=>conv_get_string_by_xstring( lv_xstring ).

DATA(lv_base64)  = zabaputil_cl_util=>conv_encode_x_base64( lv_xstring ).
DATA(lv_decoded) = zabaputil_cl_util=>conv_decode_x_base64( lv_base64 ).

CSV / XLSX

abap
" Internal table → CSV / XLSX
DATA(lv_csv)  = zabaputil_cl_util=>itab_get_csv_by_itab( lt_flights ).
DATA(lv_xlsx) = zabaputil_cl_util=>conv_get_xlsx_by_itab( lt_flights ).

" CSV / XLSX → internal table
DATA(lr_itab) = zabaputil_cl_util=>itab_get_itab_by_csv( lv_csv ).

zabaputil_cl_util=>conv_get_itab_by_xlsx(
    EXPORTING val    = lv_xlsx
    IMPORTING result = lr_data ).

Timestamps

abap
DATA(lv_now)  = zabaputil_cl_util=>time_get_timestampl( ).
DATA(lv_past) = zabaputil_cl_util=>time_subtract_seconds( time = lv_now seconds = 3600 ).
DATA(lv_date) = zabaputil_cl_util=>time_get_date_by_stampl( lv_now ).
DATA(lv_time) = zabaputil_cl_util=>time_get_time_by_stampl( lv_now ).

Error Handling

abap
" Raise conditionally
zabaputil_cl_util=>x_check_raise( when = xsdbool( sy-subrc <> 0 ) ).

" Raise immediately
zabaputil_cl_util=>x_raise( 'Something went wrong' ).

" Get the last T100 message text from any exception
TRY.
    " ...
  CATCH cx_root INTO DATA(lx).
    DATA(lv_msg) = zabaputil_cl_util=>x_get_last_t100( lx ).
ENDTRY.

Context

abap
DATA(lv_user)  = zabaputil_cl_util=>context_get_user_tech( ).      " => 'DEVELOPER'
DATA(lv_cloud) = zabaputil_cl_util=>context_check_abap_cloud( ).   " => abap_true / abap_false
DATA(lt_stack) = zabaputil_cl_util=>context_get_callstack( ).

HTTP Handler

abap
" On-Premise
DATA(lo_http) = zabaputil_cl_util_http=>factory( server = lo_server ).

" ABAP Cloud
DATA(lo_http) = zabaputil_cl_util_http=>factory_cloud( req = lo_req res = lo_res ).

" Same interface in both worlds
DATA(ls_req_info) = lo_http->get_req_info( ).
lo_http->set_cdata( lv_json ).
lo_http->set_status( code = 200 reason = 'OK' ).

Logging

abap
DATA(lo_log) = NEW zabaputil_cl_util_log( ).

lo_log->info( `Step 1 completed` )
       ->success( `Imported 100 records` )
       ->warning( `Skipped 3 invalid rows` ).

DATA(lv_csv)  = lo_log->to_csv( ).
DATA(lv_xlsx) = lo_log->to_xlsx( ).
DATA(lt_msg)  = lo_log->to_msg( ).

Continue with the API Reference to drill into individual helpers.

Released under the MIT License.