Текущее время: Чт, мар 28 2024, 15:31

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


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


ВНИМАНИЕ!

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



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

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

WA1-BUKRS = 4000
WA1-KUNRG = 200101


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

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

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

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


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

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

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


Чтобы первый способ удалял правильно можно написать так:
Code:
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, т.е.
Code:
delete ltf_table1 WHERE BUKRS ne wa1-bukrs OR VBRK_KUNRG ne wa1-kunrg.


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

Зарегистрирован:
Пт, фев 21 2014, 05:52
Сообщения: 26
Добрый день, знатоки 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
СообщениеДобавлено: Пт, ноя 28 2014, 23:24 
Специалист
Специалист
Аватара пользователя

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

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


Чтобы первый способ удалял правильно можно написать так:
Code:
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, т.е.
Code:
delete ltf_table1 WHERE BUKRS ne wa1-bukrs OR VBRK_KUNRG ne wa1-kunrg.


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

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


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

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

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


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

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


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

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

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


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

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

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


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

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

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


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

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

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


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

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


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

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

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


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

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


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

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

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


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

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


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

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


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

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