Текущее время: Вс, июл 20 2025, 23:20

Часовой пояс: 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 часа


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

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


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

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