Botones alvoo sin toolbar por default

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • damlaplata
    Member
    • sep
    • 41

    #1

    Botones alvoo sin toolbar por default

    Que tal! Mi nombre es Angel y soy nuevo en la comu y en este mundo abap.
    Primero que nada un Agradecimiento a Todos por lo que contribuyen y ofrecen con toda humildad, y tambien a los moderadores.
    Ahora les comento lo que me aqueja:
    No hace mucho empiezo a trabajar con este lenguaje de programacion y me piden realizar un alv oo (que por lo que lei y estuve viendo es lo mismo que una alv grid..No?)
    Bien, pude hacer el alv oo, y me muestra datos, y los puedo modificar, y cambia los datos en mi tabla de la bd, y todo bonito.
    PERO, me piden que tengo que hacer unos botones de insertar y eliminar, los cuales los hice pero con el status_gui, y me dijeron que NO , que tengo que crear los botones del alvoo y esto me esta complicando mucho.
    Si bien se que esta la toolbar de botones prederterminado del alvoo que lo habilito y deshabilito con(en el layout):
    ps_layout-no_toolbar = 'X'. (con X deshabilito)
    esta barra funciona bien, pero no es la que quieren que use, sino que cree los mismos botones y les ponga funcionalidades. Y Aca estoy perdido porque magicamente pude poner botones pero solo se agregan a esta toolbar predeterminada y si la deshabilito me borra mis botones, la pregunta es:
    -como hago para colocar mi propia barra de botones sin la predeterminada?
    -Se puede? Y tambien ademas de eso, como agregar las funcionalidades a esos botones?
    Seria buenisimo luego de lograr poner mis botones, copiar el codigo de la preterminada:la de insertar y eliminar, y se las doy a mis botones, pero nose....
    he estado buscando en el foro, pero sin exito, algunos solo quieren poner botones pero no se si usan la toolbar predeterminada.
  • vrpascual
    Junior Member
    • nov
    • 22

    #2
    Hola

    Hola damlaplata si quieres pasame tu mail y te adjunto un ejemplo donde agrego los botones Eliminar, Modificar y Guardar y sacando todos los botones estandar del ALV. Yo los botones estandar los saca cargandolos en una tabla pero como vos decis poniendo en el layout es mejor.
    Los botones los agregas haciendo un evento.

    Saludos.
    Editado por última vez por vrpascual; 21/11/2011, 13:25:07.

    Comentario

    • Leonel Espitia Torres
      Member
      • ago
      • 78

      #3
      Si fueras tan amable me puedes enviar tu programa?, yo tengo un problema serio con los botones personalizados. Mi correo es lespitia@ebsa.com.co, lespitiamoni@hotmail.com. Gracias compañero por tu aporte.

      Comentario

      • darona
        Member
        • jun
        • 44

        #4
        Con un método del alv...

        Existe un método del alv en el que puedes deshabilitar los botones de esa toolbar uno a uno. Cada uno de los botones es un atributo de la clase, metiéndolos en una table de ese método los escondes.

        Si necesitas un ejemplo podría buscarte alguno.

        Un saludo.

        Comentario

        • Dennis Urbano E.
          Junior Member
          • nov
          • 28

          #5
          Con esto quitas los botones que no deseas en el toolbar del alvOO

          Código:
              
          CALL METHOD g_grid->set_table_for_first_display
                EXPORTING
                  it_toolbar_excluding          = LT_EXCLUDE    "ESTA TABLA
                  is_layout                     = g_layout
                CHANGING
                  it_fieldcatalog               = pt_fieldcat
                  it_outtab                     = gtd_tutabla[]
                EXCEPTIONS
                  invalid_parameter_combination = 1
                  program_error                 = 2
                  too_many_lines                = 3
                  OTHERS                        = 4.
          Y así alimentas la t.interna. acomódalos segun tu req.

          Código:
            DATA ls_exclude TYPE ui_func.
          
            ls_exclude = cl_gui_alv_grid=>mc_fc_loc_copy_row.
            APPEND ls_exclude TO pt_exclude.
            ls_exclude = cl_gui_alv_grid=>mc_fc_loc_delete_row.
            APPEND ls_exclude TO pt_exclude.
            ls_exclude = cl_gui_alv_grid=>mc_fc_loc_append_row.
            APPEND ls_exclude TO pt_exclude.
            ls_exclude = cl_gui_alv_grid=>mc_fc_loc_insert_row.
            APPEND ls_exclude TO pt_exclude.
            ls_exclude = cl_gui_alv_grid=>mc_fc_loc_move_row.
            APPEND ls_exclude TO pt_exclude.
            ls_exclude = cl_gui_alv_grid=>mc_fc_loc_copy.
            APPEND ls_exclude TO pt_exclude.
            ls_exclude = cl_gui_alv_grid=>mc_fc_loc_cut.
            APPEND ls_exclude TO pt_exclude.
            ls_exclude = cl_gui_alv_grid=>mc_fc_loc_paste.
            APPEND ls_exclude TO pt_exclude.
            ls_exclude = cl_gui_alv_grid=>mc_fc_loc_paste_new_row.
            APPEND ls_exclude TO pt_exclude.
            ls_exclude = cl_gui_alv_grid=>mc_fc_loc_undo.
            APPEND ls_exclude TO pt_exclude.
            ls_exclude = cl_gui_alv_grid=>mc_fc_check.
            APPEND ls_exclude TO pt_exclude.
            ls_exclude = cl_gui_alv_grid=>mc_fc_refresh.
            APPEND ls_exclude TO pt_exclude.
            ls_exclude = cl_gui_alv_grid=>mc_fc_print.
            APPEND ls_exclude TO pt_exclude.
            ls_exclude = cl_gui_alv_grid=>mc_fc_graph.
            APPEND ls_exclude TO pt_exclude.
            ls_exclude = cl_gui_alv_grid=>mc_fc_help.
            APPEND ls_exclude TO pt_exclude.
            ls_exclude = cl_gui_alv_grid=>mc_fc_load_variant.
            APPEND ls_exclude TO pt_exclude.
            ls_exclude = cl_gui_alv_grid=>mc_fc_maintain_variant.
            APPEND ls_exclude TO pt_exclude.
            ls_exclude = cl_gui_alv_grid=>mc_fc_save_variant.
            APPEND ls_exclude TO pt_exclude.
            ls_exclude = cl_gui_alv_grid=>mc_fc_subtot.
            APPEND ls_exclude TO pt_exclude.
            ls_exclude = cl_gui_alv_grid=>mc_fc_sum.
            APPEND ls_exclude TO pt_exclude.
            ls_exclude = cl_gui_alv_grid=>mc_fc_views.
            APPEND ls_exclude TO pt_exclude.
            ls_exclude = cl_gui_alv_grid=>mc_fc_view_grid.
            APPEND ls_exclude TO pt_exclude.
            ls_exclude = cl_gui_alv_grid=>mc_mb_sum.
            APPEND ls_exclude TO pt_exclude.
            ls_exclude = cl_gui_alv_grid=>mc_mb_variant.
            APPEND ls_exclude TO pt_exclude.
          Y para insertar botones en el mismo toolbar es de la siguiente manera:

          Creas la definición para la clase event_handler.

          Código:
          CLASS lcl_event_handler DEFINITION.
            PUBLIC SECTION .
              METHODS:
          
              handle_user_command
                FOR EVENT user_command OF cl_gui_alv_grid
                          IMPORTING e_ucomm,
          
              handle_toolbar
                FOR EVENT toolbar OF cl_gui_alv_grid
                          IMPORTING e_object
                                    e_interactive.
          
          ENDCLASS.                    "lcl_event_handler DEFINITION
          Y su implementación
          Código:
          CLASS lcl_event_handler IMPLEMENTATION .
          
            METHOD handle_user_command.
          *    break dennisu.
              CASE e_ucomm.
                WHEN 'INSERT'.
                  PERFORM insertar.
                WHEN 'DELETE'.
                  PERFORM borrar.
              ENDCASE.
          
              CALL METHOD g_grid->refresh_table_display
                EXCEPTIONS
                  finished = 1
                  OTHERS   = 2.
          
            ENDMETHOD.                    "handle_user_command
          
            METHOD handle_toolbar.
          
              DATA: ls_toolbar TYPE stb_button.
          * append a separator to normal toolbar
              CLEAR ls_toolbar.
              MOVE 3 TO ls_toolbar-butn_type.
              APPEND ls_toolbar TO e_object->mt_toolbar.
          *Añade boton de Insertar Lineas
              CLEAR ls_toolbar.
              MOVE 'INSERT' TO ls_toolbar-function.
              MOVE icon_insert_row TO ls_toolbar-icon.
              MOVE 'Insertar línea'(112) TO ls_toolbar-quickinfo.
              MOVE ' ' TO ls_toolbar-disabled.
              APPEND ls_toolbar TO e_object->mt_toolbar.
          *Añadir boton de borrar lineas
              CLEAR ls_toolbar.
              MOVE 'DELETE' TO ls_toolbar-function.
              MOVE icon_delete_row TO ls_toolbar-icon.
              MOVE 'Borrar línea'(112) TO ls_toolbar-quickinfo.
              MOVE ' ' TO ls_toolbar-disabled.
              APPEND ls_toolbar TO e_object->mt_toolbar.
          
            ENDMETHOD.                    "handle_toolbar
          
          ENDCLASS.                    "lcl_event_handler IMPLEMENTATION
          Y antes de lanzar el alv, o sea antes del set_table_for_etc, registramos los eventos a agregar, en este caso los del toolbar.

          Código:
            DATA gr_event_handler TYPE REF TO lcl_event_handler .
          
          *Creamos la instancia
            CREATE OBJECT gr_event_handler.
          
          *Registramos los métodos para manipular el alv
            SET HANDLER gr_event_handler->handle_user_command FOR g_grid .
          *Metodo para agregar los botones al alv.
            SET HANDLER gr_event_handler->handle_toolbar FOR g_grid.
          Ojalá te ayuden =D!

          Comentario

          Trabajando...