Query para revisar Entradas y Fact Proveedores

Buenos dias, comunidad yo entro aqui de vez en cuando, no escribo mucho pero voy al caso, alguno tiene un query de SAP Busines One de SQL que pueda consultar las entradas de mercancias y las facturas de proveedores ya que en realidad este covid como dije desde un poco me dejo con concentracion dispersa y necesito una manito para poder organizar mis ideas, si alguien tiene uno parecido que me permita arrancar yo se lo agradezco

¿Como base le sirve una simple de Factura Proveedor? En caso de que sí, para la tabla OPCH una sencilla como esta le devuelve las facturas proveedor en un intervalo de fecha con su total de documento:

SELECT T0.[DocNum], T0.[CardCode], T0.[CardName], T0.[DocTotal] FROM OPCH T0  INNER JOIN PCH1 T1 ON T0.[DocEntry] = T1.[DocEntry] WHERE T0.[DocDate] >=[%0] AND
 T0.[DocDate] <=[%1]

Para entradas de mercancías son las tablas OPDN y PDN1, para ampliar o recortar ya dependerá de los diferentes criterios o parámetros que necesite para discriminar datos.

Pues solo tienes que usar la búsqueda y seguro que te salen varios ejemplos….

Muchas gracias por tu gran ayuda voy a intentar ya se me refresco la memoria

Muchas gracias por tu gran ayuda

hola buenos dias, te cuento que cree una consulta donde coloco las Tablas OPOR, POR1, estas son del pedido de mercancias, y al mismo tiempo OPCH y PCH1 que son Factura de proveedores, pero la consultase rompe osea me bloquea el sistema osea no me da resultado

intente con otras tablas del pedido y la entrada de mercancia pero veo que no saca informacion igual en especifico de un cliente y numero de pedido vs entrada y no es igual que sera lo que esta mal

SELECT T0.[CardCode], T0.[CardName], T0.[DocNum], T2.[CardCode], T2.[CardName], T2.[DocTotal] FROM OPOR T0 INNER JOIN POR1 T1 ON T0.[DocEntry] = T1.[DocEntry], OPDN T2 INNER JOIN PDN1 T3 ON T2.[DocEntry] = T3.[DocEntry] WHERE T0.[DocDate] >=[%0] AND T0.[DocDate] <=[%1] ORDER BY T0.[DocNum]

La respuesta que me da es diferente a la que veo en SAP osea numero de pedido no es igual en respuesta a la entrada de mercancia ejemplo en mi SAP: el pedido 31489 al hacer clic sobre el boton documento destino me muestra una entrada 4907 pero cuando hago el query no es igual ni me muestra eso me muestra otra informacion de otro cliente

Me parece que la relación no la tiene de manera correcta, por esta causa el sistema intenta combinar cada fila de pedidos con todas las filas de entradas existentes. Por eso ve datos de otros clientes y números que no coinciden.

Para que se entienda que una entrada viene de un pedido específico, debe usar los campos de vinculación: BaseEntry y BaseType, donde el tipo para pedidos es 22.

Recuerde, la relación no se da a nivel de cabecera (OPOR a OPDN), sino a nivel de líneas (POR1 a PDN1)

Puede ajustar su consulta para que utilice LEFT JOIN. Es importante porque, si usa INNER JOIN, los pedidos que aún no tienen entrada “desaparecerán” . Así verá todos los pedidos y, si tienen entrada, aparecerán los datos a un lado.

Algo así:

SELECT 
    T0.[CardCode] AS 'Código SN', 
    T0.[CardName] AS 'Nombre SN', 
    T0.[DocNum] AS 'Núm. Pedido', 
    T2.[DocNum] AS 'Núm. Entrada',
    T2.[CardCode] AS 'SN Entrada', 
    T2.[DocTotal] AS 'Total Entrada'
FROM OPOR T0 
INNER JOIN POR1 T1 ON T0.[DocEntry] = T1.[DocEntry]
-- Aquí mire usted:
LEFT JOIN PDN1 T3 ON T1.[DocEntry] = T3.[BaseEntry] 
                 AND T1.[LineNum] = T3.[BaseLine] 
                 AND T3.[BaseType] = 22
LEFT JOIN OPDN T2 ON T3.[DocEntry] = T2.[DocEntry]
WHERE T0.[DocDate] >= [%0] 
  AND T0.[DocDate] <= [%1] 
ORDER BY T0.[DocNum]

Entonces al unir por líneas, si un pedido tiene 5 partidas, verá 5 filas. Si quiere ver solo una fila por pedido, tendría que usar un DISTINCT o un GROUP BY, pero si está haciendo alguna auditoría, esta forma es más precisa.

Nota: Su consulta devuelve el Doctotal que es el monto del documento, si quiere ver unidades debe usar el Itemcode, Descripción y cantidad.

Saludines

1 me gusta

Perfecto mas claro aun que una gota de agua, listo amigo voy a unirlo a lo que tengo, eres muy generoso de tu parte

Amigos buenos dias, asi me quedo le agregue mas condiciones por peticiones y bueno me quedo muy bien gracias a todos los que hicieron posible este arreglo con sus conocimientos, de verdad esta pagina es muy excelente, asi quedo: coloque un proveedor en especial porque este es el del problema jjajjaja:

SELECT T0.[CardCode] AS ‘Código SN’, T0.[CardName] AS ‘Nombre SN’, T0.[DocNum] AS ‘Núm. Pedido’, T0.[DocDate] AS ‘FechaPedido’, T3.[ItemCode], T3.[Dscription], T3.[Quantity],T2.[DocNum] AS ‘Núm. Entrada’, T2.[DocDate]AS ‘FechaEntrada’, T2.[CardCode] AS ‘SN Entrada’, T2.[DocTotal] AS ‘Total Entrada’, T2.[DocStatus] AS ‘Status Doc’ FROM OPOR T0
INNER JOIN POR1 T1 ON T0.[DocEntry] = T1.[DocEntry]
LEFT JOIN PDN1 T3 ON T1.[DocEntry] = T3.[BaseEntry]
AND T1.[LineNum] = T3.[BaseLine]
AND T3.[BaseType] = 22
LEFT JOIN OPDN T2 ON T3.[DocEntry] = T2.[DocEntry] WHERE T0.[DocDate] >= [%0] AND T0.[DocDate] <= [%1] and T0.[CardCode] between ‘PN-800066778’ and ‘PN-800066778’ ORDER BY T0.[DocNum]