PDA

Ver la Versión Completa : Report ALV NO MUESTRA LA DATA_2


dayanareyes
19/02/08, 09:16:05
viene de Report ALV NO MUESTRA LA DATA
*----------------------------------------------------------------------*
***INCLUDE ZPS_LIST_ENTREGA_FOR .
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form datos_proyecto
*&---------------------------------------------------------------------*
FORM datos_proyecto .

project_definition = p_proy.
with_activities = 'X'.
with_milestones = 'X'.

ENDFORM. " datos_proyecto
*&---------------------------------------------------------------------*
*& Form obtener_proyecto
*&---------------------------------------------------------------------*
FORM obtener_proyecto .

CALL FUNCTION 'BAPI_PROJECT_GETINFO'
EXPORTING
project_definition = project_definition
with_activities = with_activities
with_milestones = with_milestones
with_subtree = with_subtree
IMPORTING
e_project_definition = e_project_definition
return = return
TABLES
i_wbs_element_table = i_wbs_element_table
e_wbs_element_table = e_wbs_element_table
e_wbs_milestone_table = e_wbs_milestone_tabl
e_wbs_hierarchie_table = e_wbs_hierarchie_tab
e_activity_table = e_activity_table
e_message_table = e_message_table.

LOOP AT e_activity_table.
AT NEW network.
CALL FUNCTION 'BAPI_NETWORK_GETDETAIL'
EXPORTING
number = e_activity_table-network
IMPORTING
return = return2
TABLES
e_network = e_network2
e_activity = e_activity2
e_relation = e_relation
e_message_table = e_message_table2
e_activity_element = e_activity_element
e_activity_milestone = e_activity_milestone
e_component = e_component2.

APPEND LINES OF e_activity2 TO e_activity.
APPEND LINES OF e_component2 TO e_component.
APPEND LINES OF e_network2 TO e_network.

ENDAT.
ENDLOOP.

IF NOT s_pep IS INITIAL.
* Los Elementos PEP en SAP tienen dos formatos interno y externos.
* Asaciados cada uno de ellos a dos rutinas de conversión diferentes.
* Hemos tenido que usar las dos para poder filtar las opciones de
* selección.
LOOP AT s_pep.
CALL FUNCTION 'CONVERSION_EXIT_ABPSN_OUTPUT'
EXPORTING
input = s_pep-low
IMPORTING
output = s_pep-low.
MODIFY s_pep.
ENDLOOP.

DELETE e_activity WHERE NOT wbs_element IN s_pep.
DELETE e_network WHERE NOT wbs_element IN s_pep.


LOOP AT s_pep.
CALL FUNCTION 'CONVERSION_EXIT_ABPSP_INPUT'
EXPORTING
input = s_pep-low
IMPORTING
output = s_pep-low.
MODIFY s_pep.
ENDLOOP.
DELETE e_component WHERE NOT wbs_element IN s_pep.
ENDIF.
IF NOT s_gra IS INITIAL.
DELETE e_activity WHERE NOT network IN s_gra.
DELETE e_component WHERE NOT network IN s_gra.
DELETE e_network WHERE NOT network IN s_gra.
ENDIF.
IF NOT s_ope IS INITIAL.
DELETE e_activity WHERE NOT activity IN s_ope.
DELETE e_component WHERE NOT activity IN s_ope.
ENDIF.
IF NOT s_mat IS INITIAL.
DELETE e_component WHERE NOT material IN s_mat.
ENDIF.
ENDFORM. " obtener_proyecto
*&---------------------------------------------------------------------*
*& Form entregas_proyecto
*&---------------------------------------------------------------------*
FORM entregas_proyecto .

*CALL FUNCTION 'CONVERSION_EXIT_KONPD_INPUT'
* EXPORTING
* input = p_proy
* IMPORTING
* output = p_proy.
*
* SELECT * FROM psli INTO TABLE t_entregas WHERE pspnr = p_proy
* AND vbeln IN s_vbeln.
*
*
*CALL FUNCTION 'CONVERSION_EXIT_KONPD_OUTPUT'
* EXPORTING
* input = p_proy
* IMPORTING
* output = p_proy.

SELECT * FROM lips INTO CORRESPONDING FIELDS OF TABLE t_entregas
WHERE vbeln IN s_vbeln.



ENDFORM. " entregas_proyecto
*&---------------------------------------------------------------------*
*& Form mostrar_datos
*&---------------------------------------------------------------------*
FORM mostrar_datos .
PERFORM elementos.
ENDFORM. " mostrar_datos
*&---------------------------------------------------------------------*
*& Form elementos
*&---------------------------------------------------------------------*
FORM elementos .
LOOP AT e_wbs_element_table.
PERFORM grafos.
ENDLOOP.
ENDFORM. " elementos
*&---------------------------------------------------------------------*
*& Form grafos
*&---------------------------------------------------------------------*
FORM grafos .
LOOP AT e_activity
WHERE wbs_element = e_wbs_element_table-wbs_element.
* Componentes.
PERFORM componentes .
ENDLOOP.
ENDFORM. " grafos
*&---------------------------------------------------------------------*
*& Form componentes
*&---------------------------------------------------------------------*
FORM componentes .

LOOP AT e_component WHERE network = e_activity-network AND
activity = e_activity-activity
AND deletion_flag = ' '.

* PASAMOS LOS DATOS A LA TABLA INTERNA.
t_tabla-wbs_element = e_wbs_element_table-wbs_element.
t_tabla-network = e_activity-network .
t_tabla-activity = e_activity-activity.
t_tabla-description = e_activity-description.
t_tabla-item_number = e_component-item_number .
t_tabla-matl_desc = e_component-matl_desc.
* ETB 19/05/2006. Añadimos el campo orden de SAP.
t_tabla-ordensap = e_component-sort_string.
* Fin ETB 19/05/2006.

* Tala auxliliar.
MOVE-CORRESPONDING t_tabla TO t_tabla2.

* Buscamos las entregas asociadas a ese componente. Pposteriormente
* busacaremos las UMA asociadas a la posición de la entrega
* correspondiente al componente que estamos tratando.
PERFORM entrega_componente.

ENDLOOP.


ENDFORM. " componentes
*&---------------------------------------------------------------------*
*& Form entrega_componente
*&---------------------------------------------------------------------*
FORM entrega_componente .

REFRESH t_entregas_comp. CLEAR t_entregas_comp.

CHECK NOT t_entregas[] IS INITIAL.

SELECT vbeln posnr lfimg
INTO (t_entregas_comp-vbeln, t_entregas_comp-posnr,
t_entregas_comp-lfimg)
FROM lips
FOR ALL ENTRIES IN t_entregas WHERE vbeln = t_entregas-vbeln
AND rsnum = e_component(10)
AND rspos = e_component+10(5).
APPEND t_entregas_comp. CLEAR t_entregas_comp.
ENDSELECT.

*para controlar el salto de linea en los componetes con mas de una UMA.
CLEAR contador.

LOOP AT t_entregas_comp.
* Obtenemos las UMA's asociadas a ese componente de entrega.
PERFORM obtener_uma USING t_entregas_comp-vbeln
t_entregas_comp-posnr
t_entregas_comp-lfimg.
ENDLOOP.


ENDFORM. " entrega_componente
*&---------------------------------------------------------------------*
*& Form obtener_uma
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_T_ENTREGAS_COMP_VBELN text
* -->P_T_ENTREGAS_COMP_POSNR text
* -->P_T_ENTREGAS_COMP_LFIMG text
*----------------------------------------------------------------------*
FORM obtener_uma USING vbeln LIKE lips-vbeln
posnr LIKE lips-posnr
lfimg LIKE lips-lfimg.
DATA: num_pos TYPE i. "Número de posiciones de la UMA.
DATA: pos_uma(5) TYPE c.
DATA: vbplk_tab_aux LIKE vbplk_tab OCCURS 0 WITH HEADER LINE.
DATA: num(4) TYPE c.


* REFRESH: vbplk_tab, vbplp_tab, vbpls_tab.
* CLEAR: comwa, vbplk_tab, vbplp_tab, vbpls_tab.
*
** Recuperamos las UMA asociadas a la entrega.
* comwa-vbeln = vbeln.
*
* CALL FUNCTION 'SD_PACKING_PRINT_VIEW'
* EXPORTING
* comwa = comwa
* TABLES
* vbplk_tab = vbplk_tab
* vbplp_tab = vbplp_tab
* vbpls_tab = vbpls_tab.
* Clear: vbplk_tab, vbplp_tab, vbpls_tab.


* Obtenemos la UMA en la que se encuentra el componente que estamos
* tratando.
SELECT * FROM zuma
FOR ALL ENTRIES IN vbplk_tab WHERE exidv2 = vbplk_tab-exidv
* and PEP = e_wbs_element_table-wbs_element
AND grafo = e_component-network
AND operacion = e_component-activity
AND item = e_component-item_number
AND material = e_component-material.

READ TABLE vbplk_tab WITH KEY exidv = zuma-exidv2.
CHECK sy-subrc = 0.

IF contador NE 1.
contador = contador + 1.

* PASAMOS LOS DATOS A LA TABLA.
* PASAMOS LOS DATOS A LA TABLA.
PERFORM descripcion_larga USING e_component-material.

t_tabla-vemng = zuma-cantidad.
t_tabla-ntgew = vbplk_tab-ntgew.
t_tabla-brgew = vbplk_tab-brgew.
t_tabla-laeng = vbplk_tab-laeng.
t_tabla-breit = vbplk_tab-breit.
t_tabla-hoehe = vbplk_tab-hoehe.
t_tabla-tavol = vbplk_tab-tavol.
t_tabla-exidv = zuma-exidv2.
t_tabla-num_bultos = 1.
t_tabla-pos_uma = zuma-nbulto.
t_tabla-num_bultos = 1.
t_tabla-ntgew_sup = vbplk_tab-ntgew.
t_tabla-brdew_sup = vbplk_tab-brgew.
t_tabla-tavol_sup = vbplk_tab-tavol.
* MODIFICACION - ANM - 24/09/2007 - rellenar contenedor
* t_tabla-exidv_sup = vbplk_tab_aux-exidv.
t_tabla-exidv_sup = zuma-exidv.
* FIN MODIFICACION - ANM

* MODIFICACION - VMSM - 31/03/2006 - Asignacion de valores Campos de
* unidades.
t_tabla-meabm = vbplk_tab-meabm. " medida
t_tabla-gewei = vbplk_tab-gewei. " peso
t_tabla-voleh = vbplk_tab-voleh. " volumen
t_tabla-geweit = vbplk_tab-gewei. " peso total
t_tabla-voleht = vbplk_tab-voleh. " volument total
* FIN MODIFICACION - VMSM

APPEND t_tabla. CLEAR t_tabla.

* Tabla auxiliar para agrupar UMA.
READ TABLE t_uma WITH KEY exidv = zuma-exidv2.
IF sy-subrc NE 0.
t_tabla2-num_bultos = 1.
t_tabla2-pos_uma = zuma-nbulto.
t_tabla2-num_bultos = 1.
COLLECT t_tabla2.CLEAR t_tabla2.
ELSE.
* t_tabla2-pos_uma = t_uma-item_number.
t_tabla2-inclu = t_uma-inclu.
COLLECT t_tabla2. CLEAR t_tabla2.
ENDIF.

CONCATENATE zuma-item zuma-nbulto INTO t_uma-inclu
SEPARATED BY space.
t_uma-network = e_activity-network .
t_uma-activity = e_activity-activity.
t_uma-exidv = zuma-exidv2.
t_uma-item_number = zuma-item.
APPEND t_uma. CLEAR t_uma.


ELSE.
* PASAMOS LOS DATOS A LA TABLA.
PERFORM descripcion_larga USING e_component-material.
t_tabla-wbs_element = e_wbs_element_table-wbs_element.
t_tabla-network = e_activity-network .
t_tabla-activity = e_activity-activity.
t_tabla-description = e_activity-description.
t_tabla-item_number = e_component-item_number .
t_tabla-matl_desc = e_component-matl_desc.
t_tabla-ordensap = e_component-sort_string.
t_tabla-vemng = zuma-cantidad.
t_tabla-ntgew = vbplk_tab-ntgew.
t_tabla-brgew = vbplk_tab-brgew.
t_tabla-laeng = vbplk_tab-laeng.
t_tabla-breit = vbplk_tab-breit.
t_tabla-hoehe = vbplk_tab-hoehe.
t_tabla-tavol = vbplk_tab-tavol.
t_tabla-exidv = zuma-exidv2.
t_tabla-num_bultos = 1.
t_tabla-pos_uma = zuma-nbulto.
t_tabla-num_bultos = 1.
t_tabla-ntgew_sup = vbplk_tab-ntgew.
t_tabla-brdew_sup = vbplk_tab-brgew.
t_tabla-tavol_sup = vbplk_tab-tavol.
t_tabla-exidv_sup = vbplk_tab_aux-exidv.

* MODIFICACION - VMSM - 31/03/2006 - Asignacion de valores Campos de
* unidades.
t_tabla-meabm = vbplk_tab-meabm. " medida
t_tabla-gewei = vbplk_tab-gewei. " peso
t_tabla-voleh = vbplk_tab-voleh. " volumen
t_tabla-geweit = vbplk_tab-gewei. " peso total
t_tabla-voleht = vbplk_tab-voleh. " volument total
* FIN MODIFICACION - VMSM

APPEND t_tabla. CLEAR t_tabla.


* Tabla auxiliar.
READ TABLE t_uma WITH KEY exidv = zuma-exidv2.
IF sy-subrc NE 0.
t_tabla2-wbs_element = e_wbs_element_table-wbs_element.
t_tabla2-network = e_activity-network .
t_tabla2-activity = e_activity-activity.
t_tabla2-description = e_activity-description.
t_tabla2-item_number = e_component-item_number .
t_tabla2-matl_desc = e_component-matl_desc.
t_tabla2-ordensap = e_component-sort_string.
t_tabla2-num_bultos = 1.
t_tabla2-pos_uma = zuma-nbulto.
t_tabla2-num_bultos = 1.
COLLECT t_tabla2. CLEAR t_tabla2.
ELSE.
t_tabla2-wbs_element = e_wbs_element_table-wbs_element.
t_tabla2-network = e_activity-network .
t_tabla2-activity = e_activity-activity.
t_tabla2-description = e_activity-description.
t_tabla2-item_number = e_component-item_number .
t_tabla2-matl_desc = e_component-matl_desc.
t_tabla2-ordensap = e_component-sort_string.
t_tabla2-inclu = t_uma-inclu.
* t_tabla2-pos_uma = t_uma-item_number.
COLLECT t_tabla2. CLEAR t_tabla2.
ENDIF.

CONCATENATE zuma-item zuma-nbulto INTO t_uma-inclu
SEPARATED BY space.
t_uma-exidv = zuma-exidv2.
t_uma-network = e_activity-network .
t_uma-activity = e_activity-activity.
t_uma-item_number = zuma-item.
APPEND t_uma. CLEAR t_uma.

ENDIF.


ENDSELECT.






ENDFORM. " obtener_uma
*&---------------------------------------------------------------------*
*& Form print
*&---------------------------------------------------------------------*
FORM print .
ls_print-print = ' '. "PRINT IMMEDIATE
ls_print-no_print_selinfos = 'X'. "NO SELECTION INFO
ls_print-no_coverpage = ' '. "NO COVER PAGE
ls_print-no_new_page = ' '.
ls_print-no_print_listinfos = 'X'. "NO PRINT LIST INFO
ls_print-reserve_lines = 0 .
ENDFORM. " print
*&---------------------------------------------------------------------*
*& Form catalogo
*&---------------------------------------------------------------------*
FORM catalogo .
REFRESH gt_fieldcat.

* Tratamiento del catálogo de campos.
PERFORM tratar_catalogo.

* Clasificación y orden de los campos a mostrar.
PERFORM sort.


ENDFORM. " catalogo
*&---------------------------------------------------------------------*
*& Form tratar_catalogo
*&---------------------------------------------------------------------*
FORM tratar_catalogo .

DATA: fieldcat_ln LIKE LINE OF gt_fieldcat.
DATA: pos TYPE i VALUE 1.
* Plantilla para añadir nuevos campos. Posicionarla entre los campos
* que queramos que aparezca la nueva columna.
* CLEAR fieldcat_ln.
* fieldcat_ln-fieldname = ''.
* fieldcat_ln-tabname = 'T_TABLA'.
* fieldcat_ln-seltext_m = ' '.
* fieldcat_ln-no_convext = ' '.
* fieldcat_ln-no_out = ' '.
* fieldcat_ln-decimals_out = 0.
* FIELDCAT_LN-REF_FIELDNAME = ' '.
* FIELDCAT_LN-REF_TABNAME = ' '.
* fieldcat_ln-col_pos = pos.
* APPEND fieldcat_ln TO gt_fieldcat.
* pos = pos + 1.

CLEAR fieldcat_ln.
fieldcat_ln-fieldname = 'WBS_ELEMENT'.
fieldcat_ln-tabname = 'T_TABLA'.
fieldcat_ln-seltext_m = 'PEP'.
fieldcat_ln-no_convext = ' '.
fieldcat_ln-no_out = ' '.
fieldcat_ln-decimals_out = 0.
fieldcat_ln-ref_fieldname = ' '.
fieldcat_ln-ref_tabname = ' '.
fieldcat_ln-col_pos = pos.
APPEND fieldcat_ln TO gt_fieldcat.
pos = pos + 1.

