bizhuka / xtt

ABAP template engine for Excel, Word, Html & Pdf
https://bizhuka.github.io/xtt/
Apache License 2.0
35 stars 7 forks source link

Examples moved to subfolder #10

Closed monty79 closed 4 years ago

monty79 commented 4 years ago

То, что я предлагал: создан субпакет ZXTT_DEMO, программа и шаблоны перенесены в него. Сам abapgit пока не умеет нормально перемещать файлы с сохранением истории, пришлось переместить вручную через git mv :)

bizhuka commented 4 years ago

Спасибо Алексей всегда было лень вставлять псевдокомментарий на строковые константы, все руки не доходили

по поводу вложенного пакета: постараюсь сначала проверить отработает ли abapgit без ошибок если ок, перенесу во вложенный пакет

Но стилистику кода просьба не менять. Знаю про рекомендацию SAP по поводу checks. Но это лишь рекомендация. В своем коде IF + RETURN использую редко. Просто не люблю вложенные IF (и особенно лесенку из множества ENDIF). Мне проще читать код сверху вниз без условий У самого сапа бывает простыни в IF (имхо в IF 10 строк максимум)

xtt последнее время не часто дорабатываю (есть несколько задумок, но времени пока нет) спасибо за ATC checks другие пакеты сейчас довольно часто правлю, просьба их пока не трогать, боюсь конфликта версий

а так, еще раз спасибо

bizhuka commented 4 years ago

а так даже приколько

image

но свои родные чеки вернул :)

cbool vs xsdbool вот тут очень осторожно в САП boolean это символ длиной 1 (иногда в IF сравнение со строкой) насколько понял поэтому второй оператор и ввели https://help.sap.com/doc/abapdocu_752_index_htm/7.52/en-us/abenboole_functions.htm

сам иногда юзаю abap_undefined (по этому это не всегда равнозначная замена) поэтому на ABAP в IF стараюсь вообще не использовать ABAP_FALSE (только ABAP_TRUE) image

насколько понял вот так можно не загруать в вашу систему image

bizhuka commented 4 years ago

да и сейчас отхожу от сообщений в виде s003(class_name) тк они плохо читаются (нужно провалиться в класс собщений)

image

последнее время дамп с описанием

image

  MESSAGE lv_message TYPE 'S' DISPLAY LIKE 'E'.
  MESSAGE lv_message TYPE 'X'.

если нужна обработка то лучше exception image

monty79 commented 4 years ago

Резонно! Спасибо за развернутые комментарии. Сам сап вообще грешит, особенно в старых модулях типа HR. Булевский тип - да, там есть нюансы, про abap_false буду думать теперь, в системе с 7.40 вообще советуют пользоваться xsdbool( ). Про игнор субпакетов - именно это удобство и подразумевалось

ATC ещё нашёл пару мест с non-class based exceptions, не стал трогать, надо обсудить: ZCL_XTT_EXCEL_XLSX->CELL_INIT( ) и ZCL_XTT_REPLACE_BLOCK-TREE_CREATE_RELAT( ) - при неудачном стечении обстоятельств в вызывающем коде могут быть дампы. Можно я перепишу с использованием ZCX_XTT_EXCEPTION?

monty79 commented 4 years ago

Вспомнил, что не так с MESSAGE в глобальных классах, и почему так делать не советуют, по этому поводу даже отдельная проверка есть в ABAP OpenChecks https://docs.abapopenchecks.org/checks/57/

На примере ZCL_XTT->SEND( ):

    CATCH cx_bcs INTO lo_exp.
      lv_text = lo_exp->if_message~get_text( ).
      MESSAGE lv_text TYPE 'E'.

Если это будет выполняться в фоновом задании, и что-то случится при отправке письма, то MESSAGE приведет к останову задания. Т.е. если это например массовая рассылка писем в цикле с чем-нибудь типа уведомления о начале отпуска, то всем, кто будет после ошибочной записи, не повезёт.

bizhuka commented 4 years ago

да в методе send не все так гладко

RECIPIENTS 2 штуки (_BCS новый) коммит для force отсылки письма [image: image.png]

сигнатуру методов уже поменять не могу (Exceptions точно добавить не могу) даже сейчас на проекте где год как внедрен XTTесть много вызовов

Вызвать внутри в submit ?


