Текущее время: Ср, июл 30 2025, 23:03

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 9 ] 
Автор Сообщение
 Заголовок сообщения: Сохранение сбытового контракта - USEREXIT_SAVE_DOCUMENT_PREPARE.  Тема решена
СообщениеДобавлено: Пт, фев 11 2011, 11:27 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Ср, дек 17 2008, 19:38
Сообщения: 434
Откуда: Санкт-Петербург
Пол: Женский
Подскажите пожалуйста, как правильно запретить сохранение контракта, если не прошла своя проверка, сделанная в USEREXIT_SAVE_DOCUMENT_PREPARE?

сделала так:

Code:
CHECK xvbak-vbtyp = 'G'.  " контракт

if < условие >.
  fcode = 'T\02'. " обзор позиций
  MESSAGE   'message' type  'E'.
endif.


сама тестировала, консультант тестировал - все хорошо
пользователь умудрился сохранить, обойдя запрет.
еще и написал - "долго мучился с красненьким сообщением" (упорный, гад!)

может какой индикатор надо выставить, но я не нашла?

_________________
Silence v.2.0


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Сохранение сбытового контракта - USEREXIT_SAVE_DOCUMENT_PREPARE.
СообщениеДобавлено: Пт, фев 11 2011, 12:03 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Вт, апр 24 2007, 15:56
Сообщения: 1402
Вообще не должно давать сохранить ))
Неудобство в том, што ошибка типа 'E' серит экран.
Я вот так всегда делал, вроде работает (хотя ваш вариант с подменой fcode считаю более корректным, но руки как-то не доходили переписывать).
Code:
  call function 'DIALOG_GET_STATUS'
    importing
      dialog_status = lf_no_dialog.
  if <check>.
    if lf_no_dialog = 'X'.
        message 'E'.
      else.
        message type 'I' display like 'E'.
        leave to screen sy-dynnr.
      endif.
    endif.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Сохранение сбытового контракта - USEREXIT_SAVE_DOCUMENT_PREPARE.
СообщениеДобавлено: Пт, фев 11 2011, 13:06 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Вт, апр 24 2007, 15:56
Сообщения: 1402
Спасибо за идею - руки дошли, переделал. :pivo:
Единственное, не всегда нужно сообщение выдавать об ошибке (например, лог выводится).
Поэтому у меня получилось что-то типа:
Code:
CALL FUNCTION 'DIALOG_GET_STATUS'
  IMPORTING
    dialog_status = lf_no_dialog.
IF <check>.
  IF lf_no_dialog = 'X'.
    MESSAGE 'E'.
  ELSE.
    fcode = 'UER1'.
    IF lf_message = 'X'
      MESSAGE 'E'.
    ELSE.
      LEAVE TO SCREEN sy-dynnr.
    ENDIF.
  ENDIF.
ENDIF.

Всё работает нормально, не сохраняет.
Как вариант - может у пользователя проверка повторно не отработала?
Проверьте условия при которых выполнение может оборватсья до вывода сообщения.
Например, странно что вы xvbak проверяете, а не vbak.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Сохранение сбытового контракта - USEREXIT_SAVE_DOCUMENT_PREPARE.
СообщениеДобавлено: Пт, фев 11 2011, 13:34 
Модератор
Модератор
Аватара пользователя

Зарегистрирован:
Пт, июн 16 2006, 00:43
Сообщения: 1686
Откуда: Москва <-> Красноярск
Пол: Мужской
Мой вариант, сделанный исходя из мнения, что сообщение об ошибке еще не повод вводить все заново :)

Code:
fcode = fcode_gleiche_seite.

MESSAGE ID класс TYPE 'E' NUMBER номер WITH что-то.

message_collect_lord.

PERFORM fcode_bearbeiten.


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Сохранение сбытового контракта - USEREXIT_SAVE_DOCUMENT_PREPARE.
СообщениеДобавлено: Пт, фев 11 2011, 13:54 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Вт, апр 24 2007, 15:56
Сообщения: 1402
Да, тоже собрался уже написать что лучше было бы еще заюзать perform fcode_bearbeiten, с кодом ENT1 :D
Только вот вставка не будет работать (такая конструкция по-моему для сообщений не типа E), думаю нужно что-то типа
Code:
fcode = fcode_gleiche_seite.
perform fcode_bearbeiten.
MESSAGE TYPE 'E'.

а если внешний обработчик, то
Code:
sy_tmp = syst.
fcode = fcode_gleiche_seite.
perform fcode_bearbeiten.
MESSAGE sy_tmp.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Сохранение сбытового контракта - USEREXIT_SAVE_DOCUMENT_PREPARE.
СообщениеДобавлено: Пт, фев 11 2011, 14:03 
Модератор
Модератор
Аватара пользователя

Зарегистрирован:
Пт, июн 16 2006, 00:43
Сообщения: 1686
Откуда: Москва <-> Красноярск
Пол: Мужской
troy, у меня все просто, кусок кода универсальный. Там вместо 'E' может быть 'W'. Тогда последние две строчки имеют смысл.


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Сохранение сбытового контракта - USEREXIT_SAVE_DOCUMENT_PREPARE.
СообщениеДобавлено: Пт, фев 11 2011, 14:48 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Вт, апр 24 2007, 15:56
Сообщения: 1402
Т.е. вы хотите сказать, что perform fcode_bearbeiten не обязателен?
Вполне допускаю, что у топикстартера могли возникнуть пролемы именно из-за того, что этот перформ не был отработан.

P.S. и как в случае с типом сообщения W будет прерываться выполнение программы, после установки fcode = 'ENT1'?
Хотя наверное где-то в конце SAVE_DOCUMENT_PREPARE :wink:


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Сохранение сбытового контракта - USEREXIT_SAVE_DOCUMENT_PREPARE.
СообщениеДобавлено: Пт, фев 11 2011, 15:21 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Ср, дек 17 2008, 19:38
Сообщения: 434
Откуда: Санкт-Петербург
Пол: Женский
troy написал(а):
Да, тоже собрался уже написать что лучше было бы еще заюзать perform fcode_bearbeiten, с кодом ENT1 :D
Только вот вставка не будет работать (такая конструкция по-моему для сообщений не типа E), думаю нужно что-то типа
Code:
fcode = fcode_gleiche_seite.
perform fcode_bearbeiten.
MESSAGE TYPE 'E'.



вставила
Code:
fcode = fcode_gleiche_seite.
perform fcode_bearbeiten.

заодно посмотрела, что делается в form fcode_bearbeiten - впечатлило 8)

troy написал(а):
а если внешний обработчик, то
Code:
sy_tmp = syst.
fcode = fcode_gleiche_seite.
perform fcode_bearbeiten.
MESSAGE sy_tmp.


я не поняла про внешний обработчик :oops:

_________________
Silence v.2.0


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Сохранение сбытового контракта - USEREXIT_SAVE_DOCUMENT_PREPARE.
СообщениеДобавлено: Пт, фев 11 2011, 15:41 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Вт, апр 24 2007, 15:56
Сообщения: 1402
Silence1 написала:
я не поняла про внешний обработчик :oops:

Если ошибку генерит, напрмиер, ФМ (обработка по sy-subrc <> 0), то после PERFORM fcode_bearbeiten переменные SY-MSG... могут быть изменены.


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

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


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

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


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

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