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

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

База знаний

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

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

20 августа 2018, 00:00

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

Часть 1

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

Дважды щелкаем по пункту Maintain Source Structures (рис. 1.28). Нажимаем кнопку Create a Structure (рис. 1.29) и вводим данные для новой структуры, затем подтверждаем ввод (рис. 1.29.а). В качестве ID структуры зададим ZMATIA1, в качестве описания — PresentationServer: Inactive Materials.

Рис. 1.28. Переходим к пункту Maintain Source Structures

Рис. 1.29. Создание структуры входных данных

Рис. 1.29.а. Указываем ID и описание структуры, затем подтверждаем ввод

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

Рис. 1.30. После создания структуры сохраняем и выходим к основному меню

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

Щелкаем дважды по пункту Maintain Source Fields (рис. 1.31). Ставим курсор на имя структуры ZMATIA1 (PresentationServer: Inactive Materials) и нажимаем кнопку Create Source Field (рис. 1.32). В качестве имен полей лучше использовать имена, предложенные в шаге 2 (Создание записи, таблица 4). Это поможет не запутаться в данных и использовать AutoMapping на одном из следующих этапов. Система предложит детальный экран создания поля входной структуры (рис. 1.33). Однако для ввода полей можно использовать и табличный ввод. Ставим курсор на структуру и нажимаем кнопку Table Maintenance (рис. 1.34). Вводим нужные данные, сохраняем и выходим к основному экрану шага (рис. 1.35).

Рис. 1.31. Переходим к Maintain Source Fields (Ведение полей источника данных)

Рис. 1.32. Выделяем нужную структуру и нажимаем кнопку Create Field ( Создание поля)

Рис. 1.33. Детальный экран указания поля входной структуры

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

Рис. 1.35. Вводим поля, необходимые для загрузки данных

Введенные данные представлены в таблице 1.5.

Табл. 1.5. Технические имена полей входной структуры данных

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

Рис. 1.36. Сохраняем полученный результат и переходим к основному меню транзакции LSMW

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

Дважды щелкаем по шагу Maintain Structure Relations (рис. 1.37).

Рис. 1.37. Переходим к пункту Maintain Structure Relation (Присвоение входных и внутренних структур)

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

Рис. 1.38. Сохранение и подтверждение присвоения структур

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

Дважды щелкаем по шагу Maintain Field Mapping and Conversion Rules (рис. 1.39). Это весьма важный шаг, так как именно здесь задаются мэппинг и правила конвертации данных. Именно на основе конвертированных данных происходит реальная загрузка данных.

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

На этом шаге необходимо произвести мэппинг полей между структурой записи пакетного ввода и структурой входного источника данных. Так как мы обозначили ID полей одинаково как в структуре записи, так и во входном файле, то мы можем использовать функцию AutoMapping. Для этого переходим по меню в открывшемся экране: Extras -> Auto-Field Mapping (рис. 1.40).

Рис. 1.40. Запуск функции Auto Field Mapping для мэппинга полей

Система откроет экран настроек функции Auto Field Mapping (рис. 1.41). Здесь можно указать, насколько должны совпадать имена полей, чтобы произвести мэппинг, а также какое правило конвертации применять. В нашем случае, когда поля совпадают полностью, нужен простой перенос значения (правило MOVE) из входной структуры во внутреннюю. В опциях ставим No Confirmation и получаем результат (рис. 1.41, 42).

Рис. 1.41. Настройка Auto Field Mapping

Рис. 1.42. Подтверждение работы функции Auto Field Mapping

Система покажет проведенный Auto Mapping полей. В нашем случае система произвела правильный автомэппинг (рис. 1.42). В случае необходимости мы можем вручную изменить что-нибудь. А именно мы назначим постоянные значения полей и ABAP-код для поля MAKTX. Поставим курсор на поле BASICVIEW1 нажмем кнопку Constant на панели инструментов (рис. 1.43).

Рис. 1.43. Выбираем поле BASICVIEW1 и нажимаем кнопку Constant

В появившемся окне поставим в качестве постоянного значения X и подтвердим ввод (рис. 1.44).

Рис. 1.44. Присваиваем постоянное значение X полю BASICVIEW1

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

Табл. 1.6. Правила конвертации (conversion rules) для полей загрузчика

Для поля MAKTX (Material text) мы создадим правило согласно нашим требованиям: добавить prefix NotInUse в текст материала. Поставим курсор на поле MAKTX и нажмем кнопку Rule (рис. 1.45). В качестве правила выберем ABAP-code (рис. 1.46). После ввода требуемого ABAP-правила нажимаем Сохранить и выходим в основной экран шага (рис. 1.47).

Рис. 1.45. Для вставки дополнительного ABAP-правила выделяем нужное поле и нажимаем кнопку Rule

