Текущее время: Ср, авг 23 2017, 00:46

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 70 ]  На страницу Пред.  1, 2, 3, 4, 5  След.
Автор Сообщение
 Заголовок сообщения: Re: Полезные трюки ABAP
СообщениеДобавлено: Пн, окт 06 2014, 10:01 
Модератор
Модератор

Зарегистрирован:
Пн, июн 27 2011, 09:25
Сообщения: 399
4000/200101

WA1-BUKRS = 4000
WA1-KUNRG = 200101


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Полезные трюки ABAP
СообщениеДобавлено: Пн, окт 06 2014, 16:03 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пн, мар 28 2005, 16:38
Сообщения: 1062
olegbash при таких условиях у вас будет удаляться только 1 строка
Цитата:
стр5 BUKRS=[5000] VBRK_KUNRG=[200105]

все остальные в первом варианте останутся.

_________________
Там, где я рос, единственным развлечением было запоминать число «π».(С) Н. Стивенсон


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Полезные трюки ABAP
СообщениеДобавлено: Вт, окт 07 2014, 05:28 
Специалист
Специалист

Зарегистрирован:
Вт, июн 10 2014, 10:41
Сообщения: 135
olegbash писал(а):
Код:
" отрабатывает неправильно - записи не удаляются
"delete ltf_table1 WHERE BUKRS ne wa1-bukrs and VBRK_KUNRG ne wa1-kunrg.

Буду очень признателен, если поясните, почему 1ый способ записи не удаляет (то, что он не удаляет - убедился сам :D ).
Возможно, его как-то нужно преобразовать.


Чтобы первый способ удалял правильно можно написать так:
Код:
delete ltf_table1 WHERE NOT ( BUKRS eq wa1-bukrs and VBRK_KUNRG eq wa1-kunrg ).


А ваш способ не работал, т.к. использовался оператор AND и после ложности первой проверки (BUKRS ne wa1-bukrs, т.е. BUKRS всё таки равен wa1-bukrs) вторая часть проверки не выполняется вообще, т.к. общий смысл проверки всё равно будет ложным. А после истинности первой проверки (BUKRS ne wa1-bukrs) проверяется истинность второй проверки (VBRK_KUNRG ne wa1-kunrg) и записи удалятся только если И BUKRS ne wa1-bukrs И VBRK_KUNRG ne wa1-kunrg, а это не совсем то, что вам нужно...
Вам нужно ИЛИ BUKRS ne wa1-bukrs ИЛИ VBRK_KUNRG ne wa1-kunrg, т.е.
Код:
delete ltf_table1 WHERE BUKRS ne wa1-bukrs OR VBRK_KUNRG ne wa1-kunrg.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Полезные трюки ABAP
СообщениеДобавлено: Чт, окт 30 2014, 10:40 
Начинающий
Начинающий

Зарегистрирован:
Пт, фев 21 2014, 06:52
Сообщения: 21
Добрый день, знатоки ABAP и прочих языков программирования.
Из любопытства у меня возник, возможно глупый, вопрос по поводу оператора Select count(*). Его можно писать в двух вариантах.
COUNT( * ) (or count(*)) Determines the number of rows in the resulting set or in the current group. No column label is specified in this case.
И вот мне непонятно, зачем это сделано в двух вариантах, с пробелами и без. И почему при этом SAP не сделал двухвариантую возможность написания функций max(), min( ) и проч.
Хотелось бы узнать ваши мнения на этот счет?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Полезные трюки ABAP
СообщениеДобавлено: Сб, ноя 29 2014, 00:24 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Ср, июл 15 2009, 06:55
Сообщения: 173
Откуда: Мегион - > СПб
Пол: Мужской
UKY писал(а):
olegbash писал(а):
Код:
" отрабатывает неправильно - записи не удаляются
"delete ltf_table1 WHERE BUKRS ne wa1-bukrs and VBRK_KUNRG ne wa1-kunrg.

Буду очень признателен, если поясните, почему 1ый способ записи не удаляет (то, что он не удаляет - убедился сам :D ).
Возможно, его как-то нужно преобразовать.


Чтобы первый способ удалял правильно можно написать так:
Код:
delete ltf_table1 WHERE NOT ( BUKRS eq wa1-bukrs and VBRK_KUNRG eq wa1-kunrg ).


А ваш способ не работал, т.к. использовался оператор AND и после ложности первой проверки (BUKRS ne wa1-bukrs, т.е. BUKRS всё таки равен wa1-bukrs) вторая часть проверки не выполняется вообще, т.к. общий смысл проверки всё равно будет ложным. А после истинности первой проверки (BUKRS ne wa1-bukrs) проверяется истинность второй проверки (VBRK_KUNRG ne wa1-kunrg) и записи удалятся только если И BUKRS ne wa1-bukrs И VBRK_KUNRG ne wa1-kunrg, а это не совсем то, что вам нужно...
Вам нужно ИЛИ BUKRS ne wa1-bukrs ИЛИ VBRK_KUNRG ne wa1-kunrg, т.е.
Код:
delete ltf_table1 WHERE BUKRS ne wa1-bukrs OR VBRK_KUNRG ne wa1-kunrg.


В теории Дискретная математика -> Свойства конъюнкции, дизъюнкции и отрицания -> Правила де Моргана :rtfm:

_________________
Ничто так не заразительно, как смех начальника...


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Полезные трюки ABAP
СообщениеДобавлено: Пн, дек 01 2014, 06:00 
Специалист
Специалист

Зарегистрирован:
Вт, июн 10 2014, 10:41
Сообщения: 135
Если поставить комментарий таким способом:
Цитата:
* Комментируем код. PERFORM do_code. Продолжаем комментировать.

То можно будет "проваливаться" в PERFORM двойным кликом.
Такие комментарии работают и с методами и ФМ'ами.
Главное, чтобы код был разделён от комментария точкой.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Полезные трюки ABAP
СообщениеДобавлено: Ср, дек 03 2014, 11:01 
Специалист
Специалист

Зарегистрирован:
Чт, мар 25 2010, 10:02
Сообщения: 188
В редакторе абап (и во многих местах se80) - вместо двойного клика можно использовать кнопку F2, аналог кнопки назад - Esc (но это, наверное, все знают).


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Полезные трюки ABAP
СообщениеДобавлено: Чт, фев 05 2015, 05:27 
Специалист
Специалист

Зарегистрирован:
Вт, июн 10 2014, 10:41
Сообщения: 135
Как известно, точки наблюдения для FIELD-SYMBOLS не работают.

Но, оказывается, можно для точек прерывания ставить условия с FIELD-SYMBOLS и программа отлично останавливается в этом месте!


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Полезные трюки ABAP
СообщениеДобавлено: Ср, фев 11 2015, 17:52 
Модератор
Модератор
Аватара пользователя

Зарегистрирован:
Пт, июн 16 2006, 01:43
Сообщения: 1686
Откуда: Москва <-> Красноярск
Пол: Мужской
Изображение

Вот это я понимаю трюки :)


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Полезные трюки ABAP
СообщениеДобавлено: Чт, фев 12 2015, 08:01 
Специалист
Специалист

Зарегистрирован:
Ср, янв 26 2005, 06:11
Сообщения: 167
Пол: Мужской
Цитата:
Вот это я понимаю трюки :)

Не все такие счастливчики, и имеют 7.4


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Полезные трюки ABAP
СообщениеДобавлено: Ср, фев 18 2015, 10:00 
Специалист
Специалист

Зарегистрирован:
Вт, июн 10 2014, 10:41
Сообщения: 135
Только сегодня узнал, что можно создавать статические переменные в статических методах класса.
Причём это ещё как минимум с версии 7.0 работает...

P.S.: Сколько статических переменных класса было создано зря уже и не сосчитать...


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Полезные трюки ABAP
СообщениеДобавлено: Сб, фев 21 2015, 00:37 
Старший специалист
Старший специалист

Зарегистрирован:
Чт, окт 22 2009, 13:41
Сообщения: 473
Да, но ведь к таким переменным можно будет обратиться только из этого метода. В виде атрибута класса получается гибче. Хотя интерфейс атрибутов класса ужасен, это да.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Слабые ссылки в ABAP.
СообщениеДобавлено: Пн, мар 02 2015, 19:35 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, авг 19 2004, 18:37
Сообщения: 1757
Откуда: Москва
Пол: Мужской
Для создания "слабых ссылок" есть класс CL_ABAP_WEAK_REFERENCE. Как им можно пользоваться описал в теме про утечку памяти.

_________________
"For all entries" не в SAP-ах, "for all entries" в головах! :)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Полезные трюки ABAP
СообщениеДобавлено: Ср, июн 03 2015, 20:28 
Модератор
Модератор

Зарегистрирован:
Пн, июн 27 2011, 09:25
Сообщения: 399
Для создания бесконечных циклов в отладке удобно использовать класс CL_BCS_BREAKLOOP


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Полезные трюки ABAP
СообщениеДобавлено: Ср, июн 03 2015, 21:39 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Пн, окт 11 2004, 21:32
Сообщения: 2432
Пол: Мужской
Пакет RE_CA_BC - набор полезных утилит

_________________
- Может ли настоящий мастер кунг-фу получить по морде?
- Настоящий мастер может все!


Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 70 ]  На страницу Пред.  1, 2, 3, 4, 5  След.

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


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

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


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

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