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

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

База знаний

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

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

15 октября 2018, 16:20

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

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

Часть 1  Часть 2  Часть 3  Часть 4

В этой главе описано эффективное использование метода Direct Input на примере загрузки классификации основной записи материала. Классификация будет загружена к ОЗМ, созданным ранее. В основе Direct Input лежит использование уже подготовленной стандартной ABAP-программы для загрузки информации по объекту. Преимущество метода заключается в том, что не нужно делать запись и излишние подготовительные работы: достаточно сделать мэппинг структур. Кроме того, метод обладает явной возможностью делать загрузку как в онлайн-режиме, так и фоновом. К недостаткам этого метода можно отнести проблемы при использовании логических и физических файлов. В решении бизнес-задачи мы находимся на этапе загрузки классификации к ОЗМ (рис. 3.1).

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

Здесь будет показана загрузка классификации методом Direct Input. Будет продемонстрирована загрузка по одному из двух полей: по внутреннему номеру материала и по старому номеру основной записи материала. В случае если внутренний номер материала не указан явно, загрузчик будет пытаться найти внутренний номер на основе старого номера материала. Это будет достигаться с помощью инициации дополнительного ABAP-кода.

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

Задача: требуется присвоить/создать классификацию для набора материалов. По обработанным записям в дальнейшем нужно будет загрузить остатки. Номер материала на входе может быть либо внутренним, либо старым (поле Old Material Number). Если номер материала не определен (или определен неоднозначно), такую запись необходимо пропустить и выдать об этом информацию (текст на экран). Всем материалам присвоить классификацию 023_Standard. Загружается исключительно ракурс классификации (Classification). В таблице ниже приведены поля для загрузки (таблица 3.1). На предварительном шаге: пройдемся вручную (через MM01 или транзакцию MM02, если ракурс классификации уже создан) и пропишем классификацию материала.

Табл. 3.1. Поля для загрузки

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

Предварительный этап

Запустим транзакцию MM01 (или транзакцию MM02, если ракурс классификации уже создан) и заполним поля, представленные на рис. 3.2. Затем укажем вид класса 023 (рис. 3.3).

Рис. 3.2. Выбор ракурса классификации в ОЗМ

Рис. 3.3. Выбор вида класса в ракурсе классификации

Укажем класс 023_Standard и нажмем Enter (рис. 3.4); затем сохраним основную запись материала (рис. 3.5).

Рис. 3.4. Указываем класс в ракурсе классификации

Рис. 3.5. После указания класса система подтянет перечень признаков к классу

Сохраняем данные и выходим. Так как мы создавали ракурс, то система выдаст соответствующее сообщение о создании записи (либо об изменении, если использовалась транзакция MM02) (рис. 3.6).

Рис. 3.6. Сообщение об успешном сохранении ракурса классификации

3.3. Пошаговое решение

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

Для создания нового проекта транзакции LSMW будем использовать данные из таблицы 3.2.

Табл. 3.2. Данные для создания объекта LSMW для загрузки классификации

После указания данных подтверждаем ввод и запускаем проект. Система откроет перед нами основное меню транзакции LSMW (рис. 3.7).

Рис. 3.7. Указываем данные для создания объекта в транзакции LSMW

Шаг 2: параметры метода загрузки: выбор объекта и метода Direct Input

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

Рис. 3.8. Переход к атрибутам объекта LSMW

В качестве объекта выбираем 0130 (classification), метод — 0002 (Direct Input) (рис. 3.9). Сохраняем и выходим к списку шагов, чтобы перейти к следующему шагу.

Рис. 3.9. Указываем атрибуты объекта LSMW

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

Дважды щелкаем по пункту Maintain Source Structures (рис. 3.10). Создаем структуру: указываем ID и описание. Затем сохраняем и выходим, чтобы перейти к следующему шагу (рис. 3.11).

Рис. 3.10. Переходим к созданию структуры источника данных

Рис. 3.11. Указываем ID структуры и описание

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

