язык программирования abap что это

Введение в ABAP

Так как статей об ABAP’е на хабре совсем мало, а статьи вида «Hello, World!» совсем нету, решил немного написать об этом. Если вам интересно узнать про этот язык или же подумываете заниматься разработкой на ABAP’е, то добро пожаловать под кат.

ABAP (Advanced Business Application Programming) – внутренний язык высокого уровня программирования в среде SAP. Углубляться в историю особенно не хочется, но отмечу лишь, что язык синтаксис языка наиболее близок к языку программирования COBOL.

Язык позволяет работать с внутренними структурами данных, интерфейсами пользователя, транзакциями, отчётами, интерфейсами загрузки, выгрузки данных (word, excel, pdf, …); стоит отметить, что можно использовать объектно-ориентированные конструкции (ABAP Objects); существует множество технологий связи с другими системами (BAPI, RFC, …) для выгрузки и загрузки данных (или же сторонней обработки).

Типизация

Переменные в ABAP обычно объявляются с помощью конструкции DATA.

Хочется обратить внимание, что операторы в коде начинаются с зарезервированных слов и заканчиваются точкой.

Можно сокращать объявление нескольких переменных через запятую и используя символ двоеточия:

Внутри программы можно использовать типы, заложенные в ABAP-словаре, а так же создавать собственные типы и структуры, используя конструкцию TYPES.

Пример со структурой:

В динамическом программировании принято использовать поля типа FIELD SYMBOLS (аналог указателя):

Таблицы можно объявлять как из словаря ABAP, так же и из своих внутренних типов структур:

Среда разработки

ABAP имеет свою собственную среду разработки, которая называется ABAP Workbench, имеющую отладчик, средства трассировки, систему контроля версий, средства работы с буфером, журналы использования, и так далее.
В 2012 году разработчики интегрировали ABAP со всем известной IDE Eclipse. Правда работает это на последних версиях ядра, что есть не на всех проектах.

Предисловие перед «Hello, World»

На самом деле не хочу, чтобы статья была длинной. Вкратце напишу, что ABAP поддерживает работу со всеми арифметическими, строковыми операциями, имеет стандартный набор операторов условий, циклов, обработку исключений, имеет множество технологиями отчетности, поддерживает работу с базой данных (OPEN SQL) и так далее.

В абапе существуют подпрограммы, функциональные модули, макросы, работа с вебом (Web Dynpro, BSP), выгрузка данных в word, excel (посредством OLE), пользовательские интерфейсы, диалоги и так далее. Существует даже несколько сертификаций разработчиков. Об этом всем постараюсь рассказать в следующих постах.

Hello, World!

Итак, если же вам посчастливилось получить доступ к системе разработки SAP или же вы нашли виртуальную машину, на всем любимом русском трекере по запросу «mini sap on vmware (abap)», то дальше я покажу как создать свою программу.

Первым делом заходим в систему SAP (через SAP GUI):

Далее в окошке вводим транзакцию se38:

В соответствии с именованием пользовательский программ (начиная с Z), вводим название своей программы:

и нажимаем кнопку создать. Далее вводим заголовок программы, выбираем тип и нажимаем сохранить.

Далее мы попадаем в окно ABAP-редактора. Вводим код нашей программы:

Активируем программу:

И запускаем:

Результат:

Заключение

В этой статье я написал немного про ABAP, его синтаксис ну и, конечно же, программку Hello, World!
В следующих статьях планирую описать арифметические, строковые операции, работу с базой данных и познакомить с построением отчетности в ABAP с конкретными примерами и мануалами. Ну, а дальше как пойдет.

Источник

Хочу всё знать. Язык ABAP

Краткая справка

ABAP/4 – проприетарный (т.е. не распространяющийся свободно) язык программирования высокого уровня, разработанный немецкой софтверной компанией SAP и предназначенный исключительно для работы с выпускаемым ей ПО. В январском рейтинге популярности языков ABAP/4 занимает 22 место прямо перед Scratch.

Он был разработан в 1983 году для работы с внутренней системой SAP R/2. Цифра 4, которая присутствует в названии, не имеет практического смысла и лишь указывает, что язык относится к 4 поколению. SAP R/2 – это система управления предприятием, предполагающая стандартную связь между клиентской базой и сервером. Позднее была заменена трёхзвенной системой R/3 – клиент, сервер приложений и система управления базами данных.

Синтаксис