CLEAR fieldcat_ln.
fieldcat_ln-fieldname = 'NETWORK'.
fieldcat_ln-tabname = 'T_TABLA'.
fieldcat_ln-seltext_m = 'Grafo'.
fieldcat_ln-no_convext = ' '.
fieldcat_ln-no_out = ' '.
fieldcat_ln-decimals_out = 0.
fieldcat_ln-ref_fieldname = ' '.
fieldcat_ln-ref_tabname = ' '.
fieldcat_ln-col_pos = pos.
APPEND fieldcat_ln TO gt_fieldcat.
pos = pos + 1.

CLEAR fieldcat_ln.
fieldcat_ln-fieldname = 'ACTIVITY'.
fieldcat_ln-tabname = 'T_TABLA'.
fieldcat_ln-seltext_m = 'Operación'.
fieldcat_ln-no_convext = ' '.
fieldcat_ln-no_out = ' '.
fieldcat_ln-decimals_out = 0.
fieldcat_ln-ref_fieldname = ' '.
fieldcat_ln-ref_tabname = ' '.
fieldcat_ln-col_pos = pos.
APPEND fieldcat_ln TO gt_fieldcat.
pos = pos + 1.

CLEAR fieldcat_ln.
fieldcat_ln-fieldname = 'ITEM_NUMBER'.
fieldcat_ln-tabname = 'T_TABLA'.
fieldcat_ln-seltext_m = 'Número de item'.
fieldcat_ln-no_convext = ' '.
fieldcat_ln-no_out = ' '.
fieldcat_ln-decimals_out = 0.
fieldcat_ln-ref_fieldname = ' '.
fieldcat_ln-ref_tabname = ' '.
fieldcat_ln-col_pos = pos.
APPEND fieldcat_ln TO gt_fieldcat.
pos = pos + 1.


CLEAR fieldcat_ln.
fieldcat_ln-fieldname = 'DESCRIPTION'.
fieldcat_ln-tabname = 'T_TABLA'.
fieldcat_ln-seltext_m = 'Descripción '.
fieldcat_ln-no_convext = ' '.
fieldcat_ln-no_out = ' '.
fieldcat_ln-decimals_out = 0.
fieldcat_ln-ref_fieldname = ' '.
fieldcat_ln-ref_tabname = ' '.
fieldcat_ln-col_pos = pos.
APPEND fieldcat_ln TO gt_fieldcat.
pos = pos + 1.

CLEAR fieldcat_ln.
fieldcat_ln-fieldname = 'VEMNG'.
fieldcat_ln-tabname = 'T_TABLA'.
fieldcat_ln-seltext_m = 'Cantidad ITEM'.
fieldcat_ln-no_convext = ' '.
fieldcat_ln-no_out = ' '.
fieldcat_ln-decimals_out = 0.
fieldcat_ln-ref_fieldname = ' '.
fieldcat_ln-ref_tabname = ' '.
fieldcat_ln-col_pos = pos.
APPEND fieldcat_ln TO gt_fieldcat.
pos = pos + 1.

CLEAR fieldcat_ln.
fieldcat_ln-fieldname = 'MATL_DESC'.
fieldcat_ln-tabname = 'T_TABLA'.
fieldcat_ln-seltext_m = 'Descripción'.
fieldcat_ln-no_convext = ' '.
fieldcat_ln-no_out = 'X'.
fieldcat_ln-decimals_out = 0.
fieldcat_ln-ref_fieldname = ' '.
fieldcat_ln-ref_tabname = ' '.
fieldcat_ln-col_pos = pos.
APPEND fieldcat_ln TO gt_fieldcat.
pos = pos + 1.

CLEAR fieldcat_ln.
fieldcat_ln-fieldname = 'DESC_LARGA'.
fieldcat_ln-tabname = 'T_TABLA'.
fieldcat_ln-seltext_m = 'Descripción'.
fieldcat_ln-no_convext = ' '.
fieldcat_ln-no_out = ' '.
fieldcat_ln-decimals_out = 0.
fieldcat_ln-ref_fieldname = ' '.
fieldcat_ln-ref_tabname = ' '.
fieldcat_ln-col_pos = pos.
APPEND fieldcat_ln TO gt_fieldcat.
pos = pos + 1.

continua en ALV NO MUESTRA LA DATA_3