Главная страница

Р. Кречмер, В. Вейс - Разработка приложений SAP R3 на языке АВАР4. Р. Кречмер, В. Вейс - Разработка приложений SAP R3 на языке АВАР. Разработкаприложений sap r3Рюдигер Кречмерна языкеВольфганг Вейс


Скачать 28.36 Mb.
НазваниеРазработкаприложений sap r3Рюдигер Кречмерна языкеВольфганг Вейс
АнкорР. Кречмер, В. Вейс - Разработка приложений SAP R3 на языке АВАР4.pdf
Дата21.12.2017
Размер28.36 Mb.
Формат файлаpdf
Имя файлаР. Кречмер, В. Вейс - Разработка приложений SAP R3 на языке АВАР.pdf
ТипКнига
#12433
страница14 из 24
1   ...   10   11   12   13   14   15   16   17   ...   24
Глава 16
Пользовательский
интерфейс для создания
отчетов
Создание полей ввода критериев для экрана
выбора
• Использование параметров и составных критериев
выборки
• Составные критерии выборки
• Использование событий на экране критериев
выборки

178 Глава 16
При создании отчета с помощью логической базы данных первым рабочим экраном является экран, который позволяет задавать критерии выборки. При этом средства Logical Database считывают указанные данные из фактических таблиц базы данных и инициируют соответствующие события get.
Узнать, как задаются критерии для отчета, создаваемого с помощью Logical Database,
и как считываются табличные данные, можно, обратившись к главе 15.
В данной главе будет рассмотрено определение полей ввода, которые специфичны для отчетов и отображаются на экране критериев выборки ниже предварительно определенных критериев Logical
Database. Использование критериев выборки, вводимых с экрана, помогает разработчику писать про- стые и эффективные предложения where оператора select. Кроме того, будут описаны некоторые собы- тия, позволяющие устанавливать значения критериев выборки по умолчанию или проверять допустимость вводимых данных. Приведенные в этой главе события и команды языка АВАР/4 обеспе- чивают разработку удобного интерфейса пользователя для создания отчетов.
Разработка пользовательского интерфейса для внесения изменений в данные
рассматривается в главе 19.
В АВАР/4 существует два типа полей ввода для стандартного экрана выбора:
Parameters Единичные поля
Select-Options Внутренние таблицы для задания составных критериев выборки
(рекомендуется для динамических предложений where и операторов select)
Определение критерия как параметра или составного критерия выборки автоматически задает со- ответствующее поле ввода на экране выбора, а также структуру данных в программе для сохранения введенной пользователем информации. С программной точки зрения критерии выборки Logical Data- base и данных отчета определяются одинаково. Различие лишь в том, что специфичные для данного отчета критерии выборки расположены на экране ниже критериев Logical Database. Заметим, что при создании отчета можно использовать поля ввода (для параметров и составных критериев), относящиеся к критериям Logical Database.
Определение параметров для экрана выбора
Определение параметров осуществляется почти так же, как и определение полей, которое исполь- зует оператор data. Рассмотрим тот же пример программы для туристического агентства. Программа,
приведенная ниже, показывает, как определять параметры для города и даты рейса, а также дополни- тельное поле для проверки выбранных критериев:
Данные параметры показаны на экране рис. 16.1.
Одновременно каждый параметр определяет поле, которое может использоваться программой-отче- том как обычное поле, определенное с помощью оператора data. После ввода значения в поле ввода данного параметра на экране выбора и нажатия кнопки Execute (выполнить), это значение заносится в соответствующее поле, определенное параметром. Например, если пользователь задал Big City в поле ввода параметра p_city, будет проверяться следующее условие:
При вводе значений параметров или составных критериев выборки количество данных,
извлекаемых из Logical Database, автоматически не ограничивается. Если разработчику
необходимо получить в операторе select доступ к значениям, введенным пользователем, то
соответствующие параметры в предложении where оператора select следует размещать так же, как и
обычные поля.
Поскольку параметры выполняют роль интерфейсных объектов экрана выбора, то в синтаксисе оп- ределения parameters и data есгь небольшие различия:

Пользовательский интерфейс для создания отчетов 179
Рис. 16.1
Экран выбора для
программы туристического
агентства с несколькими
параметрами
• Начальное значение параметра определяется с помощью дополнения default (а не value,
как для data). Однако это дополнение не является обязательным.
• Структурированные параметры не поддерживаются (типа записей, задаваемых с помощью операторов begin of/end of).
• Параметры типа с (символьные) длиной 1 могут выводиться на экран в виде переключателя,
если использовать дополнение as checkbox в определении параметра. При выборе поля значение параметра будет равно X, в противном случае он будет пустым.
Каждый параметр связан со своей определяемой на естественном языке меткой (или названием поля), которая отображается на экране перед полем ввода (например, Flight date для p_fldate). Эту
метку можно изменить или перевести на другой язык без изменения исходного текста программы. Из- менение и создание этой метки осуществляется в рамках экрана редактирования (АВАР/4 Editor) при выборе элементов меню: Goto
Text Elements (текстовые элементы). Использование текстов, завися- щих от естественного языка, рассматривается в главе 17.
Составные критерии выборки (Select-Options)
Эти критерии обычно применяются при задании сложной выборки (например, диапазона значений,
исходного шаблона или даже их сочетания). Стандартная форма Select-Options на экране выбора имеет два поля ввода, позволяющих задать единственное значение или интервал. Более сложные критерии (в частности, выборка по нескольким значениям) задаются на отдельном экране. АВАР/4 автоматически сохраняет введенную информацию во внутренней, стандартно структурированной таблице, которая может использоваться в динамическом предложении where оператора select.
Использование Select-Options в операторе select
Составной критерий выборки предназначен для использования в предложении where оператора se- lect (см. главу 11). Так, если пользователю необходимо получить список клиентов с фамилиями, начи- нающимися на буквы А — М, то программа будет иметь следующий вид:
tables customers.
select-options s_name for customers-name.
select * from customers where name in s_name.

