diff --git a/CLAUDE.md b/CLAUDE.md index fdecab57..6a3e4b0c 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -41,6 +41,7 @@ All serialized files (`.abap`, `.xml`, and any other abapGit-managed file types) - Classes are **not** `FINAL` — do not add the `FINAL` keyword to class definitions. - Use `DEFINITION PUBLIC.` — never `DEFINITION PUBLIC CREATE PUBLIC.` (`CREATE PUBLIC` is the default and adds unnecessary overhead). - Always include `PROTECTED SECTION.` and `PRIVATE SECTION.` in the class definition, even if empty. +- Keep `PRIVATE SECTION.` always empty — declare everything at `PROTECTED SECTION.` level at most. - In every section (`PUBLIC SECTION.`, `PROTECTED SECTION.`), always follow this declaration order: `TYPES` first, then `DATA`, then `METHODS`. - **Blank lines — class definition** (`EMPTY_LINES_IN_CLASS_DEFINITION`): - Add one blank line above each section keyword (`PUBLIC SECTION.`, `PROTECTED SECTION.`, `PRIVATE SECTION.`) — unless the preceding section is empty. @@ -58,6 +59,17 @@ All serialized files (`.abap`, `.xml`, and any other abapGit-managed file types) - Max 1 consecutive blank line inside a method body. - Always add 1 blank line **before** an `IF` block — **except** when the method is a pure dispatcher (its only purpose is to jump to other methods, with no own logic before the `IF`). In that case, omit the blank line between the opening assignment and the `IF`. - Always add 1 blank line **before** `ELSEIF` and `ELSE`. + - In setup methods (`on_init` and similar), add 1 blank line between the last data assignment and the first non-assignment statement (e.g. before `view_display( )`): + ```abap + METHOD on_init. + + price = `1234`. + currency = `EUR`. + + view_display( ). + + ENDMETHOD. + ``` - If a branch (`IF`, `ELSEIF`, `ELSE`) contains **more than one statement**, add 1 blank line directly after the condition line as well: ```abap me->client = client. @@ -264,6 +276,63 @@ Key rules for `z2ui5_cl_util_xml`: - Only declare namespaces that are actually used in the view - `stringify()` on the factory root produces the complete XML string +#### Method chaining + +Each call in a chain must start on its own line — never place two `->_()` / `->__()` calls on the same line: + +```abap +" Wrong +DATA(page) = root->__( `Shell` )->__( n = `Page` + +" Correct +DATA(page) = root->__( `Shell` + )->__( n = `Page` +``` + +Chain continuations (`)->`) are indented 3 spaces relative to the statement's base indentation. + +#### Parameter alignment + +When `p` appears on a continuation line, align it directly under `n` — one space after the opening `(`: + +```abap +" Wrong — p is one space too far right +)->_( n = `Input` + p = VALUE #( ... ) ). + +" Correct — p directly under n +)->_( n = `Input` + p = VALUE #( ... ) ). +``` + +Continuation lines inside `VALUE #( )` align with the first tuple `(`: + +```abap +)->_( n = `Input` + p = VALUE #( ( n = `type` v = `Number` ) + ( n = `value` v = client->_bind_edit( qty ) ) ) ). +``` + +#### VALUE #( ) formatting + +In `VALUE #( )` constructor expressions with named fields, use **either** entirely inline (all fields on one line) **or** each field on its own line — never mix both styles in the same expression: + +```abap +" Wrong — mixed +t_products = VALUE #( + ( name = `Notebook Basic 15` product_id = `HT-1000` supplier_name = `Very Best Screens` + dimensions = `30 x 18 x 3 cm` weight_measure = `4.2` weight_unit = `KG` ) ). + +" Correct — one field per line, = signs aligned +t_products = VALUE #( + ( name = `Notebook Basic 15` + product_id = `HT-1000` + supplier_name = `Very Best Screens` + dimensions = `30 x 18 x 3 cm` + weight_measure = `4.2` + weight_unit = `KG` ) ). +``` + ## App Structure ### Simple apps (< 50 lines in `main`) diff --git a/src/02/z2ui5_cl_demo_app_355.clas.abap b/src/02/z2ui5_cl_demo_app_355.clas.abap index c54481fb..8637fb12 100644 --- a/src/02/z2ui5_cl_demo_app_355.clas.abap +++ b/src/02/z2ui5_cl_demo_app_355.clas.abap @@ -1,4 +1,4 @@ -CLASS z2ui5_cl_demo_app_355 DEFINITION PUBLIC CREATE PUBLIC. +CLASS z2ui5_cl_demo_app_355 DEFINITION PUBLIC. PUBLIC SECTION. INTERFACES z2ui5_if_app. @@ -13,23 +13,44 @@ CLASS z2ui5_cl_demo_app_355 DEFINITION PUBLIC CREATE PUBLIC. DATA volume TYPE string. PROTECTED SECTION. + DATA client TYPE REF TO z2ui5_if_client. + + METHODS on_init. + METHODS view_display. + PRIVATE SECTION. ENDCLASS. + CLASS z2ui5_cl_demo_app_355 IMPLEMENTATION. METHOD z2ui5_if_app~main. + me->client = client. IF client->check_on_init( ). - wlan = abap_true. - flight = abap_true. - high_perf = abap_true. - price = `799`. - address = `Main Rd, Manchester`. - country = `GR`. - volume = `7`. + on_init( ). ENDIF. + ENDMETHOD. + + + METHOD on_init. + + wlan = abap_true. + flight = abap_true. + high_perf = abap_true. + price = `799`. + address = `Main Rd, Manchester`. + country = `GR`. + volume = `7`. + + view_display( ). + + ENDMETHOD. + + + METHOD view_display. + DATA(view) = z2ui5_cl_util_xml=>factory( ). DATA(root) = view->__( n = `View` ns = `mvc` p = VALUE #( ( n = `displayBlock` v = abap_true ) @@ -38,16 +59,17 @@ CLASS z2ui5_cl_demo_app_355 IMPLEMENTATION. ( n = `xmlns:core` v = `sap.ui.core` ) ( n = `xmlns:mvc` v = `sap.ui.core.mvc` ) ) ). - DATA(page) = root->__( `Shell` )->__( n = `Page` - p = VALUE #( ( n = `navButtonPress` v = client->_event_nav_app_leave( ) ) - ( n = `showNavButton` v = client->check_app_prev_stack( ) ) - ( n = `title` v = `abap2UI5 - InputListItem` ) ) ). + DATA(page) = root->__( `Shell` + )->__( n = `Page` + p = VALUE #( ( n = `navButtonPress` v = client->_event_nav_app_leave( ) ) + ( n = `showNavButton` v = client->check_app_prev_stack( ) ) + ( n = `title` v = `abap2UI5 - InputListItem` ) ) ). page->__( `headerContent` )->_( n = `Link` - p = VALUE #( ( n = `href` v = `https://sapui5.hana.ondemand.com/sdk/#/entity/sap.m.InputListItem/sample/sap.m.sample.InputListItem` ) - ( n = `target` v = `_blank` ) - ( n = `text` v = `UI5 Demo Kit` ) ) ). + p = VALUE #( ( n = `href` v = `https://sapui5.hana.ondemand.com/sdk/#/entity/sap.m.InputListItem/sample/sap.m.sample.InputListItem` ) + ( n = `target` v = `_blank` ) + ( n = `text` v = `UI5 Demo Kit` ) ) ). DATA(list) = page->__( n = `List` a = `headerText` v = `Input` ). @@ -59,24 +81,24 @@ CLASS z2ui5_cl_demo_app_355 IMPLEMENTATION. list->__( n = `InputListItem` a = `label` v = `High Performance` )->_( n = `RadioButton` - p = VALUE #( ( n = `groupName` v = `GroupPerf` ) - ( n = `selected` v = client->_bind_edit( high_perf ) ) ) ). + p = VALUE #( ( n = `groupName` v = `GroupPerf` ) + ( n = `selected` v = client->_bind_edit( high_perf ) ) ) ). list->__( n = `InputListItem` a = `label` v = `Battery Saving` )->_( n = `RadioButton` - p = VALUE #( ( n = `groupName` v = `GroupPerf` ) - ( n = `selected` v = client->_bind_edit( battery ) ) ) ). + p = VALUE #( ( n = `groupName` v = `GroupPerf` ) + ( n = `selected` v = client->_bind_edit( battery ) ) ) ). list->__( n = `InputListItem` a = `label` v = `Price (EUR)` )->_( n = `Input` - p = VALUE #( ( n = `placeholder` v = `Price` ) - ( n = `type` v = `Number` ) - ( n = `value` v = client->_bind_edit( price ) ) ) ). + p = VALUE #( ( n = `placeholder` v = `Price` ) + ( n = `type` v = `Number` ) + ( n = `value` v = client->_bind_edit( price ) ) ) ). list->__( n = `InputListItem` a = `label` v = `Address` )->_( n = `Input` - p = VALUE #( ( n = `placeholder` v = `Address` ) - ( n = `value` v = client->_bind_edit( address ) ) ) ). + p = VALUE #( ( n = `placeholder` v = `Address` ) + ( n = `value` v = client->_bind_edit( address ) ) ) ). list->__( n = `InputListItem` a = `label` v = `Country` )->__( n = `Select` a = `selectedKey` v = client->_bind_edit( country ) @@ -89,10 +111,10 @@ CLASS z2ui5_cl_demo_app_355 IMPLEMENTATION. list->__( n = `InputListItem` a = `label` v = `Volume` )->__( n = `HBox` a = `justifyContent` v = `End` )->_( n = `Slider` - p = VALUE #( ( n = `max` v = `10` ) - ( n = `min` v = `0` ) - ( n = `value` v = client->_bind_edit( volume ) ) - ( n = `width` v = `200px` ) ) ). + p = VALUE #( ( n = `max` v = `10` ) + ( n = `min` v = `0` ) + ( n = `value` v = client->_bind_edit( volume ) ) + ( n = `width` v = `200px` ) ) ). client->view_display( view->stringify( ) ). diff --git a/src/02/z2ui5_cl_demo_app_356.clas.abap b/src/02/z2ui5_cl_demo_app_356.clas.abap index 1d1eed31..c185dfcd 100644 --- a/src/02/z2ui5_cl_demo_app_356.clas.abap +++ b/src/02/z2ui5_cl_demo_app_356.clas.abap @@ -1,4 +1,4 @@ -CLASS z2ui5_cl_demo_app_356 DEFINITION PUBLIC CREATE PUBLIC. +CLASS z2ui5_cl_demo_app_356 DEFINITION PUBLIC. PUBLIC SECTION. INTERFACES z2ui5_if_app. @@ -11,6 +11,7 @@ CLASS z2ui5_cl_demo_app_356 DEFINITION PUBLIC CREATE PUBLIC. PRIVATE SECTION. ENDCLASS. + CLASS z2ui5_cl_demo_app_356 IMPLEMENTATION. METHOD z2ui5_if_app~main. @@ -23,41 +24,42 @@ CLASS z2ui5_cl_demo_app_356 IMPLEMENTATION. ( n = `xmlns:l` v = `sap.ui.layout` ) ( n = `xmlns:mvc` v = `sap.ui.core.mvc` ) ) ). - DATA(page) = root->__( `Shell` )->__( n = `Page` - p = VALUE #( ( n = `navButtonPress` v = client->_event_nav_app_leave( ) ) - ( n = `showNavButton` v = client->check_app_prev_stack( ) ) - ( n = `title` v = `abap2UI5 - Label` ) ) ). + DATA(page) = root->__( `Shell` + )->__( n = `Page` + p = VALUE #( ( n = `navButtonPress` v = client->_event_nav_app_leave( ) ) + ( n = `showNavButton` v = client->check_app_prev_stack( ) ) + ( n = `title` v = `abap2UI5 - Label` ) ) ). page->__( `headerContent` )->_( n = `Link` - p = VALUE #( ( n = `href` v = `https://ui5.sap.com/sdk/#/entity/sap.m.Label/sample/sap.m.sample.Label` ) - ( n = `target` v = `_blank` ) - ( n = `text` v = `UI5 Demo Kit` ) ) ). + p = VALUE #( ( n = `href` v = `https://ui5.sap.com/sdk/#/entity/sap.m.Label/sample/sap.m.sample.Label` ) + ( n = `target` v = `_blank` ) + ( n = `text` v = `UI5 Demo Kit` ) ) ). DATA(layout) = page->__( n = `VerticalLayout` ns = `l` p = VALUE #( ( n = `class` v = `sapUiContentPadding` ) ( n = `width` v = `100%` ) ) ). layout->_( n = `Label` - p = VALUE #( ( n = `labelFor` v = `input-a` ) - ( n = `text` v = `Label A (required)` ) ) + p = VALUE #( ( n = `labelFor` v = `input-a` ) + ( n = `text` v = `Label A (required)` ) ) )->_( n = `Input` - p = VALUE #( ( n = `id` v = `input-a` ) - ( n = `required` v = abap_true ) - ( n = `value` v = client->_bind_edit( input_a ) ) ) + p = VALUE #( ( n = `id` v = `input-a` ) + ( n = `required` v = abap_true ) + ( n = `value` v = client->_bind_edit( input_a ) ) ) )->_( n = `Label` - p = VALUE #( ( n = `design` v = `Bold` ) - ( n = `labelFor` v = `input-b` ) - ( n = `text` v = `Label B (bold)` ) ) + p = VALUE #( ( n = `design` v = `Bold` ) + ( n = `labelFor` v = `input-b` ) + ( n = `text` v = `Label B (bold)` ) ) )->_( n = `Input` - p = VALUE #( ( n = `id` v = `input-b` ) - ( n = `value` v = client->_bind_edit( input_b ) ) ) + p = VALUE #( ( n = `id` v = `input-b` ) + ( n = `value` v = client->_bind_edit( input_b ) ) ) )->_( n = `Label` - p = VALUE #( ( n = `labelFor` v = `input-c` ) - ( n = `text` v = `Label C (normal)` ) ) + p = VALUE #( ( n = `labelFor` v = `input-c` ) + ( n = `text` v = `Label C (normal)` ) ) )->_( n = `Input` - p = VALUE #( ( n = `id` v = `input-c` ) - ( n = `value` v = client->_bind_edit( input_c ) ) ) ). + p = VALUE #( ( n = `id` v = `input-c` ) + ( n = `value` v = client->_bind_edit( input_c ) ) ) ). client->view_display( view->stringify( ) ). diff --git a/src/02/z2ui5_cl_demo_app_357.clas.abap b/src/02/z2ui5_cl_demo_app_357.clas.abap index 57e64bca..8b76b6f2 100644 --- a/src/02/z2ui5_cl_demo_app_357.clas.abap +++ b/src/02/z2ui5_cl_demo_app_357.clas.abap @@ -1,4 +1,4 @@ -CLASS z2ui5_cl_demo_app_357 DEFINITION PUBLIC CREATE PUBLIC. +CLASS z2ui5_cl_demo_app_357 DEFINITION PUBLIC. PUBLIC SECTION. INTERFACES z2ui5_if_app. @@ -7,18 +7,19 @@ CLASS z2ui5_cl_demo_app_357 DEFINITION PUBLIC CREATE PUBLIC. DATA client TYPE REF TO z2ui5_if_client. METHODS view_display. - - PRIVATE SECTION. METHODS add_cell IMPORTING - io_row TYPE REF TO z2ui5_cl_util_xml - iv_icon TYPE string - iv_title TYPE string - iv_href TYPE string - iv_descr TYPE string - iv_shade TYPE string. + row TYPE REF TO z2ui5_cl_util_xml + icon TYPE string + title TYPE string + href TYPE string + descr TYPE string + shade TYPE string. + + PRIVATE SECTION. ENDCLASS. + CLASS z2ui5_cl_demo_app_357 IMPLEMENTATION. METHOD z2ui5_if_app~main. @@ -30,6 +31,7 @@ CLASS z2ui5_cl_demo_app_357 IMPLEMENTATION. ENDMETHOD. + METHOD view_display. DATA(view) = z2ui5_cl_util_xml=>factory( ). @@ -41,80 +43,84 @@ CLASS z2ui5_cl_demo_app_357 IMPLEMENTATION. ( n = `xmlns:l` v = `sap.ui.layout` ) ( n = `xmlns:mvc` v = `sap.ui.core.mvc` ) ) ). - DATA(page) = root->__( `Shell` )->__( n = `Page` - p = VALUE #( ( n = `navButtonPress` v = client->_event_nav_app_leave( ) ) - ( n = `showNavButton` v = client->check_app_prev_stack( ) ) - ( n = `title` v = `abap2UI5 - Controls` ) ) ). + DATA(page) = root->__( `Shell` + )->__( n = `Page` + p = VALUE #( ( n = `navButtonPress` v = client->_event_nav_app_leave( ) ) + ( n = `showNavButton` v = client->check_app_prev_stack( ) ) + ( n = `title` v = `abap2UI5 - Controls` ) ) ). page->__( `headerContent` )->_( n = `Link` - p = VALUE #( ( n = `href` v = `https://ui5.sap.com/sdk/#/controls` ) - ( n = `target` v = `_blank` ) - ( n = `text` v = `UI5 Demo Kit` ) ) ). + p = VALUE #( ( n = `href` v = `https://ui5.sap.com/sdk/#/controls` ) + ( n = `target` v = `_blank` ) + ( n = `text` v = `UI5 Demo Kit` ) ) ). DATA(panel) = page->__( n = `Panel` p = VALUE #( ( n = `accessibleRole` v = `Region` ) ( n = `backgroundDesign` v = `Transparent` ) ( n = `class` v = `sapUiNoContentPadding` ) ) ). - panel->__( `headerToolbar` )->__( `Toolbar` + panel->__( `headerToolbar` + )->__( `Toolbar` )->_( n = `Title` - p = VALUE #( ( n = `level` v = `H1` ) - ( n = `text` v = `Featured Controls` ) - ( n = `titleStyle` v = `H1` ) - ( n = `width` v = `100%` ) ) ). + p = VALUE #( ( n = `level` v = `H1` ) + ( n = `text` v = `Featured Controls` ) + ( n = `titleStyle` v = `H1` ) + ( n = `width` v = `100%` ) ) ). DATA(bl) = panel->__( n = `BlockLayout` ns = `l` ). DATA(row) = bl->__( n = `BlockLayoutRow` ns = `l` ). - add_cell( io_row = row iv_shade = `ShadeA` iv_icon = `sap-icon://edit` iv_title = `Input` iv_href = `https://ui5.sap.com/sdk/#/controls/filter/Input` iv_descr = `User interaction` ). - add_cell( io_row = row iv_shade = `ShadeB` iv_icon = `sap-icon://list` iv_title = `Lists` iv_href = `https://ui5.sap.com/sdk/#/controls/filter/List` iv_descr = `Various list structures` ). - add_cell( io_row = row iv_shade = `ShadeC` iv_icon = `sap-icon://table-view` iv_title = `Tables` iv_href = `https://ui5.sap.com/sdk/#/controls/filter/Table` iv_descr = `Simple or more powerful tables` ). - add_cell( io_row = row iv_shade = `ShadeA` iv_icon = `sap-icon://popup-window` iv_title = `Pop-Ups` iv_href = `https://ui5.sap.com/sdk/#/controls/filter/Popup` iv_descr = `Dialogs and popovers` ). + add_cell( row = row shade = `ShadeA` icon = `sap-icon://edit` title = `Input` href = `https://ui5.sap.com/sdk/#/controls/filter/Input` descr = `User interaction` ). + add_cell( row = row shade = `ShadeB` icon = `sap-icon://list` title = `Lists` href = `https://ui5.sap.com/sdk/#/controls/filter/List` descr = `Various list structures` ). + add_cell( row = row shade = `ShadeC` icon = `sap-icon://table-view` title = `Tables` href = `https://ui5.sap.com/sdk/#/controls/filter/Table` descr = `Simple or more powerful tables` ). + add_cell( row = row shade = `ShadeA` icon = `sap-icon://popup-window` title = `Pop-Ups` href = `https://ui5.sap.com/sdk/#/controls/filter/Popup` descr = `Dialogs and popovers` ). row = bl->__( n = `BlockLayoutRow` ns = `l` ). - add_cell( io_row = row iv_shade = `ShadeB` iv_icon = `sap-icon://grid` iv_title = `Tiles` iv_href = `https://ui5.sap.com/sdk/#/controls/filter/Tile` iv_descr = `Tiles for e.g. texts, images or charts` ). - add_cell( io_row = row iv_shade = `ShadeA` iv_icon = `sap-icon://message-popup` iv_title = `Messages` iv_href = `https://ui5.sap.com/sdk/#/controls/filter/Message` iv_descr = `User notification` ). - add_cell( io_row = row iv_shade = `ShadeB` iv_icon = `sap-icon://header` iv_title = `Bars` iv_href = `https://ui5.sap.com/sdk/#/controls/filter/Bar` iv_descr = `Toolbars and headers` ). - add_cell( io_row = row iv_shade = `ShadeC` iv_icon = `sap-icon://tree` iv_title = `Trees` iv_href = `https://ui5.sap.com/sdk/#/controls/filter/Tree` iv_descr = `Hierarchical data representation` ). + add_cell( row = row shade = `ShadeB` icon = `sap-icon://grid` title = `Tiles` href = `https://ui5.sap.com/sdk/#/controls/filter/Tile` descr = `Tiles for e.g. texts, images or charts` ). + add_cell( row = row shade = `ShadeA` icon = `sap-icon://message-popup` title = `Messages` href = `https://ui5.sap.com/sdk/#/controls/filter/Message` descr = `User notification` ). + add_cell( row = row shade = `ShadeB` icon = `sap-icon://header` title = `Bars` href = `https://ui5.sap.com/sdk/#/controls/filter/Bar` descr = `Toolbars and headers` ). + add_cell( row = row shade = `ShadeC` icon = `sap-icon://tree` title = `Trees` href = `https://ui5.sap.com/sdk/#/controls/filter/Tree` descr = `Hierarchical data representation` ). panel = page->__( n = `Panel` p = VALUE #( ( n = `accessibleRole` v = `Region` ) ( n = `backgroundDesign` v = `Transparent` ) ( n = `class` v = `sapUiNoContentPadding` ) ) ). - panel->__( `headerToolbar` )->__( `Toolbar` + panel->__( `headerToolbar` + )->__( `Toolbar` )->_( n = `Title` - p = VALUE #( ( n = `level` v = `H1` ) - ( n = `text` v = `Layout & Pages` ) - ( n = `titleStyle` v = `H1` ) - ( n = `width` v = `100%` ) ) ). + p = VALUE #( ( n = `level` v = `H1` ) + ( n = `text` v = `Layout & Pages` ) + ( n = `titleStyle` v = `H1` ) + ( n = `width` v = `100%` ) ) ). bl = panel->__( n = `BlockLayout` ns = `l` ). row = bl->__( n = `BlockLayoutRow` ns = `l` ). - add_cell( io_row = row iv_shade = `ShadeA` iv_icon = `sap-icon://write-new` iv_title = `Object Page` iv_href = `https://ui5.sap.com/sdk/#/controls/filter/Object%20Page` iv_descr = `Displaying, creating, or editing objects` ). - add_cell( io_row = row iv_shade = `ShadeB` iv_icon = `sap-icon://chart-table-view` iv_title = `Dynamic Page` iv_href = `https://ui5.sap.com/sdk/#/controls/filter/Dynamic%20Page` iv_descr = `Page with title, header, and content area` ). - add_cell( io_row = row iv_shade = `ShadeC` iv_icon = `sap-icon://screen-split-three` iv_title = `Flexible Column Layout` iv_href = `https://ui5.sap.com/sdk/#/controls/filter/Flexible%20Column%20Layout` iv_descr = `Page with up to 3 columns` ). - add_cell( io_row = row iv_shade = `ShadeA` iv_icon = `sap-icon://screen-split-one` iv_title = `Split App` iv_href = `https://ui5.sap.com/sdk/#/controls/filter/Split%20App` iv_descr = `Two-column layout` ). + add_cell( row = row shade = `ShadeA` icon = `sap-icon://write-new` title = `Object Page` href = `https://ui5.sap.com/sdk/#/controls/filter/Object%20Page` descr = `Displaying, creating, or editing objects` ). + add_cell( row = row shade = `ShadeB` icon = `sap-icon://chart-table-view` title = `Dynamic Page` href = `https://ui5.sap.com/sdk/#/controls/filter/Dynamic%20Page` descr = `Page with title, header, and content area` ). + add_cell( row = row shade = `ShadeC` icon = `sap-icon://screen-split-three` title = `Flexible Column Layout` href = `https://ui5.sap.com/sdk/#/controls/filter/Flexible%20Column%20Layout` descr = `Page with up to 3 columns` ). + add_cell( row = row shade = `ShadeA` icon = `sap-icon://screen-split-one` title = `Split App` href = `https://ui5.sap.com/sdk/#/controls/filter/Split%20App` descr = `Two-column layout` ). client->view_display( view->stringify( ) ). ENDMETHOD. + METHOD add_cell. - DATA(cell) = io_row->__( n = `BlockLayoutCell` ns = `l` + DATA(cell) = row->__( n = `BlockLayoutCell` ns = `l` p = VALUE #( ( n = `backgroundColorSet` v = `ColorSet10` ) - ( n = `backgroundColorShade` v = iv_shade ) ) ). + ( n = `backgroundColorShade` v = shade ) ) ). DATA(vl) = cell->__( n = `VerticalLayout` ns = `l` ). vl->_( n = `Icon` ns = `core` - p = VALUE #( ( n = `class` v = `sapUiTinyMarginBottom` ) - ( n = `size` v = `2rem` ) - ( n = `src` v = iv_icon ) ) + p = VALUE #( ( n = `class` v = `sapUiTinyMarginBottom` ) + ( n = `size` v = `2rem` ) + ( n = `src` v = icon ) ) )->_( n = `Link` - p = VALUE #( ( n = `href` v = iv_href ) - ( n = `target` v = `_blank` ) - ( n = `text` v = iv_title ) ) - )->_( n = `Text` a = `text` v = iv_descr ). + p = VALUE #( ( n = `href` v = href ) + ( n = `target` v = `_blank` ) + ( n = `text` v = title ) ) + )->_( n = `Text` a = `text` v = descr ). ENDMETHOD. diff --git a/src/02/z2ui5_cl_demo_app_358.clas.abap b/src/02/z2ui5_cl_demo_app_358.clas.abap index 110ca2d1..bd7ee878 100644 --- a/src/02/z2ui5_cl_demo_app_358.clas.abap +++ b/src/02/z2ui5_cl_demo_app_358.clas.abap @@ -1,10 +1,10 @@ -CLASS z2ui5_cl_demo_app_358 DEFINITION PUBLIC CREATE PUBLIC. +CLASS z2ui5_cl_demo_app_358 DEFINITION PUBLIC. PUBLIC SECTION. INTERFACES z2ui5_if_app. TYPES: - BEGIN OF ty_product, + BEGIN OF ty_s_product, name TYPE string, product_id TYPE string, supplier_name TYPE string, @@ -14,9 +14,8 @@ CLASS z2ui5_cl_demo_app_358 DEFINITION PUBLIC CREATE PUBLIC. weight_state TYPE string, price TYPE string, currency_code TYPE string, - END OF ty_product. - - DATA mt_products TYPE STANDARD TABLE OF ty_product WITH EMPTY KEY. + END OF ty_s_product. + DATA t_products TYPE STANDARD TABLE OF ty_s_product WITH EMPTY KEY. PROTECTED SECTION. DATA client TYPE REF TO z2ui5_if_client. @@ -27,6 +26,7 @@ CLASS z2ui5_cl_demo_app_358 DEFINITION PUBLIC CREATE PUBLIC. PRIVATE SECTION. ENDCLASS. + CLASS z2ui5_cl_demo_app_358 IMPLEMENTATION. METHOD z2ui5_if_app~main. @@ -38,29 +38,61 @@ CLASS z2ui5_cl_demo_app_358 IMPLEMENTATION. ENDMETHOD. + METHOD on_init. - mt_products = VALUE #( - ( name = `Notebook Basic 15` product_id = `HT-1000` supplier_name = `Very Best Screens` - dimensions = `30 x 18 x 3 cm` weight_measure = `4.2` weight_unit = `KG` - weight_state = `None` price = `956` currency_code = `EUR` ) - ( name = `Notebook Basic 17` product_id = `HT-1001` supplier_name = `Very Best Screens` - dimensions = `29 x 17 x 4 cm` weight_measure = `4.5` weight_unit = `KG` - weight_state = `Warning` price = `1249` currency_code = `EUR` ) - ( name = `Notebook Basic 18` product_id = `HT-1002` supplier_name = `Smartcards` - dimensions = `28 x 16 x 4 cm` weight_measure = `4.2` weight_unit = `KG` - weight_state = `None` price = `1570` currency_code = `EUR` ) - ( name = `ITelO Vault` product_id = `HT-1007` supplier_name = `TECUM` - dimensions = `32 x 10 x 1 cm` weight_measure = `0.1` weight_unit = `KG` - weight_state = `None` price = `299` currency_code = `USD` ) - ( name = `Gladiator MX` product_id = `HT-1024` supplier_name = `Panorama Studios` - dimensions = `53 x 30 x 7 cm` weight_measure = `7.5` weight_unit = `KG` - weight_state = `Error` price = `1430` currency_code = `EUR` ) ). + t_products = VALUE #( + ( name = `Notebook Basic 15` + product_id = `HT-1000` + supplier_name = `Very Best Screens` + dimensions = `30 x 18 x 3 cm` + weight_measure = `4.2` + weight_unit = `KG` + weight_state = `None` + price = `956` + currency_code = `EUR` ) + ( name = `Notebook Basic 17` + product_id = `HT-1001` + supplier_name = `Very Best Screens` + dimensions = `29 x 17 x 4 cm` + weight_measure = `4.5` + weight_unit = `KG` + weight_state = `Warning` + price = `1249` + currency_code = `EUR` ) + ( name = `Notebook Basic 18` + product_id = `HT-1002` + supplier_name = `Smartcards` + dimensions = `28 x 16 x 4 cm` + weight_measure = `4.2` + weight_unit = `KG` + weight_state = `None` + price = `1570` + currency_code = `EUR` ) + ( name = `ITelO Vault` + product_id = `HT-1007` + supplier_name = `TECUM` + dimensions = `32 x 10 x 1 cm` + weight_measure = `0.1` + weight_unit = `KG` + weight_state = `None` + price = `299` + currency_code = `USD` ) + ( name = `Gladiator MX` + product_id = `HT-1024` + supplier_name = `Panorama Studios` + dimensions = `53 x 30 x 7 cm` + weight_measure = `7.5` + weight_unit = `KG` + weight_state = `Error` + price = `1430` + currency_code = `EUR` ) ). view_display( ). ENDMETHOD. + METHOD view_display. DATA(view) = z2ui5_cl_util_xml=>factory( ). @@ -70,62 +102,64 @@ CLASS z2ui5_cl_demo_app_358 IMPLEMENTATION. ( n = `xmlns` v = `sap.m` ) ( n = `xmlns:mvc` v = `sap.ui.core.mvc` ) ) ). - DATA(page) = root->__( `Shell` )->__( n = `Page` - p = VALUE #( ( n = `navButtonPress` v = client->_event_nav_app_leave( ) ) - ( n = `showNavButton` v = client->check_app_prev_stack( ) ) - ( n = `title` v = `abap2UI5 - Table` ) ) ). + DATA(page) = root->__( `Shell` + )->__( n = `Page` + p = VALUE #( ( n = `navButtonPress` v = client->_event_nav_app_leave( ) ) + ( n = `showNavButton` v = client->check_app_prev_stack( ) ) + ( n = `title` v = `abap2UI5 - Table` ) ) ). page->__( `headerContent` )->_( n = `Link` - p = VALUE #( ( n = `href` v = `https://ui5.sap.com/sdk/#/entity/sap.m.Table/sample/sap.m.sample.Table` ) - ( n = `target` v = `_blank` ) - ( n = `text` v = `UI5 Demo Kit` ) ) ). + p = VALUE #( ( n = `href` v = `https://ui5.sap.com/sdk/#/entity/sap.m.Table/sample/sap.m.sample.Table` ) + ( n = `target` v = `_blank` ) + ( n = `text` v = `UI5 Demo Kit` ) ) ). DATA(tab) = page->__( n = `Table` p = VALUE #( ( n = `inset` v = abap_false ) - ( n = `items` v = client->_bind( mt_products ) ) ) ). + ( n = `items` v = client->_bind( t_products ) ) ) ). - tab->__( `headerToolbar` )->__( `OverflowToolbar` + tab->__( `headerToolbar` + )->__( `OverflowToolbar` )->_( n = `Title` - p = VALUE #( ( n = `level` v = `H2` ) - ( n = `text` v = `Products` ) ) + p = VALUE #( ( n = `level` v = `H2` ) + ( n = `text` v = `Products` ) ) )->_( `ToolbarSpacer` ). DATA(cols) = tab->__( `columns` ). cols->__( n = `Column` a = `width` v = `12em` )->_( n = `Text` a = `text` v = `Product` ). cols->__( n = `Column` - p = VALUE #( ( n = `demandPopin` v = abap_true ) - ( n = `minScreenWidth` v = `Tablet` ) ) + p = VALUE #( ( n = `demandPopin` v = abap_true ) + ( n = `minScreenWidth` v = `Tablet` ) ) )->_( n = `Text` a = `text` v = `Supplier` ). cols->__( n = `Column` - p = VALUE #( ( n = `demandPopin` v = abap_true ) - ( n = `hAlign` v = `End` ) - ( n = `minScreenWidth` v = `Desktop` ) ) + p = VALUE #( ( n = `demandPopin` v = abap_true ) + ( n = `hAlign` v = `End` ) + ( n = `minScreenWidth` v = `Desktop` ) ) )->_( n = `Text` a = `text` v = `Dimensions` ). cols->__( n = `Column` - p = VALUE #( ( n = `demandPopin` v = abap_true ) - ( n = `hAlign` v = `Center` ) - ( n = `minScreenWidth` v = `Desktop` ) ) + p = VALUE #( ( n = `demandPopin` v = abap_true ) + ( n = `hAlign` v = `Center` ) + ( n = `minScreenWidth` v = `Desktop` ) ) )->_( n = `Text` a = `text` v = `Weight` ). cols->__( n = `Column` a = `hAlign` v = `End` )->_( n = `Text` a = `text` v = `Price` ). DATA(cells) = tab->__( `items` - )->__( n = `ColumnListItem` a = `vAlign` v = `Middle` - )->__( `cells` ). + )->__( n = `ColumnListItem` a = `vAlign` v = `Middle` + )->__( `cells` ). cells->_( n = `ObjectIdentifier` - p = VALUE #( ( n = `text` v = `{PRODUCT_ID}` ) - ( n = `title` v = `{NAME}` ) ) ). + p = VALUE #( ( n = `text` v = `{PRODUCT_ID}` ) + ( n = `title` v = `{NAME}` ) ) ). cells->_( n = `Text` a = `text` v = `{SUPPLIER_NAME}` ). cells->_( n = `Text` a = `text` v = `{DIMENSIONS}` ). cells->_( n = `ObjectNumber` - p = VALUE #( ( n = `number` v = `{WEIGHT_MEASURE}` ) - ( n = `state` v = `{WEIGHT_STATE}` ) - ( n = `unit` v = `{WEIGHT_UNIT}` ) ) ). + p = VALUE #( ( n = `number` v = `{WEIGHT_MEASURE}` ) + ( n = `state` v = `{WEIGHT_STATE}` ) + ( n = `unit` v = `{WEIGHT_UNIT}` ) ) ). cells->_( n = `ObjectNumber` - p = VALUE #( ( n = `number` v = `{PRICE}` ) - ( n = `unit` v = `{CURRENCY_CODE}` ) ) ). + p = VALUE #( ( n = `number` v = `{PRICE}` ) + ( n = `unit` v = `{CURRENCY_CODE}` ) ) ). client->view_display( view->stringify( ) ). diff --git a/src/02/z2ui5_cl_demo_app_359.clas.abap b/src/02/z2ui5_cl_demo_app_359.clas.abap index 2983f22c..5414117a 100644 --- a/src/02/z2ui5_cl_demo_app_359.clas.abap +++ b/src/02/z2ui5_cl_demo_app_359.clas.abap @@ -1,14 +1,14 @@ -CLASS z2ui5_cl_demo_app_359 DEFINITION PUBLIC CREATE PUBLIC. +CLASS z2ui5_cl_demo_app_359 DEFINITION PUBLIC. PUBLIC SECTION. INTERFACES z2ui5_if_app. - DATA mv_first_name TYPE string. - DATA mv_last_name TYPE string. - DATA mv_num_a TYPE i. - DATA mv_num_b TYPE i. - DATA mv_amount TYPE string. - DATA mv_search TYPE string. + DATA first_name TYPE string. + DATA last_name TYPE string. + DATA num_a TYPE i. + DATA num_b TYPE i. + DATA amount TYPE string. + DATA search TYPE string. PROTECTED SECTION. DATA client TYPE REF TO z2ui5_if_client. @@ -19,6 +19,7 @@ CLASS z2ui5_cl_demo_app_359 DEFINITION PUBLIC CREATE PUBLIC. PRIVATE SECTION. ENDCLASS. + CLASS z2ui5_cl_demo_app_359 IMPLEMENTATION. METHOD z2ui5_if_app~main. @@ -30,28 +31,27 @@ CLASS z2ui5_cl_demo_app_359 IMPLEMENTATION. ENDMETHOD. + METHOD on_init. - mv_first_name = `John`. - mv_last_name = `Doe`. - mv_num_a = 42. - mv_num_b = 77. - mv_amount = `-15`. - mv_search = `VIPCustomer`. + first_name = `John`. + last_name = `Doe`. + num_a = 42. + num_b = 77. + amount = `-15`. + search = `VIPCustomer`. view_display( ). ENDMETHOD. + METHOD view_display. - DATA(lv_concat) = `{= $` && client->_bind( mv_first_name ) && - ` + ' ' + $` && client->_bind( mv_last_name ) && `}`. - DATA(lv_max) = `{= Math.max($` && client->_bind( mv_num_a ) && - `, $` && client->_bind( mv_num_b ) && `)}`. - DATA(lv_sign) = `{= $` && client->_bind( mv_amount ) && - ` >= 0 ? 'Positive' : 'Negative' }`. - DATA(lv_vip_en) = `{= /vip/i.test($` && client->_bind( mv_search ) && `)}`. + DATA(concat) = |\{= ${ client->_bind( first_name ) } + ' ' + ${ client->_bind( last_name ) }\}|. + DATA(max) = |\{= Math.max(${ client->_bind( num_a ) }, ${ client->_bind( num_b ) })\}|. + DATA(sign) = |\{= ${ client->_bind( amount ) } >= 0 ? 'Positive' : 'Negative' \}|. + DATA(vip_en) = |\{= /vip/i.test(${ client->_bind( search ) })\}|. DATA(view) = z2ui5_cl_util_xml=>factory( ). DATA(root) = view->__( n = `View` ns = `mvc` @@ -61,16 +61,17 @@ CLASS z2ui5_cl_demo_app_359 IMPLEMENTATION. ( n = `xmlns:form` v = `sap.ui.layout.form` ) ( n = `xmlns:mvc` v = `sap.ui.core.mvc` ) ) ). - DATA(page) = root->__( `Shell` )->__( n = `Page` - p = VALUE #( ( n = `navButtonPress` v = client->_event_nav_app_leave( ) ) - ( n = `showNavButton` v = client->check_app_prev_stack( ) ) - ( n = `title` v = `abap2UI5 - Expression Binding` ) ) ). + DATA(page) = root->__( `Shell` + )->__( n = `Page` + p = VALUE #( ( n = `navButtonPress` v = client->_event_nav_app_leave( ) ) + ( n = `showNavButton` v = client->check_app_prev_stack( ) ) + ( n = `title` v = `abap2UI5 - Expression Binding` ) ) ). page->__( `headerContent` )->_( n = `Link` - p = VALUE #( ( n = `href` v = `https://ui5.sap.com/sdk/#/topic/daf6852a04b44d118963968a1239d2c0` ) - ( n = `target` v = `_blank` ) - ( n = `text` v = `UI5 Docs` ) ) ). + p = VALUE #( ( n = `href` v = `https://ui5.sap.com/sdk/#/topic/daf6852a04b44d118963968a1239d2c0` ) + ( n = `target` v = `_blank` ) + ( n = `text` v = `UI5 Docs` ) ) ). DATA(form) = page->__( n = `SimpleForm` ns = `form` p = VALUE #( ( n = `editable` v = abap_true ) @@ -80,40 +81,40 @@ CLASS z2ui5_cl_demo_app_359 IMPLEMENTATION. ct->_( n = `Title` a = `text` v = `String Concatenation` ). ct->_( n = `Label` a = `text` v = `First Name` ). - ct->_( n = `Input` a = `value` v = client->_bind_edit( mv_first_name ) ). + ct->_( n = `Input` a = `value` v = client->_bind_edit( first_name ) ). ct->_( n = `Label` a = `text` v = `Last Name` ). - ct->_( n = `Input` a = `value` v = client->_bind_edit( mv_last_name ) ). + ct->_( n = `Input` a = `value` v = client->_bind_edit( last_name ) ). ct->_( n = `Label` a = `text` v = `Result` ). - ct->_( n = `Text` a = `text` v = lv_concat ). + ct->_( n = `Text` a = `text` v = concat ). ct->_( n = `Title` a = `text` v = `Arithmetic` ). ct->_( n = `Label` a = `text` v = `Number A` ). ct->_( n = `Input` - p = VALUE #( ( n = `type` v = `Number` ) - ( n = `value` v = client->_bind_edit( mv_num_a ) ) ) ). + p = VALUE #( ( n = `type` v = `Number` ) + ( n = `value` v = client->_bind_edit( num_a ) ) ) ). ct->_( n = `Label` a = `text` v = `Number B` ). ct->_( n = `Input` - p = VALUE #( ( n = `type` v = `Number` ) - ( n = `value` v = client->_bind_edit( mv_num_b ) ) ) ). + p = VALUE #( ( n = `type` v = `Number` ) + ( n = `value` v = client->_bind_edit( num_b ) ) ) ). ct->_( n = `Label` a = `text` v = `Math.max(A, B)` ). - ct->_( n = `Text` a = `text` v = lv_max ). + ct->_( n = `Text` a = `text` v = max ). ct->_( n = `Title` a = `text` v = `Ternary Operator` ). ct->_( n = `Label` a = `text` v = `Amount` ). ct->_( n = `Input` - p = VALUE #( ( n = `type` v = `Number` ) - ( n = `value` v = client->_bind_edit( mv_amount ) ) ) ). + p = VALUE #( ( n = `type` v = `Number` ) + ( n = `value` v = client->_bind_edit( amount ) ) ) ). ct->_( n = `Label` a = `text` v = `Sign` ). - ct->_( n = `Text` a = `text` v = lv_sign ). + ct->_( n = `Text` a = `text` v = sign ). ct->_( n = `Title` a = `text` v = `Regular Expression` ). ct->_( n = `Label` a = `text` v = `Customer Name` ). - ct->_( n = `Input` a = `value` v = client->_bind_edit( mv_search ) ). + ct->_( n = `Input` a = `value` v = client->_bind_edit( search ) ). ct->_( n = `Label` a = `text` v = `VIP Action` ). ct->_( n = `Button` - p = VALUE #( ( n = `enabled` v = lv_vip_en ) - ( n = `text` v = `Grant VIP Access` ) - ( n = `type` v = `Emphasized` ) ) ). + p = VALUE #( ( n = `enabled` v = vip_en ) + ( n = `text` v = `Grant VIP Access` ) + ( n = `type` v = `Emphasized` ) ) ). client->view_display( view->stringify( ) ). diff --git a/src/02/z2ui5_cl_demo_app_360.clas.abap b/src/02/z2ui5_cl_demo_app_360.clas.abap index 70891e75..aef058fd 100644 --- a/src/02/z2ui5_cl_demo_app_360.clas.abap +++ b/src/02/z2ui5_cl_demo_app_360.clas.abap @@ -1,13 +1,13 @@ -CLASS z2ui5_cl_demo_app_360 DEFINITION PUBLIC CREATE PUBLIC. +CLASS z2ui5_cl_demo_app_360 DEFINITION PUBLIC. PUBLIC SECTION. INTERFACES z2ui5_if_app. - DATA mv_price TYPE string. - DATA mv_currency TYPE string. - DATA mv_big_number TYPE string. - DATA mv_integer TYPE string. - DATA mv_date TYPE string. + DATA price TYPE string. + DATA currency TYPE string. + DATA big_number TYPE string. + DATA integer TYPE string. + DATA date TYPE string. PROTECTED SECTION. DATA client TYPE REF TO z2ui5_if_client. @@ -18,6 +18,7 @@ CLASS z2ui5_cl_demo_app_360 DEFINITION PUBLIC CREATE PUBLIC. PRIVATE SECTION. ENDCLASS. + CLASS z2ui5_cl_demo_app_360 IMPLEMENTATION. METHOD z2ui5_if_app~main. @@ -29,35 +30,26 @@ CLASS z2ui5_cl_demo_app_360 IMPLEMENTATION. ENDMETHOD. + METHOD on_init. - mv_price = `1234.56`. - mv_currency = `EUR`. - mv_big_number = `9876543.21`. - mv_integer = `42`. - mv_date = `2025-12-31`. + price = `1234.56`. + currency = `EUR`. + big_number = `9876543.21`. + integer = `42`. + date = `2025-12-31`. view_display( ). ENDMETHOD. + METHOD view_display. - DATA(lv_float_bind) = `{ path: "` && - client->_bind( val = mv_big_number path = abap_true ) && - `", type: "sap.ui.model.type.Float",` && - ` formatOptions: { decimals: 2, groupingEnabled: true } }`. - DATA(lv_int_bind) = `{ path: "` && - client->_bind( val = mv_integer path = abap_true ) && - `", type: "sap.ui.model.type.Integer" }`. - DATA(lv_curr_bind) = `{ parts: [{ path: "` && - client->_bind( val = mv_price path = abap_true ) && `" },` && - `{ path: "` && client->_bind( val = mv_currency path = abap_true ) && - `" }], type: "sap.ui.model.type.Currency" }`. - DATA(lv_date_bind) = `{ path: "` && - client->_bind( val = mv_date path = abap_true ) && - `", type: "sap.ui.model.type.Date",` && - ` formatOptions: { source: { pattern: "yyyy-MM-dd" }, style: "long" } }`. + DATA(float_bind) = |\{ path: "{ client->_bind( val = big_number path = abap_true ) }", type: "sap.ui.model.type.Float", formatOptions: \{ decimals: 2, groupingEnabled: true \} \}|. + DATA(int_bind) = |\{ path: "{ client->_bind( val = integer path = abap_true ) }", type: "sap.ui.model.type.Integer" \}|. + DATA(curr_bind) = |\{ parts: [\{ path: "{ client->_bind( val = price path = abap_true ) }" \},\{ path: "{ client->_bind( val = currency path = abap_true ) }" \}], type: "sap.ui.model.type.Currency" \}|. + DATA(date_bind) = |\{ path: "{ client->_bind( val = date path = abap_true ) }", type: "sap.ui.model.type.Date", formatOptions: \{ source: \{ pattern: "yyyy-MM-dd" \}, style: "long" \} \}|. DATA(view) = z2ui5_cl_util_xml=>factory( ). DATA(root) = view->__( n = `View` ns = `mvc` @@ -67,16 +59,17 @@ CLASS z2ui5_cl_demo_app_360 IMPLEMENTATION. ( n = `xmlns:form` v = `sap.ui.layout.form` ) ( n = `xmlns:mvc` v = `sap.ui.core.mvc` ) ) ). - DATA(page) = root->__( `Shell` )->__( n = `Page` - p = VALUE #( ( n = `navButtonPress` v = client->_event_nav_app_leave( ) ) - ( n = `showNavButton` v = client->check_app_prev_stack( ) ) - ( n = `title` v = `abap2UI5 - Formatter` ) ) ). + DATA(page) = root->__( `Shell` + )->__( n = `Page` + p = VALUE #( ( n = `navButtonPress` v = client->_event_nav_app_leave( ) ) + ( n = `showNavButton` v = client->check_app_prev_stack( ) ) + ( n = `title` v = `abap2UI5 - Formatter` ) ) ). page->__( `headerContent` )->_( n = `Link` - p = VALUE #( ( n = `href` v = `https://ui5.sap.com/sdk/#/topic/07e4b920f5734fd78fdaa236f26236d8` ) - ( n = `target` v = `_blank` ) - ( n = `text` v = `UI5 Docs` ) ) ). + p = VALUE #( ( n = `href` v = `https://ui5.sap.com/sdk/#/topic/07e4b920f5734fd78fdaa236f26236d8` ) + ( n = `target` v = `_blank` ) + ( n = `text` v = `UI5 Docs` ) ) ). DATA(form) = page->__( n = `SimpleForm` ns = `form` p = VALUE #( ( n = `editable` v = abap_true ) @@ -86,35 +79,35 @@ CLASS z2ui5_cl_demo_app_360 IMPLEMENTATION. ct->_( n = `Title` a = `text` v = `Number` ). ct->_( n = `Label` a = `text` v = `Raw value` ). - ct->_( n = `Input` a = `value` v = client->_bind_edit( mv_big_number ) ). + ct->_( n = `Input` a = `value` v = client->_bind_edit( big_number ) ). ct->_( n = `Label` a = `text` v = `Float (grouped, 2 decimals)` ). ct->_( n = `Input` - p = VALUE #( ( n = `enabled` v = abap_false ) - ( n = `value` v = lv_float_bind ) ) ). + p = VALUE #( ( n = `enabled` v = abap_false ) + ( n = `value` v = float_bind ) ) ). ct->_( n = `Label` a = `text` v = `Raw integer` ). - ct->_( n = `Input` a = `value` v = client->_bind_edit( mv_integer ) ). + ct->_( n = `Input` a = `value` v = client->_bind_edit( integer ) ). ct->_( n = `Label` a = `text` v = `Integer (formatted)` ). ct->_( n = `Input` - p = VALUE #( ( n = `enabled` v = abap_false ) - ( n = `value` v = lv_int_bind ) ) ). + p = VALUE #( ( n = `enabled` v = abap_false ) + ( n = `value` v = int_bind ) ) ). ct->_( n = `Title` a = `text` v = `Currency` ). ct->_( n = `Label` a = `text` v = `Price` ). - ct->_( n = `Input` a = `value` v = client->_bind_edit( mv_price ) ). + ct->_( n = `Input` a = `value` v = client->_bind_edit( price ) ). ct->_( n = `Label` a = `text` v = `Currency code` ). - ct->_( n = `Input` a = `value` v = client->_bind_edit( mv_currency ) ). + ct->_( n = `Input` a = `value` v = client->_bind_edit( currency ) ). ct->_( n = `Label` a = `text` v = `Formatted (Currency type)` ). ct->_( n = `Input` - p = VALUE #( ( n = `enabled` v = abap_false ) - ( n = `value` v = lv_curr_bind ) ) ). + p = VALUE #( ( n = `enabled` v = abap_false ) + ( n = `value` v = curr_bind ) ) ). ct->_( n = `Title` a = `text` v = `Date` ). ct->_( n = `Label` a = `text` v = `Raw date (yyyy-MM-dd)` ). - ct->_( n = `Input` a = `value` v = client->_bind_edit( mv_date ) ). + ct->_( n = `Input` a = `value` v = client->_bind_edit( date ) ). ct->_( n = `Label` a = `text` v = `Formatted (long style)` ). ct->_( n = `Input` - p = VALUE #( ( n = `enabled` v = abap_false ) - ( n = `value` v = lv_date_bind ) ) ). + p = VALUE #( ( n = `enabled` v = abap_false ) + ( n = `value` v = date_bind ) ) ). client->view_display( view->stringify( ) ).