Текущее время: Пт, апр 19 2024, 05:08

Часовой пояс: UTC + 3 часа


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 11 ] 
Автор Сообщение
 Заголовок сообщения: AS02 подменить поле ANLA-LIEFE при сохранении
СообщениеДобавлено: Ср, сен 26 2018, 13:56 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Чт, дек 21 2006, 16:38
Сообщения: 301
Есть какое-нибудь расширение чтобы в AS02 подменить значение поля ANLA-LIEFE при сохранении?


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: AS02 подменить поле ANLA-LIEFE при сохранении
СообщениеДобавлено: Ср, сен 26 2018, 17:06 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Ср, фев 21 2007, 08:50
Сообщения: 1571
Откуда: Пермь
Пол: Мужской
Способов полно.
Самый простой - замещение в AA.
Только учитывайте, что замещения в классе основных даннЬых (номер не помню) работают только при первичном создании.
При изменении - только при массовой обработке (MASS).

_________________
Алё, это Пакистан? Нам нужен один килограмм


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: AS02 подменить поле ANLA-LIEFE при сохранении
СообщениеДобавлено: Чт, сен 27 2018, 08:27 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Ср, ноя 03 2004, 14:51
Сообщения: 1912
Откуда: КраснАдар
Пол: Мужской
Мне кажется, что элегантного способа не будет, SAP ничего стандартом не предусмотрел (как вариант я плохо искал). Замещение работает в режиме предзаполнить, соответственно вряд ли сложную логику получится прописать до ввода данных.
Фактически, в ANLA можно только в ФМ EXIT_SAPLAISA_001 поменять инвентарный номер. ASSIGN в этом экзите тоже не применить, потому как изменение происходит через локальную переменную структуру. Получается, что лишь точка расширения поможет, например в подпрограмме ANLA_VEREINZELN программы SAPLAISA.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: AS02 подменить поле ANLA-LIEFE при сохранении
СообщениеДобавлено: Чт, сен 27 2018, 09:09 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Чт, дек 21 2006, 16:38
Сообщения: 301
Ясно. Я примерно к такому же мнению пришел, так как ничего не нашел. Значит буду исходить из - "Это стандартное поведение SAP и он не хочет чтобы его ломали" :)


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: AS02 подменить поле ANLA-LIEFE при сохранении
СообщениеДобавлено: Чт, сен 27 2018, 19:32 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Ср, фев 21 2007, 08:50
Сообщения: 1571
Откуда: Пермь
Пол: Мужской
John Doe написал:
Мне кажется, что элегантного способа не будет, SAP ничего стандартом не предусмотрел (как вариант я плохо искал). Замещение работает в режиме предзаполнить, соответственно вряд ли сложную логику получится прописать до ввода данных.
Фактически, в ANLA можно только в ФМ EXIT_SAPLAISA_001 поменять инвентарный номер. ASSIGN в этом экзите тоже не применить, потому как изменение происходит через локальную переменную структуру. Получается, что лишь точка расширения поможет, например в подпрограмме ANLA_VEREINZELN программы SAPLAISA.


Да бросьте. В классе 030 "Основные данные основного средства" с типом S огромное количество полей таблицы ANLA, все можно заменить.
Предзаполнение или нет - не важно. В самом конце перед сохранением оно снова отработает, если момент наступит и если работает предпосылка.
Данный момент наступает при любом нажатии кнопки Enter и/или перед сохранением, если пользователь сразу приступил к сохранению карточки.
Там можно наваять все, что угодно. В том числе вызывать пользовательскую подпрограмму, в которой заложить любую логику.

Смущает другое. Поля LIEFE в GB01 для класса 030 нет в списке. Нет даже в списке исключаемых из замещений (иначе можно было бы снять эту отметку).
Если я правильно помню, поля с птичкой "Исключить" попросту не будут замещаться, при этом создание шага замещения не вернет ошибку. После снятия отметки поля замещаются.
И если я также верно помню, то даже насильственное впихивание поля в GB01 не поможет, потому что этого поля не будет в структуре замещаемых полей в программе создания основного средства.