ZCL_XTT_EXCEL_XLSX->CELL_INIT( ) не вызвается за пределами XTT можно подумать. Как можно улучшить ?

ZCL_XTT_REPLACE_BLOCK-TREE_CREATE_RELAT( ) публичный метод Сигнатуру менять уже поздно (только добавлять optional параметры)

вс, 26 апр. 2020 г. в 01:49, monty79 notifications@github.com:

Вспомнил, что не так с MESSAGE в глобальных классах, и почему так делать не советуют, по этому поводу даже отдельная проверка есть в ABAP OpenChecks https://docs.abapopenchecks.org/checks/57/

На примере ZCL_XTT->SEND( ):

CATCH cx_bcs INTO lo_exp.
  lv_text = lo_exp->if_message~get_text( ).
  MESSAGE lv_text TYPE 'E'.

Если это будет выполняться в фоновом задании, и что-то случится при отправке письма, то MESSAGE приведет к останову задания. Т.е. если это например массовая рассылка писем в цикле с чем-нибудь типа уведомления о начале отпуска, то всем, кто будет после ошибочной записи, не повезёт.

— You are receiving this because you modified the open/close state. Reply to this email directly, view it on GitHub https://github.com/bizhuka/xtt/pull/10#issuecomment-619438744, or unsubscribe https://github.com/notifications/unsubscribe-auth/AIUTVIL2MECW3PHQEHOWASDRONEERANCNFSM4MQWSPPQ .

bizhuka commented 4 years ago

Вызвать внутри в submit ? или вот так ?

if sy-batch = abap_true. WRITE endif.

вс, 26 апр. 2020 г. в 07:18, Birzhan Moldabayev modekz@gmail.com:

да в методе send не все так гладко

RECIPIENTS 2 штуки (_BCS новый) коммит для force отсылки письма [image: image.png]

сигнатуру методов уже поменять не могу (Exceptions точно добавить не могу) даже сейчас на проекте где год как внедрен XTTесть много вызовов

Вызвать внутри в submit ?


ZCL_XTT_EXCEL_XLSX->CELL_INIT( ) не вызвается за пределами XTT можно подумать. Как можно улучшить ?

ZCL_XTT_REPLACE_BLOCK-TREE_CREATE_RELAT( ) публичный метод Сигнатуру менять уже поздно (только добавлять optional параметры)

вс, 26 апр. 2020 г. в 01:49, monty79 notifications@github.com:

Вспомнил, что не так с MESSAGE в глобальных классах, и почему так делать не советуют, по этому поводу даже отдельная проверка есть в ABAP OpenChecks https://docs.abapopenchecks.org/checks/57/

На примере ZCL_XTT->SEND( ):

CATCH cx_bcs INTO lo_exp.
  lv_text = lo_exp->if_message~get_text( ).
  MESSAGE lv_text TYPE 'E'.

Если это будет выполняться в фоновом задании, и что-то случится при отправке письма, то MESSAGE приведет к останову задания. Т.е. если это например массовая рассылка писем в цикле с чем-нибудь типа уведомления о начале отпуска, то всем, кто будет после ошибочной записи, не повезёт.

— You are receiving this because you modified the open/close state. Reply to this email directly, view it on GitHub https://github.com/bizhuka/xtt/pull/10#issuecomment-619438744, or unsubscribe https://github.com/notifications/unsubscribe-auth/AIUTVIL2MECW3PHQEHOWASDRONEERANCNFSM4MQWSPPQ .

monty79 commented 4 years ago

Да, проверил: в фоновом режиме только сообщения с типами 'I' и 'S' не прерывают задание:

      DATA lv_msgty TYPE msgty.
      IF sy-batch = abap_true.
        lv_msgty = 'S'.
      ELSE.
        lv_msgty = 'E'.
      ENDIF.
      MESSAGE lv_text TYPE lv_msgty.

На вот такой программке:

REPORT zbatch_err_check.
PARAMETERS p_type TYPE msgty DEFAULT 'E'.

START-OF-SELECTION.
  MESSAGE 'msg1' TYPE p_type.
  MESSAGE 'msg2' TYPE 'I'.
bizhuka commented 4 years ago

не помню почему тип сообщения был 'E' вроде так будет работать как в фоне так и в обычном режиме

https://github.com/bizhuka/xtt/commit/8a1fbeef3bf5c45e38ec9ee4697c22232a1be7da