cancel
Showing results for 
Search instead for 
Did you mean: 

Hi i am trying to create dynamic ui elements in webdynpro. But its going to dump can any one please help me.I am adding code here

Former Member
0 Kudos

* Dynamic transparent container and text edit
   DATA : lr_container TYPE REF TO cl_wd_uielement_container.
   DATA LR_MATRIX1 TYPE REF TO CL_WD_MATRIX_head_DATA.
   DATA lr_matrix_layout TYPE REF TO CL_WD_MATRIX_LAYOUT.
   DATA lr_input TYPE REF TO CL_WD_INPUT_FIELD.
  DATA lv_assetdescr TYPE string.
   DATA lr_textview_ip   TYPE REF TO cl_wd_text_view.
   DATA lr_matrix TYPE REF TO CL_WD_MATRIX_DATA.
  data  lr_matrix_data   TYPE REF TO cl_wd_matrix_data.
   data    lr_textview_ex   TYPE REF TO cl_wd_text_view.
   DATA lr_trans TYPE REF TO CL_WD_TRANSPARENT_CONTAINER.
   data lr_trans1 TYPE REF TO  CL_WD_TRANSPARENT_CONTAINER.
   data lr_grid_layout TYPE REF TO cl_wd_grid_layout.
   data lr_grid TYPE REF TO cl_wd_grid_data.

  lr_container ?= view->get_element( 'ROOTUIELEMENTCONTAINER' ).

**set width
**
* CALL METHOD lr_container->SET_WIDTH
*   EXPORTING
*     VALUE  = '50%'
*     .

CALL METHOD CL_WD_GRID_LAYOUT=>NEW_GRID_LAYOUT
   EXPORTING
*    CELL_PADDING           = '0'
*    CELL_SPACING           = '0'
     COL_COUNT              = '1'
     CONTAINER              = lr_container
*    ID                     =
*    ON_DROP                =
*    STRETCHED_HORIZONTALLY = 'X'
*    STRETCHED_VERTICALLY   = 'X'
*  RECEIVING
*    CONTROL                = lr_grid_layout
     .


*“Need to Assign the flow layout information for this transaparent container



*tran container1

CALL METHOD CL_WD_TRANSPARENT_CONTAINER=>NEW_TRANSPARENT_CONTAINER
   EXPORTING
     ID                       = 'TC1'
   RECEIVING
     CONTROL                  = lr_trans
     .

*
*CALL METHOD lr_trans->SET_WIDTH
*  EXPORTING
*    VALUE  = '50%'
*    .

CALL METHOD CL_WD_MATRIX_HEAD_DATA=>NEW_MATRIX_HEAD_DATA
   EXPORTING
*    CELL_BACKGROUND_DESIGN = E_CELL_BACKGROUND_DESIGN-TRANSPARENT
*    CELL_DESIGN            = E_CELL_DESIGN-R_PAD
*    COL_SPAN               = '1'
*    DRAG_DATA              =
     ELEMENT                = lr_trans
*    HEIGHT                 =
*    H_ALIGN                = E_H_ALIGN-BEGIN_OF_LINE
*    ID                     =
*    V_ALIGN                = E_V_ALIGN-BASELINE
*    V_GUTTER               = E_V_GUTTER-NONE
*    WIDTH                  =
   RECEIVING
     CONTROL                = LR_matrix1
     .



CALL METHOD lr_trans->SET_LAYOUT_DATA
   EXPORTING
     THE_LAYOUT_DATA = LR_matrix1.
*    .

CALL METHOD lr_container->ADD_CHILD
   EXPORTING
*    INDEX     = 1
     THE_CHILD = lr_trans
     .

CALL METHOD CL_WD_MATRIX_LAYOUT=>NEW_MATRIX_LAYOUT
   EXPORTING
     CONTAINER              = lr_trans
*    ID                     =
*    ON_DROP                =
*    STRETCHED_HORIZONTALLY = 'X'
*    STRETCHED_VERTICALLY   = 'X'
*  RECEIVING
*    CONTROL                = lr_matrix_layout
     .


*TEXT VIEW

lv_assetdescr = 'TEXTVIEW1'.
  CALL METHOD cl_wd_text_view=>new_text_view
           EXPORTING
             text    = lv_assetdescr
           RECEIVING
             control = lr_textview_ip.

*        lr_matrix = cl_wd_matrix_head_data=>new_matrix_head_data( lr_textview_ip ).


CALL METHOD CL_WD_MATRIX_HEAD_DATA=>NEW_MATRIX_HEAD_DATA
   EXPORTING
