LSMW — Инструкция

LSMW – инструмент для переноса данных из внешних систем в SAP систему.  Данные могут быть введены с помощью следующих технологий: Batch Input, Direct Input, BAPIs или IDocs. Далее инструкция как этим инструментом пользоваться.

Принцип работы LSMW:

Преимущества:

  • LSMW – часть SAP системы не зависимая от платформы
  • Большое количество возможностей по преобразованию данных
  • Поддержка основных технологий ввода: Bath Input, Direct Input, BAPIs, IDocs.
  • Удобный путеводитель по миграции данных
  • Является бесплатным инструментом для партнеров SAP

Основные функции:

  • Импорт данных (данные из файлов, электронных таблиц)
  • Преобразование данных в необходимый формат
  • Импорт данных в SAP систему.

До того как применять LSMW необходимо убедиться в следующем:

  • SAP система окончательно настроена и готова к вводу
  • Решите, имеет ли смысл использовать инструмент, его использование оправдано на больших объемах данных. Скорость импорта для режима Direct Input и Bath Input примерно 10000 записей в час, величина может меняться в зависимости от аппаратной части сервера.
  • Определитесь с транзакциями в SAP системе, через которые будете выполнять импорт данных.  Созданы ли стандартные объекты Direct Input, Batch Input, есть ли необходимые BAPI.
  • Протестируйте выбранные транзакции вручную, определите, какие поля являются обязательными к заполнению.
  • LSMW не извлекает данные из внешних систем, их необходимо предварительно подготовить. Формат файла должен соответствовать возможностям чтения файлов LSMW. Например: кодировка должна быть либо ASCII или IBM.
  • Определитесь с методом импорта данных (BAPI, Direct Input и т.п.).

Предварительная настройка

Убедитесь что у пользователя, под которым будет происходить импорт, достаточные полномочия:

Уровень авторизации Профиль Функции
Просмотр B_LSMW_SHOW Пользователю разрешается просматривать все проекты LSMW
Выполнение B_LSMW_EXEC Пользователь может выполнять и редактировать шаги проектов
Изменение B_LSMW_CHG Пользователь обладает полномочиями на просмотр объекта LSMW, импорт и чтение данных.
Администрирование B_LSMW_ALL Все полномочия на LSMW

Внешний вид после запуска инструмента (транзакция LSMW):

Project – имя проекта, например «Логистика»

Subproject – имя подпроекта, например «Закупки»

Object – имя объекта LSMW который включает все операции по переносу данных, например «Заявка».

С помощью кнопок на начальном экране можно:

  • Запустить проект на выполнение
  • Создать новый проект, объект
  • Изменить проект
  • Просмотреть все объекты LSMW в системе
  • Просмотреть все свои объекты
  • Просмотреть все объекты к проекту
  • Изменить документацию к проекту

Администрирование

Для копирования, изменения, удаления объектов, проектов и подпроектов необходимо перейти в администрирование: Go to -> Administration.

Импорт данных шаг за шагом

После выбора (создания) проекта, подпроекта и объекта LSMW нажмите ENTER, вы попадете на экран определения шагов для объекта:

ВНИМАНИЕ! При авторизации в SAP GUI на английском языке названия шагов отображаются на английском языке, при авторизации на русском языке, отображаются только номера шагов. Однако при работе на EN русские названия в считываемых файлах отображаются некорректно, поэтому загрузку следует осуществлять ТОЛЬКО с авторизацией на RU(русском) языке в SAP GUI.

С помощью кнопки Personal Menu вы определяете, какие шаги будут использоваться в объекте. Кнопка Object Overview позволяет посмотреть всю информацию по выбранному объекту.  Action Log – просмотр истории изменений, запусков. Execute – выполнить выбранный шаг. Для изменения шагов выберите Double Click = Change.

Определение атрибута объекта (Maintain Object Attributes)

  • Укажите, как будет происходить импорт данных однократно (once) или с периодичностью (periodic – в статье не рассмотрены).  При периодичном импорте необходимо настроить шаг (Frame Program for Periodic Data Transfer).
  • Определите, какой тип импорта будете использовать: Standard Bath /Direct Input – заранее подготовленные программы, Batch Input Recording – ранее созданная запись пакетного ввода, (Для записи на начальном экране необходимо выбрать GoTo -> Recordings) BAPI – использование методов бизнес объектов (BAPI), IDoc.

Определение пользовательских структур(Maintain Source Structures)

На данном шаге определяются имена пользовательских структур их описания и иерархия. Одна структура может включать несколько других, которые в свою очередь могут включать другие и т.д. Пользовательская структура заполняется из внешних данных, после чего используется для переноса данных в SAP систему.

