Crear Select Option con alv usando Web Dynpro

14
Crear Select Option con alv usando Web Dynpro. Crear Select Option con alv usando Web Dynpro. Agrego los componentes para el Alv y el Select Options. En el contexto del component controller creo dos nodos uno para scarr que servira para los datos del select option y uno tipo tabla caridnalidad 0-n para la tabla sflight que se relacionara con el componente del ALV.

Transcript of Crear Select Option con alv usando Web Dynpro

Page 1: Crear Select Option con alv usando Web Dynpro

Crear Select Option con alv usando Web Dynpro.

Crear Select Option con alv usando Web Dynpro.

      Agrego los componentes para el Alv y el Select Options.

     En el contexto del component controller creo dos nodos uno para scarr que servira para los datos del select option y uno tipo tabla caridnalidad 0-n para la tabla sflight que se relacionara con el componente del ALV.

Page 2: Crear Select Option con alv usando Web Dynpro

En el layout de la vista principal creo dos ViewContainer para embeber los componentes usados. Uno para el select options  y otro para el ALV.

  Vista de los viewcontainer en el layout.

Page 3: Crear Select Option con alv usando Web Dynpro

 En las propiedades del componet controller agrego los componentes que vamos a utilizar.

 Usando el Wizard Instantisio el componente de select option.ç

Page 4: Crear Select Option con alv usando Web Dynpro

Este es el codigo que genera el Wizard.

  "Instancio usage component Select Options

  data lo_cmp_usage type ref to if_wd_component_usage.

  lo_cmp_usage =   wd_this->wd_cpuse_my_select_option( ).  if lo_cmp_usage->has_active_component( ) is initial.    lo_cmp_usage->create_component( ).  endif.

  

 Otra vez mediante el Wizard inicializo el selec option llamando al método INI_SELECTION_SCREEN

Page 5: Crear Select Option con alv usando Web Dynpro

Código que genera el Wizard.

"inicializo el componente llamando al metodo del componente usadoDATA lo_INTERFACECONTROLLER TYPE REF TO IWCI_WDR_SELECT_OPTIONS .lo_INTERFACECONTROLLER =   wd_this->wd_cpifc_my_select_option( ).

  DATA lv_r_helper_class TYPE ref to if_wd_select_options.  lv_r_helper_class = lo_interfacecontroller->init_selection_screen( ).

CODIGO COMPLETO PARA EL METODO WDDOINIT DEL COMPONET CONTROLLER

method WDDOINIT .

  "Instancio usage component Select Options  data lo_cmp_usage type ref to if_wd_component_usage.

  lo_cmp_usage =   wd_this->wd_cpuse_my_select_option( ).

Page 6: Crear Select Option con alv usando Web Dynpro

  if lo_cmp_usage->has_active_component( ) is initial.    lo_cmp_usage->create_component( ).  endif.

  "inicializo el componente llamando al metodo del componente usadoDATA lo_INTERFACECONTROLLER TYPE REF TO IWCI_WDR_SELECT_OPTIONS .lo_INTERFACECONTROLLER =   wd_this->wd_cpifc_my_select_option( ).

  DATA lv_r_helper_class TYPE ref to if_wd_select_options.  lv_r_helper_class = lo_interfacecontroller->init_selection_screen( ).

"Rango del Select Option declaro la variable y creo el rango pasando el tipo de la variable.  DATA: lt_range_idemp TYPE REF TO data.

  lt_range_idemp = lv_r_helper_class->create_range_table(  i_typename = 'SCARR-CARRID' ).

*&---------------------------------------------------------------------**&Activar o desactivar los valores globlales de la WD*&---------------------------------------------------------------------*  lv_r_helper_class->set_global_options(                               i_display_btn_cancel  = abap_false                               i_display_btn_check   = abap_false                               i_display_btn_reset   = abap_false                               i_display_btn_execute = abap_false ).

**&---------------------------------------------------------------------**&Este metodo mostrara los campos en la WD*&---------------------------------------------------------------------*

Page 7: Crear Select Option con alv usando Web Dynpro

lv_r_helper_class->add_selection_field( i_id = 'SCARR'                                                      it_result = lt_range_idemp                                      i_no_extension = abap_true  *                                     i_no_complex_restrictions = abap_true  *                                     I_READ_ONLY = abap_true                                                     ).endmethod.

