Пример использования Simple Transformations в SAP
В этой заметке я рассмотрю простой пример использования Simple Transformations в SAP. Помимо создания самой трансформации будет также рассмотрен пример ее вызова из ABAP программы.
Что такое Simple Transformation в SAP?
Simple Transformation (ST) или же Обычная Трансформация - это проприетарный язык программирования, разработанный вендором для описания "внутренностей" SAP посредством XML. Трансформацией он называется ровно потому, что, при использовании данного инструмента, происходит преобразование ABAP-данных системы SAP в XML. Дефиницию термина ABAP-данных оставим на усмотрение каждого читающего.
Simple transformations, or ST, is a proprietary SAP programming language that describes the transformation of ABAP data to XML (serialization) and from XML to ABAP data (deserialization).
Процесс преобразования, так называемых, ABAP-данных в XML, именуется сериализацией. Обратный_ сериализации _процесс - десереализация.
Пример создания обычной трансформации в SAP
Находясь в транзакции SE80 выберите в контекстном меню Create -> Other (1) -> Transformation
Создать новую трансформацию возможно также в транзакции STRANS
Определите структуру будущего XML, посредством описания новой трансформации
Не забудьте активировать внесенные изменения.
Пример вызова обычной трансформации из ABAP-программы
Выполнить вызов ST можно с помощью команды CALL TRANSFORMATION
Effect
This statement calls the specified XSL transformation (XSLT) or a simple transformation (ST). The source of the transformation is specified behind SOURCE and the result is stored behind RESULT. PARAMETERS can be used to pass parameters to the transformation. The addition OPTIONS can be used to specify transformation options options.
Для демонстрации в этой заметке я создам программу со следующим исходным кодом
REPORT ztsf_run_1.
DATA: lv_xml TYPE string,
lt_zzz LIKE ztqualif.
FIELD-SYMBOLS: < fs_zzz > TYPE ztqualif.
SELECT * FROM ztqualif
INTO TABLE @DATA(result1).
CALL TRANSFORMATION z_demo_tsf_1
SOURCE qualifications = result1 "root element of your ST
RESULT XML lv_xml.
cl_abap_browser=>show_xml( xml_string = lv_xml ). "serialization
LOOP AT result1 ASSIGNING < fs_zzz >. "deserialization
WRITE: < fs_zzz >-qualification_id.
WRITE: < fs_zzz >-qualification_name.
WRITE: < fs_zzz >-qualification_scale.
ENDLOOP.
Тестируем
См. Example
Обратите внимание на то, что при вызове конструкции **CALL TRANSFORMATION **в качестве параметра источника (source) необходимо указывать корневой узел вашей трансформации.
А вот что бывает, если этому правилу не следовать
Как всегда, с любовью. Ваш ignatov.