abap2UI5
Version 1.144.1

#17 What the Client Can Do ​

The app implements one interface with one method. The single parameter of that method is the other interface — z2ui5_if_client — and it is the whole of what an app can ask the framework for. Worth knowing by shape before knowing it by name, because the shape is refreshingly small:

The app wants to… …and calls
show a screen view_display( ), popup_display( ), popover_display( ), nest_view_display( )
put ABAP data on that screen _bind( ) — the attribute, by reference, both directions
find out what the user did check_on_event( ), get_event( ), get_event_arg( )
find out why main( ) was called check_on_init( ), check_on_navigated( )
talk to the user message_toast_display( ), message_box_display( )
move to another app and back nav_app_call( ), nav_app_leave( ), get_app_prev( )
ask the browser to do something follow_up_action( ) with a cs_event constant
know where it runs get( ) — device, launchpad, URL parameters, the raw event

That is a framework you can hold in your head. A design goal, not an accident.

The two rows that carry the most weight are the smallest. _bind( ) takes an ABAP variable and returns the binding path the view needs; the framework builds the model around whatever was bound, ships it, and writes the user's changes back into the same variable:

abap
    )->tag( `Input`
        )->a( n = `value` v = client->_bind( customer )

And _event( ) names what the frontend should send when a control fires:

abap
    )->tag( `Button`
        )->a( n = `text`  v = `Save`
        )->a( n = `press` v = client->_event( `SAVE` ) ).

Both are string generators, and that is all they are. Nothing is registered, nothing is declared: the attribute name and the event name are written into the view, and read back out of the request.

The last row is the escape hatch for everything that is a browser matter rather than an ABAP matter — focus a field, scroll, copy to the clipboard, download a file, set the tab title, raise the model size limit. Each is a constant in cs_event, and each is one call:

abap
    client->follow_up_action( val   = client->cs_event-set_focus
                              t_arg = VALUE #( ( `inputCustomer` ) ) ).

That is the whole API surface an app ever touches. The full list with every parameter is on the Client API page, generated from the interface itself, so it cannot drift from what the framework actually offers.

One method in, one interface out. Everything an app can do is a method on client.

Edit this page on GitHub ↗ Last updated: