Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -345,6 +345,8 @@ Write everything directly in `main` — no method encapsulation needed. Count on

When the logic no longer fits inside `main`, always extract exactly `on_init` and `on_event` as the first step — never use other method names for this purpose. `main` then becomes a pure dispatcher that calls these two methods. Only add further methods (`view_display`, `data_read`, etc.) when they are actually needed.

**Never create a pass-through method with only one statement.** If an extracted method (e.g. `on_init`) would contain only a single call, replace the method call in the dispatcher with that single call directly — and omit the pass-through method entirely. For example, if `on_init` would only call `view_display( )`, write `view_display( )` directly in the `IF client->check_on_init( ).` branch instead.

The following is the **maximum structure**. Only add methods that are actually needed.

### Event handler sub-methods
Expand Down
12 changes: 6 additions & 6 deletions src/z2ui5_cl_demo_app_002.clas.abap
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,15 @@ CLASS z2ui5_cl_demo_app_002 DEFINITION PUBLIC.
INTERFACES z2ui5_if_app.

TYPES:
BEGIN OF suggestion_item,
BEGIN OF ty_s_suggestion_item,
value TYPE string,
descr TYPE string,
END OF suggestion_item.
END OF ty_s_suggestion_item.
TYPES:
BEGIN OF combobox_item,
BEGIN OF ty_s_combobox_item,
key TYPE string,
text TYPE string,
END OF combobox_item.
END OF ty_s_combobox_item.

DATA:
BEGIN OF s_screen,
Expand All @@ -29,8 +29,8 @@ CLASS z2ui5_cl_demo_app_002 DEFINITION PUBLIC.
check_switch_02 TYPE abap_bool VALUE abap_false,
END OF s_screen.

DATA t_suggestions TYPE STANDARD TABLE OF suggestion_item WITH EMPTY KEY.
DATA t_combo TYPE STANDARD TABLE OF combobox_item WITH EMPTY KEY.
DATA t_suggestions TYPE STANDARD TABLE OF ty_s_suggestion_item WITH EMPTY KEY.
DATA t_combo TYPE STANDARD TABLE OF ty_s_combobox_item WITH EMPTY KEY.

PROTECTED SECTION.
DATA client TYPE REF TO z2ui5_if_client.
Expand Down
5 changes: 2 additions & 3 deletions src/z2ui5_cl_demo_app_004.clas.abap
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,9 @@ CLASS z2ui5_cl_demo_app_004 DEFINITION PUBLIC.
PUBLIC SECTION.
INTERFACES z2ui5_if_app.

DATA view_main TYPE string.

PROTECTED SECTION.
DATA client TYPE REF TO z2ui5_if_client.
DATA client TYPE REF TO z2ui5_if_client.
DATA view_main TYPE string.

METHODS on_init.
METHODS on_event.
Expand Down
5 changes: 2 additions & 3 deletions src/z2ui5_cl_demo_app_006.clas.abap
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,11 @@ CLASS z2ui5_cl_demo_app_006 DEFINITION PUBLIC.
END OF ty_s_row.
DATA t_tab TYPE STANDARD TABLE OF ty_s_row WITH EMPTY KEY.

PROTECTED SECTION.
DATA client TYPE REF TO z2ui5_if_client.
DATA check_ui5 TYPE abap_bool.
DATA key TYPE string.

PROTECTED SECTION.
DATA client TYPE REF TO z2ui5_if_client.

METHODS on_init.
METHODS on_event.
METHODS view_display.
Expand Down
185 changes: 102 additions & 83 deletions src/z2ui5_cl_demo_app_008.clas.abap
Original file line number Diff line number Diff line change
@@ -1,133 +1,152 @@
CLASS z2ui5_cl_demo_app_008 DEFINITION PUBLIC.

PUBLIC SECTION.

INTERFACES z2ui5_if_app.

PROTECTED SECTION.
DATA client TYPE REF TO z2ui5_if_client.
DATA check_strip_active TYPE abap_bool.
DATA strip_type TYPE string.
DATA strip_type TYPE string.

METHODS on_event.
METHODS view_display.

PROTECTED SECTION.
PRIVATE SECTION.
ENDCLASS.



CLASS z2ui5_cl_demo_app_008 IMPLEMENTATION.


METHOD z2ui5_if_app~main.

CASE client->get( )-event.

WHEN 'BUTTON_MESSAGE_BOX_CONFIRM'.
client->message_box_display( text = 'Approve purchase order 12345?'
type = 'confirm' ).

WHEN 'BUTTON_MESSAGE_BOX_ALERT'.
client->message_box_display( text = 'The quantity you have reported exceeds the quantity planned.'
type = 'alert' ).

WHEN 'BUTTON_MESSAGE_BOX_ERROR'.
client->message_box_display( text = 'Select a team in the "Development" area.' && cl_abap_char_utilities=>cr_lf &&
'"Marketing" isn’t assigned to this area.' type = 'error' ).

WHEN 'BUTTON_MESSAGE_BOX_INFO'.
client->message_box_display( 'Your booking will be reserved for 24 hours.' ).

WHEN 'BUTTON_MESSAGE_BOX_WARNING'.
client->message_box_display( text = 'The project schedule was last updated over a year ago.'
type = 'warning' ).
me->client = client.
IF client->check_on_init( ).
view_display( ).
ELSEIF client->check_on_event( ).
on_event( ).
ENDIF.

WHEN 'BUTTON_MESSAGE_BOX_SUCCESS'.
client->message_box_display( text = 'Project 1234567 was created and assigned to team "ABC".'
type = 'success' ).
ENDMETHOD.

WHEN 'BUTTON_MESSAGE_TOAST'.
client->message_toast_display( 'this is a message toast' ).

WHEN 'BUTTON_MESSAGE_TOAST2'.
client->message_toast_display( text = 'this is a message toast'
at = 'left bottom'
offset = '0 -15'
animationtimingfunction = `ease-in`
class = 'my-style' ).
METHOD on_event.

WHEN 'BUTTON_MESSAGE_STRIP_INFO'.
CASE client->get( )-event.
WHEN `BUTTON_MESSAGE_BOX_CONFIRM`.
client->message_box_display(
text = `Approve purchase order 12345?`
type = `confirm` ).
WHEN `BUTTON_MESSAGE_BOX_ALERT`.
client->message_box_display(
text = `The quantity you have reported exceeds the quantity planned.`
type = `alert` ).
WHEN `BUTTON_MESSAGE_BOX_ERROR`.
client->message_box_display(
text = |Select a team in the "Development" area.{ cl_abap_char_utilities=>newline }"Marketing" isn't assigned to this area.|
type = `error` ).
WHEN `BUTTON_MESSAGE_BOX_INFO`.
client->message_box_display( `Your booking will be reserved for 24 hours.` ).
WHEN `BUTTON_MESSAGE_BOX_WARNING`.
client->message_box_display(
text = `The project schedule was last updated over a year ago.`
type = `warning` ).
WHEN `BUTTON_MESSAGE_BOX_SUCCESS`.
client->message_box_display(
text = `Project 1234567 was created and assigned to team "ABC".`
type = `success` ).
WHEN `BUTTON_MESSAGE_TOAST`.
client->message_toast_display( `this is a message toast` ).
WHEN `BUTTON_MESSAGE_TOAST2`.
client->message_toast_display(
text = `this is a message toast`
at = `left bottom`
offset = `0 -15`
animationtimingfunction = `ease-in`
class = `my-style` ).
WHEN `BUTTON_MESSAGE_STRIP_INFO`.
check_strip_active = abap_true.
strip_type = 'Information'.

WHEN 'BUTTON_MESSAGE_STRIP_ERROR'.
strip_type = `Information`.
WHEN `BUTTON_MESSAGE_STRIP_ERROR`.
check_strip_active = abap_true.
strip_type = 'Error'.

WHEN 'BUTTON_MESSAGE_STRIP_SUCCESS'.
strip_type = `Error`.
WHEN `BUTTON_MESSAGE_STRIP_SUCCESS`.
check_strip_active = abap_true.
strip_type = 'Success'.
strip_type = `Success`.
ENDCASE.

