ABAP

Соединение с SAP из Excel

Сначала создайте в Экселе соответствующие кнопки, потом скопируйте на Код листа:
http://sap.ittoolbox.com/groups/technical-functional/sap-dev/sap-rfc-vba...

Dim LogonControl
Dim conn
Dim funcControl
Dim TableFactoryCtrl
Dim RFC_READ_TABLE
Dim eQUERY_TAB
Dim TOPTIONS
Dim TDATA
Dim TFIELDS

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

горячие клавиши ABAP редактора

Добрый день. Ниже описаны сочетания клавиш которые могут быть полезны в ABAP редакторе, а некоторые и вообще в SAP GUI.
Сочетания клавиш:

Ctrl + D: Дублирует любую строку
Ctrl + /: Перемещает курсор в поле ввода транзакции
Ctrl + J: Конвертирует всю строку в нижний регистр кроме первых букв каждого слова
Ctrl + I или Ctrl + Shift + I: Инкрементный поиск
Ctrl + K: переключение регистра строки между верхним и нижним
Ctrl + O: Переход к определенной строке редактора
Ctrl + Shift + S: Сохранить программу на рабочий стол с расширение .abap
Ctrl+Alt+T: Поменять местами строки, текущую с предыдущей
Ctrl+Shift+L/X: Удаляет текущую строчку
Ctrl + "]" и Ctrl + "[": Переход к следующему и предыдущему параграфу соответственно
Ctrl + Shift + Num8 и Ctrl + Shift + Num2: Прокрутка текста в редакторе без перемещения курсора

Пишите хороший код, экономьте своё время, удачи.

Пример использования OPENFI: добавление столбца в FS10N

1. В транзакции FIBF ищем нужное событие
Среда -> Инфо-система P/S

В случае добавления столбца в детальном просмотре позиций в тр.FS10N нужное нам событие - 1650 "ПРОСМОТР ОТД.ПОЗИЦИЙ: Дополнение данных в строках"

2. Проверяем, используется ли уже это событие
Параметры настройки -> P/S модули -> Клиента / Партнера

Если для выбранного события в одном из подменю есть запись, копируем название функционального модуля, соответствующего этому событию.

Редактирование стандартной программы ABAP

Перед редактированием любого стандартного объекта заходим в SE80.
Выбираем объект "Группа функций" "SKEY".
Разворачиваем подпрограммы данной группы функций.
Находим программу JUMP_THE_WALL.
Ставим точку прерывания на строке
  CHECK SY-SUBRC NE 0.
Переходим на изменение модифицируемого стандартного объекта. И тут же попадаем на точку прерывания.
Меняем в отладчике SY-SUBRC на 0 (ноль).
Жмем F8.
Может потребоваться сделать это несколько раз.
Теперь можно менять данный стандартный объект.

Сравнение двух ABAP программ

Для сравнения текстов двух программ, есть программа которая разделяет экран на две части, эта программа доступна по транзакции se39

se39.png

Пример программы для чтения результатов расчета заработной платы с помощью GET PAYROLL (ЛБД PNP)

В системе есть стандартная программа пример в которой для чтения результатов расчета зарплаты используется операция GET PAYROLL

Название программы:EXAMPLE_PNP_GET_PAYROLL

Ниже исходный код программы:

Вызов любой ABAP программы из внешней системы посредством RFC

Задача:
Вызывать, из удаленной системы посредством RFC на выполнение любую SAP транзакцию (ABAP отчет) и возвратить данные, которые эта программа (отчет) должна была выводить на экран пользователю в SAP GUI, в удаленную систему в виде XML.
Ниже рассмотрен полный пример решения подобной задачи. Как со стороны ABAP части, так и пример вызова ABAP отчета из внешней системы.
Решение (альтернатива для SAP WEB Services):
ABAP часть:
0) Используем класс ZCL_CLST_CMD описанный здесь: http://www.sapboard.ru/forum/viewtopic.php?f=13&t=68638&view=previous

Необязательные узлы в XSLT трансформации

Если нужно воспользоваться XSLT трансформацией (как для парсинга, так и создания xml). Юзаем транзашку XSLT_TOOL.
Как обозначить опциональные элементы через сам визард - я так и не узнала, так что просто редактируем код :)

Последний день месяца

