ABAP: вернуть общий результат через SAP RFC (json)

В прошлом я использовал это для возврата любой структуры данных через 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 это не должно иметь большого значения для этого вопроса.

(Пожалуйста, оставьте комментарий, если что-то в этом вопросе не ясно)

1 ответ

Это может работать лучше:

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 = json_writer->get_output( ). " yours export parameter

Взято из официальной документации.

Если для вас важнее всего производительность, то /ui2/cl_json - неправильный выбор. Пока это ABAP-код и SAP_BASIS 700, совместимый синтаксис. CALL TRANSFORMATION id лучше по производительности. Об этом тоже написано в моем блоге. Кстати: я автор /ui2/cl_json.

Но если речь идет о гибкости, удобстве, поддерживаемых типах данных и желаемом формате, то лучшего решения пока нет, по сравнению с /ui2/cl_json.

Потенциально, можно получить лучшую специализированную реализацию, используя CALL TRANSFORMATION и собственное XSLT-преобразование, но это было бы уже медленнее, чем id-1, и стоило бы больше усилий по кодированию.

Есть еще потенциал сделать /ui2/cl_json более быстрым, отказавшись от поддержки более ранних выпусков (ниже 7.40) и используя сборку в SXML-парсере для обработки JSON, но это было бы работой. И у меня нет времени / фактического запроса на это.

@Sandra Rossi: Я был бы рад применить любые предложения по производительности для /ui2/cl_json, поэтому, если у вас есть конкретные примеры, пришлите их мне. Здесь или в блоге. Но, пожалуйста, примите во внимание, что на данный момент мне необходимо соответствовать ограничениям SAP_BASIS 7.00.

Другие вопросы по тегам