Текущее время: Пт, май 16 2025, 02:38

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 15 ] 
Автор Сообщение
 Заголовок сообщения: Вопрос: как в IF поместить Logical Expressions
СообщениеДобавлено: Пт, ноя 18 2005, 14:42 
Гость
Помогите: есть некоторое условие в IF, которое зависит от нескольких параметров и которое я составляю в некоторую переменную l_line.

Мне надо теперь вставить l_line в оператор IF. Каким образом это возможно сделать - кто подскажет?

Если я пишу просто
Code:
IF ( l_line ).

То ругается.
Как можно еще сделать проверку переменного значения?


Принять этот ответ
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, ноя 18 2005, 14:45 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Пт, янв 21 2005, 12:40
Сообщения: 371
Пол: Мужской
М.б.
IF l_line ne 0.
...
ENDIF.
так?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, ноя 18 2005, 14:55 
Гость
В L_Line может быть следующее выражение:
Code:
DOKNRDOG1 = t_dogovor-DOKNRDOG


Или другое - более сложное. Если поставить NE ' ' то TRUE будет всегда. Меня это не устраивает. Мне нужно проверить именно мое L_line на TRUE и FALSE.


Принять этот ответ
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, ноя 18 2005, 15:02 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Вт, авг 17 2004, 12:50
Сообщения: 134
Откуда: UA->DE
Пол: Женский
IF этого не поддерживает, это только в WHERE можно.
Без FIELD-SYMBOLS не обойтись.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, ноя 18 2005, 15:09 
Специалист
Специалист

Зарегистрирован:
Пн, дек 06 2004, 11:36
Сообщения: 151
А что мешает-то в IF-е записать это условие? Или CHECK использовать.
Как я понимаю, Вы пытаетесь создать нето вроде "динамического IF". С какой целью?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, ноя 18 2005, 15:09 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Вт, авг 17 2004, 12:50
Сообщения: 134
Откуда: UA->DE
Пол: Женский
Примерчик:
Code:
TABLES: mara.
DATA: matnr TYPE mara-matnr
    .

mara-matnr = 'TEST'.
matnr = 'TEST'.



FIELD-SYMBOLS: <l_e1xxxxx>  TYPE ANY
             , <l_fname>    TYPE ANY
             , <l_field>    TYPE ANY
             .

ASSIGN ('MARA') TO <l_e1xxxxx>.
CHECK sy-subrc EQ 0.

ASSIGN 'MATNR' TO <l_fname>.
CHECK sy-subrc EQ 0.

ASSIGN COMPONENT <l_fname>
                 OF STRUCTURE <l_e1xxxxx> TO <l_field>.
CHECK sy-subrc EQ 0.

IF <l_field> = matnr.
  WRITE '='.
ELSE.
  WRITE '<>'.
ENDIF.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, ноя 18 2005, 15:55 
Гость
Спасибо, Pchelka.
Попробую поработать с FIELD-SYMBOLS.


Принять этот ответ
Вернуться к началу
  
 
 Заголовок сообщения: Re: Вопрос: как в IF поместить Logical Expressions
СообщениеДобавлено: Пт, ноя 18 2005, 15:56 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Ср, июн 22 2005, 09:51
Сообщения: 208
Пол: Мужской
Любаша написал(а):
Помогите: есть некоторое условие в IF, которое зависит от нескольких параметров и которое я составляю в некоторую переменную l_line.

Мне надо теперь вставить l_line в оператор IF. Каким образом это возможно сделать - кто подскажет?


Как вариант, может обратить взор на генерацию временных подпрограмм?

Оператор: GENERATE SUBROUTINE POOL (и далее F1) :D

_________________
С уважением, В.Ш.
4.6C


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вопрос: как в IF поместить Logical Expressions
СообщениеДобавлено: Пт, ноя 18 2005, 16:03 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Вт, авг 17 2004, 12:50
Сообщения: 134
Откуда: UA->DE
Пол: Женский
Виктор(Минск) написал:
Как вариант, может обратить взор на генерацию временных подпрограмм?

Из пушек по воробьям :wink:


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, ноя 18 2005, 16:15 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Ср, июн 22 2005, 09:51
Сообщения: 208
Пол: Мужской
Если требуется обработать случАй IF Поле1 ['>' '<' '<=' ... 'eq'] Поле2, то Field-symbols и CASE для всех случаев.

А если в общем случае, то мне воробьев не жалко. :D

_________________
С уважением, В.Ш.
4.6C


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: re
СообщениеДобавлено: Сб, ноя 19 2005, 22:24 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пт, сен 23 2005, 11:11
Сообщения: 963
если есть желание поизвращаться:
http://trop.host.sk/abap/abapsv.php?src ... -13-50.txt

см. форму _assert_46x и макрос вызова %assert6,
это аналогия assert в sap4.7
насколько помню: прога завершается, на сел.экран выводятся -
условие, файл и номер строки, где оно было нарушено,
поведение ессно можно поменять.

пример вызова
%assert6 'sy-subrc eq 0 and not ( l_tab[] is initial )'.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, ноя 21 2005, 16:28 
Гость
Ну что, вроде получилось. За исключением одной вещи:
когда у меня значение INITIAL, то нет присвоения, поэтому я просто не могу сравнить IF
Code:

    IF <l_fieldtd> = <l_fieldgs>.
        .....
      ELSE.
          ...
        EXIT.
      ENDIF.


А мне надо, чтобы INITIAL тоже срабатывало. И делало то, что в IFе.
Кто подскажет, как быть?
Code:
   
  FIELD-SYMBOLS:
                 <l_gts_sflight>  TYPE ANY
               , <l_t_dogdokum1>  TYPE ANY
               , <l_fnametd>    TYPE ANY
               , <l_fnamegs>    TYPE ANY
               , <l_fieldtd>    TYPE ANY
               , <l_fieldgs>    TYPE ANY
               .

  ASSIGN ('gts') TO <l_gts>.
  CHECK sy-subrc EQ 0.
  ASSIGN ('t_dogdokum1') TO <l_t_dogdokum1>.
  CHECK sy-subrc EQ 0.


  ASSIGN gl_sort-fieldname  TO <l_fnametd>.
  CHECK sy-subrc EQ 0.
  ASSIGN gl_sort-fieldname  TO <l_fnamegs>.
  CHECK sy-subrc EQ 0.

LOOP AT gl_sort.
      ASSIGN COMPONENT <l_fnametd>
                       OF STRUCTURE <l_t_dogdokum1> TO <l_fieldtd>.
      CHECK sy-subrc EQ 0.
      ASSIGN COMPONENT <l_fnamegs>
                       OF STRUCTURE <l_gts> TO <l_fieldgs>.
      CHECK sy-subrc EQ 0.
      IF <l_fieldtd> = <l_fieldgs>.
...
      ELSE.
...
        EXIT.
      ENDIF.
     ENDLOOP.


Принять этот ответ
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, ноя 21 2005, 17:10 
Гость
Всё получилось. С INITIAL я была не права - работает.
Простите начинающего: нашла ошибку - в структуре не хватало поля.


:oops:

Спасибо за помощь.


Принять этот ответ
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, ноя 22 2005, 06:55 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, авг 24 2004, 07:19
Сообщения: 3952
Откуда: ECC 6.0, South Kazakhstan
Можно воспользоваться и макросами:

Code:
REPORT  ZPM_X_MACRO_DEMO.

data: i1 type i,
      i2 type i,
      i3 type i,
      c1(10) type c,
      c2(10) type c,
      d1 type d,
      d2 type d.

* --------------------------------------

define if_eq.
  if &1 eq &2.
     write: / &1, '=', &2, ' is True'.
  else.
     write: / &1, '=', &2, ' is False'.
  endif.
end-of-definition.

* --------------------------------------

i1 = 2.
i2 = 3.

c1 = 'ABC'.
c2 = 'ABC'.

d1 = sy-datum.
d2 = sy-datum.

* --------------------------------------

if_eq i1 i2.
if_eq i1 i3. " i3 - initial
if_eq c1 c2.
if_eq d1 d2.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, ноя 22 2005, 09:22 
Гость
Спасибо, про макросы я вообще ничего не знала.
Теперь пригодится когда-нибудь. :D


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

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


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

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


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

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