lunes, 2 de septiembre de 2013

Crear un ALVGRID en un dynpro con un custom control

Vamos a crear un alvgrid en un dynpro por medio de un custom control el cual va a contener y a mostrar los datos de una consulta de datos.

Primero creamos el report:

REPORT  Z_ALVGRID_CUSTOM.

  Include z_alvgrid_dynpro_data.    "Include con las variables
  Include z_alvgrid_dynpro_func.    "Include con la clase que contiene los metodos a utilizar.

  Datalv_routines Type Ref To routines"hace referencia a la clase routines
        ok_code Like sy-ucomm.            "guarda los comandos de usuario

Initialization.

Start-Of-Selection.
  Create Object lv_routines.
  lv_routines->f_get_infoImporting e_result gt_lfa1 ).  "Busca la informacion que que va a mostrar en el alvgrig de la dynpro
  If Linesgt_lfa1 0.
    lv_routines->f_display_result).   "Muestra el resultado en el ALVGRID
    Call  Selection-Screen 0200.
  Endif.

 Include Z_PROCESS_BEFORE_OUTPUT"Modulo PBO
 Include Z_PROCESS_AFTER_INPUT.   "Modulo PAI


*********Luego creamos la clase que contiene los métodos que van a ser llamados:

Class routines Definition Create Public.
  Public Section.
  Class-Methods:
            contructor,
            f_get_info Exporting e_result Type ty_lfa1,
            f_display_result.
  Private Section.
  Class-Data:
        lv_exception Type Ref To cx_root,
        lv_exception_text Type string.
Endclass.

Class routines Implementation.
  Method contructor.
  Endmethod.

  Method f_get_info.
    Try.
      Select Into Corresponding Fields Of Table e_result From LFA1" Up To 10 Rows.
    Catch cx_root Into lv_exception.
      lv_exception_text lv_exception->get_text).
      Message s000(fbWith lv_exception_text.
    Endtry.
  Endmethod.

  Method f_display_result.
    Data lv_repid Type sy-repid.
    Try.
      lv_repid sy-repid.
      "Crea el objeto de tipo cl_gui_custom_container quye hace referencia al Custom Control que se creo en el Dynpro
      Create Object gv_gui_custom Exporting container_name 'GRID_CONTROL'.
      cl_salv_table=>factoryExporting r_container gv_gui_custom
                              Importing r_salv_table gv_salv_table
                              Changing t_table gt_lfa1 ).

      gv_selections gv_salv_table->get_selections)"Seleccion multiple de columnas
      gv_selections->set_selection_mode)"Single

      gv_salv_funtions gv_salv_table->get_functions).
      gv_salv_funtions->set_allabap_true )"Funciones toolbar

      gv_salv_table->display).
    Catch cx_root Into lv_exception.
      lv_exception_text lv_exception->get_text).
      Message s000(fbWith lv_exception_text.
    Endtry.
  Endmethod.

Endclass.


*******Los  Modulos PAI y PBO

MODULE STATUS_0200 OUTPUT.
  SET PF-STATUS 'STATUS_DYNPRO'.
  SET TITLEBAR 'T-01'.

ENDMODULE.             



MODULE USER_COMMAND_0200 INPUT.
  Datafcode Like ok_code.
  fcode ok_code.
  Clear ok_code.
  Case fcode.
    When 'BACK'.
      Leave To Screen 0.
    When 'EXIT'.
      Leave To Screen 0.
    When 'CANCEL'.
      Leave To Screen 0.
    When 'CMD'.
      Message s000(fbWith 'Command User!'.
      gv_salv_table->get_metadata).
      gt_data_row gv_selections->get_selected_rows).
  Endcase.
ENDMODULE.                 


******Por ultimo les muestro como quedan la layout del dynpro y el status del mismo



No hay comentarios:

Publicar un comentario