Wenos dias forer@s!!
estoy haciendo un ALV JERARQUIO, però solo me salen las cabeceras, no me salen los datos de dentro. He exo ALV's, xo es el primer jerarquico
.
No hagais caso del form completa_datos, esta a medias.
Os pego el codigo:
TABLES: proj, prps.
*----------------------------------------------------------------------*
* Definición de Parámetros y Select-Options
*----------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text-002.
PARAMETERS: p_prart TYPE prps-prart, "Clase de proyecto
p_vernr TYPE proj-vernr, "Responsable
p_astnr TYPE proj-astnr. "Solicitante
SELECT-OPTIONS:
s_pspid FOR proj-pspid, "Proyecto
s_posid FOR prps-posid. "Elemento PEP
SELECTION-SCREEN END OF BLOCK b2.
SELECTION-SCREEN BEGIN OF BLOCK b3 WITH FRAME TITLE text-004.
PARAMETERS: p_versn LIKE rpsco_x-versn. "Versión
SELECTION-SCREEN END OF BLOCK b3.
SELECTION-SCREEN END OF BLOCK b1.
*-----------------------------------------------------------------------------*
* Definicion estructuras y tablas necesarias
*-----------------------------------------------------------------------------*
* Type Pool donde vienen definidas todas las estructuras y tablas
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.
*Definimos las tablas con los datos de salida
TYPES: BEGIN OF st_header.
INCLUDE STRUCTURE proj.
TYPES: END OF st_header.
TYPES: BEGIN OF st_item,
l_objeto LIKE PRPS-PSPNR, "objeto
l_NomObj LIKE PRPS-PSPNR, "nombre objeto
l_WLJHR_PL LIKE BPJA-WLJHR, "valor planificado
l_WLJHR_PR LIKE BPJA-WLJHR, "valor presupuesto
l_WLJHR_CM LIKE BPJA-WLJHR, "valor Comprometido
l_WLJHR_RE LIKE BPJA-WLJHR, "valor real
l_WLJHR_PA LIKE BPJA-WLJHR, "valor pagado
l_WLJHR_EJ LIKE BPJA-WLJHR, "valor ejecutado
l_WLJHR_PD LIKE BPJA-WLJHR, "valor presupuesto disponible
l_WLJHR_DE LIKE BPJA-WLJHR. "valor desviación
INCLUDE STRUCTURE prps.
TYPES: END OF st_item.
DATA: gt_header TYPE STANDARD TABLE OF st_header WITH HEADER LINE, "primer nivel jerarquico ALV
gt_item TYPE STANDARD TABLE OF st_item WITH HEADER LINE. "segundo nivel jerarquico ALV
DATA: wa_item TYPE st_item,
wa_header TYPE st_header.
DATA: l_WTG001 TYPE WTGXXX,
l_WTG002 TYPE WTGXXX,
l_WTG003 TYPE WTGXXX,
l_WTG004 TYPE WTGXXX,
l_WTG005 TYPE WTGXXX,
l_WTG006 TYPE WTGXXX.
INITIALIZATION.
g_repid = sy-repid.
START-OF-SELECTION.
* Toma de datos
PERFORM toma_datos.
*Estructura y formato de salida
PERFORM init_fieldcat.
PERFORM init_layout.
PERFORM init_key.
* Mostrar listado
PERFORM listado.
**---------------------------------------------------------------------*
* 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 = 'PSPNR'.
gt_fieldcat-tabname = 'GT_HEADER'.
gt_fieldcat-ref_tabname = 'PROJ'.
APPEND gt_fieldcat.
CLEAR gt_fieldcat.
gt_fieldcat-fieldname = 'PSPHI'.
gt_fieldcat-tabname = 'GT_ITEM'.
gt_fieldcat-ref_tabname = 'PRPS'.
APPEND gt_fieldcat.
CLEAR gt_fieldcat.
gt_fieldcat-fieldname = 'POSID'.
gt_fieldcat-tabname = 'GT_ITEM'.
gt_fieldcat-ref_tabname = 'PRPS'.
APPEND gt_fieldcat.
CLEAR gt_fieldcat.
* gt_fieldcat-fieldname = 'l_WLJHR_PL'.
* gt_fieldcat-tabname = 'GT_ITEM'.
* gt_fieldcat-ref_tabname = 'PRPS'.
* APPEND gt_fieldcat.
* CLEAR gt_fieldcat.
*
* gt_fieldcat-fieldname = 'l_WLJHR_PR'.
* gt_fieldcat-tabname = 'GT_ITEM'.
* gt_fieldcat-ref_tabname = 'PRPS'.
* APPEND gt_fieldcat.
* CLEAR gt_fieldcat.
*
* gt_fieldcat-fieldname = ' l_WLJHR_CM'.
* gt_fieldcat-tabname = 'GT_ITEM'.
* gt_fieldcat-ref_tabname = 'PRPS'.
* APPEND gt_fieldcat.
* CLEAR gt_fieldcat.
*
* gt_fieldcat-fieldname = 'l_WLJHR_RE'.
* gt_fieldcat-tabname = 'GT_ITEM'.
* gt_fieldcat-ref_tabname = 'PRPS'.
* gt_fieldcat-no_out = 'X'.
* APPEND gt_fieldcat.
* CLEAR gt_fieldcat.
*
* gt_fieldcat-fieldname = 'l_WLJHR_PA'.
* gt_fieldcat-tabname = 'GT_ITEM'.
* gt_fieldcat-ref_tabname = 'PRPS'.
* APPEND gt_fieldcat.
* CLEAR gt_fieldcat.
*
* gt_fieldcat-fieldname = 'l_WLJHR_EJ'.
* gt_fieldcat-tabname = 'GT_ITEM'.
* gt_fieldcat-ref_tabname = 'PRPS'.
* APPEND gt_fieldcat.
* CLEAR gt_fieldcat.
*
* gt_fieldcat-fieldname = ' l_WLJHR_PD'.
* gt_fieldcat-tabname = 'GT_ITEM'.
* gt_fieldcat-ref_tabname = 'PRPS'.
* APPEND gt_fieldcat.
* CLEAR gt_fieldcat.
*
* gt_fieldcat-fieldname = ' l_WLJHR_DE'.
* gt_fieldcat-tabname = 'GT_ITEM'.
* gt_fieldcat-ref_tabname = 'PRPS'.
* 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.
*-------------------------------------------------------------------
* Toma de datos de las tablas de Proyectos y PEPS
*-------------------------------------------------------------------
* Si existe PEP y no proyecto
* IF s_pspid IS INITIAL AND s_posid IS NOT INITIAL.
* busco proyectos
* SELECT * FROM proj
* INTO table gt_header
* WHERE SCOPE = p_prart AND "Clase de proyecto
* ERNAM = p_vernr AND "Responsable
* ASTNR = p_astnr AND "Solicitante
* STSPR IN s_posid . "Elemento PEP
* rpsco_x-versn = p_versn. "Versión
* busco PEPS
* SELECT * FROM prps
* INTO CORRESPONDING FIELDS OF TABLE gt_item
* FOR ALL ENTRIES IN gt_header
* WHERE PSPHI = gt_header-PSPNR. "Elemento PEP
* ENDIF.
** Si existe proyecto
* IF s_pspid IS NOT INITIAL.
** busco proyectos
* SELECT * FROM proj
* INTO table gt_header
* WHERE SCOPE = p_prart AND "Clase de proyecto
* ERNAM = p_vernr AND "Responsable
* ASTNR = p_astnr AND "Solicitante
* PSPNR IN s_pspid . "Proyecto
** rpsco_x-versn = p_versn. "Versión
*
** busco PEPS
* SELECT * FROM prps
* INTO CORRESPONDING FIELDS OF TABLE gt_item
* FOR ALL ENTRIES IN gt_header
* WHERE PSPHI = gt_header-PSPNR. "Elemento PEP
* ENDIF.
*
*
** Si no existe proyecto ni PEP
IF s_pspid IS INITIAL AND s_posid IS INITIAL.
* busco proyectos
SELECT * INTO TABLE gt_header
FROM proj
WHERE vernr = p_vernr AND "Responsable
ASTNR = p_astnr. "Solicitante
* rpsco_x-versn = p_versn. "Versión
* busco PEPS
* SELECT * FROM prps
* INTO CORRESPONDING FIELDS OF TABLE gt_item
* FOR ALL ENTRIES IN gt_header
* WHERE PSPHI = gt_header-PSPNR. "Elemento PEP
clear wa_item.
LOOP AT gt_header INTO wa_header.
SELECT SINGLE PSPHI into wa_item-l_objeto
FROM prps
WHERE PSPHI = wa_header-PSPNR AND "Elemento PEP
prart = p_prart. "Clase de proyecto
PERFORM completa_datos.
ENDLOOP.
ENDIF.
ENDFORM. "TOMA_DATOS
*---------------------------------------------------------------------*
* FORM COMPLETA_DATOS *
*---------------------------------------------------------------------*
FORM completa_datos.
*-----------------------------------------------
* Valores Planificado y Presupuesto
*-----------------------------------------------
SELECT SINGLE WLJHR into wa_item-l_WLJHR_PL FROM BPJA
WHERE WRTTP = '01' AND
OBJNR = wa_item-l_objeto.
SELECT SINGLE WLJHR into wa_item-l_WLJHR_PR FROM BPJA
WHERE WRTTP = '41' AND
OBJNR = wa_item-l_objeto.
*-----------------------------------------------
* Valores Comprometido y Real
*-----------------------------------------------
* SELECT SINGLE WTG001 into wa_item-l_WLJHR_CM FROM COSP
SELECT SINGLE WTG001 WTG002 WTG003 WTG004 WTG005 WTG006 into (l_WTG001 ,l_WTG002 ,l_WTG003, l_WTG004, l_WTG005, l_WTG006) FROM COSP
WHERE WRTTP = '21' OR
WRTTP = '22' OR
WRTTP = '23' OR
WRTTP = '24' AND
OBJNR = wa_item-l_objeto.
wa_item-l_WLJHR_CM = l_WTG001 + l_WTG002 + l_WTG003 + l_WTG004 + l_WTG005 + l_WTG006.
SELECT SINGLE WTG001 WTG002 WTG003 WTG004 WTG005 WTG006 into (l_WTG001 ,l_WTG002 ,l_WTG003, l_WTG004, l_WTG005, l_WTG006) FROM COSP
WHERE WRTTP = '04' OR
WRTTP = '11' AND
OBJNR = wa_item-l_objeto.
wa_item-l_WLJHR_RE = l_WTG001 + l_WTG002 + l_WTG003 + l_WTG004 + l_WTG005 + l_WTG006.
*-----------------------------------------------
* Valores Pagados
**-----------------------------------------------
data: l_ebeln type EBELN,
l_bel type CO_BELNR,
l_REFBN type REFBN,
l_belnr type CO_BELNR,
L_DMBTR type DMBTR.
SELECT single EBELN BELNR INTO (l_ebeln, l_belnr) FROM COEP "a,b
WHERE WRTTP = '04' OR WRTTP = '11'.
IF l_ebeln IS INITIAL. "c
SELECT SINGLE REFBN into l_REFBN FROM COBK
WHERE BELNR = l_BELNR.
SELECT SINGLE belnr into l_bel FROM BSEG "e
WHERE BELNR = l_REFBN AND
VORGN = 'RMRP'.
* miro si esta pagado "f
SELECT single belnr DMBTR into (l_bel ,L_DMBTR) FROM BSAK
WHERE BELNR = l_bel.
IF sy-subrc = 0. "ESTA PAGADO
wa_item-l_WLJHR_PA = L_DMBTR.
ENDIF.
ELSE. "d,e
SELECT single belnr DMBTR into (l_bel ,L_DMBTR) FROM BSEG
WHERE EBELN = l_ebeln AND
VORGN = 'RMRP'.
* miro si esta pagado "f
SELECT single belnr into l_bel FROM BSAK
WHERE BELNR = l_bel.
IF sy-subrc = 0. "ESTA PAGADO
wa_item-l_WLJHR_PA = L_DMBTR.
ENDIF.
ENDIF.
wa_item-l_WLJHR_PA = wa_item-l_WLJHR_RE - wa_item-l_WLJHR_PA.
*----------------------------------------------------------
* Valores ejecutado = valor comprometido + real + pagado
*----------------------------------------------------------
wa_item-l_WLJHR_EJ = wa_item-l_WLJHR_CM + wa_item-l_WLJHR_RE + wa_item-l_WLJHR_PA.
*-----------------------------------------------------------
* Valores presupuesto disponible = presupuesto - ejecutado
*-----------------------------------------------------------
wa_item-l_WLJHR_PD = wa_item-l_WLJHR_PR - wa_item-l_WLJHR_EJ.
*-----------------------------------------------
* Valores desviación = planificado - ejecutado
*-----------------------------------------------
wa_item-l_WLJHR_DE = wa_item-l_WLJHR_PL - wa_item-l_WLJHR_EJ.
* Finalmente añadimos a nuestra tabla.
APPEND wa_item to gt_item.
ENDFORM. "completa_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 = 'PSPNR'.
gs_key-item01 = 'PSPHI'.
ENDFORM. " INIT_KEY
Gracias!!
estoy haciendo un ALV JERARQUIO, però solo me salen las cabeceras, no me salen los datos de dentro. He exo ALV's, xo es el primer jerarquico
.No hagais caso del form completa_datos, esta a medias.
Os pego el codigo:
TABLES: proj, prps.
*----------------------------------------------------------------------*
* Definición de Parámetros y Select-Options
*----------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text-002.
PARAMETERS: p_prart TYPE prps-prart, "Clase de proyecto
p_vernr TYPE proj-vernr, "Responsable
p_astnr TYPE proj-astnr. "Solicitante
SELECT-OPTIONS:
s_pspid FOR proj-pspid, "Proyecto
s_posid FOR prps-posid. "Elemento PEP
SELECTION-SCREEN END OF BLOCK b2.
SELECTION-SCREEN BEGIN OF BLOCK b3 WITH FRAME TITLE text-004.
PARAMETERS: p_versn LIKE rpsco_x-versn. "Versión
SELECTION-SCREEN END OF BLOCK b3.
SELECTION-SCREEN END OF BLOCK b1.
*-----------------------------------------------------------------------------*
* Definicion estructuras y tablas necesarias
*-----------------------------------------------------------------------------*
* Type Pool donde vienen definidas todas las estructuras y tablas
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.
*Definimos las tablas con los datos de salida
TYPES: BEGIN OF st_header.
INCLUDE STRUCTURE proj.
TYPES: END OF st_header.
TYPES: BEGIN OF st_item,
l_objeto LIKE PRPS-PSPNR, "objeto
l_NomObj LIKE PRPS-PSPNR, "nombre objeto
l_WLJHR_PL LIKE BPJA-WLJHR, "valor planificado
l_WLJHR_PR LIKE BPJA-WLJHR, "valor presupuesto
l_WLJHR_CM LIKE BPJA-WLJHR, "valor Comprometido
l_WLJHR_RE LIKE BPJA-WLJHR, "valor real
l_WLJHR_PA LIKE BPJA-WLJHR, "valor pagado
l_WLJHR_EJ LIKE BPJA-WLJHR, "valor ejecutado
l_WLJHR_PD LIKE BPJA-WLJHR, "valor presupuesto disponible
l_WLJHR_DE LIKE BPJA-WLJHR. "valor desviación
INCLUDE STRUCTURE prps.
TYPES: END OF st_item.
DATA: gt_header TYPE STANDARD TABLE OF st_header WITH HEADER LINE, "primer nivel jerarquico ALV
gt_item TYPE STANDARD TABLE OF st_item WITH HEADER LINE. "segundo nivel jerarquico ALV
DATA: wa_item TYPE st_item,
wa_header TYPE st_header.
DATA: l_WTG001 TYPE WTGXXX,
l_WTG002 TYPE WTGXXX,
l_WTG003 TYPE WTGXXX,
l_WTG004 TYPE WTGXXX,
l_WTG005 TYPE WTGXXX,
l_WTG006 TYPE WTGXXX.
INITIALIZATION.
g_repid = sy-repid.
START-OF-SELECTION.
* Toma de datos
PERFORM toma_datos.
*Estructura y formato de salida
PERFORM init_fieldcat.
PERFORM init_layout.
PERFORM init_key.
* Mostrar listado
PERFORM listado.
**---------------------------------------------------------------------*
* 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 = 'PSPNR'.
gt_fieldcat-tabname = 'GT_HEADER'.
gt_fieldcat-ref_tabname = 'PROJ'.
APPEND gt_fieldcat.
CLEAR gt_fieldcat.
gt_fieldcat-fieldname = 'PSPHI'.
gt_fieldcat-tabname = 'GT_ITEM'.
gt_fieldcat-ref_tabname = 'PRPS'.
APPEND gt_fieldcat.
CLEAR gt_fieldcat.
gt_fieldcat-fieldname = 'POSID'.
gt_fieldcat-tabname = 'GT_ITEM'.
gt_fieldcat-ref_tabname = 'PRPS'.
APPEND gt_fieldcat.
CLEAR gt_fieldcat.
* gt_fieldcat-fieldname = 'l_WLJHR_PL'.
* gt_fieldcat-tabname = 'GT_ITEM'.
* gt_fieldcat-ref_tabname = 'PRPS'.
* APPEND gt_fieldcat.
* CLEAR gt_fieldcat.
*
* gt_fieldcat-fieldname = 'l_WLJHR_PR'.
* gt_fieldcat-tabname = 'GT_ITEM'.
* gt_fieldcat-ref_tabname = 'PRPS'.
* APPEND gt_fieldcat.
* CLEAR gt_fieldcat.
*
* gt_fieldcat-fieldname = ' l_WLJHR_CM'.
* gt_fieldcat-tabname = 'GT_ITEM'.
* gt_fieldcat-ref_tabname = 'PRPS'.
* APPEND gt_fieldcat.
* CLEAR gt_fieldcat.
*
* gt_fieldcat-fieldname = 'l_WLJHR_RE'.
* gt_fieldcat-tabname = 'GT_ITEM'.
* gt_fieldcat-ref_tabname = 'PRPS'.
* gt_fieldcat-no_out = 'X'.
* APPEND gt_fieldcat.
* CLEAR gt_fieldcat.
*
* gt_fieldcat-fieldname = 'l_WLJHR_PA'.
* gt_fieldcat-tabname = 'GT_ITEM'.
* gt_fieldcat-ref_tabname = 'PRPS'.
* APPEND gt_fieldcat.
* CLEAR gt_fieldcat.
*
* gt_fieldcat-fieldname = 'l_WLJHR_EJ'.
* gt_fieldcat-tabname = 'GT_ITEM'.
* gt_fieldcat-ref_tabname = 'PRPS'.
* APPEND gt_fieldcat.
* CLEAR gt_fieldcat.
*
* gt_fieldcat-fieldname = ' l_WLJHR_PD'.
* gt_fieldcat-tabname = 'GT_ITEM'.
* gt_fieldcat-ref_tabname = 'PRPS'.
* APPEND gt_fieldcat.
* CLEAR gt_fieldcat.
*
* gt_fieldcat-fieldname = ' l_WLJHR_DE'.
* gt_fieldcat-tabname = 'GT_ITEM'.
* gt_fieldcat-ref_tabname = 'PRPS'.
* 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.
*-------------------------------------------------------------------
* Toma de datos de las tablas de Proyectos y PEPS
*-------------------------------------------------------------------
* Si existe PEP y no proyecto
* IF s_pspid IS INITIAL AND s_posid IS NOT INITIAL.
* busco proyectos
* SELECT * FROM proj
* INTO table gt_header
* WHERE SCOPE = p_prart AND "Clase de proyecto
* ERNAM = p_vernr AND "Responsable
* ASTNR = p_astnr AND "Solicitante
* STSPR IN s_posid . "Elemento PEP
* rpsco_x-versn = p_versn. "Versión
* busco PEPS
* SELECT * FROM prps
* INTO CORRESPONDING FIELDS OF TABLE gt_item
* FOR ALL ENTRIES IN gt_header
* WHERE PSPHI = gt_header-PSPNR. "Elemento PEP
* ENDIF.
** Si existe proyecto
* IF s_pspid IS NOT INITIAL.
** busco proyectos
* SELECT * FROM proj
* INTO table gt_header
* WHERE SCOPE = p_prart AND "Clase de proyecto
* ERNAM = p_vernr AND "Responsable
* ASTNR = p_astnr AND "Solicitante
* PSPNR IN s_pspid . "Proyecto
** rpsco_x-versn = p_versn. "Versión
*
** busco PEPS
* SELECT * FROM prps
* INTO CORRESPONDING FIELDS OF TABLE gt_item
* FOR ALL ENTRIES IN gt_header
* WHERE PSPHI = gt_header-PSPNR. "Elemento PEP
* ENDIF.
*
*
** Si no existe proyecto ni PEP
IF s_pspid IS INITIAL AND s_posid IS INITIAL.
* busco proyectos
SELECT * INTO TABLE gt_header
FROM proj
WHERE vernr = p_vernr AND "Responsable
ASTNR = p_astnr. "Solicitante
* rpsco_x-versn = p_versn. "Versión
* busco PEPS
* SELECT * FROM prps
* INTO CORRESPONDING FIELDS OF TABLE gt_item
* FOR ALL ENTRIES IN gt_header
* WHERE PSPHI = gt_header-PSPNR. "Elemento PEP
clear wa_item.
LOOP AT gt_header INTO wa_header.
SELECT SINGLE PSPHI into wa_item-l_objeto
FROM prps
WHERE PSPHI = wa_header-PSPNR AND "Elemento PEP
prart = p_prart. "Clase de proyecto
PERFORM completa_datos.
ENDLOOP.
ENDIF.
ENDFORM. "TOMA_DATOS
*---------------------------------------------------------------------*
* FORM COMPLETA_DATOS *
*---------------------------------------------------------------------*
FORM completa_datos.
*-----------------------------------------------
* Valores Planificado y Presupuesto
*-----------------------------------------------
SELECT SINGLE WLJHR into wa_item-l_WLJHR_PL FROM BPJA
WHERE WRTTP = '01' AND
OBJNR = wa_item-l_objeto.
SELECT SINGLE WLJHR into wa_item-l_WLJHR_PR FROM BPJA
WHERE WRTTP = '41' AND
OBJNR = wa_item-l_objeto.
*-----------------------------------------------
* Valores Comprometido y Real
*-----------------------------------------------
* SELECT SINGLE WTG001 into wa_item-l_WLJHR_CM FROM COSP
SELECT SINGLE WTG001 WTG002 WTG003 WTG004 WTG005 WTG006 into (l_WTG001 ,l_WTG002 ,l_WTG003, l_WTG004, l_WTG005, l_WTG006) FROM COSP
WHERE WRTTP = '21' OR
WRTTP = '22' OR
WRTTP = '23' OR
WRTTP = '24' AND
OBJNR = wa_item-l_objeto.
wa_item-l_WLJHR_CM = l_WTG001 + l_WTG002 + l_WTG003 + l_WTG004 + l_WTG005 + l_WTG006.
SELECT SINGLE WTG001 WTG002 WTG003 WTG004 WTG005 WTG006 into (l_WTG001 ,l_WTG002 ,l_WTG003, l_WTG004, l_WTG005, l_WTG006) FROM COSP
WHERE WRTTP = '04' OR
WRTTP = '11' AND
OBJNR = wa_item-l_objeto.
wa_item-l_WLJHR_RE = l_WTG001 + l_WTG002 + l_WTG003 + l_WTG004 + l_WTG005 + l_WTG006.
*-----------------------------------------------
* Valores Pagados
**-----------------------------------------------
data: l_ebeln type EBELN,
l_bel type CO_BELNR,
l_REFBN type REFBN,
l_belnr type CO_BELNR,
L_DMBTR type DMBTR.
SELECT single EBELN BELNR INTO (l_ebeln, l_belnr) FROM COEP "a,b
WHERE WRTTP = '04' OR WRTTP = '11'.
IF l_ebeln IS INITIAL. "c
SELECT SINGLE REFBN into l_REFBN FROM COBK
WHERE BELNR = l_BELNR.
SELECT SINGLE belnr into l_bel FROM BSEG "e
WHERE BELNR = l_REFBN AND
VORGN = 'RMRP'.
* miro si esta pagado "f
SELECT single belnr DMBTR into (l_bel ,L_DMBTR) FROM BSAK
WHERE BELNR = l_bel.
IF sy-subrc = 0. "ESTA PAGADO
wa_item-l_WLJHR_PA = L_DMBTR.
ENDIF.
ELSE. "d,e
SELECT single belnr DMBTR into (l_bel ,L_DMBTR) FROM BSEG
WHERE EBELN = l_ebeln AND
VORGN = 'RMRP'.
* miro si esta pagado "f
SELECT single belnr into l_bel FROM BSAK
WHERE BELNR = l_bel.
IF sy-subrc = 0. "ESTA PAGADO
wa_item-l_WLJHR_PA = L_DMBTR.
ENDIF.
ENDIF.
wa_item-l_WLJHR_PA = wa_item-l_WLJHR_RE - wa_item-l_WLJHR_PA.
*----------------------------------------------------------
* Valores ejecutado = valor comprometido + real + pagado
*----------------------------------------------------------
wa_item-l_WLJHR_EJ = wa_item-l_WLJHR_CM + wa_item-l_WLJHR_RE + wa_item-l_WLJHR_PA.
*-----------------------------------------------------------
* Valores presupuesto disponible = presupuesto - ejecutado
*-----------------------------------------------------------
wa_item-l_WLJHR_PD = wa_item-l_WLJHR_PR - wa_item-l_WLJHR_EJ.
*-----------------------------------------------
* Valores desviación = planificado - ejecutado
*-----------------------------------------------
wa_item-l_WLJHR_DE = wa_item-l_WLJHR_PL - wa_item-l_WLJHR_EJ.
* Finalmente añadimos a nuestra tabla.
APPEND wa_item to gt_item.
ENDFORM. "completa_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 = 'PSPNR'.
gs_key-item01 = 'PSPHI'.
ENDFORM. " INIT_KEY
Gracias!!

, tenia unas cosillas mal, eso de volver de vacaciones es mu malo
Comentario