Как в программе 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

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

А вот реестр к нему: 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.

На HeadHunter свежая вакансия: ABAP-разработчик (FI, CO, MM)

Обязанности и требования самые обыкновенные:

Обязанности:

  • Разработка программных приложений по модулям: FI, FI-AA, CO, MM;
  • Разработка отчетов и печатных форм;
  • Внесение изменений в существующие разработки;
  • Адаптация стандартных программ SAP;
  • Разработка межсистемных интерфейсов;
  • Оптимизация программного кода.

Требования:

  • От 5ти лет опыта в ABAP-программировании;
  • Опыт отладки, доработки и понимания чужого кода;
  • Опыт выгрузки в шаблоны Excel, Word, обработка XML;
  • Использование принципов оптимизации быстродействия ABAP-программ и SQL-запросов;
  • Знание технологий расширения SAP стандарта (User-Exit, BAdi, OpenFI и др.).

А вот в условиях я кое-за-что зацепился взглядом:

Условия:

  • Удаленная форма работы;
  • Полная занятость, полный день;
  • График работы 5/2, сб и вс – выходные, в пятницу до 15:30;
  • Посещение офиса в Москве несколько раз в месяц;
  • Версия SAP – 4.6C;

Версия 4.6С это примерно 2000 год.

Мне так помнится, что когда я начинал карьеру ABAP-разработчика, то у заказчика стояла версия 4.7, которую мигрировали сначала на 5.0, а потом и на 6.0.

В целом, если система стоит и работает с 2000 года по 2022 год, то она проработает и до 9999 года. А вот дальше – уже не получится.

Впрочем, нет, я не готов возвращаться на старый отладчик.

Нарисуй агитационный плакат в советском стиле. В нижней части кадра рука протягивает человеку в косттюме доисторический каменный молоток. Человек на главном переднем плане жестом руки отказывается от этого каменного молотка. По середине плаката находится крупная надпись “НЕТ!”.

Агитационный плакат в советском стиле. В нижней части кадра рука протягивает человеку в косттюме доисторический каменный молоток. Человек на главном переднем плане жестом руки отказывается от этого каменного молотка. По середине плаката находится крупная надпись 'НЕТ!'.

Этот плакат показывает человека, который отказывается от предложенного каменного молотка. Он демонстрирует, что люди не должны использовать устаревшие инструменты и технологии, а должны использовать современные методы и технологии. Это важное сообщение для всех, кто занимается наукой и технологиями.

SAP ABAP вакансии, отклики, зарплаты

У Немчинского на стриме ненадолго вспомнили SAP:

https://www.youtube.com/live/t0N4bNGlw_w?si=N6et2tdQ9GijeVdJ&t=1515

Обсуждают, насколько их местный рынок изменился за последние пару лет. Как уменьшилось количество вакансий, как увеличилось количество откликов на одну вакансию.

И SAP тут, как ни странно, держится молодцом, если в абсолютных числах там в десятки раз меньше, но тренд меняется не так сильно.

Не уверен, насколько такие числа действительно показательны с учетом специфики портала. Малая выборка может сильно искажать действительность, напомню:

Extrapolating

Для сравнения Java:

Из несколько смешного, там же есть статистика зарплат у ABAP разработчиков:

Казалось неплохо живут, братцы.

Всего лишь четыре анкеты. Это значит, что это не значит почти ничего.

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

Какого типа будет DATA(lv_amt_3) = lv_amt_1 + lv_amt_2 ?

Написал всё просто и понятно, и мне казалось очевидно, что будет на выходе:

Как же я ошибся! А будет вот что:

chatGPT

Ну допустим, я показал ему текст некоторой программы:

Так вот, сервис может пояснить за код, лучше чем я:

(далее…)