ALV en la screen de una dynpro

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • zebalia
    Member
    • dic
    • 30

    #1

    ALV en la screen de una dynpro

    Hola buenas.

    Vereis, necesito hacer un ALV en una screen de una dynpro y no se muy bien como hacerlo.

    Me imagino que tengo que crear un "Control Custom" donde insertar mi ALV. El problema es que no se como y donde crear este ALV.

    El ALV me imagino que se creará en el PBO. He puesto lo siguiente:

    IF my_container IS INITIAL.

    CREATE OBJECT my_alv_grid
    EXPORTING
    i_parent = my_container
    EXCEPTIONS
    OTHERS = 1.

    ENDIF.

    Ahora, lo que no se, es donde crear mi catálogo y donde poner lo siguiente:

    CALL METHOD my_alv_grid->set_table_for_first_display
    EXPORTING
    i_structure_name = 'ZTABLA' (Este es el nombre del Custom Controler??)
    "is_layout = is_layout
    CHANGING
    it_outtab = Mi_tabla.
    EXCEPTIONS
    OTHERS = 4.

    Muchas gracias
  • K-MUS
    Member
    • feb
    • 87

    #2
    Originalmente publicado por zebalia
    Hola buenas.

    Vereis, necesito hacer un ALV en una screen de una dynpro y no se muy bien como hacerlo.

    Me imagino que tengo que crear un "Control Custom" donde insertar mi ALV. El problema es que no se como y donde crear este ALV.

    El ALV me imagino que se creará en el PBO. He puesto lo siguiente:

    IF my_container IS INITIAL.

    CREATE OBJECT my_alv_grid
    EXPORTING
    i_parent = my_container
    EXCEPTIONS
    OTHERS = 1.

    ENDIF.

    Ahora, lo que no se, es donde crear mi catálogo y donde poner lo siguiente:

    CALL METHOD my_alv_grid->set_table_for_first_display
    EXPORTING
    i_structure_name = 'ZTABLA' (Este es el nombre del Custom Controler??)
    "is_layout = is_layout
    CHANGING
    it_outtab = Mi_tabla.
    EXCEPTIONS
    OTHERS = 4.

    Muchas gracias
    Busca en google cualquier ejemplo de ALV with OO (object oriented) y vas a encontrar muchos ejemplos.

    Comentario

    • Marlon21
      Junior Member
      • mar
      • 18

      #3
      Ejemplo

      Hola te paso un ejemplo de la parte que deseas, cualquier consulta solo escribes, Saludos XD!!


      CALL SCREEN 100.

      *Aquí creas tu control custom


      *En el screen estos son los procesos
      PROCESS BEFORE OUTPUT.
      MODULE status_0100.
      MODULE act_data.
      *
      PROCESS AFTER INPUT.
      MODULE user_command_0100.



      MODULE status_0100 OUTPUT.


      SET PF-STATUS '0100'. Activas tus button de back canc exit
      SET TITLEBAR '0100'. Titulo de tu Reporte

      ENDMODULE. " STATUS_0100 OUTPUT





      MODULE act_data OUTPUT.

      IF go_custom_container IS INITIAL.
      CREATE OBJECT go_custom_container
      EXPORTING
      container_name = gv_container.

      ENDIF.

      *Top of Page
      CREATE OBJECT o_dyndoc_id
      EXPORTING
      style = 'ALV_GRID'. “Nombre de tu control custom

      IF go_grid_data IS INITIAL.
      CREATE OBJECT go_splitter
      EXPORTING
      parent = go_custom_container
      rows = 2
      columns = 1.

      CALL METHOD go_splitter->get_container
      EXPORTING
      row = 2
      column = 1
      RECEIVING
      container = go_parent_grid.

      CREATE OBJECT go_grid_data
      EXPORTING
      i_parent = go_parent_grid.

      *Top of Page
      CALL METHOD go_splitter->get_container
      EXPORTING
      row = 1
      column = 1
      RECEIVING
      container = go_parent_top.

      *Tamaño top of page
      CALL METHOD go_splitter->set_row_height
      EXPORTING
      id = 1
      height = 16.

      CREATE OBJECT go_event_receiver.
      SET HANDLER go_event_receiver->handle_double_click FOR go_grid_data. “Evento doble click
      * SET HANDLER go_event_receiver->handle_data_changed FOR go_grid_data.
      SET HANDLER go_event_receiver->handle_top_of_page FOR go_grid_data. “Evento Topo f page

      *Excluir Botonera del ALV
      PERFORM exclude_button. “Es para excluir botones del alv


      ls_layout-sel_mode = 'A'.

      wa_disvar_rcr-report = sy-repid.

      CALL METHOD go_grid_data->set_table_for_first_display
      EXPORTING
      is_variant = wa_disvar_rcr
      i_save = 'A'
      i_default = 'A'
      it_toolbar_excluding = gt_exclude
      is_layout = ls_layout
      CHANGING
      it_fieldcatalog = gt_fieldcat
      it_outtab = gt_data[].


      CALL METHOD go_grid_data->register_edit_event
      EXPORTING
      i_event_id = cl_gui_alv_grid=>mc_evt_enter.

      CALL METHOD go_grid_data->register_edit_event
      EXPORTING
      i_event_id = cl_gui_alv_grid=>mc_evt_modified
      EXCEPTIONS
      OTHERS = 2.


      CALL METHOD o_dyndoc_id->initialize_document
      EXPORTING
      background_color = cl_dd_area=>col_textarea.

      CALL METHOD go_grid_data->list_processing_events
      EXPORTING
      i_event_name = 'TOP_OF_PAGE'
      i_dyndoc_id = o_dyndoc_id.

      ELSE.
      gt_stable-row = 'X'.
      gt_stable-col = 'X'.
      CALL METHOD go_grid_data->refresh_table_display
      EXPORTING
      is_stable = gt_stable
      i_soft_refresh = 'X'.
      ENDIF.

      ENDMODULE.



      MODULE user_command_0100 INPUT.
      CASE sy-ucomm.
      WHEN 'BACK'
      OR 'EXIT'
      OR 'CANC'.
      CLEAR sy-ucomm.
      SET SCREEN 0.
      LEAVE SCREEN.
      ENDCASE.
      ENDMODULE.





      FORM exclude_button .
      DATA: ls_exclude TYPE ui_func.

      REFRESH: gt_exclude.
      ls_exclude = cl_gui_alv_grid=>mc_fc_loc_copy_row.
      APPEND ls_exclude TO gt_exclude.
      ls_exclude = cl_gui_alv_grid=>mc_fc_check.
      APPEND ls_exclude TO gt_exclude.
      ls_exclude = cl_gui_alv_grid=>mc_fc_loc_delete_row.
      APPEND ls_exclude TO gt_exclude.
      ls_exclude = cl_gui_alv_grid=>mc_fc_loc_insert_row.
      APPEND ls_exclude TO gt_exclude.
      ls_exclude = cl_gui_alv_grid=>mc_mb_variant.
      APPEND ls_exclude TO gt_exclude.
      ls_exclude = cl_gui_alv_grid=>mc_mb_export.
      APPEND ls_exclude TO gt_exclude.
      ls_exclude = cl_gui_alv_grid=>mc_fc_info.
      APPEND ls_exclude TO gt_exclude.
      ls_exclude = cl_gui_alv_grid=>mc_fc_find.
      APPEND ls_exclude TO gt_exclude.
      ls_exclude = cl_gui_alv_grid=>mc_mb_view.
      APPEND ls_exclude TO gt_exclude.
      ls_exclude = cl_gui_alv_grid=>mc_fc_sort_asc.
      APPEND ls_exclude TO gt_exclude.
      ls_exclude = cl_gui_alv_grid=>mc_fc_sort_dsc.
      APPEND ls_exclude TO gt_exclude.
      ls_exclude = cl_gui_alv_grid=>mc_fc_filter.
      APPEND ls_exclude TO gt_exclude.
      ls_exclude = cl_gui_alv_grid=>mc_fc_delete_filter.
      APPEND ls_exclude TO gt_exclude.
      ls_exclude = cl_gui_alv_grid=>mc_fc_refresh.
      APPEND ls_exclude TO gt_exclude.
      ls_exclude = cl_gui_alv_grid=>mc_fc_loc_undo.
      APPEND ls_exclude TO gt_exclude.
      ls_exclude = cl_gui_alv_grid=>mc_fc_loc_append_row.
      APPEND ls_exclude TO gt_exclude.
      ls_exclude = cl_gui_alv_grid=>mc_fc_loc_copy.
      APPEND ls_exclude TO gt_exclude.
      ls_exclude = cl_gui_alv_grid=>mc_fc_loc_cut.
      APPEND ls_exclude TO gt_exclude.
      ls_exclude = cl_gui_alv_grid=>mc_fc_loc_paste.
      APPEND ls_exclude TO gt_exclude.
      ls_exclude = cl_gui_alv_grid=>mc_fc_loc_paste_new_row.
      APPEND ls_exclude TO gt_exclude.
      ls_exclude = cl_gui_alv_grid=>mc_fc_subtot.
      APPEND ls_exclude TO gt_exclude.
      ls_exclude = cl_gui_alv_grid=>mc_mb_sum.
      APPEND ls_exclude TO gt_exclude.
      ls_exclude = cl_gui_alv_grid=>mc_fc_print.
      APPEND ls_exclude TO gt_exclude.
      ls_exclude = cl_gui_alv_grid=>mc_fc_graph.
      APPEND ls_exclude TO gt_exclude.
      ls_exclude = cl_gui_alv_grid=>mc_fc_help.
      APPEND ls_exclude TO gt_exclude.
      ls_exclude = cl_gui_alv_grid=>mc_fc_detail.
      APPEND ls_exclude TO gt_exclude.
      ENDFORM.

      Comentario

      • zebalia
        Member
        • dic
        • 30

        #4
        Muchas gracias chicos, con esto voy tirando y en principio parece que todo me funciona


        Muchas gracias de nuevo

        Comentario

        Trabajando...