Поэтому сам инструмент хороший, он дает заместить кучу полей хоть в ANLA, хоть в ANLB, хоть в ANLZ. Но конкретно с этим полем, возможно, промашка.
p.s. Ничто не мешает в пользовательской подпрограмме замещения реализовать свою логику для LIEFE, потом через assign получить состояние ANLA на момент запуска substitution, изменить значение LIEFE и сделать выход из пользовательской подпрограммы. В сущности задача ваша решается за 10 минут вообще без разработчика. Так что если хотите решать - решайте, а если не хотите, то склоняйтесь к тому, что "сап так работает" 8)

_________________
Алё, это Пакистан? Нам нужен один килограмм


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: AS02 подменить поле ANLA-LIEFE при сохранении
СообщениеДобавлено: Чт, сен 27 2018, 20:06 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Ср, фев 21 2007, 08:50
Сообщения: 1571
Откуда: Пермь
Пол: Мужской
Охохо!))) огонь.
Отбой.
Не стал удалять свое предыдущее сообщение, что уж, зря писал что ли.
СПОКОЙНО заместил ANLA-LIEFE. Для начала константой, но мог выбрать и "Exit" для реализации своей подпрограммы.
Все сохранилось УСПЕШНО в ANLA. Чего и вам советую.
Когда писал предыдущий пост, совсем забыл, что список полей в классе 030 предваряет строка ANLA, поле * со снятой галкой на исключение.
То есть система сначала все поля включает в замещаемые, после чего уже конкретные поля в GB01 исключаются или не исключаются.

Так что замещайте себе на здоровье.

_________________
Алё, это Пакистан? Нам нужен один килограмм


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: AS02 подменить поле ANLA-LIEFE при сохранении
СообщениеДобавлено: Пт, сен 28 2018, 06:36 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Чт, дек 21 2006, 16:38
Сообщения: 301
Yozhhhhh написал:
Да бросьте. В классе 030 "Основные данные основного средства" с типом S огромное количество полей таблицы ANLA, все можно заменить.
А можно пооподробнее, где почитать про это, а то что-то даже не представляю о чем вы. :)
Хотя бы ссылку на описание процесса.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: AS02 подменить поле ANLA-LIEFE при сохранении
СообщениеДобавлено: Пт, сен 28 2018, 09:40 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Ср, ноя 03 2004, 14:51
Сообщения: 1912
Откуда: КраснАдар
Пол: Мужской
Ну может так оно и есть и это у меня не получилось. Я менял вручную предзаполненное замещением (основные данные) поле ANLA-LIEFE, в базу легло измененное значение, замещение его не восстановило.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: AS02 подменить поле ANLA-LIEFE при сохранении
СообщениеДобавлено: Пт, сен 28 2018, 10:06 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Ср, ноя 03 2004, 14:51
Сообщения: 1912
Откуда: КраснАдар
Пол: Мужской
Дополнительно для информации.

Нота 44882 - Substitution for master data сообщает, что замещение срабатывает единожды при создании (AS01), его невозможно вызвать повторно в AS01 или при изменении ОС в AS02.

Возможно, это устаревшая информация, но моя система работает именно так.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: AS02 подменить поле ANLA-LIEFE при сохранении
СообщениеДобавлено: Пт, сен 28 2018, 15:00 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Ср, фев 21 2007, 08:50
Сообщения: 1571
Откуда: Пермь
Пол: Мужской
John Doe, про изменение согласен, об этом сразу в IMG и написано.
В AA 6 моментов замещений, обычного изменения там и нет, только массовое. Хитрые они какие-то. Возможно, на все есть причина.

По поводу единократного запуска даже в AS01 - проверю сейчас и отпишусь.

Валерка написал(а):
А можно пооподробнее, где почитать про это, а то что-то даже не представляю о чем вы.
Хотя бы ссылку на описание процесса.

