Текущее время: Вт, июл 29 2025, 12:50

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 3 ] 
Автор Сообщение
 Заголовок сообщения: Наборы при проверке правил
СообщениеДобавлено: Ср, мар 31 2010, 07:40 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Сб, июн 23 2007, 14:56
Сообщения: 203
Использую ФМ 'G_VSR_SUBRULE_CALL' для проверки правил, заведенных через GGB0. В правилах используются наборы, например:

Code:
200   0000      ZF11_ZDANIY   1   I   EQ   00002011            1
200   0000      ZF11_ZDANIY   2   I   EQ   00002016            2
200   0000      ZF11_ZDANIY   3   I   EQ   00002019            3
200   0000      ZF11_ZDANIY   4   I   EQ   00002021            4
200   0000      ZF11_ZDANIY   5   I   EQ   00008212            5


При проверке функциональным модулем значения входящего в набор возвращается FALSE. TRUE возвращается только в случае, если набор выглядит так:

Code:

200   0000      ZF11_ZDANIY   1   I   EQ   00002011   00002011   1
200   0000      ZF11_ZDANIY   2   I   EQ   00002016   00002016   2
200   0000      ZF11_ZDANIY   3   I   EQ   00002019   00002019   3
200   0000      ZF11_ZDANIY   4   I   EQ   00002021   00002021   4
200   0000      ZF11_ZDANIY   5   I   EQ   00008212   00008212   5


Т.е. все работает как задумано, только если указан диапазон верхнего значения, не смотря на то, что VALOPTION = ‘EQ’.
Как заставить работать правильно, без изменения наборов?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Наборы при проверке правил
СообщениеДобавлено: Чт, апр 01 2010, 13:17 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Сб, июн 23 2007, 14:56
Сообщения: 203
Решение, может кому пригодится:
Code:
REPORT  Z_CORRECT_SETS.

DATA: lt_setleaf LIKE setleaf OCCURS 0 WITH HEADER LINE.
DATA: lt_gb90    LIKE gb90    OCCURS 0 WITH HEADER LINE.
DATA: lt_gb901   LIKE gb901   OCCURS 0 WITH HEADER LINE.
DATA: BEGIN OF lt_bools OCCURS 0,
            bool LIKE setleaf-SETNAME,
        END OF lt_bools.
DATA: BEGIN OF lt_bools_tmp OCCURS 0,
            bool LIKE setleaf-SETNAME,
        END OF lt_bools_tmp.
DATA: l_ind_IN(1). "Индикатор появления "IN"

*** Выбор наборов, используемых в правилах *****************************

SELECT * INTO CORRESPONDING FIELDS OF TABLE lt_gb90 FROM gb90
  WHERE ( classid = '*****' OR
          classid = '*****').

SELECT * INTO CORRESPONDING FIELDS OF TABLE lt_gb901 FROM gb901
  FOR ALL ENTRIES IN lt_gb90 WHERE boolid = lt_gb90-boolid.


LOOP AT lt_gb901.
  SPLIT lt_gb901-boolexp AT ' ' INTO TABLE lt_bools_tmp.
  APPEND LINES OF lt_bools_tmp TO lt_bools.
ENDLOOP.

LOOP AT lt_bools.

  IF l_ind_IN = 'X'.
    l_ind_IN = ''. "Текущая звпись с набором (после "IN")
  ELSE.
    DELETE lt_bools.
  ENDIF.

  IF lt_bools-bool = 'IN'.
    l_ind_IN = 'X'. "Следующую запись не удаляем
  ENDIF.

ENDLOOP. "Получили список используемых наборов
************************************************************************

SELECT * INTO CORRESPONDING FIELDS OF TABLE lt_setleaf FROM setleaf
  FOR ALL ENTRIES IN lt_bools WHERE setname    = lt_bools-bool
                                AND valsign    = 'I'
                                AND valoption  = 'EQ'
                                AND valfrom   NE ''.

LOOP AT lt_setleaf.
  lt_setleaf-valto = lt_setleaf-valfrom.
  MODIFY lt_setleaf.
ENDLOOP.

LOOP AT lt_setleaf.
  MODIFY setleaf from lt_setleaf.
ENDLOOP.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Наборы при проверке правил
СообщениеДобавлено: Чт, апр 01 2010, 13:33 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, сен 07 2004, 17:47
Сообщения: 2988
nymbos написал(а):
Решение, может кому пригодится:
...

Это не решение, это хак.

_________________
"После" - не значит "вследствие"


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

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


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

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


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

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