Кэширование данных отчёта – тривиальная реализация

Предположим, что у нас есть отчёт в виде Z-разработки.

Кэширование данных отчёта нам может пригодиться в нескольких случаях, например:

  1. Отчёт часто требуется, но долго выполняется; при этом от результатов особой оперативности не требуется;
  2. Результат выполнения данного отчёта требуется отразить в другом отчёте (сводном); но при этом рассчитывать в сводном отчёте множество под-отчётов не хочется;

Для начала допустим, что:

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

(далее…)

Телевизор — это …

Переслушиваю читанный давно роман. Пелевин. Чапаев и Пустота.

– А вот скажите, – заговорил он, – чего хочет человек, вернувшийся домой из опасного путешествия, после того как утолит жажду и голод?
– Не знаю, – сказал Сердюк. – У нас обычно телевизор включают.
– Не-е-е, – сказал Кавабата. – Мы в Японии производим лучшие телевизоры в мире, но это не мешает нам осознавать, что телевизор – это просто маленькое прозрачное окошко в трубе духовного мусоропровода. Я не имел в виду тех несчастных, которые всю жизнь загипнотизированно смотрят на бесконечный поток помоев, ощущая себя живыми только тогда, когда узнают банку от знакомых консервов. Речь идет о тех людях, которые достойны упоминания в нашей беседе.

   – Так как же ты, Петька, дошел до такой жизни, что спрашиваешь меня, своего боевого командира, всегда ли то, что происходит у тебя в голове, – это то, что происходит у тебя в голове, или не всегда?

Он взял со стола две луковицы и принялся молча чистить их. Одну он ободрал до белизны, а со второй снял только верхний слой шелухи, обнажив красно-фиолетовую кожицу.
   – Гляди, Петька, – сказал он, кладя их на стол перед собой. – Вот перед тобой две луковицы. Одна белая, а другая красная.

 

Александр Скляр в качестве чтеца — силён, бесспорно.

Удивительные алгоритмы

Бороздя просторы своих подписок, наткнулся между делом на нечто. В чём суть этого бессмысленного и беспощадного ненормального приёма программирования:

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

В качестве базового алгоритма использован Нормальный Алгоритм Маркова, который можно реализовать на любом языке программирования. Входные значения – унарные числа.

Обуреваемый скептицизмом, решил переложить на язык ABAP.

Реально работает!

Результат алгоритма Маркова

Пример кода выложил отдельно в виде SLNK.

Тонкости в ABAP-редакторе

Исправление регистра

В редакторе кода есть кнопка “Структурная печать”.

По умолчанию она выправляет отступы в тексте, однако там есть ещё опция преобразования регистра. Если душа лежит к одному из этих подходов – вперёд и с песней.

Настройки структурной печати

 

Вот наблюдаем некоторый бардак:

до обработки

А вот что стало после обработки:

после обработки

Хитрый поиск

В окне поиска есть галочка “Регулярные выражения”:

Поиск с регулярными выражениями

По регулярным выражениям можно учебники писать, однако краткая вводная информация доступна по пумпочке справа от искомого текста. Можете дополнительно полистать документацию, но не обязательно саповскую – регулярные выражения (Regular Expressions, RegExp, регэкспы) используются в огромном количестве других систем в разных вариациях.

Вот несколько примеров, которые обычным поиском просто не решаются:

Поиск всех слов, начинающихся на букву Z:

\<Z\w*\>

Поиск всех “слов” из трёх знаков:

\<…\>

Поиск строк – любых вариантов из списка (bsis, bsas, bsik, bsak, bsid, bsad):

bs[ia][dks]

Внесистемная группировка данных

В практике программирования бывает необходимость выделить несколько однородных карточек в особую группу. Счета главной книги для особого использования, группа контрагентов входящих в особый “холдинг”, список материалов-синонимов и так далее.

Хорошо, если такую группировку получается легко реализовать на базе самих карточек.

Один из универсальных подходов – применение наборов (используются в Report Writer). Здесь особо без разницы, какие именно карточки хотите сгруппировать – тип данных можно указать вручную.

(далее…)

Ccылки на транзакции и настройки из браузера

Немного хитрости и смекалки позволяют делать прямые ссылки на транзакции и объекты настроек в SAP.

Стоит только щёлкнуть по ссылке на сайте или в документе, и в SAPGUI открывается нужная транзакция или раздел.

Баловство без реальной необходимости, хотя…

Вот ниже вполне работоспособные ссылки (на моём компьютере):

(далее…)

Сортировка почты без почтового клиента

Сортировка почты – вещь ну просто необходимая при большом потоке писем. Есть куча методов и подходов к сортировке.

например, продвинутым моментом я считаю такую настройку, при которой письма сами раскладываются по папкам, на основании заголовков и адресной книги. То есть так, чтоб при этом не надо было постоянно подкручивать правила сортировки – по правилу “один раз настроил – и работает”.

Ещё есть интересные моменты скриптования прямо на сервере – это называется Sieve.

Пишешь скриптик, и он работает в моменты, когда происходит обработка писем на сервере.

Например, я пока повесил на один из ящиков скрипт:

require ["reject"];

if address :is ["To", "Cc"] ["contact@sample.com"] { }
else {
    reject "Banned";
    stop;
}

Здесь contact@sample.com – адрес ящика, на который я повесил этот скрипт, а “Banned” – текст в отлупе.

Скрипт делает следующее: реагирует отлупом на все письма, которые направлены не напрямую в этот ящик (спам, рассылки и подобные письма). Проходят только письма, у которых этот ящик указан в полях Кому(To) и Копия(CC), но не в Скрытой/Слепой Копии (BCC).

Пока поставил, поживём – увидим, что будет дальше.

Справочники большие и маленькие

Отдельная таблица

Целый спектр возможность открывается, если использовать Z-таблицы в качестве справочников. Однако, если дать разработчикам полную свободу, то засилье Z-таблиц рано или поздно приведёт к “мусорке”, в которой трудно найти что-либо нужное.

Здесь самое главное предварительно определиться, действительно ли нужен отдельный справочник в конкретном случае. Во многих случая допустимо:

(далее…)