Комментарии по теме

«Инстру­кция по созданию отчёта в тра­нза­кции SQVI»
Олег Точенюк:
Ну это вы погорячились вязать код БЕ заголовка, с кодом БЕ позиции. Код БЕ заголовка отвечает за то, где будет отражена кредиторская задолженность, а код БЕ в позиции отвечает за то, где будет...
«Методика создания варианта тра­нза­кци­и: тра­нза­кция SHD0»
Олег Точенюк:
Как вариант решения проблемы, нашел тут у себя создание системного варианта транзакции MBPM. Думаю в данном случае можно попробовать так тоже сделать.   === Для этого запускаем стандартную...
«Инстру­кция по созданию отчёта в тра­нза­кции SQVI»
Елена Ткаличенко:
Добрый день! Алексей, а можно и мне самопальную инструкцию? Заранее спасибо

База знаний

Вы можете подписаться на эту колонки этого автора, если авторизируетесь или зарегистрируетесь

Транзакция LSMW инструкция по применению. Часть 1

06 августа 2018, 18:36

Оглавление книги

1. Вступление

2. Массовое обновление материалов методом Batch Input в транзакции LSMW

3. Массовое обновление материалов методом BAPI в транзакции LSMW

4. Загрузка классификации ОЗМ методом Direct Input в транзакции LSMW

5. Загрузка длинных текстов материала методом Direct Input в транзакции LSMW

6. Загрузка остатков ОЗМ методом BAPI в транзакции LSMW

7. Массовое сторно документов материала методом Batch Input транзакции LSMW

8. Полезные возможности транзакции LSMW

9. Загрузка данных из Excel в транзакции LSMW 

Благодарности

Эта книга не состоялась бы без поддержки людей, с которыми меня свела судьба, а именно: Светланы Балакиревой, Александра Дублина, Юрия Нечитайлова, Михаила Сковородина.

Транзакция LSMW, как правило, сопровождает проекты внедрения и активной поддержки; и на этих проектах я работал с людьми, которые являлись настоящими профессионалами, и (что важно для меня) помогали мне при решении различных задач. Говорю о: Виталии Сапунове, Владимире Петриеве, Юрии Синко, Андрее Белобродском, Олеге Точенюке, Татьяне Кузьмичёвой, Сергее Смирнове, Анне Трещаловой, Павле Троеве, Александре Шиляеве, Сергее Андриановском.

Благодарю ключевых пользователей и бизнес-экспертов, с которыми были реализованы эффективные решения: Зайцеву Татьяну, Дмитрия Обедзинского, Ирину Петряшову, Дмитрия Леонтьева, Ивана Леонтьева, Людмилу Гусарину, Татьяну Тимохину, Татьяну Скорлыгину, Алексея Смирнова, Эльмиру Рахматбаеву, Juergen Graupner, Alan Green.

Также я благодарен руководителям, которые помогали мне реализовывать идеи и поддерживали в трудных ситуациях: Анне Лобачевской (Юрьевой), Юрию Желтоухову (первое обучение по LSMW было инициировано Юрием, что в дальнейшем явилось прообразом мастер-класса «LSMW: инструкция по применению» и этой книги), Сергею Чумак, Марии Лавровой, Татьяне Типсиной, Марии Лорман, Лебедеву Дмитрию, Шленкину Станиславу.

Спасибо коллегам, которые поддерживали меня: Мясоутовой Ирине, Диковой Алевтине, Свиридову Роману, Спиридоновой Наталье, Алексею Сутягину, Михаилу Абашину, Валерию Фатьянову, Алексею Слободянюк, Роману Байбак, Дмитрию Шулейко, Андрею Налимову, Наталье Смирновой, Вадиму Сухоруких, Денису Желтикову, Алексею Митько.

Огромное спасибо всем слушателям моих мастер-классов за посещение, интересные вопросы и обоснованную критику.

Отдельное спасибо Жанне Максаковой за поддержку, терпение и последовательное применение в своей практике материалов мастер-класса.

Благодарю своих родителей Светлану и Виктора Башкатовых.

Вступление

В этой книге приводятся практические решения задач с использованием транзакции LSMW для загрузки данных на основе методов Batch Input, BAPI и Direct Input. Примеры базируются на бизнес-сценарии миграции данных, приведённом чуть далее во вступлении.

Транзакция LSMW не переведена на русский язык полностью, поэтому в тексте использованы скриншоты в том виде, как они встречаются на практике, а уже в комментариях дополнительно указывается перевод терминов на русский язык.

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

Транзакция LSMW позволяет сэкономить время на выполнении рутинных задач, высвободив его для решения задач, требующих творческих усилий.

Бизнес-сценарий

Начнём с описания конкретного примера бизнес-сценария. Предприятие в Северо-Западном округе подключает к системе SAP ERP одно из своих подразделений. Одной из задач, требующих решения, является миграция остатков для этого подразделения. Для этого консультантам нужно выполнить следующие действия (рис. А):

Рис. А. Описание бизнес-сценария

  1. Обновить существующие основные записи материалов (Material Master Data).
  2. Создать новые основные записи материалов (ОЗМ).
  3. Загрузить классификации ОЗМ.
  4. Загрузить длинные тексты ОЗМ.
  5. Загрузить остатки (создать документы материалов).
  6. Создать возможность массового сторно документа материалов.

В последующих главах подробно рассматривается реализация данных действий с использованием транзакции LSMW на основе упомянутых ранее методов. В ходе решения практических задач с использованием данной транзакции будут приведены полезные советы и указаны тонкости, позволяющие ускорить весь этот процесс. Однако ряд тонкостей, связанных с использованием транзакции LSMW, всё же не удастся подчеркнуть на примере реализации действий именно этого бизнес-сценария, поэтому в конце книги приводится отдельная глава, посвящённая ускользнувшим от внимания полезным трюкам по работе с транзакцией LSMW. Помимо этого, в ней описаны некоторые альтернативные инструменты загрузки данных.

Данная книга способствует достаточно полному освоению инструмента загрузки данных.

Массовое обновление материалов методом Batch Input в транзакции LSMW

В рамках задачи миграции данных (рис. 1.1) нам требуется внести изменения в существующие записи материалов, а именно: ограничить их использование, поставив соответствующий статус материала, группу полномочий, а также обновить краткий текст ОЗМ.

Рис. 1.1. Этап обновления существующих ОЗМ в общей схеме задач миграции

Далее будет показано решение задачи обновления данных методом пакетного ввода. Метод пакетного ввода предполагает предварительное создание записи (recording) на основе ручного указания значений для полей. Система фиксирует поля, которые нужно заполнять. Значения для полей представляют собой переменные данные, которые можно заполнять из внешнего файла.

Помимо этого, мы обсудим следующие важные вопросы:

  • использование дополнительного ABAP-кода при обновлении данных;
  • решение проблемы внешних нулей при загрузке материалов из внешнего файла;
  • работа с Auto-Filled Mapping.

1.1. Практическое решение задачи

Постановка задачи: требуется обновить основные записи материалов, а именно: ракурс Основные данные 1 (Basic Data 1) и Основные данные 2 (Basic Data 2). В таблице 1.1 приведены поля для загрузки.

Табл. 1.1. Поля для обновления данных основной записи материала

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

Нам нужно:

  1. обновить поле «Краткий текст материала»;
  2. проставить статус Inactive;
  3. проставить группу полномочий;
  4. заполнить поле Production/Inspection memo (Рабочая инструкция/Инструкция по контролю качества).

Предварительный шаг

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

  1. Запустим транзакцию MM02 (рис. 1.2) и укажем материал 403339 ; выделим Basic Data 1 (Основные данные 1) и Basic Data 2 (Основные данные 2) (рис. 1.3).
  2. К тексту добавим префикс NotInUse (если не помещается, то «отрезаем» текст материала в конце). Ставим статус Inactive, ставим нужную группу полномочий, переходим на ракурс Basic Data 2 (Основные данные 2) (рис. 1.4) и ставим нужное значение в поле Production/Quality Memo; сохраняем материал (рис. 1.5).

Рис. 1.2. Запуск транзакции MM02 для изменения основной записи материала

Рис. 1.3. Выделяем ракурсы Основные данные 1 (Basic Data 1) и Основные данные 2 (Basic Data 2)

Рис. 1.4. Обновляем данные на ракурсе Основные данные 1 и переходим к ракурсу Основные данные 2

Рис. 1.5. Обновляем Основные данные 2 и можем сохранить изменения

Текущую задачу мы решим с помощью последовательности шагов, выделенных в отдельные последующие параграфы.

Шаги решения

Шаг 1: создание/выбор проекта, подпроекта и объекта

Запустим транзакцию LSMW, заполним данные Project (проект), Subproject (подпроект), Object (объект), нажмем кнопку Создать (если проект уже создан, то нажимаем кнопку Выполнить) (рис. 1.6). Данные для создания проекта приведены в таблице 1.2. Заполнение описания составляющих объекта показано на рис. 1.7.