Щелкаем дважды по пункту Maintain Source Fields (рис. 3.12). Ставим курсор на структуру ZMATCLAS (Ракурс классификации материалов) и нажимаем на кнопку Table Maintenance (рис. 3.13). Введенные данные представлены в таблице 3.3 (рис. 3.14).

Рис. 3.12. Переход к ведению полей структуры источника данных

Рис. 3.13. Переход к табличному ведению полей структуры-источника

Рис. 3.14. Перечисляем поля с типом данных и длиной

Табл. 3.3. Поля структуры источника данных

В основном экране шага сохраняем данные и выходим к обзору списка шагов, чтобы перейти к следующему шагу (рис. 3.15).

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

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

Дважды щелкаем по шагу Maintain Structure Relations (рис. 3.16). Создаем соответствие структур так, как показано на рис. 3.17. Сохраняем, выходим и переходим к следующему шагу.

Рис. 3.16. Переход к шагу Ведение соответствия структур

Рис. 3.17. Структура — источник ZMATCLAS служит источником данных для внутренней структуры BIKSSK

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

Дважды щелкаем по шагу Maintain Field Mapping and Conversion Rules (рис. 3.18).

Рис. 3.18. Переход к шагу мэппинга полей и правил конвертации

На данном шаге производим мэппинг (таблицах 3.4.а–3.4.б) полей входного файла и структуры Direct Input. Предварительно откроем технические поля (рис. 3.19 и рис. 3.20), чтобы для некоторых полей вставить ABAP-код.

Рис. 3.19. Показ/скрытие полей для указания дополнительного ABAP-кода

Рис. 3.20. Выбор типов полей для отображения на экране

Табл. 3.4.а. Правила заполнения полей

Табл. 3.4.б. Правила заполнения полей

Результат заполнения полей показан на рис. 3.21 и рис. 3.22.

Рис. 3.21. Результат заполнения глобальных полей

Рис. 3.22. Результат заполнения полей мэппинга

Затем сохраняем и выходим.

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

После мэппинга полей следующим шагом может быть шаг Maintain Fixed Values, Translations, User-Defined Routines (Ведение постоянных значений, преобразований и подпрограмм пользователя). Об этом шаге будет рассказано позже. В этой главе в качестве следующего шага будет Specify Files. Однако прежде чем указывать путь к файлу, необходимо создать файл по нужному нам формату. Для создания входного файла будем использовать табличный редактор Excel. Первый файл для проверки загрузчика разумно создавать на 2–3 записи; так как в случае возникновения проблем их можно быстро устранить. Первую строку в Excel заполним техническими именами полей входной структуры. А строки, начиная со 2-й, заполним уже конкретными значениями (рис. 3.23).

Рис. 3.23. Заполнение входных данных в Excel-шаблоне

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

Рис. 3.24. Данные, конвертированные из Excel в текстовый редактор

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

Рис. 3.25. Переходим к указанию адреса ко входному файлу

Ставим курсор на строку On the PC (Frontend) и нажимаем кнопку Add Entry (рис. 3.26).

Рис. 3.26. Указываем путь к файлу и его параметры

Указываем путь к файлу, имя файла (то описание, которое мы хотим видеть на экране); в качестве разделителя указываем Tabulator; отмечаем флажок Field Names at Start of File и снимаем галку Field Order Matches Source Structure Definition. Подтверждаем ввод (рис. 3.27).

Рис. 3.27. Система отобразит путь к файлу и его свойства на экране

Затем указываем пути для logical path for the converted data (двойной щелчок по Converted Data) (рис. 3.28).

Рис. 3.28. Указываем логический путь и файл для конвертированных данных

Подтверждаем создание пути и файлов и сохраняем.

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

Дважды щелкаем по шагу Assign Files (рис. 3.29).

Рис. 3.29. Переходим к присвоению файла, пункт Assign Files

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

Рис. 3.30. Система автоматически присваивает файл в случае одной структуры и одного входящего файла

Шаг 9: чтение данных и просмотр считанных данных

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

На рис. 3.31 показан экран запуска процедуры считывания данных. Мы можем указать номер начальной и конечной записи для считывания (это может быть полезно на этапе проверки загрузчика). Просмотр считанных данных выполняем в пункте меню Display Read Data.