Во многих источниках вы можете найти замечание про схожесть синтаксиса ABAP с COBOL. Однако не стоит принимать это за чистую монету, схожесть касается исключительно внешнего вида, в то время как структура и возможности совсем разные. Сравните базовый код любого программиста “Hello World”:

WRITE / ‘Hello World’.

DISPLAY «Hello, world.».

END PROGRAM HELLO-WORLD.

Согласитесь, не так уж много общего. ABAP значительно удобнее, понятнее для программистов, работающих на популярных языках

Область применения

Работа

Если ABAP не является языком, вечно мелькающим в списке требований работодателей, если его не изучают в университетах, то это совсем не означает, что он не востребован. ABAP имеет свою аудиторию, эко-систему, поэтому требует от соискателей осознанного выбора будущей деятельности. Прямо сейчас на популярном рекрутинговом ресурсе вы можете найти свыше 100 вакансий, причём среди них есть те, где знание продуктов компании SAP и опыт работы с ABAP – едва ли не единственное требование.

Полезные ссылки

ABAP Community – официальное сообщество разработчиков;

ABAP-blog – один из немногих очень качественных и визуально приятных отечественных ресурсов, где можно почитать про программирование на ABAP;

Викиучебник – основы на русском языке;

Habrahabr SAP ERP ABAP – дополнительный набор справочных ресурсов по ABAP и всему, что его касается;

Habrahabr Course Guide – путеводитель по онлайн-курсам ABAP.

Книги

Мы продолжаем говорить о не самых популярных языках программирования, заслуживающих тем не менее внимания настоящих гиков. В этот раз речь пойдёт о языке ABAP/4 или просто ABAP. О том, что эта самая четвёрка в названии означает, зачем нужен этот язык, а главное где и как ему обучиться – далее.

Краткая справка

ABAP/4 – проприетарный (т.е. не распространяющийся свободно) язык программирования высокого уровня, разработанный немецкой софтверной компанией SAP и предназначенный исключительно для работы с выпускаемым ей ПО. В январском рейтинге популярности языков ABAP/4 занимает 22 место прямо перед Scratch.

Он был разработан в 1983 году для работы с внутренней системой SAP R/2. Цифра 4, которая присутствует в названии, не имеет практического смысла и лишь указывает, что язык относится к 4 поколению. SAP R/2 – это система управления предприятием, предполагающая стандартную связь между клиентской базой и сервером. Позднее была заменена трёхзвенной системой R/3 – клиент, сервер приложений и система управления базами данных.

Синтаксис

Во многих источниках вы можете найти замечание про схожесть синтаксиса ABAP с COBOL. Однако не стоит принимать это за чистую монету, схожесть касается исключительно внешнего вида, в то время как структура и возможности совсем разные. Сравните базовый код любого программиста “Hello World”:

WRITE / ‘Hello World’.

DISPLAY «Hello, world.».

END PROGRAM HELLO-WORLD.

Согласитесь, не так уж много общего. ABAP значительно удобнее, понятнее для программистов, работающих на популярных языках

Область применения

Работа

Если ABAP не является языком, вечно мелькающим в списке требований работодателей, если его не изучают в университетах, то это совсем не означает, что он не востребован. ABAP имеет свою аудиторию, эко-систему, поэтому требует от соискателей осознанного выбора будущей деятельности. Прямо сейчас на популярном рекрутинговом ресурсе вы можете найти свыше 100 вакансий, причём среди них есть те, где знание продуктов компании SAP и опыт работы с ABAP – едва ли не единственное требование.

Полезные ссылки

ABAP Community – официальное сообщество разработчиков;

ABAP-blog – один из немногих очень качественных и визуально приятных отечественных ресурсов, где можно почитать про программирование на ABAP;

Викиучебник – основы на русском языке;

Habrahabr SAP ERP ABAP – дополнительный набор справочных ресурсов по ABAP и всему, что его касается;

Habrahabr Course Guide – путеводитель по онлайн-курсам ABAP.

Книги

Источник

Кто такой ABAP-разработчик и почему стоит выбрать это «нишевое» направление

В мире существует множество языков программирования. Одни из них очень популярны и в каком-то смысле стали брендами, о которых знают даже люди, чья работа не связана с IT. К ним можно отнести JavaScript, Java, Python, PHP и иные.

Другие языки малоизвестны, но при этом на них написаны решения, которые служат фундаментом для всемирно известных компаний и мировой экономики в целом. Один из таких языков — ABAP.