180 Глава 16
write / customers-name.
e n d s e l e c t .
При запуске программы-отчета пользователь может задать критерии выборки согласно рис. 16.2.
Рис. 16.2
Select-Option
с интервалом значений
В этом случае оператор select будет определять общее количество соответствующих клиентов, запи- санных в таблице базы данных customers. Приведенная программа-отчет будет эквивалентна следующей:
s e l e c t * from customers
where name between 'A' and 'M'.
write / customers-name.
endselect.
Очевидно, что Select-Options обеспечивает задание дополнительных критериев выборки без измене- ния исходного текста программы. Предположим, нужно выбрать всех клиентов, чьи фамилии начина- ются на букву Е, с фамилией Smith, а также все фамилии в диапазоне от буквы M до Shuliz. Для этого нажмите кнопку Complex Selections справа от поля ввода критерия для клиентов. В появившемся диа- логовом окне введите Е*, а в части окна под названием Single Value Selections (одно значение выбор- ки) — Smith. В части окна Ranges (диапазон) задайте границы М и Shultz (рис. 16.3). При нажатии кнопки Cору (копировать) все критерии, заданные в диалоговом окне, копируются в составной крите- рий выборки, и на экран опять выводится стандартное окно выбора, где можно продолжить ввод или запустить программу создания отчета на выполнение. Нажав кнопку Selection Options, можно ввести дополнительные критерии выборки.
Составные критерии часто применяются при создании отчегов с помощью логической базы данных.
Например, критерий выборки учебного отчета (см. главу 15) определяется через соответствующую
Logical Database (рис. 15.3 — 15.5).
Каждый элемент Select-Option содержит ссылку на определенное поле (например, customers-name),
которое указано после дополнения for и с которым производится сравнение в предложении where. Вся подстановка (на уровне select) осуществляется средствами логической базы данных после извлечения информации из таблиц реальной базы данных. Однако составной критерий для предложения where можно применять и в том случае, если информация не содержится в таблицах, принадлежащих логи- ческой базе (в частности, можно создать отчет, считывая все данные без логической базы данных).
Аналогичным образом составной критерий используется и в других операторах SQL, и они могут быть переданы в программу-отчет, запущенную командой submit (см. главу 18).
Помимо операторов SQL, Select-Options можно применять в предложении where, которое записано в цикле для внутренней таблицы:
tables customers.
data a l l customers l i k e customers occurs 200

Пользовательский интерфейс для создания отчетов 181
Рис. 16.3
Задание составного критерия выборки в диалоговом окне
Complex Selections
with header line.
select-options s_name for customers-name.
select * from customers into table all_customers.
loop at all_customers
where name in s_name.
write / all_customers-name.
endloop.
В данном примере внутренняя таблица all_customers заполняется информацией из таблицы базы дан- ных customers. На экран выводятся только те строки внутренней таблицы, которые удовлетворяют со- ставному критерию s_name, заданному пользователем.
Как и параметр, составной критерий имеет на экране выбора связанную с ним, определяемую на естественном языке метку (например, для s_name - "Customer name"). Эта метка отображается перед полем ввода составного критерия и может изменяться или переводиться на другой язык без изменения исходного текста программы. Доступ к меткам параметров и составным критериям обеспечивается в рамках экрана редактирования (АВАР/4 Editor) при выборе элементов меню: Goto
Text Elements
(текстовые элементы).
Внутренняя структура составного критерия
Во всех приведенных ранее случаях составной критерий использовался как "черный ящик", находя- щийся в предложении where оператора select: его применение не требовало знания внутренней струк- туры критерия. Однако иногда внутренняя структура Select-Option и содержимое внутренней таблицы должны обрабатываться в явном виде. Например, при необходимости заполнить составной критерий значениями по умолчанию до появления экрана выбора допускается добавить одну или несколько строк во внутреннюю таблицу, содержащую значения этого критерия.
Внутренняя таблица, соответствующая составному критерию всегда состоит из четырех столбцов: sign (признак), option (операция), low (нижнее значение), high (верхнее значение). Для при- мера, показанного на рис. 16.3, она будет иметь следующие строки:
sign
(признак)
I
I
I
option
(операция)
СР
EQ

low
(нижнее
значение)
Е*
Smith
М
high
(верхнее
значение)
Shultz

