如何解决SAP cloud sdk针对javascript多个语言和过滤器直接附加:导致后端的“表达式无法转换为ABAP选择选项”
我对ByDesign系统有读取请求,并通过以下方式创建:
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编码是什么(请注意括号)
\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))
可以通过某种方式实现第二种情况,因为在或过滤器的情况下,仅当使用时才正确生成了方括号,而它们不起作用。
解决方法
1.28.1版本最近已发布。它会生成带有更多括号的URL。请参阅发行说明here。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。