0

テーブルを読み込もうとしていますが、これが私の 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");
4

4 に答える 4

1

おそらく括弧の内側にスペースが必要になるでしょう:

"( ( DISPO EQ 'E10' OR DISPO EQ 'EAA' ) AND ( GLTRP >= '20150701' AND GLTRP <= '20150730' ) )"
  ^ ^                                ^       ^                                           ^ ^
于 2015-07-15T12:05:35.057 に答える
1

最後のコメントは、メッセージが動的条件への参照を継続していることを示しています。動的 WHERE 条件は次の形式です

... WHERE (variable).

variable は条件を含む文字列です。

あなたはそのような動的な状態を持っていないので、vwegertとして、あなたの状態のスペースに問題があると思います. ) と ( の前後にスペースを追加すると、2 番目のソリューションが機能するはずです。

于 2015-07-15T20:56:38.703 に答える