Чтобы потом самой не вспоминать.

  1. PARAMETERS: last type datum OBLIGATORY.
  2. last+6(2) = '01'.
  3. last = last + 31. "перепрыгиваем на след месяц
  4. last+6(2) = '01'.
  5. last = last - 1.
  6. write: last+6(2), '.', last+4(2), '.', last(4).

Разбиваем дату на структуру

  1. DATA: BEGIN OF now_date,
  2. year(4),
  3. month(2),
  4. day(2),
  5. END OF now_date.
  6.  
  7. now_date = SY-DATUM.
  8.  
  9. WRITE now_date-year.

Таблица в которой хранятся параметры ФМ

В таблице FUPARAREF,хранятся параметры функциональных модулей

Быстрая функция расстояния Левенштейна

Здравствуйте.

Мне удалось значительно оптимизировать свою процедуру нахождения расстояния Левенштейна.
Я добился двукратного увеличения производительности.

Далее прикладываю код оптимизированной процедуры. Пользуйтесь на здоровье.

  1. form dist using s1 type csequence s2 type csequence CHANGING res TYPE i.
  2. ntab TYPE table OF i,
  3. otab TYPE table of i,
  4. ls1 type i, ls2 type i,
  5. t1 type i, t2 type i,
  6. tt2 type i,
  7. x1 type i, x2 type i,
  8. x type i,
  9. inp type i.
  10.  
  11. ls1 = strlen( s1 ) - 1.
  12. ls2 = strlen( s2 ) - 1.
  13. do.
  14. do.
  15. if s1+t1(1) = s2+t2(1).
  16. if t1 = 0.
  17. inp = t2.
  18. elseif t2 = 0.
  19. inp = t1.
  20. read table otab into inp index t2.
  21. insert inp into table ntab.
  22. if t1 = 0.
  23. inp = t2 + 1.
  24. elseif t2 = 0.
  25. inp = t1 + 1.
  26. tt2 = t2 + 1.
  27. read table ntab into x index t2.
  28. read table otab into x1 index t2.
  29. read table otab into x2 index tt2.
  30. if x < x1.
  31. if x < X2.
  32. inp = x + 1.
  33. inp = x2 + 1.
  34. if x1 < x2.
  35. inp = x1 + 1.
  36. inp = x2 + 1.
  37. insert inp into table ntab.
  38. if t2 = ls2.
  39. t2 = 0.
  40. t2 = t2 + 1.
  41. refresh otab.
  42. otab[] = ntab[].
  43. refresh ntab.
  44. if t1 = ls1.
  45. t1 = t1 + 1.
  46. res = inp.

Правильная функция расстояния Левенштейна

Здравствуйте.

На нашем сайте недавно публиковался материал посвященный алгоритму определения похожести строк - расстоянию Левенштейна: http://abap.kz/blog/74/user/inikolax . Автор материала inikolax

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

Чтобы исправить ошибку я переписал функцию, заодно оптимизировал выполнение с помощью хэшированной таблицы.

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

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

Спасибо за внимание.

  1. form dist using s1 type csequence s2 type csequence CHANGING res TYPE i.
  2. BEGIN OF rec,
  3. i1 type i,
  4. i2 type i,
  5. d type i,
  6. end of rec.
  7. ztab type HASHED TABLE OF rec WITH UNIQUE key i1 i2,
  8. rtab type rec,
  9. mtab type rec,
  10. mtab1 type rec,
  11. mtab2 type rec,
  12. ls1 type i, ls2 type i, t1 type i, t2 type i, tt1 type i, tt2 type i.
  13.  
  14. ls1 = strlen( s1 ).
  15. ls2 = strlen( s2 ).
  16. t1 = 1.
  17. t2 = 1.
  18. do.
  19. do.
  20. tt1 = t1 - 1.
  21. tt2 = t2 - 1.
  22. rtab-i1 = t1.
  23. rtab-i2 = t2.
  24. if s1+tt1(1) = s2+tt2(1).
  25. if tt1 = 0.
  26. rtab-d = tt2.
  27. elseif tt2 = 0.
  28. rtab-d = tt1.
  29. read table ztab WITH TABLE KEY i1 = tt1 i2 = tt2 into mtab.
  30. rtab-d = mtab-d.
  31. insert rtab into table ztab.
  32. if tt1 = 0.
  33. rtab-d = t2.
  34. elseif tt2 = 0.
  35. rtab-d = t1.
  36. read table ztab WITH TABLE KEY i1 = tt1 i2 = tt2 into mtab.
  37. read table ztab WITH TABLE KEY i1 = tt1 i2 = t2 into mtab1.
  38. read table ztab WITH TABLE KEY i1 = t1 i2 = tt2 into mtab2.
  39. if mtab-d < mtab1-d.
  40. if mtab-d < mtab2-d.
  41. rtab-d = mtab-d + 1.
  42. rtab-d = mtab2-d + 1.
  43. if mtab1-d < mtab2-d.
  44. rtab-d = mtab1-d + 1.
  45. rtab-d = mtab2-d + 1.
  46. insert rtab into table ztab.
  47. if t2 = ls2.
  48. t2 = 1.
  49. t2 = t2 + 1.
  50. if t1 = ls1.
  51. t1 = t1 + 1.
  52. res = rtab-d.