Ишь какой, почитать еще :D Да ладно, шутка. Возможно, мне чуть проще, потому что я в целом неплохо знаю, как работают замещения и проверки в классических финансах, так как очень давно с ними работаю. Поэтому многие вещи в AA чисто по аналогии работают, да и таблицы там те же по сути. К сожалению, у меня нет ничего почитать на эту тему.

_________________
Алё, это Пакистан? Нам нужен один килограмм


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: AS02 подменить поле ANLA-LIEFE при сохранении  Тема решена
СообщениеДобавлено: Пт, сен 28 2018, 17:36 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Ср, фев 21 2007, 08:50
Сообщения: 1571
Откуда: Пермь
Пол: Мужской
John Doe написал:
Ну может так оно и есть и это у меня не получилось. Я менял вручную предзаполненное замещением (основные данные) поле ANLA-LIEFE, в базу легло измененное значение, замещение его не восстановило.

Вы были правы, замещение на основные данные отрабатывает только один раз. Я уже почти сдался, но все равно поборол проблему :pivo:

Инклуд LAISTF7Y подпрограмма SUBST_TESTEN.

Code:
Eingegebene Substitutions durchführen                          *
*       Es muß auch noch sichergestellt werden, daß jede Substitution  *
*       nur einmal durchgeführt wird. Bei den Stammdaten geschieht     *
*       dies durch das Kennzeichen kz_subst in der Tabelle sub_x093sb. *
*       Bei den Bereichen wird die Substitution in der Tabelle X093    *
*       im Kennzeichen subst vermerkt. Folgende Werte kann dieses      *
*       Kennzeichen pro Bereich annehmen:
*       x093-subst: - 0 keine Subst. im Bereich gelaufen.
*                   - 1 Subst in log. Feglg. 1 gelaufen.
*                    -2 Subst in allen Feglg. gelaufen.


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

Code:
IF ( sub_x093sb-fegtb = con_a  AND  sub_x093sb-kz_subst = off ) OR
*      Bereiche und noch nicht ausgeführt ODER
       ( sub_x093sb-fegtb = con_b  AND  x093-subst = off ) OR
*      Bereiche und FEGLG 2 oder 3 und erst Subst. für FEGLG 1 ausgef.
       ( sub_x093sb-fegtb = con_b  AND  x093-subst = con_1  AND
                                        sub_x093sb-feglg > 1 ).


Однако сразу заметно, что только один раз отрабатывают замещения с таблицей групп полей типа А. А замещения с таблицей групп полей типа B отрабатывают один раз, если еще не отрабатывавали вообще ИЛИ уже отрабатывали, однако имеют логическую группу полей больше 1.
Первое мое замещение было вообще с типом А, оно прокатывало один раз и на этом все, это понятно.
Второе мое замещение было с типом B, но с группой 1. Аналогичная история.
Я подумал, что будет, если обмануть систему и сделать замещение с типом B и с группой полей 2 (Начало расчета амортизации). Я был уверен, что поле из таблицы ANLA система в замещении с типом таблиц B не примет. Однако система спокойно попала в замещение повторно. Единственный недостаток - она попадает туда 4 раза (сколько областей оценки, столько раз и попадет, исключая производные). Но ничто не мешает в подпрограмме обработки зацепить только первую область, ибо достаточно обработать ANLA один раз, чем тратить время на одинаковую обработку 4 раза подряд. И что самое главное!!! Это замещение отрабатывает всегда, даже если заход на вкладку "Оценка" не был произведен. Я проверил, это 100%. Перед самым сохранением зайдет повторно. Возможно, допустимо использовать также логические группы 3 и 4, но этого я не проверял. Мне было важно проверит именно саму технологию.

Таким образом, решением проблемы является замещение поля ANLA-LIEFE в замещении с типом таблиц B, с логической группой полей > 001, например, группа полей 002 "Начало расчета". С ограничением работы только по первой области оценки, чтобы исключить итеративные запуски :D

_________________
Алё, это Пакистан? Нам нужен один килограмм


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 11 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot]


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB