Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Vvedenie_v_ABAP

.pdf
Скачиваний:
117
Добавлен:
21.05.2015
Размер:
2.85 Mб
Скачать

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

чтобы делать это вручную, вновь воспользуемся словарем данных . Введите название таблицы «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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]