2017-07-20 3 views
0

J'ai une requête SAP B1 pour vérifier les commandes ouvertes dont l'envoi est planifié La requête fonctionne, mais lorsqu'il y a une commande client sans ordre de fabrication lié Cet ordre ne correspond pas apparaît dans la liste. Seules les commandes avec les commandes de production liées apparaissentLa requête SAP d'envoi de rapports n'affiche pas les résultats corrects

Quelqu'un peut-il s'il vous plaît aidez-moi avec ma requête joint, de sorte que les résultats d'une requête affiche toutes les commandes prévues pour l'expédition qui a ou ne sont pas liés ordres de fabrication

SELECT T0.[DocNum] as 'S/O #', 

T1.[ShipDate] as 'Ship Date', 

T0.[CardName] as 'Sales Partner' , 

T0.[NumAtCard] as 'Cust P/O #', 

T1.[U_Type] as 'Type #', 

T1.[U_Prod_Order_No] as 'Prod. Ord #', 

T1.[OpenQty] as 'Qty', 

T1.[ItemCode] as 'Item Code', 

T1.[Dscription] as 'Item Description', 

T1.[U_A1WMS_Comments],  

T1.[LineTotal] as 'Row Total', 

T0.[Address2] as 'Ship To Address', 

T2.[Status] 


FROM 
ORDR T0 
INNER JOIN RDR1 T1 ON T0.[DocEntry] = T1.[DocEntry] 
LEFT JOIN OWOR T2 ON T0.[DocNum] = T2.[OriginNum] AND T1.[DocEntry] = 
T2.[OriginAbs] 

WHERE 
T0.[CardCode] = T2.[CardCode] and 
T1.[U_Prod_Order_No] = T2.[DocNum] and 
T1. Linestatus = 'O' and T1.[ShipDate] <= [%0] 

Merci Rahul

+0

Qu'est-ce que [U_Prod_Order_No]? Manquez-vous les résultats parce que cette valeur est nulle ou vide? – Hybridzz

Répondre

0

Comme dit commentaire Hybridzz, votre problème est avec le champ U_Prod_Order_No. Si vous remarquez dans votre requête, dans votre « Où » déclaration, vous avez

T1.[U_Prod_Order_No] = T2.[DocNum]

Prenons l'exemple où vous avez pas d'ordre de production rempli de l'ordre de vente, le WHERE sera peuplant des informations telles que '' = null ou quelque chose comme ça.

La solution va probablement être ajouter la plupart des déclarations WHERE à votre JOIN s

SELECT T0.[DocNum] as 'S/O #', 
T1.[ShipDate] as 'Ship Date', 
T0.[CardName] as 'Sales Partner' , 
T0.[NumAtCard] as 'Cust P/O #', 
T1.[U_Type] as 'Type #', 
T1.[U_Prod_Order_No] as 'Prod. Ord #', 
T1.[OpenQty] as 'Qty', 
T1.[ItemCode] as 'Item Code', 
T1.[Dscription] as 'Item Description', 
T1.[U_A1WMS_Comments],  
T1.[LineTotal] as 'Row Total', 
T0.[Address2] as 'Ship To Address', 
T2.[Status] 

FROM 
ORDR T0 
INNER JOIN RDR1 T1 ON T0.[DocEntry] = T1.[DocEntry] 
LEFT JOIN OWOR T2 ON T0.[DocNum] = T2.[OriginNum] 
    AND T1.[DocEntry] = T2.[OriginAbs] 
    AND T0.[CardCode] = T2.[CardCode] 
    and T1.[U_Prod_Order_No] = T2.[DocNum] 

WHERE T1. Linestatus = 'O' and T1.[ShipDate] <= [%0] 
+0

Salut Hybridzz, C'est pour la réponse. Fait sens et j'ai raté ça. Cela a fonctionné mais quand j'ai vérifié les résultats, j'ai noté que j'avais manqué une table. Je l'ai ajouté et fait les changements comme vous l'avez montré, mais maintenant dans mes résultats de requête je reçois deux rangées du même ordre de production même si je les regroupe –

+0

Il y a probablement quelque chose de mal avec la jointure que vous avez ajouté, si je devais deviner . Pouvez-vous modifier votre question pour inclure la requête mise à jour? (Il va également vous donner un résultat pour chaque ligne de la commande client, au cas où vous ne vous y attendiez pas). – phroureo