Текущее время: Вт, июл 17 2018, 19:31

Часовой пояс: 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
Сообщения: 135
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 часа


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

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


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

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