Рис. 1.6. Для создания проекта нажимаем кнопку Создать (если проект существует, нажимаем Выполнить)

Рис. 1.7. Заполнение описания проекта (Project), подпроекта (Subproject), объекта (Object)

Табл. 1.2. Данные для создания Object (объекта) в транзакции LSMW

После создания и/или запуска проекта система откроет основное меню транзакции LSMW. Пункты меню зависят от метода загрузки и могут настраиваться (подробнее об этом в дальнейших публикациях).

Шаг 2: параметры метода загрузки: выбор/создание записи пакетного ввода (Batch Input)

Дважды щелкаем по пункту меню Maintain Object Attributes (рис. 1.8). На этом шаге мы указываем способ загрузки данных и некоторые базовые настройки пакетной загрузки. Выбираем пункт Batch Input Recording, нажимаем кнопку Overview (рис. 1.9).

Рис. 1.8. Запускаем пункт меню Maintain Object Attributes

Рис. 1.9. Указываем способ загрузки Batch Input Recording и нажимаем на кнопку список записей (Overview)

Нажимаем кнопку Создать запись и переходим в режим создания записи (рис. 1.10).

Рис. 1.10. Создание записи

В нашем случае мы повторяем все шаги из предварительного шага (собственно, для этого он и был сделан). Вводим нужную нам транзакцию — MM02, изменение материала (рис. 1.11), указываем изменяемый код материала и нажимаем Enter (рис. 1.12), выделяем ракурсы Основные данные 1 (Basic Data 1) и Основные данные 2 (Basic Data 2) (рис. 1.13).

Рис. 1.11. Начинаем запись, задав транзакцию LSMW

Рис. 1.12. Вводим код материала и нажимаем Enter

Рис. 1.13. Выделяем ракурсы Основные данные 1 и Основные данные 2 и подтверждаем ввод

Меняем текст материала на: NotInUse: + [Существующий текст], устанавливаем статус в поле X-plant material status (статус материалов на нескольких заводах), устанавливаем группу полномочий (поле Authorization Group), переходим к ракурсу Основные данные 2 (Basic data 2) (рис. 1.14). Указываем значение в поле Production/Quality Memo (рабочая инструкция/инструкция по контролю качества) и сохраняем материал (рис. 1.15).

Рис. 1.14. Изменяем данные в ракурсе Основные данные 1 и переходим к ракурсу Основные данные 2 

Рис. 1.15. Заполняем данные в ракурсе Основные данные 2 (Basic Data 2) и сохраняем материал

После сохранения мы получили запись Batch Input. Рекомендую выполнить сохранение записи, а затем перейти к редактированию (из-за сетевых проблем или по другим причинам результаты труда записи могут быть потеряны — лучше стараться избегать возможных потерь собственных результатов) (рис. 1.16).

Рис. 1.16. Сохранение полученной записи Batch Input

Затем нам необходимо назначить технические имена загружаемым параметрам. Также обозначим, какие параметры у нас будут переменными, а какие — постоянными.

В нашем случае переменными параметрами будут:

1. номер материала (RMMG1-MATNR) (рис. 1.17);

2. группа полномочий (MARA-BEGRU) (рис. 1.18);

3. Production/Quality Memo (MARA-FERTH). В нашем случае ID из внешней системы по документации (рис. 1.19).

Рис. 1.17. Параметр номера материала в созданной записи (Recording) MAT_IA01 

Рис. 1.18. Параметр Группа полномочий (Authorization Group) (A h i i G ) в созданной записи (Recording) MAT_IA01

Рис. 1.19. Параметр Рабочая инструкция/Инструкция по контролю качества (Production/Inspection Memo) в созданной записи (Recording) MAT_IA01

Постоянным параметром будет статус на нескольких заводах (MARA-MSTAE) (рис. 1.20).

Рис. 1.20. Параметр Статус материала на нескольких заводах (Cross-Plant Material Status) в созданной записи (Recording) MAT_IA01

Остальные параметры нам не нужны (такие как единица измерения MARA-MEINS, группа материалов MARA-MATKL и другие, не обозначенные в пунктах выше), поэтому мы их удалим. Если мы их не удалим, то они могут испортить данные других обрабатываемых записей. Поставим курсор на удаляемое поле и нажмем кнопку Delete Screen Field (Ctrl + F5) (рис. 1.21).

Рис. 1.21. Пример удаления поля из записи пакетного ввода (Recording)

Удалим все поля, кроме текста материала (MAKT-MAKTX), — для этого поля мы будем использовать ABAP-логику. То есть удалим поля, обозначенные в таблице 1.3.

