Vvedenie_v_ABAP
.pdf
Перейдите к внешнему виду экрана, нажав
. В редакторе экрана вам нужно добавить поля ввода, куда будут записываться сведения о рейсе. Но вместо того,
чтобы делать это вручную, вновь воспользуемся словарем данных
. Введите название таблицы «SPFLI», нажмите «ENTER» и выберите все поля таблицы с
помощью кнопки
. Затем продолжите.
Как вы уже догадались, курсор изменился, и вы можете расположить все поля в произвольном месте экрана. Появится всплывающее окно, спрашивающего, что сделать с полем таблицы «SPFLI-FLTYPE». Вопрос появляется из-за того, что это поле имеет тип «Char 1» и показывает, является ли рейс регулярным или чартерным. Выберите «Независимая кнопка» (галочка), чтобы чартерный рейс обозначался стоящей галочкой.
51
Вы видите множество полей ввода на экране. Заметьте, что значение в поле «Мандант» не может быть изменено. Кроме информации о манданте, мы хотим гарантировать, что никто не сможет изменить также авиакомпанию и номер рейса. Это легко сделать, отредактировав свойства полей ввода. Дважды щелкните по полю ввода «Авиакомпания» (не по текстовому полю!) и измените свойства так, чтобы ввод был невозможен:
Проделайте то же самое и с номером рейса. Последний шаг – обработка переменной «ok_code». Присвойте элемент OK_CODE переменной «ok_code».
52
Сохраните и активируйте экран. Вернитесь к логике выполнения и раскомментируйте строку «MODULE STATUS_0200». Дважды щелкните по «STATUS_0200», чтобы создать новую панель статуса. Не забудьте изменить название include:
Теперь раскомментируйте строки «PF-STATUS» и «TITLEBAR» в новом модуле и замените «xxx» на «200». Затем дважды щелкните по первой «200», чтобы создать панель статуса. Введите краткое описание.
Добавьте следующие коды кнопкам:
53
Теперь создайте строку заголовка. Сохраните панель статуса и вернитесь к коду модуля. Дважды щелкните по вторым «200» и введите заголовок.
Добавьте строчку в код. Эта срока гарантирует, что поля ввода на экране 200 содержат данные из переменной wa_flight. Значение этой переменной было присвоено на экране 100, содержит она сведения о рейсе.
Теперь сохраните, проверьте и активируйте экран, а затем вернитесь к логике выполнения экрана 200.
54
Как и для первого экрана, вам необходимо реализовать логику выполнения и для второго. Во вкладке «ЛогикаВыполн.» раскомментируйте «USER_COMMAND_0200» и дважды щелкните по ней. Теперь реализуйте инструкцию CASE, которая обрабатывает коды с панели статуса.
Не забудьте переименовать include, добавив в начало «ZY_». После того, как вы сохранили include, добавьте следующий код:
Сохраните, проверьте и активируйте программу, а затем протестируйте ее.
55
Глава 6: Особенности для ERP-систем
Содержание
Эта глава об особенностях языка для ERP-систем. Она фокусируется на использовании объектов блокировки.
Обоснование
Все программы в среде SAP (независимо от языка их создания) используют блокировки, чтобы избежать несогласованности данных. Данная глава является прекрасным введением в эту тему.
Требование
Вы должны закончить все упражнения из главы 5.
56
Задание 1: Вход в систему SAP
Краткое описание: Используя SAPGui, войдите в систему с вашим именем пользователя и паролем.
Запустите SAPGui и войдите в систему, используя предоставленное имя пользователя и пароль. Вы можете найти их в главе 1.
Задание 2: Использование объекта блокировки
Краткое описание: Используйте объекты блокировки в своей программе из главы 5, чтобы избежать противоречивости данных об авиарейсе.
Для начала нужно взглянуть, как выглядит объект блокировки. Запустите словарь данных из меню SAP Easy Access, используя следующий путь:
Инструменты • ABAP-инструментальные средства • Разработки • ABAP-словарь
Также вы можете воспользоваться номером транзакции SE11.
Выберите «ОбъектБлокиров» и введите название объекта «ESFLIGHT». Нажмите «Просмотр», чтобы продолжить. Система выдаст сведения об объекте блокировки. Переключитесь на вкладку «ПарамБлокировки» и взгляните на параметры. Вы видите, что объект использует первичный ключ таблицы «SFLIGHT», чтобы блокировать данные в таблице.
Совет:
Названия пользовательских объектов блокировки должно отвечать принятым нормам. Называйте все свои объекты блокировки EZ_<название_таблицы>. Создать новый объект блокировки можно после создания соответствующей ему таблицы.
Теперь воспользуемся объектом блокировки в программе из главы 5. Лучшим способом использовать его является создание двух блокировок: одна общая блокировка при чтении данных из таблицы SPFLI и одна монопольная блокировка при записи данных в таблицу SPFLI. Начнем с общей блокировки в «USER_COMMAND_0100». Запустите среду разработки ABAP (SE80) и откройте этот модуль. Он находится в папке «PAI-модули». Переключитесь в режим изменения. Добавьте общую блокировку прямо перед конструкцией «SELECT» - поместите курсор перед «SELECT» и нажмите кнопку «Модель». Выберите вызов «Call Function» и наберите название функции постановки в очередь. Нажмите «Enter».
57
Данное действие вставит вызов функции постановки в очередь. Чтобы воспользоваться ею, измените параметры вызова так, как это представлено на примере ниже:
Для вызова функции, вы должны использовать уже выбранные «CARRID» и «CONNID» из структуры SPFLI. Также вы должны определить тип блокировки («S» – общая блокировка) и текущий мандант (считывается из системной переменной «SYMANDT»). Сохраните, проверьте и активируйте модуль.
58
Эта общая блокировка будет завершена после того, как пользователь нажмет кнопку на втором экране программы. Откройте модуль «USER_COMMAND_0200». Общая блокировка должна быть завершена прямо перед конструкцией CASE. Расположите курсор перед инструкцией CASE и нажмите кнопку «Модель». Выберите «Call Function» и наберите название функции вывода из очереди. Нажмите «Enter».
Параметры вызова функции очень важны, так что внимательно определите тип блокировки «S», «CARRID» и «CONNID». Убедитесь, что ввели все правильно:
59
Теперь, разблокировав данные, вам позволено поставить монопольную блокировку на изменение данных. Еще раз нажмите кнопку «Модель» и вставьте вызов функции, чтобы создать монопольную блокировку и затем разблокировать данные после их изменения. Код должен выглядеть следующим образом:
Удостоверьтесь, что не забываете поставить точку после каждого вызова функции! Сохраните, проверьте и активируйте программу.
При тестировании программы, вы можете следить за созданием общей блокировки в транзакции SM12. При запуске транзакции введите название таблицы «SPFLI» и нажмите кнопку «Список». Вы увидите список текущих существующих блокировок.
60
