Ayuda SAP

Relación con la tablas ORCT y OJDT

Hola saperos, tengo una solicitud la cual es generar un reporte en la cual muestra el pagos efectuado en los cuales se este realizando un pago con un asiento contable. he buscado como relacionar las dos tablas pero no he encontrado que campo es el que utiliza el sistema para en realiza la relación.

Realizando una revisión a fondo encontré la tabla RCT2 que en ella si encuentro el TransID de la tabla OJDT pero aun no he podido hacer que sea exacto, ya que me incluye asientos contables que no están en el pago efectuado.

Les dejo el código que estoy utilizando

Select T0.DocEntry[No. Pagos SAP], T0.CardCode[Codigo Clientes], T0.CardName[Nombre Cliente], T0.DocDate[Fecha Pago], T0.CounterRef[No. Recibo], 
	   T3.Descr[Cobrador], T0.Comments[Comentarios], T0.DocTotal[Total Pagos],
	   T2.BaseRef[No. Factura y/o NC], Case When T2.ObjType = '30' Then 'AS' else ' ' End[Clase de Documento], T2.RefDate[Fecha Documento], 
	   Case When T2.ObjType = '30' Then (T2.LocTotal) else ' ' End [Total Liquidado], T0.DocTotal[Total Pago]
	From ORCT T0 inner join 
		 RCT2 T1 on T0.DocEntry = T1.DocNum inner join 
		 OJDT T2 on T1.DocEntry = T2.TransId /*and T1.InvType = T2.ObjType*/ inner join 
		 UFD1 T3 on T0.U_Cobrador = T3.FldValue and T3.FieldID = '2' and T3.TableID = 'ORCT' 
Where /*T0.DocNum = '38693' --and*/ T0.DocDate >= '20190101' and T0.DocDate <= '20190731'
Group By T0.DocEntry, T0.CardCode, T0.CardName, T0.DocDate, T0.CounterRef, 
	   T3.Descr, T0.Comments, T0.DocTotal, T2.BaseRef, T2.ObjType, T2.RefDate, T2.LocTotal
Order By 1

esta es una imagen de uno de los resultado del codigo

Como pueden ver en la imagen la primera linea no corresponde al pago efectuado pero me lo incluyen no se porque.

Agradeceria bastante la ayuda.
Saludos.

alguna vez tuve ese detalle, lo que pasa que al hacer match con inner Join en esos documentos se repiten los numeros de documentos como doc entrys y viceversa.
checa esta estructura haber si te funciona.

SELECT

-- T1."SeriesName" as  "Serie",

CASE T2."InvType"

WHEN 13 THEN 'Factura'

WHEN 14 THEN 'N.Credito'

END as "Docto",

CASE T2."InvType"
WHEN 13 THEN (SELECT A."DocNum" FROM OINV A WHERE A."DocEntry"=T2."DocEntry")
WHEN 14 THEN (SELECT A."DocNum"  FROM ORIN A WHERE A."DocEntry"=T2."DocEntry")
END as  "#SAP",

CASE T2."InvType"
WHEN 13 THEN (SELECT A."DocDate" FROM OINV A WHERE A."DocEntry"=T2."DocEntry")
WHEN 14 THEN (SELECT A."DocDate" FROM ORIN A WHERE A."DocEntry"=T2."DocEntry")
END as "Fecha Docto.",



T0."DocNum" as "No. Pago",

T0."CardCode" as "Código Cliente",

T0."CardName" as "Nombre Cliente",

CASE T2."InvType"
WHEN 13 THEN (SELECT A."DocTotal" FROM OINV A WHERE A."DocEntry"=T2."DocEntry")
WHEN 14 THEN (SELECT A."DocTotal" FROM ORIN A WHERE A."DocEntry"=T2."DocEntry")*-1
END as "Imp.Docto",

CASE T2."InvType"
WHEN 13 THEN T2."SumApplied"
WHEN 14 THEN T2."SumApplied"*-1
END as "Imp.Aplicado",

CASE T2."InvType"
WHEN 13 THEN (SELECT A."PaidToDate" FROM OINV A WHERE A."DocEntry"=T2."DocEntry")
WHEN 14 THEN (SELECT A."PaidToDate" FROM ORIN A WHERE A."DocEntry"=T2."DocEntry")*-1
END as "Tot.Pagado",

T0."CashSum" as "Efectivo",

T0."CheckSum" as "Cheque",

T0."TrsfrSum" as  "Transf",

T0."DocTotal" as  "Total",

T0."DocDate" as  "Fecha",

T4."SlpName"||' '||T4."Memo"

FROM ORCT T0 

INNER JOIN NNM1 T1 ON T0."Series" = T1."Series"

LEFT JOIN RCT2 T2 ON T0."DocEntry" = T2."DocNum"

LEFT JOIN OCRD T3 ON T0."CardCode" = T3."CardCode"

LEFT JOIN OSLP T4 ON T3."SlpCode" = T4."SlpCode"

WHERE T0."Canceled"  = 'N' and T0."DocDate" between [%0] and [%1]

ORDER BY T0."DocNum"

Hola @IKASHIMI gracias por tu pronta respuesta voy a revisar tu codigo y te comento.

Gracias.

Saludos

Y si filtras por Clase de Documento para que solo te tome los que necesitas?

Hola @CJPG, me parece que el problema es que estás usando la tabla RCT2 en lugar de usar la VPM2.

La tabla ORCT corresponde a pagos recibidos, para pagos efectuados es la tabla OVPM.

Creo que es por eso que la consulta te muestra asientos que no están en el pago efectuado.

Saludos.

1 me gusta