Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/259.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用.Net Connector for SAP时出现WHERE子句问题_C#_Sql_Abap_Sap Dotnet Connector - Fatal编程技术网

C# 使用.Net Connector for SAP时出现WHERE子句问题

C# 使用.Net Connector for SAP时出现WHERE子句问题,c#,sql,abap,sap-dotnet-connector,C#,Sql,Abap,Sap Dotnet Connector,尝试读取一个表,这是我的WHERE子句 "((DISPO EQ 'E10' OR DISPO EQ 'EAA') AND (GLTRP >= '20150701' AND GLTRP <= '20150730'))" 现在,如果我拆分WHERE子句并分别进行尝试,那么一切都正常 DISPO EQ 'E10' OR DISPO EQ 'EAA' // This works 及 那么我原来的WHERE子句有什么问题呢 更新:代码的执行方式 IRfcFunction BapiGetOr

尝试读取一个表,这是我的WHERE子句

"((DISPO EQ 'E10' OR DISPO EQ 'EAA') AND (GLTRP >= '20150701' AND GLTRP <= '20150730'))"
现在,如果我拆分WHERE子句并分别进行尝试,那么一切都正常

DISPO EQ 'E10' OR DISPO EQ 'EAA' // This works

那么我原来的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");
IRfcFunction bapigerderstatus=SapRap.CreateFunction(“BBP\u RFC\u READ\u TABLE”);
SetValue(“查询表”、“AFKO”)
SetValue(“分隔符”、“;”);
设置值(“行计数”,“30”);
//参数表字段包含列
IRfcTable fields=bapigerders.GetTable(“字段”);
fields.Append();
fields.SetValue(“FIELDNAME”、“AUFNR”);
fields.Append();
字段设置值(“字段名”、“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();
字段设置值(“字段名”、“IGMNG”);
fields.Append();
fields.SetValue(“FIELDNAME”、“IASMG”);
IRfcTable optsTable=bapigerder.GetTable(“选项”);
optsTable.Append();

optsTable.SetValue(“文本”、“显示”或“显示”和(GLTRP>=“20150701”和GLTRP括号内可能需要空格:

"( ( DISPO EQ 'E10' OR DISPO EQ 'EAA' ) AND ( GLTRP >= '20150701' AND GLTRP <= '20150730' ) )"
  ^ ^                                ^       ^                                           ^ ^

”((DISPO EQ'E10'或DISPO EQ'EAA')和(GLTRP>='20150701'和GLTRP您的最后一条注释表明消息包含对动态条件的引用。动态条件在表单中

... WHERE (variable).
变量是包含条件的字符串


由于您没有这样的动态条件,我认为,作为vwegert,您在您的条件下遇到了空间问题。如果您在每个条件之前和之后添加空间,您的第二个解决方案应该有效)并且(。

尝试在SQL中添加换行符,我认为您的SQL每次执行时都会被修剪。可能是因为它太长。

语句太长。任何超过70个字符的WHERE文本都无法正确执行。请拆分WHERE子句,并在表中追加两条记录。

尝试了您所说的内容,现在我得到了
其他信息ion:动态WHERE条件中缺少一个关系运算符。
在这种情况下,用整个stacktrace捕获nco异常并记录stacktrace可能很方便。您的整个语句看起来如何,是如何创建的,是如何传递的?这不是问题的答案。
GLTRP >= '20150701' AND GLTRP <= '20150730' // This also works.
GLTRP BETWEEN '20150701' AND '20150730'
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");
"( ( DISPO EQ 'E10' OR DISPO EQ 'EAA' ) AND ( GLTRP >= '20150701' AND GLTRP <= '20150730' ) )"
  ^ ^                                ^       ^                                           ^ ^
... WHERE (variable).