En esta consulta:
SELECT vbak~vdatu
vbap~vbeln
vbap~werks
VBAP~MATNR "A estos materiales se les consultarán las listas de material
INTO TABLE gt_result
FROM vbap INNER JOIN vbak ON vbap~vbeln = vbak~vbeln
WHERE vdatu IN so_vdatu.
debes adicionar el material.
Luego podrías consultar la tabla MAST:
SELECT matnr
werks
stlan
stlnr
INTO TABLE lt_mast
FROM mast
FOR ALL ENTRIES IN gt_result
WHERE matnr EQ gt_result-matnr
AND werks EQ gt_result-werks.
Finalmente vas a la STPO para obtener los componentes de los materiales de VBAP.
SELECT stlnr
idnrk
meins
menge
INTO TABLE lt_stpo
FROM stpo
WHERE stlnr EQ lt_mast-stlnr. "STLNR es el ID de la lista de material.
Luego podrías recorrer la tabla gt_result e ir consultando con cada material/centro sus respectivos componentes.
LOOP AT GT_RESULT INTO LWA_RESULT.
READ TABLE LT_MAST INTO LWA_MAST
WITH KEY matnr = LWA_RESULT-matnr
werks = LWA_RESULT-werks.
IF sy-subrc EQ 0.
LOOP AT LT_STPO INTO LWA_STPO
WHERE stlnr EQ LWA_MAST-STLNR.
MOVE-CORRESPONDING LWA_RESULT TO LWA_IMPRIME_REPORTE.
LWA_IMPRIME_REPORTE-IDNRK = LWA_STPO-IDNRK. "Componente
APPEND LWA_IMPRIME_REPORTE INTO GT_IMPRIME_REPORTE.
ENDLOOP.
ENDIF.
ENDLOOP.
Al final GT_IMPRIME_REPORTE queda con los datos de materiales y sus componentes.
|