SAPфорум.RU https://www.sapboard.ru/forum/ |
|
Полезные трюки ABAP https://www.sapboard.ru/forum/viewtopic.php?f=13&t=87197 |
Страница 3 из 8 |
Автор: | olegbash [ Пн, окт 06 2014, 09:01 ] |
Заголовок сообщения: | Re: Полезные трюки ABAP |
4000/200101 WA1-BUKRS = 4000 WA1-KUNRG = 200101 |
Автор: | Кодер [ Пн, окт 06 2014, 15:03 ] |
Заголовок сообщения: | Re: Полезные трюки ABAP |
olegbash при таких условиях у вас будет удаляться только 1 строка Цитата: стр5 BUKRS=[5000] VBRK_KUNRG=[200105] все остальные в первом варианте останутся. |
Автор: | UKY [ Вт, окт 07 2014, 04:28 ] |
Заголовок сообщения: | Re: Полезные трюки ABAP |
olegbash написал(а): Code: " отрабатывает неправильно - записи не удаляются "delete ltf_table1 WHERE BUKRS ne wa1-bukrs and VBRK_KUNRG ne wa1-kunrg. Буду очень признателен, если поясните, почему 1ый способ записи не удаляет (то, что он не удаляет - убедился сам ). Возможно, его как-то нужно преобразовать. Чтобы первый способ удалял правильно можно написать так: 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.
|
Автор: | Force1984 [ Чт, окт 30 2014, 09:40 ] |
Заголовок сообщения: | Re: Полезные трюки ABAP |
Добрый день, знатоки 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( ) и проч. Хотелось бы узнать ваши мнения на этот счет? |
Автор: | LinevskiySV [ Пт, ноя 28 2014, 23:24 ] |
Заголовок сообщения: | Re: Полезные трюки ABAP |
UKY написал(а): olegbash написал(а): Code: " отрабатывает неправильно - записи не удаляются "delete ltf_table1 WHERE BUKRS ne wa1-bukrs and VBRK_KUNRG ne wa1-kunrg. Буду очень признателен, если поясните, почему 1ый способ записи не удаляет (то, что он не удаляет - убедился сам ). Возможно, его как-то нужно преобразовать. Чтобы первый способ удалял правильно можно написать так: 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. В теории Дискретная математика -> Свойства конъюнкции, дизъюнкции и отрицания -> Правила де Моргана |
Автор: | UKY [ Пн, дек 01 2014, 05:00 ] |
Заголовок сообщения: | Re: Полезные трюки ABAP |
Если поставить комментарий таким способом: Цитата: * Комментируем код. PERFORM do_code. Продолжаем комментировать. То можно будет "проваливаться" в PERFORM двойным кликом. Такие комментарии работают и с методами и ФМ'ами. Главное, чтобы код был разделён от комментария точкой. |
Автор: | AFH [ Ср, дек 03 2014, 10:01 ] |
Заголовок сообщения: | Re: Полезные трюки ABAP |
В редакторе абап (и во многих местах se80) - вместо двойного клика можно использовать кнопку F2, аналог кнопки назад - Esc (но это, наверное, все знают). |
Автор: | UKY [ Чт, фев 05 2015, 04:27 ] |
Заголовок сообщения: | Re: Полезные трюки ABAP |
Как известно, точки наблюдения для FIELD-SYMBOLS не работают. Но, оказывается, можно для точек прерывания ставить условия с FIELD-SYMBOLS и программа отлично останавливается в этом месте! |
Автор: | Пономарев Артем [ Ср, фев 11 2015, 16:52 ] |
Заголовок сообщения: | Re: Полезные трюки ABAP |
Вот это я понимаю трюки |
Автор: | Serge69 [ Чт, фев 12 2015, 07:01 ] |
Заголовок сообщения: | Re: Полезные трюки ABAP |
Цитата: Вот это я понимаю трюки Не все такие счастливчики, и имеют 7.4 |
Автор: | UKY [ Ср, фев 18 2015, 09:00 ] |
Заголовок сообщения: | Re: Полезные трюки ABAP |
Только сегодня узнал, что можно создавать статические переменные в статических методах класса. Причём это ещё как минимум с версии 7.0 работает... P.S.: Сколько статических переменных класса было создано зря уже и не сосчитать... |
Автор: | weise [ Пт, фев 20 2015, 23:37 ] |
Заголовок сообщения: | Re: Полезные трюки ABAP |
Да, но ведь к таким переменным можно будет обратиться только из этого метода. В виде атрибута класса получается гибче. Хотя интерфейс атрибутов класса ужасен, это да. |
Автор: | Parazit [ Пн, мар 02 2015, 18:35 ] |
Заголовок сообщения: | Слабые ссылки в ABAP. |
Для создания "слабых ссылок" есть класс CL_ABAP_WEAK_REFERENCE. Как им можно пользоваться описал в теме про утечку памяти. |
Автор: | olegbash [ Ср, июн 03 2015, 19:28 ] |
Заголовок сообщения: | Re: Полезные трюки ABAP |
Для создания бесконечных циклов в отладке удобно использовать класс CL_BCS_BREAKLOOP |
Автор: | ArmAnn [ Ср, июн 03 2015, 20:39 ] |
Заголовок сообщения: | Re: Полезные трюки ABAP |
Пакет RE_CA_BC - набор полезных утилит |
Страница 3 из 8 | Часовой пояс: UTC + 3 часа |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |