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

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

База знаний

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

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

01 октября 2018, 00:00

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

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

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

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

Рис. 2.30. Переход к шагу ведение мэппинга полей и правил преобразования (Maintain Filed Mapping and Conversion Rules)

На данном шаге необходимо произвести мэппинг полей между структурой типа сообщения BAPI и структурой входного источника данных. В отличие от пакетного ввода в этом методе сложно использовать функцию Auto Field Mapping (так как ID полей BAPI отличаются от ID поле на экране). Поэтому нам необходимо вручную произвести мэппинг полей. Прежде чем переходить к следующему шагу, нам нужно вспомнить, что у нас пример с внутренней нумерацией материала (то есть Number Range ведется в SAP ERP, а не задается вручную; если бы вручную, это был бы простой пример — с указанием любого номера в файле). Таким образом, нам нужно предусмотреть генерацию номера материала в процессе загрузчика. Генерация номера объекта в SAP делается с помощью ФМ NUMBER_GET_NEXT; объект для материалов — MATERIALNR (можно видеть через параметры транзакции MMNR). Чтобы определить, какой number range соответствует виду материала, нужно запустить транзакцию SPRO и перейти к соответствующему виду материала (рис. 2.31, рис. 2.32, рис. 2.33, рис. 2.34).

Рис. 2.31. Переход к настройкам диапазона номеров для вида материала в транзакции SPRO

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

Рис. 2.33. Переход к нужному виду материала 

Рис. 2.34. Подробный просмотр номера диапазона номеров в виде материала

Таким образом, в нашем случае параметры для запуска ФМ такие (рис. 2.35):

Рис. 2.35. Параметры запуска функционального модуля NUMBER_GET_NEXT для получения номера материала

Чтобы получить номер материала для записи, нам нужно ввести глобальную переменную. Для этого включим отображение глобальных переменных и блоков кода (рис. 2.36 и рис. 2.37).

Рис. 2.36. Скрытие/отображение полей и блоков кода

Рис. 2.37. Отмечаем галочками, какие именно поля и блоки кода нужно отображать

Дважды щелкаем по строке _GLOBAL_DATA_ (рис. 2.38). В блоке _GLOBAL_DATA_ нам нужно дописать код, представленный в таблице 2.4 (рис. 2.39).

Рис. 2.38. Двойным щелчком по блоку _GLOBAL_DATA_ переходим к ведению кода

Табл. 2.4. Дополнительный код в разделе _GLOBAL_DATA_ 

Рис. 2.39. Вводим нужный код в блоке _GLOBAL_DATA_

Сохраняем и выходим из экрана ввода кода. Затем дважды щелкаем по блоку «__BEGIN_OF_TRANSACTION__». Вставляем код: clear g_matnr. Переходим на следующую строку и идем по меню: Edit -> Statement Template (рис. 2.40).

В итоге код должен быть таким, как показано в таблице 2.5.

Табл. 2.5. Код для генерации кода в блоке BEGIN_OF_TRANSACTION

Чтобы сделать мэппинг полей структур, нужно проработать каждое поле. Описание каждого нужного нам поля приведем в таблицах 2.6.а–2.6.ё. Более того, необходимо заполнить так называемые X-структуры. X-структуры содержат те же поля, что и основные структуры, но в них необходимо указать с помощью значения X: будет ли поле обрабатываться. Если мы не заполним эти структуры, то обновления полей (или передачи данных) не произойдет.

Табл. 2.6.а. Поля структуры BAPI и то, как их нужно заполнять

Табл. 2.6.б. Поля структуры BAPI и то, как их нужно заполнять

Табл. 2.6.в'. Поля структуры BAPI и то, как их нужно заполнять 

Табл. 2.6.в". Поля структуры BAPI и то, как их нужно заполнять

Табл. 2.6.г. Поля структуры BAPI и то, как их нужно заполнять

Табл. 2.6.д. Поля структуры BAPI и то, как их нужно заполнять

Табл. 2.6.е. Поля структуры BAPI и то, как их нужно заполнять

Табл. 2.6.ё. Поля структуры BAPI и то, как их нужно заполнять

Чтобы заполнить X-структуры, перейдем по меню Extras -> Complete X Structures (рис. 2.41).

Рис. 2.41. Автоматическое заполнение X-структур

При этом система может создать как корректные, так и некорректные правила. Некорректные правила — удаляем через кнопку Initial (рис. 2.42).

Рис. 2.42. Удаление некорректного правила преобразования через кнопку Initial

Это мы должны сделать с каждой X-структурой. Обращаем внимание, что некоторые поля (FUNCTION, PLANT, MATERIAL) в X-структурах должны быть заполнены значениями, а не отметками X. Также на последнем шаге, чтобы знать номер материала, мы выведем сообщение номером создаваемого материала. Дважды щелкаем по пункту «__END_OF_TRANSACTION__» (рис. 2.43).

Рис. 2.43. Переходим к блоку _END_OF_TRANSACTION_