ФМ для получения полного имени по табельному номеру - HR_RU_GET_PERNR_NAME

Для получения полного имени по табельному номеру используется ФМ HR_RU_GET_PERNR_NAME

  1. CALL FUNCTION 'HR_RU_GET_PERNR_NAME'
  2. EXPORTING
  3. I_PERNR =
  4. I_BEGDA =
  5. I_ENDDA =
  6. I_LANGU = SY-LANGU
  7. I_MOLGA = 'KZ'
  8. I_NAMEL =
  9. I_PPINFTV =
  10. I0002 = ' '
  11. I0021 = ' '
  12. IMPORTING
  13. E_NACHN =
  14. E_VORNA =
  15. E_MIDNM =
  16. E_CNAME =
  17. E_INITI =
  18. E_I0002 =
  19. EXCEPTIONS
  20. INFTY_0002_NOT_FOUND = 1
  21. OTHERS = 2
  22. .
  23. IF SY-SUBRC <> 0.
  24.  

команда &sap_edit

Есть много способов ведения таблицы: через генератор ведения таблиц или через SE16, если на это дано разрешение в свойстве таблицы. Есть еще другой способ:
Заходим в тр.UASE16N, заполняем селективный экран, в командной строке набираем &sap_edit и ентер, дальше заходим через F8 и меняем, удаляем, добавляем. Но не забываем, что это может привести к большим проблемам

Вызов отладчика

Для вызова режима отладки обычно в командной строке набираем /H. Но в модальных окошках не бывает командной строки. Для этого в обычном текстовом файле сохраняем следующий код:
[FUNCTION]
Command=/H
Title=Debugger
Type=SystemCommand

И расширение файла поменяем с .txt нa .bat. Дальше путем перетаскивания наш дебаггер-файл заливаем в модальное окно.

Есть и другие способы вызова отладки в модальных окнах.
http://saphrblog.ru/?p=483

Расстояние Левенштейна — определяем «похожесть» строк

Интересный и очень полезный алгоритм «дистанция Левенштейна» (Levenshtein distance), так же известная как редакционное расстояние или дистанция редактирования.

Эта «дистанция» — это минимальное количество правок одной строки (под правками подразумеваются три возможные операции: стирание символа, замена символа и вставка символа), чтобы превратить ее во вторую.

