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

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


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

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


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

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