Текущее время: Пт, мар 29 2024, 14:20

Часовой пояс: 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
Сообщения: 1570
Откуда: Пермь
Пол: Мужской
Способов полно.
Самый простой - замещение в 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
Сообщения: 1570
Откуда: Пермь
Пол: Мужской
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
Сообщения: 1570
Откуда: Пермь
Пол: Мужской
Охохо!))) огонь.
Отбой.
Не стал удалять свое предыдущее сообщение, что уж, зря писал что ли.
СПОКОЙНО заместил 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
Сообщения: 1570
Откуда: Пермь
Пол: Мужской
John Doe, про изменение согласен, об этом сразу в IMG и написано.
В AA 6 моментов замещений, обычного изменения там и нет, только массовое. Хитрые они какие-то. Возможно, на все есть причина.

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

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

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

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


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

Зарегистрирован:
Ср, фев 21 2007, 08:50
Сообщения: 1570
Откуда: Пермь
Пол: Мужской
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 часа


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

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