DESTINATION ‘NONE’, LUW и контекст

Вот иногда живёшь так, думаешь на автопилоте, что если начал новый LUW то это как портал в новую вселенную:

А вот нифига, LUW может быть и новый, стек вызовов начинается с %_RFC_START, однако определённые в TOP-инклюде глобальные данные группы функций никак не инициализируются:

Вот и получается, что LUW и Internal session это не одно и то же.

Живые динозавры

Удивляюсь стойкости SAP. Прошло 30 лет, а они до сих пор поддерживают эти функции для Dynpro.

  • The «!» character in the initial position of an input field on the screen deletes all characters in the field before the data transport.
  • The «=» character in the initial position of an input field on the screen initiates a search using search helps.
  • If an input field contains only blanks and «_» characters, the latter are transported as blanks.

https://help.sap.com/doc/abapdocu_753_index_htm/7.53/en-US/abenabap_dynpros_fields.htm

Это всё тянется из тех старинных времён, когда SAP работал в терминале и выглядел примерно так:

С тех пор мало что поменялось внутри, экраны устроены та же, всё фиксированной ширины, замкнутый цикл PBO/PAI. Поэтому для значения TRUE используется крестик [X], потому что именно так он отражался на терминале.

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

Со знаком «равно», видимо, тоже связана какая-то история, могу вообразить, что на некоторых системах ещё не было такой кнопки как F4, или она использовалась для других целей, поэтому для доступа к средству поиска использовалась клавиша =, почему нет.

С восклицательным знаком наверно тоже связана древняя легенда, допускаю что Ctrl+A ещё не изобрели, поэтому разработчики придумали такой «трюк», чтобы проще стирать данные в поле.

«Entry level job» и опыт