*    CELL_BACKGROUND_DESIGN = E_CELL_BACKGROUND_DESIGN-TRANSPARENT
*    CELL_DESIGN            = E_CELL_DESIGN-R_PAD
*    COL_SPAN               = '1'
*    DRAG_DATA              =
     ELEMENT                = lr_textview_ip
*    HEIGHT                 =
*    H_ALIGN                = E_H_ALIGN-BEGIN_OF_LINE
*    ID                     =
*    V_ALIGN                = E_V_ALIGN-BASELINE
*    V_GUTTER               = E_V_GUTTER-NONE
*    WIDTH                  =
   RECEIVING
     CONTROL                = LR_matrix1
     .

         lr_trans->add_child( lr_textview_ip  ).
       lr_textview_ip->set_layout_data( LR_matrix1 ).
         CLEAR lr_textview_ip.


* Radiobutton group by index UI element

DATA LR_RADIO TYPE REF TO CL_WD_RADIOBUTTON_GROUP_BY_IDX.
CALL METHOD CL_WD_RADIOBUTTON_GROUP_BY_IDX=>NEW_RADIOBUTTON_GROUP_BY_IDX
   EXPORTING
*    ACCESSIBILITY_DESCR        =
*    ACTIVATE_ACCESS_KEY        =
*    BIND_ACCESSIBILITY_DESCR   =
*    BIND_COL_COUNT             =
*    BIND_ENABLED               =
*    BIND_READ_ONLY             =
*    BIND_STATE                 =
     BIND_TEXTS                 = 'LV_RADIO.ATTR'
*    BIND_TEXT_DESIGN           =
*    BIND_TEXT_DIRECTION        =
*    BIND_TEXT_WRAPPING         =
*    BIND_TOOLTIP               =
*    BIND_VISIBLE               =
*    BIND_WIDTH                 =
     COL_COUNT                  = '3'
*    CONTEXT_MENU_BEHAVIOUR     = E_CONTEXT_MENU_BEHAVIOUR-INHERIT
*    CONTEXT_MENU_ID            =
*    ENABLED                    = 'X'
*    EXPLANATION                =
     ID                         = 'R1'
*    ON_SELECT                  =
*    READ_ONLY                  =
*    SELECTION_CHANGE_BEHAVIOUR = E_SELECTION_CHANGE_BEHAVIOUR-AUTO
*    STATE                      = E_STATE-NORMAL
*    TEXT_DESIGN                = E_TEXT_DESIGN-STANDARD
*    TEXT_DIRECTION             = E_TEXT_DIRECTION-INHERIT
*    TEXT_WRAPPING              =
*    TOOLTIP                    =
*    VIEW                       =
*    VISIBLE                    = E_VISIBLE-VISIBLE
*    WIDTH                      =
   RECEIVING
     CONTROL                    = LR_RADIO
     .



CALL METHOD CL_WD_MATRIX_DATA=>NEW_MATRIX_DATA
   EXPORTING
*    CELL_BACKGROUND_DESIGN = E_CELL_BACKGROUND_DESIGN-TRANSPARENT
*    CELL_DESIGN            = E_CELL_DESIGN-R_PAD
*    COL_SPAN               = '1'
     ELEMENT                = LR_RADIO
*    HEIGHT                 =
*    H_ALIGN                = E_H_ALIGN-BEGIN_OF_LINE
*    ID                     =
*    V_ALIGN                = E_V_ALIGN-BASELINE
*    V_GUTTER               = E_V_GUTTER-NONE
*    WIDTH                  =
   RECEIVING
     CONTROL                = lr_matrix
     .
     lr_trans->add_child( LR_RADIO  ).
       LR_RADIO->set_layout_data( lr_matrix ).
         CLEAR LR_RADIO.



************************************************************
*tran container2

CALL METHOD CL_WD_TRANSPARENT_CONTAINER=>NEW_TRANSPARENT_CONTAINER
   EXPORTING
     ID                       = 'TC2'
   RECEIVING
     CONTROL                  = lr_trans1
     .


*CALL METHOD lr_trans->SET_WIDTH
*  EXPORTING
*    VALUE  = '50%'
*    .

CALL METHOD CL_WD_GRID_DATA=>NEW_GRID_DATA
   EXPORTING
*    BIND_CELL_BACKGROUND_DESIGN =
*    CELL_BACKGROUND_DESIGN      = E_CELL_BACKGROUND_DESIGN-TRANSPARENT
*    COL_SPAN                    = '1'
*    DRAG_DATA                   =
     ELEMENT                     = lr_trans1
*    HEIGHT                      =
*    H_ALIGN                     = E_H_ALIGN-BEGIN_OF_LINE
*    ID                          =
*    PADDING_BOTTOM              =
*    PADDING_LEFT                =
*    PADDING_RIGHT               =
*    PADDING_TOP                 =
*    V_ALIGN                     = E_V_ALIGN-BASELINE
*    WIDTH                       =
   RECEIVING
     CONTROL                     = LR_grid .