182 Глава 16
Каждая строка этой таблицы соответствует определенному условию выборки. В первых двух столб- цах (sign и option) указывается тип операции:
• sign = I (Including): включающая операция (положительная)
• sign = E (Excluding): исключающая операция (отрицательная)
• option = ВТ (BeTween): между (например, фамилия начинается с буквы, находящейся между M и
Shultz)
• option = CР (Contains Pattern): содержит шаблон (например, фамилия, начинающаяся с буквы М)
• option • EQ (EQual): равно (например, name • Smith)
• option • GE (Greate than or Equal to): больше или равно (например, id >= 1)
Два последних столбца (low и high) содержат используемые при сравнении значения и связаны с соответствующими полями таблицы: они должны иметь одинаковые тип и длину (в примере то же, что и для поля customers-name). Поле high применяется только для задания диапазона значений
(option = ВТ), в противном случае оно сохраняет начальное значение.
При выполнении программы внутренняя таблица, связанная с составным критерием, автоматически заполняется данными, введенными пользователем на экране выбора. Однако ее можно заполнить зна- чениями по умолчанию до отображения этого экрана, а также работать с ней, как с обычной таблицей
(например, проверять введенные пользователем данные на корректность или правдоподобность). Вы- полнение этих проверок лучше всего организовать на основе событий экрана выбора, работа с кото- рыми описана в следующем разделе. Например, если какое-нибудь условие проверки не удовлетворяется,
на экран выбора можно вывести соответствующее сообщение, после чего обновить экран и разрешить новый ввод данных в поля.
События экрана выбора
В АВАР/4 предусмотрены различные события, обеспечивающие задание значений на экране выбора и присвоение критерию выборки этих значений:
• initialization (инициализация): выполняется сразу после начала создания отчета и до обработки значений, заданных на экране выбора
• at selection-screen output (вывод на экран): выполняется до того как будет выведен экрана выбора
• at selection-screen on p/s (параметр или составной критерий): выполняется после задания пользо- вателем параметра р или составного критерия s
• at selection-screen: выполняется после ввода всех критериев выборки
Событие initialization происходит только однажды, а событие at selection-screen output — при каждом нажатии Enter (ввод), если экран выбора активен. После обработки всех перечисленных событий
АВАР/4 продолжает выполнение события start-of-selection, обрабатывая самый верхний уровень вложе- ния (в древовидной структуре Logical Database) события get (см. главу 15).
Контроль ввода
События at selection-screen и at selection-screen on p/s рекомендуется использовать для проверки введенных пользователем данных на допустимость значений и правдоподобие. Например, если в коде
ZIP задано меньше пяти символов, то пользователь, получающий отчет на основании следующей про- граммы, увидит на экране сообщение, что значение кода ZIP недопустимо (invalid):
Каждое сообщение об ошибке, получаемое по событию at selection-screen, немедленно останавливает программу-отчет и обновляет экран выбора. При этом можно изменить все критерии выборки. Если используется дополнение on p/s, то после события разрешается ввод только данного параметра или составного критерия. Текст сообщения об ошибке создается или изменяется двойным щелчком мыши

Пользовательский интерфейс для создания отчетов 183
в поле текста и хранится в системной таблице, содержащей информацию, определяемую на естествен- ном языке.
Обработка сообщений рассматривается в главе 20.
Повышение производительности программы
ДЛЯ ускорения получения отчета следует запретить неограниченные запросы к базе данных. Особен- но много времени занимают многочисленные запросы к большим таблицам базы. Во избежание этого в составном критерии можно указать количество строк, которое следует использовать в предложении where оператора select. Если внутренняя таблица, содержащая составной критерий, пуста, а пользова- тель не указал никакого критерия, то программа выведет на экран сообщение об ошибке:
Аналогичный прием используется, если отчет строится на логической базе данных с параметрами или составными критериями, относящимися к ней. В программе-отчете доступны соответствующие объ- екты данных, которые считываются или модифицируются точно так же, как составные критерии, спе- цифичные для данного отчета. Например, если логическая база данных имеет составной критерий s_id для поля customers-id, то программа-отчет может проверить это следующим образом:
Обратите внимание, что составной критерий s_id доступен программе без явного определения, по- скольку он автоматически определяется при обращении к логической базе. Содержимое логической базы данных можно вывести на экран с помощью Object Browser, если указать Single Object (один объект) и ввести имя логической базы данных. Сначала отображается ее структура, а затем можно перейти к просмотру критериев, указав в меню: Goto > Selections.
События экрана выбора очень помогают при разработке пользовательского интерфейса, так как удобный диалог весьма важен при внедрении программы.
Резюме
• Параметры представляют собой поля для ввода единичных значений на экране выбора и могут использоваться в отчете аналогично объектам данных.
• Составные критерии обеспечивают задание сложных критериев выборки и определяются как внут- ренние таблицы, которые могут применяться в условиях where SQL-предложений.
• Составные критерии могут обрабатываться как обычные внутренние таблицы, имеющие стандарт- ную структуру sign/option/low/high.
• События экрана выбора (например, at selection-screen) могут использоваться для проверки вводи- мых пользователем данных, а также для определения значений по умолчанию.

184 Глава 16
В данной главе было показано, как создать удобный пользовательский интерфейс программы-отчета.
В следующей главе рассказывается о создании программ, обеспечивающих детализацию объектов и до- полнительные возможности отображения списков.

Глава 17
Детализация объекта
данных и
дополнительные
возможности при работе
со списками
• Реакция программы на двойной щелчок мыши
• Определение пользовательского интерфейса
со списком, порожденным программой-отчетом
• Использование всплывающих экранов
• Локализация отчетов