Алексей Яременко, директор украинского офиса LeverX Group, свою карьеру в IT начинал, как и многие, с позиции разработчика. В 2012 году перед ним стоял перед выбором: какой язык программирования выбрать? Знакомый посоветовал Алексею пойти на курс по ABAP в LeverX Group. До этого он ничего не слышал об ABAP. Но после поиска информации в интернете Алексей решил, что нужно идти.

Сейчас, спустя почти 10 лет, Алексей рассказывает, почему стоит изучать «нишевые» языки программирования.

ABAP (аббревиатура от Advanced Business Application Programming) — это проприетарный высокоуровневый язык программирования, который был создан компанией SAP еще в начале 80-х и является основным языком разработки «классических» продуктов SAP. O SAP тоже многие могли не слышать. SAP — немецкая компания, лидер на рынке производства программного обеспечения для управления бизнесом и автоматизации бизнес-процессов. Капитализация SAP на данный момент составляет примерно 148 миллиардов евро, а количество сотрудников превышает 103 тысячи человек.

В какой-то степени продукты компании уже стали стандартом благодаря отличной интеграции со сторонними системами, расширяемости и кастомизации стандартных решений.

Решениями SAP сегодня пользуются Apple, Amazon, IBM, Walmart и другие, в том числе многие крупнейшие компании Украины, которые уже автоматизировали бизнес-процессы.

SAP приводит вот такую короткую справку о своих клиентах:

Больше информации о компании можно найти на официальном сайте.

Кто же такие ABAP-разработчики, чем они занимаются и какие у них есть перспективы?

За почти 50 лет в портфеле SAP набралось более 300 продуктов для любой сферы и вида бизнеса. Используются различные технологии как «классические», так и самые передовые: AI, Machine Learning, Predictive Analytics, IoT, Blockchain и другие. Самый главный продукт SAP — ERP-система, последнее поколение которой называется S/4HANA.

Такие продукты являются стандартными решениями, которые легко автоматизируют и оптимизируют рутинные бизнес-процессы. Зачастую у разных клиентов, которые занимаются одним и тем же бизнесом, процессы сильно отличаются. Нужна кастомизация, которой занимаются ABAP-разработчики.

Подавляющее большинство продуктов SAP написаны на ABAP, поэтому он используется для расширения их функционала. Под расширением можно понимать как дополнение стандартного функционала или изменение стандартной логики, так и написание новых решений, которые будут выполняться на сервере приложений SAP (у SAP есть своя платформа SAP NetWeaver, все приложения выполняются на сервере).

Если говорить о классическом ABAP, то взаимодействие пользователей и разработчиков с системой происходит через Web-браузер, специализированные клиентские приложения (SAP GUI и NetWeaver Business Client) или через более известную многим IDE Eclipse. Вести разработку можно через SAP GUI и Eclipse.

А вот как выглядит редактор кода в ABAP Workbench (транзакция для работы с объектами):

ABAP постоянно развивается, в нем есть атрибуты современных языков программирования, а некоторые моменты реализованы даже удобнее, например работа с таблицами.

Задачи, которые решают ABAP-разработчики, очень разные: от простой обработки данных для аналитики до сложных интеграций с различными сервисами. В принципе на ABAP можно написать что угодно, даже игры, но все же назначение у языка другое — решение задач реального бизнеса.

Зарплаты ABAP-разработчиков часто выше зарплат в других «мейнстримовых» языках (к сожалению, зарплатная статистика на DOU не набрала достаточного количества анкет по ABAP, но если посмотреть на Glassdoor и Indeed, то зарплаты ABAP выше, чем во многих других популярных направлениях). Тому есть две причины:

Начать писать код на ABAP легче, чем на других языках программирования. Это позволяет быстрее получить необходимые навыки для работы на проектах.

Дело в том, что система SAP является открытой и разработчик всегда имеет доступ к коду, чтобы посмотреть, как реализованы те или иные функции. Часто задачи на разных проектах схожи, поэтому многое уже написано до вас. Это значительно облегчает разработку.

Клиенты SAP — мировые лидеры, которые стараются внедрять инновационные решения, чтобы увеличить прибыльность своего бизнеса, совершенствуя процессы. На таких проектах, как правило, много различных систем и технологий взаимодействуют друг с другом, что позволяет разработчикам получить новый и интересный опыт. Часто заказчики хотят видеть команду у себя онсайт. Это открывает прекрасную возможность побывать в разных странах и расширить кругозор.

