Интересный вопрос.
Если кратко, то может быть и можно, но всё очень-очень сложно.
Тут вопрос в концепции.
С одной стороны, любая программа 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 его анализ невозможен. Ещё неизвестно, что за защита на нём стоит, потому что внутре данные покорябаны:
![](https://entropii.net/wp-content/uploads/2024/07/image-11.png)
Тоже приехали.
На моей памяти это задача одна из самых невозможных. Хотя казалось бы…
Расходимся, или вам есть что добавить?
В теории, если найти драйвера для sqlite и загрузить файл на сервер, можно считать его содержимое. Остаётся только расшифровать его
Ну да, только это уже и не про ABAP. Да и тяжеловесность решения становится не сопоставимой с пользой от решения проблемы.