Вопрос:
Виталий, встречалась ли Вам такая задача загрузить изменения записей инфо-типа 0022 «Образование». Мы добавили на экран инфо-типа Z-поля для внесения информации на английском языке. Теперь нужно довнести в эти поля данные. Но загрузить изменения не удается, у табельного номера несколько записей и программа LSMW загружает в первую запись, не осуществляя проверку на даты, вид образования..
Эта задача осуществима с помощью LSMW?
Ответ:
Это общая проблема для обновления записей через PA30 и LSMW. Чтобы решить задачу есть два варианта:
1. Удалить и загрузить правильно. То есть сначала выгружаем что есть, обновляем данными, удаляем из системы, загружаем правильные значения.
2. Если первый вариант не работает, то в ряде случаев можно «обратиться напрямую к записи» указав точные ключевые параметры: дата начала, дата окончания, подтип. Тогда LSMW откроет именно нужную запись. Но если есть две записи с 18 подтипом и одинаковыми датами, то увы, не сработает (два высших образования полученных одновременно).
4 комментария
Роман Величко
Коллеги 😉 все сработает есть маленький хинт подсказка, даже две!
Дайте мне пару часов доехать до офиса и я все напишу 😉
Роман Величко
Итак я снова здесь. Описываю способы по нарастанию брутальности использования.
Способ 1.
Что касается инфотипов с временной привязкой 3 (это когда на одни и те же даты могут одновременно существовать записи), то все мы знаем что система автоматически присваивает им номера в поле SEQNR, также для инфотипов с временной привязкой 2 под подтипам, записи тоже могут существовать в одном и том же периоде за исключением того, что SEQNR не проставляется, а в некоторых инфотипах для этого используется поле OBJPS (типичный пример инфотип 0021 когда мы регистрируем детей одного пола). Все эти специальные поля наряду с begda|endda|subty|infty являются ключевыми, лежат внутри структуры PSKEY, а она уже включена во все инфотипы PA-PA и PA-PB и PT.
Так что для того чтобы по ним LSMW могла идентифицировать запись и не обновлять первую попавшуюся, рекординг в LSMW для PA30 должен быть записан с учетом ввода ключевых значений вот в эти магические поля PA30 (http://prntscr.com/co1j2k), отображаемые только в режиме пакетного ввода (BatchInput).
Чтобы решить Вашу проблему Вам необходимо выгрузить все записи 0022 инфотипа которые Вы хотите обновить, посмотреть на SEQNR и OBJPS, убедиться что для обновляемых записей по этим полям можно однозначно их определить и переписать рекординг с учетом того что я описал выше.
Способ 2.
Это айдоки, которые легко цепляются к LSMW, только требуют знания и настроек ALE технологии и абапа который нужно будет писать в LSMW чтобы все работало автоматов.
Способ 3 (очень плохой и ни при каких раскладах не использовать если не уверены в своих силах).
Самый брутальный и требует не знаний системы, а пару литров пива админу по базису и хорошие коммуникативные навыки с руководством службы поддержки, чтобы дали полномочия на отладку в проде и полномочий на транзакцию SE16N. 🙂 брутальность заключается в том чтобы выгрузить все что есть PA0022, выкинуть это в эксель, подставит значения, которые Вам нужны, и потом обратно внутри SE16N грузануть их разом в PA0022.
Anna
Роман, спасибо, за Ваш ответ! Так как записей очень много, то варианты 1,3 отпали.. Мы решили привлечь разработчиков для решения данной задачи. Вариант 3 тоже думали, но есть риск допустить ошибки.
Anna
Виталий, вариант 1 «Удалить и загрузить правильно» для большого количества записей не подошел..
вариант 2 «обратиться напрямую к записи» по ключевым полям тоже.. т.к. так и получилось, как Вы писали, что есть несколько записей с одинаковыми значениями в ключевых полях.
Отдали задание в разработку.
🙂 Просто иногда кажется, что есть какое-то простое решение вопроса и тогда однозначно нужна еще одна голова! Спасибо за ответ!