Skip to Content
Author's profile photo Siva Prasad Jena

Building List UIBB Layout dynamically

For the LIST uibb, create a feeder class and implement these below three interfaces. Interface IF_FPM_GUIBB_DYNAMIC_CONFIG provides methods to decide if we want to build the uibb layout dynamically or not.1

2

Put the below code in the HAS_DYNAMIC_CONFIGURATION method.

3

4

Put the below code in GET_DEFAULT_CONFIG method. We are trying to display SPFLI data in list UIBB.

5

  METHOD if_fpm_guibb_list~get_default_config.
    DATA: lr_structdescr TYPE REF TO  cl_abap_structdescr,
          lt_field_list  TYPE         ddfields,
          ls_field_list  TYPE LINE OF ddfields,
          lv_index       TYPE         i.

    lr_structdescr ?= cl_abap_typedescr=>describe_by_name( ‘SPFLI’ ).
    lt_field_list = lr_structdescr->get_ddic_field_list( ).
    TRY.
        io_layout_config->set_settings(
             EXPORTING iv_visible_row_counts = 10
                       iv_allow_personalization = abap_true
                       iv_scroll_mode = ‘P’
                       iv_fit_to_table_width = abap_true
                       ).
        lv_index = 1.
        LOOP AT lt_field_list INTO ls_field_list.
          io_layout_config->add_column( EXPORTING iv_name         = ls_field_listfieldname
                                                  iv_display_type = ‘TV’
                                                  iv_index        = lv_index ).
          lv_index = lv_index + 1.
        ENDLOOP.
      CATCH cx_fpm_configuration.
    ENDTRY.
  ENDMETHOD.

6

Put the below code in GET_DEFINITION method.7

  METHOD if_fpm_guibb_list~get_definition.
    DATA: lr_fpm             TYPE REF TO if_fpm,
          lt_abap_component  TYPE        abap_component_tab,
          lr_structdescr     TYPE REF TO cl_abap_structdescr,
          lr_fnl_structdescr TYPE REF TO cl_abap_structdescr.

    FIELD-SYMBOLS:<fs_abap_component> TYPE abap_componentdescr.

    lr_fpm = cl_fpm_factory=>get_instance( ).
    lr_structdescr ?= cl_abap_typedescr=>describe_by_name( ‘SPFLI’ ).

    APPEND INITIAL LINE TO lt_abap_component ASSIGNING <fs_abap_component>.
    <fs_abap_component>type       = lr_structdescr.
    <fs_abap_component>as_include = abap_true.

    lr_fnl_structdescr = cl_abap_structdescr=>create( lt_abap_component ).
    eo_field_catalog   = cl_abap_tabledescr=>create( p_line_type = lr_fnl_structdescr ).

  ENDMETHOD.

8

Put the below code in GET_DATA method.

9

  METHOD if_fpm_guibb_list~get_data.
    DATA : lt_spfli TYPE TABLE OF spfli.

    IF iv_eventid->mv_event_id = ‘FPM_START’.
      SELECT * FROM spfli INTO TABLE lt_spfli.
      ct_data = lt_spfli.
      ev_data_changed = abap_true.
    ENDIF.

  ENDMETHOD.


Create list UIBB configuration.10

Provide configuration name and click on NEW button.

12

Save in the desired package and then provide the feeder class name.

13

We can’t do any configuration here as this is dynamic set in the feeder class.

14

Create an OVP application, application configuration and ovp component configuration.

15

16

Application configuration and OVP component configuration.

18

Put the title and add  the list uibb component configuration.

19

Then test the application configuration.

20

So here we have the list display whose layout is completely dynamically desgined.

21


Assigned Tags

      1 Comment
      You must be Logged on to comment or reply to a post.
      Author's profile photo Ulrich Miller
      Ulrich Miller

      Hi Siva,
      really nice blog indeed. 🙂 🙂

      One remark: For the last few steps (that is creating the list uibb configuration, ovp configuration and ovp application configuration) there exists a wizard, so for the lazy guys they don't have to do them manually. 😉

      One can call the wizard via FPM workbench (tx FPM_WB, link "wizard for creating empty FPM applications) or via application config id: FPM_CFG_BO_MODEL_ACT.

      Kind regards,
      Ulrich