#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!!! |
#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 = '&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. |
Herramientas | Buscar en Tema |
Desplegado | |
|
|