Выгрузить данные из ALV в XML с произвольной структурой

Задача: результат работы стандартного отчёта необходимо выгрузить в XML файл, с применением определенных правил построения XML (заданной схемой).

 

В качестве решения будут использованы шаблоны для ракурса Microsoft Excel в ALV. Инструкцию о том как их использовать вы можете найти на сайте sapland.ru Excel будет выступать в качестве конвертора.

Выгрузив файл через стандартный шаблон в Excel, мы получим лишь электронную таблицу без возможности выгрузки в нужном нам XML формате.

Для того чтобы иметь возможность сохранить в нужном формате, необходимо использовать возможности Excel по выгрузке XML, а именно XML карты. В excel карты выглядят примерно следующим образом:

Открыть этот инструмент можно через панель – разработчик. Карта представляет собой структуру XML файла, элементы карты можно присваивать полям Excel документа. Предположим, что нам необходимо на выходе получать следующий формат:

Для данного XML файла нам необходимо составить соответствующую карту (см. рисунок наверху). Карта может быть составлена на основе XML документа или XSD схемы. Нас интересует второй вариант. Т.к. схему нам хранить не нужно, создавать мы ее будем динамически. Присваивать элементы полям Excel так же динамически.

Один из вариантов создания XSD схемы:

Как видно из кода мы заранее подготовленную схему XSD загружаем в Excel. Далее необходимо привязать слолбцы к нужным XML полям:

Описывать работу с внутренними объектами VBA не стану, все можно найти по F1. Теперь необходимо вызвать данные процедуры во время открытия листа (например – Format). После чего данные на листе будут связаны с картой, их можно будет сохранить в нужном xml формате. Обратите внимание на код связывания, там жестко прописаны номера столбцов с данными. В результате связывания должно получится что-то вроде этого:

 

Сохранив в виде XML получим необходимую нам структуру. Таким образом, используя Excel в качестве конвертора, можно выгружать данные из ALV в XML с любой структурой.

  • Влад

    Замечательный сайт! Это относится ко всёму сайту (не только к данной статье конкретно).
    Материалы разнородные, но интересного и полезного очень много.
    Успехов!
    Влад, a sapper-abaper

    • Astrafox

      Спасибо за отзыв