Меню

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

|

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

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

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

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

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

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

В главе будет подробно описано решение задачи по загрузке длинных текстов основных записей материалов с помощью метода Direct Input транзакции LSMW. В примере будет показано, как один и тот же загрузчик может загружать несколько видов длинных текстов материалов на примере длинных текстов на уровне основного ракурса (Basic Data Texts) и длинных текстов сбытового ракурса (Sales Text). В общей схеме задач миграции мы находимся на этапе загрузки длинных текстов по созданным ОЗМ (рис. 4.1).

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

Задача состоит в загрузке длинных текстов к основному и сбытовому ракурсам основной записи материалов в рамках одного загрузчика. В главе будет показан пример с использованием двух входящих файлов для загрузки, дополнительных подпрограмм (user-defined routines), преобразований (translations), fixed values (фиксированных значений), а также пример ситуации, когда источниками для одного поля целевой структуры выступают сразу несколько полей входной структуры.

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

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

Длинные тексты материала используются для развернутого описания материала/услуги в силу того, что краткое описание имеет длину 40 символов и не всегда может точно отражать наименование. В системе SAP ERP длинные тексты могут быть на уровне основного, сбытового и закупочного ракурсов. Поле Текст к основным данным находится в ракурсе Основные данные в закладке Дополнительные данные (Additional Data) (рис. 4.1) на вкладке Текст/ОсновнДанные (Basic Data Text) (рис. 4.2).

Рис. 4.2. Переход к дополнительным данным ОЗМ

Видим, что поле Текст к основным данным (Длинный текст материала) может содержать более 132 символов, а также может содержать символы переноса строк (рис. 4.3). Посмотрим, как данный текст выглядит в редакторе текстов. Для этого нажмем на кнопку Редак. (Editor) в экране, содержащем длинные тексты (рис. 4.4).

Рис. 4.3. Вкладка Текст/ОсновнДанные содержит длинные тексты ОЗМ

Рис. 4.4. Кнопка перехода к просмотру длинного текста в редакторе текстов

Видим, что «длинный» текст материалов состоит из строк, каждая из которых имеет длину 72 символа, и спецсимволов, которые находятся в начале каждой из строк (рис. 4.5). Эти спецсимволы называются форматами — format (в английском варианте имеют название tag; термин «tag» нам пригодится при создании пакетной загрузки).

Рис. 4.5. «Длинный» текст ОЗМ, представленный в редакторе

«Длинные» тексты основных записей материалов можно обработать массово. Однако для обработки нам нужно знать параметры «длинного» текста, а именно ID, LANGUAGE, NAME, OBJECT. В системе длинные тексты создаются и просматриваются с помощью двух функциональных модулей SAVE_TEXT и READ_TEXT. Поставим точку останова в функциональном модуле READ_TEXT и откроем текст основных данных и сбытовой текст на просмотр (рис. 4.6).

Рис. 4.6. Проект, подпроект и объект для загрузки длинных текстов 

Параметры длинных текстов для основного и сбытовых ракурсов покажем с помощью таблицы 4.1.

Табл. 4.1. Параметры «длинных» текстов для основного и сбытового ракурсов

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

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

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

Табл. 4.2. Данные для создания объекта LSMW для загрузки длинных текстов ОЗМ

Рис. 4.7. Параметры длинного текста основного ракурса материала (определение через отладчик)

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

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

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

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

В качестве объекта выбираем 0001 (Long texts), метод — 0001 ((No selection)); имя программы (Program Name) подтянется автоматически /SAPDMC/SAP_LSMW_IMPORT_TEXTS (рис. 4.9). Сохраняем и выходим к списку шагов, чтобы перейти к следующему шагу.

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

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

Дважды щелкаем по пункту Maintain Source Structures (рис. 4.10). На этом шаге нам нужно создать две структуры: основную (вышестоящую) (рис. 4.11) и подчиненную (нижестоящую).

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

Рис. 4.11. Указываем ID и описание вышестоящей структуры

Ставим курсор на только что созданную структуру и снова нажимаем кнопку Создать. Система запросит «отношение» к текущей структуре. Выбираем Lower Level (подчиненная) (рис. 4.12).

Рис. 4.12. Создание подчиненной структуры

Затем указываем ID и описание подчиненной структуры (рис. 4.13).

Рис. 4.13. ID и описание подчиненной структуры

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

Рис. 4.14. Одна структура подчинена другой

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

