No tener que pulsar intro en un ALV para tener en cuenta lso datos introducidos

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • melerogalan
    Senior Member
    • nov
    • 142

    #1

    No tener que pulsar intro en un ALV para tener en cuenta lso datos introducidos

    Hola:

    Tengo varios ALV en la misma pantalla, el problema esta que cuando un usuario introduce un dato, no quiere pulsar el intro , hay alguna manera de evitar esto.

    Saludos
    Cada vez que un programador hace una hora extra, Dios mata a un gatito...tenlo en cuenta
  • ibecerra

    #2
    deber tener en cuenta que sap es standard y utiliza las mejores practicas, te explico mejor para sap el intro es una manera de decir que la informacion es aceptada por lo tanto se debe validar.
    lo otro seria q pongas un boton y haga lo que el usuario quiere.
    pero ten mucho cuidado con eso, a los usuarios no es bueno aceptarles todo.

    Comentario

    • DavidXD_XD
      Moderator
      • ago
      • 1255

      #3
      Hola ... yo le activo ese evento ENTER por default ... quiere decir que si salta a otra celda actualiza o valida de manera inmediata el valor agregado en la celda (sry x las redundancias), eso lo hice con OO, te dejo el codigo ...

      Código:
      [COLOR="Blue"]*----------------------------------------------------------------------*
      *    Definición de Clases (DEFINITION)
      *----------------------------------------------------------------------*[/COLOR]
      CLASS lcl_event_receiver DEFINITION.
      
        PUBLIC SECTION.
          METHODS:
            handle_double_click
              FOR EVENT DOUBLE_CLICK OF cl_gui_alv_grid
                IMPORTING
                  e_row
                  e_column,
            handle_data_changed
              FOR EVENT data_changed OF cl_gui_alv_grid
                IMPORTING
                  er_data_changed.
      
        PRIVATE SECTION.
        DATA: l_coddet TYPE ztfi_pdb_det_com-coddet.
      
      ENDCLASS.
      
      [COLOR="blue"]* Evento Data Changed[/COLOR]
        METHOD handle_data_changed.
      [COLOR="blue"]* Variables locales[/COLOR]
          FIELD-SYMBOLS: <fs_detrac> LIKE LINE OF t_detrac.
          LOOP AT er_data_changed->mt_good_cells INTO g_good.
            SELECT COUNT(*)
              FROM ztfi_pdb_det
                WHERE coddet EQ g_good-value.
            IF sy-subrc = 0.
              READ TABLE t_detrac INDEX g_good-row_id ASSIGNING <fs_detrac>.
              IF sy-subrc = 0.
                <fs_detrac>-icon = icon_led_green.
              ENDIF.
              UNASSIGN <fs_detrac>.
            ELSE.
              READ TABLE t_detrac INDEX g_good-row_id ASSIGNING <fs_detrac>.
              IF sy-subrc = 0.
                <fs_detrac>-icon = icon_led_red.
              ENDIF.
              UNASSIGN <fs_detrac>.
            ENDIF.
          ENDLOOP.
        ENDMETHOD.
      
      [COLOR="blue"]* En esta parte defino el ALV dentro del PBO[/COLOR]
      
      [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]
          PERFORM exclude_button.
      [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 (Parte Importante)[/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 (Parte Importante)[/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.
      Espero te sirva de ayuda ... coloque las partes importantes en el codigo ... con eso capturas por default los valores hechos en una celda ...
      David Carballido Córdova

      Comentario

      Trabajando...