Ayuda con ALV

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • marsilady
    Junior Member
    • mar
    • 26

    #1

    Ayuda con ALV

    Ayuda con el ALV

    --------------------------------------------------------------------------------

    Hola estoy haciendo un reporte con ALV GRID,

    Logro mostrar los datos perfectamente, pero...... me gustaria que al hacer doble click, me mostrara otra transaccion u otro reporte.... esto lo logro hacer al hacer click en cualquier columna...... pero...... lo que me interesa es cuando me posicione en cierta columna de cierta fila me llame a una transacción.... cuando me posicione en otra columna me llame a un reporte.....

    De verdad que no logro leer esto... si alguien lo sabe, le agradeceria mucho su colaboracion.

    Saludos,

    Marsi
  • gib8107
    Member
    • may
    • 44

    #2
    a muy muy grueso modo este es un ejemplo

    Código:
    [SIZE=1][COLOR=#0000ff]
    ***********************************************************************
    * CLASSES
    ***********************************************************************
    *
    * Se define la clase para capturar el evento DOUBLE_CLICK.
    * Cuando se de doble click en alguna parte del grid se enviaran
    * los valores a esta clase. Con esto se determinara si se bloquea o se
    * desbloquea
    [/COLOR][/SIZE][SIZE=1]CLASS LCL_EVENT_RECEIVER DEFINITION.
    PUBLIC SECTION.
    METHODS: CATCH_DOUBLECLICK
    FOR EVENT DOUBLE_CLICK OF CL_GUI_ALV_GRID
    IMPORTING
    E_COLUMN
    ES_ROW_NO
    SENDER.
    ENDCLASS. "lcl_event_receiver DEFINITION
    [/SIZE][SIZE=1][COLOR=#0000ff]*-----
    [/COLOR][/SIZE][SIZE=1]CLASS LCL_EVENT_RECEIVER IMPLEMENTATION.
    METHOD CATCH_DOUBLECLICK.
    DATA: ET_TABLASALIDA TYPE E_REPORTEFIN,
    E_ESTILOCHEK TYPE LVC_S_STYL.
    [/SIZE][SIZE=1][COLOR=#0000ff]*--
    * Function:
    * Switch between 'editable' and 'not editable' checkbox.
    *--
    [/COLOR][/SIZE][SIZE=1][COLOR=#0000ff]* If the user clicked on another column there is
    * nothing to do.
    [/COLOR][/SIZE][SIZE=1]IF E_COLUMN-FIELDNAME NE 'CHECKBOX'.
    EXIT.
    ENDIF.
    READ TABLE T_REPORTEFIN INTO ET_TABLASALIDA INDEX ES_ROW_NO-ROW_ID.
    [/SIZE][SIZE=1][COLOR=#0000ff]* The loop is only needed if there are other columns that
    * use checkboxes. At this point the loop could be
    * replaced by a READ of the first line of CELLTAB.
    [/COLOR][/SIZE][SIZE=1]LOOP AT ET_TABLASALIDA-CELLTAB INTO E_ESTILOCHEK.
    IF E_ESTILOCHEK-FIELDNAME EQ 'CHECKBOX'.
    [/SIZE][SIZE=1][COLOR=#0000ff]*SE CAMBIA EL ESTILO PARA BLOQUEARLO O DESBLOQUEARLO
    [/COLOR][/SIZE][SIZE=1]IF E_ESTILOCHEK-STYLE = CL_GUI_ALV_GRID=>MC_STYLE_ENABLED.
    E_ESTILOCHEK-STYLE = CL_GUI_ALV_GRID=>MC_STYLE_DISABLED.
    ELSE.
    E_ESTILOCHEK-STYLE = CL_GUI_ALV_GRID=>MC_STYLE_ENABLED.
    ENDIF.
    MODIFY ET_TABLASALIDA-CELLTAB FROM E_ESTILOCHEK.
    ENDIF.
    ENDLOOP.
    MODIFY T_REPORTEFIN FROM ET_TABLASALIDA INDEX ES_ROW_NO-ROW_ID.
    CALL METHOD SENDER->REFRESH_TABLE_DISPLAY.
     
     
    ENDMETHOD. "catch_doubleclick
    ENDCLASS. "lcl_event_receiver IMPLEMENTATION
    [/SIZE][SIZE=1][COLOR=#0000ff]*
    [/COLOR][/SIZE]
    [SIZE=1]CALL METHOD G_GRID->SET_TABLE_FOR_FIRST_DISPLAY
    EXPORTING
    IS_LAYOUT = GS_LAYOUT
    IT_TOOLBAR_EXCLUDING = LT_EXCLUDE
    CHANGING
    IT_FIELDCATALOG = GT_CATALOGO
    IT_OUTTAB = T_REPORTEFIN[].
    CREATE OBJECT G_EVENT_RECEIVER.
    SET HANDLER G_EVENT_RECEIVER->CATCH_DOUBLECLICK FOR G_GRID.
    [/SIZE]

    la parte importante de esto es que defines una clase para "cachar" elñ evento doble click y posteriormente le dices al objeto alv que se direccione a esta clase que definistes
    en la clase definimos una variable llamada
    E_COLUMN
    que como su nombre lo dice dice el nombre de la columna
    si te hace falta algo mas explicado dime y trato de hacer un ejemplo un poco mas explicado
    Editado por última vez por gib8107; 18/05/2006, 00:46:08.

    Comentario

    Trabajando...