*    .
**


*
CALL METHOD lr_trans1->SET_LAYOUT_DATA
   EXPORTING
     THE_LAYOUT_DATA = LR_grid.
***

*   lr_trans1->SET_LAYOUT_DATA( LR_grid1 ) .



CALL METHOD lr_container->ADD_CHILD
   EXPORTING
*    INDEX     = 2
     THE_CHILD = lr_trans1
     .

* “‘ set layout of tray

*
CALL METHOD CL_WD_GRID_LAYOUT=>NEW_GRID_LAYOUT
   EXPORTING
*    CELL_PADDING           = '0'
*    CELL_SPACING           = '0'
     COL_COUNT              = '3'
     CONTAINER              = lr_trans1
*    ID                     =
*    ON_DROP                =
*    STRETCHED_HORIZONTALLY = 'X'
*    STRETCHED_VERTICALLY   = 'X'
*  RECEIVING
*    CONTROL                = lr_grid_layout
     .
*
*
*********************************************************************
*TEXT VIEW

lv_assetdescr = 'TEXTVIEW'.
  CALL METHOD cl_wd_text_view=>new_text_view
           EXPORTING
             text    = lv_assetdescr
           RECEIVING
             control = lr_textview_ip.

*        lr_matrix = cl_wd_matrix_head_data=>new_matrix_head_data( lr_textview_ip ).


CALL METHOD CL_WD_GRID_DATA=>NEW_GRID_DATA
   EXPORTING
*    BIND_CELL_BACKGROUND_DESIGN =
*    CELL_BACKGROUND_DESIGN      = E_CELL_BACKGROUND_DESIGN-TRANSPARENT
*    COL_SPAN                    = '1'
*    DRAG_DATA                   =
     ELEMENT                     = lr_textview_ip
*    HEIGHT                      =
*    H_ALIGN                     = E_H_ALIGN-BEGIN_OF_LINE
*    ID                          =
*    PADDING_BOTTOM              =  '50PX'
     PADDING_LEFT                '100PX'
*    PADDING_RIGHT               =
*    PADDING_TOP                 =
*    V_ALIGN                     = E_V_ALIGN-BASELINE
*    WIDTH                       =
   RECEIVING
     CONTROL                     = lr_grid
     .

         lr_trans1->add_child( lr_textview_ip  ).
       lr_textview_ip->set_layout_data( lr_grid ).
         CLEAR lr_textview_ip.

*“****************Create Input field ********************************


* Dynamic input field
*        CONCATENATE lv_nodename lv_attrname INTO lv_node_id SEPARATED BY '.'.
         CALL METHOD cl_wd_input_field=>new_input_field
           EXPORTING
*            bind_read_only             = 'LR_NODE_PREVIEW.LV_READ_ONLY'
             bind_value                 = 'LV_NODE.MTART'
             id                         = 'I1'
           RECEIVING
             control                    = lr_input.

*        lr_matrix_data = cl_wd_matrix_data=>new_matrix_data( lr_input ).

CALL METHOD CL_WD_GRID_DATA=>NEW_GRID_DATA
   EXPORTING
*    BIND_CELL_BACKGROUND_DESIGN =
*    CELL_BACKGROUND_DESIGN      = E_CELL_BACKGROUND_DESIGN-TRANSPARENT
*    COL_SPAN                    = '1'
*    DRAG_DATA                   =
     ELEMENT                     = lr_input
*    HEIGHT                      =
*    H_ALIGN                     = E_H_ALIGN-BEGIN_OF_LINE
*    ID                          =
*    PADDING_BOTTOM              =
*    PADDING_LEFT                =
*    PADDING_RIGHT               =
*    PADDING_TOP                 =
*    V_ALIGN                     = E_V_ALIGN-BASELINE
*    WIDTH                       =
   RECEIVING
     CONTROL                     = lr_grid
     .


         lr_trans1->add_child( lr_input  ).
         lr_input->set_layout_data( lr_grid ).


* Text View
         lv_assetdescr = 'e.g.: johndoe@us.ibm.com'.
         CALL METHOD cl_wd_text_view=>new_text_view
           EXPORTING
             text    = lv_assetdescr
           RECEIVING
             control = lr_textview_ex.

*        lr_matrix_data = cl_wd_matrix_data=>new_matrix_data( lr_textview_ex ).


CALL METHOD CL_WD_GRID_DATA=>NEW_GRID_DATA
   EXPORTING
