Текущее время: Пн, июл 28 2025, 21:13

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


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

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


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

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