SAP cloud sdk for javascript和多个过滤器直接附加:leads to";表达式无法转换为ABAP选择选项;在后端
我向ByDesign系统发出读取请求,并按以下方式创建:SAP cloud sdk for javascript和多个过滤器直接附加:leads to";表达式无法转换为ABAP选择选项;在后端,javascript,typescript,sap-cloud-sdk,Javascript,Typescript,Sap Cloud Sdk,我向ByDesign系统发出读取请求,并按以下方式创建: const readRequest = QueryResults.requestBuilder() .getAll() .select( QueryResults.COFFMAT, QueryResults.CMATERIAL ) .filter(
const readRequest = QueryResults.requestBuilder()
.getAll()
.select(
QueryResults.COFFMAT,
QueryResults.CMATERIAL
)
.filter(
and(and(
QueryResults.PARA_FISCYEARPER.greaterOrEqual(new BigNumber('0010000')),
QueryResults.PARA_FISCYEARPER.lessOrEqual(new BigNumber('0129999'))),
and(
QueryResults.CACCPSTDAT.greaterOrEqual(moment(validFrom)),
QueryResults.CACCPSTDAT.lessOrEqual(moment(validTo)),
QueryResults.CPERMEST.equals(PermanentEstablishmentID),
QueryResults.CACCBTT.equals(Constants.code.IssueForProduction)
))
);
请求是通过以下URL编码生成的:
\QueryResults?$format=json&$select=COFFMAT,CMATERIAL&$filter=(PARA_FISCYEARPER%20ge%2010000L%20and%20PARA_FISCYEARPER%20le%20129999L%20and%20CACCPSTDAT%20ge%20datetime%272017-12-31T23:00:00.000%27%20and%20CACCPSTDAT%20le%20datetime%272020-12-31T23:00:00.000%27%20and%20CPERMEST%20eq%20%27P1100%27%20and%20CACCBTT%20eq%20%27344%27)
在这里,所有的和过滤器都在后面追加,这会导致从后端抛出错误
表达式无法转换为ABAP选择选项
工作过滤器url以及我期望生成的url编码(注意括号)
第二种情况是否可以以某种方式实现,因为在使用或过滤器的情况下,括号的生成是正确的,仅使用和它们不起作用。最近发布了1.28.1版。它应该生成包含您需要的更多括号的url。请参阅发行说明。Hi@CuriousCase,当前SDK生成的URL没有您期望的所有括号,因为逻辑上它们是相同的。不幸的是,有些服务可能不支持2+
和
运算符,您需要更多的括号来将它们分割成更小的部分。我创建了一个票证来改进SDK,以便您可以决定过滤器的结构。发布后我会通知你的。谢谢@Junjie Tang,我会试用并更新。
\QueryResults?$format=json&$select=COFFMAT,CMATERIAL&$filter=((PARA_FISCYEARPER%20ge%2010000L%20and%20PARA_FISCYEARPER%20le%20129999L)%20and%20(CACCPSTDAT%20ge%20datetime%272017-12-31T23:00:00.000%27%20and%20CACCPSTDAT%20le%20datetime%272020-12-31T23:00:00.000%27%20and%20CPERMEST%20eq%20%27P1100%27%20and%20CACCBTT%20eq%20%27344%27))