Показаны сообщения с ярлыком ABAP. Показать все сообщения
Показаны сообщения с ярлыком ABAP. Показать все сообщения

среда, 4 февраля 2015 г.

Цепочки

Цепочка с задержкой

RSPCLOGCHAIN
RSPCCHAIN


RSPCVARIANT
SE37 - RSPC_VARIANT_DELETE


Коллегам тут понадобилось организовать запуск процесса с задержкой. Очень было удобно организовать это с помощью опции Debug Loop.



 Тестовый пример реализации:

Обработка ошибок

Далее... необходимо было чтобы цепочка завершалась с зеленым статусом, в случае если произошла предусмотренная ошибка (красная линия). Данная настройка как раз позволяет это сделать. В случае если в цепочке произойдет сбой без обработчика - статус будет красным.

Сообщения привязанные к этой цепочке (снаружи) отрабатывали согласно статусу цепочки.

Process Chain \ Attributes \ Process status valuation



запуск ABAP

Казалось бы, какие могут быть вопросы.

Но попали на нюанс, что ALEREMOTE не имел достаточным прав в продуктиве (се ля ви) и нужно запускать под другим пользователем. И да, ошибка авторизации не всплывала как ошибка, ABAP программа отрабатывала "успешно" с зеленым статусом.

Process Chain \ Attributes \ Execution User


Если ABAP программа склонна к дампу, то лучше её обернуть в цепочку. В общем, при дампе программы просто прерывалось выполнение всей цепочки. Обернутая же, и продолжала выполнение, и статус возвращала.

Цикл

Для циклической загрузки данных удобно использовать элемент Previous Run Active? а саму цепочку запланировать выполняться каждые 20 минут.


Если нужна будут выборки, ну приодеться повозиться с переменными и TVARV.

Интересное решение на основе статистики SAP BI - Load Schedule Map
И ещё - BW Tools - /SSA/BWT

вторник, 1 июля 2014 г.

Exclude calendar weekends

    DATA:
      lt_day_attributes TYPE TABLE OF casdayattr
     .

     RESULT 0.
     IF   SOURCE_FIELDS-csm_clda <> SOURCE_FIELDS-csm_crda
       AND SOURCE_FIELDS-csm_clda IS NOT INITIAL
       AND SOURCE_FIELDS-csm_crda IS NOT INITIAL.

        "Exclude calendar weekends
        CALL FUNCTION 'DAY_ATTRIBUTES_GET'
          EXPORTING
            factory_calendar           'RU'
            holiday_calendar           'RU'
            date_from                  SOURCE_FIELDS-csm_crda
            date_to                    SOURCE_FIELDS-csm_clda
          TABLES
            day_attributes             lt_day_attributes
          EXCEPTIONS
            factory_calendar_not_found 1
            holiday_calendar_not_found 2
            date_has_invalid_format    3
            date_inconsistency         4
            OTHERS                     5.

        DELETE lt_day_attributes WHERE FREEDAY 'X' OR HOLIDAY 'X'.
        DESCRIBE TABLE lt_day_attributes LINES RESULT.

        IF RESULT > 0.
          SUBTRACT FROM RESULT.
        ENDIF.
      ENDIF.

четверг, 19 августа 2010 г.

Ещё пять минут ...

Задачи бывают разные и выполняются они разное время... и иногда случается ситуация, когда процесс тупо не успевает отработать... просто не хватает таймаута

Почему это произошло - это безусловно отдельный вопрос... понятно, что можно договорится с базисом на какое время об увеличении оного... Можно что-нить пооптимизировать (индексы, логику, ABAP ежли есть), но есть и альтернативный путь...

Сбросить счетчик процесса можно программными средствами... вызов спец.функцию

* сбрасываем счетчик timeout
CALL FUNCTION 'TH_REDISPATCH'.

Либо, если Вам и этого не дозволено, то можете зайти в debug процесса, и пустить процесс дальше... - счетчик будет процесса обнулен.