Табл. 1.3. Поля, которые следует удалить из записи пакетного ввода

Для оставшихся полей зададим имя поля, чтобы значение можно было задавать при конвертации данных (либо из входного файла, либо с помощью константы или ABAP-кода). Зададим для поля Номер материала (RMMG1-MATNR) имя параметра MATNR. Для этого щёлкнем специальную область справа от поля (рис. 1.22) и введем имя параметра MATNR; при этом уберем для поля значение по умолчанию (Default value) (рис. 1.23).

Рис. 1.22. Дважды щелкаем по полю RMMG1-MATNR

Рис. 1.23. Указываем имя параметра Name MATNR значением MATNR и убираем Default Value

Проделаем аналогичные действия для остальных полей. Данные, которые нужно вводить, представлены в таблице 1.4.

Табл. 1.4. Параметры для полей записи пакетного ввода

После всех действий сохраняем обработанную запись пакетного ввода и выходим на предыдущий экран (рис. 1.24).

Рис. 1.24. Сохраняем и выходим из редактирования записи после всех нужных действий

Теперь в списке записей у нас есть запись MAT_IA01, которую мы можем использовать. В случае необходимости мы можем создать еще одну запись или скопировать и отредактировать эту запись (рис. 1.25).

Рис. 1.25. Созданная запись и панель управления записью

Для наших целей данной записи будет достаточно, поэтому мы выходим из экрана обзора записей пакетного ввода через кнопку Back (Назад) (рис. 1.26).

Рис. 1.26. Выход из экрана работы с записью

Затем выбираем созданную запись в поле Recording, сохраняем шаг создания пакетного ввода и выходим в основное меню шагов транзакции LSMW, чтобы перейти к следующему шагу (рис. 1.27).

Рис. 1.27. Выбор записи, сохранение и возврат к основному меню транзакции LSMW

Продолжение следует.

Об авторе

Олег Башкатов — консультант-разработчик по функционалу SAP SD, MM, RCM, SAP EWM. Обладает опытом работы с SAP-продуктами с 2008 года. Принимал участие как в полномасштабных проектах (все стадии от анализа, концепта до конфигурации и поддержки продуктивной эксплуатации), так и в roll-out проектах (консультирование по локальной специфике) как на территории России, так и за рубежом. Имеет сертификаты:

1. P_SD_65 (SAP Certified Application Professional — Order Fulfillment with SAP ERP 6.0 EhP5);

2. C_TAW12_731 (SAP Certified Development Associate — ABAP with SAP Net Weaver 7.31).

Успешно осуществил настройку модулей MM, SD, RCM, PS, а также проводил разработки более чем у 7 заказчиков, среди которых такие предприятия, как ООО «Сименс», ПАО «МОЭСК», ПАО «ФСК ЕЭС», ПАО «Северсталь», ООО «Марс», ПАО «Группа Черкизово», ТОО «SINOOIL». Имеет собственные разработки для SAP ERP. Сайт автора: http://www.olegbash.ru/



В данной колонке публикуются главы из книги Олега Башкатова "Транзакция LSMW инструкция по применению".

  

   

   

    

Ключевые слова : Transaction Codes

Функциональная область : Информационные технологии / IT, Basis, ABAP

Ролевое назначение : SAP Консультант / Consultant, Ключевой пользователь / Expert

Комментарии:

Олег Точенюк (Рейтинг: 10718) 10:30, 21 августа 2018

Да хорошая местами была вещь LSMW, особенно начинаешь ценить после перехода на Data Migration Cockpit, вроде бы все мощнее, но как-то сильно проблемно оказалось.
 
PS: Не знаю как ранее, а с S/4 1709, LSMW активно выпиливается, точнее перестает работать и остается только Migration Cockpit, а там как обычно новая квартира, новые тараканы, соседи, район города, и не ясно пока с какой стороны и как подходить :-)
07:53, 24 августа 2018

Олег Башкатов (Рейтинг: 8020)

в S/4 много чего поменялось :-) и ABAP (как синтаксис так и подход) и структура данных FI и экранный интерфейс.
из-за этого LSMW неприменима в некоторых местах.
 
LSMW разрабатывалась еще когда был HEADER LINE и применяется еще, когда применяется функциональный подход и ODATA-сервис делается в одну строчку кода )))
 
PS. Тараканы-то старые остались; шаги прежние ведь: проверка, загрузка, контроль. то не те данные загрузили, или неправильно CopyPaste сделали ...
10:46, 26 августа 2018

Олег Точенюк (Рейтинг: 10718)

Не тут хуже... к сожалению :-)