SAPфорум.RU https://www.sapboard.ru/forum/ |
|
Полезные трюки ABAP https://www.sapboard.ru/forum/viewtopic.php?f=13&t=87197 |
Страница 6 из 8 |
Автор: | Kuranov.Dmitry [ Ср, сен 06 2017, 14:09 ] |
Заголовок сообщения: | Re: Полезные трюки ABAP |
LAT написал(а): Я имел в виду проверить "обернется в строковый литерал уже маленькими", а не работу PrettyPrinter. хмм. действительно, макрос переводит в верхний регистр. Не знал. |
Автор: | DKiyanov [ Пн, окт 23 2017, 17:04 ] |
Заголовок сообщения: | Re: Полезные трюки ABAP |
новый синтаксис OPEN SQL использование COALESCE и CASE в комбинации Code: SELECT COALESCE( ( CASE vbrk~fksto WHEN 'X' THEN 'X' END ), ( CASE vbrk~sfakn WHEN ' ' THEN ' ' ELSE 'S' END ) ) AS stor " X - сторнирован; S - сторнирующий FROM vbrk т.е удалось проанализировать два поля и вывести один результат |
Автор: | SAPer [ Чт, июл 12 2018, 12:30 ] |
Заголовок сообщения: | Re: Полезные трюки ABAP |
Очень люблю использовать такую конструкцию в коде. Она позволят избавится от грамоздких и многократно вложенных if. Code: do 1 times.
check a = b. check n = m. check x = y. do something here. enddo. |
Автор: | Rizor [ Чт, июл 12 2018, 13:32 ] |
Заголовок сообщения: | Re: Полезные трюки ABAP |
SAPer написал: Очень люблю использовать такую конструкцию в коде. Она позволят избавится от многократно вложенных if. Code: do 1 times. check a = b. check n = m. check x = y. do something here. enddo. По мне тут на 80% звоночек, что этот кусок кода стоит обернуть в отдельный метод со значащим названием |
Автор: | Saperx [ Пт, июл 13 2018, 06:38 ] |
Заголовок сообщения: | Re: Полезные трюки ABAP |
Rizor написал(а): SAPer написал: Очень люблю использовать такую конструкцию в коде. Она позволят избавится от многократно вложенных if. Code: do 1 times. check a = b. check n = m. check x = y. do something here. enddo. По мне тут на 80% звоночек, что этот кусок кода стоит обернуть в отдельный метод со значащим названием И про вложенность не понял, почему не Code: IF a = b AND n = m AND x = y.
do something here. ENDIF. |
Автор: | Kuranov.Dmitry [ Пт, июл 13 2018, 09:27 ] |
Заголовок сообщения: | Re: Полезные трюки ABAP |
Цитата: И про вложенность не понял, почему не Думаю автор имел в виду Code: do 1 times. check a = b. " что-то деллаем check n = m. "что-то делаем check x = y. "что-то делаем enddo. вместо Code: if a = b.
"do some action if n = m. "do someeaction if x = y. "do someaction enddif. endif endif |
Автор: | SAPer [ Пт, июл 13 2018, 12:31 ] |
Заголовок сообщения: | Re: Полезные трюки ABAP |
Я то что написал, то и имел ввиду. Внутри DO делаем последовательные проверки и в конце какой то код. Код отработает, если пойдут все условия. Данный подход для меня позволяет: 1. Избежать написания громоздких IF с множеством условий. Например одно из условий может быть вызов метода. И их может быть несколько. 2. Избежать написания вложенных IF. 3. Удобство отладки. При отладке сразу понятно какое условие не прошло. Минусы - код немного получается длиннее. Пример реального кода: Code: " Проверка на максимальную стоимость
do 1 times. check lr_bid->s_header-src_object_type ne zcl_doc_static=>pp. " конкурс должен быть активной версией check lr_bid->s_header-version_type eq zcl_doc_static=>version_active. " Проверка этапа check lr_bid->s_header-object_id eq lr_bid->s_header-zz_hist_doc_id. " Проверка на включенность закупки в план check lr_bid->s_header-zz_plan_excl_x eq abap_false. " Проверка локального флага check zcl_oos_notice_static=>is_enabled( lr_bid->guid ) eq abap_true. " Для компании сравниваем с 500.000, для ДЗО с 100.000 if zcl_doc_static=>is_dzo( lr_bid->guid ) eq abap_false. check lr_bid->s_header-total_value gt zcl_constants=>value( 'BUS2200/MAX_VALUE_WO_PP' ). else. check lr_bid->s_header-total_value gt zcl_constants=>value( 'BUS2200/DZO_MIN_VALUE' ). endif. message e015 into zcl=>dummy. zcl_message_static=>add_message( changing ct_messages = ct_messages ). enddo. |
Автор: | Удав [ Пт, июл 20 2018, 00:55 ] |
Заголовок сообщения: | Re: Полезные трюки ABAP |
SAPer написал: Я то что написал, то и имел ввиду. Имелось ввиду, что вместо do..enddo можно было написать method..endmethod. И было бы элегантнее и кода бы меньше было |
Автор: | Kengur [ Пт, июл 20 2018, 09:50 ] |
Заголовок сообщения: | Re: Полезные трюки ABAP |
Удав написал(а): SAPer написал: Я то что написал, то и имел ввиду. Имелось ввиду, что вместо do..enddo можно было написать method..endmethod. И было бы элегантнее и кода бы меньше было do 1 times часто пишут там где нельзя объявлять свои блоки (энхансменты и т.д.) но при этом надо писать независимые условия (проверки). |
Автор: | ArmAnn [ Пт, июл 20 2018, 14:02 ] |
Заголовок сообщения: | Re: Полезные трюки ABAP |
Kengur написал(а): do 1 times часто пишут там где нельзя объявлять свои блоки (энхансменты и т.д.) но при этом надо писать независимые условия (проверки). это вы зря - объявлять может и нельзя, а использовать - можно. Как раз в энхансментах лучше бы заворачивать свой код в ФМы или методы и только вызывать из энхансмента - так и сопровождать проще, и при апгрейде головной боли меньше. А рекомендация Удава к do..enddo прямого отношения не имеет, просто видно что есть блок кода, который выполняет определенную функцию. И это блок явно напрашивается на вынос в отдельный метод. |
Автор: | Kengur [ Пт, июл 20 2018, 14:13 ] |
Заголовок сообщения: | Re: Полезные трюки ABAP |
ArmAnn написал: это вы зря это не я |
Автор: | Kuranov.Dmitry [ Пт, июл 20 2018, 15:02 ] |
Заголовок сообщения: | Re: Полезные трюки ABAP |
ArmAnn написал: А рекомендация Удава к do..enddo прямого отношения не имеет, просто видно что есть блок кода, который выполняет определенную функцию. И это блок явно напрашивается на вынос в отдельный метод. порой это надо сильно рефакторить, так как блок в Do enddo может использовать дофига локальных переменных. Code: FORM myForm.
DATA: a,b,c,d,e,f. ",,,, Do 1 times. a = b = 'X'. enddo. |
Автор: | olegbash [ Вт, мар 28 2023, 19:57 ] |
Заголовок сообщения: | Re: Полезные трюки ABAP |
должен же кто-то тему поддерживать... для создания excel и word (особенно не сложных и в том числе по шаблону) появились несколько полезных стандартных классов (на форуме есть примеры по ним) CL_XLSX_DOCUMENT CL_DOCX_DOCUMENT |
Автор: | Kengur [ Чт, апр 06 2023, 23:12 ] |
Заголовок сообщения: | Re: Полезные трюки ABAP |
Откопайте стюардессу |
Автор: | olegbash [ Пт, апр 07 2023, 08:22 ] |
Заголовок сообщения: | Re: Полезные трюки ABAP |
Kengur написал(а): Откопайте стюардессу поделись лучше "полезным трюком" или трюком, которого нет, но полезно было бы иметь) вот нужна ли многозадачность в abap? и для каких целей ее бы применить? |
Страница 6 из 8 | Часовой пояс: UTC + 3 часа |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |