cancel
Showing results for 
Search instead for 
Did you mean: 

ITAREATOR FOR A TABLEVIEW ( HELP ! )

Former Member
0 Kudos
308

hi there,

need some help on using an iterator.

Where can i find some documentation about using an itrator for a tableview ?

Main reason for using it, is to get some spaninfo in my tableview.

best regards

ali

Accepted Solutions (0)

Answers (1)

Answers (1)

paulo_pedroso
Discoverer
0 Kudos

Hi Ali,

Note 577305 contains a small documentation to getting started with iterators.

My recipe to use iterator is the following:

- Create a new class ZCL_HTMLB_TABLEVIEW_ITERATOR.

- In interfaces add IF_HTMLB_TABLEVIEW_ITERATOR.

- I take the column definitions from a database table: ZBSPTVC.

  This approach allows you to configure the table view just adding records in the table. If you need

  a new field just maintan the table !

  The table has the following structure:

  APPLICATION_NAME

  TABLEVIEW_ID

  COLUMN_KEY

  SEQUENCE

  WIDTH

  INNER_ELEMENT

  IE_TYPE

  IE_SHOWHELP

  HELPTABLE

  KEYFIELD

  VALUEFIELD

  LANGUAGEFIELD

  WHERE_CLAUSE

  The primary key are the first three fields.

  The fields HELPTABLE, KEYFIELD, VALUEFIELD, LANGUAGEFIELD and WHERE_CLAUSE

  are used in my solution for Matchcodes thru RFC. I pass these parameters to the the function

  module RFC_READ_TABLE in order to show popup help values from the RFC destination.

  Table ZBSPTVC has a text table TBSPTVCT with the following fields:

  APPLICATION_NAME

  TABLEVIEW_ID

  COLUMN_KEY

  LANGUAGE

  TITLE

  I created also a view ZBSPTVCV with joins ZBSPTVC and ZBSPTVT

- Attributes of the class:

  TV_COLUMNS, private, type table of ZBSPTVC.

  MODEL, private, type ref to 'your model (MVC design pattern)'

- Code of Method IF_HTMLB_TABLEVIEW_ITERATOR~GET_COLUMN_DEFINITIONS .

-

-


METHOD if_htmlb_tableview_iterator~get_column_definitions .

  • ZTV_COLUMN is a structure similar to ZBSPTVC.

  DATA: tv_column TYPE ztv_column,

        tv_coldef TYPE tableviewcontrol.

  CLEAR p_column_definitions.

  CLEAR p_overwrites.

  LOOP AT tv_columns INTO tv_column.

    tv_coldef-columnname = tv_column-column_key.

    tv_coldef-title = tv_column-title.

    tv_coldef-width = tv_column-width.

    APPEND tv_coldef TO p_column_definitions.

  ENDLOOP.

ENDMETHOD.

-

-


TV_COLUMNS is a table type for ZBSPTVC.

ZTV_COLUMN is a structure similar to ZBSPTVC.

- Code of Method  IF_HTMLB_TABLEVIEW_ITERATOR~RENDER_CELL_START

-

-


METHOD if_htmlb_tableview_iterator~render_cell_start .

  DATA: inputfield TYPE REF TO cl_htmlb_inputfield,

        tv_column TYPE ztv_column,

        _value TYPE string.

  READ TABLE tv_columns INTO tv_column WITH TABLE KEY column_key = p_column_key.

  CHECK sy-subrc = 0.

  IF tv_column-inner_element = 'INPUTFIELD'.

    CREATE OBJECT inputfield.

    inputfield->id = p_cell_id.

    inputfield->type = tv_column-ie_type.

    inputfield->width = '100%'.

    inputfield->cellvalue = 'X'.

    inputfield->showhelp = tv_column-ie_showhelp.

    IF inputfield->showhelp = 'X'.

      inputfield->onvaluehelp = showf4help_string( inputfield = p_cell_id

                                                   rfcdes = model->rfcdes

                                                   helptable = tv_column-helptable

                                                   keyfield = tv_column-keyfield

                                                   valuefield = tv_column-valuefield

                                                   languagefield = tv_column-languagefield

                                                   whereclause = tv_column-where_clause

                                                   parm1 = tv_column-parm1

                                                   parm2 = tv_column-parm2

                                                   parm3 = tv_column-parm3

                                                   parm4 = tv_column-parm4 ).

    ENDIF.

    inputfield->_value = p_cell_binding.

    p_replacement_bee = inputfield.

    IF p_edit_mode IS NOT INITIAL.

      p_style = 'padding-right:2px;'.

    ENDIF.

    CONCATENATE p_style 'font-size:x-small' INTO p_style.

  ENDIF.

ENDMETHOD.

-

-


  Comments: My model has an attribute rfcdes that points to RFC destination

- Code of Method CONSTRUCTOR

-

-


METHOD CONSTRUCTOR .

  • Importing: application_name TYPE char30

*                tableview_id TYPE char30

*                model TYPE REF TO "your model class"

  SELECT * FROM zbsptvcv

           INTO CORRESPONDING FIELDS OF TABLE tv_columns

           WHERE application_name = application_name

             AND tableview_id = tableview_id

             AND spras = sy-langu

           ORDER BY sequence.

  me->model = model.

ENDMETHOD.

-

-


- Code of SHOWF4HELP_STRING

METHOD SHOWF4HELP_STRING .

  CONCATENATE 'ShowF4Help( '''

              inputfield ''','''

              rfcdes ''','''

              helptable ''','''

              keyfield ''','''

              valuefield ''','''

              languagefield ''','''

              whereclause ''','''

              parm1 ''','''

              parm2 ''','''

              parm3 ''','''

              parm4 ''')'

              INTO showf4str.

ENDMETHOD.

-

-


- Code (section) of the layout:

        <htmlb:tableView id = "lines"

                         design = "TRANSPARENT"

                         selectionMode = "LINEEDIT"

                         onRowSelection = "LineSelected"

                         table = "//model/item_data"

                         footerVisible = "false"

                         iterator = "<%= model->tv_iterator %>" />

- Method DO_INIT, of the controller class, creates an instance (MODEL) of the model and calls a method MODEL->INIT that contains the instantiation of the iterator:

  CREATE OBJECT tv_iterator

    EXPORTING

      application_name = 'ZFMBB'

      tableview_id = 'LINES'

      model = me.

- I know all this seems a little trick but the return is great. This iterator can be reused in every BSP. By now it deals only with inputfields but I am adding processing for other types of elements.

If you have any doubts contact me.

paulo.pedroso@sap.com

Former Member
0 Kudos

Hi,

here's the link to the documentation of if_htmlb_tableview_iterator:

http://help.sap.com/saphelp_webas630/helpdata/en/

f7/faec246c2d184191bea02f703fc830/content.htm

There's also a small tutorial where this is used, see:

http://help.sap.com/saphelp_webas630/helpdata/en/

12/1eeeb4245d1f4f96c989519261b0f6/content.htm

Regards,

Heidi