Текущее время: Пн, июл 16 2018, 16:35

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


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


ВНИМАНИЕ!

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



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

Зарегистрирован:
Ср, сен 06 2017, 00:56
Сообщения: 323
LAT написал(а):
Я имел в виду проверить "обернется в строковый литерал уже маленькими", а не работу PrettyPrinter.

хмм. действительно, макрос переводит в верхний регистр. Не знал.


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

Зарегистрирован:
Чт, мар 09 2006, 11:12
Сообщения: 561
Откуда: Волгодонск
Пол: Мужской
новый синтаксис 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

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

_________________
Изображение Попытка не пытка


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

Зарегистрирован:
Вт, авг 17 2004, 09:47
Сообщения: 203
Пол: Мужской
Очень люблю использовать такую конструкцию в коде. Она позволят избавится от грамоздких и многократно вложенных if.
Code:
do 1 times.
 
  check a = b.

  check n = m.

  check x = y.

  do something here.

enddo.

_________________
Абап в телеграмме
https://t.me/sapabap


Последний раз редактировалось SAPer Пт, июл 13 2018, 13:35, всего редактировалось 1 раз.

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

Зарегистрирован:
Пт, фев 01 2013, 11:27
Сообщения: 24
SAPer написал:
Очень люблю использовать такую конструкцию в коде. Она позволят избавится от многократно вложенных if.
Code:
do 1 times.
 
  check a = b.

  check n = m.

  check x = y.

  do something here.

enddo.


По мне тут на 80% звоночек, что этот кусок кода стоит обернуть в отдельный метод со значащим названием :wink:


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

Зарегистрирован:
Пн, мар 12 2012, 10:38
Сообщения: 134
Rizor написал(а):
SAPer написал:
Очень люблю использовать такую конструкцию в коде. Она позволят избавится от многократно вложенных if.
Code:
do 1 times.
 
  check a = b.

  check n = m.

  check x = y.

  do something here.

enddo.


По мне тут на 80% звоночек, что этот кусок кода стоит обернуть в отдельный метод со значащим названием :wink:

И про вложенность не понял, почему не
Code:
IF a = b AND n = m AND x = y.
  do something here.
ENDIF.


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

Зарегистрирован:
Ср, сен 06 2017, 00:56
Сообщения: 323
Цитата:
И про вложенность не понял, почему не


Думаю автор имел в виду

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


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

Зарегистрирован:
Вт, авг 17 2004, 09:47
Сообщения: 203
Пол: Мужской
Я то что написал, то и имел ввиду. Внутри 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.

_________________
Абап в телеграмме
https://t.me/sapabap


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

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


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

Сейчас этот форум просматривают: BingBot, SAPer


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

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