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

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


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

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


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

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