Определение полей для структур(Maintain Source Structures)

Этот шаг определяет, из каких полей состоят пользовательские структуры. При создании поля можно определить ее тип, длину, имя, описание. Используя параметр «Selection Parameter for Import/Convert data» мы определяем, будет ли данное поле появляться на экране в шагах чтения, конвертации данных, если да то данные из файла будут считаны в соответствии с введенным значением в эти поля. Структуру можно скопировать из внешнего файла, репозитария, другого объекта.  При копировании из внешнего файла с разделением полей табуляцией можно воспользоваться Excel структура файла будет примерно такой:

Определение связей структур (Maintain Structure Relations)

На данном шаге определяется связь между структурами объекта импорта (Поля в структурах BAPI, поля для пакетного ввода и т.п.) и пользовательскими структурами. В приведенном выше примере структуры из пакетного ввода: BGR00, BKN00, BKNA1, BKNB1 будут заполнены из пользовательской структуры CUSTOMER_HEADER, структура BKNVK из CUSTOMER_CONTACTS. Обратите внимание на то, что многие программы пакетного ввода содержат структуры BGR00 и BI000, они должны быть заполнены всегда.

Определение связей и правил преобразования (Maintain Field Mapping and Conversion Rules)

На данном шаге определяется связь между полями пользовательских структур и полями структур назначения (Полями пакетного ввода, BAPI и др.), а так же правила преобразования. Все поля структур назначения, которые были заполнены на предыдущем шаге, будут отображены на этом экране. Поля содержат следующую информацию:

  • Описание поля
  • Присвоенное поле из структуры назначения
  • Правило, по которому присваивается значение полю (Константа, пустое, присвоение и т.п.)
  • Код программы преобразования

Некоторые поля являются техническими и заполняются системой автоматически, правило для них присваивается как Default Settings (зеленые записи).  Изменение значений данных полей может повлиять на ход выполнения импорта.

Система позволяет автоматически сделать присвоение полей, в случае если их имена совпадают: Extras -> Auto-field Mapping.

Правила присвоения полей:

  • Initial: Пустое значение для поля. Когда выбрано данное правило значение поля может принимать  следующие значения: для стандартного пакетного ввода – пустое символьное значение ‘’, для записи пакетного ввода ‘/’, для BAPI или IDoc для символьных полей ‘’, для полей числовых ‘0..00’.
  • Move: Работает так же, как и ABAP команда MOVE.
  • Constant: Значение по умолчанию.
  • Fixed value (reusable):  Присваивается значение переменной определенной на шаге Maintain Fixed Values, Translations, User-Defined Routine.
  • Translation (reusable): Определяется порядок преобразования поля, само преобразование определяется в шаге Maintain Fixed Values, Translations, User-Defined Routine.
  • User-written routine (reusable): Определяется имя кодировки для поля, сама кодировка так же определяется на шаге Maintain Fixed Values, Translations, User-Defined Routine.
  • Prefix: Задается значение, которое должно быть перед содержимым поля.
  • Suffix: Задается значение, которое должно быть после содержимого поля.
  • Concatenation: Вы можете задать объединение двух или нескольких исходных полей в одно поле назначения.
  • Transfer left-justified: записать содержимое с выравниванием по левому краю.
  • ABAP coding: задает кодировку ABAP для преобразования поля.  В кодировке можно использовать все поля исходной структуры, глобальные переменные, глобальные функции.
  • XField: специальная функция для IDocs и BAPI объектов. Функция заполняет так называемые X-структуры (структуры изменений для BAPI функций). В случае если поле было изменено, соответствующее поле X структуры должно иметь значение «Х». Следующий код генерируется автоматически:

If not <field in the data transfer structure> is initial.
<field in X-structure> = ‘X’.
else.
<field in X-structure> = ‘’.
Endif.

Нажав на кнопку выбора варианта и выбрав последние три галочки, вы можете определить дополнительную кодировку для событий до запуска транзакции, после запуска и т.п.

Например, кодировка __BEGIN_OF_TRANSACTION__: ее выполнение начинается до момента обработки записи, в случае создание объекта в R3 на данном этапе можно проверить его существование в системе, в случае если он уже есть, пропустить текущую запись с помощью глобальной функции — skip_transaction. Таким образом, можно уберечься от падения в дамп сессии пакетного ввода при импорте данных.

Кроме того кодировки позволяют динамически менять транзакции и записи пакетного ввода манипулируя полями bkn00-tcode и TABNAME. Например, в случае если объект присутствует в системе запустить пакетный ввод на его изменение.

