Станьте участником SAPLAND и получите доступ к самым интересным публикациям SAPPRO
Зарегистрироваться
Текст вывода процента выполненных задач можно изменить, в отчете ZCONCURRENCY_API. Ищите вызов метода cl_progress_indicator=>progress_indicate.
Если в zif_capi_callable~call будет вызов MESSAGE TYPE 'S' ***, то статус будет отображаться корректно. Мерцаний и прочего нет. Т.е. все выглядит так, как-будто сообщения TYPE 'S' игнорируются.
А где настраивается текст вывода процента выполненных задач?
И еще вопрос, если в zif_capi_callable~call будет вызов MESSAGE TYPE 'S' ***, корректно ли будет статус отображаться (не будут ли мерцания или сброс текста)?
Олег, это не статья, но целый научный труд :) Спасибо за подробные разъяснения, за рассмотрение разных подходов, объём проделанной работы поражает. Что побудило тебя так глубоко погрузиться в вопрос?
P.S. Какое-то время назад тоже пользовался нечётким поиском. Был проект по распознаванию отсканированных счетов-фактур, использовал нечёткий поиск для поиска материалов по наименованию. Cэкономили немало времени и сберегли человеческие нервы :) Наверное, тоже изложу свой наколеночный вариант в статье...
AIS именно и содержит набор отчетов и транзакций, которые показывают те или иные "дыры" в системе в разрезе информационной безопасности.
К тому же для конструкции:
WRITE: /
itab_multi_comp[ kunnr = '123' ]-ort01.
нельзя будет забывать писать
TRY.
CATCH CX_SY_ITAB_LINE_NOT_FOUND.
ENDTRY.
Иначе, приведет к неминуемому дампу, если такой записи во внутренней таблице нет.
Вячеслав, спасибо за комментарий :) В первой части я кратко описал где взять SWPM, как зайти на эту самую операционную систему. Для консультанта поиск нот, пакетов поддержки сопоставим с поиском необходимого софта. Возможно, что такие понятия как SSH, RDP и т.п. - это слишком технические моменты. Но на мой взгляд консультанты тоже в какой-то степени айтишники.
В идеальном мире в команде должен быть технический специалист по базису, он отвечает за подобные работы. Но что делать, если его нет, а систему надо обновить таким образом? Например, чтобы проверить установку пакетов поддержки. Или отдать в работу сторонним разработчикам актуальную версию (и вопрос не только в данных)? Это также описано в первой части.
Вы ведь сами вспомнили именно молодого и неопытного консультанта, который не понимал архитектуру системы. Я надеюсь, что моя статья поможет тем коллегам, кто понимает зачем необходим клон системы и тем, кто начинает в этом направлении работать без привлечения базиса. И это не про домашний САП. У меня вначале было очень много вопросов при проведении подобных операций. Я постарался обобщить и описать все шаги и все проблемы, которые пришлось решать. Возможно, что действительно очень мало таких команд, где нет базисника, но с другой стороны может кто-то из консультантов готов переквалифицироваться в базис и кто-то готов отвечать за это направление? Пусть даже и не рамках продуктивного контура.
И вновь, Иван, лайк конечно за популизацию либомого мной стиля MVC в ABAPe.
Но прежде чем писать статьи такие наберитесь опыта в данном стиле ибо как пастырь поведете народ к полу-индусскому коду(не похоже что вы в таком стиле создавали действительно крупные Z-ки со множеством экранов, подэкранов и событий).
Вот вам задача на дом: если у вас будет во вью 100-ня событий обрабатываемых, будете 100 методов на каждое событие в интерфейсе создавать?!

Основы администрирования серверов приложений ABAP
21.09.2026Основные данные для производства и управления продуктом в SAP
21.09.2026Основы администрирования персонала в SAP HCM
21.09.2026Основы Управления портфелями проектов в SAP: Бизнес-процессы
22.09.2026
Комментарий от
Виталий Глущенко
| 03 апреля 2022, 21:13
Олег Башкатов 31 марта 2022, 20:57
Спасибо!
Ваш подход классный! и здорово дополняет копилку тонкостей reduce )
>>> lv_total_amount поменять тип на i, то тест 1 начинает работать правильно
нет. получаемый ответ будет 604, а точный ответ 602.25.
PS. Слово "правильный" я бы заменил на точный/неточный. если требуемая точность - до сотен, то все варианты "правильные".
>>> а 2 и 3 считают неправильно, а если меняем тип на f
нет. подсчет идет точный, но результат 6.0225000000000000E+02 уж очень странный для переменной total_amount )))
а что подразумеваете под "2 и 3 считают неправильно"?
>>PS. Слово "правильный" я бы заменил на точный/неточный. если требуемая точность - до сотен, то все варианты "правильные".
да, правильный/неправильный - плохая формулировка, но и точный/неточный тоже не хочу называть, потому что иногда в задаче требуется получить неточный результат, но он правильный по требованиям задачи.
Поясню, что я имел ввиду выше. В описанных примерах рассматривается ситуация когда из-за незнания как работает reduce можно получить несколько конвертаций и на каждой из них потерять точность сильнее, чем это ожидалось.
Грубо говоря конвертации у нас происходят:
1. в строке next к типу переменной _rX_tot_am приводится тип переменной _ord_lineX-netwr;
2. на выходе из reduce результат расчета в переменной _rX_tot_am приводится к типу указанному после reduce ...( );
3. при присвоении переменной lv_total_amount результат шага 2 приводится к типу переменной lv_total_amount;
Предположим, что тип _ord_lineX-netwr и тип lv_total_amount у меня указан правильно(он может быть одинаковым, а может быть разным). Обычно моя задача выполнить все калькуляции и конвертацию с максимальной точностью. В таком случае хорошо, когда на шагах 1 и 2 и 3 все операции выполняются с одиним и тем же типом и лучше всего, когда это тип переменной lv_total_amount. Это важно потому что делает конструкцию менее капризной к смене типов переменных и таким образом избежать "детских" ошибок при модификации кода в будущем, когда в одном месте тип поменяли, а в другом забыли.
Иногда бывает, что нужно выполнять вычисления с большей точностью, чем мы потом будем хранить результат, в там случае в конструкции
init _r4_tot_am = value #( )
я бы заменил # на явно заданный тип большей точности, но только там, а остальное оставил бы как есть, по той же самой причине, что бы конвертаций было как можно меньше.
>>нет. подсчет идет точный, но результат 6.0225000000000000E+02 уж очень странный для переменной total_amount )))
Почему? вполне нормальный результат, типичная экспоненциальная запись. В SAP в целом не часто используется тип float, но если в рамках задачи это требуется, то почему нет, в точности мы тут не потеряли, хотя могли и существенно.
>>а что подразумеваете под "2 и 3 считают неправильно"?
развернуто ответил выше, если кратко неправильным считаю, то что при смене типа его приходится менять в 3-х местах, что в будущем может привести к ошибкам.