1.      Para hacer la búsqueda por el select option he creado un método que será llamado luego de ingresar los valores de selección. Este método de igual manera esta en componet controller y será llamado desde un botón en la pantalla principal.

method FILL_ALV_SCARR .

  "creo tabla tipo slfight y tabla interna donde almaceno el select option  data: it_sflight TYPE TABLE OF sflight,        it_select_op TYPE REF TO data.

  FIELD-SYMBOLS: <FS_CARRID> TYPE TABLE.

  "Vuelvo a inicializar el componente llamando al metodo initializacion para el select options  DATA lo_INTERFACECONTROLLER TYPE REF TO IWCI_WDR_SELECT_OPTIONS .  lo_INTERFACECONTROLLER =   wd_this->wd_cpifc_my_select_option( ).

    DATA lv_r_helper_class TYPE ref to if_wd_select_options.    lv_r_helper_class = lo_interfacecontroller->init_selection_screen(    ).

"Obtengo la tabla de rango del Select Option y lo asigno al FS para hacer la busqueda

Page 8: Crear Select Option con alv usando Web Dynpro

  it_select_op = lv_r_helper_class->GET_RANGE_TABLE_OF_SEL_FIELD( I_ID = 'SCARR' ).* Assign it to a field symbol  ASSIGN it_select_op->* TO <FS_CARRID>.

  SELECT * into CORRESPONDING FIELDS OF TABLE it_sflight from sflight WHERE carrid IN <fs_carrid>.

2.      Luego de copiar el código de arriba mediante el wizard hacemos el binding a la tabla del contexto que esta mapeada con la table del ALV.

"bind a la tabla sflight que tengo en contexto.  DATA lo_nd_sflight TYPE REF TO if_wd_context_node.  DATA ls_sflight TYPE wd_this->Element_sflight.  DATA lt_sflight TYPE wd_this->Elements_sflight.

* navigate from <CONTEXT> to <SFLIGHT> via lead selection  lo_nd_sflight = wd_context->get_child_node( name = wd_this->wdctx_sflight ).

Page 9: Crear Select Option con alv usando Web Dynpro

  IF lo_nd_sflight IS NOT INITIAL.    lo_nd_sflight->bind_table( new_items = it_sflight set_initial_elements = abap_false ).  ENDIF.endmethod.

 Embebo en los contendores los componentes utilizados para ser mostrado en la pantalla.

Page 10: Crear Select Option con alv usando Web Dynpro

1  Creo botón en el layout para una vez seleccionado los datos hacer las búsquedas. Lo creo con una action SEARCH la cual estará el código que llama a mi método y muestra los datos en el ALV.

  Dentro de la action del botón y mediante el wizard llamo al método FILL_ALV_SCARR

Page 11: Crear Select Option con alv usando Web Dynpro

         En la interfaz del componente usado en la parte de contex, agrego el contexto del componet controler y arrastro la tabla SFLIGHT a el nodo DATA del contex de la interfaz.

  Luego de crear la aplicación para probar la web dynpro solo queda ejacutarla.

Page 13: Crear Select Option con alv usando Web Dynpro

Publicado por willcach en 10:33 Enviar por correo electrónico Escribe un blog Compartir con Twitter Compartir con Facebook Compartir con Google Buzz

2 comentarios:

Noel dijo... muy bueno el ejemplo, si se tratara de otra tabla, digamos de una creada por uno mismo, donde cargo lo datos de la que se deben mostrar en el select option?

23 de noviembre de 2010 08:36

willcach dijo... Hola Noel espero estes bien.!

A ver no tengo claro tu pregunta. Si quieres usar una tabla Z para el used componet WDR_SELECT_OPTIONS no tendrias poblemas con usar las indicaciones de arriba sustituyendo scarr por tu tabla Z.

Por otro lado si lo que quieres es cargar datos en la tabla Z que has creado para usar el select option tienes dos opciones: o creas un report que te llene de registros tu tabla. O creas tu tabla... le creas la vista de actualizacion en la se11 te metes en utilidades y le dices generador actualizacion tabla... una vez creada puedes ver tu tabla por la SM30... y cargarle datos si asi lo quieres...

PERO TE RECOMIENDO HACER UN PROGRAMA DE CARGA.--