186 Глава 17
Предположим, что необходимо построить программу-отчет для просмотра всех клиентов туристи- ческого агентства. Конечных пользователей может интересовать также подробная информация о каждом клиенте, однако обзорный список не должен быть перегружен подробностями. Поэтому целесообразно разработать программу-отчет с возможностями детализации так, чтобы конечный пользователь мог по- лучить название города и телефон клиента, дважды щелкнув мышью на его имени в списке.
Средства детализации являются очень полезным инструментом в том случае, если отчет первона- чально предоставляет пользователю только сжатую информацию. Используя эти средства, можно за несколько последовательных шагов просмотреть данные и получить расширенную информацию для вы- бранных объектов.
Для реализации возможностей детализации необходимо обеспечить доступ пользователю к таким инструментам, как кнопки и функции меню. Кроме того, программа должна реагировать на действия пользователя (например, на нажатие кнопки).
АВАР/4 относится к языкам, управляемым событиями, поэтому создание программ, реализующих некоторые функции детализации, не представляет больших сложностей. Событие at line-selection позво- ляет программе реагировать на двойной щелчок мыши, указывающий на выбор пользователем одного из элементов списка. Событие at user-command дает возможность программе реагировать на нажатие пользователем функциональной клавиши или экранной кнопки, причем реакция на это событие может программироваться пользователем. В этой главе объясняется, например, как с помощью команд window и call screen вывести на экран другой список (так называемый стековый список) или всплывающий экран.
Наборы элементов меню, функций меню, инструментальных линеек и экранных кнопок, которые позволяют программе взаимодействовать с пользователем, носят общее название статуса графического интерфейса пользователя (GUI). Статус GUI является центральным элементом интерфейса пользователя с программой АВАР/4. Передача программе действий пользователя (щелчка мышью, нажатия на функ- циональную клавишу и т.п.) через одну из функций статуса GUI определяет одно направление пользо- вательского интерфейса. В обратном направлении статус GUI может быть установлен программой динамически, таким образом обеспечивается изменение доступных на экране функций во время выпол- нения программы.
Для разработчика очень важна возможность создания таких средств и интерфейсов программ, ко- торые могут применяться в различных странах. Языковая независимость текстовых элементов от ис- ходных программ на языке АВАР/4 облегчает разработку по-настоящему международных приложений,
так как эти элементы могут быть переведены на другой язык без изменения исходного текста програм- мы. В выводимых на экран или печать текстах будет использоваться тот язык, который укажет пользо- ватель при регистрации в системе. В этой главе рассматривается, как в операторе write определять заголовки страниц, текст экрана выбора и текстовые символы, которые впоследствии можно будет вы- водить на экран на конкретном естественном языке.
Детализация объектов
. Язык АВАР/4 позволяет программировать реакцию на такие события работы со списками, как at line-selection (двойной щелчок мышью) и at user-command (нажатие на экранную кнопку). Эти события можно использовать для передвижения по уровням информации об отдельных элементах. Например, '
при просмотре списка всех клиентов туристического агентства пользователь может получить подробную информацию о клиенте, дважды щелкнув мышью на его имени в списке. В результате на экран будут выведены номер телефона клиента и город, в котором он живет. Если пользователь дважды щелкнет мышью на каком-нибудь поле этой записи, то откроется еще одно окно и т.д.
Двойной щелчок мышью: событие at line-selection
Действия пользователя (двойной щелчок мышью, одинарный щелчок на экранной кнопке) иниции- руют события в программе на АВАР/4. Основным приемом детализации объекта является двойной щел- чок мышью на объекте экрана, что соответствует событию at line-selection. По умолчанию аналогичное событие возникает при нажатии функциональной клавиши F2. Большинство пользователей для управ- ления переходами в программе применяют именно двойной щелчок мышью, и это действие является важнейшим элементом интерфейса с пользователем. Следующий простой пример иллюстрирует обра- ботку события at line-selection в ответ на двойной щелчок мыши:

