过去,我使用它通过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对这个问题应该没多大作用。
(如果这个问题不清楚,请发表评论)
答案 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
答案 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的限制。