Щелкаем дважды по пункту Maintain Source Fields (рис. 4.15). Ставим курсор на структуру ZMATTXT1 (коды материалов) и нажимаем на кнопку Table Maintenance (рис. 4.16). Введенные данные представлены в таблице 4.3 для структуры ZMATTXT1. Затем ставим курсор на структуру ZMATTXT12 (длинные тексты ОЗМ), переходим аналогично в режим Table Maintenance и указываем поля, указанные в таблице 4.3 для структуры ZMATTXT12.

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

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

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

Две структуры будут связаны по полям с одинаковым названием. В нашем случае это поля MATNR и TYPE (поэтому эти два поля должны быть в двух входящих структурах). Поле TYPE — это однобуквенное обозначение текста для целей нашей загрузки. Оно будет определять тип объекта (MATERIAL или MVKE), номер объекта (с учетом номера сбытовой организации или без учета), а также параметра NAME (GRUN или 0001).

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

Рис. 4.17. Итоговый результат создания полей входных структур

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

Дважды щелкаем по шагу Maintain Structure Relations (рис. 4.18). Создаем соответствие структур так, как показано на экране (рис. 4.19) с помощью кнопки Relationship. У нас две входящие структуры и две внутренние структуры; входящую структуру ZMATTXT1 привязываем к внутренней структуре /SAPDMC/LTXTH, а ZMATTXT12 — /SAPDMC/LTXTL. Сохраняем, выходим, переходим к следующему шагу.

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

Рис. 4.19. Результат присвоения структур

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

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

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

В данной главе мы будем использовать возможности связанного шага Maintain Fixed Values, Translations, User-Defined Routines.

Чтобы указать значение для поля OBJECT, мы применим функционал translation (подстановки). Ставим курсор на поле OBJECT и нажимаем кнопку Source Field для указания источника поля (рис. 4.21).

Рис. 4.21. Указываем поле-источник (ZMATTXT1-TYPE) (ZMATTXT1 TYPE) в качестве источника данных для поля OBJECT

Поля ZMATTXT1-TYPE и OBJECT будет неправильным приравнять в том виде, в котором они есть; поэтому мы будем использовать translation. Ставим курсор на поле OBJECT и нажимаем кнопку Translation (в верхней правой части экрана) (рис. 4.22).

Рис. 4.22. Делаем translation для поля OBJECT

В открывшемся экране отмечаем radiobutton Own selection и указываем TDOBJECT (рис. 4.23). Система создаст данный translation.

Рис. 4.23. Указываем имя нового translation

После подтверждения данных о новом translation система преобразует мэппинг полей, как представлено на рис. 4.24.

Рис. 4.24. Преобразованный мэппинг между полями OBJECT и TYPE

Однако, как будет отрабатывать translation, нам нужно указать в следующем шаге под названием Maintain Fixed Values, Translations, User-Defined Routines. Поэтому мы сохраняем текущий результат на данном шаге и переходим к следующему (рис. 4.25). После обработки translation TDOBJECT мы снова вернемся к мэппингу полей.

Рис. 4.25. Переход к шагу по ведению фиксированных значений, translation и подпрограмм пользователя

Ставим курсор на translation TDOBJECT и нажимаем кнопку Change / Изменить (рис. 4.26).

Рис. 4.26. Переходим к изменению translation TDOBJECT

На вкладке Source Field, Target Field обращаем внимание на длину входящего и исходящего параметров. В нашем случае на входе у нас длина параметра равна одному символу, а на выходе — десяти символам (рис. 4.27).

Рис. 4.27. Длина входящего и исходящего параметров

Переходим на вкладку Control и указываем вариант ведения и альтернативы. В качестве варианта указывает translation (преобразование) 1:1, а в качестве First Alternative указываем Constant (постоянное значение), при этом в нижней части экрана заполняем поле Constant. В случае если система не найдет значение по основному варианту (1:1), то в качестве первой альтернативы будет взято значение из поля Constant (рис. 4.28).

Рис. 4.28. Указываем алгоритм работы Translation

Теперь переходим к вкладке 1:1 Translation Value — эта вкладка должна содержать соответствия значений. Обращаю внимание, что параметр OK должен быть заполнен для активных записей, если столбец OK не отмечен, то запись считается неактивной и не будет приниматься системой во внимание (рис. 4.29).

Рис. 4.29. Ведение значений в Translation

Итак, если значение Type будет B (сокращенно от Basic), то значение в поле OBJECT будет MATERIAL, а если S (сокращенно от Sales) — то MVKE. Как видим, мы в транзакции LSMW мы можем использовать таблицу соответствия, что может быть весьма полезно. Сохраняем данные и выходим к основному меню транзакции LSMW со списком шагов (рис. 4.30.).

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

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

Войти