Вот ниже пример его реализации на abap

  1. REPORT zlevenshtein.
  2. *----------------------------------------------------------------------*
  3. * CLASS lcl_levenshtein DEFINITION
  4. *----------------------------------------------------------------------*
  5. *
  6. *----------------------------------------------------------------------*
  7. CLASS lcl_levenshtein DEFINITION.
  8. PUBLIC SECTION.
  9. distance IMPORTING i_s TYPE csequence
  10. i_t TYPE csequence
  11. RETURNING value(r) TYPE i.
  12. ENDCLASS. "lcl_c DEFINITION
  13. *----------------------------------------------------------------------*
  14. * CLASS lcl_levenshtein IMPLEMENTATION
  15. *----------------------------------------------------------------------*
  16. *
  17. *----------------------------------------------------------------------*
  18. CLASS lcl_levenshtein IMPLEMENTATION.
  19. METHOD distance.
  20. DEFINE m_get.
  21. l_m_index = ( ( l_l_t * ( l_m_i + ( &2 ) ) ) + l_m_j + ( &1 ) ) + 1 .
  22. read table l_d into r index l_m_index.
  23. add &3 to r.
  24. insert r into table l_v.
  25. DATA: l_d TYPE STANDARD TABLE OF i,
  26. l_v TYPE SORTED TABLE OF i WITH UNIQUE KEY table_line,
  27. l_cost TYPE i,
  28. l_m_i TYPE i,
  29. l_m_j TYPE i,
  30. l_m_index TYPE i,
  31. l_l_s TYPE i,
  32. l_l_t TYPE i.
  33.  
  34. l_l_s = STRLEN( i_s ).
  35. l_l_t = STRLEN( i_t ).
  36.  
  37. DO l_l_s TIMES.
  38. l_m_i = sy-index - 1.
  39.  
  40. DO l_l_t TIMES. "#EC CI_NESTED
  41. l_m_j = sy-index - 1.
  42.  
  43. IF l_m_j = 0.
  44. r = l_m_i.
  45. ELSEIF l_m_i = 0.
  46. r = l_m_j.
  47. IF i_s+l_m_i(1) = i_t+l_m_j(1).
  48. l_cost = 0.
  49. l_cost = 1.
  50.  
  51. CLEAR l_v.
  52. m_get: -1 0 1, 0 -1 1, -1 -1 l_cost.
  53. READ TABLE l_v INTO r INDEX 1.
  54. APPEND r TO l_d.
  55.  
  56. ENDMETHOD. "distance
  57. ENDCLASS. "lcl_levenshtein IMPLEMENTATION
  58.  
  59. DATA: d TYPE i.
  60.  
  61. d = lcl_levenshtein=>distance( i_s = 'sitting' i_t = 'kitten' ).
  62. WRITE: / d.

Так же есть статья в которой описано как реализовать этот алгоритм в других языках программирования: Algorithm Implementation/Strings/Levenshtein distance

Еще одна ссылка по этому алгоритму :Расстояние Левенштейна — определяем «похожесть» строк

Замена типа стандартного сообщения SAP

Здравствуйте.

Сегодня я расскажу вам способ, как сменить тип стандартного сообщения SAP с зеленого на красное например.

Для этого вам нужно нажать двойным щелчком на сообщение, и в описании посмотреть его номер, например BF00210.

Чтобы сменить тип этого сообщения, нужно в транзакции OBA5 указать прикладную область, это первые четыре знака из номера сообщения, в нашем случае BF00, затем добавить строчку с записью 210, и указать нужный тип сообщения, в нашем случае это "E" (красный).

bf00210.jpg

Сохраняем, проверяем, работает.

Удачного вам рабочего дня!

Работа с BPS переменными. ABAP.

Задача: Есть переменная BPS типа иерархия. Но основании того, какой узел иерархии выбран, в переменную типа - Признак (или же тоже значение иерархии) необходимо занести все дочерние узлы этого узла.
+ к задаче. Если переменная типа Признак ( вводиться пользователем ) не пустая, то заполнять переменную только теми дочерними узлами, первые две цифры которых совпадают с первыми двумя цифрами этой переменной.

Решение по шагам.

Программа для поиска по исходникам

Если у вас появилась необходимость найти какой либо кусок кода в системе,для этого можно использовать стандартную программу RPR_ABAP_SOURCE_SCAN

code_search.jpg

Удаление дубликатов во внутренней таблице

В такой строке кода нет ничего удивительного:

  1. delete adjacent duplicates from lt_table.

Здесь всё просто и понятно. Дубликаты удаляются, уникальные записи остаются.

Однако если попытаться с помощью добавки comparing удалять дубликаты только по нужным полям, то есть свои тонкости:

  1. delete adjacent duplicates from lt_bseg comparing lifnr zuonr.

Тонкость первая: Дубликаты могут и не совсем удалиться. Удаление будет происходить только в сортированной последовательности. Таким образом результат будет слабопредсказуемым. То есть из последовательности А-А-Б-Б-А-А будет создана последовательность А-Б-А.

Тонкость вторая: Дубликаты удаляются после первого совпадения. Таким образом во внутренней таблице будет оставлено именно первое совпадение.

