Руководство для участников курса Версия курса 2й квартал 2005 г. Продолжительность курса 5 Дн. Номер материала 50072594
Скачать 38.91 Mb.
|
Глава 10: Повторно используемые компоненты BC400 CALL FUNCTION ’BC400_UPDATE_BOOK’ EXPORTING iv_book = wa_sbook EXCEPTIONS book_not_found = 1 update_sbook_rejected = 2 book_locked = 3 currency_conversion_error = 4 OTHERS = 5. IF sy-subrc = 0. MESSAGE s148(bc400). SET SCREEN 0. ELSE. MESSAGE e149(bc400). ENDIF. ENDCASE. ENDMODULE. " USER_COMMAND_0100 INPUT 362 © 2006 г. SAP AG All rights reserved. Авторские права защищены. 06-04-2006 BC400 Урок: Работа с функциональными модулями Резюме по уроку Теперь вы сможете: • выполнять поиск функциональных модулей • получать информацию о функциональных возможностях и способах использования функциональных модулей • вызывать функциональный модуль в программе 06-04-2006 © 2006 г. SAP AG All rights reserved. Авторские права защищены. 363 Глава 10: Повторно используемые компоненты BC400 Урок: Работа с методами Обзор урока Множество функций в SAP-системе реализовано в форме классов или методов. На этом уроке описывается ряд базовых объектно-ориентированных элементов синтаксиса ABAP-объектов, при этом в качестве примера используется ALV List Viewer. ALV List Viewer можно использовать для вывода на экране графически отформатированной внутренней таблицы. Этот урок не содержит полную информацию о программировании ALV List Viewer и включает в себя лишь краткое описание преимуществ имеющихся классов и методов. Цели урока Прослушав этот урок, вы сможете • выполнять базовые шаги объектно-ориентированного программирования ABAP (создание инстанций и вызов методов) для использования классов и методов, имеющихся в стандартной SAP-системе • выводить внутреннюю таблицу на экран с использованием SAP Grid Control (ALV List Viewer) Практический пример В программе необходимо задействовать стандартные функции, инкапсулированные в глобальные классы. 364 © 2006 г. SAP AG All rights reserved. Авторские права защищены. 06-04-2006 BC400 Урок: Работа с методами Работа с методами Рисунок 205: Классы и объекты Класс представляет собой формальное описание объектов (инстанций). В процессе выполнения могут создаваться несколько инстанций класса, каждая из которых будет иметь собственные атрибуты и методы. Доступ к атрибутам требуемой инстанции можно получить путем вызова метода инстанции. В качестве несложного примера рассмотрим бронирование рейсов. Каждая инстанция этого класса соответствует одной фактической брони и имеет собственные атрибуты, специфичные для брони, такие как идентификатор брони, дата бронирования, флаг отмены и т. д. Метод инстанции бронирования может, например, инициировать отмену бронирования. Вызов этого метода инстанции фактической брони приводит к изменению соответствующего атрибута брони, в данном случае “ флага отмены ”. Классы могут быть определены локально в пределах программы или глобально в библиотеке классов. 06-04-2006 © 2006 г. SAP AG All rights reserved. Авторские права защищены. 365 Глава 10: Повторно используемые компоненты BC400 В поставляемой SAP-системе имеется множество глобальных классов с методами, которые имеют все необходимые функциональные возможности для многократного использования. Следовательно, эти классы и методы также относятся к многократно используемым компонентам. Рекомендация: Язык ABAP был расширен SAP и дополнен объектно-ориентированными элементами синтаксиса (ABAP-объектами) в версии 4.6 и выше. Однако вследствие ограниченности времени в данном курсе описываются не все эти компоненты. На этом уроке иллюстрируются только базовые шаги, предоставляющие возможность использования классов и методов, поставляемых SAP. Для получения более подробной информации об объектно-ориентированном программировании см. курс BC401. Рисунок 206: Создание объектов и вызов методов Инстанции не имеют имен, поэтому для получения возможности создания инстанций классов и обращения к ним необходимо определить ссылочные переменные. Они являются указателями, которые могут обозначать соответствующие инстанции. Ссылочные переменные имеют имена, которые могут использоваться для обращения к соответствующим инстанциям. Ссылочные переменные определяются следующим образом: 366 © 2006 г. SAP AG All rights reserved. Авторские права защищены. 06-04-2006 BC400 Урок: Работа с методами DATA reference_name TYPE REF TO class_name. После запуска программы ссылочная переменная содержит начальное значение (“ т.е. не указывает на какую-либо инстанцию ”). После того, как она в первый раз будет использована для создания инстанции, ее начальное значение изменяется на обозначение этой инстанции. Критерии выбора определяются при помощи оператора CREATE OBJECT reference_name. посредством которого создается инстанция класса, указанного в определении ссылочных переменных. После этого ссылочная переменная будет указывать на эту созданную инстанцию. При использовании оператора CREATE OBJECT может потребоваться перенос данных в параметры импорта специального метода CONSTRUCTOR . Этот специальный метод выполняется автоматически непосредственно после создания инстанции. В процессе его выполнения происходит передача значений в соответствующие атрибуты новой инстанции на основе его параметров импорта. Вызов методов инстанции осуществляется посредством оператора CALL METHOD reference_name->method_name. В отличие от вызова функционального модуля, в данном случае указания имени метода недостаточно. Необходимо также указать соответствующую инстанцию, поскольку в программе могут существовать несколько инстанций данного класса. 06-04-2006 © 2006 г. SAP AG All rights reserved. Авторские права защищены. 367 Глава 10: Повторно используемые компоненты BC400 Рисунок 207: Пример стандартных классов: классы управляющих элементов EnjoySAP В SAP версии 4.6 и выше имеется множество управляющих элементов EnjoySAP, посредством которых можно создавать более эргономичные и интересные экраны. На рисунке выше показано несколько таких управляющих элементов: • Управляющий элемент сетки предназначен для вывода на экран внутренней таблицы с использованием таких функций, как сортировка, фильтрация, суммирование и т.д. • Управляющий элемент для изображения предназначен для вывода на экран изображения. • Управляющий элемент для HTML Viewer предназначен для вывода на экран HTML-файла или веб-страницы. • Управляющий элемент дерева предназначен для вывода на экран иерархического списка древовидной структуры. Обращение к управляющим элементам выполняется посредством классов и методов, имеющихся в стандартной поставляемой SAP-системе. Далее описывается использование класса CL_GUI_ALV_GRID в целях иллюстрации многократного использования существующих классов для обращения к наиболее интересному и популярному компоненту ALV Grid Control. 368 © 2006 г. SAP AG All rights reserved. Авторские права защищены. 06-04-2006 BC400 Урок: Работа с методами Для получения подробной информации обо всех управляющих элементах EnjoySAP и их взаимодействии см. курс BC412. Рисунок 208: Пример приложения: ALV Grid Control Компонент ALV Grid Control, также называемый SAP List Viewer (ALV), используется для вывода на экране внутренней таблицы. Он имеет множество пользовательских функций. Пользователь может изменять ширину столбцов на экране; кроме того, ширина может автоматически корректироваться в соответствии с выводимыми данными. Расположение выводимых столбцов также можно изменять путем перетаскивания. Стандартные кнопки управления могут использоваться, помимо прочего, для выполнения следующих функций: При просмотре подробных данных выводятся поля, которые были выбраны ранее в модальном диалоговом окне при помощи курсора. Функция сортировки позволяет пользователю задать ряд критериев для сортировки столбцов. В пределах выбранной области можно использовать функцию поиска для нахождения определенной строки символов в строках или столбцах. Можно подсчитать сумму по одному или каждому из нескольких столбцов с числовыми значениями. Функция Промежуточные суммы позволяет создавать списки уровней сортировки. Перед применением 06-04-2006 © 2006 г. SAP AG All rights reserved. Авторские права защищены. 369 Глава 10: Повторно используемые компоненты BC400 этой функции можно выбрать требуемые столбцы с нечисловыми значениями, в этом случае на экран будут выведены соответствующие итоговые значения. Кроме того, можно выполнить функции Печать и Выгрузка путем нажатия соответствующих кнопок. Пользователь может сохранить свои настройки в управляющем элементе сетки в качестве варианта просмотра и повторно использовать их в дальнейшем. Рисунок 209: Архитектура выполнения SAP-управляющего элемента сетки Управляющие элементы EnjoySAP всегда должны быть интегрированы в управляющий элемент SAP-контейнера (далее – контейнер). Контейнер должен быть интегрирован в подготовленную область управляющего элемента на экране. (См. левую часть вышеприведенного рисунка.) С точки зрения GUI, для внедрения управляющего элемента сетки и контейнера соответствующие инстанции должны быть созданы как заместители в программе. Эти инстанции можно использовать для адресации элементов GUI. Для этого в SAP-системе имеются стандартные классы, из которых можно генерировать инстанции управляющих элементов сетки и контейнера. 370 © 2006 г. SAP AG All rights reserved. Авторские права защищены. 06-04-2006 BC400 Урок: Работа с методами Рисунок 210: Классы доступа к управляющим элементам сетки и контейнера При создании инстанции неявно вызывается специфичный для класса конструктор (специальный метод CONSTRUCTOR этого класса). Назначение этого метода состоит в заполнении атрибутов создаваемой инстанции значениями его параметров ввода. Таким образом, при создании инстанции (CREATE OBJECT) необходимо указать значения требуемых параметров импорта конструктора. 06-04-2006 © 2006 г. SAP AG All rights reserved. Авторские права защищены. 371 Глава 10: Повторно используемые компоненты BC400 Рисунок 211: Метод CONSTRUCTOR класса контейнера Для получения подробной информации о каком-либо глобальном классе или методе можно перейти к построителю классов. Выведите список объектов класса в области навигации навигатора по объектам. После двойного щелчка по классу происходит переход к подробному просмотру в построителе классов. (Кроме того, можно перейти к построителю классов посредством двойного щелчка по имени класса в ABAP-программе). Установите курсор на требуемый метод и нажмите кнопку Параметр для просмотра интерфейсных параметров метода. Метод CONSTRUCTOR глобального класса CL_GUI_CUSTOM_CONTAINER (класс для контейнера) имеет обязательный параметр CONTAINER_NAME . Следовательно, при создании инстанции контейнера необходимо определить как минимум этот параметр, а именно имя области управляющего элемента на экране. 372 © 2006 г. SAP AG All rights reserved. Авторские права защищены. 06-04-2006 BC400 Урок: Работа с методами Рисунок 212: Важные методы для класса управляющих элементов сетки Глобальный класс CL_GUI_ALV_GRID имеет множество методов, которые могут вызываться для выполнения соответствующих функций управляющего элемента сетки. Для вывода содержимого внутренней таблицы с использованием ALV Grid Control достаточно иметь подробную информацию о следующих трех методах: CONSTRUCTOR Класс сетки также имеет конструктор. Единственным обязательным параметром является параметр i_parent , в который должна передаваться уже созданная инстанция контейнера (в форме указателя) при создании инстанции управляющего элемента сетки. SET_TABLE_FOR_FIRST_DISPLAY Этот метод созданной инстанции управляющего элемента сетки используется для переноса данных и параметров в управляющий элемент сетки. Выводимая внутренняя таблица должна передаваться в параметр IT_OUTTAB. Она должна представлять собой стандартную таблицу (см. определение типа параметра). Кроме того, необходимы технические данные для вывода столбцов сетки. В качестве описания строк внутренней таблицы проще всего использовать структуру словаря данных или прозрачную таблицу. В этом случае необходимо лишь перенести имя объекта словаря в параметр I_STRUCTURE_NAME . (Кроме того, можно создать каталог полей и перенести его в параметр IT_FIELDCATALOG .) 06-04-2006 © 2006 г. SAP AG All rights reserved. Авторские права защищены. 373 Глава 10: Повторно используемые компоненты BC400 REFRESH_TABLE_DISPLAY Этот метод следует вызывать только в тех случаях, когда необходимо загрузить изменившееся содержимое таблицы для обновления находящегося на экране управляющего элемента сетки при повторной обработке экрана. 374 © 2006 г. SAP AG All rights reserved. Авторские права защищены. 06-04-2006 BC400 Урок: Работа с методами Вывод внутренней таблицы в ALV Grid Control на экране Рисунок 213: Создание элемента экрана "Область специального управляющего элемента" 1. В графическом редакторе форматов можно определить область управляющего элемента экрана. Для этого нажмите кнопку Специальный управляющий элемент в строке инструментов. После этого выберите элемент, укажите размер и позицию области на экране следующим образом: Щелкните по той точке области обработки, в которой необходимо разместить верхний левый угол специального управляющего элемента, и не отпускайте кнопку мыши. Перетащите курсор по диагонали вниз и вправо до той точки, в которой должен находиться нижний правый угол. После отпускания кнопки мыши положение нижнего правого угла фиксируется. Введите новое имя для элемента экрана (в данном случае CONTAINER_1). Определите, должен ли изменяться размер области специального управляющего элемента при изменении размера основного экрана, посредством параметров Изменение размера по вертикали и Изменение Продолжение на следующей странице 06-04-2006 © 2006 г. SAP AG All rights reserved. Авторские права защищены. 375 Глава 10: Повторно используемые компоненты BC400 размера по горизонтали. При установке этих атрибутов можно также установить минимальные значения для области посредством дополнительных атрибутов Мин. число строк и Мин. число столбцов. Рисунок 214: Определение ссылочных переменных 2. В ABAP-программе обязательными являются две ссылочные переменные: • ссылочная переменная, которая должна указывать на еще не созданную инстанцию контейнера (имя: CONTAINER_R); • ссылочная переменная, которая должна указывать на еще не созданную инстанцию управляющего элемента сетки (имя: GRID_R). Продолжение на следующей странице 376 © 2006 г. SAP AG All rights reserved. Авторские права защищены. 06-04-2006 BC400 Урок: Работа с методами Рисунок 215: Создание инстанций 3. Создание инстанций выполняется посредством оператора CREATE OBJECT . Этот оператор должен размещаться в исходном тексте путем его генерации во избежание ошибок и пропусков при вводе. Для этого выведите список объектов соответствующего класса в области навигации навигатора по объектам и перетащите имя класса в исходный текст. В созданном вызове необходимо указать имя ссылочной переменной для xxxxxxxx и задать значения параметров. Синтаксис вызова очень похож на синтаксис функционального модуля. Однако параметры, которым необходимо присвоить значения посредством оператора CREATE OBJECT, являются интерфейсными параметрами соответствующего конструктора. Создание инстанций управляющих элементов обязательно осуществляется перед выводом экрана. Эта операция часто выполняется в PBO-модуле. Создание инстанций управляющих элементов для экрана выполняется только один раз. Это означает, что при повторной обработке экрана этот шаг пропускается. Вместо этого осуществляется запрос одной из двух ссылочных переменных: IF container_r IS INITIAL. Продолжение на следующей странице 06-04-2006 © 2006 г. SAP AG All rights reserved. Авторские права защищены. 377 Глава 10: Повторно используемые компоненты BC400 Рисунок 216: Вызов методов 4. Для переноса содержимого внутренней таблицы и описания ее строк в SAP Grid Control вызовите метод SET_TABLE_FOR_FIRST_DISPLAY инстанции управляющего элемента сетки. Кроме того, в этом случае необходимо создать вызов посредством перетаскивания. Затем в созданном вызове вместо xxxxxxxx необходимо указать имя ссылочной переменной управляющего элемента сетки и присвоить параметрам значения: • Затем следует перенести заполненную внутреннюю таблицу в параметр IT_OUTTAB . • В данном случае вводится внутренняя таблица с прозрачной таблицей SPFLI в качестве типа строк. Поэтому достаточно передать в параметр I_STRUCTURE_NAME только имя этой таблицы. После этого соответствующая информация словаря загружается автоматически и передается в управляющий элемент. Если в процессе выполнения программы содержимое внутренней таблицы изменяется, необходимо вызвать метод REFRESH_TABLE_DISPLAY для обновления выведенной сетки перед выводом следующего экрана. 378 © 2006 г. SAP AG All rights reserved. Авторские права защищены. 06-04-2006 BC400 Урок: Работа с методами Упражнение 19: Использование методов Цели упражнения Выполнив это упражнение, вы сможете • выводить простые списки с применением ALV Grid Control Практический пример Созданные ранее списки должны выводиться на экран с использованием ALV Grid Control. Задание 1: Подготовка данных и экрана для вывода управляющих элементов 1. Скопируйте программу SAPBC400RUT_ALV_GRID и все ее компоненты и присвойте ей новое имя ZBC400_##_ALV_GRID. 2. Ознакомьтесь с программой. В шаблоне имеется внутренняя таблица, совпадающая с таблицей SPFLI в базе данных, а также экран с номером 100. 3. Внутренняя таблица должна заполняться данными из таблицы данных SPFLI посредством выборки массива. 4. Создайте область управляющего элемента контейнера на экране 100 (рекомендуемое имя: CONTAINER_1). Задание 2: Создание контейнера и управляющего элемента, перенос данных в управляющий элемент 1. Определите ссылочную переменную для класса CL_GUI_CUSTOM_CONTAINER и класса CL_GUI_ALV_GRID. 2. Внедрите создание инстанции управляющего элемента или контейнера в событие PROCESS BEFORE OUTPUT на экране 100. Задайте только обязательные параметры. 3. В точке PROCESS BEFORE OUTPUT установите вызов метода SET_TABLE_FOR_FIRST_DISPLAY для переноса данных в управляющий элемент сетки. В параметре I_STRUCTURE_NAME (тип строки внутренней таблицы) укажите имя оптимального типа из словаря, в параметре IT_OUTTAB укажите текущую внутреннюю таблицу. 4. Убедитесь, что создание инстанций и вызов методов выполняются только при первой обработке экрана. 06-04-2006 © 2006 г. SAP AG All rights reserved. Авторские права защищены. 379 |