Samples / Controls / sap.f

Dynamic Page with Analytical Table

Dynamic Page containing an Analytical Table in the content area aligned with the SAP Fiori List Report floorplan.

Class
z2ui5_cl_smpc_app_559
Repository
abap2UI5/samples-controls
Ports
sap.f.sample.DynamicPageAnalyticalTable
UI5 libraries
sap.f, sap.m, sap.ui.core, sap.ui.layout, sap.ui.table, sap.ui.unified
Lowest UI5 release
1.119
In the browser
Runs in the playground
Controls it builds
sap.f.Card, sap.f.DynamicPage, sap.f.DynamicPageHeader, sap.f.DynamicPageTitle, sap.f.cards.NumericHeader, sap.f.cards.NumericSideIndicator, sap.m.Button, sap.m.CheckBox, sap.m.ComboBox, sap.m.DatePicker, sap.m.FlexBox, sap.m.GenericTag, sap.m.Input, sap.m.Label, sap.m.Link, sap.m.ObjectAttribute, sap.m.ObjectNumber, sap.m.ObjectStatus, sap.m.OverflowToolbar, sap.m.Panel, sap.m.Popover, sap.m.Select, sap.m.Text, sap.m.Title, sap.m.ToolbarSpacer, sap.ui.core.FragmentDefinition, sap.ui.core.Icon, sap.ui.core.Item, sap.ui.core.mvc.View, sap.ui.layout.HorizontalLayout, sap.ui.layout.VerticalLayout, sap.ui.table.Column, sap.ui.table.Table, sap.ui.unified.Currency

The class

" @keywords dynamicpage dynamic sap.f dynamicpageanalyticaltable dynamicpagetitle title label overflowtoolbar generictag objectnumber toolbarspacer button
" @summary Dynamic Page containing an Analytical Table in the content area aligned with the SAP Fiori List Report floorplan.
" @origin sap.f.sample.DynamicPageAnalyticalTable - https://sdk.openui5.org/entity/sap.f.DynamicPage/sample/sap.f.sample.DynamicPageAnalyticalTable (status: generated - machine-written, not yet reviewed)
CLASS z2ui5_cl_smpc_app_559 DEFINITION PUBLIC.

  PUBLIC SECTION.
    INTERFACES z2ui5_if_app.

    TYPES:
      BEGIN OF ty_s_named,
        name TYPE string,
      END OF ty_s_named.
    TYPES:
      BEGIN OF ty_s_product,
        productid      TYPE string,
        name           TYPE string,
        quantity       TYPE i,
        status         TYPE string,
        price          TYPE p LENGTH 9 DECIMALS 2,
        currencycode   TYPE string,
        suppliername   TYPE string,
        productpicurl  TYPE string,
        category       TYPE string,
        weightmeasure  TYPE p LENGTH 9 DECIMALS 3,
        " derived in initSampleDataModel, reproduced in model_init
        available      TYPE abap_bool,
        availablestate TYPE string,
        availableicon  TYPE string,
        heavy          TYPE string,
        deliverydate   TYPE string,
      END OF ty_s_product.

    DATA productcollection TYPE STANDARD TABLE OF ty_s_product WITH EMPTY KEY.
    DATA suppliers         TYPE STANDARD TABLE OF ty_s_named WITH EMPTY KEY.
    DATA categories        TYPE STANDARD TABLE OF ty_s_named WITH EMPTY KEY.
    " initSampleDataModel puts headerExpanded on the model and the page binds it
    DATA headerexpanded    TYPE abap_bool VALUE abap_true.

  PROTECTED SECTION.
    DATA client TYPE REF TO z2ui5_if_client.

    METHODS view_display.
    METHODS popover_display IMPORTING by_id TYPE string.
    METHODS on_event.
    METHODS model_init.

  PRIVATE SECTION.
ENDCLASS.


