Архив метки миграция

Миграция данных с помощью SAP ALE

VirVit 4 комментария

Здравствуйте все.
Традиционно миграцию данных выполняют классическим способом – файлики, LSMW, загрузка. Вариант классический, опробованный, рабочий. Чтобы не было скучно, мы решили пойти другим путем и провести миграцию данных с помощью SAP ALE. У подхода оказались интересные нюансы и преимущества перед традиционной миграцией. Стоит сразу же отметить, что слабонервным и начинающим подход противопоказан ввиду высокого порога вхождения в технологию.
Чтобы перенести данные с помощью ALE нам нужно настроить модель распределения, где указать откуда, куда и какие данные мы собираемся переносить. Это все делается в BD64, где сложностей не возникает.
Нам нужно использовать стандартный IDOC HRMD_A, если этих данных достаточно, либо расширить его своими инфотипами. Первые расширения IDOC обычно идут сложно, зато потом одно удовольствие клепать то да се. Для расширения концептуально мы создаем новые сегменты и прописываем их в наше расширение (WE30, WE31). Не забываем указать эти сегменты в T777D для каждого инфотипа.
Если нужно провести какие-то преобразования, то либо в правилах в SALE, либо в ФМ CONVERT*TO*, либо в CMOD/BADi делаем преобразования.
Делаем файловый порт источником данных и грузим апельсины бочками. Если нужно преобразования использовать для разных форматов файла, то идем в LSMW для обработки IDOC.
Звучит сложно, но только в первый раз. Взамен мы получаем отдельные плюшки в сравнении с LSMW.
  • Возможность на уровне системы управлять очередями и последовательностью загрузки данных
  • Возможность управлять производительностью. Да и сами IDOC грузятся намного быстрее, чем любая LSMW.
  • Легкий поиск ошибок, чего не скажешь про журналы LSMW.
  • Возможность поменять настройку и заново прогрузить тот же объем, что невозможно в LSMW (в большинстве случаев).
  • Возможность одним разом загружать данные в множество систем просто перенаправляя потоки данных в BD64.
  • Нет проблем с перезагрузкой данных, когда в LSMW нужно сначала удалять загруженные записи, а потом записать новые.
  • В случае миграции данных из “цивилизованной” системы, где есть возможности для интеграции, такая миграция может проходить практически в автоматизированном режиме (через файлы, веб-сервисы, OData или еще какие технологии).
  • Нет проблем с табличными инфотипами.
Но за сыр нужно платить. Плата заключается, как уже писал выше, в высоком пороге входа – надо много знать из технологии. Плюс, так как IDOC сохраняется напрямую в базу данных, но пользовательская логика для инфотипов не работает. Такие вещи приходится помнить и реализовывать в принимающей системе (например, вызывать те же функциональные модули прежде чем сохранить IDOC в инфотип).
LSMW, кстати, удобно скрестить с ALE как инструмент для быстрого преобразования практически любого текстового файла в структуру IDOC. Я писал ранее, как можно из файла формировать IDOC за считанные минуты. Если вспомнить, что LSMW можно запланировать как фоновое задание, то получается гибкий инструмент для загрузки файлов любого формата без участия человека или регулярной миграции данных между системами. И совершенно бесплатно.

FAQ. Загрузка образования через LSMW

VirVit 4 комментария

Вопрос:
Виталий, встречалась ли Вам такая задача загрузить изменения записей инфо-типа 0022 “Образование”. Мы добавили на экран инфо-типа Z-поля для внесения информации на английском языке. Теперь нужно довнести в эти поля данные. Но загрузить изменения не удается, у табельного номера несколько записей и программа LSMW загружает в первую запись, не осуществляя проверку на даты, вид образования..
Эта задача осуществима с помощью LSMW?

Ответ:
Это общая проблема для обновления записей через PA30 и LSMW. Чтобы решить задачу есть два варианта:
1. Удалить и загрузить правильно. То есть сначала выгружаем что есть, обновляем данными, удаляем из системы, загружаем правильные значения.
2. Если первый вариант не работает, то в ряде случаев можно “обратиться напрямую к записи” указав точные ключевые параметры: дата начала, дата окончания, подтип. Тогда LSMW откроет именно нужную запись. Но если есть две записи с 18 подтипом и одинаковыми датами, то увы, не сработает (два высших образования полученных одновременно).

Загрузка нескольких файлов в LSMW

VirVit One comment

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

На днях я загружал заработную плату с помощью стандартного BUS7023 ManagerExtPayroll. На выходе формируется IDOC, который складывается в T558* таблицы. Сама структура айдока иерархическая, где на верхнем уровне стоит сотрудник, ниже указаны периоды, а на третьем сами виды оплаты для периода.

Для простоты я решил сделать три соответствующих файла:

  • Сотрудники
  • Периоды
  • Виды оплаты

Каждый последующий файл содержит ссылку на предыдущий. Вот, что у меня получилось.

lsmw_py_0

Коды ошибок при чтении файлов в LSMW

VirVit No Comments

Иногда начинаешь загружать файлик в LSMW (Read Data пункт), он система выдает ошибку в виде кода без всякого пояснения. Чтобы понять, что за ошибка, предлагаю сохранить себе кусок кода, который отвечает за чтение файлов с компьютера клиента (Frontend). По коду ошибки можно понять, что пошло не так. Многих такие ошибки путают.

Программа /SAPDMC/SAP_LSMW_READ_FORMS:

Миграция заработной платы

VirVit No Comments

Привет. Часто на проектах любят использовать свои абап программы для загрузки данных в табличку T558*. Плюсы всем известны. Но иногда надо быстро запустить миграцию, а программистов в бюджете нет. Или даже ключа разработчика нет. На помощь приходят стандартные программы HINUULK0, RPULKT00, которые позволяют загрузить данные в таблички из текстовых файлов. Это может помочь сделать миграцию заработной платы чуточку быстрее.

Также можно использовать LSMW для загрузки данных через IDOC. Это BAPI BUS7023, метод INSERTLEGACY. Эта часть работает с проверками основных данных (табельник, периоды).