Детализация объекта данных 187
Вначале по событию на экран выводится список, называемый базовым. С помощью команды при возникновении события at строится новый список, который перекры- вает на экране начальный список. Новый список "помещается" в стек списков и называется стековым
списком.
Стековый список отображается на полном экране, если не заданы координаты окна
в команде window (см. раздел "Всплывающие окна и основные экраны").
При построении нового списка старый список не уничтожается, и к нему можно вернуться, исполь- зуя одну из стандартных функций: нажатие на кнопку Back (функциональная клавиша или кнопку
Cancel (клавиша F12). В обоих случаях стековый список уничтожается. Нажатие на кнопку Exit (клави- ша F15) позволяет вернуться назад на экран выбора отчета с одновременной очисткой стека.
АВАР/4 предлагает разработчику стандартный набор встроенных функций управления
переходами для работы со списками отчетов: Back, Cancel и Exit.
Активные зоны
— это элементами, предназначенные для указания возможных действий поль- зователя. Они представляют собой области списка, в которых курсор появляется в виде символа с изо- бражением поднятой вверх правой руки. Если пользователь указывает на эту область (и курсор активен),
то одинарный щелчок приводит к тем же последствиям, что и двойной в обычной ситуации. Разработ- чик может строить списки с активными зонами, используя дополнение hotspot в операторе write. На- пример, при работе с программой туристического агентства активной зоной можно сделать поле фамилии клиента, таким образом напоминая пользователю, что он должен щелкнуть мышью именно на этом поле.
В этом примере на экран выводится базовый список, включающий фамилии всех клиентов. Когда пользователь указывает на фамилию какого-либо клиента, курсор отображается в виде правой руки.
После этого можно щелкнуть мышью один раз (вместо двух) и получить стековый список.
Активные зоны поддерживаются, начиная с версии R/3 З.ОС.
Действия пользователя общего типа: at user-command
ЕСЛИ пользователь нажимает на функциональную клавишу или щелкает мышью на экранной кнопке,
то возникает событие at
Каждый элемент меню, экранная кнопка или функциональная клавиша имеет в системе функциональный код размером 4 байта (например, FREE), который можно получить из системного поля sy-ucomm после действий пользователя. Например, количество свободных мест данного рейса можно вывести на экран в стековый список. В приведенной ниже программе функ- циональной клавише или экранной кнопке соответствует код "Free". При нажатии на любую из них система вычисляет количество свободных мест:
Размер функционального кода задается равным 4 байтам (в нашем примере — FREE) на экране GUI
status (GUI-статус).
Создание статуса графического интерфейса с помощью Object Browser рассматривается в
разделе
статуса графического интерфейса".
В программе статус GUI задается с помощью команды set
При инициализации статуса ог- раничивается количество функций меню, доступных пользователю, только теми, которые определены в этой команде. Ограничение действует до тех пор, пока не будет установлен новый статус.

188 Глава 17
Определение статуса графического интерфейса
ДЛЯ создания статуса графического интерфейса в раpзабатываемом приложении выполните следую- щие действия. В списке объектов отчета на экране Object Browser нажмите на кнопку Create, в появив- шемся диалоговом окне выделите поле GUI Status и введите имя параметра (например. FLIGHTS). Затем задайте краткий поясняющий текст и определите тип статуса. Поскольку в нашем примере действия пользователя задаются на списке, то выбирается тип статуса List (список), как показано на рис. 17.1.
Рис. 17.1
Создание статуса графического интерфейса
Другие типы статусов GUI рассматриваются в главах 19 и 22.
Для подтверждения выбора включите переключатель (рядом с кнопкой Create List). Появится сле- дующий экран, содержащий определения меню и сто функций, а также экранных кнопок и функцио- нальных клавиш (см. рис. 17.2).
Рис. 17.2
Возможные компоненты
статуса для учебного
примера отчета в виде списка

Детализация объекта данных 189
Кнопки основных функций (например, зеленая стрелка для функции BACK или изображение прин- тера) всегда присутствуют в линейке меню системы или приложения. Если в верхней части экрана (см.
рис. 17.2) щелкнуть на кнопке Display Standards (показать стандартные), то будут выведены дополни- тельное меню и предлагаемое меню функций (см. рис. 17.3).
Рис. 17.3
Дополнительное стандартное
меню учебного примера
отчета в виде списка
Для создания в учебном примере функции Edit
Free Seats щелкните на слове Edit, расположенном ниже предлагаемой линейки меню. На экран будет выведено всплывающее меню, с помощью которого можно создать различные доступные пользователю элементы меню. Щелкните на экранной кнопке
Insert Entry (вставить элемент) (см. рис. 17.4) и задайте код функции и текст меню.
Рис. 17.4
Определение функций
меню Edit для вашего отчета
Вставить элемент

190 Глава 17
Связь функциональных клавиш с функциональными элементами меню
ДЛЯ быстрого доступа к функциям меню можно связать функциональные клавиши с кнопками инстру- ментальной линейки меню или с экранными кнопками. Например, функциональный код FREE является элементом меню, но может быть и функциональной клавишей. Для реализации этого можно использовать правую линейку прокрутки экрана Maintain Status (сопровождение статуса GUI) и ввести "FREE" после F5
в части экрана Freely Assigned Function Keys (произвольно назначаемые клавиши). В результате будет опре- делена функция, которая соответствует нажатию на клавишу F5 (см. рис. 17.5). После нажатия на клавишу
Enter (ввод) система автоматически дополнит описание кратким текстом "Free Seats". При выполнении про- граммы этот текст выводится (как подсказка) при нажатии на правую кнопку мыши.
Рис. 17.5
Определение функциональных
клавиш для меню ввода
Проектирование инструментальной линейки приложения
ДЛЯ конкретного отчета разработчик может также построить специальную инструментальную линей- ку. Для этого следует занести функциональный код FREE в пустое поле ввода части экрана, помеченной как Application toolbar (инструментальное меню приложения) (см. рис. 17.6, нижняя часть экрана).
Таким образом функциональный код связывается с экранной кнопкой. При этом соответствующий крат- кий текст (Free Seats) автоматически порождается системой для описания этой кнопки.
Рис. 17.6
Определение экранной кнопки

Детализация объекта данных 191
Разрешается также добавлять пиктограммы к кнопкам инструментальной линейки приложения. Для получения предлагаемых по умолчанию пиктограмм кнопок укажите элементы линейки меню More
Utilities (дополнительные средства) > Propose Icons (предлагаемые пиктограммы). Если ни одна из пик- тограмм не подходит, то рекомендуем воспользоваться любой из набора предварительно установленных в АВАР/4. Для этого установите курсор в поле функционального кода (FREE) в части экрана Application toolbar и укажите функциональную кнопку Change Text Type (изменить тип текста). В появившемся диа- логовом окне задайте тип текста. Укажите на слово Icon (пиктограмма), чтобы получить доступ к диа- логовому окну, позволяющему задать значок пиктограммы и соответствующий ей текст (см. рис. 17.7).
Рис. 17.7
Задание пиктограммы и
соответствующего ей текста
Изменение стандартной инструментальной линейки
После знакомства со способами настройки пользовательской линейки можно приступить к изучению стандартной инструментальной линейки. Она состоит из стандартных пиктограмм, часть из которых имеет назначенные функциональные коды (например, функция BACK — клавиша F3). Однако некоторые из этих пиктограмм не инициализированы и не связаны со стандартными функциональными клавиша- ми. Разработчик может назначить функциональный код любой из них. Пример задания кода SAVE при- веден на рис. 17.8.
Рис. 17.8
Использование
пиктограммы из стандартной
инструментальной линейки

192 Глава 17
Допускается переопределение стандартных функций управления переходами стандартной
инструментальной линейки. Однако в этом случае следует запрограммировать переходы в
явном виде, используя технологию работы в основных экранах (см. главу 19).
Использование нескольких статусов GUI
При разработке интерфейса следует соблюдать главное правило: пользователь прикладной програм- мы должен всегда видеть на экране один и тот же набор функций меню. Однако некоторые их этик функций могут быть недоступны для использования на всех экранах. Например, функцию Free seats сле- дует разрешить использовать только на экране основного списка отчета и запретить для экрана со стековым списком подробной информации о клиентах. Аналогично, диалоговая программа для измене- ния данных часто имеет два экрана: один — для внесения изменений, а другой — для отображения информации, где все функции для внесения изменений видны, но их использование не разрешено. Для получения доступа к ним необходимо воспользоваться несколькими статусами интерфейса, каждый из которых соответствует отдельному набору активных функций меню.
Для запрещения доступа к функции меню или к экранной кнопке можно использовать экранную кнопку
(активный или неактивный). При запрещении доступа к функции меню соот- ветствующий ей квадратик перекрашивается в серый цвет, а запрещенная кнопка меню исчезает с эк- рана. Разрешенная с помощью статуса GUI кнопка доступна до тех пор, пока используется данный статус. Для получения списка всех функциональных кодов работающей а данный момент программы укажите элементы меню Goto
Function List (список функций).
После задания статуса его необходимо активизировать с помощью кнопки Generate (создать). При вы- полнении программы статус GUI устанавливается командой set
Все функции меню и экранные кнопки остаются доступными до тех пор, пока не будет установлен новый статус. Имя текущего статуса содержится в системном поле
В приведенном ниже примере статус FLIGHTS первоначально уста- навливается для основного списка, статус используется при внесении изменений, a SHOW — для вывода на экран. При этом все функции для изменения данных типа SAVE видимы, но недоступны.
При выводе на экран основного списка отчета появляются главное меню и инструментальная ли- нейка, соответствующая статусу FLIGHTS (см. рис. 17.9).
Всплывающие окна и основные экраны
В приведенном выше примере программы стековые списки являются полными, т.е. занимают на экране столько же места, сколько и основной список. Для вывода на экран списка во всплывающем окне следует использовать команду window с дополнениями starting at и ending at x2 y2, указыва- ющими координаты верхнего левого и нижнего правого углов окна на экране (см. рис. 17.10).

Детализация объекта данных 193
Рис. 17.9
Статус FLIGHTS
для основного списка учебного примера
Рис. 17.10
Всплывающее окно экрана учебного примера отчета в виде списка
Можно опускать дополнение ending at. В этом случае координата нижнего правого угла окна будет совпадать с координатой нижнего правого угла полного экрана. Так же, как и для стекового списка,
отображаемого на полном экране, из списка в окне пользователь автоматически получает доступ ко всем стандартным функциям управления переходами.
Если необходимо создать диалоговое окно с более общими функциями (например, с по-
лями для ввода данных и с экранными кнопками), рекомендуется использовать оператор
call screen с дополнениями starting at x1 y1 и ending at х2 у2. Такой экран должен быть определен в
соответствии с инструкциями, приведенными в главах 19 и 22. Средства Development Workbench
обеспечивают также некоторые функции поддержки стандартного диалога пользователя, например
функции подтверждения выбора (см. главу 20).

194 Глава 17
Положение курсора и скрытая информация
При использовании событий at line-selection и at user-command разработчику, как правило, необхо- дима дополнительная информация о выбранном элементе списка, чтобы найти и вывести на экран в форме всплывающего окна или стекового списка подробную информацию об элементе. К такой допол- нительной информации относятся:
1. Поля, принадлежащие выбранной строке (например, customers-id или customers-name)
2. Название и содержимое поля, на котором находился курсор во время двойного щелчка мыши
В языке АВАР/4 существует несколько методов для получения этой информации. Рассмотрим ис- пользование двух альтернатив:
• Сохранение содержимого поля с помощью hide
• Команду get cursor с дополнениями field и value
Команда hide
Предположим, что программа должна вывести на экран список клиентов с невидимыми идентифи- каторами:
Команда hide временно сохраняет содержимое поля all_customers-id текущей строки в контролируе- мой системой области памяти, называемой Hide Area (скрытая область). При интерактивном событии,
связанном с действиями пользователя, содержимое поля all_customers-id восстанавливается из Hide Area.
Например, если пользователь выберет какую-нибудь строку, то поле all_customers-id будет содержать идентификатор пользователя (например, 87654321), и программа сможет далее использовать этот номер:
В данном примере Hide Area содержит идентификаторы всех клиентов. При двойном щелчке на строке выполняется событие at line-selection, и в поле all_customers-id заносится номер выбранного кли- ента. Далее команда чтения использует этот номер в качестве ключа для извлечения данных из внут- ренней таблицы all_customers и выводит подробные данные выбранного клиента в стековом списке.
Команда get cursor
Рекомендуем использовать команду get cursor, если для однозначного определения необходимой строки сохраненной информации недостаточно, например, при создании списка строк различного типа.
Команда get cursor возвращает имя поля, на которое указывает курсор, передавая его в дополнительное поле, определенное после дополнения field. Значение поля передается в другое поле, определеннее после дополнения value.

Детализация объекта данных 195
at line-selection.
get cursor field fieldname valye fieldvalue.
if sy-subrc * 0 and fieldname = 'CUSTOMERS-NAME'.
write: 'Selected customer:' , fieldvalue. .
endif.
Содержимое поля fieldname должно указываться прописными буквами, даже если в
таблице использованы строчные. Дело в том, что для имен полей внутреннее представле-
ние системы использует заглавные буквы.
Дополнительные средства
проектирования списков
В этом разделе рассматриваются некоторые особенности языка АВАР/4, которые помогают создавать списки с более богатыми возможностями компоновки страницы. Во-первых, разработчик может создавать отчеты на разных языках. Такие тексты разрешается изменять и транслировать автономно от исходных текстов программ. В процессе выполнения текстовые элементы (например, заголовки страниц и метки эк- рана выбора) отображаются на языке страны пользователя. Кроме того, любой текст, выводимый на экран командой write, тоже можно связать с символом текста, относящимся к конкретному языку.
Во-вторых, используя события top-of-page и end-of-page, разработчик может создавать специальные заголовки страниц или нижние колонтитулы. Эти события инициируются при записи первой строки новой страницы или при достижении последней строки текущей страницы.
И, наконец, с помощью простейших языковых конструкций разработчик может строить табулиро- ванные списки. Эти команды языка АВАР/4 иллюстрируются короткими примерами.
Текстовые элементы, определяемые на естественном
языке пользователя
Текстовые элементы на естественном языке удобно использовать, если они должны быть распеча- таны в виде документа или отображены на экране, так как в АВАР/4 поддерживаются изменение и трансляция этих элементов отдельно от исходного текста программы. Для создания или редактирования текстового элемента нужно указать на экране Editor элементы линейки меню Goto
Text Elements
(текстовые элементы). Появится экран, позволяющий работать с заголовками документа или страницы,
с текстом критериев сортировки и с текстовыми символами (см. рис. 17.11).
Рис.
17.11
Экран Text Elements

196 Глава 17
При необходимости изменения названия отчета или заголовков списков выберите в переключателе опцию Titles and headers (заголовки экранов и списков) и щелкните мышью на кнопке Change (изме- нить). Каждая программа имеет название, которое по сути является кратким текстом, вводимым при задании атрибутов программы. Заголовки списка и столбцов отчета отображаются в виде заголовков страниц основного списка (см. рис. 17.12).
Рис. 17.12
Название отчета, заголовок списка и заголовок столбца
Если заголовок списка не задан, то в качестве него будет использоваться (и выводиться на экран в начале каждой страницы) название отчета. Заголовки страниц стековых списков задаются с помощью события
(см. следующий раздел).
Для изменения зависящих от естественного языка меток парамегров или составных критериев вы- борки выберите из переключателя опцию Selection texts (выбор текстовых элементов) (см. рис. 17.11).
При этом после щелчка мышью на кнопке Change появится экран Change
OPTIONS, позволяющий ввести зависимые от языка метки полей экрана выбора (см. рис. 17.13).
Рис. 17.13
Изменение текстов критериев выборки

Детализация объекта данных 197
ЕСЛИ В отчете присутствуют тексты критериев выборки, то появившийся экран выбора будет анало- гичен, представленному на рис. 17.14. При отсутствии метки параметра или составного критерия вы- борки на экране выбора будет указано его внутреннее имя (имя, присвоенное системой, например
S_FLDATE).
Рис.
17.14
Экран выбора с зависящими
от естественного языка
метками
Точно также создаются и редактируются текстовые символы, используемые как литеральные кон- станты в операторе write в исходных текстах программы. Например, если необходимо вывести на экран адрес клиента, то можно связать текстовые символы со строками "Name" и "City":
w r i t e : / 'Name' (nam) , customers-name,
/ ' C i t y ' ( c i t ) , c u s t o m e r s - c i t y .
В данном примере поле символа текста nam присоединено к строке Name, a cit — к City. Для запи- санных таким образом исходных тексгов можно указывать фамилию и название города на любом языке,
например на испанском, при этом поля "имя" и "город" (соответствующие Name и City) будут отобра- жаться
Nombre и
Для того чтобы создать или изменить символы и cit, нужно дважды щелкнуть мышью на ветствующем символе исходного программы, и система автоматически воспримет литеральные константы в качестве значений по умолчанию. В дальнейшем эти константы могут быть изменены. На- пример, если дважды щелкнуть на символе то появится экран, позволяющий изменить Name на
Customer name рис. 17.15).
Текстовые элементы транслируются с помощью меню Environment (среда) начального экрана
Development Workbench. Если текстовые символы не были оттранслированы в рабочий язык, с которым пользователь регистрируется в системе, то автоматически отображаются литеральные константы опе- ратора write. Например, вместо слова появится Name из исходного текста программы.
При применении одинаковых символов текста в нескольких местах программы можно воспользо- ваться другим приемом:
/
/
Символы текста text-nam и text-cit выполняют ту же функцию, что и приведенные ранее. В данном случае, если символ текста не был переведен на рабочий язык пользователя, никакие литеральные кон- станты не выведутся, так как в операторе write нет констант, которые можно было бы подставить вместо символа текста. Поэтому рекомендуем использовать этот прием только при многократном при- менении одного и того же символа текста.
Заголовки и нижние колонтитулы страниц
Кроме стандартных зависящих от языка пользователя заголовков страниц, для списков отчета раз- решается определять специальные заголовки страниц и нижние колонтитулы. Для этого используются

