Ayuda Alv Oo Urgente porfavor!!!!

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • miguel.esteban.martin
    Member
    • ene
    • 89

    #1

    Ayuda Alv Oo Urgente porfavor!!!!

    Hola espero que me podais ayudar porqeu me estoy volviendo loco para hacer esto porque estoy mirando los ejempllos pero no me entero de nada.

    Me gustarai si me pudierais poner el codigo para realizar esto.

    1º Añadir botones de Nueva fila y Borrar fila al menu del alv.
    2º Despues de añadir los botones me gustarai saber el codigo para realizar sus acciones.

    Muchisisismas gracias me estoy volviendo loco para poder hacerlo muchas gracias.
  • DavidXD_XD
    Moderator
    • ago
    • 1255

    #2
    Hola, yo lo hago asi:

    Código:
    [COLOR="blue"]*&---------------------------------------------------------------------*
    *&      Form  status_600
    *&---------------------------------------------------------------------*
    *       Instanciando el grid para el screen 600
    *----------------------------------------------------------------------*[/COLOR]
    FORM status_600.
    [COLOR="blue"]* Variables Locales[/COLOR]
      DATA: ls_stbl_det TYPE lvc_s_stbl.
    
      IF g_container_600 IS INITIAL.
    [COLOR="blue"]* Instanciamos el container principal[/COLOR]
        CREATE OBJECT g_container_600
            EXPORTING
                container_name = 'CONTAINER_600'.
    [COLOR="blue"]* Separamos el container en título y grid[/COLOR]
        IF g_top_600 IS INITIAL.
          CREATE OBJECT g_top_600
              EXPORTING
                  style = 'ALV_GRID'.
        ENDIF.
    [COLOR="blue"]* Separamos en 2 filas el container principal[/COLOR]
        CREATE OBJECT g_splitter_600
            EXPORTING
                parent  = g_container_600
                rows    = 2
                columns = 1.
    [COLOR="blue"]* Primer Splitter para el TOP OF PAGE[/COLOR]
        CALL METHOD g_splitter_600->get_container
            EXPORTING
                row       = 1
                column    = 1
            RECEIVING
                container = g_parent_html_600.
    [COLOR="blue"]* Segundo splitter para el grid[/COLOR]
        CALL METHOD g_splitter_600->get_container
            EXPORTING
                row       = 2
                column    = 1
            RECEIVING
                container = g_parent_grid_600.
    [COLOR="blue"]* Creando la instancia para el grid y enlazarla con el container[/COLOR]
        CREATE OBJECT g_grid_600
            EXPORTING
                i_appl_events = 'X'
                i_parent      = g_parent_grid_600.
    [COLOR="blue"]* Creando el catálogo y definiendo layout[/COLOR]
        PERFORM build_fieldcat_600.
        PERFORM build_layout.
        PERFORM build_sort_600.
    [COLOR="blue"]* Excluyendo botones[/COLOR]
        [B]PERFORM exclude_button.[/B]
    [COLOR="blue"]* Construyendo cabecera[/COLOR]
        PERFORM top_of_page_600.
    
        CALL METHOD g_grid_600->set_table_for_first_display
            EXPORTING
                it_toolbar_excluding = gt_exclude
                is_layout            = gs_layout_600
            CHANGING
                it_outtab            = t_detrac
                it_fieldcatalog      = ti_fieldcat_600
                it_sort              = ti_sort_600.
    [COLOR="blue"]* Adicionando evento ENTER[/COLOR]
        CALL METHOD g_grid_600->register_edit_event
            EXPORTING
                i_event_id = cl_gui_alv_grid=>mc_evt_enter.
    [COLOR="blue"]* Evento que captura los cambios realizados[/COLOR]
        CALL METHOD g_grid_600->register_edit_event
            EXPORTING
                i_event_id = cl_gui_alv_grid=>mc_evt_modified.
    [COLOR="Blue"]* Instanciando el objeto que enlaza eventos y el grid[/COLOR]
        CREATE OBJECT g_event_receiver_600.
        SET HANDLER g_event_receiver_600->handle_data_changed
                    FOR g_grid_600.
      ELSE.
        CLEAR ls_stbl_det.
        ls_stbl_det-row = 'X'.
        ls_stbl_det-col = 'X'.
        CALL METHOD g_grid_600->refresh_table_display
            EXPORTING
                is_stable  = ls_stbl_det.
      ENDIF.
    
    ENDFORM.
    Dentro del perform exclude_button coloco los botones que no iran en el alv, ahi incluyo los botones de creacion de una nueva linea asi como tbm la de borrar una linea

    Código:
    [COLOR="blue"]*&---------------------------------------------------------------------*
    *&      Form  exclude_button
    *&---------------------------------------------------------------------*
    *       Excluyendo botones
    *----------------------------------------------------------------------*[/COLOR]
    FORM exclude_button.
    
    [COLOR="blue"]* Variables locales[/COLOR]
      DATA: ls_exclude TYPE ui_func.
    
      REFRESH: gt_exclude.
    
      ls_exclude = [B]cl_gui_alv_grid=>mc_fc_loc_insert_row.[/B]
      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_check.
      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_copy_row.
      APPEND ls_exclude TO gt_exclude.
      ls_exclude = cl_gui_alv_grid=>mc_fc_loc_cut.
      APPEND ls_exclude TO gt_exclude.
      ls_exclude = [B]cl_gui_alv_grid=>mc_fc_loc_delete_row.[/B]
      APPEND ls_exclude TO gt_exclude.
      ls_exclude = cl_gui_alv_grid=>mc_fc_loc_move_row.
      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.
      IF sy-dynnr NE 400 or sy-dynnr NE 500.
        ls_exclude = cl_gui_alv_grid=>mc_fc_subtot.
        APPEND ls_exclude TO gt_exclude.
        ls_exclude = cl_gui_alv_grid=>mc_fc_sum.
        APPEND ls_exclude TO gt_exclude.
      ENDIF.
      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.                    " exclude_button
    Entonces lo que tendrias q hacer es no excluir esos botones de tu ALV ...
    David Carballido Córdova

    Comentario

    • miguel.esteban.martin
      Member
      • ene
      • 89

      #3
      muchas gracias por tu ayuda pero no me salen los botones.

      supuestamente para uqe salga el de nueva fila en tu codigo deberia astericar
      ls_exclude = cl_gui_alv_grid=>mc_fc_loc_append_row.

      no?
      esuqe no estoy muy seguro, no estoy muy puesto en los alv Oo.

      muchas gracias

      Comentario

      • DavidXD_XD
        Moderator
        • ago
        • 1255

        #4
        Asi es ... comenta esos 2 que se encuentran en negrita, pero primero te recomiendo que comentes todos y la tabla interna quede vacia para que puedas visualizar todos los botones que contempla el ALV
        David Carballido Córdova

        Comentario

        • miguel.esteban.martin
          Member
          • ene
          • 89

          #5
          Muchas gracias pero no me funciona mira te pongo mi codigo echale un vistazo profavor.

          Perdona por las molestias enserio me estas ayudando mucho

          DATA: gt_exclude TYPE ui_functions.
          IF g_custom_container2 IS INITIAL.
          g_repid2 = sy-repid.
          CREATE OBJECT g_custom_container2
          EXPORTING
          container_name = 'MUESTRA_ALV2'.

          CREATE OBJECT g_grid2
          EXPORTING
          i_parent = g_custom_container2.



          *Catalogo de datos y opciones de layout.
          PERFORM definir_alv2.
          PERFORM layout_alv.
          PERFORM exclude_button.

          CALL METHOD g_grid2->set_table_for_first_display
          EXPORTING
          it_toolbar_excluding = gt_exclude
          i_save = 'X'
          i_default = 'X'
          is_layout = gs_layout
          CHANGING
          it_outtab = i_pos_bulto[]
          it_fieldcatalog = gt_fieldcat2[].

          CALL METHOD g_grid2->set_toolbar_interactive.
          ELSE.
          CALL METHOD g_grid2->refresh_table_display.
          ENDIF.


          *---------------------------------------------------------------
          FORM exclude_button .
          * Variables locales
          DATA: ls_exclude TYPE ui_func.

          REFRESH: 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_fc_loc_undo.
          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_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_copy_row.
          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_delete_row.
          * APPEND ls_exclude TO gt_exclude.
          ls_exclude = cl_gui_alv_grid=>mc_fc_loc_move_row.
          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.
          IF sy-dynnr NE 400 OR sy-dynnr NE 500.
          ls_exclude = cl_gui_alv_grid=>mc_fc_subtot.
          APPEND ls_exclude TO gt_exclude.
          ls_exclude = cl_gui_alv_grid=>mc_fc_sum.
          APPEND ls_exclude TO gt_exclude.
          ENDIF.
          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

          • DavidXD_XD
            Moderator
            • ago
            • 1255

            #6
            Prueba comentando el parametro it_toolbar_excluding en el metodo set_table_for_first_display y ademas comentale porsiaca el evento

            CALL METHOD g_grid2->set_toolbar_interactive.
            David Carballido Córdova

            Comentario

            Trabajando...