这次排查,我想先把问题钉死前阵子我专门做过一次很典型的排查,场景很直接,我们在SEGW里做了一个Function Import,参数里带一个比较长的文本字段,结果有人怀疑SAP Gateway天生就不适合传长字符串。这个判断听上去很像经验之谈,可一旦真的进项目,就很容易把排查方向带偏。因为在OData V2里,Service Operation的 primitive 参数本来就是沿着URI的 query string 传过去的,而SAP Gateway在Function Import参数上又允许显式维护Max Length。也就是说,模型定义、运行时校验、HTTP传输链路,这三层其实是叠在一起工作的,不能只盯着其中一层看。 ([OData][1])我这次看完这个案例之后,结论很清楚,像示例里这样把Description定义成Edm.String,长度设成1000,再让ABAP输入结构、数据库字段和返回实体的长度都保持一致,Gateway这一层是可以把四百多个字符稳稳接住并原样回传的。SAP Help对Function Import Parameters的说明写得很明白,Max Length