Следовательно вместо вышеуказанного примера кода всегда следует писать примерно так:

  1. sort lt_bseg by lifnr zuonr zfbdt.
  2. delete adjacent duplicates from lt_bseg comparing lifnr zuonr.

Больше полей в операторе SORT даёт большую предсказуемость и адекватность результата.

Краткий список основных транзакций по работе с ABAP в SAP

LSMW    Legacy System Migration Workbench
OSS1    Logon to SAPNet
OY19    Общесист. ср-во просмотра настройки
S001
S002    Меню/Администрирование
SA38   ABAP-отчеты
SCAT  Computer Aided Testtool
SCU0   Общесист. ср-во просмотра настройки
SE01    Организатор переносов (расш. ракурс)
SE03    Инструменты организатора переносов
SE09    Организатор переносов
SE10    Организатор переносов
SE11    ABAP-словарь: ведение
SE12    ABAP-словарь: просмотр
SE13    Параметры ЗУ для ведения таблиц
SE14    Утилиты для таблиц словаря
SE15    Информационная система ABAP-словаря
SE16    Браузер данных
SE16N    Общий просмотр таблиц
SE17    Общий просмотр таблиц
SE24    Построитель классов
SE30    ABAP Objects: динамический анализ
SE32    ABAP Ведение текстовых элементов
SE35    Диалоговые модули АВАР/4
SE36    Построитель логической базы данных
SE37    ABAP-функциональные модули
SE38    ABAP-редактор
SE39    Полиэкранный редактор (новый)
SE41    Редактор меню
SE43    ВедениеМенюОбластей
SE51    Редактор экранов
SE54    Генерация - ракурс таблицы
SE61    Документация SAP
SE62    Отраслевые утилиты
SE63    Перевод: первый экран
SE64    Терминология
SE71    SAPscript-формуляр
SE72    SAPscript-стили
SE73    SAPscript: ведение шрифтов
SE74    SAPscript: преобразование формата
SE75    SAPscript: параметры
SE76    SAPscript: перевод формуляров
SE77    SAPscript: перевод стилей
SE80    Навигатор по объектам
SE81    Иерархия приложений
SE82    Иерархия приложений
SE83    Библиотека REUSE
SE84    Информационная система репозитария
SE85    Информационная система ABAP-словаря
SE91    Ведение сообщений
SE92    НовВедение сообщений СистЖурн с 46A
SE93    Ведение кодов транзакций
SEARCH_SAP_MENU    Поиск в SAP-меню
SHD0    Варианты транзакций и экранов
SM04    Список пользователей
SM12    Просмотр и удаление блокировок
SM13    Администрирование записей обновления
SM21    Онлайн-анализ системного журнала
SM30    Вызов ведения ракурсов
SM31    Вызов ведения ракурсов, аналог SM30
SM32    Ведение таблицы ИД парам. TAB
SM35    Мониторинг пакетного ввода
SM37    Обзор выборки заданий
SM50    Обзор рабочих процессов
SM51    Список SAP-систем
SM62    История событий и фоновые события
SMEN    Диспетчер сеансов: ПросмДереваМеню
SNRO    Объекты диапазона номеров
SPRO    Настройка - обработка проектов
SQ00    SAP Query: запуск queries
SQ01    SAP Query: ведение queries
SQ02    SAP Query: ведение инфо-набора
SQ03    SAP Query: ВедениеГруппПользоват
SQ07    SAP Query: сравнение языков
ST05    Трассировка SQL
ST22    Aнализ ABAP-дампа
SU53    Анализ проверки полномочий
USMM    Начальный экран мониторинга клиента
WE02    Просмотреть IDOC
WE07    IDOC-статистика
WEDI    Базис EDI

SALV Table - PF-STATUS

На этапе создания экземпляра объекта (фабричным методом) мы определяем, как мы хотим использовать объект ALV таблицы, будет ли это полноэкранный режим, либо мы хотим поместить объект в подготовленный заранее контейнер. Данный выбор влияет на способ установки GUI статуса для ALV таблицы.

