MUNDOSAP

MUNDOSAP (foro/index.php)
-   Programación ABAP IV (foro/forumdisplay.php?f=4)
-   -   Ejemplo de ALV list con cabecera (foro/showthread.php?t=5342)

angus174 10/05/07 15:43:35

Ejemplo de ALV list con cabecera
 
Hola necesito hacer un ALV list que tiene varias cabeceras + info. ej.
cab 1 tendria datos de region 1
det 1 documentos y nombres de clientes de esa region

cab2 reg 2
det 2 datos de doc y region 2

y asi por varias regiones...

se puede hacer con el REUSE_ALV_LIST_DISPLAY o hay que usar
alguno otra función para ALV.
Alguien tendria algún ejemplo de como podria hacerlo?
desde ya muchas gracias.

Claudia Valdespino 10/05/07 19:50:24

Hola, lo que quieres hacer es un ALV jerárquico y para ello usa la siguiente función: REUSE_ALV_HIERSEQ_LIST_DISPLAY. Te mando un ejemplito para que te guies... es muy sencillo, lo único nuevo es el INIT_SORT y el INIT_KEY en donde indicas cuales son la claves de tu cabecera y el detalle para que se puedan relacionar :cool:

REPORT Z_PRT_ERC_LOGLIQ.

TABLES: ZTERC_LOGLIQ, T001.
TYPE-POOLS: SLIS.

* PARAMETROS DE SELECCION
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS:
S_BUKRS FOR ZTERC_LOGLIQ-BUKRS OBLIGATORY.

PARAMETERS:
P_GJAHR LIKE ZTERC_LOGLIQ-GJAHR OBLIGATORY.

SELECT-OPTIONS:
S_LBELN FOR ZTERC_LOGLIQ-NROLIQ,
S_MABER FOR ZTERC_LOGLIQ-AREAG,
S_ERSDA FOR ZTERC_LOGLIQ-ERSDA,
S_STATS FOR ZTERC_LOGLIQ-STATS.
SELECTION-SCREEN END OF BLOCK B1.

* ESTRUCTURA DEL ALV
DATA: GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE,
GT_SORT TYPE SLIS_T_SORTINFO_ALV WITH HEADER LINE,
GS_LAYOUT TYPE SLIS_LAYOUT_ALV,
GS_KEY TYPE SLIS_KEYINFO_ALV,
G_REPID LIKE SY-REPID,
GT_EVENTS TYPE SLIS_T_EVENT.

* TABLA INTERNA PARA EL CATALOGO DE DATOS
DATA: BEGIN OF T_ZTERC_LOGLIQ OCCURS 0.
INCLUDE STRUCTURE ZTERC_LOGLIQ.
DATA: END OF T_ZTERC_LOGLIQ.

DATA: BEGIN OF T_HEADER OCCURS 0,
IND,
BUKRS LIKE ZTERC_LOGLIQ-BUKRS,
AREAG LIKE ZTERC_LOGLIQ-AREAG,
END OF T_HEADER.

* INICIO
START-OF-SELECTION.
G_REPID = SY-REPID.
PERFORM GET_DATA.
PERFORM INIT_FIELDCAT.
PERFORM INIT_SORT.
PERFORM INIT_LAYOUT.
PERFORM INIT_KEY.
PERFORM INIT_EVENT.
PERFORM REPORTE.

*&---------------------------------------------------------------------*
*& Form GET_DATA
*&---------------------------------------------------------------------*
FORM GET_DATA .
SELECT * INTO CORRESPONDING FIELDS OF TABLE T_ZTERC_LOGLIQ
FROM ZTERC_LOGLIQ
WHERE BUKRS IN S_BUKRS AND
GJAHR = P_GJAHR AND
NROLIQ IN S_LBELN AND
AREAG IN S_MABER AND
ERSDA IN S_ERSDA AND
STATS IN S_STATS.

LOOP AT T_ZTERC_LOGLIQ.
MOVE-CORRESPONDING T_ZTERC_LOGLIQ TO T_HEADER.
COLLECT T_HEADER.
ENDLOOP.
ENDFORM. " GET_DATA

*&---------------------------------------------------------------------*
*& Form INIT_FIELDCAT
*&---------------------------------------------------------------------*
FORM INIT_FIELDCAT .
CLEAR GT_FIELDCAT.
REFRESH GT_FIELDCAT.

* CABECERA*
GT_FIELDCAT-FIELDNAME = 'BUKRS'.
GT_FIELDCAT-REF_TABNAME = 'ZTERC_LOGLIQ'.
GT_FIELDCAT-TABNAME = 'T_HEADER'.
GT_FIELDCAT-SELTEXT_L = 'Sociedad'.
GT_FIELDCAT-OUTPUTLEN = '9'.
APPEND GT_FIELDCAT.

GT_FIELDCAT-FIELDNAME = 'AREAG'.
GT_FIELDCAT-REF_TABNAME = 'ZTERC_LOGLIQ'.
GT_FIELDCAT-TABNAME = 'T_HEADER'.
GT_FIELDCAT-SELTEXT_L = 'Area Gestora'.
GT_FIELDCAT-OUTPUTLEN = '13'.
APPEND GT_FIELDCAT.

* DETALLE*
GT_FIELDCAT-FIELDNAME = 'NROLIQ'.
GT_FIELDCAT-REF_TABNAME = 'ZTERC_LOGLIQ'.
GT_FIELDCAT-TABNAME = 'T_ZTERC_LOGLIQ'.
GT_FIELDCAT-SELTEXT_L = 'Liquidación'.
GT_FIELDCAT-OUTPUTLEN = '12'.
APPEND GT_FIELDCAT.

GT_FIELDCAT-FIELDNAME = 'GJAHR'.
GT_FIELDCAT-REF_TABNAME = 'ZTERC_LOGLIQ'.
GT_FIELDCAT-TABNAME = 'T_ZTERC_LOGLIQ'.
GT_FIELDCAT-SELTEXT_L = 'Ejercicio'.
GT_FIELDCAT-OUTPUTLEN = '10'.
APPEND GT_FIELDCAT.

GT_FIELDCAT-FIELDNAME = 'ERSDA'.
GT_FIELDCAT-REF_TABNAME = 'ZTERC_LOGLIQ'.
GT_FIELDCAT-TABNAME = 'T_ZTERC_LOGLIQ'.
GT_FIELDCAT-SELTEXT_L = 'Fec. Registro'.
GT_FIELDCAT-OUTPUTLEN = '14'.
APPEND GT_FIELDCAT.

GT_FIELDCAT-FIELDNAME = 'UDFTIME'.
GT_FIELDCAT-REF_TABNAME = 'ZTERC_LOGLIQ'.
GT_FIELDCAT-TABNAME = 'T_ZTERC_LOGLIQ'.
GT_FIELDCAT-SELTEXT_L = 'Hra. Registro'.
GT_FIELDCAT-OUTPUTLEN = '14'.
APPEND GT_FIELDCAT.

GT_FIELDCAT-FIELDNAME = 'ERNAM'.
GT_FIELDCAT-REF_TABNAME = 'ZTERC_LOGLIQ'.
GT_FIELDCAT-TABNAME = 'T_ZTERC_LOGLIQ'.
GT_FIELDCAT-SELTEXT_L = 'Usuario obs.'.
GT_FIELDCAT-OUTPUTLEN = '20'.
APPEND GT_FIELDCAT.

GT_FIELDCAT-FIELDNAME = 'STATS'.
GT_FIELDCAT-REF_TABNAME = 'ZTERC_LOGLIQ'.
GT_FIELDCAT-TABNAME = 'T_ZTERC_LOGLIQ'.
GT_FIELDCAT-SELTEXT_L = 'Estado'.
GT_FIELDCAT-OUTPUTLEN = '7'.
APPEND GT_FIELDCAT.

GT_FIELDCAT-FIELDNAME = 'OBSER'.
GT_FIELDCAT-REF_TABNAME = 'ZTERC_LOGLIQ'.
GT_FIELDCAT-TABNAME = 'T_ZTERC_LOGLIQ'.
GT_FIELDCAT-SELTEXT_L = 'Observación'.
GT_FIELDCAT-OUTPUTLEN = '255'.
APPEND GT_FIELDCAT.
ENDFORM. " INIT_FIELDCAT

*&---------------------------------------------------------------------*
*& Form INIT_SORT
*&---------------------------------------------------------------------*
FORM INIT_SORT .
CLEAR GT_SORT.
GT_SORT-TABNAME = 'T_HEADER'.
GT_SORT-FIELDNAME = 'BUKRS'.
GT_SORT-UP = 'X'.
GT_SORT-SPOS = 1.
APPEND GT_SORT.

CLEAR GT_SORT.
GT_SORT-TABNAME = 'T_HEADER'.
GT_SORT-FIELDNAME = 'AREAG'.
GT_SORT-UP = 'X'.
GT_SORT-SPOS = 2.
APPEND GT_SORT.

CLEAR GT_SORT.
GT_SORT-TABNAME = 'T_ZTERC_LOGLIQ'.
GT_SORT-FIELDNAME = 'BUKRS'.
GT_SORT-UP = 'X'.
GT_SORT-SPOS = 1.
APPEND GT_SORT.

