Closed monty79 closed 4 years ago
Спасибо Алексей всегда было лень вставлять псевдокомментарий на строковые константы, все руки не доходили
по поводу вложенного пакета: постараюсь сначала проверить отработает ли abapgit без ошибок если ок, перенесу во вложенный пакет
Но стилистику кода просьба не менять. Знаю про рекомендацию SAP по поводу checks. Но это лишь рекомендация. В своем коде IF + RETURN использую редко. Просто не люблю вложенные IF (и особенно лесенку из множества ENDIF). Мне проще читать код сверху вниз без условий У самого сапа бывает простыни в IF (имхо в IF 10 строк максимум)
xtt последнее время не часто дорабатываю (есть несколько задумок, но времени пока нет) спасибо за ATC checks другие пакеты сейчас довольно часто правлю, просьба их пока не трогать, боюсь конфликта версий
а так, еще раз спасибо
а так даже приколько
но свои родные чеки вернул :)
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)
насколько понял вот так можно не загруать в вашу систему
да и сейчас отхожу от сообщений в виде s003(class_name) тк они плохо читаются (нужно провалиться в класс собщений)
последнее время дамп с описанием
MESSAGE lv_message TYPE 'S' DISPLAY LIKE 'E'.
MESSAGE lv_message TYPE 'X'.
если нужна обработка то лучше exception
Резонно! Спасибо за развернутые комментарии.
Сам сап вообще грешит, особенно в старых модулях типа 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?
Вспомнил, что не так с 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 приведет к останову задания. Т.е. если это например массовая рассылка писем в цикле с чем-нибудь типа уведомления о начале отпуска, то всем, кто будет после ошибочной записи, не повезёт.
да в методе 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 .
Вызвать внутри в 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 .
Да, проверил: в фоновом режиме только сообщения с типами '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'.
не помню почему тип сообщения был 'E' вроде так будет работать как в фоне так и в обычном режиме
https://github.com/bizhuka/xtt/commit/8a1fbeef3bf5c45e38ec9ee4697c22232a1be7da
То, что я предлагал: создан субпакет ZXTT_DEMO, программа и шаблоны перенесены в него. Сам abapgit пока не умеет нормально перемещать файлы с сохранением истории, пришлось переместить вручную через git mv :)