cancel
Showing results for 
Search instead for 
Did you mean: 

Display Dynamic Context Node with SALV_WD_TABLE

bjorn-henrik_zink
Active Participant
0 Kudos

Hi,

I am trying to display a dynamic context node in ALV, using the SALV_WD_TABLE component. When I execute the application, I get the following errror:

The following error text was processed in the system XXX : Invalid operand type for the 
MOVE-CORRESPONDING statement. 
The error occurred on the application server XXX_XXX_XX and in the work process 0 . 
The termination type was: RABAX_STATE 
The ABAP call stack was: 
Method: IF_WD_CONTEXT_NODE~GET_STATIC_ATTRIBUTES_TABLE of program
CL_WDR_CONTEXT_NODE_VAL=======CP
Method: GET_REF_TO_TABLE of program 
CL_SALV_WD_DATA_TABLE=========CP
Method: EXECUTE of program 
CL_SALV_BS_SERVICE_MNGR_TABLE=CP
Method: EXECUTE of program 
CL_SALV_WD_SERVICE_MANAGER====CP
Method: APPLY_SERVICES of program 
CL_SALV_BS_RESULT_DATA_TABLE==CP
Method: REFRESH of program
CL_SALV_BS_RESULT_DATA_TABLE==CP
Method: IF_SALV_WD_COMP_TABLE_DATA~MAP_FROM_SOURCE_DATA of program
CL_SALV_WD_C_TABLE_V_TABLE====CP
Method: IF_SALV_WD_COMP_TABLE_DATA~MAP_FROM_SOURCE of program
CL_SALV_WD_C_TABLE_V_TABLE====CP
Method: IF_SALV_WD_COMP_TABLE_DATA~UPDATE of program
CL_SALV_WD_C_TABLE_V_TABLE====CP
Method: IF_SALV_WD_VIEW~MODIFY of program 
CL_SALV_WD_C_TABLE_V_TABLE====CP

Using a non-dynamic context node everything works fine.

The dynamic context node is created as follows.

lr_child_node_info = lr_node_info->add_new_child_node(
           name                                = 'DYNAMIC_CONTEXT_NODE'
           is_mandatory                    = abap_false
           is_mandatory_selection     = abap_false
           is_initialize_lead_selection = abap_false
           is_static                           = abap_false
           attributes                          = lt_context_attr_info ).

Any ideas how I can solve the issue?

Thanks!

Björn-Henrik

Accepted Solutions (0)

Answers (1)

Answers (1)

Former Member
0 Kudos
bjorn-henrik_zink
Active Participant
0 Kudos

Hi Saurav,

the problem is that I do not have a DDIC structure and that is what is puzzeling me. The document you are referring to is using DDIC tables and that makes it a whole lot easier, I believe. Any idea how I get the structure of my dynamic context?

Is there an easy way to convert

attributes = lt_context_attr_info_tab

to

static_element_rtti    = lr_strucdescr

?

Thanks!

Former Member
0 Kudos

Hi,

wd_comp_controller->gr_str_disc is of type ref to CL_ABAP_STRUCTDESCR.

DATA:
    table1   TYPE REF TO data,
    root_node_info      TYPE REF TO if_wd_context_node_info,
    lr_node_info   TYPE REF TO if_wd_context_node_info,
    lr_table_type       TYPE REF TO cl_abap_tabledescr,
    lr_structure        TYPE REF TO cl_abap_typedescr,
    lr_table_data       TYPE REF TO data.
  
  FIELD-SYMBOLS:
 <data>TYPE STANDARD TABLE.
   <fs_table1> TYPE STANDARD TABLE.

For Ex: I got the data into table1 type ref to data.

  ASSIGN table1->* TO <data>.
  lr_structure = cl_abap_structdescr=>describe_by_data_ref( table1 ).
  lr_table_type ?= lr_structure.
  CREATE DATA lr_table_data TYPE HANDLE lr_table_type.
  ASSIGN lr_table_data->* TO <fs_table1>.
  <fs_table1> = <data>.

 wd_comp_controller->gr_str_disc ?= lr_table_type->get_table_line_type( ).

  root_node_info = wd_context->get_node_info( ).

** CREATE NODE 
  lr_node_info = root_node_info->add_new_child_node(
     name = NODE1
     static_element_rtti    = wd_comp_controller->gr_str_disc
     is_static              = abap_false
     is_mandatory           = abap_false
     is_mandatory_selection = abap_false
     is_multiple            = abap_true
     is_multiple_selection  = abap_true
     is_singleton           = abap_false ).

lr_node = wd_context->get_child_node( 'NODE1').

Try the above way...

Regards,

Lekha.