Хожу на LinkedIn просто чтобы поиграть в Queens и Crossclimb (https://www.linkedin.com/games/), вот такое у меня daily routine, рекомендую.

И пока я входил и выходил, то случайно первым постом на странице выпал чей-то текст в две строчки с тезисом, что «Entry level job» должен иметь нулевые требования к опыту.

Просто так, безапелляционно, без оговорок, без контекста, с потолка.

И у поста десять тысяч лайков, тысяча комментариев и тысяча репостов. И все там такие дружно ему поддакивают.

Вот думаю что это? Та самая «левая повестка» или просто ограниченность кругозора?

Единственный ответ, который у меня есть: «Обсудите это с вашим терапевтом с нулевым опытом», но на LinkedIn так не принято.

А теперь подробнее…

(далее…)

Это был тяжелый год

*----------------------------------
* (с) Слепаков
*----------------------------------
DO.
  Это был тяжелый год
  Был он тяжелей, чем тот
  Неожиданно нам всем
  Много он принес проблем
  Но приходит новый год
  Он нам счастья принесет
  И я верю через год
  Дружно скажет наш народ
ENDDO.

Great minds think alike

Слушаю последний выпуск подкаста:

https://radio-t.com/p/2024/07/27/podcast-920/ (тема про Haystack)

И там Григорий рассказывал про свою мечту, ну чтоб:

  • исходный текст был rich-text, чтобы можно было пожирнять, картинку вставить внутрь
  • объекты разработки хранились в базе данных
  • использование объектов было индексировано
  • версии объектов хранились прямо в базе данных без дополнительных гитов
  • был тулинг/IDE всё это поддерживающий
  • проект собирался не из файлов, а прямо из базы данных

Удивительно, но SAP/ABAP-разработка пошла по этому пути давным-давно, но:

  • до rich-text они так и не добрались, хотя до до остального — в целом скорее да
  • система получилась закрытой и своеобразной

… и мне это скорее нравится, если бы не это, то я бы скорее всего свичнулся.

Как в программе ABAP можно получить список последних введенных в поле значений?

Интересный вопрос.

Если кратко, то может быть и можно, но всё очень-очень сложно.

Тут вопрос в концепции.

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

Это круг PAI-PBO, который никогда не прекращается.

BTW, с точки зрения архитектуры SAP GUI — это «тонкий клиент», так как никакая прикладная логика на нём не работает, только красивое отображение и приём-передача информации на сервер и обратно.

С другой стороны, список последних введённых значений хранится только на SAP GUI (то есть на компьютере пользователя), и сервер ничего не знает про это. Так же как и не знает какого цвета кнопки. Вы можете сами включить в SAP GUI любую тему и поменять все цвета, но на работу ABAP это никак не повлияет, и сервер про это никогда не узнает.

С точки зрения ABAP-сервера, нет никакой разницы, выбираете ли вы значение из истории, или вводите его вручную заново, или вставляете из буфера обмена.

На практике существуют некоторые пользовательские функции, когда необходимо взаимодействие ABAP-сервера и SAPGUI-клиента:

  • загрузка файла (GUI_UPLOAD)
  • выгрузка файла (GUI_DOWNLOAD)
  • показ индикатора прогресса (SAPGUI_PROGRESS_INDICATOR)
  • и ещё кое-что по мелочи

Оно реализовано очень нетривиально внутри, можете убедиться.

Если поглядеть в класс CL_GUI_FRONTEND_SERVICES, например в метод CALL_METHOD, то окажется, что ничего просто так сделать не получится.

Вообще большой вопрос — умеет ли SAP GUI отдавать такую информацию или нет, документировано это или нет. В классе не видно ни одного метода, отдалённо напоминающего требуемую функциональность.

Тупик, приехали.

На крайний случай, если очень-очень хочется, чисто теоретически, можно найти на клиенте (компьютере пользователя) файл, куда пишется история, загрузить его в ABAP и распознать.

c:\Users\Ivan\AppData\Roaming\SAP\SAP GUI\History\SAPHistoryIVAN.db

Этот файл пишется в моём случае в формате SQLite, который неизвестно как разбирать, напрямую в ABAP его анализ невозможен. Ещё неизвестно, что за защита на нём стоит, потому что внутре данные покорябаны:

Тоже приехали.

На моей памяти это задача одна из самых невозможных. Хотя казалось бы…

Расходимся, или вам есть что добавить?

Code review

В последнем выпуске подкаста Radio-T ведущие снова спорили о пользе или бесполезности Code review: https://radio-t.com/p/2024/07/13/podcast-918/

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

Я в текущих своих условиях вижу один довод «за» — если есть процедура Code review, то я пишу чище.

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

Просмотр кода, рецензирование кода, обзор кода, ревизия кода

и ни с одним из них я не сталкивался в жизни.

Позвал как-то индийский руководитель всех русскоговорящих ребят-программистов…

Позвал как-то индийский руководитель всех русскоговорящих ребят-программистов на совещание. Говорит: “Давайте писать код так, чтобы он был понятен всем, как индийский фильм без перевода!” Русские программисты ответили: “Хорошо, но только если комментарии к коду будут как русские субтитры — короткие и ясные.” В итоге, они создали самый эмоциональный код в истории — каждая функция начиналась танцами и заканчивалась мудрой поговоркой.


Позвал как-то индийский руководитель всех русскоговорящих ребят на ужин. Говорит: “У меня для вас есть специальное блюдо.” Ребята в недоумении, думают: “Наверное, карри или что-то экзотическое.” Приходят, а на столе – пельмени. Индийский руководитель говорит: “Я слышал, что это ваше традиционное блюдо, решил удивить!” Ребята в ответ: “Ого, доктор, вы нас удивили… но где же специи?” Руководитель с улыбкой: “Специи? В пельменях? Нет, я решил, что в этот раз специи – это ваше присутствие!”


Позвал как-то индийский руководитель всех русскоговорящих ребят-программистов на совещание и говорит: “У нас есть две новости — хорошая и плохая. С какой начнем?” Ребята в один голос: “С хорошей!” Глава: “Наша команда выиграла большой международный тендер!” Все аплодируют, радуются. “А теперь плохая новость,” — продолжает глава, “тендер был на лучшую программу для автоматического перевода с индийского на русский, и теперь вам всем придется учить хинди.”

Казахстан и Реестр доверенного программного обеспечения

Вот свеженький приказ: https://primeminister.kz/ru/decisions/20032024-207

Говорят, что закупать за государственный счёт иностранное программное обеспечение это теперь ещё более фу-фу-фу, чем было раньше?

1.   При осуществлении государственных закупок установить изъятие из национального режима товаров и услуг, включенных в реестр доверенного программного обеспечения, и продукции электронной промышленности, происходящих из иностранных государств, за исключением товаров,
не производимых на территории Республики Казахстан, а также приобретаемых на основании подпунктов 31), 32) и 33) пункта 3 статьи 39 Закона Республики Казахстан «О государственных закупках».

А вот реестр к нему: https://goszakup.gov.kz/ru/it_reg

SAP ERP — это не доверенное ПО, его нет в списке.

Интересно, что значит это для мира SAP, а также 1C заодно?

В списке доверенных есть Фаворит, интересно, насколько последний можно считать аналогом и как это может повлиять на существующий рынок?

ЗЫ. Прочитал ещё несколько раз, и будто бы если бы они все были бы в списке, то иностранных бы заклеймили, а так как в списке есть только Фаворит, то там он и останется и ничего не поменялось, никто дополнительного клейма не получил. Так что ли?

Ох уж эти крючкотворы, так напишут иной раз, что ничего не понятно.

Представь, что у нас есть коробка с игрушками, которые мы делаем здесь, в Казахстане. Обычно, если кто-то хочет купить наши игрушки, мы говорим: “Это наши игрушки, и они особенные”. Но иногда мы говорим: “Эти игрушки приехали из другой страны, и они тоже могут быть особенными для нас”. Так вот, правило, о котором ты спрашиваешь, это как раз про то, когда мы решаем, какие игрушки из других стран могут быть для нас особенными. Но если у нас уже есть такая же игрушка, которую мы сами сделали, тогда мы выберем свою игрушку, а не ту, что приехала.

Кажется это немного не то…

An anime-style illustration representing the concept of prioritizing local software over foreign software in government purchases, as described in the recent decree from Kazakhstan.