DATA(view) = z2ui5_cl_xml_view=>factory( ).
view_display( ).

ENDMETHOD.


METHOD view_display.

DATA(view) = z2ui5_cl_xml_view=>factory( ).
DATA(page) = view->shell(
)->page(
title = 'abap2UI5 - Messages'
navbuttonpress = client->_event_nav_app_leave( )
shownavbutton = abap_true
title = `abap2UI5 - Messages`
navbuttonpress = client->_event_nav_app_leave( )
shownavbutton = client->check_app_prev_stack( )
)->header_content(
)->link(
)->get_parent( ).

IF check_strip_active = abap_true.
page->message_strip( text = 'This is a Message Strip'
type = strip_type ).
page->message_strip(
text = `This is a Message Strip`
type = strip_type ).
ENDIF.

page->grid( 'L6 M12 S12'
)->content( 'layout'
)->simple_form( 'Message Box' )->content( 'form'
page->grid( `L6 M12 S12`
)->content( `layout`
)->simple_form( `Message Box`
)->content( `form`
)->button(
text = 'Confirm'
press = client->_event( 'BUTTON_MESSAGE_BOX_CONFIRM' )
text = `Confirm`
press = client->_event( `BUTTON_MESSAGE_BOX_CONFIRM` )
)->button(
text = 'Alert'
press = client->_event( 'BUTTON_MESSAGE_BOX_ALERT' )
text = `Alert`
press = client->_event( `BUTTON_MESSAGE_BOX_ALERT` )
)->button(
text = 'Error'
press = client->_event( 'BUTTON_MESSAGE_BOX_ERROR' )
text = `Error`
press = client->_event( `BUTTON_MESSAGE_BOX_ERROR` )
)->button(
text = 'Info'
press = client->_event( 'BUTTON_MESSAGE_BOX_INFO' )
text = `Info`
press = client->_event( `BUTTON_MESSAGE_BOX_INFO` )
)->button(
text = 'Warning'
press = client->_event( 'BUTTON_MESSAGE_BOX_WARNING' )
text = `Warning`
press = client->_event( `BUTTON_MESSAGE_BOX_WARNING` )
)->button(
text = 'Success'
press = client->_event( 'BUTTON_MESSAGE_BOX_SUCCESS' ) ).
text = `Success`
press = client->_event( `BUTTON_MESSAGE_BOX_SUCCESS` ) ).

page->grid( 'L6 M12 S12'
)->content( 'layout'
)->simple_form( 'Message Strip' )->content( 'form'
page->grid( `L6 M12 S12`
)->content( `layout`
)->simple_form( `Message Strip`
)->content( `form`
)->button(
text = 'success'
press = client->_event( 'BUTTON_MESSAGE_STRIP_SUCCESS' )
text = `success`
press = client->_event( `BUTTON_MESSAGE_STRIP_SUCCESS` )
)->button(
text = 'error'
press = client->_event( 'BUTTON_MESSAGE_STRIP_ERROR' )
text = `error`
press = client->_event( `BUTTON_MESSAGE_STRIP_ERROR` )
)->button(
text = 'information'
press = client->_event( 'BUTTON_MESSAGE_STRIP_INFO' ) ).
text = `information`
press = client->_event( `BUTTON_MESSAGE_STRIP_INFO` ) ).

page->grid( 'L6 M12 S12'
)->content( 'layout'
)->simple_form( 'Display' )->content( 'form'
page->grid( `L6 M12 S12`
)->content( `layout`
)->simple_form( `Display`
)->content( `form`
)->button(
text = 'Message Toast'
press = client->_event( 'BUTTON_MESSAGE_TOAST' )
)->button(
text = 'Message Toast Customized'
press = client->_event( 'BUTTON_MESSAGE_TOAST2' ) ).

text = `Message Toast`
press = client->_event( `BUTTON_MESSAGE_TOAST` )
)->button(
text = `Message Toast Customized`
press = client->_event( `BUTTON_MESSAGE_TOAST2` ) ).

client->view_display( view->stringify( ) ).

ENDMETHOD.

ENDCLASS.
Loading
Loading