试图读取一个表,这是我的 WHERE 子句。
"((DISPO EQ 'E10' OR DISPO EQ 'EAA') AND (GLTRP >= '20150701' AND GLTRP <= '20150730'))"
我也试过
"(DISPO EQ 'E10' OR DISPO EQ 'EAA') AND (GLTRP >= '20150701' AND GLTRP <= '20150730')"
和
"(DISPO EQ 'E10' OR DISPO EQ 'EAA') AND GLTRP >= '20150701' AND GLTRP <= '20150730'"
我一直在使用 =、EQ、>=、GL 等,但我一直收到同样的错误
An exception of type 'SAP.Middleware.Connector.RfcAbapRuntimeException' occurred in sapnco.dll but was not handled in user code
Additional information: A comparison value is missing from the dynamic WHERE condition.
现在,如果我拆分 WHERE 子句并分别尝试,那么一切正常。
DISPO EQ 'E10' OR DISPO EQ 'EAA' // This works
和
GLTRP >= '20150701' AND GLTRP <= '20150730' // This also works.
为了更好的衡量,这也有效
GLTRP BETWEEN '20150701' AND '20150730'
那么我原来的 WHERE 子句有什么问题?
更新:代码是如何执行的。
IRfcFunction BapiGetOrderStatus = SapRap.CreateFunction("BBP_RFC_READ_TABLE");
BapiGetOrder.SetValue("QUERY_TABLE", "AFKO")
BapiGetOrder.SetValue("DELIMITER", ";");
BapiGetOrder.SetValue("ROWCOUNT", "30");
// Parameter table FIELDS contains the columns
IRfcTable fields = BapiGetOrders.GetTable("FIELDS");
fields.Append();
fields.SetValue("FIELDNAME", "AUFNR");
fields.Append();
fields.SetValue("FIELDNAME", "GLTRP");
fields.Append();
fields.SetValue("FIELDNAME", "GSTRP");
fields.Append();
fields.SetValue("FIELDNAME", "GAMNG");
felds.Append();
fields.SetValue("FIELDNAME", "STLBEZ");
fields.Append();
fields.SetValue("FIELDNAME", "DISPO");
fields.Append();
fields.SetValue("FIELDNAME", "APRIO");
fields.Append();
fields.SetValue("FIELDNAME", "IGMNG");
fields.Append();
fields.SetValue("FIELDNAME", "IASMG");
IRfcTable optsTable = BapiGetOrder.GetTable("OPTIONS");
optsTable.Append();
optsTable.SetValue("TEXT", " ( ( DISPO EQ 'E10' OR DISPO EQ 'EAA' ) AND ( GLTRP >= '20150701' AND GLTRP <= '20150730' ) ) ");
BapiGetOrders.Invoke(SapRfcDestination); // <------- EXCEPTION HERE
IRfcTable ItemsTable = BapiGetOrders.GetTable("DATA");