CLASS z2ui5_cl_smpc_app_559 IMPLEMENTATION.

  METHOD z2ui5_if_app~main.

    me->client = client.
    IF client->check_on_init( ).
      model_init( ).
      view_display( ).
    ELSEIF client->check_on_navigated( ).
      view_display( ).
    ELSEIF client->check_on_event( ).
      on_event( ).
    ENDIF.

  ENDMETHOD.


  METHOD view_display.

    DATA(view) = z2ui5_cl_ui5_view_builder=>factory( ).

    DATA(page) = view->ele( n = `View` ns = `mvc`
        )->a( n = `height`      v = `100%`
        )->a( n = `xmlns`       v = `sap.m`
        )->a( n = `xmlns:mvc`   v = `sap.ui.core.mvc`
        )->a( n = `xmlns:core`  v = `sap.ui.core`
        )->a( n = `xmlns:u`     v = `sap.ui.unified`
        )->a( n = `xmlns:table` v = `sap.ui.table`
        )->a( n = `xmlns:f`     v = `sap.f`
        )->a( n = `xmlns:l`     v = `sap.ui.layout`

        )->ele( n = `DynamicPage` ns = `f`
            )->a( n = `id`                          v = `dynamicPageId`
            )->a( n = `preserveHeaderStateOnScroll` v = `true`
            )->a( n = `headerExpanded`              v = client->_bind( headerexpanded )
            )->a( n = `showFooter`                  v = `true`
            )->a( n = `fitContent`                  v = `true` ).

    " DynamicPage Title
    DATA(title) = page->ele( n = `title` ns = `f`
        )->ele( n = `DynamicPageTitle` ns = `f` ).

    title->ele( n = `heading` ns = `f`
        )->tag( `Title`
            )->a( n = `text` v = `Header Title`

    )->end(
        )->ele( n = `expandedContent` ns = `f`
            )->tag( `Label`
                )->a( n = `text` v = `This is a subheading`

        )->end(
        )->ele( n = `snappedContent` ns = `f`
            )->tag( `Label`
                )->a( n = `text` v = `This is a subheading`

        )->end(
        )->ele( n = `snappedTitleOnMobile` ns = `f`
            )->tag( `Title`
                )->a( n = `text` v = `This is a subheading`

        )->end(
        )->ele( n = `content` ns = `f`
            )->ele( `OverflowToolbar`

                )->ele( `GenericTag`
                    )->a( n = `text`   v = `SR`
                    )->a( n = `status` v = `Error`
                    )->a( n = `design` v = `StatusIconHidden`
                    " onGenericTagPress anchors the card popover on the pressed tag
                    )->a( n = `press`  v = client->_event( val = `GENERIC_TAG` arg = `$event.oSource.sId` )

                    )->tag( `ObjectNumber`
                        )->a( n = `number`     v = `2`
                        )->a( n = `unit`       v = `M`
                        )->a( n = `emphasized` v = `false`
                        )->a( n = `state`      v = `Error`

                )->end(
            )->end(
        )->end(
        )->ele( n = `actions` ns = `f`
            )->tag( `ToolbarSpacer`
            )->tag( `Button`
                )->a( n = `text` v = `Edit`
                )->a( n = `type` v = `Emphasized`
            )->tag( `Button`
                )->a( n = `text` v = `Delete`
                )->a( n = `type` v = `Transparent`
            )->tag( `Button`
                )->a( n = `text` v = `Copy`
                )->a( n = `type` v = `Transparent`
            )->tag( `Button`
                )->a( n = `icon`    v = `sap-icon://action`
                )->a( n = `tooltip` v = `Share`
                )->a( n = `type`    v = `Transparent` ).

    " DynamicPage Header
    page->ele( n = `header` ns = `f`
        )->ele( n = `DynamicPageHeader` ns = `f`
            )->a( n = `pinnable` v = `true`

            )->ele( `FlexBox`
                )->a( n = `alignItems`     v = `Start`
                )->a( n = `justifyContent` v = `SpaceBetween`

                )->ele( `items`
                    )->ele( `Panel`
                        )->a( n = `backgroundDesign` v = `Transparent`
                        )->a( n = `class`            v = `sapUiNoContentPadding`

                        )->ele( `content`
                            )->ele( n = `HorizontalLayout` ns = `l`
                                )->a( n = `allowWrapping` v = `true`

                                )->ele( n = `VerticalLayout` ns = `l`
                                    )->a( n = `class` v = `sapUiMediumMarginEnd`

                                    )->tag( `ObjectAttribute`
                                        )->a( n = `title` v = `Location`
                                        )->a( n = `text`  v = `Warehouse A`
                                    )->tag( `ObjectAttribute`
                                        )->a( n = `title` v = `Halway`
                                        )->a( n = `text`  v = `23L`
                                    )->tag( `ObjectAttribute`
                                        )->a( n = `title` v = `Rack`
                                        )->a( n = `text`  v = `34`

                                )->end(
                                )->ele( n = `VerticalLayout` ns = `l`

                                    )->tag( `ObjectAttribute`
                                        )->a( n = `title` v = `Availability`
                                    )->tag( `ObjectStatus`
                                        )->a( n = `text`  v = `In Stock`
                                        )->a( n = `state` v = `Success`

                                )->end(
                            )->end(
                        )->end(
                    )->end(
                )->end(
            )->end(
        )->end(
    )->end( ).

    DATA(columns) = page->ele( n = `content` ns = `f`
        )->ele( n = `Table` ns = `table`
            )->a( n = `rows`          v = client->_bind( productcollection )
            )->a( n = `selectionMode` v = `MultiToggle`
            )->a( n = `rowMode`       v = `Auto`

            )->ele( n = `extension` ns = `table`
                )->ele( `OverflowToolbar`
                    )->a( n = `style` v = `Clear`

                    )->tag( `Title`
                        )->a( n = `text` v = `Products`

                )->end(
            )->end(
            )->ele( n = `columns` ns = `table` ).

    columns->ele( n = `Column` ns = `table`
        )->a( n = `width` v = `11rem`
        )->tag( `Label`
            )->a( n = `text` v = `Product Name`
        )->ele( n = `template` ns = `table`
            )->tag( `Text`
                )->a( n = `text`     v = `{NAME}`
                )->a( n = `wrapping` v = `false`

        )->end(
    )->end(
        )->ele( n = `Column` ns = `table`
            )->a( n = `width` v = `11rem`
            )->tag( `Label`
                )->a( n = `text` v = `Product Id`
            )->ele( n = `template` ns = `table`
                )->tag( `Input`
                    )->a( n = `value` v = `{PRODUCTID}`

            )->end(
        )->end(
        )->ele( n = `Column` ns = `table`
            )->a( n = `width`  v = `6rem`
            )->a( n = `hAlign` v = `End`
            )->tag( `Label`
                )->a( n = `text` v = `Quantity`
            )->ele( n = `template` ns = `table`
                )->tag( `Label`
                    )->a( n = `text` v = `{QUANTITY}`

            )->end(
        )->end(
        )->ele( n = `Column` ns = `table`
            )->a( n = `width` v = `9rem`
            )->tag( `Label`
                )->a( n = `text` v = `Status`
            )->ele( n = `template` ns = `table`
                )->tag( `ObjectStatus`
                    )->a( n = `text`  v = `{STATUS}`
                    " formatAvailableToObjectState is computed in ABAP (thin frontend)
                    )->a( n = `state` v = `{AVAILABLESTATE}`

            )->end(
        )->end(
        )->ele( n = `Column` ns = `table`
            )->a( n = `width` v = `9rem`
            )->tag( `Label`
                )->a( n = `text` v = `Price`
            )->ele( n = `template` ns = `table`
                )->tag( n = `Currency` ns = `u`
                    )->a( n = `value`    v = `{PRICE}`
                    )->a( n = `currency` v = `{CURRENCYCODE}`

            )->end(
        )->end(
        )->ele( n = `Column` ns = `table`
            )->a( n = `width` v = `12rem`
            )->tag( `Label`
                )->a( n = `text` v = `Supplier`
            )->ele( n = `template` ns = `table`
                )->ele( `ComboBox`
                    )->a( n = `value` v = `{SUPPLIERNAME}`
                    )->a( n = `items` v = |\{ path: '{ client->_bind_path( suppliers ) }', templateShareable: false \}|

                    )->tag( n = `Item` ns = `core`
                        )->a( n = `text` v = `{NAME}`

                )->end(
            )->end(
        )->end(
        )->ele( n = `Column` ns = `table`
            )->a( n = `width` v = `9rem`
            )->tag( `Label`
                )->a( n = `text` v = `Image`
            )->ele( n = `template` ns = `table`
                )->tag( `Link`
                    )->a( n = `text`   v = `Show Image`
                    )->a( n = `href`   v = `{PRODUCTPICURL}`
                    )->a( n = `target` v = `_blank`

            )->end(
        )->end(
        )->ele( n = `Column` ns = `table`
            )->a( n = `width` v = `9rem`
            )->tag( `Label`
                )->a( n = `text` v = `Details`
            )->ele( n = `template` ns = `table`
                " handleDetailsPress toasts the row's ProductId - the row field
                " resolves on the client, so no round-trip
                )->tag( `Button`
                    )->a( n = `text`  v = `Show Details`
                    )->a( n = `press` v = client->follow_up_action(
                              val   = client->cs_event-control_global
                              t_arg = VALUE #( ( `MESSAGE_TOAST` )
                                               ( `show` )
                                               ( `Details for product with id {0}` )
                                               ( `${PRODUCTID}` ) ) )

            )->end(
        )->end(
        )->ele( n = `Column` ns = `table`
            )->a( n = `width` v = `7rem`
            )->tag( `Label`
                )->a( n = `text` v = `Heavy Weight`
            )->ele( n = `template` ns = `table`
                )->tag( `CheckBox`
                    )->a( n = `selected` v = |\{ path: 'HEAVY', type: 'sap.ui.model.type.String' \}|

            )->end(
        )->end(
        )->ele( n = `Column` ns = `table`
            )->a( n = `width` v = `12rem`
            )->tag( `Label`
                )->a( n = `text` v = `Category`
            )->ele( n = `template` ns = `table`
                )->ele( `Select`
                    )->a( n = `selectedKey` v = `{CATEGORY}`
                    )->a( n = `items`       v = |\{ path: '{ client->_bind_path( categories ) }', templateShareable: false \}|

                    )->tag( n = `Item` ns = `core`
                        )->a( n = `text` v = `{NAME}`
                        )->a( n = `key`  v = `{NAME}`

                )->end(
            )->end(
        )->end(
        )->ele( n = `Column` ns = `table`
            )->a( n = `width`  v = `6rem`
            )->a( n = `hAlign` v = `Center`
            )->tag( `Label`
                )->a( n = `text` v = `Status`
            )->ele( n = `template` ns = `table`
                )->tag( n = `Icon` ns = `core`
                    " formatAvailableToIcon is computed in ABAP (thin frontend)
                    )->a( n = `src` v = `{AVAILABLEICON}`

            )->end(
        )->end(
        )->ele( n = `Column` ns = `table`
            )->a( n = `width`  v = `11rem`
            )->a( n = `hAlign` v = `Center`
            )->tag( `Label`
                )->a( n = `text` v = `Delivery Date`
            )->ele( n = `template` ns = `table`
                )->tag( `DatePicker`
                    )->a( n = `value` v = |\{ path: 'DELIVERYDATE', type: 'sap.ui.model.type.Date', formatOptions: \{ source: \{ pattern: 'yyyy-MM-dd' \} \} \}|

            )->end(
        )->end(
    )->end(
    )->end( ).

    " DynamicPage Footer
    page->ele( n = `footer` ns = `f`
        )->ele( `OverflowToolbar`
            )->tag( `ToolbarSpacer`
            )->tag( `Button`
                )->a( n = `type` v = `Accept`
                )->a( n = `text` v = `Accept`
            )->tag( `Button`
                )->a( n = `type` v = `Reject`
                )->a( n = `text` v = `Reject` ).

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

  ENDMETHOD.


  METHOD popover_display.

    " Card.fragment.xml - the numeric card the GenericTag opens
    DATA(popup) = z2ui5_cl_ui5_view_builder=>factory( ).

    popup->ele( n = `FragmentDefinition` ns = `core`
        )->a( n = `xmlns`      v = `sap.m`
        )->a( n = `xmlns:core` v = `sap.ui.core`
        )->a( n = `xmlns:f`    v = `sap.f`
        )->a( n = `xmlns:card` v = `sap.f.cards`

        )->ele( `Popover`
            )->a( n = `placement`    v = `Right`
            )->a( n = `showHeader`   v = `false`
            )->a( n = `contentWidth` v = `300px`

            )->ele( n = `Card` ns = `f`
                )->a( n = `width` v = `300px`

                )->ele( n = `header` ns = `f`
                    )->ele( n = `NumericHeader` ns = `card`
                        )->a( n = `title`             v = `Sales Revenue`
                        )->a( n = `subtitle`          v = `Sales revenue in the current quarter`
                        )->a( n = `unitOfMeasurement` v = `EUR`
                        )->a( n = `number`            v = `2.16`
                        )->a( n = `scale`             v = `M`
                        )->a( n = `trend`             v = `Down`
                        )->a( n = `state`             v = `Error`

                        )->ele( n = `sideIndicators` ns = `card`
                            )->tag( n = `NumericSideIndicator` ns = `card`
                                )->a( n = `number` v = `4.74`
                                )->a( n = `unit`   v = `M`
                                )->a( n = `title`  v = `Target`
                            )->tag( n = `NumericSideIndicator` ns = `card`
                                )->a( n = `number` v = `-54.49`
                                )->a( n = `unit`   v = `%`
                                )->a( n = `title`  v = `Deviation` ).

    client->popover_display( xml = popup->stringify( ) by_id = by_id ).

  ENDMETHOD.


  METHOD on_event.

    " onGenericTagPress is the sample's only handler that reaches the backend
    IF client->get_event( ) = `GENERIC_TAG`.
      popover_display( client->get_event_arg( ) ).
    ENDIF.

  ENDMETHOD.


  METHOD model_init.

    " sap/ui/demo/mock/products.json, all 123 rows verbatim (ui5/mock/products.json)
    productcollection = VALUE #(
      ( productid = `HT-1000` name = `Notebook Basic 15` quantity = 10 status = `Available` price = '956' currencycode = `EUR` suppliername = `Very Best Screens`
        productpicurl = `https://sdk.openui5.org/test-resources/sap/ui/documentation/sdk/images/HT-1000.jpg` category = `Laptops` weightmeasure = '4.2' )
      ( productid = `HT-1001` name = `Notebook Basic 17` quantity = 20 status = `Available` price = '1249' currencycode = `EUR` suppliername = `Very Best Screens`
        productpicurl = `https://sdk.openui5.org/test-resources/sap/ui/documentation/sdk/images/HT-1001.jpg` category = `Laptops` weightmeasure = '4.5' )
      ( productid = `HT-1002` name = `Notebook Basic 18` quantity = 10 status = `Available` price = '1570' currencycode = `EUR` suppliername = `Very Best Screens`
        productpicurl = `https://sdk.openui5.org/test-resources/sap/ui/documentation/sdk/images/HT-1002.jpg` category = `Laptops` weightmeasure = '4.2' )
      ( productid = `HT-1003` name = `Notebook Basic 19` quantity = 15 status = `Out of Stock` price = '1650' currencycode = `EUR` suppliername = `Smartcards`
        productpicurl = `https://sdk.openui5.org/test-resources/sap/ui/documentation/sdk/images/HT-1003.jpg` category = `Laptops` weightmeasure = '4.2' )
      ( productid = `HT-1007` name = `ITelO Vault` quantity = 15 status = `Out of Stock` price = '299' currencycode = `EUR` suppliername = `Technocom`
        productpicurl = `https://sdk.openui5.org/test-resources/sap/ui/documentation/sdk/images/HT-1007.jpg` category = `Accessories` weightmeasure = '0.2' )
      ( productid = `HT-1010` name = `Notebook Professional 15` quantity = 16 status = `Out of Stock` price = '1999' currencycode = `EUR` suppliername = `Very Best Screens`
        productpicurl = `https://sdk.openui5.org/test-resources/sap/ui/documentation/sdk/images/HT-1010.jpg` category = `Accessories` weightmeasure = '4.3' )
      ( productid = `HT-1011` name = `Notebook Professional 17` quantity = 17 status = `Out of Stock` price = '2299' currencycode = `EUR` suppliername = `Very Best Screens`
        productpicurl = `https://sdk.openui5.org/test-resources/sap/ui/documentation/sdk/images/HT-1011.jpg` category = `Laptops` weightmeasure = '4.1' )
      ( productid = `HT-1020` name = `ITelO Vault Net` quantity = 14 status = `Discontinued` price = '459' currencycode = `EUR` suppliername = `Technocom`
        productpicurl = `https://sdk.openui5.org/test-resources/sap/ui/documentation/sdk/images/HT-1020.jpg` category = `Accessories` weightmeasure = '0.16' )
      ( productid = `HT-1021` name = `ITelO Vault SAT` quantity = 50 status = `Available` price = '149' currencycode = `EUR` suppliername = `Technocom`
        productpicurl = `https://sdk.openui5.org/test-resources/sap/ui/documentation/sdk/images/HT-1021.jpg` category = `Accessories` weightmeasure = '0.18' )
      ( productid = `HT-1022` name = `Comfort Easy` quantity = 30 status = `Out of Stock` price = '1679' currencycode = `EUR` suppliername = `Technocom`
        productpicurl = `https://sdk.openui5.org/test-resources/sap/ui/documentation/sdk/images/HT-1022.jpg` category = `Accessories` weightmeasure = '0.2' )
      ( productid = `HT-1023` name = `Comfort Senior` quantity = 24 status = `Available` price = '512' currencycode = `EUR` suppliername = `Technocom`
        productpicurl = `https://sdk.openui5.org/test-resources/sap/ui/documentation/sdk/images/HT-1023.jpg` category = `Accessories` weightmeasure = '0.8' )
      ( productid = `HT-1030` name = `Ergo Screen E-I` quantity = 14 status = `Available` price = '230' currencycode = `EUR` suppliername = `Very Best Screens`
        productpicurl = `https://sdk.openui5.org/test-resources/sap/ui/documentation/sdk/images/HT-1030.jpg` category = `Flat Screen Monitors` weightmeasure = '21' )
      ( productid = `HT-1031` name = `Ergo Screen E-II` quantity = 24 status = `Available` price = '285' currencycode = `EUR` suppliername = `Very Best Screens`
        productpicurl = `https://sdk.openui5.org/test-resources/sap/ui/documentation/sdk/images/HT-1031.jpg` category = `Flat Screen Monitors` weightmeasure = '21' )
      ( productid = `HT-1032` name = `Ergo Screen E-III` quantity = 50 status = `Out of Stock` price = '345' currencycode = `EUR` suppliername = `Very Best Screens`
        productpicurl = `https://sdk.openui5.org/test-resources/sap/ui/documentation/sdk/images/HT-1032.jpg` category = `Flat Screen Monitors` weightmeasure = '21' )
      ( productid = `HT-1035` name = `Flat Basic` quantity = 23 status = `Available` price = '399' currencycode = `EUR` suppliername = `Very Best Screens`
        productpicurl = `https://sdk.openui5.org/test-resources/sap/ui/documentation/sdk/images/HT-1035.jpg` category = `Flat Screen Monitors` weightmeasure = '14' )
      ( productid = `HT-1036` name = `Flat Future` quantity = 22 status = `Available` price = '430' currencycode = `EUR` suppliername = `Very Best Screens`
        productpicurl = `https://sdk.openui5.org/test-resources/sap/ui/documentation/sdk/images/HT-1036.jpg` category = `Flat Screen Monitors` weightmeasure = '15' )
      ( productid = `HT-1037` name = `Flat XL` quantity = 23 status = `Available` price = '1230' currencycode = `EUR` suppliername = `Very Best Screens`
        productpicurl = `https://sdk.openui5.org/test-resources/sap/ui/documentation/sdk/images/HT-1037.jpg` category = `Flat Screen Monitors` weightmeasure = '17' )
      ( productid = `HT-1040` name = `Laser Professional Eco` quantity = 21 status = `Available` price = '830' currencycode = `EUR` suppliername = `Alpha Printers`
        productpicurl = `https://sdk.openui5.org/test-resources/sap/ui/documentation/sdk/images/HT-1040.jpg` category = `Printers` weightmeasure = '32' )
      ( productid = `HT-1041` name = `Laser Basic` quantity = 8 status = `Available` price = '490' currencycode = `EUR` suppliername = `Alpha Printers`
        productpicurl = `https://sdk.openui5.org/test-resources/sap/ui/documentation/sdk/images/HT-1041.jpg` category = `Printers` weightmeasure = '23' )
      ( productid = `HT-1042` name = `Laser Allround` quantity = 9 status = `Available` price = '349' currencycode = `EUR` suppliername = `Alpha Printers`
        productpicurl = `https://sdk.openui5.org/test-resources/sap/ui/documentation/sdk/images/HT-1042.jpg` category = `Printers` weightmeasure = '17' )
      ( productid = `HT-1050` name = `Ultra Jet Super Color` quantity = 17 status = `Discontinued` price = '139' currencycode = `EUR` suppliername = `Alpha Printers`
        productpicurl = `https://sdk.openui5.org/test-resources/sap/ui/documentation/sdk/images/HT-1050.jpg` category = `Printers` weightmeasure = '3' )
      ( productid = `HT-1051` name = `Ultra Jet Mobile` quantity = 18 status = `Discontinued` price = '99' currencycode = `EUR` suppliername = `Printer for All`
        productpicurl = `https://sdk.openui5.org/test-resources/sap/ui/documentation/sdk/images/HT-1051.jpg` category = `Printers` weightmeasure = '1.9' )
      ( productid = `HT-1052` name = `Ultra Jet Super Highspeed` quantity = 25 status = `Available` price = '170' currencycode = `EUR` suppliername = `Printer for All`
        productpicurl = `https://sdk.openui5.org/test-resources/sap/ui/documentation/sdk/images/HT-1052.jpg` category = `Printers` weightmeasure = '18' )
      ( productid = `HT-1055` name = `Multi Print` quantity = 16 status = `Available` price = '99' currencycode = `EUR` suppliername = `Printer for All`
        productpicurl = `https://sdk.openui5.org/test-resources/sap/ui/documentation/sdk/images/HT-1055.jpg` category = `Multifunction Printers` weightmeasure = '6.3' )
      ( productid = `HT-1056` name = `Multi Color` quantity = 5 status = `Available` price = '119' currencycode = `EUR` suppliername = `Printer for All`
        productpicurl = `https://sdk.openui5.org/test-resources/sap/ui/documentation/sdk/images/HT-1056.jpg` category = `Multifunction Printers` weightmeasure = '4.3' )
      ( productid = `HT-1060` name = `Cordless Mouse` quantity = 25 status = `Available` price = '9' currencycode = `EUR` suppliername = `Oxynum`
        productpicurl = `https://sdk.openui5.org/test-resources/sap/ui/documentation/sdk/images/HT-1060.jpg` category = `Mice` weightmeasure = '0.09' )
      ( productid = `HT-1061` name = `Speed Mouse` quantity = 12 status = `Available` price = '7' currencycode = `EUR` suppliername = `Oxynum`
        productpicurl = `https://sdk.openui5.org/test-resources/sap/ui/documentation/sdk/images/HT-1061.jpg` category = `Mice` weightmeasure = '0.09' )
      ( productid = `HT-1062` name = `Track Mouse` quantity = 12 status = `Discontinued` price = '11' currencycode = `EUR` suppliername = `Oxynum`
        productpicurl = `https://sdk.openui5.org/test-resources/sap/ui/documentation/sdk/images/HT-1062.jpg` category = `Mice` weightmeasure = '0.03' )
      ( productid = `HT-1063` name = `Ergonomic Keyboard` quantity = 50 status = `Available` price = '14' currencycode = `EUR` suppliername = `Oxynum`
        productpicurl = `https://sdk.openui5.org/test-resources/sap/ui/documentation/sdk/images/HT-1063.jpg` category = `Keyboards` weightmeasure = '2.1' )
      ( productid = `HT-1064` name = `Internet Keyboard` quantity = 35 status = `Out of Stock` price = '16' currencycode = `EUR` suppliername = `Oxynum`
        productpicurl = `https://sdk.openui5.org/test-resources/sap/ui/documentation/sdk/images/HT-1064.jpg` category = `Keyboards` weightmeasure = '1.8' )
      ( productid = `HT-1065` name = `Media Keyboard` quantity = 26 status = `Available` price = '26' currencycode = `EUR` suppliername = `Oxynum`
        productpicurl = `https://sdk.openui5.org/test-resources/sap/ui/documentation/sdk/images/HT-1065.jpg` category = `Keyboards` weightmeasure = '2.3' )
      ( productid = `HT-1066` name = `Mousepad` quantity = 12 status = `Available` price = '6.99' currencycode = `EUR` suppliername = `Oxynum`
        productpicurl = `https://sdk.openui5.org/test-resources/sap/ui/documentation/sdk/images/HT-1066.jpg` category = `Mousepads` weightmeasure = '80' )
      ( productid = `HT-1067` name = `Ergo Mousepad` quantity = 16 status = `Out of Stock` price = '8.99' currencycode = `EUR` suppliername = `Oxynum`
        productpicurl = `https://sdk.openui5.org/test-resources/sap/ui/documentation/sdk/images/HT-1067.jpg` category = `Mousepads` weightmeasure = '80' )
      ( productid = `HT-1068` name = `Designer Mousepad` quantity = 26 status = `Available` price = '12.99' currencycode = `EUR` suppliername = `Fasttech`
        productpicurl = `https://sdk.openui5.org/test-resources/sap/ui/documentation/sdk/images/HT-1068.jpg` category = `Mousepads` weightmeasure = '90' )
      ( productid = `HT-1069` name = `Universal card reader` quantity = 22 status = `Available` price = '14' currencycode = `EUR` suppliername = `Fasttech`
        productpicurl = `https://sdk.openui5.org/test-resources/sap/ui/documentation/sdk/images/HT-1069.jpg` category = `Computer System Accessories` weightmeasure = '45' )
      ( productid = `HT-1070` name = `Proctra X` quantity = 15 status = `Out of Stock` price = '70.9' currencycode = `EUR` suppliername = `Ultrasonic United`
        productpicurl = `https://sdk.openui5.org/test-resources/sap/ui/documentation/sdk/images/HT-1070.jpg` category = `Graphic Cards` weightmeasure = '0.255' )
      ( productid = `HT-1071` name = `Gladiator MX` quantity = 16 status = `Discontinued` price = '81.7' currencycode = `EUR` suppliername = `Ultrasonic United`
        productpicurl = `https://sdk.openui5.org/test-resources/sap/ui/documentation/sdk/images/HT-1071.jpg` category = `Graphic Cards` weightmeasure = '0.3' )
      ( productid = `HT-1072` name = `Hurricane GX` quantity = 13 status = `Available` price = '101.2' currencycode = `EUR` suppliername = `Ultrasonic United`
        productpicurl = `https://sdk.openui5.org/test-resources/sap/ui/documentation/sdk/images/HT-1072.jpg` category = `Graphic Cards` weightmeasure = '0.4' )
      ( productid = `HT-1073` name = `Hurricane GX/LN` quantity = 5 status = `Out of Stock` price = '139.99' currencycode = `EUR` suppliername = `Smartcards`
        productpicurl = `https://sdk.openui5.org/test-resources/sap/ui/documentation/sdk/images/HT-1073.jpg` category = `Graphic Cards` weightmeasure = '0.4' )
      ( productid = `HT-1080` name = `Photo Scan` quantity = 8 status = `Out of Stock` price = '129' currencycode = `EUR` suppliername = `Printer for All`
        productpicurl = `https://sdk.openui5.org/test-resources/sap/ui/documentation/sdk/images/HT-1080.jpg` category = `Scanners` weightmeasure = '2.3' )
      ( productid = `HT-1081` name = `Power Scan` quantity = 11 status = `Out of Stock` price = '89' currencycode = `EUR` suppliername = `Printer for All`
        productpicurl = `https://sdk.openui5.org/test-resources/sap/ui/documentation/sdk/images/HT-1081.jpg` category = `Scanners` weightmeasure = '2.4' )
      ( productid = `HT-1082` name = `Jet Scan Professional` quantity = 13 status = `Out of Stock` price = '169' currencycode = `EUR` suppliername = `Printer for All`
        productpicurl = `https://sdk.openui5.org/test-resources/sap/ui/documentation/sdk/images/HT-1082.jpg` category = `Scanners` weightmeasure = '3.2' )
      ( productid = `HT-1083` name = `Jet Scan Professional` quantity = 10 status = `Available` price = '189' currencycode = `EUR` suppliername = `Printer for All`
        productpicurl = `https://sdk.openui5.org/test-resources/sap/ui/documentation/sdk/images/HT-1083.jpg` category = `Scanners` weightmeasure = '3.2' )
      ( productid = `HT-1085` name = `Copymaster` quantity = 10 status = `Available` price = '1499' currencycode = `EUR` suppliername = `Alpha Printers`
        productpicurl = `https://sdk.openui5.org/test-resources/sap/ui/documentation/sdk/images/HT-1085.jpg` category = `Multifunction Printers` weightmeasure = '23.2' )
      ( productid = `HT-1090` name = `Surround Sound` quantity = 20 status = `Available` price = '39' currencycode = `EUR` suppliername = `Speaker Experts`
        productpicurl = `https://sdk.openui5.org/test-resources/sap/ui/documentation/sdk/images/HT-1090.jpg` category = `Speakers` weightmeasure = '3' )
      ( productid = `HT-1091` name = `Blaster Extreme` quantity = 15 status = `Available` price = '26' currencycode = `EUR` suppliername = `Speaker Experts`
        productpicurl = `https://sdk.openui5.org/test-resources/sap/ui/documentation/sdk/images/HT-1091.jpg` category = `Speakers` weightmeasure = '1.4' )
      ( productid = `HT-1092` name = `Sound Booster` quantity = 50 status = `Discontinued` price = '45' currencycode = `EUR` suppliername = `Speaker Experts`
        productpicurl = `https://sdk.openui5.org/test-resources/sap/ui/documentation/sdk/images/HT-1092.jpg` category = `Speakers` weightmeasure = '2.1' )
      ( productid = `HT-1095` name = `Lovely Sound 5.1 Wireless` quantity = 12 status = `Available` price = '49' currencycode = `EUR` suppliername = `Fasttech`
        productpicurl = `https://sdk.openui5.org/test-resources/sap/ui/documentation/sdk/images/HT-1095.jpg` category = `Accessories` weightmeasure = '80' )
      ( productid = `HT-1096` name = `Lovely Sound 5.1` quantity = 18 status = `Available` price = '39' currencycode = `EUR` suppliername = `Fasttech`
        productpicurl = `https://sdk.openui5.org/test-resources/sap/ui/documentation/sdk/images/HT-1096.jpg` category = `Accessories` weightmeasure = '130' )
      ( productid = `HT-1097` name = `Lovely Sound Stereo` quantity = 21 status = `Out of Stock` price = '29' currencycode = `EUR` suppliername = `Fasttech`
        productpicurl = `https://sdk.openui5.org/test-resources/sap/ui/documentation/sdk/images/HT-1097.jpg` category = `Accessories` weightmeasure = '60' )
      ( productid = `HT-1100` name = `Smart Office` quantity = 25 status = `Out of Stock` price = '89.9' currencycode = `EUR` suppliername = `Technocom`
        productpicurl = `https://sdk.openui5.org/test-resources/sap/ui/documentation/sdk/images/HT-1100.jpg` category = `Software` weightmeasure = '1.2' )
      ( productid = `HT-1101` name = `Smart Design` quantity = 26 status = `Available` price = '79.9' currencycode = `EUR` suppliername = `Technocom`
        productpicurl = `https://sdk.openui5.org/test-resources/sap/ui/documentation/sdk/images/HT-1101.jpg` category = `Software` weightmeasure = '0.8' )
      ( productid = `HT-1102` name = `Smart Network` quantity = 28 status = `Available` price = '69' currencycode = `EUR` suppliername = `Technocom`
        productpicurl = `https://sdk.openui5.org/test-resources/sap/ui/documentation/sdk/images/HT-1102.jpg` category = `Software` weightmeasure = '0.8' )
      ( productid = `HT-1103` name = `Smart Multimedia` quantity = 9 status = `Available` price = '77' currencycode = `EUR` suppliername = `Technocom`
        productpicurl = `https://sdk.openui5.org/test-resources/sap/ui/documentation/sdk/images/HT-1103.jpg` category = `Software` weightmeasure = '0.8' )
      ( productid = `HT-1104` name = `Smart Games` quantity = 13 status = `Available` price = '55' currencycode = `EUR` suppliername = `Technocom`
        productpicurl = `https://sdk.openui5.org/test-resources/sap/ui/documentation/sdk/images/HT-1104.jpg` category = `Software` weightmeasure = '1.1' )
      ( productid = `HT-1105` name = `Smart Internet Antivirus` quantity = 17 status = `Available` price = '29' currencycode = `EUR` suppliername = `Brainsoft`
        productpicurl = `https://sdk.openui5.org/test-resources/sap/ui/documentation/sdk/images/HT-1105.jpg` category = `Software` weightmeasure = '0.7' )
      ( productid = `HT-1106` name = `Smart Firewall` quantity = 19 status = `Discontinued` price = '34' currencycode = `EUR` suppliername = `Brainsoft`
        productpicurl = `https://sdk.openui5.org/test-resources/sap/ui/documentation/sdk/images/HT-1106.jpg` category = `Software` weightmeasure = '0.9' )
      ( productid = `HT-1107` name = `Smart Money` quantity = 18 status = `Out of Stock` price = '29.9' currencycode = `EUR` suppliername = `Brainsoft`
        productpicurl = `https://sdk.openui5.org/test-resources/sap/ui/documentation/sdk/images/HT-1107.jpg` category = `Software` weightmeasure = '0.5' )
      ( productid = `HT-1110` name = `PC Lock` quantity = 14 status = `Available` price = '8.9' currencycode = `EUR` suppliername = `Red Point Stores`
        productpicurl = `https://sdk.openui5.org/test-resources/sap/ui/documentation/sdk/images/HT-1110.jpg` category = `Computer System Accessories` weightmeasure = '0.03' )
      ( productid = `HT-1111` name = `Notebook Lock` quantity = 20 status = `Available` price = '6.9' currencycode = `EUR` suppliername = `Red Point Stores`
        productpicurl = `https://sdk.openui5.org/test-resources/sap/ui/documentation/sdk/images/HT-1111.jpg` category = `Computer System Accessories` weightmeasure = '0.02' )
      ( productid = `HT-1112` name = `Web cam reality` quantity = 27 status = `Out of Stock` price = '39' currencycode = `EUR` suppliername = `Red Point Stores`
        productpicurl = `https://sdk.openui5.org/test-resources/sap/ui/documentation/sdk/images/HT-1112.jpg` category = `Computer System Accessories` weightmeasure = '0.075' )
      ( productid = `HT-1113` name = `Screen clean` quantity = 17 status = `Available` price = '2.3' currencycode = `EUR` suppliername = `Red Point Stores`
        productpicurl = `https://sdk.openui5.org/test-resources/sap/ui/documentation/sdk/images/HT-1113.jpg` category = `Computer System Accessories` weightmeasure = '0.05' )
      ( productid = `HT-1114` name = `Fabric bag professional` quantity = 14 status = `Available` price = '31' currencycode = `EUR` suppliername = `Red Point Stores`
        productpicurl = `https://sdk.openui5.org/test-resources/sap/ui/documentation/sdk/images/HT-1114.jpg` category = `Computer System Accessories` weightmeasure = '1.8' )
      ( productid = `HT-1115` name = `Wireless DSL Router` quantity = 16 status = `Available` price = '49' currencycode = `EUR` suppliername = `Red Point Stores`
        productpicurl = `https://sdk.openui5.org/test-resources/sap/ui/documentation/sdk/images/HT-1115.jpg` category = `Telecommunications` weightmeasure = '0.45' )
      ( productid = `HT-1116` name = `Wireless DSL Router / Repeater` quantity = 12 status = `Out of Stock` price = '59' currencycode = `EUR` suppliername = `Red Point Stores`
        productpicurl = `https://sdk.openui5.org/test-resources/sap/ui/documentation/sdk/images/HT-1116.jpg` category = `Telecommunications` weightmeasure = '0.45' )
      ( productid = `HT-1117` name = `Wireless DSL Router / Repeater and Print Server` quantity = 12 status = `Available` price = '69' currencycode = `EUR` suppliername = `Technocom`
        productpicurl = `https://sdk.openui5.org/test-resources/sap/ui/documentation/sdk/images/HT-1117.jpg` category = `Telecommunications` weightmeasure = '0.45' )
      ( productid = `HT-1118` name = `USB Stick` quantity = 14 status = `Available` price = '35' currencycode = `EUR` suppliername = `Technocom`
        productpicurl = `https://sdk.openui5.org/test-resources/sap/ui/documentation/sdk/images/HT-1118.jpg` category = `Computer System Accessories` weightmeasure = '0.015' )
      ( productid = `HT-1119` name = `Travel Adapter` quantity = 10 status = `Discontinued` price = '79' currencycode = `EUR` suppliername = `Titanium`
        productpicurl = `https://sdk.openui5.org/test-resources/sap/ui/documentation/sdk/images/HT-1119.jpg` category = `Accessories` weightmeasure = '88' )
      ( productid = `HT-1120` name = `Cordless Bluetooth Keyboard, english international` quantity = 13 status = `Out of Stock` price = '29' currencycode = `EUR` suppliername = `Technocom`
        productpicurl = `https://sdk.openui5.org/test-resources/sap/ui/documentation/sdk/images/HT-1120.jpg` category = `Keyboards` weightmeasure = '1' )
      ( productid = `HT-1137` name = `Flat XXL` quantity = 10 status = `Discontinued` price = '1430' currencycode = `EUR` suppliername = `Technocom`
        productpicurl = `https://sdk.openui5.org/test-resources/sap/ui/documentation/sdk/images/HT-1137.jpg` category = `Flat Screen Monitors` weightmeasure = '18' )
      ( productid = `HT-1138` name = `Pocket Mouse` quantity = 20 status = `Available` price = '23' currencycode = `EUR` suppliername = `Technocom`
        productpicurl = `https://sdk.openui5.org/test-resources/sap/ui/documentation/sdk/images/HT-1138.jpg` category = `Mice` weightmeasure = '0.02' )
      ( productid = `HT-1210` name = `PC Power Station` quantity = 22 status = `Available` price = '2399' currencycode = `EUR` suppliername = `Technocom`
        productpicurl = `https://sdk.openui5.org/test-resources/sap/ui/documentation/sdk/images/HT-1210.jpg` category = `PCs` weightmeasure = '2.3' )
      ( productid = `HT-1251` name = `Astro Laptop 1516` quantity = 23 status = `Available` price = '989' currencycode = `EUR` suppliername = `Ultrasonic United`
        productpicurl = `https://sdk.openui5.org/test-resources/sap/ui/documentation/sdk/images/HT-1251.jpg` category = `Laptops` weightmeasure = '4.2' )
      ( productid = `HT-1252` name = `Astro Phone 6` quantity = 28 status = `Available` price = '649' currencycode = `EUR` suppliername = `Ultrasonic United`
        productpicurl = `https://sdk.openui5.org/test-resources/sap/ui/documentation/sdk/images/HT-1252.jpg` category = `Smartphones and Tablets` weightmeasure = '0.75' )
      ( productid = `HT-1253` name = `Benda Laptop 1408` quantity = 27 status = `Discontinued` price = '976' currencycode = `EUR` suppliername = `Ultrasonic United`
        productpicurl = `https://sdk.openui5.org/test-resources/sap/ui/documentation/sdk/images/HT-1253.jpg` category = `Laptops` weightmeasure = '4.2' )
      ( productid = `HT-1254` name = `Bending Screen 21HD` quantity = 23 status = `Available` price = '250' currencycode = `EUR` suppliername = `Ultrasonic United`
        productpicurl = `https://sdk.openui5.org/test-resources/sap/ui/documentation/sdk/images/HT-1254.jpg` category = `Flat Screens` weightmeasure = '15' )
      ( productid = `HT-1255` name = `Broad Screen 22HD` quantity = 5 status = `Discontinued` price = '270' currencycode = `EUR` suppliername = `Ultrasonic United`
        productpicurl = `https://sdk.openui5.org/test-resources/sap/ui/documentation/sdk/images/HT-1255.jpg` category = `Flat Screens` weightmeasure = '16' )
      ( productid = `HT-1256` name = `Cerdik Phone 7` quantity = 19 status = `Discontinued` price = '549' currencycode = `EUR` suppliername = `Ultrasonic United`
        productpicurl = `https://sdk.openui5.org/test-resources/sap/ui/documentation/sdk/images/HT-1256.jpg` category = `Smartphones and Tablets` weightmeasure = '0.75' )
      ( productid = `HT-1257` name = `Cepat Tablet 10.5` quantity = 17 status = `Available` price = '549' currencycode = `EUR` suppliername = `Ultrasonic United`
        productpicurl = `https://sdk.openui5.org/test-resources/sap/ui/documentation/sdk/images/HT-1257.jpg` category = `Smartphones and Tablets` weightmeasure = '2.8' )
      ( productid = `HT-1258` name = `Cepat Tablet 8` quantity = 24 status = `Available` price = '529' currencycode = `EUR` suppliername = `Ultrasonic United`
        productpicurl = `https://sdk.openui5.org/test-resources/sap/ui/documentation/sdk/images/HT-1258.jpg` category = `Smartphones and Tablets` weightmeasure = '2.5' )
      ( productid = `HT-1500` name = `Server Basic` quantity = 24 status = `Available` price = '5000' currencycode = `EUR` suppliername = `Technocom`
        productpicurl = `https://sdk.openui5.org/test-resources/sap/ui/documentation/sdk/images/HT-1500.jpg` category = `Servers` weightmeasure = '18' )
      ( productid = `HT-1501` name = `Server Professional` quantity = 26 status = `Out of Stock` price = '15000' currencycode = `EUR` suppliername = `Technocom`
        productpicurl = `https://sdk.openui5.org/test-resources/sap/ui/documentation/sdk/images/HT-1501.jpg` category = `Servers` weightmeasure = '25' )
      ( productid = `HT-1502` name = `Server Power Pro` quantity = 34 status = `Available` price = '25000' currencycode = `EUR` suppliername = `Technocom`
        productpicurl = `https://sdk.openui5.org/test-resources/sap/ui/documentation/sdk/images/HT-1502.jpg` category = `Servers` weightmeasure = '35' )
      ( productid = `HT-1600` name = `Family PC Basic` quantity = 10 status = `Available` price = '600' currencycode = `EUR` suppliername = `Titanium`
        productpicurl = `https://sdk.openui5.org/test-resources/sap/ui/documentation/sdk/images/HT-1600.jpg` category = `Desktop Computers` weightmeasure = '4.8' )
      ( productid = `HT-1601` name = `Family PC Pro` quantity = 20 status = `Available` price = '900' currencycode = `EUR` suppliername = `Titanium`
        productpicurl = `https://sdk.openui5.org/test-resources/sap/ui/documentation/sdk/images/HT-1601.jpg` category = `Desktop Computers` weightmeasure = '5.3' )
      ( productid = `HT-1602` name = `Gaming Monster` quantity = 24 status = `Available` price = '1200' currencycode = `EUR` suppliername = `Titanium`
        productpicurl = `https://sdk.openui5.org/test-resources/sap/ui/documentation/sdk/images/HT-1602.jpg` category = `Desktop Computers` weightmeasure = '5.9' )
      ( productid = `HT-1603` name = `Gaming Monster Pro` quantity = 25 status = `Discontinued` price = '1700' currencycode = `EUR` suppliername = `Titanium`
        productpicurl = `https://sdk.openui5.org/test-resources/sap/ui/documentation/sdk/images/HT-1603.jpg` category = `Desktop Computers` weightmeasure = '6.8' )
      ( productid = `HT-2000` name = `7" Widescreen Portable DVD Player w MP3` quantity = 20 status = `Available` price = '249.99' currencycode = `EUR` suppliername = `Titanium`
        productpicurl = `https://sdk.openui5.org/test-resources/sap/ui/documentation/sdk/images/HT-2000.jpg` category = `Accessories` weightmeasure = '0.79' )
      ( productid = `HT-2001` name = `10" Portable DVD player` quantity = 21 status = `Available` price = '449.99' currencycode = `EUR` suppliername = `Titanium`
        productpicurl = `https://sdk.openui5.org/test-resources/sap/ui/documentation/sdk/images/HT-2001.jpg` category = `Accessories` weightmeasure = '0.84' )
      ( productid = `HT-2002` name = `Portable DVD Player with 9" LCD Monitor` quantity = 50 status = `Available` price = '853.99' currencycode = `EUR` suppliername = `Technocom`
        productpicurl = `https://sdk.openui5.org/test-resources/sap/ui/documentation/sdk/images/HT-2002.jpg` category = `Accessories` weightmeasure = '0.72' )
      ( productid = `HT-2025` name = `CD/DVD case: 264 sleeves` quantity = 26 status = `Discontinued` price = '44.99' currencycode = `EUR` suppliername = `Titanium`
        productpicurl = `https://sdk.openui5.org/test-resources/sap/ui/documentation/sdk/images/HT-2025.jpg` category = `Accessories` weightmeasure = '0.65' )
      ( productid = `HT-2026` name = `Audio/Video Cable Kit - 4m` quantity = 16 status = `Available` price = '29.99' currencycode = `EUR` suppliername = `Titanium`
        productpicurl = `https://sdk.openui5.org/test-resources/sap/ui/documentation/sdk/images/HT-2026.jpg` category = `Accessories` weightmeasure = '0.2' )
      ( productid = `HT-2027` name = `Removable CD/DVD Laser Labels` quantity = 25 status = `Discontinued` price = '8.99' currencycode = `EUR` suppliername = `Titanium`
        productpicurl = `https://sdk.openui5.org/test-resources/sap/ui/documentation/sdk/images/HT-2027.jpg` category = `Accessories` weightmeasure = '0.15' )
      ( productid = `HT-6100` name = `Beam Breaker B-1` quantity = 32 status = `Out of Stock` price = '469' currencycode = `EUR` suppliername = `Titanium`
        productpicurl = `https://sdk.openui5.org/test-resources/sap/ui/documentation/sdk/images/HT-6100.jpg` category = `Accessories` weightmeasure = '1.7' )
      ( productid = `HT-6101` name = `Beam Breaker B-2` quantity = 18 status = `Available` price = '679' currencycode = `EUR` suppliername = `Technocom`
        productpicurl = `https://sdk.openui5.org/test-resources/sap/ui/documentation/sdk/images/HT-6101.jpg` category = `Accessories` weightmeasure = '2' )
      ( productid = `HT-6102` name = `Beam Breaker B-3` quantity = 16 status = `Out of Stock` price = '889' currencycode = `EUR` suppliername = `Technocom`
        productpicurl = `https://sdk.openui5.org/test-resources/sap/ui/documentation/sdk/images/HT-6102.jpg` category = `Accessories` weightmeasure = '2.5' )
      ( productid = `HT-6110` name = `Play Movie` quantity = 15 status = `Available` price = '130' currencycode = `EUR` suppliername = `Fasttech`
        productpicurl = `https://sdk.openui5.org/test-resources/sap/ui/documentation/sdk/images/HT-6110.jpg` category = `Accessories` weightmeasure = '2.4' )
      ( productid = `HT-6111` name = `Record Movie` quantity = 24 status = `Discontinued` price = '288' currencycode = `EUR` suppliername = `Fasttech`
        productpicurl = `https://sdk.openui5.org/test-resources/sap/ui/documentation/sdk/images/HT-6111.jpg` category = `Accessories` weightmeasure = '3.1' )
      ( productid = `HT-6120` name = `ITelo MusicStick` quantity = 15 status = `Available` price = '45' currencycode = `EUR` suppliername = `Fasttech`
        productpicurl = `https://sdk.openui5.org/test-resources/sap/ui/documentation/sdk/images/HT-6120.jpg` category = `Accessories` weightmeasure = '134' )
      ( productid = `HT-6121` name = `ITelo Jog-Mate` quantity = 24 status = `Available` price = '63' currencycode = `EUR` suppliername = `Fasttech`
        productpicurl = `https://sdk.openui5.org/test-resources/sap/ui/documentation/sdk/images/HT-6121.jpg` category = `Accessories` weightmeasure = '134' )
      ( productid = `HT-6122` name = `Power Pro Player 40` quantity = 23 status = `Available` price = '167' currencycode = `EUR` suppliername = `Fasttech`
        productpicurl = `https://sdk.openui5.org/test-resources/sap/ui/documentation/sdk/images/HT-6122.jpg` category = `Accessories` weightmeasure = '266' )
      ( productid = `HT-6123` name = `Power Pro Player 80` quantity = 13 status = `Available` price = '299' currencycode = `EUR` suppliername = `Fasttech`
        productpicurl = `https://sdk.openui5.org/test-resources/sap/ui/documentation/sdk/images/HT-6123.jpg` category = `Accessories` weightmeasure = '267' )
      ( productid = `HT-6130` name = `Flat Watch HD32` quantity = 16 status = `Available` price = '1459' currencycode = `EUR` suppliername = `Very Best Screens`
        productpicurl = `https://sdk.openui5.org/test-resources/sap/ui/documentation/sdk/images/HT-6130.jpg` category = `Flat Screen TVs` weightmeasure = '2.6' )
      ( productid = `HT-6131` name = `Flat Watch HD37` quantity = 14 status = `Available` price = '1199' currencycode = `EUR` suppliername = `Very Best Screens`
        productpicurl = `https://sdk.openui5.org/test-resources/sap/ui/documentation/sdk/images/HT-6131.jpg` category = `Flat Screen TVs` weightmeasure = '2.2' )
      ( productid = `HT-6132` name = `Flat Watch HD41` quantity = 13 status = `Discontinued` price = '899' currencycode = `EUR` suppliername = `Very Best Screens`
        productpicurl = `https://sdk.openui5.org/test-resources/sap/ui/documentation/sdk/images/HT-6132.jpg` category = `Flat Screen TVs` weightmeasure = '1.8' )
      ( productid = `HT-7000` name = `Copperberry` quantity = 5 status = `Discontinued` price = '549' currencycode = `EUR` suppliername = `Fasttech`
        productpicurl = `https://sdk.openui5.org/test-resources/sap/ui/documentation/sdk/images/HT-7000.jpg` category = `Accessories` weightmeasure = '0.5' )
      ( productid = `HT-7010` name = `Silverberry` quantity = 9 status = `Discontinued` price = '549' currencycode = `EUR` suppliername = `Fasttech`
        productpicurl = `https://sdk.openui5.org/test-resources/sap/ui/documentation/sdk/images/HT-7010.jpg` category = `Accessories` weightmeasure = '0.5' )
      ( productid = `HT-7020` name = `Goldberry` quantity = 11 status = `Available` price = '549' currencycode = `EUR` suppliername = `Fasttech`
        productpicurl = `https://sdk.openui5.org/test-resources/sap/ui/documentation/sdk/images/HT-7020.jpg` category = `Accessories` weightmeasure = '0.5' )
      ( productid = `HT-7030` name = `Platinberry` quantity = 12 status = `Available` price = '549' currencycode = `EUR` suppliername = `Fasttech`
        productpicurl = `https://sdk.openui5.org/test-resources/sap/ui/documentation/sdk/images/HT-7030.jpg` category = `Accessories` weightmeasure = '0.5' )
      ( productid = `HT-8000` name = `ITelO FlexTop I4000` quantity = 11 status = `Available` price = '799' currencycode = `EUR` suppliername = `Titanium`
        productpicurl = `https://sdk.openui5.org/test-resources/sap/ui/documentation/sdk/images/HT-8000.jpg` category = `Laptops` weightmeasure = '4' )
      ( productid = `HT-8001` name = `ITelO FlexTop I6300c` quantity = 20 status = `Discontinued` price = '799' currencycode = `EUR` suppliername = `Titanium`
        productpicurl = `https://sdk.openui5.org/test-resources/sap/ui/documentation/sdk/images/HT-8001.jpg` category = `Laptops` weightmeasure = '4.2' )
      ( productid = `HT-8002` name = `ITelO FlexTop I9100` quantity = 20 status = `Available` price = '1199' currencycode = `EUR` suppliername = `Titanium`
        productpicurl = `https://sdk.openui5.org/test-resources/sap/ui/documentation/sdk/images/HT-8002.jpg` category = `Laptops` weightmeasure = '3.5' )
      ( productid = `HT-8003` name = `ITelO FlexTop I9800` quantity = 22 status = `Available` price = '1388' currencycode = `EUR` suppliername = `Titanium`
        productpicurl = `https://sdk.openui5.org/test-resources/sap/ui/documentation/sdk/images/HT-8003.jpg` category = `Laptops` weightmeasure = '3.8' )
      ( productid = `HT-9991` name = `Smartphone Leather Case` quantity = 12 status = `Available` price = '25' currencycode = `EUR` suppliername = `Ultrasonic United`
        productpicurl = `https://sdk.openui5.org/test-resources/sap/ui/documentation/sdk/images/HT-9991.jpg` category = `Accessories` weightmeasure = '0.02' )
      ( productid = `HT-9992` name = `Smartphone Alpha` quantity = 13 status = `Out of Stock` price = '599' currencycode = `EUR` suppliername = `Ultrasonic United`
        productpicurl = `https://sdk.openui5.org/test-resources/sap/ui/documentation/sdk/images/HT-9992.jpg` category = `Smartphones and Tablets` weightmeasure = '0.75' )
      ( productid = `HT-9993` name = `Mini Tablet` quantity = 10 status = `Available` price = '833' currencycode = `EUR` suppliername = `Ultrasonic United`
        productpicurl = `https://sdk.openui5.org/test-resources/sap/ui/documentation/sdk/images/HT-9993.jpg` category = `Smartphones and Tablets` weightmeasure = '3.8' )
      ( productid = `HT-9994` name = `Camcorder View` quantity = 50 status = `Out of Stock` price = '1388' currencycode = `EUR` suppliername = `Ultrasonic United`
        productpicurl = `https://sdk.openui5.org/test-resources/sap/ui/documentation/sdk/images/HT-9994.jpg` category = `Accessories` weightmeasure = '3.8' )
      ( productid = `HT-9995` name = `Tablet Pouch` quantity = 34 status = `Available` price = '20' currencycode = `EUR` suppliername = `Titanium`
        productpicurl = `https://sdk.openui5.org/test-resources/sap/ui/documentation/sdk/images/HT-9995.jpg` category = `Accessories` weightmeasure = '0.03' )
      ( productid = `HT-9996` name = `Tablet Pouch` quantity = 34 status = `Available` price = '20' currencycode = `EUR` suppliername = `Titanium`
        productpicurl = `https://sdk.openui5.org/test-resources/sap/ui/documentation/sdk/images/HT-9996.jpg` category = `Accessories` weightmeasure = '0.03' )
      ( productid = `HT-9997` name = `e-Book Reader ReadMe` quantity = 23 status = `Available` price = '33' currencycode = `EUR` suppliername = `Titanium`
        productpicurl = `https://sdk.openui5.org/test-resources/sap/ui/documentation/sdk/images/HT-9997.jpg` category = `Smartphones and Tablets` weightmeasure = '3.8' )
      ( productid = `HT-9998` name = `Smartphone Beta` quantity = 21 status = `Available` price = '30' currencycode = `EUR` suppliername = `Titanium`
        productpicurl = `https://sdk.openui5.org/test-resources/sap/ui/documentation/sdk/images/HT-9998.jpg` category = `Smartphones and Tablets` weightmeasure = '0.75' )
      ( productid = `HT-9999` name = `Maxi Tablet` quantity = 20 status = `Available` price = '749' currencycode = `EUR` suppliername = `Titanium`
        productpicurl = `https://sdk.openui5.org/test-resources/sap/ui/documentation/sdk/images/HT-9999.jpg` category = `Tablets` weightmeasure = '3.8' )
      ( productid = `PF-1000` name = `Flyer` quantity = 33 status = `Out of Stock` price = '0' currencycode = `EUR` suppliername = `Titanium`
        productpicurl = `https://sdk.openui5.org/test-resources/sap/ui/documentation/sdk/images/PF-1000.jpg` category = `Accessories` weightmeasure = '0.01' )
    ).

    " initSampleDataModel derives four things per row and two arrays from them
    LOOP AT productcollection REFERENCE INTO DATA(product).
      " Date.now() - (i % 10 * 4 days): a moving value, so it is anchored on a
      " FIXED base here (the corpus rule for now/random values, apps 164/181/289)
      " the arithmetic has to land in a TYPE d field before it is formatted: a
      " date operand inside an expression is converted to its DAY NUMBER, so
      " CONV string( CONV d( ... ) - n ) yields 739618, not 20260101, and the
      " offsets then cut that into '7.39-61-80'. Measured 2026-08-21 - every
      " row carried a nonsense date the DatePicker's yyyy-MM-dd binding could
      " not parse, and nothing failed loudly enough for a gate to see it.
      DATA(delivery) = CONV d( CONV d( `20260101` ) - ( ( sy-tabix - 1 ) MOD 10 ) * 4 ).
      product->deliverydate   = |{ delivery(4) }-{ delivery+4(2) }-{ delivery+6(2) }|.
      product->available      = xsdbool( product->status = `Available` ).
      product->availablestate = COND #( WHEN product->available = abap_true THEN `Success` ELSE `Error` ).
      product->availableicon  = COND #( WHEN product->available = abap_true
                                        THEN `sap-icon://accept`
                                        ELSE `sap-icon://decline` ).
      product->heavy          = COND #( WHEN product->weightmeasure > 1000 THEN `true` ELSE `false` ).

      IF product->suppliername IS NOT INITIAL AND NOT line_exists( suppliers[ name = product->suppliername ] ).
        INSERT VALUE #( name = product->suppliername ) INTO TABLE suppliers.
      ENDIF.
      IF product->category IS NOT INITIAL AND NOT line_exists( categories[ name = product->category ] ).
        INSERT VALUE #( name = product->category ) INTO TABLE categories.
      ENDIF.
    ENDLOOP.

  ENDMETHOD.

ENDCLASS.