Текущее время: Сб, июл 19 2025, 19:33

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 14 ] 
Автор Сообщение
 Заголовок сообщения: Что применить: User-Exit или что-то другое при создании и изменении ОС?
СообщениеДобавлено: Вт, июл 10 2007, 13:05 
Младший специалист
Младший специалист

Зарегистрирован:
Чт, дек 01 2005, 11:45
Сообщения: 98
Уважаемые коллеги, подскажите.

При создании основной записи ОС (тр. AS01) и при изменении карточки ОС(тр. AS02) необходимо проверять значение введенное в поле формы в моем конкретном случае "Код ОКОФ" закладки "Присвоения"(в абстрактном случае в поле fld1, ) на соответствие определенным критериям в зависимости от значения введенного в поле "Класс"(в абстрактном случае поле fld2). И в зависимости от результата проверки соответствия критериям запрещать или разрешать дальнейший ввод.
Вопрос: каким механизмом программирования это реализовывать? User-exitом или можно сделать через SPRO->Финансы->Учет основных средств->основные данные->Определение проверки (помойму этот механизм называется замещением) или другим способом?

Я выбрал User-Exit: AIST0002 EXIT_SAPLAIST_003 INCLUDE ZXAISU04

За ранее извиняюсь возможно за глупые и элементарные вопросы, но ранее с таким работать не приходилось и хочу прояснить ситуацию


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, июл 10 2007, 14:13 
Директор
Директор

Зарегистрирован:
Пт, окт 07 2005, 09:10
Сообщения: 752
Откуда: 4.6C
Пол: Мужской
Удобнее и красивее будет работать если воспользоваться field-exit'ом.
Внутри выдашь информативное сообщение, что не так и LEAVE TO SCREEN <этот же экран>.
По поводу field-exit'а cм:
http://sapboard.ru/forum/viewtopic.php ... =fieldexit


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Что применить: User-Exit или что-то другое при создании и изменении ОС?
СообщениеДобавлено: Вт, июл 10 2007, 15:12 
Младший специалист
Младший специалист

Зарегистрирован:
Чт, дек 01 2005, 11:45
Сообщения: 98
Дело в том, что в нашей системе fields-exit отсутствует. И ни кто ничего не будет делать, чтобы параметрами перезапуска системы разрешить(если это возможно) использование этой технологии. Поэтому поставленные вопросы остаются открытыми :cry:


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, июл 10 2007, 15:56 
Младший специалист
Младший специалист

Зарегистрирован:
Чт, дек 07 2006, 12:48
Сообщения: 76
Пол: Мужской
Т.е. Тебе нужно при сохранении карточки, сделать проверку и при отрицательном значении, не давать сохранить, до момента корректного ввода?!


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, июл 10 2007, 16:18 
Председатель
Председатель
Аватара пользователя

Зарегистрирован:
Чт, апр 13 2006, 12:32
Сообщения: 1503
Откуда: Питер
Вам совсем основы нужны?
тр. smod, вводите проект AIST0002, заходите в атрибуты...


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Что применить: User-Exit или что-то другое при создании и изменении ОС?
СообщениеДобавлено: Вт, июл 10 2007, 16:22 
Младший специалист
Младший специалист

Зарегистрирован:
Чт, дек 01 2005, 11:45
Сообщения: 98
WhiteScorpio написал:
Т.е. Тебе нужно при сохранении карточки, сделать проверку и при отрицательном значении, не давать сохранить, до момента корректного ввода?!

Совершенно верно.

Но тут еще одна закавыка выяснилась. Поле, значение которого надо проверить, не присутствует в передаваемых параметрах User-Exita (в структуре ANLU), т.к. оно находится на специальной дополнительной закладке в карточке ОС и это поле GLO_RUS_OKOF, содержит данные из дополнительной таблицы GLOFAAASSETDATA.
При изменении карточки транзакцией AS02 проблем нет. По ключу ANLU-ANLN1 = GLOFAAASSETDATA-ANLN1 мы можем найти GLOFAAASSETDATA-GLO_RUS_OKOF.
Но если запись только создается (тр.AS01), то в поле ANLU-ANLN1 содержиться временное значение "INTERXXXX" и соответствия в таблице GLOFAAASSETDATA нет. Поэтому нам надо брать значение поля GLO_RUS_OKOF в чистом виде прямо из формы. Вот и стоит вопрос, как это сделать и где обработать


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Что применить: User-Exit или что-то другое при создании и изменении ОС?
СообщениеДобавлено: Вт, июл 10 2007, 16:29 
Младший специалист
Младший специалист