CLEAR GT_SORT.
GT_SORT-TABNAME = 'T_ZTERC_LOGLIQ'.
GT_SORT-FIELDNAME = 'AREAG'.
GT_SORT-UP = 'X'.
GT_SORT-SPOS = 2.
APPEND GT_SORT.

ENDFORM. " INIT_SORT

*&---------------------------------------------------------------------*
*& Form INIT_LAYOUT
*&---------------------------------------------------------------------*
FORM INIT_LAYOUT .
GS_LAYOUT-ZEBRA = 'X'.
GS_LAYOUT-EXPAND_FIELDNAME = 'IND'.
GS_LAYOUT-EXPAND_ALL = 'X'.
ENDFORM. " INIT_LAYOUT

*&---------------------------------------------------------------------*
*& Form INIT_KEY
*&---------------------------------------------------------------------*
FORM INIT_KEY .
GS_KEY-HEADER01 = 'BUKRS'.
GS_KEY-ITEM01 = 'BUKRS'.
GS_KEY-HEADER02 = 'AREAG'.
GS_KEY-ITEM02 = 'AREAG'.
ENDFORM. " INIT_KEY

*&---------------------------------------------------------------------*
*& Form INIT_EVENT
*&---------------------------------------------------------------------*
FORM INIT_EVENT .
DATA: C_FORMNAME_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE 'TOP_PAGE',
EVENT TYPE SLIS_ALV_EVENT.

EVENT-NAME = SLIS_EV_TOP_OF_PAGE.
EVENT-FORM = 'TOP_PAGE'.
APPEND EVENT TO GT_EVENTS.
ENDFORM. " INIT_EVENT

*&---------------------------------------------------------------------*
*& Form REPORTE
*&---------------------------------------------------------------------*
FORM REPORTE .
* CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
* CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = G_REPID
IS_LAYOUT = GS_LAYOUT
IT_FIELDCAT = GT_FIELDCAT[]
IT_SORT = GT_SORT[]
I_TABNAME_HEADER = 'T_HEADER'
I_TABNAME_ITEM = 'T_ZTERC_LOGLIQ'
IS_KEYINFO = GS_KEY
IT_EVENTS = GT_EVENTS
TABLES
T_OUTTAB_HEADER = T_HEADER
T_OUTTAB_ITEM = T_ZTERC_LOGLIQ
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2.
ENDFORM. " REPORTE

*---------------------------------------------------------------------*
* FORM TOP_PAGE *
*---------------------------------------------------------------------*
FORM TOP_PAGE.
WRITE:/ TEXT-006, SY-REPID. "Reporte
WRITE:/ TEXT-007. "Descripción

WRITE:/115(8) TEXT-003, 124(10) SY-DATUM. "Fecha
WRITE:/115(8) TEXT-004, 124(8) SY-UZEIT. "Hora
WRITE:/115(8) TEXT-005, 124(1) SY-PAGNO. "Pagina

WRITE:/1(150) TEXT-002 CENTERED. "HISTORIAL DE LIQUIDACIONES
SKIP 1.
ENDFORM.

Suerte!!

architek 01/04/08 19:03:17

Me sirve de mucha ayuda Claudia Valdespino ahorita estoy buscando ejemplos sobre ALV jerarquicos, para tener una base o hacer uno estandar para nada mas modificarle ciertas cosas. Gracias.

DavidXD_XD 01/04/08 19:17:57

Hola, aqui tienes mas ejemplos de ALV Jerarquico

BCALV_TEST_HIERSEQ_LIST
BCALV_TEST_HIERSEQ_LIST_EVENTS

Espero te sirva .... :D

DavidXD_XD 01/04/08 19:39:15

1 Adjunto(s)
Aqui encontre un reporte muy bueno en el que la salida es como tu estas buscando, mas de 1 cabecera .... el reporte es relacionado a activos fijos, seria cuestion de darle una debuggeada al report: RAABGA_ALV01, espero te ayude .... :D

architek 01/04/08 19:55:16

gracias DavidXD_XD me sirven de mucha ayuda. los checare y vere que tal. de nuevo gracias.:)

i_arnaiz 02/04/08 17:28:49

Te recomiendo que eches un ojo a esta entrada:



Es un include con el que podreis hacer rapidamente ALV GRID, ALV LIST y ALV Jerarquico de un modo muy sencillo.

Un saludo.

Nacho


Husos Horarios son GMT. La hora en este momento es 19:01:59.

www.mundosap.com 2006 - Spain
software crm, crm on demand, software call center, crm act, crm solutions, crm gratis, crm web