Corte de Control en ALV Jerárquico

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • gustavo_mareco
    Junior Member
    • dic
    • 3

    #1

    Corte de Control en ALV Jerárquico

    Buenas gente, alguien habrá hecho o escuchado acerca de un corte de control(por ejemplo por Sociedad), en un ALV Jerárquico?

    Muchas gracias!!!
  • sconoredhot
    Senior Member
    • feb
    • 341

    #2
    Ejemplo ALV jerárquico.


    REPORT zalv_jerarquico.

    TYPE-POOLS: slis.
    * Catálogo de campos: contiene la descripción de los campos de salida
    DATA: gt_fieldcat TYPE slis_t_fieldcat_alv WITH HEADER LINE,
    * Especificaciones de la disposición de la lista: descripción de la
    * estructura de salida
    gs_layout TYPE slis_layout_alv,
    * Relacion entre los datos de cabecera y posicion
    gs_key TYPE slis_keyinfo_alv,
    * Nombre del programa
    g_repid LIKE sy-repid.

    *<-- § Paso 2. Definimos las tablas con los datos de salida
    TYPES: BEGIN OF st_header.
    INCLUDE STRUCTURE ekko.
    TYPES: END OF st_header.
    TYPES: BEGIN OF st_item.
    INCLUDE STRUCTURE ekpo.
    TYPES: END OF st_item.
    DATA: gt_header TYPE STANDARD TABLE OF st_header WITH HEADER LINE,
    gt_item TYPE STANDARD TABLE OF st_item WITH HEADER LINE.
    INITIALIZATION.
    g_repid = sy-repid.
    START-OF-SELECTION.
    *<-- § Paso 3. Toma de datos
    PERFORM toma_datos.
    *<-- § Paso 4. Estructura y formato de salida
    PERFORM init_fieldcat.
    PERFORM init_layout.
    PERFORM init_key.
    *<-- § Paso 5. Mostrar listado
    PERFORM listado.
    *&&-----------------------------------------------------------------&&*
    * SUBRUTINAS DEL PROGRAMA *
    *&&-----------------------------------------------------------------&&*
    *---------------------------------------------------------------------*
    * FORM INIT_FIELDCAT *
    *---------------------------------------------------------------------*
    FORM init_fieldcat.
    * Mediante esta tabla vamos a definir los campos que queremos mostrar
    * en el listado de salida.

    gt_fieldcat-fieldname = 'EBELN'.
    gt_fieldcat-tabname = 'GT_HEADER'.
    gt_fieldcat-ref_tabname = 'EKKO'.
    APPEND gt_fieldcat. CLEAR gt_fieldcat.
    gt_fieldcat-fieldname = 'EBELN'.
    gt_fieldcat-tabname = 'GT_ITEM'.
    gt_fieldcat-ref_tabname = 'EKPO'.
    gt_fieldcat-no_out = 'X'.
    APPEND gt_fieldcat. CLEAR gt_fieldcat.
    gt_fieldcat-fieldname = 'EBELP'.
    gt_fieldcat-tabname = 'GT_ITEM'.
    gt_fieldcat-ref_tabname = 'EKPO'.
    APPEND gt_fieldcat. CLEAR gt_fieldcat.
    gt_fieldcat-fieldname = 'MATNR'.
    gt_fieldcat-tabname = 'GT_ITEM'.
    gt_fieldcat-ref_tabname = 'EKPO'.
    APPEND gt_fieldcat. CLEAR gt_fieldcat.
    gt_fieldcat-fieldname = 'WERKS'.
    gt_fieldcat-tabname = 'GT_ITEM'.
    gt_fieldcat-ref_tabname = 'EKPO'.
    APPEND gt_fieldcat. CLEAR gt_fieldcat.
    gt_fieldcat-fieldname = 'MENGE'.
    gt_fieldcat-tabname = 'GT_ITEM'.
    gt_fieldcat-ref_tabname = 'EKPO'.
    APPEND gt_fieldcat. CLEAR gt_fieldcat.
    gt_fieldcat-fieldname = 'MEINS'.
    gt_fieldcat-tabname = 'GT_ITEM'.
    gt_fieldcat-ref_tabname = 'EKPO'.
    APPEND gt_fieldcat. CLEAR gt_fieldcat.
    ENDFORM.
    *---------------------------------------------------------------------*
    * FORM INIT_LAYOUT *
    *---------------------------------------------------------------------*
    FORM init_layout.

    * Mediante esta estructura podemos definir el formato de salida
    gs_layout-zebra = 'X'.
    gs_layout-f2code = '&amp;ETA'.
    gs_layout-detail_popup = 'X'.
    ENDFORM.
    *---------------------------------------------------------------------*
    * FORM TOMA_DATOS *
    *---------------------------------------------------------------------*
    FORM toma_datos.
    * Los datos deben guardarse en la tabla interna de salida
    SELECT * FROM ekko
    UP TO 100 ROWS
    INTO TABLE gt_header.

    SELECT * FROM ekpo
    INTO TABLE gt_item
    FOR ALL ENTRIES IN gt_header
    WHERE ebeln = gt_header-ebeln.
    ENDFORM. " TOMA_DATOS
    *---------------------------------------------------------------------*
    * FORM LISTADO *
    *---------------------------------------------------------------------*
    FORM listado.
    CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
    EXPORTING
    * I_INTERFACE_CHECK = ' '
    i_callback_program = g_repid
    * I_CALLBACK_PF_STATUS_SET = ' '
    * I_CALLBACK_USER_COMMAND = ' '
    is_layout = gs_layout
    it_fieldcat = gt_fieldcat[]
    * IT_EXCLUDING =
    * IT_SPECIAL_GROUPS =
    * IT_SORT =
    * IT_FILTER =
    * IS_SEL_HIDE =
    * I_SCREEN_START_COLUMN = 0
    * I_SCREEN_START_LINE = 0
    * I_SCREEN_END_COLUMN = 0
    * I_SCREEN_END_LINE = 0
    * I_DEFAULT = 'X'
    * I_SAVE = ' '
    * IS_VARIANT =
    * IT_EVENTS =
    * IT_EVENT_EXIT =
    i_tabname_header = 'GT_HEADER'
    i_tabname_item = 'GT_ITEM'
    * I_STRUCTURE_NAME_HEADER =
    * I_STRUCTURE_NAME_ITEM =
    is_keyinfo = gs_key
    * IS_PRINT =
    * IS_REPREP_ID =
    * I_BUFFER_ACTIVE =
    * I_BYPASSING_BUFFER =
    * IMPORTING
    * E_EXIT_CAUSED_BY_CALLER =
    * ES_EXIT_CAUSED_BY_USER =
    TABLES
    t_outtab_header = gt_header[]
    t_outtab_item = gt_item[]
    * EXCEPTIONS
    * PROGRAM_ERROR = 1
    * OTHERS = 2
    .
    IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
    WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
    ENDIF.
    ENDFORM. " LISTADO
    *---------------------------------------------------------------------*
    * FORM INIT_KEY *
    *---------------------------------------------------------------------*
    FORM init_key.
    * Relacion entre los campos de cabecera y los de posicion
    gs_key-header01 = 'EBELN'.
    gs_key-item01 = 'EBELN'.

    ENDFORM. " INIT_KEY

    Cortes de control:

    Ahora solamente debes agregar los cortes de control al ALV.
    AT FIRST Realiza las instrucciones para las primeras entradas de la tabla. ENDAT.
    AT NEW Realiza las instrucciones para cada inicio de nivel de ruptura.
    AT LAST Realiza las instrucciones para la ultima entrada de una tabla.
    AT END OF Realiza las instrucciones para cada final de nivel de ruptura.
    Sebas

    Desarrollador ABAP.

    Comentario

    Trabajando...