Рис. 3.31. Запуск чтения данных из внешнего файла

Шаг 10: конвертация данных и просмотр конвертированных данных

Дважды щелкаем по шагу Convert Data (рис. 3.32).

Рис. 3.32. Переход к шагу конвертации данных

Просмотр конвертированных данных выполняется в пункте Display Converted Data. Видим, что для 2-й записи система правильно определила объект (рис. 3.33).

Рис. 3.33. Просмотр конвертированных данных

Шаг 11: запуск программы Direct Input

Дважды щелкаем по шагу Start Direct Input Program (рис. 3.34). Обращаем внимание на логическое имя файла и опции считывания (рис. 3.35.)

Рис. 3.34. Переход к шагу программы Direct Input

Рис. 3.35. Указываем данные для запуска программы Direct Input

В случае если загрузка прошла успешно, система не выдаст сообщения.

В случае ошибок система выдаст журнал ошибок.

Также необходимо иметь в виду, что в Direct Input существует опция запуска в фоновом режиме (рис. 3.36).

Рис. 3.36. Запуск загрузки методом Direct Input в фоновом режиме

Возможные проблемы и их решение при работе с логическим файлом:

1. Logical file name is not permissible

В ракурсе V_FILEALIA создать запись между объектом и используемым именем конвертированного файла. Запускаем транзакцию SM30. В программе RCCLBI03 (загрузка классификации методом Direct Input) имя файла приложения (Application Logical File Name) должно быть CLASSIFICATION. Чтобы использовать другой псевдоним, нужно добавить запись в ракурс V_FILEALIA (рис. 3.37 и рис. 3.38).

Рис. 3.37. Переход к ведению ракурса V_FILEALIA V FILEALIA в транзакции SM30

Рис. 3.38. Соотнесение логического имени файла в приложении и имени логического файла

2. Запрещающее сообщение: Unable to open file ZZZ_FILE1.lsmw.conv (рис. 3.39).

Рис. 3.39. Красное сообщение о невозможности открыть файл

В случае данной ошибки необходимо запустить транзакцию FILE и проверить настройки файла CLASSIFICATION в пункте Logical File Name Definition, Cross-Client (рис. 3.40).

Рис. 3.40. Определение логического имени файла (независимо от манданта)

3. File [OBJECT_NAME, e.g. CLASSIFICATION_ERROR]

Logical file name CLASSIFICATION_ERROR does not exist

Запускаем транзакцию FILE и проверяем параметры файла CLASSIFICATION_ERROR (в случае указанной ошибки — факт существования как такового) (рис. 3.41 и рис. 3.42).

Рис. 3.41. Определение пути к логическому файлу

Рис. 3.42. Определение имени логического файла

4. Сообщение No logical path has been specified.

Смотрим ноту 1497003. Именно это и сказано в сообщении.

5. Обращаем внимание непосредственно на саму программу. Из экрана переходим к имени программы Система -> Статус (System -> Status) (рис. 3.43).

Рис. 3.43. Переходим по меню Система->Статус для установления имени программы

Программа для загрузки классификации RCCLBI03. В самом начале этой программы видим обозначение логических файлов непосредственно в константах (рис. 3.44).

Рис. 3.44. После открытия программы убеждаемся в «твердом указании» имени файла

3.4. Заключение

Мы рассмотрели метод Direct Input загрузки данных с помощью транзакции LSMW с применением дополнительного ABAP-кода. Видно, что этот метод обеспечивает быструю загрузку данных. Среди плюсов его использования: быстрое развертывание на основе стандартных ABAP-программ, возможность запуска в пакетном режиме. В случае если полномочий на настройку логических имен файлов нет, этот метод может стать трудозатратным по времени; в том же случае если настройка уже выполнена, с помощью этого метода можно довольно быстро обеспечить загрузку данных.

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

Об авторе

Олег Башкатов — консультант-разработчик по функционалу 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 инструкция по применению"

  

   

   

    

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

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

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