198 Глава 17
Рис. 17.15
Изменение текстовых
символов
специальные события top-of-page (начало страницы) и end-of-page (конец страницы), характеризующие запись первой строки новой страницы и переход на последнюю строку текущей страницы. Очевидно,
что эти события полностью независимы от управляющей структуры программы. Например, событие top-of-page может произойти внутри цикла. Кроме того, оно может быть вызвано командой new-page
(новая страница).
Иногда в основном списке не нужен стандартный зависящий от языка заголовок списка. Для отказа от стандартного заголовка в определении отчета указывается дополнение no standard page heading (без стандартного заголовка).
При пролистывании списка отчета заголовок страницы всегда находится в верхней строке экрана.
Например, вторая страница отчета, согласно приведенной ниже программе, будет выглядеть так, как показано на рис. 17.16:
Рис. 17.16
При пролистывании списка отчета заголовок страницы всегда находится в верхней строке экрана

Детализация объекта данных 199
report header nо standard page heading.
s t a r t - o f - s e l e c t i o n .
do 100 times.
write / sy-index.
enddo.
top-of-page.
write ' This is the page header of top-of-page' .
По умолчанию списки отчета, отображаемые на экране, имеют одну "логическую" страницу по сути неограниченной длины: максимальное количество строк — 60000. Для постраничного просмотра исполь- зуется линейка прокрутки или стандартные кнопки пролистывания инструментальной линейки системы.
Новая логическая страница создается с помощью команды new-page.
Заголовок и число строк страницы особенно важны в том случае, если список нужно распечатать на принтере. Для задания формата и других параметров печати укажите элементы линейки меню
List
Print. Максимальный размер страницы определяется моделью имеющегося принтера,
а формат печати при создании программы часто бывает неизвестен. Однако при распечатке специаль- ных форм количество строк на странице можно установить с помощью дополнения line-count, которое указывается в определении report.
Если для задания числа строк в постраничном примечании использовать событие end-of-page вместе с line-count, то можно сформировать нижний колонтитул. Например, приведенная ниже программа ре- зервирует три строки для нижнего колонтитула:
report footer no standard page heading line-count 44 (3).
s t a r t - o f - s e l e c t i o n .
do 100 times.
write / sy-index.
enddo.
end-of-page.
write 'This is the page footer of end-of-page' .
Результат выполнения этой программы приведен на рис. 17.17.
Рис. 17.17
Колонтитул страницы,
состоящий из трех строк
Аналогичным образом, используя событие top-of-page в процессе обработки события line-selection,
можно вывести на экран заголовок стековых списков. Разные ЗАГОЛОВКИ нескольких стековых списков формируются с помощью задания специального статуса интерфейса для каждого из них. Таким образом,
используя системное поле sy-pfkey, можно отличать стековые списки по их текущему статусу GUI.