ABAP-разработчики крайне востребованы в развитых странах (Германия, США, Канада и другие). ABAP-специалистов не хватает на IT-рынке, и компании активно привлекают их, не ограничивая офферы географией.

Из недостатков могу выделить только то, что вы как специалист привязываетесь к экосистеме SAP, к определенному комьюнити и корпоративному рынку. Похожее есть и в других областях, например разработчики мобильных приложений очень зависят от экосистем Apple и Google, но мобильному разработчику запустить свой стартап проще, поскольку его клиенты — обычные люди, у каждого из которых есть мобильное устройство, а для разработки нужен только компьютер. С ABAP такой сценарий реализовать сложнее.

Каждый ABAP-разработчик может развивать свою карьеру в следующих направлениях:

Я отметил SAP Developer, а не ABAP Developer, намеренно. Продукты SAP постоянно развиваются, в них появляются новые технологии (AI, ML, Predictive Analytics, IoT), облачные решения, библиотеки и другое. Большое количество продуктов SAP сейчас разрабатываются как Web-приложения. Бэкенд, как правило, пишется на ABAP (но бывают и разработки на Java и Node.js), а фронтенд разрабатывают с использованием фреймворка SAPUI5 (фактически это собственная JavaScript-библиотека пользовательского интерфейса, разработанная и поддерживаемая SAP). Такое «соседство» различных стеков и технологий открывает свободу выбора для освоения новых навыков и наращивания своей экспертизы.

Как я уже говорил, ABAP-разработчики решают задачи бизнеса, поэтому часто погружаются в бизнес-процессы. Огромные возможности продуктов SAP делают их достаточно сложными, они требуют настройки, а также обучения пользователей. Поэтому в мире SAP есть еще одна очень популярная роль — SAP-консультант.

SAP-консультанты должны прекрасно понимать как бизнес-часть, так и продукт SAP, поэтому часто они специализируются на одном из модулей. Чтобы быть консультантом, нужно обладать отличными коммуникационными навыками, любить работать с документацией. Также этим специалистам приходится проводить огромное количество настроек и тестов.

Вы можете стать Solution и Enterprise Architect, если вам нравится решать задачи на высоком уровне и у вас есть большой опыт реализации проектов. Архитекторы разрабатывают архитектуру решений в рамках конкретного модуля или продукта, выстраивают целую IT-инфраструктуру из большого количества систем.

openSAP — бесплатные курсы компании SAP дают общее понимание той или иной темы.

SAP Training — профессиональные курсы компании SAP. Стоят дорого, как правило, их оплачивают компании. По результатам выдаются сертификаты, которые очень котируются на IT-рынке.

SAP ABAP Programming — курсы LeverX Group. Мы более восьми лет проводим бесплатные образовательные курсы, где обучаем всему, что нужно для разработки на ABAP и решения задач, которые встречаются на реальных проектах. Курс длится полтора месяца, и по его итогам мы приглашаем лучших выпускников присоединиться к команде.

Источник

Обзор языка ABAP/4 системы SAP R/3

Основные возможности языка ABAP/4

Функции объектно-ориентированного программирования включают в себя поддержку:

Структура и виды программ, среда разработки

В среде разработки ABAP/4 также поддерживаются следующие механизмы:

Прикладные программы R/3 в системе R/3 выполняются в рабочих процессах серверов приложений. Это делает их независимыми от использующихся аппаратных средств и операционной системы. Однако, это также означает, что Вы не можете выполнять их вне системы R/3.
Прикладная программа в системе R/3 состоит из двух компонентов, каждый из которых имеет различную задачу:

Логика ДинПро
Взаимодействие между прикладными программами и пользователем осуществляется с помощью экранов. Экраны обрабатываются процессором экрана выполняющегося в контексте рабочего процесса. Помимо шаблона входных данных, они состоят из последовательности вызовов экранов. Данная логика выполнения называется логикой динпро. В процессе выполнения программы, экраны реагируют на пользовательские действия и вызывают модули программы обработки данных. Эти модули программы и формируют логику обработки.

К блокам обработки относятся:
Диалоговые модули (не могут иметь локальных данных)
Модули обработки событий
Подпрограммы (методы классов, формы, и функциональные модули)
Другие интерфейсы
SAP GUI
Логика ДинПро
(экраны)
Логика обработки данных (ABAP программы)
Интерфейс БД
Рабочий процесс

