Mostrar cabecera y detalle en ALV separados?

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • decom4
    Junior Member
    • mar
    • 2

    #1

    Mostrar cabecera y detalle en ALV separados?

    Saludos a todos,
    Por favor necesito ejemplos de codigo abap que me permita mostras una tabla de encabezados en un alv o table control y otra de detalle(posiciones) en otro alv o table control.

    La idea es que cuando elija una posicion de la tabla cabecera me muestre el detalle correspondiente en la otra tabla.

    Gracias de antemano.
  • Fabian leonardo velasquez
    Member
    • sep
    • 62

    #2
    Código

    REPORT zsd_libped_rep_3.

    TYPES: BEGIN OF ty_tablaped,
    land1 LIKE zsd_ped_bloq-land1,
    vkbur LIKE zsd_ped_bloq-vkbur,
    ctlpc LIKE zsd_ped_bloq-ctlpc,
    vbeln LIKE zsd_ped_bloq-vbeln,
    fec_ini LIKE zsd_ped_bloq-fec_ini,
    fec_fin LIKE zsd_ped_bloq-fec_fin,
    nivel_act LIKE zsd_ped_bloq-nivel_act,
    nivel_fin LIKE zsd_ped_bloq-nivel_fin,
    estado LIKE zsd_ped_bloq-estado,
    END OF ty_tablaped.

    TYPES: BEGIN OF ty_pedbloq,
    land1 LIKE zsd_ped_bloq-land1,
    vkbur LIKE zsd_ped_bloq-vkbur,
    rtext LIKE t691t-rtext,
    vbeln LIKE zsd_ped_bloq-vbeln,
    fec_ini LIKE zsd_ped_bloq-fec_ini,
    fec_fin LIKE zsd_ped_bloq-fec_fin,
    nivel_act LIKE zsd_ped_bloq-nivel_act,
    nivel_fin LIKE zsd_ped_bloq-nivel_fin,
    estado TYPE char18,
    END OF ty_pedbloq.

    TYPES: BEGIN OF ty_pedaprob,
    land1 LIKE zsd_ped_aprob-land1,
    vkbur LIKE zsd_ped_aprob-vkbur,
    rtext LIKE t691t-rtext,
    vbeln LIKE zsd_ped_aprob-vbeln,
    nivel LIKE zsd_ped_aprob-nivel,
    ename LIKE zsd_extcup_datosusuario-ename,
    fecha LIKE zsd_ped_aprob-fecha,
    accion TYPE char18,
    END OF ty_pedaprob.

    TYPES: BEGIN OF t_vbak,
    vbeln TYPE vbak-vbeln,
    bukrs_vf TYPE vbak-bukrs_vf,
    END OF t_vbak.
    DATA wa_t001-bukrs TYPE t001-bukrs.
    DATA ti_t691t TYPE TABLE OF t691t.
    DATA wa_t691t TYPE t691t.
    DATA ti_vbak TYPE TABLE OF t_vbak.
    DATA wa_vbak TYPE t_vbak.
    DATA: ti_pedbloq TYPE STANDARD TABLE OF ty_pedbloq WITH HEADER LINE.
    DATA: ti_tablaped TYPE STANDARD TABLE OF ty_tablaped WITH HEADER LINE.
    DATA: ti_pedaprob TYPE STANDARD TABLE OF ty_pedaprob WITH HEADER LINE.
    DATA: ti_datosusuario LIKE TABLE OF zsd_extcup_datosusuario WITH HEADER LINE.
    DATA: ti_aprob LIKE TABLE OF zsd_ped_aprob WITH HEADER LINE.
    DATA: ti_observaciones LIKE TABLE OF zsd_ped_obs WITH HEADER LINE.
    DATA p_file LIKE rlgrap-filename VALUE 'C:\'.

    *Variables del ALV
    DATA: go_cl_alvgrid TYPE REF TO cl_gui_alv_grid,
    go_cl_alvgrid2 TYPE REF TO cl_gui_alv_grid,
    go_cl_alvgrid3 TYPE REF TO cl_gui_alv_grid,
    go_container TYPE REF TO cl_gui_custom_container,
    go_container2 TYPE REF TO cl_gui_custom_container,
    go_container3 TYPE REF TO cl_gui_custom_container,
    gtd_fieldcat TYPE lvc_t_fcat,
    gst_layout TYPE lvc_s_layo.


    ************************************************** ***********
    * Declarar la Clase
    ************************************************** ***********
    CLASS gcl_event DEFINITION.
    PUBLIC SECTION.
    * Metodo double click
    METHODS:
    handle_double_click
    FOR EVENT double_click OF cl_gui_alv_grid
    IMPORTING e_row e_column.
    ENDCLASS. "gcl_event DEFINITION
    * Implementacion de Metodos.
    CLASS gcl_event IMPLEMENTATION.
    * Implementacion del metodo doble click
    METHOD handle_double_click.
    DATA: ltd_read TYPE STANDARD TABLE OF ty_tablaped.
    DATA: lwa_read TYPE ty_pedbloq.
    READ TABLE ti_tablaped INDEX e_row-index INTO lwa_read.

    DATA: ls_tablaped LIKE LINE OF ti_tablaped.

    * read selected row from internal table gt_sflight
    CLEAR: ls_tablaped,
    ls_tablaped,
    ti_aprob.

    READ TABLE ti_tablaped INDEX e_row-index INTO ls_tablaped.

    * §4.At Doubleclick(2): Select booking data
    PERFORM select_table_aprob USING ls_tablaped.
    * IF e_column EQ 'VBELN'.
    CALL SCREEN '0200'.
    * ENDIF.
    ENDMETHOD. "handle_double_click
    ENDCLASS. "gcl_event IMPLEMENTATION
    * Instancia de la Clase gcl_event.
    DATA: go_event TYPE REF TO gcl_event.
    TABLES: zsd_ped_bloq.
    SELECTION-SCREEN BEGIN OF BLOCK a1 WITH FRAME TITLE text-001.
    PARAMETER: pa_bukrs LIKE vbak-bukrs_vf OBLIGATORY.
    SELECT-OPTIONS: pa_land1 FOR zsd_ped_bloq-land1,
    pa_vkbur FOR zsd_ped_bloq-vkbur,
    pa_ctlpc FOR zsd_ped_bloq-ctlpc,
    pa_vbeln FOR zsd_ped_bloq-vbeln,
    pa_fec_i FOR zsd_ped_bloq-fec_ini OBLIGATORY,
    pa_fec_f FOR zsd_ped_bloq-fec_fin,
    pa_n_act FOR zsd_ped_bloq-nivel_act,
    pa_n_fin FOR zsd_ped_bloq-nivel_fin,
    pa_estad FOR zsd_ped_bloq-estado.

    SELECTION-SCREEN END OF BLOCK a1.



    AT SELECTION-SCREEN ON pa_bukrs.
    SELECT SINGLE bukrs INTO wa_t001-bukrs
    FROM t001 WHERE bukrs = pa_bukrs.
    IF sy-subrc <> 0.
    MESSAGE ID 'ZM' TYPE 'E' NUMBER '224' WITH pa_bukrs.
    ELSE.
    AUTHORITY-CHECK OBJECT 'Z_FI_SOC01'
    ID 'BUKRS' FIELD wa_t001-bukrs
    ID 'ACTVT' FIELD '03'.
    IF sy-subrc <> 0.
    MESSAGE e100(zsd) WITH pa_bukrs.
    ENDIF.
    ENDIF.


    START-OF-SELECTION.

    PERFORM get_data.
    CALL SCREEN '0100'.


    END-OF-SELECTION.

    *&---------------------------------------------------------------------*
    *& Form get_data
    *&---------------------------------------------------------------------*
    * text
    *----------------------------------------------------------------------*
    FORM get_data .

    SELECT a~land1 a~vkbur a~ctlpc a~vbeln a~fec_ini a~fec_fin
    a~nivel_act a~nivel_fin a~estado " B~BUKRS_VF
    INTO CORRESPONDING FIELDS OF TABLE ti_tablaped
    FROM ( zsd_ped_bloq AS a INNER JOIN vbak AS b ON b~vbeln = a~vbeln )
    WHERE land1 IN pa_land1
    AND a~vkbur IN pa_vkbur
    AND a~ctlpc IN pa_ctlpc
    AND a~vbeln IN pa_vbeln
    AND a~fec_ini IN pa_fec_i
    AND a~fec_fin IN pa_fec_f
    AND a~nivel_act IN pa_n_act
    AND a~nivel_fin IN pa_n_fin
    AND a~estado IN pa_estad
    AND b~bukrs_vf = pa_bukrs.

    SELECT vbeln bukrs_vf
    INTO TABLE ti_vbak
    FROM vbak FOR ALL ENTRIES IN ti_tablaped
    WHERE vbeln = ti_tablaped-vbeln.


    SELECT *
    INTO TABLE ti_t691t
    FROM t691t FOR ALL ENTRIES IN ti_tablaped
    WHERE spras = sy-langu
    AND ctlpc = ti_tablaped-ctlpc.



    LOOP AT ti_tablaped.

    READ TABLE ti_vbak WITH KEY vbeln = ti_tablaped-vbeln
    INTO wa_vbak.

    READ TABLE ti_t691t WITH KEY ctlpc = ti_tablaped-ctlpc
    kkber = wa_vbak-bukrs_vf
    INTO wa_t691t.

    ti_pedbloq-land1 = ti_tablaped-land1.
    ti_pedbloq-vkbur = ti_tablaped-vkbur.
    ti_pedbloq-rtext = wa_t691t-rtext.
    ti_pedbloq-vbeln = ti_tablaped-vbeln.
    ti_pedbloq-fec_ini = ti_tablaped-fec_ini.
    ti_pedbloq-fec_fin = ti_tablaped-fec_fin.
    ti_pedbloq-nivel_act = ti_tablaped-nivel_act.
    ti_pedbloq-nivel_fin = ti_tablaped-nivel_fin.
    ti_pedbloq-estado = ti_tablaped-estado.
    CASE ti_tablaped-estado.
    WHEN 'A'.
    ti_pedbloq-estado = 'APROBADO'.
    WHEN 'R'.
    ti_pedbloq-estado = 'RECHAZADO'.
    WHEN 'S'.
    ti_pedbloq-estado = 'SIN ASIGNAR'.
    WHEN 'X'.
    ti_pedbloq-estado = 'SIN RANGO'.
    WHEN 'P'.
    ti_pedbloq-estado = 'PENDIENTE'.
    WHEN 'E'.
    ti_pedbloq-estado = 'ERROR'.
    ENDCASE.
    APPEND ti_pedbloq.

    ENDLOOP.
    ENDFORM. " get_data
    *----------------------------------------------------------------------*
    * MODULE crear_alv OUTPUT
    *----------------------------------------------------------------------*
    *
    *----------------------------------------------------------------------*
    MODULE crear_alv OUTPUT.
    PERFORM crear_alvgrid.
    ENDMODULE. " CREAR_ALV OUTPUT

    *&---------------------------------------------------------------------*
    *& Form crear_alvgrid
    *&---------------------------------------------------------------------*
    * text
    *----------------------------------------------------------------------*
    FORM crear_alvgrid .
    IF go_container IS INITIAL.
    CREATE OBJECT go_container
    EXPORTING
    container_name = 'CONTENEDOR'
    EXCEPTIONS
    cntl_error = 1
    cntl_system_error = 2
    create_error = 3
    lifetime_error = 4
    OTHERS = 5.
    IF sy-subrc EQ 0.
    CREATE OBJECT go_cl_alvgrid
    EXPORTING
    i_parent = go_container.
    * Invocar a los metodos del objeto go_cl_alvgrid.
    CALL METHOD go_cl_alvgrid->register_edit_event
    EXPORTING
    i_event_id = cl_gui_alv_grid=>mc_evt_modified.
    CALL METHOD go_cl_alvgrid->register_edit_event
    EXPORTING
    i_event_id = cl_gui_alv_grid=>mc_evt_enter.
    CALL METHOD go_cl_alvgrid->set_ready_for_input
    EXPORTING
    i_ready_for_input = 1.
    PERFORM genera_catalogo CHANGING gtd_fieldcat.

    PERFORM genera_layout CHANGING gst_layout.

    CREATE OBJECT go_event.
    SET HANDLER go_event->handle_double_click FOR go_cl_alvgrid.
    CALL METHOD go_cl_alvgrid->set_table_for_first_display
    EXPORTING
    is_layout = gst_layout
    i_save = 'A'
    CHANGING
    it_outtab = ti_pedbloq[]
    it_fieldcatalog = gtd_fieldcat.

    ENDIF.
    ELSE.
    CALL METHOD go_cl_alvgrid->refresh_table_display.
    ENDIF.
    ENDFORM. " crear_alvgrid

    *&---------------------------------------------------------------------*
    *& Form genera_catalogo
    *&---------------------------------------------------------------------*
    * text
    *----------------------------------------------------------------------*
    * -->PO_FIELDCAT text
    *----------------------------------------------------------------------*
    FORM genera_catalogo CHANGING po_fieldcat TYPE lvc_t_fcat.

    IF sy-dynnr = '0100'.
    PERFORM set_cat USING 'TI_PEDBLOQ' 'LAND1' 'País' 5 space space
    CHANGING po_fieldcat.

    PERFORM set_cat USING 'TI_PEDBLOQ' 'VKBUR' 'Regional' 15 space space
    CHANGING po_fieldcat.

    PERFORM set_cat USING 'TI_PEDBLOQ' 'RTEXT' 'Cl. Riesgo' 15 space space
    CHANGING po_fieldcat.

    PERFORM set_cat USING 'TI_PEDBLOQ' 'VBELN' 'N° PEDIDO' 15 space space
    CHANGING po_fieldcat.

    PERFORM set_cat USING 'TI_PEDBLOQ' 'FEC_INI' 'FEC. Ini' 10 space space
    CHANGING po_fieldcat.

    PERFORM set_cat USING 'TI_PEDBLOQ' 'FEC_FIN' 'FEC. FIN' 10 space space
    CHANGING po_fieldcat.

    PERFORM set_cat USING 'TI_PEDBLOQ' 'NIVEL_ACT' 'N. Act.' 6 space space
    CHANGING po_fieldcat.

    PERFORM set_cat USING 'TI_PEDBLOQ' 'NIVEL_FIN' 'N. Fin.' 6 space space
    CHANGING po_fieldcat.

    PERFORM set_cat USING 'TI_PEDBLOQ' 'ESTADO' 'ESTADO' 18 space space
    CHANGING po_fieldcat.

    ELSEIF sy-dynnr = '0200'.


    PERFORM set_cat USING 'TI_PEDAPROB' 'LAND1' 'País' 5 space space
    CHANGING po_fieldcat.

    PERFORM set_cat USING 'TI_PEDAPROB' 'VKBUR' 'Regional' 15 space space
    CHANGING po_fieldcat.

    PERFORM set_cat USING 'TI_PEDAPROB' 'RTEXT' 'Cl. Riesgo' 15 space space
    CHANGING po_fieldcat.

    PERFORM set_cat USING 'TI_PEDAPROB' 'VBELN' 'N° PEDIDO' 15 space space
    CHANGING po_fieldcat.

    PERFORM set_cat USING 'TI_PEDAPROB' 'ENAME' 'APROBADOR' 50 space space
    CHANGING po_fieldcat.

    PERFORM set_cat USING 'TI_PEDAPROB' 'NIVEL' 'NIVEL' 7 space space
    CHANGING po_fieldcat.

    PERFORM set_cat USING 'TI_PEDAPROB' 'FECHA' 'Fec. Resp' 10 space space
    CHANGING po_fieldcat.

    PERFORM set_cat USING 'TI_PEDAPROB' 'ACCION' 'RESPUESTA' 18 space space
    CHANGING po_fieldcat.




    * ti_pedaprob-ctlpc = ti_aprob-ctlpc.

    ENDIF.
    ENDFORM. " genera_catalogo
    **&-----------------------------------------------------------
    **----------*
    **& Form genera_layout
    **&-----------------------------------------------------------
    *----------*
    ** Metodos que permite determinar los atributos del ALV.
    **------------------------------------------------------------
    *----------*
    ** <--P_GST_LAYOUT text
    **------------------------------------------------------------
    *----------*
    FORM genera_layout CHANGING po_layout TYPE lvc_s_layo.
    po_layout-grid_title = 'REPORTE DE ESTADO DE PEDIDOS'.
    po_layout-no_toolbar = 'X'.
    * po_layout-box_fname = 'CHECK'.
    ENDFORM. " genera_layout
    *&-----------------------------------------------------------
    *----------*
    *& Form set_cat
    *&-----------------------------------------------------------
    *----------*
    * text
    *------------------------------------------------------------
    *----------*
    FORM set_cat USING pi_log
    pi_field
    pi_texto
    pi_long
    pi_edit
    pi_checkbox
    CHANGING po_fieldcat TYPE lvc_t_fcat.
    DATA: lwa_fieldcat TYPE lvc_s_fcat.
    lwa_fieldcat-tabname = pi_log.
    lwa_fieldcat-fieldname = pi_field.
    lwa_fieldcat-edit = pi_edit.
    lwa_fieldcat-checkbox = pi_checkbox.
    lwa_fieldcat-coltext = pi_texto.
    lwa_fieldcat-seltext = pi_texto.
    lwa_fieldcat-reptext = pi_texto.
    lwa_fieldcat-outputlen = pi_long.
    APPEND lwa_fieldcat TO po_fieldcat.
    ENDFORM. " set_cat
    *&-----------------------------------------------------------
    *----------*
    *& Module USER_COMMAND_0100 INPUT
    *&-----------------------------------------------------------
    *----------*
    * text
    *------------------------------------------------------------
    *----------*
    MODULE user_command_0100 INPUT.
    IF sy-ucomm EQ 'CLOSE'.

    LEAVE PROGRAM.
    ENDIF.

    IF sy-ucomm EQ 'EXIT'.
    CALL SELECTION-SCREEN 1000.
    ENDIF.

    IF sy-ucomm EQ 'BACK'.
    LEAVE TO SCREEN 0.
    ENDIF.

    IF sy-ucomm EQ 'SAVE'.

    CALL FUNCTION 'WS_FILENAME_GET'
    EXPORTING
    def_filename = ' '
    def_path = p_file
    mask = '*.*,*.txt,*.txt.'
    mode = 'S'
    title = ' '
    IMPORTING
    filename = p_file
    EXCEPTIONS
    inv_winsys = 1
    no_batch = 2
    selection_cancel = 3
    selection_error = 4
    OTHERS = 5.
    IF sy-subrc NE 0.
    MESSAGE i098(zsd).
    ELSE.

    DATA p1_file TYPE string.
    p1_file = p_file.

    CALL FUNCTION 'GUI_DOWNLOAD'
    EXPORTING
    filename = p1_file
    filetype = 'DAT'
    TABLES
    data_tab = ti_pedbloq
    * FIELDNAMES =
    EXCEPTIONS
    file_write_error = 1
    no_batch = 2
    gui_refuse_filetransfer = 3
    invalid_type = 4
    no_authority = 5
    unknown_error = 6
    header_not_allowed = 7
    separator_not_allowed = 8
    filesize_not_allowed = 9
    header_too_long = 10
    dp_error_create = 11
    dp_error_send = 12
    dp_error_write = 13
    unknown_dp_error = 14
    access_denied = 15
    dp_out_of_memory = 16
    disk_full = 17
    dp_timeout = 18
    file_not_found = 19
    dataprovider_exception = 20
    control_flush_error = 21
    OTHERS = 22
    .
    IF sy-subrc <> 0.
    * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    ENDIF.

    COMMIT WORK.

    ENDIF.



    ENDMODULE. " USER_COMMAND_0100 INPUT
    **&-----------------------------------------------------------
    *----------*
    **& Module STATUS_0100 OUTPUT
    **&-----------------------------------------------------------
    *----------*
    ** text
    **------------------------------------------------------------
    *----------*
    MODULE status_0100 OUTPUT.
    SET PF-STATUS 'STATUS100'.
    * SET TITLEBAR 'xxx'.
    ENDMODULE. " STATUS_0100 OUTPUT
    **&-----------------------------------------------------------
    *----------*
    **& Module USER_COMMAND_0200 INPUT
    **&-----------------------------------------------------------
    *----------*
    ** text
    **------------------------------------------------------------
    *----------*
    MODULE user_command_0200 INPUT.
    IF sy-ucomm EQ 'CLOSE'.
    LEAVE PROGRAM.
    ENDIF.

    IF sy-ucomm EQ 'EXIT'.
    CALL SELECTION-SCREEN 1000.
    ENDIF.

    IF sy-ucomm EQ 'BACK'.
    LEAVE TO SCREEN 0.
    ENDIF.
    ENDMODULE. " USER_COMMAND_0200 INPUT
    " CREAR_ALV INPUT
    *&---------------------------------------------------------------------*
    *& Form SELECT_TABLE_APROB
    *&---------------------------------------------------------------------*
    * text
    *----------------------------------------------------------------------*
    * -->P_LS_TABLAPED text
    * <--P_GT_APROB text
    *----------------------------------------------------------------------*

    FORM select_table_aprob USING p_ls_pedaprob LIKE LINE OF ti_tablaped.
    DATA cant_aprob TYPE n VALUE 0.
    LOOP AT ti_pedaprob.
    DELETE TABLE ti_pedaprob FROM ti_pedaprob.
    ENDLOOP.

    SELECT * FROM zsd_ped_aprob INTO TABLE ti_aprob
    WHERE vbeln = p_ls_pedaprob-vbeln.

    LOOP AT ti_aprob.



    READ TABLE ti_vbak WITH KEY vbeln = ti_aprob-vbeln
    INTO wa_vbak.

    READ TABLE ti_t691t WITH KEY ctlpc = ti_aprob-ctlpc
    kkber = wa_vbak-bukrs_vf
    INTO wa_t691t.



    CALL FUNCTION 'ZSD_EXTRACUPOS_CONS_DATUSUARIO'
    EXPORTING
    uname = ti_aprob-aprob
    IMPORTING
    datosusuario = ti_datosusuario.

    ti_pedaprob-land1 = ti_aprob-land1.
    ti_pedaprob-vkbur = ti_aprob-vkbur.
    ti_pedaprob-rtext = wa_t691t-rtext.
    ti_pedaprob-vbeln = ti_aprob-vbeln.
    ti_pedaprob-nivel = ti_aprob-nivel.
    ti_pedaprob-ename = ti_datosusuario-ename.
    ti_pedaprob-fecha = ti_aprob-fecha.
    * ti_pedaprob-accion = ti_aprob-accion.


    CASE ti_aprob-accion.
    WHEN 'A'.
    ti_pedaprob-accion = 'APROBADO'.
    WHEN 'R'.
    ti_pedaprob-accion = 'RECHAZADO'.
    WHEN 'S'.
    ti_pedaprob-accion = 'SIN ASIGNAR'.
    WHEN 'X'.
    ti_pedaprob-accion = 'SIN RANGO'.
    WHEN 'P'.
    ti_pedaprob-accion = 'PENDIENTE'.
    WHEN 'E'.
    ti_pedaprob-accion = 'ERROR'.
    ENDCASE.


    APPEND ti_pedaprob.
    CLEAR wa_vbak.
    ENDLOOP.


    DESCRIBE TABLE ti_pedaprob LINES cant_aprob.
    IF cant_aprob = 0.
    MESSAGE i086(zsd) WITH p_ls_pedaprob-vbeln.
    CALL SCREEN 100.
    ELSE.
    SELECT * FROM zsd_ped_obs INTO TABLE ti_observaciones
    WHERE vbeln = p_ls_pedaprob-vbeln.
    IF sy-subrc = 0.
    SORT ti_observaciones BY nivel num_lin.
    ENDIF.
    ENDIF.
    ENDFORM. " SELECT_TABLE_APROB

    *&---------------------------------------------------------------------*
    *& Module CREAR_ALV200 OUTPUT
    *&---------------------------------------------------------------------*
    * text
    *----------------------------------------------------------------------*
    MODULE crear_alv200 OUTPUT.
    PERFORM crear_alvgrid200.
    ENDMODULE. " CREAR_ALV200 OUTPUT
    *&---------------------------------------------------------------------*
    *& Form CREAR_ALVGRID200
    *&---------------------------------------------------------------------*
    * text
    *----------------------------------------------------------------------*
    * --> p1 text
    * <-- p2 text
    *----------------------------------------------------------------------*
    FORM crear_alvgrid200 .
    IF go_container2 IS INITIAL.
    CREATE OBJECT go_container2
    EXPORTING
    container_name = 'CONTENEDOR200'
    EXCEPTIONS
    cntl_error = 1
    cntl_system_error = 2
    create_error = 3
    lifetime_error = 4
    OTHERS = 5.

    IF sy-subrc EQ 0.
    CREATE OBJECT go_cl_alvgrid2
    EXPORTING
    i_parent = go_container2.
    * Invocar a los metodos del objeto go_cl_alvgrid.
    CALL METHOD go_cl_alvgrid2->register_edit_event
    EXPORTING
    i_event_id = cl_gui_alv_grid=>mc_evt_modified.
    CALL METHOD go_cl_alvgrid2->register_edit_event
    EXPORTING
    i_event_id = cl_gui_alv_grid=>mc_evt_enter.
    CALL METHOD go_cl_alvgrid2->set_ready_for_input
    EXPORTING
    i_ready_for_input = 1.
    CLEAR gtd_fieldcat.
    CLEAR gst_layout.
    PERFORM genera_catalogo CHANGING gtd_fieldcat.

    PERFORM genera_layout CHANGING gst_layout.

    CREATE OBJECT go_event.
    * SET HANDLER go_event->handle_double_click FOR go_cl_alvgrid.
    CALL METHOD go_cl_alvgrid2->set_table_for_first_display
    EXPORTING
    is_layout = gst_layout
    i_save = 'A'
    CHANGING
    it_outtab = ti_pedaprob[]
    it_fieldcatalog = gtd_fieldcat.
    ENDIF.
    ELSE.
    CALL METHOD go_cl_alvgrid2->refresh_table_display.
    ENDIF.

    IF go_container3 IS INITIAL.
    CREATE OBJECT go_container3
    EXPORTING
    container_name = 'OBSER_PED'
    EXCEPTIONS
    cntl_error = 1
    cntl_system_error = 2
    create_error = 3
    lifetime_error = 4
    OTHERS = 5.

    IF sy-subrc EQ 0.
    CREATE OBJECT go_cl_alvgrid3
    EXPORTING
    i_parent = go_container3.
    * Invocar a los metodos del objeto go_cl_alvgrid.
    CALL METHOD go_cl_alvgrid3->register_edit_event
    EXPORTING
    i_event_id = cl_gui_alv_grid=>mc_evt_modified.
    CALL METHOD go_cl_alvgrid3->register_edit_event
    EXPORTING
    i_event_id = cl_gui_alv_grid=>mc_evt_enter.
    CALL METHOD go_cl_alvgrid3->set_ready_for_input
    EXPORTING
    i_ready_for_input = 1.
    CLEAR gtd_fieldcat.
    CLEAR gst_layout.
    PERFORM genera_catalogo_obser CHANGING gtd_fieldcat.

    PERFORM genera_layout_obs CHANGING gst_layout.

    CREATE OBJECT go_event.
    * SET HANDLER go_event->handle_double_click FOR go_cl_alvgrid.
    CALL METHOD go_cl_alvgrid3->set_table_for_first_display
    EXPORTING
    is_layout = gst_layout
    i_save = 'A'
    CHANGING
    it_outtab = ti_observaciones[]
    it_fieldcatalog = gtd_fieldcat.

    ENDIF.
    ELSE.
    CALL METHOD go_cl_alvgrid3->refresh_table_display.
    ENDIF.
    ENDFORM. " CREAR_ALVGRID200
    *&---------------------------------------------------------------------*
    *& Module STATUS_0200 OUTPUT
    *&---------------------------------------------------------------------*
    * text
    *----------------------------------------------------------------------*
    MODULE status_0200 OUTPUT.
    SET PF-STATUS 'STATUS100'.
    * SET TITLEBAR 'xxx'.

    ENDMODULE. " STATUS_0200 OUTPUT
    *&---------------------------------------------------------------------*
    *& Form GENERA_CATALOGO_OBSER
    *&---------------------------------------------------------------------*
    * text
    *----------------------------------------------------------------------*
    * <--P_GTD_FIELDCAT text
    *----------------------------------------------------------------------*
    FORM genera_catalogo_obser CHANGING p_gtd_fieldcat.

    PERFORM set_cat USING 'TI_OBSERVACIONES' 'LAND1' 'PAÍS' 5 space space
    CHANGING gtd_fieldcat.

    PERFORM set_cat USING 'TI_OBSERVACIONES' 'NIVEL' 'NIVEL' 6 space space
    CHANGING gtd_fieldcat.


    PERFORM set_cat USING 'TI_OBSERVACIONES' 'VBELN' 'PEDIDO' 15 space space
    CHANGING gtd_fieldcat.


    PERFORM set_cat USING 'TI_OBSERVACIONES' 'TEXTO' 'OBSERVACIÓN' 250 space space
    CHANGING gtd_fieldcat.
    ENDFORM. " GENERA_CATALOGO_OBSER

    *&---------------------------------------------------------------------*
    *& Form genera_layout_OBS
    *&---------------------------------------------------------------------*
    * text
    *----------------------------------------------------------------------*
    * -->PO_LAYOUT text
    *----------------------------------------------------------------------*
    FORM genera_layout_obs CHANGING po_layout TYPE lvc_s_layo.
    po_layout-grid_title = 'REPORTE DE OBSERVACIONES'.
    po_layout-no_toolbar = 'X'.
    * po_layout-box_fname = 'CHECK'.
    ENDFORM. " genera_layout

    Con este programa el detalle le carga en un segundo layout pero es cuestion de cambiar el dynpro al que se llama y le debe funcionar.
    Cordialmente
    Fabián Leonardo Velásquez P.
    Consultor SAP ABAP
    Bogota - Colombia

    Comentario

    Trabajando...