Зарегистрирован:
Чт, дек 01 2005, 11:45
Сообщения: 98
vga написал(а):
Вам совсем основы нужны?
тр. smod, вводите проект AIST0002, заходите в атрибуты...

Ну не владею я еще этим свободно :(

А потом что делать? Входить в компоненты? А что там изменять? (если не сложно подскажите)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, июл 10 2007, 17:15 
Младший специалист
Младший специалист

Зарегистрирован:
Чт, дек 07 2006, 12:48
Сообщения: 76
Пол: Мужской
ASSIGN ('(SAPMF05A)RF05A') TO <fs_rf05a>.
IF sy-subrc EQ 0.
<fs_rf05a>-field_1 = 'X'.
ENDIF.
Обработай поле по шаблону, используюя FIELD-SYMBL.
Далее в ZXAISU04:
if sy-ucomm eq 'RW'. "BACK
"временно сохранить для проверки
"потом если 'BUCH' (Сохранить) то месагу типа 'E' или 'W' типа 'E'
endif.
Хотя скорее всего мона и без 'RW'.
Удачи!


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Что применить: User-Exit или что-то другое при создании и изменении ОС?
СообщениеДобавлено: Вт, июл 10 2007, 19:53 
Младший специалист
Младший специалист

Зарегистрирован:
Чт, дек 01 2005, 11:45
Сообщения: 98
WhiteScorpio написал:
ASSIGN ('(SAPMF05A)RF05A') TO <fs_rf05a>.
IF sy-subrc EQ 0.
<fs_rf05a>-field_1 = 'X'.
ENDIF.
Обработай поле по шаблону, используюя FIELD-SYMBL.
Далее в ZXAISU04:
if sy-ucomm eq 'RW'. "BACK
"временно сохранить для проверки
"потом если 'BUCH' (Сохранить) то месагу типа 'E' или 'W' типа 'E'
endif.
Хотя скорее всего мона и без 'RW'.
Удачи!


А можно чуточку подробнее? Что такое SAPMF05A и RF05A и с чем это едят? Это случаем не текущее поле текущего экрана?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Что применить: User-Exit или что-то другое при создании и изменении ОС?
СообщениеДобавлено: Вт, июл 10 2007, 20:23 
Председатель
Председатель
Аватара пользователя

Зарегистрирован:
Чт, апр 13 2006, 12:32
Сообщения: 1503
Откуда: Питер
Герман написал(а):
Я выбрал User-Exit: AIST0002 EXIT_SAPLAIST_003 INCLUDE ZXAISU04


Вы можете подробно прочитать об использовании Customer Function Exit в курсе BC425.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Что применить: User-Exit или что-то другое при создании и изменении ОС?
СообщениеДобавлено: Ср, июл 11 2007, 09:28 
Младший специалист
Младший специалист

Зарегистрирован:
Чт, дек 07 2006, 12:48
Сообщения: 76
Пол: Мужской
Герман написал(а):
WhiteScorpio написал:
ASSIGN ('(SAPMF05A)RF05A') TO <fs_rf05a>.
IF sy-subrc EQ 0.
<fs_rf05a>-field_1 = 'X'.
ENDIF.
Обработай поле по шаблону, используюя FIELD-SYMBL.
Далее в ZXAISU04:
if sy-ucomm eq 'RW'. "BACK
"временно сохранить для проверки
"потом если 'BUCH' (Сохранить) то месагу типа 'E' или 'W' типа 'E'
endif.
Хотя скорее всего мона и без 'RW'.
Удачи!


А можно чуточку подробнее? Что такое SAPMF05A и RF05A и с чем это едят? Это случаем не текущее поле текущего экрана?

В твоем случае чтобы достучаться до нужно поля:
ASSIGN ('(Главная программа ФГ'ы AIST)GLOFAAASSETDATA') TO <fs_okof>.
IF sy-subrc EQ 0.
IF <fs_okof>-GLO_RUS_OKOF eq ....
..."твое действие, проверка и т.д. и т.п.
ENDIF.
ENDIF.
В этом случае Ты получаешь доступ к нужной структуры через FieldSymbl.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Что применить: User-Exit или что-то другое при создании и изменении ОС?
СообщениеДобавлено: Ср, июл 11 2007, 11:00 
Младший специалист
Младший специалист

Зарегистрирован:
Чт, дек 01 2005, 11:45
Сообщения: 98
WhiteScorpio написал:
В твоем случае чтобы достучаться до нужно поля:
ASSIGN ('(Главная программа ФГ'ы AIST)GLOFAAASSETDATA') TO <fs_okof>.
IF sy-subrc EQ 0.
IF <fs_okof>-GLO_RUS_OKOF eq ....
..."твое действие, проверка и т.д. и т.п.
ENDIF.
ENDIF.
В этом случае Ты получаешь доступ к нужной структуры через FieldSymbl.


Огромное спасибо братской Белоруссии от признательной Украины! :lol: За конкретный ответ на конкретный вопрос без лишнего трёпа. Все получилось, как нельзя лучше. Для тех кому возможно пригодиться:

FIELD-SYMBOLS <fs_okof> LIKE GLOFAAASSETDATA.

ASSIGN ('(SAPLGLO_FIAA_SCREENS)GLOFAAASSETDATA') TO <fs_okof>.
IF sy-subrc EQ 0.
IF <fs_okof>-GLO_RUS_OKOF eq ....
..."твое действие, проверка и т.д. и т.п..
ENDIF.
ENDIF.

Т.е идея этой методики: получить доступ к значениям полей, которые отображаются на экране, но не передаются в виде аргументов в расширение. Это реализуется кодом:

FIELD-SYMBOLS <fs_okof> LIKE Структура.
ASSIGN ('(ИмяГлавнойПрограммы)Струкура') TO <fs_okof>.
<fs_okof>-ПолеСтруктуры

В моем случае, мне нужно было найти значение поля GLO_RUS_OKOF, которое отсутствует в структуре ANLU, которая передается в расширение в виде аргумента.


WhiteScorpio написал:
ASSIGN ('(Главная программа ФГ'ы AIST)GLOFAAASSETDATA')

Для определения (Главная программа ФГ'ы AIST) и названия структуры GLOFAAASSETDATA воспользовался тем, что встал в поле, значение которого надо получить, и открыл окно "Техническая информация" (Для этого нажать F1, а затем кнопочку с изображением молотка и гаечного ключа). И там все написано.
Имя главной программы нашел в разделе "Данные экрана"->"Имя программы": SAPLGLO_FIAA_SCREENS (не путать с "Имя программы" в разделе "GUI данные"), Имя структуры или таблицы в разделе "Данные поля"->"Имя поля"

_________________
Даже если Вас съели, у вас все равно остается два выхода.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Что применить: User-Exit или что-то другое при создании и изменении ОС?
СообщениеДобавлено: Ср, июл 11 2007, 11:28 
Младший специалист
Младший специалист

Зарегистрирован:
Чт, дек 01 2005, 11:45
Сообщения: 98
А можно и так

FIELD-SYMBOLS: <fs_okof> LIKE GLOFAAASSETDATA-GLO_RUS_OKOF.

ASSIGN ('(SAPLGLO_FIAA_SCREENS)GLOFAAASSETDATA-GLO_RUS_OKOF') TO <fs_okof>.
IF sy-subrc EQ 0.
MOVE <fs_okof> TO v_okof.
...........
ENDIF.

Если достаточно обращение только к одному полю, без доступа к другим полям таблицы.

_________________
Даже если Вас съели, у вас все равно остается два выхода.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Что применить: User-Exit или что-то другое при создании и изменении ОС?
СообщениеДобавлено: Сб, авг 04 2007, 17:44 
Младший специалист
Младший специалист

Зарегистрирован:
Чт, дек 01 2005, 11:45
Сообщения: 98
Подскажите пжлста еще один момент.
Если я ввожу в поле неправильное значение и делаю операцию сохранения, то карточка основного средства сохраняется.
Вопрос: в каком другом расширении и/или в каком месте расширения ZXAISU04 и каким образом отловить события сохранения и сделать проверку на правильность сохранения?

Типа
* команда сохранить запись и поле GLO_RUS_OKOF не пустое
if sy-uomm = 'BUCH' and <fs_okof>-GLO_RUS_OKOF is initial.
MESSAGE Ошибка' TYPE 'E' .
clear: sy-uomm. " Сохранение не произойдет

_________________
Даже если Вас съели, у вас все равно остается два выхода.


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

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


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

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


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

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