Рисунок SEQ Рисунок \* ARABIC 2. Взаимодействие компонентов SAP R/3
Каждая ABAP программа состоит из следующих двух частей:
Объявления глобальных данных, классов и экранов выбора
Глобальные данные видимы во всех внутренних блоках обработки, как и определения параметров экранов выбора. Объявления внутри диалоговых модулей являются глобальными. Объявления внутри подпрограмм, функциональных модулей и методов являются локальными.
Реализация блоков обработки
Принимая во внимание то, что тело модуля диалога или подпрограммы заключены между ключевыми словами ABAP, которые их определяют, блоки обработки событий начинаются ключевыми словами событий и заканчиваются неявно в месте начала следующего блока обработки.
Все операторы языка ABAP (кроме декларативных) являются частью блоков обработки. Операторы, не заключенные в блоки обработки по умолчанию принадлежат к блоку обработки события START-OF-SELECTION.
Вызов блоков обработки может производиться либо извне ABAP программы (ABAP процессором или процессором экрана) либо операторами ABAP, которые сами являются частью блока обработки (вызов подпрограмм). Диалоговые модули и модули обработки событий вызываются неявно ABAP процессором.
Среда выполнения
Экран
SAP GUI
Процессор
Процессор
Процессор
Логика Динпро
ABAP программа
Логика PBO
Логика PAI

Глобальные объявления
Блок обработки
Блок обработки
Блок обработки

Концепция синтаксиса языка ABAP/4

ABAP программа состоит из набора операторов, каждый из которых начинается с ключевого слова и заканчивается точкой.
Пример:

Структура операторов такова:

ABAP не имеет ограничений по форматированию текста программы. Можно писать операторы в одну строку, или в несколько, также один оператор можно размещать на нескольких строках.
Необходимо разделять все операторы хотя бы одним пробелом.
Пример:
Вариант 1.

Возможна краткая запись нескольких одинаковых операторов с указанием одного оператора, двоеточия в. в?T и цепочки операндов с дополнениями.
Пример:

Комментарии в программах можно описывать с помощью символов в?? * в. в?? » в??
Пример:

Определение данных в языке ABAP/4

Элементарные типы данных

ABAP/4 обеспечивает набор элементарных типов, таких как символьный, целый и дата и поддерживает 2 концепции конструирования (с помощью записей и внутренних таблиц), которые помогают строить сложные типы и объекты данных.
Можно также создавать неэлементарные типы и структуры данных и хранить их определения в словаре ABAP/4 Dictionary, чтобы впоследствии использовать их во всех компонентах системы.
Элементарные типы используются в ABAP/ 4 так же, как и в других языках.
В ABAP/4 используются следующие элементарные типы:
Characters. Поддерживаются два символьных типа:
С (собственно символьный) и N (текст, состоящий из цифр).
Numbers. Поддерживается три цифровых типа:
I (целые числа), P (упакованные числа) и F (числа с плавающей запятой).
Date. Поддерживается один тип даты:
D (дата).
Time. Поддерживается один тип для задания времени:
T (время).
Hexadecimal.
Поддерживается один шестнадцатеричный тип: X (шестнадцатеричный).
Каждое поле определяется с помощью ключевого слова DATA и ссылки на элементарный тип.
Пример:

Длина поля определяется числом в круглых скобках, которое следует после имени поля. Если размер поля в операторе data не задан, ABAP/4 использует значение размера поля по умолчанию. Ключевое слово value позволяет задать начальное значение переменной counter.
Каждый элементарный тип обладает своим значением по умолчанию, которое применяется в тех случаях, когда до выполнения программы не было задано начальное значение переменной.
Аналогично полям задаются неэлементарные типы. Понятие тип (TYPE) не связано с выделением памяти, а для полей, описанных как DATA, память всегда выделяется.
Пример:

Для всех типов в качестве значений можно задавать константы:
Пример:

Поля для задания времени имеют фиксированную длину 6 и формат HHMMSS (часы, минуты, секунды).

Сложные типы

После того как структура определена, можно работать и с отдельными компонентами и со всей структурой.
Пример:

В приведенном примере дополнительное ключевое слово LIKE определяет структуру vendor, имеющую такой же формат, как и структура customer.
В отличие от таблиц базы данных, внутренние таблицы существуют только во время выполнения программы. Они используются в качестве моментальных снимков таблиц базы данных или контейнеров для временного хранения данных в программе. Внутренние таблицы могут содержать любое количество строк или элементов одинакового типа.

Внутренние таблицы можно определять с помощью ключевого слова OCCURS, за которым следует число, определяющее верхний предел числа строк в таблице. Однако параметр числа строк OCCURS влияет исключительно на производительность и не накладывает никаких ограничений на максимальный размер внутренней таблицы. ABAP/4 автоматически выделяет новую область памяти при добавлении строк к таблице.
Как и для структуры, тип строки внутренней таблицы может быть задан с помощью ссылки на элементарный и неэлементарный тип. В следующем примере определяется неэлементарный тип personal_data:
Пример:

Этот тип можно использовать для определения внутренней таблицы people, каждая строка которой имеет тот же тип.
Пример:
DATA people TYPE personal_data OCCURS 100.
Многие операции с таблицами (такие, как добавление новой строки) требуют дополнительной записи для размещения новой информации. Используя дополнительные ключевые слова HEADER LINE в операторе DATA, при построении таблицы можно добавлять к ней объект данных того же типа. Этот объект HEADER LINE называется строкой заголовка и используется по умолчанию как запись для хранения текущей, добавляемой к таблице, записи.
Поля и типы могут иметь ссылки на элементарные типы или на объекты Dictionary.
Разработчик может начинать с элементарных типов и полей, а затем, применяя в любом порядке описанные выше правила, строить вложенные структуры записей и таблиц.
Пример:

После определения объектов данных в операторе data, их можно использовать в любом месте программы. Обычно определение данных размещается в начале программы. Большие программы часто имеют файл типа INCLUDE, содержащий список с определениями всех данных. Данные программы доступны в любой подпрограмме и их разрешено переопределять в подпрограмме. Локальные объекты данных в подпрограмме являются приоритетными по сравнению с глобальными переменными, имеющими идентичные имена. Переменные программы для всех других программ недоступны. Их можно добавить в файл INCLUDE, который содержит определения данных других программ, а также определить их как глобальные переменные в словаре Dictionary,автоматически доступном для всех программ ABAP/4.
ABAP/4 поддерживает несколько системных полей, доступных любой программе, написанной на ABAP/4. Системные поля принадлежат к структуре Dictionary c именем SYST и содержат общую информацию о состоянии системы и объектах программы в данный момент времени. Например, в поле sy-datum cодержится текущая дата. Значения многих системных полей устанавливается во время выполнения программы после определённых операций. Taк, при выполнении цикла в поле SY-TABIX находится номер текущей строки внутренней таблицы.

Операторы языка ABAP/4

Если исходный и конечный объекты данных относятся к одному и тому же типу (например, к внутренней таблице), в операторе MOVE их содержимое копируется за одну операцию.
Команда MOVE-CORRESPONDING копирует из одной записи в другую компоненты с одинаковыми именами. Поля с одинаковыми именами копируются независимо от их позиции внутри записи.
ОПЕРАЦИИ С СИМВОЛЬНЫМИ СТРОКАМИ.
Символьные строки объединяются с помощью команды CONCATENATE.
Пример:

Обратная операция разделения символьной строки осуществляется для произвольно выбранного разделителя.
Пример:

Если одно из полей, в которое записывается результат, имеет недостаточную длину, все компоненты усекаются, и переменная sy-subrc получает ненулевое значение. Если число компонентов больше числа целевых полей, то информация теряется. В качестве целевого объекта можно использовать внутреннюю таблицу.
Пример:

Сдвинуть символьную строку можно командой SHIFT.
Пример:

Для замены определённых символов в строке используется оператор REPLACE, который замещает первую встретившуюся подстроку внутри строки.
Пример:

Для замены всех символов в. в?T на в. в?T используется команда TRANSLATE.
Пример:

Поиск символьных строк в полях или внутренних таблицах осуществляется по команде SEARCH. Системное поле sy-fdpos содержит сдвиг найденной строки относительно начала.
Пример:

РАБОТА С ВНУТРЕННИМИ ТАБЛИЦАМИ

Создание подпрограмм и функциональных модулей

ПОДПРОГРАММЫ И ФУНКЦИИ

ABAP/4 предлагает три типа модулей:
cобытия;
подпрограммы;
функции.
Формы (подпрограммы) в?» программные модули, локализованные в конкретной программе.
Функции в?» глобальные программные компоненты, которые могут вызываться из разных программ.
ПОДПРОГРАММЫ
Поскольку формы являются внутренними модулями, они имеют доступ к глобальным данным вызывающей программы. Функции вызываются из различных программ, поэтому к ним применяются более жёсткие интерфейсные правила, позволяющие изменять только их параметры и локальные данные. Формы языка ABAP/4 не возвращают значений.
Форма или подпрограмма определяется парой операторов FORM/ENDFORM и вызывается из основной программы с помощью оператора PERFORM.
При необходимости объединить и локализовать данные, принадлежащие только этой подпрограмме, следует определить эту локальную переменную внутри формы обычным образом, c помощью ключевого слова DATA.
Применение локальных переменных улучшают читабельность исходных текстов. Напротив, работа с глобальными данными в подпрограмме может привести к ошибкам и затруднённому анализу текста программ.
Статические переменные STATICS применяются, когда необходимо сохранить содержимое локального объекта данных от однго вызова подпрограммы до другого, (то есть внутри неё).
Возвращаемая из формы информация передаётся с помощью параметров интерфейса.
Иногда для выполнения подпрограммы необходимо передать туда параметры, которым при каждом вызове присваиваются необходимые фактические значения.
В ABAP/4 поддерживаются различные способы передачи параметров. Параметры интерфейса бывают 2-х типов:
только для чтения (USING);
изменяемые (CHANGING).
По способам передачи их можно классифицировать так:
передаваемые по значению (BY VALUE)
передаваемые по ссылке (BY REFERENCE)
Параметры, описанные как using, не могут изменяться внутри формы, однако при выполнении программы различий между определениями USING и CHANGING нет. Чтобы облегчить чтение программы, рекомендуется по-разному обозначать входные (USING) и выходные (CHANGING) параметры, передаваемые по ссылке.
Дополнение TABLES itab1, itab2, в?¦ позволяет передавать в подпрограмму внутренние таблицы. Они могут передаваться со строкой заголовка (HEADER LINE) или без. Если внутренняя таблица передаётся без header line, то после имени внутренней таблицы должны стоять []: itab[]. Параметры таблицы всегда передаются по ссылке.
Подпрограммы можно также вызывать из других программ. Например:
PERFORM FORM IN PROGRAM PROG [IF FOUND].
ФУНКЦИИ
В отличие от подпрограмм функции обычно применяются во множестве различных программ, и поэтому данные в функции могут изменяться только через её интерфейс. Аргументы функции определяются с помощью имён, а не по их расположению в списке параметров, как в подпрограмме. Кроме того, функции обеспечивают удобную обработку исключений.
Функции определяются парой операторов в?» FUNCTION и ENDFUNCTION и вызывается с помощью оператора CALL FUNCTION. Имя функции записывается прописными буквами.
Функциональная группа представляет собой контейнер, включающий одну или несколько связанных между собой функций. В частности, все функции в функциональной группе, используют одни и те же формы, которые определены в этой группе. Кроме того совместно используемые подпрограммы и функции в функциональной группе могут обращаться к общим глобальным данным группы.
C точки зрения техники программирования функциональная группа представляет собой программу, состоящую из нескольких файлов типа INCLUDE, каждый из которых соответствует отдельной функции. Когда при выполнении программы вызывается одна из функций, вся функциональная группа загружается в память и функция выполняется. После этого функциональная группа остаётся в памяти, то есть она повторно не загружается головной программой текущего процесса при вызове другой функции группы.
ИНТЕРФЕЙСНЫЕ ПАРАМЕТРЫ
Формальные параметры функции подразделяются на импортируемые, экспортируемые и изменяемые. В операторе CALL FUNCTION описание формальных параметров располагается слева от знака =, а фактических в?» справа. Фактические параметры идентифицируются по имени формальных. Значение дополнения IMPORTING и EXPORTING зависит от того, где они употребляются: в вызывающей или в вызываемой функции.
Передача параметров по значению и по ссылке синтаксически различается по дополнениям VALUE(P) и REFERENCE(P).
Для любого параметра можно задать тип, указав ссылку на структуру или на поле в Dictionary, или применить прямую ссылку на тип.
Импортируемые и изменяемые параметры могут быть отнесены к разряду необязательных.
В интерфейсе функции разрешено использовать внутренние таблицы, которые всегда вызываются по ссылке.
ИСКЛЮЧЕНИЯ
Так как функции обычно вызываются несколькими программами, в них не всегда можно предусмотреть обобщённую обработку ошибок или непредсказуемых событий. Вместо этого в подобных случаях выполнение функции прекращается, а в вызывающую программу поступает сообщение. Данная технология реализована с помощью исключений.
Исключения можно задать, используя команду RAISE в?» прекратить выполнение с ошибкой. Как только эта команда начинает обрабатываться, выполнение функции немедленно прекращается. Также для задания исключений можно использовать команду MESSAGE в?¦ RAISING в?» выводится сообщение, информирующее об исключении.
В конце списка исключений можно использовать ключевое слово OTHERS для указания на оставшиеся исключения. Номер исключения возвращает в вызывающую программу функция SY-SUBRC. Если SY-SUBRC = 0 в?» нет исключений.
В вызывающей программе можно определить исключение по его номеру и в соответствии с этим определить, как продолжить работу. В противном случае происходит ошибка выполнения, и вызывающая программа не реагирует на событие.
ВЛОЖЕННЫЕ ВЫЗОВЫ И ЗАВЕРШЕНИЯ ПОДПРОГРАММ И ФУНКЦИЙ
Вызовы подпрограмм и функций могут быть вложенными. В них разрешено использовать локальные данные. Однако применение вложенных определений форм и функций не допускается. Если оператор form одной программы располагается до завершения другой подпрограммы, то есть до оператора ENDFORM, то синтаксический контроль выдаёт ошибку.
Для создания функции с помощью средств Development Workbench необходимо вызвать транзакцию SE37 в?» Function Builder.
Пример:
DATA: NUMBER_I TYPE I VALUE 5,
NUMBER_P TYPE I VALUE 4,
BEGIN OF PERSON,
NAME(10) VALUE ‘Paul’,
AGE TYPE I VALUE 28,
END OF PERSON,
ALPHA(10) VALUE ‘abcdefghij’.
FIELD-SYMBOLS

