Listbox en una celda en ALV OO

Administrador mayo 29, 2022


Se debe agregar un campo en la tabla que se va a mostrar: 

types: begin of . . . 

.         

.   

drop_down_handle type int4. 

types: end of. . . 

Luego, cuando se crea el catálogo, se debe asignar el campo que va a ser un listbox: 

      <catalogo>-drdn_field = ‘DROP_DOWN_HANDLE’. 

Después, se debe crear una tablita con los datos que se van a mostrar en el listbox, y se la setea en el objeto del ALV (el handle se comporta como una clave): 

  data: lt_dropdown type lvc_t_drop, 

        ls_dropdown type lvc_s_drop. 

  ls_dropdown-handle = ‘1’. 

  ls_dropdown-value = ‘F’. 

  append ls_dropdown to lt_dropdown. 

  ls_dropdown-handle = ‘2’. 

  ls_dropdown-value = ‘F’. 

  append ls_dropdown to lt_dropdown. 

  ls_dropdown-handle = ‘2’. 

  ls_dropdown-value = ‘C’. 

  append ls_dropdown to lt_dropdown. 

  ls_dropdown-handle = ‘2’. 

  ls_dropdown-value = ‘Y’. 

  append ls_dropdown to lt_dropdown. 

  call method g_grid->set_drop_down_table 

              exporting it_drop_down = lt_dropdown. 

Y para terminar, cuando se cargan los datos para mostrar el ALV, se le debe decir a cada línea, la “clave” que está en el listbox: 

    if ls_outtab-smoker eq ‘X’. 

      ls_outtab-drop_down_handle = ‘1’. 

    else. 

      ls_outtab-drop_down_handle = ‘2’. 

    endif. 


Temas