Меню

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

|

В этой книге приводятся практические решения задач с использованием транзакции

LSMW для загрузки данных на основе методов Batch Input, BAPI и

Direct Input. Примеры базируются на бизнес-сценарии миграции данных.

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

Продолжение книги.

Часть 1  Часть 2  Часть 3  Часть 4  Часть 5  Часть 6  Часть 7

В этой главе будет описано решение задачи по массовому сторно документов материала. Загрузчик на массовое сторно документов материала практически всегда сопровождает загрузку остатков, в силу того что не всегда получается сделать загрузку с первого раза корректно. Загрузчик, представленный в настоящей главе, выполняет загрузку не из файла на фронтэнде, а из файла на сервере приложений (application server). В решении бизнес-задачи мы находимся на этапе создания инструмента для массового сторно документов материала, которые загружали начальные остатки (рис. 6.1). В настоящей главе не описываются подробно те шаги, которые были детально описаны в предыдущих главах.

Рис. 6.1. Задача сторно документов материала в общей схеме задач миграции

Задача состоит в создании возможности массового сторно документов материалов. При этом дата сторно должна быть та же, что и в исходном документе материала. Файл источника данных будет находиться на сервере.

6.1. Операционные условия

Для решения поставленной задачи мы будем использовать пакетный ввод на транзакцию MBST. Дату найдем с помощью дополнительной подпрограммы. Таким образом, в исходном файле у нас будет всего один столбец, где будет храниться номер документа материала (см. таблицу 6.1). В качестве года документа материала будем использовать текущий год.

Табл. 6.1. Поля для массового сторно документов материала

На предварительном шаге: подготовим данные для загрузчика, а именно — пройдемся вручную в транзакции MBST. В транзакции MBST укажем сторнируемый документ материала и нажимаем E, затем нажимаем кнопку Сохранить (рис. 6.2 и рис. 6.3). Такие простые действия позволяют сторнировать документ материала.

Рис. 6.2. Начальный экран транзакции MBST (сторно документа материала)

Рис. 6.3. Сообщение об успешном сторнировании документа материала

Для подобных действий в системе метод Batch Input весьма подходит. Количество экранов минимально и количество данных также минимально.

6.2. Пошаговое решение задачи

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

Создадим новый объект транзакции LSMW согласно данным из таблицы 6.2.

Табл. 6.2. Данные для создания объекта LSMW

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

Дважды щелкаем по пункту меню Maintain Object Attributes, указываем имя записи (рис. 6.4).

Рис. 6.4. Указываем имя записи для Batch Input Recording

Выбираем пункт Batch Input Recording, нажимаем кнопку Overview. Создаем запись для транзации MBST; на выходе получаем данные как на рис. 6.5.

Рис. 6.5. Результат создания записи в Batch Input Recording

Шаг 3: создание структуры источника [данных]

Дважды щелкаем по пункту Maintain Source Structures в основном меню транзакции LSMW. После создания структуры система отобразит экран как на рис. 6.6.

Рис. 6.6. Создаем структуру источник для объекта транзакции LSMW

Шаг 4: ведение полей структуры источника [данных]

Щелкаем дважды по пункту Maintain Source Fields в основном меню транзакции LSMW.

Указываем поле в структуре (рис. 6.7.)

Рис. 6.7. Указываем поле в структуре — источнике данных

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

Табл. 6.3. Описание структуры — источника данных для массового сторно документов материала

Шаг 5: соответствие структур источника данных и записи

Дважды щелкаем по пункту Maintain Structure Relations в основном меню транзакции LSMW. На этом шаге нам необходимо определить (задать) соответствие между внутренней структурой данных (то есть полями записи) и структурой источника данных. В случае метода записи этот шаг выполняется чаще всего автоматически; и от того, кто готовит загрузчик, требуется подтвердить привязку: сохранить и выйти к обзору списка шагов, чтобы перейти к следующему шагу (рис. 6.8).

Рис. 6.8. Результат присвоения структуры источника данных и записи

Шаг 6: мэппинг (соответствие) полей источника [данных] и полей записи пакетного ввода

Дважды щелкаем в основном меню транзакции LSMW по пункту Maintain Field Mapping and Conversion Rules. Нажмем на кнопку Layout и откроем блоки: Global Definitions, Processing times и Form Routines (ABAP Subroutines) (рис. 6.9).

Рис. 6.9. Откроем блоки lля вставки нужного нам ABAP-кода

Детальный мэппинг полей и блоков приведен в таблице 6.4.

Табл. 6.4. Мэппинг полей структур BAPI и входного файла

Заметим, что подпрограмма ur_skip_rec была создана в одной из предыдущих глав в рамках этого же проекта, поэтому эта подпрограмма доступна нам и сейчас. Напомним, что подпрограмма ur_skip_rec является user-defined routines skip_rec, определяемая в пункте меню транзакции LSMW Maintain Fixed Values, Translations, User-Defined Routines (рис. 6.10). Сам код подпрограммы приведен в таблице 4 вместе с остальными полями. Детальное пояснение подпрограммы было дано в главе 4.

Рис. 6.10. User defined routines skip_rec

Шаг 7: указание пути к файлу (application server)

Прежде чем указывать путь к файлу, необходимо создать файл по нужному нам формату. Для создания входного файла будем использовать табличный редактор Excel. Первую строку в Excel заполним техническими именами полей входной структуры. А строки, начиная со 2-й, заполним уже конкретными значениями (рис. 6.11).

Рис. 6.11. Данные загрузки в табличном редакторе Excel

Затем, так как нам нужно сохранить файл из табличного редактора Excel в формате xlsx, скопируем все данные и сохраним в блокноте (в формате .txt: можно выполнить операцию Save As — Сохранить как). На выходе должен получиться файл в формате txt с табуляторами в качестве разделителей (рис. 6.12).

Рис. 6.12. Данные в блокноте, перенесенные из табличного редактора Excel

Мы создали файл на жестком диске ПК (обратим внимание, что кодировка файла UTF-8). Однако теперь нам необходимо создать файл на Application Server. Для первоначального создания/загрузки файла на application server можно использовать транзакцию CG3Z (Upload file) (рис. 6.13). Необходимо заметить, что из SAP-системы можно загрузить файл в ограниченное количество директорий на application server. По поводу того, какие директории можно использовать, а какие — нет, лучше проконсультироваться с командой базиса на каждом конкретном проекте. Более того, рекомендуется выделить для LSMW отдельную директорию, а в рамках общей папки LSMW выделить подпапки для конкретных проектов (но это очень идеальная ситуация). Как правило, папки для временной загрузки доступны для SAP-пользователя на Linux. К временным папкам относятся: /usr/sap/tmp/, /tmp/. Список папок можно просмотреть с помощью транзакции AL11 или функционального модуля /SAPDMC/LSM_F4_SERVER_FILE. Мы выполним первоначальную загрузку (а вместе с ней и создание файла на сервере) в папке /usr/sap/tmp/ (рис. 6.13).

Рис. 6.13. Успешная файла на application server

После создания текстового файла на сервере приложений переходим к указанию его в качестве файла-источника. Дважды щелкаем по пункту меню транзакции LSMW Specify Files. Задаём параметры файла (рис. 6.14.).

Если хотите прочитать статью полностью и оставить свои комментарии присоединяйтесь к sapland

У вас уже есть учетная запись?

Войти

Обсуждения Количество комментариев1

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

Екатерина Васина

  |  31 октября 2019, 17:04

Олег, спасибо за полезную статью.