В полноэкранном режиме для установки GUI статуса необходимо использовать метод SET_SCREEN_STATUS, параметр REPORT отвечает за то из какой программы будет взят GUI статус, PFSTATUS – имя GUI статуса, SET_FUNCTIONS – определяет какие стандартные функции будут использованы в программе. Может принимать значения: C_FUNCTIONS_DEFAULT – сортировки, фильтры, выбор формата. C_FUNCTIONS_ALL – все функции ALV, C_FUNCTIONS_NONE – по умолчанию, только пользовательские функции. Константы определены в классе: CL_SALV_MODEL_BASE

Checkbox в ALV

В настоящее время SALV объекты не предоставляют стандартных средств для подключения возможности редактирования. Но в некоторых случаях можно исхитриться и получить желаемый результат. Рассмотрим небольшой пример. Необходимо предоставить пользователю возможность обработки записей в таблице. Пользователь выделяет нужные записи в таблице и нажимает кнопку обработки, которую мы заранее добавили в GUI статус. Таким образом он совершает два действия: выделение и нажатие на кнопку обработки. А что если попробовать сократить его действия до одной операции? В этом случае мы можем использовать checkbox поля.

Выгрузка основных данных признака BW (вместе с атрибутами) для PCM

Программа описанная ниже, позволяет выгрузить в XML или ODS (с предварительной выгрузкой в промежуточную таблицу), основные данные признака BW вместе с данными его атрибутов, в формате готовом для загрузки в XML.

Работа с BPS переменными. ABAP.

Задача: Есть переменная BPS типа иерархия. Но основании того, какой узел иерархии выбран, в переменную типа — Признак (или же тоже значение иерархии) необходимо занести все дочерние узлы этого узла.
+ к задаче. Если переменная типа Признак ( вводиться пользователем ) не пустая, то заполнять переменную только теми дочерними узлами, первые две цифры которых совпадают с первыми двумя цифрами этой переменной.

Решение по шагам.

Использование системных команд UNIX в ABAP

Зачастую есть потребность вызывать команды операционной системы из ABAP. Это бывает крайне удобно. К примеру, в ситуации когда необходимо, склеить вместе несколько файлов, перенести файлы на уровне Ф.С. и.т.д.
Здесь будет расмотрен именно этот пример.

Шаг 1
Определить поля для команд:

Вызов выполнения скрипт логики BPC в ABAP программе (в т.ч. в BADI)

  1. REPORT ZTST3.
  2. DATA: lv_docname TYPE uj_docname ,
  3. lv_mode TYPE uj_run_mode ,
  4. lv_user type UJ_USER_ID ,
  5. lo_dispatch TYPE REF TO cl_ujk_dispatch,
  6. lt_lgx TYPE ujk_t_script_logic_scripttable .
  7. DATA: lo_old_context type ref to if_uj_context ,
  8. lo_user type ref to CL_UJE_USER .
  9. lo_old_context = cl_uj_context=>get_cur_context( ).
  10. CALL METHOD lo_old_context->GET_USER_OBJ
  11.  
  12. RECEIVING RO_USER = lo_user.
  13. lv_user = lo_user->D_OBJ_ID.
  14. lv_mode = 'EXECUTE' .
  15. lv_docname = '\ROOT\WEBFOLDERS\ZBP\ADMINAPP\Z_INCOME\ZINBDRCHAIN.LGF'. " путь до файла со скрипт логикой
  16. CREATE OBJECT lo_dispatch.
  17. CALL METHOD lo_dispatch->get_file
  18. EXPORTING
  19. i_appset = 'ZBP' " application
  20. i_application = 'Z_INCOME' " model
  21. i_user = lv_user
  22. i_filename = lv_docname
  23. IMPORTING
  24. et_lgx = lt_lgx.
  25. CALL FUNCTION 'UJK_SCRIPT_LOGIC_EXECUTE'
  26. EXPORTING
  27. I_APPSET = 'ZBP' " application
  28. I_APPLICATION = 'Z_INCOME' " model
  29. I_USER = lv_user
  30. I_LOGIC = lt_lgx
  31. I_FILE_TYPE = 'LGF'
  32. I_MODULE = uj00_c_mod_name_dm
  33. I_LGF = lv_docname
  34. I_MODE = lv_mode.

Отлавливание события (Enter) на селективном экране

Ниже привожу код который позволяет отловить событие (Enter) на селективном экране.

Привожу пример,после ввода номера дебитора в поле, нажав enter мы получим его полное наименование в тексте справа от поля.

event_enter.png

Страницы

Подписка на ABAP