Пример использования Simple Transformations в SAP

В этой заметке я рассмотрю простой пример использования Simple Transformations в SAP. Помимо создания самой трансформации будет также рассмотрен пример ее вызова из ABAP программы.

Что такое Simple Transformation в SAP?

Simple Transformation (ST) или же Обычная Трансформация - это проприетарный язык программирования, разработанный вендором для описания "внутренностей" SAP посредством XML. Трансформацией он называется ровно потому, что, при использовании данного инструмента, происходит преобразование ABAP-данных системы SAP в XML. Дефиницию термина ABAP-данных оставим на усмотрение каждого читающего.

См. Simple Transformations

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

Рисунок 1.

Определите структуру будущего XML, посредством описания новой трансформации

См. ST Program Structure

Рисунок 2.

Не забудьте активировать внесенные изменения.

Пример вызова обычной трансформации из ABAP-программы

Выполнить вызов ST можно с помощью команды CALL TRANSFORMATION

См. 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) необходимо указывать корневой узел вашей трансформации.

Рисунок 3.

А вот что бывает, если этому правилу не следовать

Как всегда, с любовью. Ваш ignatov.