200 Глава 17
Фреймы (кадры)
Для создания списка со сложной компоновкой страницы (например, содержащего управляющие эле- менты таблицы) проще всего использовать средства запроса АВАР/4, т.е. утилиту Query. Однако можно также воспользоваться и разнообразными средствами языка программирования АВАР/4, позволяющими сформировать специальную разметку страницы.
Например, для вывода на экран табличного списка, разделенного горизонтальными и вертикальны- ми линиями, (т.е. для вывода фреймов) используются команда uline и системное поле sy-vline (см,
рис. 17.18):
Рис. 17.18
Более сложная компоновка
списка из трех фреймов
В данном примере отчет распределяется по трем фреймам, в которые выводятся конкретные част списка с помощью команд, задающих горизонтальные (uline) и вертикальные (sy-vline) линии. Сначала корректируется размер строк списка, задаваемый числом my_line_size, которое следует после дополне-
ния line-size команды new-page. Затем команда uline выводит на экран верхнюю горизонтальную линию заглавного фрейма, а команда format задает его цвет. Следующая команда write выводит текст заголовка,
ограниченный двумя вертикальными линиями. Далее следует оператор uline, который одновременно
CONSTANTS MY_LINE_SIZE TYPE I VALUE 40.
DATA SQUARE TYPE I.
NEW-PAGE LINE-SIZE MY_LINE_SIZE.
ULINE.
FORMAT COLOR COL_HEADING.
WRITE: / SY-VLINE,
'Numbers and their squares',
AT MY_LINE_SIZE SY-VLINE.
FORMAT COLOR OFF.
ULINE.
DO 20 TIMES.
SQUARE = SY-INDEX ** 2.
WRITE: / SY-VLINE,
SY-INDEX COLOR COL_KEY,
SY-VLINE,
SQUARE,
AT MY_LINE_SIZE SY-VLINE.
ENDDO.
ULINE.

Детализация объекта данных 201
определяет нижнюю границу заглавного фрейма и верхнюю границу двух других. В цикле do на экран выводятся строки, содержащие значения целых чисел и их квадратов. Строки ограничены вертикаль- ными линиями. Последняя команда завершает отображение обоих фреймов нижней линией.
Углы фрейма, являющиеся пересечением вертикальных и горизонтальных линий,
автоматически
системой.
Резюме
• События at line-selection и at user-command управляют детализацией объектов.
• Меню, экранные кнопки и функциональные клавиши формируются с помощью статусов интер- фейса.
• Статусы GUI задаются с помощью команды set pf-status. Имя текущего статуса хранится в систем- ном поле
• Команда window дает возможность выводить на экран всплывающие окна, внутри которых под- держиваются все функции управления переходами.
• События top-of-page и применяются для создания заголовков и нижних колонтитулов.
• Табулированный список выводится на экран с помощью команд uline и
— простейших конструкций языка АВАР/4.
В следующей главе рассматривается, как запускать на выполнение программу-отчет и как задавать критерии выборки.

1   ...   10   11   12   13   14   15   16   17   ...   24


написать администратору сайта