*    BIND_CELL_BACKGROUND_DESIGN =
*    CELL_BACKGROUND_DESIGN      = E_CELL_BACKGROUND_DESIGN-TRANSPARENT
*    COL_SPAN                    = '1'
*    DRAG_DATA                   =
     ELEMENT                     = lr_textview_ex
*    HEIGHT                      =
*    H_ALIGN                     = E_H_ALIGN-BEGIN_OF_LINE
*    ID                          =
*    PADDING_BOTTOM              =
*    PADDING_LEFT                =
*    PADDING_RIGHT               =
*    PADDING_TOP                 =
*    V_ALIGN                     = E_V_ALIGN-BASELINE
*    WIDTH                       =
   RECEIVING
     CONTROL                     = lr_grid
     .


         lr_textview_ex->set_layout_data( lr_grid ).
         lr_trans1->add_child( lr_textview_ex  ).
         CLEAR lr_textview_ex.

Accepted Solutions (1)

Accepted Solutions (1)

Former Member
0 Kudos

Hello Anusha,

As WDP expert Amy said open the ST22 and then source code extract and find where you are getting actual dump. There can be no. of error and mostly error occurs due to improper layout assignment. So check all the layout assignment again.

you can use this document as reference for dynamic UI element creation.

Former Member
0 Kudos

Thank you very much Amy.Actually I was trying to create transaprent container with matrix layout and added this transparent container to root ui element(set grid data to this). Manually by creating layout its working fine.But when I am trying to create this through dynamic programming , It is gong to dump.I have checked in st22.It showing as

Dynamic type conflict when assigning references error.


Former Member
0 Kudos

Hi Chandra,

Thank you for giving reply.Yes , I have checked in st22 tcode its showing in some where internal method.Yeah its throwing error due to improper layout assignment.

Former Member
0 Kudos

look at your code " ROOTUIELEMENTCONTAINER" is type of grid layout. and the for TC1 you are trying to pass Matrix Head Data.

CALL METHOD CL_WD_MATRIX_HEAD_DATA=>NEW_MATRIX_HEAD_DATA
   EXPORTING
*    CELL_BACKGROUND_DESIGN = E_CELL_BACKGROUND_DESIGN-TRANSPARENT
*    CELL_DESIGN            = E_CELL_DESIGN-R_PAD
*    COL_SPAN               = '1'
*    DRAG_DATA              =
     ELEMENT                = lr_trans

Former Member
0 Kudos

Yes,I tried this by creating ui elements manually  in layout.Its working  fine i.e

ROOTUIELEMENTCONTAINER" is  of type grid layout. and  for theTC1 I pass Matrix Head Data.

But I am getting this error while creating dynamically.Can't we create like this?

Former Member
0 Kudos

How can we create something with Matrix head data into grid layout. ????

try to understand difference between Layout and Layout data..

Former Member
0 Kudos

You can create new TC with layout with matrix layout and into that you can provide head data and 1st element is by-default head data for Matrix layout.

Former Member
0 Kudos

Hi Shekhar,

I understood now, The issue is solved.Thanks a lot for quick and exact reply

Former Member
0 Kudos

okay, close this thread by marking ans as correct and helpful.

Former Member
0 Kudos

ok

Answers (2)

Answers (2)

amy_king
Active Contributor
0 Kudos

Hi Anusha,

If you are seeing a short dump, you should take a look at the runtime error log in transaction ST22 to see what is causing the error. Your code appears to have more than one error, but the initial error you are seeing is a casting conflict between classes CL_WD_MATRIX_HEAD_DATA and CL_WD_GRID_DATA.

For this issue, the problem is that you have assigned the ROOTUIELEMENTCONTAINER a grid layout but you then try to add matrix layout data to it.

Instead of assigning the ROOTUIELEMENTCONTAINER a grid layout...

CALL METHOD cl_wd_grid_layout=>new_grid_layout
    EXPORTING
        col_count  = '1'
        container  = lr_container.

Assign it a matrix layout...

call method cl_wd_matrix_layout=>new_matrix_layout
    EXPORTING
        container  = lr_container.

This will resolve your initial error. ST22 will help you to identify the remaining errors.

You should also reconsider using hook method WDDOMODIFYVIEW for this code. Hook method WDDOMODIFYVIEW is executed every time the view is re-rendered. You should either check parameter FIRST_TIME to ensure you execute your code only once, or-- even better-- consider moving your code into hook method WDDOINIT which will execute only once when the view is initialized.

Cheers,

Amy

Former Member
0 Kudos

Hi Amy,

Thank you very much for giving reply.Can you please tell me cant we add transparent container with matrix data to a ROOT UI ELEMENT CONTAINER which is having grid data.Manually its working fine(By creating Layout).

Former Member
0 Kudos

i wrote that code in wddomodifyview method