Reporte ALV Dinámico

Buen día,

Soy completamente nuevo en el lenguaje ABAP, ya solicité los manuales en español. Pero adicional, tengo dudas en concreto.

Tengo un requerimiento en el trabajo (soy nuevo y sin experiencia) en el cuál tengo que hacer una afectación directa (crear, modificar, eliminar y visualizar) a una tabla de SAP desde un grid. He leído que se puede con un ALV dinámico, pero no lo tengo muy claro y no sé ni por donde comenzar.

Gracias.

Genera primero un reporte ALV, y dentro de ese reporte puedes agregar eventos USER_COMMANDS

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
    EXPORTING
      i_callback_program       = sy-repid
      i_callback_user_command  = 'USER_COMMAND' "Aqui indicas la rutina de los comandos
      i_callback_pf_status_set = 'BAR_ASSIGN' "Barra de botones
      it_fieldcat_lvc          = gt_fcat_agru
    TABLES
      t_outtab                 = gt_agrupados
    EXCEPTIONS
      program_error            = 1
      OTHERS                   = 2.

FORM user_command_process  USING  r_ucomm     LIKE sy-ucomm
                                  rs_selfield TYPE slis_selfield.
*** Esta parte sirve para actulizar la tabla interna con la información visualizada en el reporte ALV
  rs_selfield-refresh = 'X'.

  DATA: lr_grid_pro TYPE REF TO cl_gui_alv_grid.

  CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
    IMPORTING
      e_grid = lr_grid_pro.

  CALL METHOD lr_grid_pro->check_changed_data.

***
  CASE r_ucomm. "Viene de la variable del sistema SY-UCOMM que tiene el comando ejecutado por el usuario
    WHEN '&INSERT'.
    WHEN '&DELE'.
    WHEN '&UPDA'.
    WHEN '&INSERT'.
ENDCASE.
1 me gusta

Hola OMCI, hay varias maneras de realizar un ALV, pero la parte importante para lo que tú buscas es el FIELDCAT (propiedades de las columnas). Te dejo un ejemplo:

( fieldname = 'KWERT4' scrtext_s = 'Total' scrtext_m = 'Total' scrtext_l = 'Total' outputlen = 18 )
( fieldname = 'KVGR3' scrtext_s = 'Agrup.' scrtext_m = 'Agrupador' scrtext_l = 'Agrupador' outputlen = 9 edit = abap_true lowercase = abap_true f4availabl = abap_true ref_field = 'KVGR3' ref_table = 'TVV3T' )

Si te das cuenta son dos campos diferentes del mismo reporte, pero uno de ellos tiene la propiedad Edit activa, esto automáticamente activará los botones para un ALV modificables (insertar, eliminar, copiar registros, etc., aunque incluso estos botones se pueden ocultar si solo quieres que un campo sea editable y no todos los demás) y hace que ese campo/columna en especifico se pueda ingresar un valor. Ya con eso, combinalo con lo que te mandó Alonso, tendrás que jugar con los eventos, para capturar que línea fue modificada, lo que harás con los valores modificados y todo eso. :smile:

Hola, es correcto lo que te han indicado. También te puedes ayudar copiando de los programas demo de Sap donde hay pequeños ejemplos del uso de ALV. Busca en la se38 los programas que empiezan con BCALV
Cuéntanos cómo te ha ido hasta ahora con el programa.

Este tema se cerró automáticamente 30 días después de la última publicación. No se permiten nuevas respuestas.