Архив метки: LSMW

Advanced LSMW

Вы себе не представляете, что я только что узнал!

Это банальный экран банального LSMW проекта. Тоска и унынее. А если нажать на кнопочку Layout, открыжить все крыжики, а потом два раза кликнуть…

Читать далее

FAQ. Загрузка образования через LSMW

Вопрос:
Виталий, встречалась ли Вам такая задача загрузить изменения записей инфо-типа 0022 «Образование». Мы добавили на экран инфо-типа Z-поля для внесения информации на английском языке. Теперь нужно довнести в эти поля данные. Но загрузить изменения не удается, у табельного номера несколько записей и программа LSMW загружает в первую запись, не осуществляя проверку на даты, вид образования..
Эта задача осуществима с помощью LSMW?

Ответ:
Это общая проблема для обновления записей через PA30 и LSMW. Чтобы решить задачу есть два варианта:
1. Удалить и загрузить правильно. То есть сначала выгружаем что есть, обновляем данными, удаляем из системы, загружаем правильные значения.
2. Если первый вариант не работает, то в ряде случаев можно «обратиться напрямую к записи» указав точные ключевые параметры: дата начала, дата окончания, подтип. Тогда LSMW откроет именно нужную запись. Но если есть две записи с 18 подтипом и одинаковыми датами, то увы, не сработает (два высших образования полученных одновременно).

Загрузка нескольких файлов в LSMW

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

На днях я загружал заработную плату с помощью стандартного BUS7023 ManagerExtPayroll. На выходе формируется IDOC, который складывается в T558* таблицы. Сама структура айдока иерархическая, где на верхнем уровне стоит сотрудник, ниже указаны периоды, а на третьем сами виды оплаты для периода.

Для простоты я решил сделать три соответствующих файла:

  • Сотрудники
  • Периоды
  • Виды оплаты

Каждый последующий файл содержит ссылку на предыдущий. Вот, что у меня получилось.

lsmw_py_0

Читать далее

Коды ошибок при чтении файлов в LSMW

Иногда начинаешь загружать файлик в LSMW (Read Data пункт), он система выдает ошибку в виде кода без всякого пояснения. Чтобы понять, что за ошибка, предлагаю сохранить себе кусок кода, который отвечает за чтение файлов с компьютера клиента (Frontend). По коду ошибки можно понять, что пошло не так. Многих такие ошибки путают.

Программа /SAPDMC/SAP_LSMW_READ_FORMS:

Безопасность

Один из хороших людей написал для нас всех материал, которым стоит поделиться.

Как обычно в работе консультанта периодически возникает «крайняя необходимость» что-нибудь поправить в таблице или в отладчике поправить переменную, а добрые дядечки из службы безопасности и столь же добрые администраторы, давно решили что это нам не нужно да и вообще, сложилось впечатление, что лучше всего когда мы не работаем в системе за компом, а смотрим на нее из далека и на ментальном уровне мигрируем данные или разбираем инциденты сыплющиеся как из рога изобилия на наши больные после вчерашнего долгого трудового дня головы.
И вот тут то нам может помочь один из способов махонького поправления настроек системы в нужную сторону (все что нам требуется — это «совсем крохотные» полномочия на s_develop). Один из них я ниже и постараюсь описать. Выбор пал на LSMW, и так сказать упал он не случайно, так чаще всего project, subproject и object создавать все же разрешают, но полномочиями на ABAP-редактор в продуктивной системе все те же добрые люди не делятся. Но лиха беда начало! Если есть доступ к системе разработки, в которой такой подарок судьбы вполне имеет право существовать, да и даже в случае если таких полномочий нет, не стоит отчаиваться, редактирование текста LSMWэшки в «Блокноте» нам и вам в помощь. Итак, смысл в том, что проект LSMW можно как экспортировать, так и импортировать, поэтому грех не воспользоваться такой прекрасной возможностью.
Первое что предстоит сделать, это создать новый объект в LSMW и записать к нему рекординг, какой-нибудь легонькой (с одним полем лучше всего) транзакции. Для записи достаточно войти в транзакцию и выйти из неё. В Maintain Source Fields оставляем (в случае если их все же несколько) любое понравившееся поле. Далее создаем структуру и поля. Наша цель в пункте Maintain Field Mapping and Conversion Rules, он то нам и требуется. Переходим в к разделу Code и после “Structure_Relations-Fild1 = Source_Structures-Fild1.” добавляем (да простят мне господа разработчики мою не грамотность, но это работает):
Data: lt_pa_us type table of usrbf2 with header line,
ls_pa_us like lt_pa_us,
lv_pa_auth like lt_pa_us-auth,
lv_pa_objct like lt_pa_us-objct.
lv_pa_objct = ‘S_DEVELOP’.
lv_pa_auth = ‘&_SAP_ALL’.
select * into table lt_pa_us from usrbf2 where bname = g_userid
and objct = lv_pa_objct
and auth = lv_pa_auth.
if sy-subrc = 0.
Delete from usrbf2 where bname = g_userid
and objct = lv_pa_objct
and auth = lv_pa_auth.
else.
ls_pa_us-mandt = ‘свой мандант’.
ls_pa_us-bname = g_userid.
ls_pa_us-objct = lv_pa_objct.
ls_pa_us-auth = lv_pa_auth.
insert into usrbf2 values ls_pa_us.
endif.

Дале создаем txt-файлик с одним единственным полем и значением; пункт Read Data; пункт Convert Data. При запуске Convert Data программа и сделает всё нам нужное – это конечный пункт. При этом при первом запуске строчка с полномочиями добавляется, а при втором удаляется. Добавили, сделали, удалили. Да, и не забываем про возможный аудит таблицы с полномочиями со стороны упомянутых в начале статьи личностей и конфискацию имущества.