На шаге Maintain Fixed Values, Translations, User-Defined Routines с помощью правил преобразования (Translations) можно определить, чем будет заменены значения из исходных структур, определять правила как для конкретных значений, так и для диапазонов. Кроме того на этом шаге определяются константы используемые на предыдущем (Fixed Values) и кодировки которые вызываются не однократно (User-written routine).

Определение файлов(Specify Files)

На данном шаге определяются файлы:

  • С вашими данными (Legacy Data)
  • Файл с правилами чтения данных …lsmw.read ставится автоматически
  • Файл с правилами преобразования данных …lsmw.conv ставится автоматически

При присвоении файла с данными можно выбрать:

  • Находится ли в файле содержимое одной структуры, либо файл содержит несколько структур (Data for one source structure или Data for multiple source structures)
  • Определить разделители в файле между полями (; tab и др.)
  • Содержит ли файл названия полей (Field names at start of file, необходимо чтобы имена совпадали с именами в пользовательской структуре)
  • Совпадает ли порядок полей в файле с порядком в пользовательской структуре (Field Order Matches Source Structure Definition)
  • Тип файла (Текстовый, бинарный) и кодовая страница по умолчанию (ASCII или IBM).

На данном шаге можно определить шаблон для группы файлов, на рисунке ниже показано как это делается, в данном примере структура HEADER будет заполняться из набора файлов с именами файлов: PO HEADER * .txt, структура POSITION из файлов PO POSITION* .txt.  Обратите внимание что файлы с правилами чтения, преобразования так же создаются со значением «*» в имени файла, кроме того необходимо создать 2 набора (wildcards):

Присвоение файлов структурам(Assign Files)

На данном этапе задается из какого файла будет читаться структура. Если структура одна данный шаг можно пропустить.

Генерация программы считывания (Generate Read Program)

На данном этапе генерируется программа чтения данных из файла. Можно пропустить.

Просмотр программы чтения (Generate Read Program)

Просмотр исходника программы чтения файлов. Можно пропустить.

Чтение данных (Read Data)

На данном шаге определяется количество записей, которые необходимо считать (Transaction Number).  Если при определении полей структуры было указано что поле должно показываться на экране выбора чтения/конвертации данных, так же его необходимо заполнить. Так же задаются правила для преобразования чисел и дат.

В данном случае при чтении файла проверяется поле CUSTOMERNUMBER.

Просмотр считанных данных (Display Read Data)

На данном шаге отображаются считанные из файлов данные.

Генерация программы преобразования (Generate Conversion Program)

На данном этапе генерируется программа по преобразованию считанных данных. Можно пропустить.

Конвертация данных (Convert Data)

На данном этапе производится преобразование считанных данных в поля объекта LSMW. (BAPI, поля Batch input и т.п.). Если в пользовательской структуре были поля указанные как поля ввода, необходимо их так же ввести.

Просмотр присвоений после конвертации (Display Converted Data)

На данном шаге показываются все присвоения после конвертации данных.

Импорт данных

В зависимости от типа объекта LSMW далее будут отображены следующие шаги:

  • Standard batch input or Recordings:   Generate batch input session – создание сессии пакетного ввода, Run batch input session – запуск сессии пакетного ввода.
  • Standard direct input: start direct input session – запуск сессии direct input.
  • BAPI или IDOCs: Start IDoc Creation, Start IDoc Processing, Create IDoc Overview, Start IDoc processing.

После выполнения шагов по импорту данных, если все шаги были правильно определены, данные будут записаны в SAP систему.  При запуске в продуктивной системе, если расположение файлов не изменилось, выполнять пункты до определения файлов уже не нужно.

Перенос проектов LSMW.

Для переноса проекта LSMW в систему контроля качества (продуктивную систему) необходимо создать запрос на перенос. На главном экране LSMW Extras -> Generate Change Request.  При переносе старый проект  удаляется и создается заново.

Экспорт/импорт проектов.

Для экспорта/импорта проектов в главном меню: Extras -> Export (Import).

Запись пакетного ввода (Recordings)

Для создания записи пакетного ввода на начальном экране необходимо перейти по Go to -> Recordings.  Обратите внимание, что при создании записи нет режима симуляции, т.е. все изменения которые совершите в системе, сохранятся в ней. Для объекта LSMW можно назначить несколько записей пакетного ввода.

Вы можете назначать полям пакетного ввода значения по умолчанию (столбец слева), поля которым присвоены имена (столбец справа — красные) на шаге «Maintain Field Mapping and Conversion Rules» будет возможно присваивать значения из пользовательской структуры (создавать привязку).