Buenos tardes amigos, un cordial saludo a la comunidad, hoy traigo una duda en el mundo ABAP,
Se requiere desarrollar un reporte que visualice Pedido Entrega Factura
La idea general que tengo es 3 tablas internas: dos de información y 1 de resumen
Una tabla interna 1 para guardar información pedido.
types: BEGIN OF st_pedido_entrega,
VBELN TYPE VBELN, "Documentos Comercial Todos
VKORG TYPE VKORG,
NAME1 TYPE NAME,
VBTYP TYPE VBTYP,
KUNNR TYPE KUNNR,
POSNR TYPE POSNR,
VBELV TYPE VBELN, "Documentos Comercial Todos
POSNV TYPE POSNR,
VBTYP_N TYPE VBTYP,
POSNN TYPE POSNR,
GBSTK TYPE GBSTK,
BSTNK TYPE BSTNK,
ERDAT TYPE ERDAT,
BSTDK TYPE DATUM,
LIGHTS TYPE C,
END OF st_pedido_entrega.
Una tabla 2 para guardar información entrega.
types: BEGIN OF st_entrega_factura,
VBELN TYPE VBELN, "Documentos Comercial Todos
POSNR TYPE POSNR,
VBELV TYPE VBELN, "Documentos Comercial Todos
POSNV TYPE POSNR,
VBTYP_N TYPE VBTYP,
POSNN TYPE POSNR,
LIGHTS TYPE C,
ERDAT TYPE ERDAT,
WADAT_IST TYPE DATUM,
FKDAT TYPE DATUM,
BLDAT TYPE DATUM,
END OF st_entrega_factura.
Una tercera Tabla para reunir las dos tablas anteriores
types: BEGIN OF st_reporte,
KUNNR TYPE KUNNR,
VBELN TYPE VBELN,
POSNV TYPE POSNR,
VBELN2 TYPE VBELN,
VBELN3 TYPE VBELN,
BSTNK TYPE BSTNK,
LIGHTS TYPE C,
GBSTK TYPE GBSTK,
ERDAT TYPE ERDAT,
NAME1 TYPE NAME,
ERDAT2 TYPE ERDAT,
WADAT_IST TYPE DATUM,
FKDAT TYPE DATUM,
BSTDK TYPE DATUM,
BLDAT TYPE DATUM,
END OF st_reporte.
Hacer la búsquedas respectivas.
SELECT a~KUNNR a~VKORG a~VBTYP a~BSTNK a~ERDAT a~VBELN
b~VBELV b~POSNV b~VBELN b~VBTYP_N
c~GBSTK
e~KUNNR e~NAME1
g~BSTDK
INTO CORRESPONDING FIELDS OF TABLE it_pedido
FROM VBAK AS a
INNER JOIN VBFA AS b ON a~VBELN = b~VBELV
INNER JOIN VBUK AS c ON a~VBELN = c~VBELN
INNER JOIN KNA1 AS e ON a~KUNNR = e~KUNNR
INNER JOIN VBKD AS g ON a~VBELN = g~VBELN
WHERE VKORG IN SO_ORG AND VBTYP_n = 'J' AND a~VBELN in SO_PED AND a~KUNNR IN SO_CLIE AND a~VBTYP = 'C'.
SORT it_pedido ASCENDING BY vbelN.
SELECT f~VBELN f~WADAT_IST f~BLDAT f~WADAT_IST f~FKDAT
g~VBELV g~POSNV g~VBELN g~VBTYP_N
INTO CORRESPONDING FIELDS OF TABLE it_entrega
FROM LIKP AS f
INNER JOIN VBFA AS g ON f~VBELN = g~VBELV
WHERE VBTYP_N = 'M'.
Llenar la tabla 3
SORT it_entrega BY VBELN.
LOOP AT it_pedido.
" CLEAR it_entrega.
READ TABLE it_entrega WITH KEY VBELV = it_pedido-VBELN.
IF SY-SUBRC EQ 0.
it_reporte-KUNNR = it_pedido-KUNNR.
it_reporte-VBELN = it_pedido-VBELV.
it_reporte-VBELN2 = it_entrega-VBELV.
it_reporte-VBELN3 = it_entrega-VBELN.
it_reporte-GBSTK = it_pedido-GBSTK.
it_reporte-BSTNK = it_pedido-BSTNK.
it_reporte-LIGHTS = it_pedido-LIGHTS.
it_reporte-ERDAT = it_pedido-ERDAT.
it_reporte-NAME1 = it_pedido-NAME1.
it_reporte-ERDAT2 = it_entrega-ERDAT.
it_reporte-WADAT_IST = it_entrega-WADAT_IST.
it_reporte-FKDAT = it_entrega-FKDAT.
ENDIF.
APPEND it_reporte.
ENDLOOP.
SORT it_reporte ASCENDING BY VBELN VBELN2.
DELETE ADJACENT DUPLICATES FROM it_reporte COMPARING VBELN VBELN2
Que ocurre muestra toda la información correctamente pero no muestra los pedidos que aun no tiene Entrega o en su defecto Factura.