ABAP:通过SAP RFC(json)返回通用结果

时间:2019-01-04 10:53:14

标签: abap saprfc pyrfc

过去,我使用它通过SAP RFC返回任何数据结构:

json = /ui2/cl_json=>serialize( data = <lt_result> 
    pretty_name = /ui2/cl_json=>pretty_mode-low_case ).

如果<lt_result>很小,这很好用。

但是对于较大的数据集,这很慢。

如何通过通用ABAP RFC功能模块返回任何数据结构?

我使用PyRFC,但是AFAIK对这个问题应该没多大作用。

(如果这个问题不清楚,请发表评论)

2 个答案:

答案 0 :(得分:2)

这可能会更好:

DATA(lo_json_writer) = cl_sxml_string_writer=>create( type = if_sxml=>co_xt_json ).

CALL TRANSFORMATION id
                    SOURCE result = <lt_result>
                    RESULT XML lo_json_writer.

ev_json_data = lo_json_writer->get_output( ). " yours export parameter

来自official documentation

答案 1 :(得分:2)

如果性能对您来说最重要,那么/ ui2 / cl_json是错误的选择。虽然它是ABAP代码和SAP_BASIS 700兼容的语法。 关于性能,CALL TRANSFORMATION id更好。这也用my blog编写。顺便说一句:我是/ ui2 / cl_json的作者。

但是,如果要兼顾灵活性,舒适性,受支持的数据类型和所需的格式,那么与/ ui2 / cl_json相比,目前没有更好的解决方案。

可能,可以使用CALL TRANSFORMATION和自己的XSLT转换来获得更好的,专门的实现,但是它会比id one慢,并且会花费更多的编码工作。

通过删除对较低版本(低于7.40)的支持,并使用SXML解析器中的内部版本处理JSON,仍有提高/ ui2 / cl_json的潜力,但这是需要做的工作。而且我没有时间/实际的要求。

@Sandra Rossi:我很乐意为/ ui2 / cl_json应用任何性能建议,因此,如果您有具体的示例,请发送给我。在这里或在博客中。但是请考虑到当前,我需要遵守SAP_BASIS 7.00的限制。