cancel
Showing results for 
Search instead for 
Did you mean: 

Parameter in der Where - Klausel führen zu Fehler -> Serviceverträge (OCTR)

Former Member
0 Kudos

Hallo

Query wurde im SQL-Server 2008 entwickelt, danach ins SAP Business One übernommen (2007 A SP:01 PL:08).

Über Layoutdesigner wurde ein Formular erstellt, das auf die neue Abfrage zugreift - so weit so gut - Formular funktioniert.

Die Abfrage soll aber als Solche auch aufrufbar sein, die führt allerdings zu der oben genannten Fehlermeldung !

Also bin ich hin und habe die Abfrage Schritt für Schritt nochmal im SB1 nachvollzogen und dadurch festgestellt,

daß der Fehler eindeutig an der WHERE-Klausel hängt !

Wie sind die Parameter einzustellen und was habe ich falsch gemacht ?

Hier mein Code:

WHERE (T0.U_ItemCode IN ('[%ItemCode]') OR '[%ItemCode]'='')

AND (T1.U_Status IN ('[%Status]') OR '[%Status]'='')

AND (T1.U_EKRVBP IN ('[%CardCode]') OR '[%CardCode]'='')

AND (T1.Name IN ('[%RVCode]') OR '[%RVCode]'='')

AND (T0.U_ItemName IN ('[%ItemName]') OR '[%ItemName]'='')

Wer kann helfen ?

mfg

Annette Lenhard

Accepted Solutions (0)

Answers (2)

Answers (2)

Former Member
0 Kudos

Hallo Anette,

Ist mir ein bekanntes Problem. In SAP mußt du in manchen Fällen (hab noch nicht rausbekommen in welchen) die Variablen vorab deklarieren.

Ein Beispiel füge ich bei:

/*SELECT FROM .[OITW] T9 */

DECLARE @WHS as Varchar (8)

DECLARE @ItemWhs as Varchar (8)

/* WHERE */

SET @WHS = /* T9.WhsCode */ '[%WhsCode]'

SET @ItemWHS = /* T9.WhsCode */ '[%WhsCode]'

Du mußt noch die Tabelle und die Variablen anpassen.

Das wird auf jeden Fall helfen

Gruß

Lars Barkow

Former Member
0 Kudos

Hallo Lars,

muß Dich enttäuschen, auch das hilft nicht (ist aber ein toller Ansatz für die Zukunft, Danke) !

Werde wohl eine SBO-Supportmeldung schalten - vielleicht stimmt ja auch irgendetwas an meiner Installation nicht ?

Halte Euch auf dem laufenden

Gruß

Annette Lenhard

Former Member
0 Kudos

Hallo Annette,

lass Dich von der Fehlermeldung nicht in die Irre leiten - sie stimmt nicht.

Auf den ersten Blick ist kein Fehler zu erkennen, allerdings sollte es so aussehen (Beispiel das funktioniert)

WHERE T0.ITEMCODE = '[%ItemCode]' or '[%ItemCode]'=''

Gruß

Andreas

Former Member
0 Kudos

Hallo Andreas

Habe Deine Lösungsidee ausprobiert (ich glaube in dieser Version schon 15x), es kommt aber immer noch der gleiche Fehler!

Schade

Gruß

Annette Lenhard

Former Member
0 Kudos

Poste mal bitte die ganze Query, und bitte als Code (ist dann besser les- und kopierbar). Ich schau dann mal...

Former Member
0 Kudos

Hier kommt der Code

SELECT T1.Name AS Rahmenvertrag
, T1.U_EKRVdatum AS ErfasstAm
, T1.U_EKRVBP AS Lieferant 
, T1.U_EKRVBPName AS Lieferantenname
, T1.U_Status AS RVStatus 
, CASE WHEN T1.U_Status = 'O' THEN 'Offen'
       WHEN T1.U_Status = 'Y' THEN 'Gedruckt'
       WHEN T1.U_Status = 'A' THEN 'Abgeschlossen'
  END AS TxtStatus     
, T1.U_EKRVvalidv AS Gueltigv
, T1.U_EKRVvalid  AS Guelitgb 
, T0.U_ItemCode AS Artikel
, T0.LineId
, T0.U_ItemCode_EK AS GPArt
, T0.U_ItemName AS ArtBezeichnung
, T0.U_EKArtMenge AS GesMng
, SUM(T3.Quantity) AS BstMng
, CASE WHEN T3.Quantity = 0.00 THEN SUM(T0.U_EKArtMenge) ELSE SUM(T0.U_EKArtMenge-T3.Quantity) END AS Offen
, SUM((T0.U_EKArtMenge-T3.Quantity)*T0.U_EKArtPreis) AS Preis 
, T0.U_EKARTME AS ME
, T0.U_EKArtPreis AS Einzelpreis
, T4.Currency
, T2.U_MS_Breite AS Breite
, T2.U_MS_Frachtgewicht AS Gewicht
 FROM [@KAS_EKRV_2] T0
 INNER JOIN [@KAS_EKRV_1] T1 ON T1.Name       = T0.Code
 INNER JOIN OITM T2          ON T2.ItemCode   = T0.U_ItemCode
 INNER JOIN OCRD T4          ON T4.CardCode   = T1.U_EKRVBP
 LEFT  JOIN POR1 T3     ON T0.U_ItemCode = T3.U_KAS_CNR_ICode AND
                                T1.Name       = T3.U_KAS_CNR_EK  
 
 WHERE T0.U_ItemCode    IN '[%ItemCode]'   OR '[%ItemCode]'=''      
/*   AND (T1.U_Status      IN('[%Status]')     OR '[%Status]'='') */       
/*   AND (T1.U_EKRVBP      IN('[%CardCode]')   OR '[%CardCode]'='') */      
/*   AND (T1.Name          IN('[%RVCode]')     OR '[%RVCode]'='')        */
/*   AND (T0.U_ItemName    IN('[%ItemName]')   OR '[%ItemName]'='')  */    
 
  GROUP BY T1.Name, T0.U_ItemCode, T1.U_EKRVdatum, T1.U_EKRVBP, T1.U_EKRVBPName, T1.U_Status, T0.U_ItemCode, 
          T0.U_ItemName, T0.U_EKArtMenge, T0.U_ItemCode_EK, T0.U_EKARTME, T0.U_EKArtPreis, T2.U_MS_Breite, T4.Currency,
          T3.Quantity, T1.U_EKRVvalidv, T1.U_EKRVvalid, T2.U_MS_Frachtgewicht, T0.LineId

ORDER BY T1.Name, T0.LineId

Edited by: Annette Lenhard on Mar 9, 2010 11:15 AM

Former Member
0 Kudos

Hallo Annette,

sorry, die Query kann ich so nicht bearbeiten / prüfen, sind ja alles Benutzerfelder bzw. Tabellen. Sonst hätte ich mal eben geschaut.

Ich kann Dir nur den Tipp geben, die Query mal NEU abzuspeichern (anderer Name, das hilft manchmal !!!), und schrittweise ein- und auszubauen, um der Ursche auf die Schliche zu kommen.

hoffe das hilft (ein wenig)

Andreas

Former Member
0 Kudos

Hallo Andreas

Bin schon schrittweise durch und weiß, daß es definitiv an den Parametern hängt, habe dort auch schon variiert ->

Reihenfolge geändert, immer nur einen Parameter ausprobiert usw.

Probiere es jetzt mit neuem Namen.

Danke für Deine Mühe

Gruß

Annette Lenhard