Anuncio

Colapsar
No hay anuncio todavía.

Linea editable ALV OO

Colapsar
X
 
  • Filtrar
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes

  • Linea editable ALV OO

    Hola gente,
    tengo un ALV OO y necesito que los registros que muestra, estén en modo visualización y que cuando seleccione la linea y presione el botón modificar, la ponga en modo editable para poder modificar.

    Yo tengo un campo que le paso, pero repercute en todos los registros y solo necesito por linea.
    Es el siguiente:

    gs_layout-edit = 'X'. "Para mostrar editable todos los registros.
    gs_layout-edit = ' '. "Para mostrar grisados todos los registros.

    Alguna idea?..Gracias!!

  • #2
    Hola,

    tengo este código, creo que te puede ser de utilidad:

    Pasos:

    1. Campo extra en la tabla interna para el manejo de la activación y desacticación de opciones.
    2. Edición de celdas condicionales.
    3. Layout para los estilos

    Código:
    REPORT zalv_edit_oo.
    DATA: g_grid TYPE REF TO cl_gui_alv_grid. "First
    DATA: dock TYPE REF TO cl_gui_docking_container.
    *- Fieldcatalog
    DATA: it_fieldcat TYPE lvc_t_fcat,
    x_fieldcat TYPE lvc_s_fcat,
    gs_layout TYPE lvc_s_layo.
    "{ FOR DISABLE
    DATA: ls_edit TYPE lvc_s_styl,
    lt_edit TYPE lvc_t_styl.
    "} FOR DISABLE
    DATA: BEGIN OF it_vbap OCCURS 0,
    vbeln LIKE vbap-vbeln,
    posnr LIKE vbap-posnr,
    style TYPE lvc_t_styl, "FOR DISABLE
    END OF it_vbap.
    DATA: ls_outtab LIKE LINE OF it_vbap.
     
    START-OF-SELECTION.
    SELECT vbeln
    posnr
    UP TO 10 ROWS
    INTO CORRESPONDING FIELDS OF TABLE it_vbap
    FROM vbap.
    END-OF-SELECTION.
    IF NOT it_vbap[] IS INITIAL.
    CALL SCREEN 100.
    ELSE.
    MESSAGE 'NO DATA FOR THE SELECTION'(004) type 'I'.
    ENDIF.
    *&---------------------------------------------------------------------*
    *& Form CREATE_AND_INIT_ALV
    *&---------------------------------------------------------------------*
    * text
    *----------------------------------------------------------------------*
    FORM create_and_init_alv .
    CREATE OBJECT dock
    EXPORTING
    repid = sy-repid
    dynnr = '100'
    extension = '1500'
    EXCEPTIONS
    cntl_error = 1
    cntl_system_error = 2
    create_error = 3
    lifetime_error = 4
    lifetime_dynpro_dynpro_link = 5
    OTHERS = 6
    .
    IF sy-subrc NE 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
    WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
    ENDIF.
    CREATE OBJECT g_grid
    EXPORTING
    i_parent = dock.
     
    CLEAR gs_layout.
    gs_layout-grid_title = text-003.
    gs_layout-zebra = space.
    gs_layout-cwidth_opt = 'X'.
    gs_layout-no_rowmark = 'X'.
     
    "{FOR DISABLE HERE 6ROW IS DISABLED
    sy-tabix = 6.
    ls_edit-fieldname = 'VBELN'.
    ls_edit-style = cl_gui_alv_grid=>mc_style_disabled.
    ls_edit-style2 = space.
    ls_edit-style3 = space.
    ls_edit-style4 = space.
    ls_edit-maxlen = 10.
    INSERT ls_edit INTO TABLE lt_edit.
    ls_edit-fieldname = 'POSNR'.
    ls_edit-style = cl_gui_alv_grid=>mc_style_disabled.
    ls_edit-style2 = space.
    ls_edit-style3 = space.
    ls_edit-style4 = space.
    ls_edit-maxlen = 6.
    INSERT ls_edit INTO TABLE lt_edit.
    INSERT lines of lt_edit INTO TABLE ls_outtab-style.
    MODIFY it_vbap INDEX sy-tabix FROM ls_outtab TRANSPORTING
    style .
    gs_layout-stylefname = 'STYLE'.
    "} UP TO HERE
     
    PERFORM build_fieldcat.
    CALL METHOD g_grid->register_edit_event
    EXPORTING
    i_event_id = cl_gui_alv_grid=>mc_evt_modified.
     
    **Calling the Method for ALV output for First Grid
    CALL METHOD g_grid->set_table_for_first_display
    EXPORTING
    is_layout = gs_layout
    i_save = 'A'
    CHANGING
    it_fieldcatalog = it_fieldcat
    it_outtab = it_vbap[].
     
    ENDFORM. "CREATE_AND_INIT_ALV
    *&---------------------------------------------------------------------*
    *& Form BUILD_FIELDCAT
    *&---------------------------------------------------------------------*
    * text
    *----------------------------------------------------------------------*
    FORM build_fieldcat .
    DATA:l_pos TYPE i VALUE 1.
    CLEAR: l_pos.
    l_pos = l_pos + 1.
    x_fieldcat-seltext = 'VBELN'.
    x_fieldcat-fieldname = 'VBELN'.
    x_fieldcat-tabname = 'ITAB'.
    x_fieldcat-col_pos = l_pos.
    x_fieldcat-edit = 'X'.
    x_fieldcat-outputlen = '10'.
    x_fieldcat-ref_field = 'VBELN'.
    x_fieldcat-ref_table = 'VBAK'.
    APPEND x_fieldcat TO it_fieldcat.
    CLEAR x_fieldcat.
    l_pos = l_pos + 1.
    x_fieldcat-seltext = 'POSNR'.
    x_fieldcat-fieldname = 'POSNR'.
    x_fieldcat-tabname = 'ITAB'.
    x_fieldcat-col_pos = l_pos.
    x_fieldcat-edit = 'X'.
    x_fieldcat-outputlen = '5'.
    APPEND x_fieldcat TO it_fieldcat.
    CLEAR x_fieldcat.
    ENDFORM. " build_fieldcat
    *----------------------------------------------------------------------*
    * MODULE STATUS_0100 OUTPUT
    *----------------------------------------------------------------------*
    *
    *----------------------------------------------------------------------*
    MODULE status_0100 OUTPUT.
    SET PF-STATUS 'MAIN100'.
    SET TITLEBAR 'MAIN100'.
    IF dock IS INITIAL.
    **Initializing the grid
    PERFORM create_and_init_alv.
    ENDIF.
    ENDMODULE. " STATUS_0100 OUTPUT
    *----------------------------------------------------------------------*
    * MODULE USER_COMMAND_0100 INPUT
    *----------------------------------------------------------------------*
    *
    *----------------------------------------------------------------------*
    MODULE user_command_0100 INPUT.
    CASE sy-ucomm.
    WHEN 'BACK'.
    LEAVE TO SCREEN 0.
    ENDCASE.
    ENDMODULE. " USER_COMMAND_0100 INPUT

    Comentario

    Trabajando...
    X