TYPE ANY.
ASSIGN NUMBER_P TO

.
DATA: HHH TYPE I.
WRITE: / NUMBER_I, NUMBER_P,

,
PERSON-NAME, PERSON-AGE, ALPHA.
DO 5 TIMES.
PERFORM CHANGE USING 1
NUMBER_I
NUMBER_P

).
WRITE: / NUMBER_I, NUMBER_P,

,
PERSON-NAME, PERSON-AGE, ALPHA.
enddo.
*——————————————————
CALL FUNCTION ‘MY_FUNC’ EXPORTING X = 23
Y = 40
IMPORTING Z = HHH
EXCEPTIONS CRASH = 1.
WRITE: / HHH.
CALL FUNCTION ‘MY_FUNC’ EXPORTING X = 0
Y = 0
IMPORTING Z = HHH
EXCEPTIONS CRASH = 1.
WRITE: / HHH.
FORM CHANGE USING VALUE(PAR_1)
PAR_NUMBER_I
PAR_NUMBER_P
PAR_POINTER
PAR_PERSON STRUCTURE PERSON
PAR_PART_OF_ALPHA.
STATICS I TYPE I.
I = I + 1.
ADD PAR_1 TO PAR_NUMBER_I.
PAR_NUMBER_P = 0.
PAR_PERSON-NAME+4(1) = ALPHA.
PAR_PERSON-AGE = NUMBER_P + 25.
ADD NUMBER_I TO PAR_POINTER.
PAR_PART_OF_ALPHA = SPACE.
WRITE: /’I = ‘, I.
ENDFORM.

Выборка данных в системе R/3 с использованием Open SQL, Native SQL

ЧТЕНИЕ ТАБЛИЦ БАЗЫ ДАННЫХ

Для чтения таблиц базы данных используется оператор SELECT. Она является частью Open SQL, который интегрирован в состав языка ABAP/4.
Ниже приводится обзор синтаксиса оператора SELECT языка Open SQL.
Чтение списка всех полей всех записей таблицы в рабочую область таблицы.
Пример:
SELECT * FROM MARA.
в?¦

ENDSELECT.
Чтение списка всех полей всех записей таблицы во внутреннюю таблицу.
Пример:
SELECT * FROM MARA INTO INTTAB.
в?¦
ENDSELECT.
Копирование содержимого всей таблицы во внутреннюю таблицу.
Пример:
SELECT * FROM MARA INTO TABLE INTTAB.
Выборка подмножества записей, удовлетворяющих определенному условию.
Пример:
SELECT * FROM MARA WHERE (MATNR Программирование на ABAP. Оглавление моделирование сетями Петри ОКМ ДМ экономическая информатика 4GL ТПОИ

Источник