Рис. 1.46. Выбираем правило ABAP-код (ABAP-rule) (ABAP и подтверждаем ввод

Рис. 1.47. Вставляем код по редактированию текста материала

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

Рис. 1.48. Сохраняем мэппинг и правила конвертации и выходим в основное меню транзакции LSMW

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

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

Рис. 1.49. Заполняем Excel-файл по нужному шаблону

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

Рис. 1.50. Файл с расширением .txt с табуляторами в качестве разделителей

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

Рис. 1.51. Переходим к пункту Specify Files для указания файла с данными

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

Рис. 1.52. Указываем файл для загрузки данных

Указываем путь к файлу, имя файла (то описание, которое мы хотим видеть на экране); в качестве разделителя указываем Tabulator и отмечаем флажок Field Named at Start of File. Подтверждаем ввод (рис. 1.53).

Рис. 1.53. Указываем параметры входного файла и подтверждаем ввод

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

Рис. 1.54. Сохраняем результат и выходим в основное меню транзакции LSMW

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

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

Рис. 1.55. Переходим к пункту Assign Files (присвоение файлов)

Рис. 1.56. Сохранение присвоения файлов и выход к основному меню транзакции LSMW

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

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

Рис. 1.57. Переходим к шагу Read Data (чтение данных)

На этом шаге происходит чтение данных из текстового файла в файл ImportedData на application server (сервере приложений). На экране есть возможность указать, с какой по какую записи читать. Это может быть удобно в случае больших файлов (или проверки загрузки) (рис. 1.58).

Рис. 1.58. Запускаем чтение данных с возможностью указания номеров строк (в данном случае читаем все записи)

В качестве результата мы увидим, сколько записей считано и записано в файл на application server (сервере приложений) (рис. 1.59).

Рис. 1.59. Результат чтения записей

Выходим к обзору шагов, чтобы перейти к следующему шагу. Для просмотра данных щелкаем по шагу Display Read Data (рис. 1.60 и рис. 1.61). Система покажет считанные данные. Это дает нам возможность точечно проверить чтение (рис. 1.62). Мы можем перейти в подробный просмотр записи с помощью кнопки Field Contents (рис. 1.62 и рис. 1.63).

Рис. 1.60. Дважды щелкаем по пункту Display Read Data для просмотра считанных данных

Рис. 1.61. Возможность указания номеров записей для просмотра

Рис. 1.62. Отображение считанных данных

Рис. 1.63. Детальный просмотр одной записи

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

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

Дважды щелкаем по шагу Convert Data (рис. 1.64). На этом шаге система прочитает файл *read* (внутри себя система именует файл для чтения со словом read) и преобразует данные для реальной загрузки, то есть в файл *conv* (внутри себя система именует файл для чтения со словом conv). Мы так же, как и в случае с чтением, можем указать записи для конвертации (рис. 1.65). Также нужно иметь в виду, что именно конвертированные данные будут рассматриваться системой для загрузки.

Рис. 1.64. Переходим к шагу Convert Data (Конвертация данных)

Рис. 1.65. Запускаем конвертацию с возможностью указания номеров строк для конвертации

На выходе система покажет, что было конвертировано. Также мы можем увидеть вывод сообщений, которые мы могли «встроить» в ABAP как правила преобразования значений (рис. 1.66).

Рис. 1.66. Вывод сообщений при конвертации данных

Для просмотра конвертированных данных дважды щелкаем по шагу Display Converted Data (рис. 1.67 и рис. 1.68). Для просмотра одной записи используем кнопку Field Contents (рис. 1.69).

Рис. 1.67. Запуск просмотра конвертированных данных

Рис. 1.68. Возможность указать номера строк для просмотра конвертированных данных

Рис. 1.69. Для детального просмотра записи можно использовать кнопку Field Contents

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

Шаг 11: создание и запуск пакетного ввода

Дважды щелкаем по шагу Create Batch Input Session (рис. 1.70). На этом шаге используем данные по умолчанию и нажимаем кнопку Выполнить (Execute). По нажатии на кнопку будет создан сеанс пакетного ввода (но на непосредственное выполнение сеанс запускается на следующем шаге) (рис. 1.71 и рис. 1.72).

Рис. 1.70. Переходим к шагу Create Batch Input Session

Рис. 1.71. Создаем сеанс пакетного ввода

Рис. 1.72. Сообщение о создании сеанса пакетного ввода

Система вернет нас к обзору шагов, откуда мы можем запустить сеанс пакетного ввода на выполнение (рис. 1.73). Выделяем сеанс, нажимая кнопку Process (рис. 1.74).

Рис. 1.73. Переходим к запуску пакетного ввода на выполнение

Рис. 1.74. Выделяем нужный сеанс и нажимаем кнопку Process

На следующем шаге можно указать параметры запуска пакетного ввода (рис. 1.75). После выполнения пакетного ввода мы можем посмотреть журнал. Для этого нажимаем кнопку Log (Журнал) (рис. 1.76) и делаем двойной щелчок на нужной нам сессии (рис. 1.77 и рис. 1.78).

Рис. 1.75. Параметры запуска сеанса пакетного ввода

Рис. 1.76. Переходим к просмотру журнала загрузки при помощи кнопки Log / Журнал

Рис. 1.77. Дважды щелкаем по нужной сессии для просмотра журнала загрузки данных

Рис. 1.78. Журнал загрузки данных

Далее можно выборочно проверить 1–2 записи. В нашем случае для проверки мы будем использовать транзакцию MM03 (рис. 1.79).

Рис. 1.79. Выборочная проверка записей непосредственно в бизнес-транзакции

В случае успешной проверки можно говорить об успешном создании загрузчика.

Заключение

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

В случае большего объема данных (или когда требуется более сложная логика) рекомендуется использовать другой метод загрузки.

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

Об авторе

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