#1
|
||||
|
||||
Alv Jerarquio
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!!
__________________
Saludos Marc Espinosa |
#2
|
||||
|
||||
Hola, tal vez t sirva este programa, puede q estes colocando mal los datos dentro de la funcion
BCALV_TEST_HIERSEQ_LIST
__________________
David Carballido Córdova |
#3
|
||||
|
||||
solucionado , tenia unas cosillas mal, eso de volver de vacaciones es mu malo
SAaludos y Gracias!!
__________________
Saludos Marc Espinosa |
Herramientas | Buscar en Tema |
Desplegado | |
|
|