ОСНОВЫ АВАР Вводный курс для консультантов 2016 год ABAP/4 ABAP/4 (Advanced Business Application Programming) - проприетарный внутренний язык Краткое описание возможностей программирования высокого уровня немецкой Язык реализует работу с внутренними софтверной компании SAP. Наряду с Java структурами данных, интерфейсом пользователя является языком создания приложений для SAP SAP R/3, транзакциями, отчётами, NetWeaver Application Server. Синтаксис наиболее близок к языку программирования COBOL. Название Используется исключительно для бизнесприложений и промежуточного программного История ABAP интерфейсами загрузки и выгрузки данных. расшифровывается как обеспечения компании SAP. Имеет возможности Advanced Business Application Programming, а для объектно-ориентированного цифра «4», по всей видимости, символизирует программирования. Имеет сборщик мусора. отношение к четвёртому поколению языков Исходный текст ABAP компилируется программирования. Язык был создан в 1980 году (генерируется) в исполняемый ABAP байт-код, для работы с системой SAP R/2, позднее известный как «report load»[2]. Исполняется на унаследован в SAP R/3. виртуальной машине. 09.04.2021 Архитектура SAP R/3 Клиент-серверная архитектура SAP R/3: Система SAP R/3 представляет собой трехуровневую клиент-серверную архитектуру: • • • Нижний уровень – уровень базы данных; Уровень приложений написанных на ABAP для SAP R/3; Презентационный уровень – графический пользовательский интерфейс (SAP GUI). 09.04.2021 R/3 Repository Presentation Server Layer Application Server Layer ABAP Program Cross-client Database Repository Client-specific Customizing tables Application tables ã SAP AG 1999 3 Инструменты ABAP (ABAP Workbench) ABAP Workbench Tools Debugger Screen Painter Menu Painter FI HR SD MM WM Object Navigator MM Cust. ABAP Editor ABAP Dictionary Function Builder Class Builder SAP AG 1999 09.04.2021 4 Инструменты ABAP (ABAP Workbench) ABAP Workbench состоит из различных инструментов предназначенных для создания и редактирования объектов репозитария. Инструменты ABAP Workbench обеспечивают программиста средствами разработки на протяжении полного цикла создания программы. ABAP-редактор (ABAP Editor) предназначен для написания программного кода ABAP-словарь (ABAP Dictionary) предназначен для хранения структуры базы данных, определения таблиц и глобальных типов данных. Редактор меню (Menu Painter) предназначен для разработки интерфейса пользователя (menu bar, standard toolbar, application toolbar, function key assignment) Редактор экранов (Screen Painter) предназначен для разработки экранного интерфейса пользователя для диалоговых программ. Построитель функций (Function Builder) предназначен для разработки функциональных модулей (ФМ). ФМ - программы с предопределённым интерфейсом, входными и выходными параметрами, доступные для вызова из любой точки системы SAP R/3 Построитель классов (Class Builder) предназначен для разработки глобальных классов 09.04.2021 5 ABAP-словарь • Словарь данных - хранилище описаний структуры данных и таблиц, с которыми работают программы. Можно выделить следующие уровни иерархии словаря данных: таблицы, структуры, элементы данных и домены; • Для работы со словарём данных используется транзакция se11. 09.04.2021 6 Иерархия типов ABAP-словаря 09.04.2021 7 Иерархия типов ABAP-словаря Элемент данных определяет смысловое назначение данных и содержит помимо технических атрибутов (как например тип и длина поля) и презентационные - названия элемента данных используемое как в описании структур, так и в программных интерфейсах. Соответственно, все структурированные данные в ABAP словаре (структуры, таблицы), как правило, строятся на элементах данных. Домены являются самым низкоуровневым элементом ABAP словаря. При создании домена вы должны указать базовый тип и длину. Из домена элемент данных наследует технические атрибуты. Один и тот же домен может быть использован в определении нескольких элементов данных. Использование доменов позволяет избежать множества ошибок пользовательского ввода. Система сама проверит значение и в случае чего выдаст ошибку. Использование домена позволяет унифицировать систему, так как создается один домен для множества общих понятий. Если появилось новое значение с развитием системы – нужно изменить только один домен, а не всю систему. 09.04.2021 8 Предопределённые типы ABAP-словаря Predefined ABAP Dictionary Types ACCP ............... CHAR ............... CLNT ............... CUKY ............... CURR ............... DATS ............... DEC ................. FLTP ................ INT1 ................. INT2 ................. INT4 ................. LANG ............... LCHR ............... LRAW .............. NUMC .............. PREC ............... QUAN .............. RAW ................ TIMS ................ VARC ............... STRING ........... RAWSTRING ... UNIT ................. Accounting period YYYYMM Character string Client Currency key, referenced by a CURR field Currency field, stored as DEC Date field (YYYYMMDD), stored as CHAR(8) Calculation or amount field, with plus or minus sign Floating point number with eight-byte accuracy 1 byte integer. Whole number <= 255 2 byte integer. Only for length field before LCHR or LRAW 4 byte integer. Whole number with plus or minus sign Language key Long character string. Must be preceded by an INT2 field. Long byte string. Must be preceded by an INT2 field. Character string containing only digits Accuracy of a QUAN field. Quantity field. Points to a units field with the type UNIT. Uninterpreted byte sequence Time field (HHMMSS), stored as CHAR(6) Long character string (not supported after Release 3.0) Character string of variable length Byte sequence of variable length Unit key for a QUAN field Not elementary types SAP AG 1999 09.04.2021 9 Объекты ABAP-словаря • Структура – набор полей с указанием типов данных, средств поиска и ссылочных таблиц. По своей сути, структура это слепок одной записи таблицы. То есть, таблица физически хранит какие-то данные в базе данных и таких данных может быть много. Структура хранится только в памяти программы и всегда содержит только одну запись данных. 09.04.2021 10 Закладка «Компоненты» 09.04.2021 11 Закладка «Справка / Проверка значений ввода» 09.04.2021 12 Таблицы • Таблица - это плоская структура с первичным ключом и набором значений в БД. 09.04.2021 13 Закладка "Поля" 09.04.2021 14 Элементы данных • Элемент данных – объект словаря данных, представляющий собой пользовательский тип данных, с семантическим описанием объекта. Элемент данных в отличие от домена помимо технических характеристик несёт на себе смысловую нагрузку и привязан к какой-либо предметной области. 09.04.2021 15 Закладка «Тип данных» 09.04.2021 16 Закладка «Дополнительные свойства» 09.04.2021 17 Закладка «Метка поля» 09.04.2021 18 Домены • Домен – объект словаря данных, задающий область допустимых значений, тип данных и формат вывода для поля. Домен описывает данные с технической точки зрения. С помощью домена мы определяем длину поля, тип, свойства вывода, подпрограмму преобразования, диапазон возможных значений. 09.04.2021 19 Закладка «Определение» 09.04.2021 20 Закладка «Диапазон значений» 09.04.2021 21 Как определить тип поля? 09.04.2021 22 Типы данных Предопределённые типы. Предопределённые типы, как следует из названия, изначально предопределены в системе SAP и не поддаются изменению. На их основании строятся более сложные типы данных. К предопределённым типам относятся: I (Integer), P (Point number), F (Floating point number), C (Character), N (Numeric text), D (Date), T (Time), X (Byte), String, XString. Локальные программные типы. Типы данных, объявленные локально в программе. Актуальны только для программы, в которой они объявлены. Строятся на основании предопределённых типов и типов репозитария объектов, а так же на основании ранее объявленных локальных программных типов. Типы репозитария объектов. Типы данных объявленные и хранящиеся в репозитарии системы. Словарь данных - хранилище описаний структуры данных, с которыми работают программы. Группа типов – программа, специального назначения, в которой хранятся объявления типов данных. Группы типов и словарь данных являются частью репозитария объектов. 09.04.2021 23 Типы данных 09.04.2021 24 Иерархия типов данных 09.04.2021 25 Табличные типы Иерархия табличных типов выглядит следующим образом: 09.04.2021 26 Табличные типы 09.04.2021 27 Табличные типы В стандартных таблицах (STANDARD TABLE) нумерация строк (индекс) является внутренней. Существует возможность доступа как по индексу, так и по ключу. Этот тип таблицы следует выбирать в том случае, когда для доступа к внутренней таблице, главным образом, используется индекс. В отсортированных таблицах (SORTED TABLE) записи данных автоматически сортируются в восходящем порядке по ключевым полям. В этом случае индекс также является внутренним. Существует возможность доступа как по индексу, так и по ключу. Этот тип таблицы следует выбирать в том случае, когда для доступа к внутренней таблице, главным образом, используется ключ, или если требуется автоматическая сортировка таблицы по ключу. В хеш-таблицах (HASHED TABLE) для быстрого доступа по ключу используется управление записями данных посредством процедуры хеширования. Ключ должен быть уникальным. В случае хеш-таблиц возможен доступ только по ключу! Этот тип таблицы следует выбирать в том случае, когда внутренняя таблица является чрезвычайно объемной, и используется только доступ по ключу. 09.04.2021 28 ABAP-программа (взгляд пользователя) 09.04.2021 29 Взаимодействие между серверами 09.04.2021 30 Рабочий цикл ABAP-программы (старт программы) 09.04.2021 31 Контекст ABAP-программы 09.04.2021 32 Формирование селекционного экрана 09.04.2021 33 Запуск исполняемого блока 09.04.2021 34 Формирование запроса к БД 09.04.2021 35 Считывание данных из БД 09.04.2021 36 Формирование отчета 09.04.2021 37 ABAP-редактор • ABAP редактор – инструментальная среда для просмотра, создания и редактирования текстов исходных ABAP-программ. • Для запуска ABAP-редактора используется транзакция se38. 09.04.2021 38 Навигатор объектов 09.04.2021 39 Компоненты ABAP-программы Components of an ABAP Program Values in variants Screens xy 007 xz 008 Source code Documentation Text elements INCLUDE mz_test_top. INCLUDE mz_test_i01. INCLUDE mz_test_o01. INCLUDE mz_test_f01. ... PROGRAM sapmz_test_. Interface TYPES: ... DATA: .... ... Hallo Welt! Use ... Hello world! Integration ... ¡Hola mundo! Object Edit Goto Object Edit MODULE s_100 OUTPUT. ... ENDMODULE. MODULE ok_100 INPUT. ... ENDMODULE. Application Help Extras Settings Goto ContinueExtras System Help Environment System Help Continue First line FirstLetzte line Zeile LastZurück line Back Mehr Ziele Erstes Bild FirstLetztes screenBild More Tabellentyp Table Zurück type Back LastErstes screen Feld FirstLetztes field Feld Last field FORM calc using .... Changing . ... ENDFORM. SAP AG 1999 09.04.2021 40 Структура ABAP-программы Structure of a Program Declarations Dialog module Event block Procedure 09.04.2021 PROGRAM sapbc402_rund_test. TYPES: ... DATA: .... CONSTANTS: ... MODULE s_100 OUTPUT. ... ENDMODULE. ... ... INITIALIZATION. ... ... START-OF-SELECTION. ... ... ... ... ... FORM calc USING ... CHANGING ... ... ENDFORM. SAP AG 1999 41 Модуляризация ABAP-программы Program Organization Create Program Program Workbench Edit SAPMZ402_RUND_TEST Goto Extras Environment System Help Object Navigator Object name With TOP include Global declarations PBO modules PAI modules Subroutines SAPMZ402_RUND_TEST Dictionary structures Fields PBO modules PAI modules Subroutines Screens GUI statuses GUI titles Transactions Includes MZ402_RUND_TESTTOP MZ402_RUND_TESTO01 MZ402_RUND_TESTI01 MZ402_RUND_TESTF01 MZ402_RUND_TESTE01 Events SAP AG 1999 09.04.2021 42 События ABAP-программы LOAD-OF-PROGRAM. Обработчик события загрузки программ с типом 1, M, F, или S. Обрабатывает единожды при запуске программы. INITIALIZATION Обработчик события инициализации селекционного экрана. Событие возникает до отрисовки селекционного экрана. В нём, как правило, инициализируют экранные поля. AT SELECTION-SCREEN OUTPUT. Обработчик события отрисовки селекционного экрана. Событие возникает во время вывода селекционных полей на экран. Используется для изменения атрибутов отображения селекционных полей. AT SELECTION-SCREEN Обработчик ввода команды. Событие возникает при нажатии управляющих кнопок на селекционном экране. На момент события селекционный экран остается активным. AT SELECTION-SCREEN ON sel Обработчик ввода значения в поле sel. Событие возникает при введении значения в поле и нажатия «Выполнить» или «Ввод». AT SELECTION-SCREEN ON VALUE REQUEST sel Обработчик вызова СП для поля sel. Событие возникает при клике по кнопке СП или нажатии F4. AT SELECTION-SCREEN ON HELP REQUEST sel Обработчик вызова справки по полю sel. Событие возникает при нажатии F1. START-OF-SELECTION Обработчик выборки данных. Событие возникает после отработки селекционного экрана. Используется для основной выборки данных. END-OF-SELECTION Обработчик конца выборки данных. Событие возникает после выполнения START-OF SELECTION. Обычно используется для вывода данных на экран. 09.04.2021 43 События ABAP-программы 09.04.2021 44 Селекционный экран Селекционным экраном называют начальный экран отчета, на котором располагаются параметры ограничения выборки данных этого отчета. Есть 2 вида элементов селекционного экрана: параметры и диапазоны. Синтаксис объявления параметров выглядит следующим образом: PARAMETERS p [TYPE type [DECIMALS dec]]|[LIKE g|(g)] [DEFAULT f] [NO-DISPLAY] [LOWER CASE] [OBLIGATORY] [AS CHECKBOX] [RADIOBUTTON GROUP radi] [VISIBLE LENGTH vlen] [VALUE CHECK] [USER-COMMAND ucom]. 09.04.2021 45 Селекционный экран параметры (пример) *Параметр 10 значное число со знаком, 3 знака после запятой, * с начальныйм значением ‘3.1415′ PARAMETERS P_NUM(10) TYPE P DECIMALS 3 DEFAULT ‘3.1415′. *Параметр для поля ANLA-ANLN1 PARAMETERS P_ANLN1 LIKE ANLA-ANLN1. *Строка длиной 50 символов с видимой длиной 25 символов PARAMETERS P_CHAR1(50) TYPE C VISIBLE LENGTH 25. *Строка длиной 50 символов без преобразовани к верхнему регистру PARAMETERS P_CHAR2(50) TYPE C LOWER CASE. *Чекбокс PARAMETERS P_FLAG TYPE FLAG AS CHECKBOX. *Обязательный параметра для поля ANLA-BUKRS с проверкой значения PARAMETERS P_BUKRS LIKE ANLA-BUKRS VALUE CHECK OBLIGATORY. *Группа переключателей с командой RGR1 PARAMETERS: P_RB1 RADIOBUTTON GROUP RBGR USER-COMMAND RGR1, P_RB2 RADIOBUTTON GROUP RBGR, P_RB3 RADIOBUTTON GROUP RBGR. 09.04.2021 46 Диапазоны (select-options) Диапазоны на селекционном экране полностью аналогичны таблицам диапазона. Синтаксис объявления параметров выглядит следующим образом: SELECT-OPTIONS sel FOR f|(f) [DEFAULT g [TO h] [OPTION xx SIGN s]] [NO-DISPLAY] [LOWER CASE] [OBLIGATORY] [NO-EXTENSION] [NO INTERVALS] [VISIBLE LENGTH vlen]. 09.04.2021 47 Селекционный экран диапазоны (пример) *Диапазон для ANLA-BUKRS SELECT-OPTIONS R_BUKRS FOR ANLA-BUKRS. *Диапазон для ANLA-ANLN1 с начальными значениями SELECT-OPTIONS R_ANLN1 FOR ANLA-ANLN1 DEFAULT ‘1*’ TO ‘2*’ OPTION BT SIGN E. *Диапазон для ANLA-ANLN2 без расширения SELECT-OPTIONS R_ANLN2 FOR ANLA-ANLN2 NO-EXTENSION. *Диапазон для ANLA-ANLN2 без интервалов SELECT-OPTIONS R_ANLKL FOR ANLA-ANLKL NO INTERVALS. 09.04.2021 48 Подпрограммы (perform) FORM form [TABLES itab1 ... itabn] [USING [VALUE(p1)| p1] … [VALUE(pn) |pn]] [CHANGING [VALUE(p1)| p1] … [VALUE(pn) |pn]]. ENDFORM. Вместо дополнения TABLES, по возможности используйте дополнения USING или CHANGING. В дополнении TABLES вы можете использовать только таблицы типа STANDARD. Описанный в дополнении TABLES формальный параметр всегда имеет строку заголовка, даже если фактический параметр при вызове подпрограммы его не имеет. Параметр описанный в дополнении TABLES всегда является параметром-ссылкой. В дополнениях USING и CHANGING по умолчанию все параметры имеют тип параметрссылка. Для указания параметра-значения, имя параметра нужно заключить в «скобки» VALUE(). Обратите внимание на то, что скобки не отделяются от имени параметра пробелами. 09.04.2021 49 Включения (includes) Для обеспечения модульности при разработке программы на ABAP предусмотрены включения (includes). В общем случае включение выглядит следующим образом: INCLUDE prog. Где prog это имя включаемой программы. При компиляции программы весь исходный код из prog добавляется в головную программу непосредственно в строку где указано включение. Это позволяет делить исходный код программы на логические блоки, что ускоряет кодирование и отладку, и делает участки кода доступными в нескольких программах одновременно. Разновидностью включения является включение пула типов: TYPE-POOLS tpool. Тип пулов фактически является аналогом включения программного кода, с той лишь разницей, что включаются не исполняемый код, а определения типа. Создание пула типов преследует ту же цель что и модульная разработка программы - дать возможность использовать определения типов в нескольких программах. 09.04.2021 50 Текстовые элементы 09.04.2021 51 Экранный вывод Интерфейсы взаимодействия с пользователем Экраны используются, для отображения данных и организации взаимодействия с пользователем. В SAP различают три, принципиально отличающихся друг от друга, вида экранов: Селекционный экран (screen 1000) 09.04.2021 52 Экранный вывод Диалоговый экран (screen n) 09.04.2021 53 Экранный вывод ABAP-List (screen 120) 09.04.2021 54 Экранный вывод В отличии от экранов, которые содержат в себе такие элементы как входные/выходные поля, кнопки, и создаются при помощи специального средства – редактора экранов, ABAP-List формируется посредством ABAPкода, при помощи операторов WRITE, ULINE и SKIP. ABAP-лист формируется интерпретатором на сервере приложений и хранится в памяти сервера. Переход на презентационный уровень происходит по событию LEAVE TO LIST-PROCESSING, или автоматически после выполнения последнего блока программы. Для отображения ABAP-List, вызывается специальный обработчик, который формирует экран под номером 120 и размещает на нём содержимое ABAP-списка. Таким образом, ABAP-List это экран, формирующийся динамически посредством ABAP-кода. 09.04.2021 55 Экранный вывод (Оператор WRITE) Для простейшего вывода информации на пользовательский экран в ABAP используется оператор WRITE. Данный оператор имеет следующий синтаксис: … YYMMDD WRITE [</><pos><col>] <f> [<fmt_opt>]. … ROUND r Где <fmt_opt> это опция форматирования выводимых данных: … UNIT u … NO-ZERO … NO-SIGN … NO GROUPING … DD/MM/YY … MM/DD/YY … DD/MM/YYYY … MM/DD/YYYY … DDMMYY … CURRENCY w … DECIMALS d … TIME ZONE tz … EXPONENT e … NO-GAP (only with WRITE) … LEFT-JUSTIFIED … CENTERED … RIGHT-JUSTIFIED Операнд <f> может быть текстовой строкой или переменной программы. Сформировавшийся экран можно тут же распечатать, посредством нажатия на клавишу «Печать». … MMDDYY 09.04.2021 56 Основные конструкции ABAP Операторы сравнения, булевы операторы 09.04.2021 57 Основные конструкции ABAP Арифметические операции 09.04.2021 58 Основные конструкции ABAP Операции над датами 09.04.2021 59 Основные конструкции ABAP Операции над строками. Длинна и смещение. 09.04.2021 60 Основные конструкции ABAP Операции над строками. Модификация. 09.04.2021 61 Основные конструкции ABAP Разделение, соединение строк. 09.04.2021 62 Основные конструкции ABAP Сравнение строк №1 Оператор Описание CO с1 содержит только символы из c2 CN с1 содержит только символы не содержащиеся в c2 CA с1 содержит хотя бы один символ из c2 NA с1 не содержит ни одного символа из c2 09.04.2021 Пример ‘ABCDE’ CO ‘XYZ’ is false; ‘ABCDE’ CO ‘AB’ is false; ‘ABCDE’ CO ‘ABCDE’ is true; SY-FDPOS = 0. SY-FDPOS = 2. SY-FDPOS = 5. ‘ABCDE’ CA ‘CY’ is true; SY-FDPOS = 2. ‘ABCDE’ CA ‘XY’ is false; SY-FDPOS = 5. 63 Основные конструкции ABAP Сравнение строк №2 Оператор Описание CS с1 содержит подстроку c2 NS с1 не содержит подстроки c2 CP вся строка с1 соответствует шаблону c2 NP с1 не соответствует шаблону c2 09.04.2021 Пример ‘ABCDE’ CS ‘CD’ is true; SY-FDPOS = 2. ‘ABCDE’ CS ‘XY’ is false; SY-FDPOS = 5. ‘ABAAA’ CS ‘AB ’ is true; SY-FDPOS = 0. ‘ ABC’ CS ‘ AB’ is true; SY-FDPOS = 1. ‘ABC DEF’ CS ‘ ’ is true; but: SY-FDPOS = 0, ‘ABCDE’ ‘ABCDE’ ‘ABCDE’ ‘ABCDE’ ‘ABCDE’ CP CP CP CP CP ‘*CD*’ is true; SY-FDPOS = 2. ‘*CD’ is false; SY-FDPOS = 5. ‘++CD+’ is true; SY-FDPOS = 0. ‘+CD*’ is false; SY-FDPOS = 5. ‘*B*D*’ is true; SY-FDPOS = 1. 64 Основные конструкции ABAP Циклы. 09.04.2021 65 Основные конструкции ABAP Условия, переходы. 09.04.2021 66 Спасибо за внимание! Контактная информация 410015, г. Саратов, ул. Фабричная, д. 1 Тел.: +7 (8452) 47-09-14, 4402 E-mail: aaariskin@sibintek.ru 09.04.2021