Вставляем код, представленный в таблице 2.7 (рис. 2.44). После добавления кода вид блока _END_OF_PROCESSING_ немного поменяется, и блок будет выглядеть, как представлено на рис. 2.45.

Табл. 2.7. ABAP-код для вставки в блок кода _END_OF_TRANSACTION_

Рис. 2.44. Вставка кода в блок _END_OF_TRANSACTION_

Рис. 2.45. Вид блока кода _END_OF_PROCESSING_ после добавления кода

Сохраняем мэппинг полей (присвоение полей), чтобы перейти к шагу Specify Files (рис. 2.46).

Рис. 2.46. Сохранение мэппинга полей

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

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

Рис. 2.47. Формат д данныхля загрузки в Excel

Рис. 2.48. Данные, преобразованные б в текстовый формат .txt

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

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

Рис. 2.49. Переход к пункту Specify Files с помощью двойного щелчка

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

Рис. 2.50. С помощью кнопки Add Entry добавляем входной файл

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

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

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

Рис. 2.52. Экран указания файла (Specify Files) после добавления файла: сохраняем и выходим в основное меню

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

Дважды щелкаем по пункту Assign Files (рис. 2.53).

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

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

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

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

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

Рис. 2.55. Переходим к пункту Read Data (Чтение данных) двойным нажатием по пункту меню

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

Рис. 2.56. Экран запуска чтения данных в транзакции LSMW

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

Рис. 2.57. После считывания данных выходим обратно 

Рис. 2.58. После считывания данных выходим в основное меню транзакции LSMW

Для просмотра данных щелкаем по шагу Display Read Data (рис. 2.59).

Рис. 2.59. Переходим к пункту Display Read Data (Просмотр считанных данных) в случае необходимости

Мы можем указать, с какой записи и по какую отобразить (рис. 2.60). Система отобразит указанные считанные данные (рис. 2.61). Для детального структурированного просмотра считанной записи необходимо нажать на кнопку Field Contents (рис. 2.61 и рис. 2.62).

Рис. 2.60. Указание количества записей для отображения

Рис. 2.61. Отображение считанных данных в меню Display Data

Рис. 2.62. Подробный просмотр считанной записи

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

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

Дважды щелкаем по пункту Convert Data (рис. 2.63).

Рис. 2.63. Переходим к пункту Convert Data (Конвертация данных) двойным щелчком

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

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

Для ускорения — Create IDocs Directly; но мы используем опцию Create File, так как необходимо рассмотреть последующие шаги в деталях. Для просмотра конвертированных данных переходим к пункту Display Converted Data (рис. 2.65).

Рис. 2.65. Переходим к пункту Display Converted Data

На этом шаге мы увидим номера создаваемых материалов. Материалы еще не созданы; только сгенерированы номера для обработки данных в IDoc. Экран, отображаемый после конвертации данных и отображающий номера материалов, представлен на рис. 2.66. Просмотр общего списка считанных данных показан на рис. 2.67. Детальный структурированный просмотр одной записи показан на рис. 2.68.

Рис. 2.66. Экран результата конвертации данных с выводом номера материала

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

Рис. 2.68. Подробный структурированный просмотр одной считанной записи

Шаг 11: запуск генерации и обработки IDoc

Дважды щелкаем по пункту Start IDoc Generation (рис. 2.69).

Рис. 2.69. Переходим к пункту Start IDoc Generation  двойным щелчком

Система автоматически подтянет имя файла, из которого будут читаться данные при генерации IDoc (рис. 2.70 и рис. 2.71). На этом шаге создания основных записей материалов еще не происходит.

Рис. 2.70. Запуск генерации IDoc для создания основных записей материалов

Рис. 2.71. Информационное сообщение об успешной передаче данных из файла для генерации IDoc

Система вернет нас в список шагов; затем дважды щелкаем по пункту Start IDoc Processing. (рис. 2.72). Система отобразит экран транзакции BD20 (Inbound Processing of IDocs Ready for Transfer) с предзаполненными параметрами. Нажимаем кнопку Execute (Выполнить) (рис. 2.73).

Рис. 2.72. Двойным щелчком переходим к пункту Start IDoc Processing

Рис. 2.73. Запуск входящей обработки IDoc, готовых для обработки

Система начнет выполнять обработку и сообщит результат (рис. 2.74, рис. 2.75)

Рис. 2.74. Сообщение в панели о количестве обработанных IDoc и общем количестве IDoc

Рис. 2.75. Экран успешной обработки IDoc

Все IDoc успешные — значит, все материалы созданы успешно.

Остальные пункты основного меню — просто информационные.

На следующем шаге мы прогрузим классификацию для материалов методом Direct Input, так как с помощью этого типа сообщения возможности загрузить классификацию нет.

Заключение

Мы рассмотрели BAPI-метод загрузки данных с помощью транзакции LSMW с применением дополнительного ABAP-кода. Видно, что это весьма кропотливый метод (в части мэппинга полей), однако этот метод весьма гибкий и позволяет гарантированно обеспечить правильную загрузку данных практически по любому стандартному объекту SAP ERP.

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

Об авторе

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