Введение в 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 с конкретными примерами и мануалами. Ну, а дальше как пойдет.
Подход к реализации больших форматированных отчетов в SAP BW
На проектах внедрения отчетности с использованием хранилища данных SAP BW многим архитекторам и консультантам приходится решать задачи подготовки больших форматированных отчетов: разнообразных ведомостей, выписок и т.п. Такие отчеты обычно характеризуются:
Консультантом создается рабочая книга BW-BEx, которая содержит один или несколько BW-BEx-отчетов. Отчеты выгружаются на отдельные листы этой книги, которые обычно скрывают от пользователей. Видимым оставляют лишь один лист книги, содержащий целевую форму отчета с необходимым форматированием.
Работа пользователя с таким отчетом выглядит следующим образом:
Чего только не придумывают консультанты, чтобы, оставаясь в рамках стандартного подхода, качественно сделать-таки большой отчет. Но почти всегда ничего не получается. «Почти» означает компромиссы, послабления в требованиях. Бизнес-пользователи либо соглашаются применять более ограничивающие фильтры и отчет возвращает меньше данных, либо ждать выполнения подольше, либо вручную сводить несколько фрагментов отчета в один.
Чтобы все-таки не говорить клиенту «нет, мы не можем этого реализовать при таких требованиях», необходимо для начала сделать правильные выводы из очевидного: каждый инструмент предназначен для своей задачи.
Инструменты BW BEx Analyzer и SBOP Analysis for Office в общем случае не предназначены для реализации эффективных отчетов с большим количеством ячеек, с числом около 750000 и более (см SAP-ноту 1040454). Поэтому, используя модель данных SAP BW, надо выбрать другой инструмент, другой подход в реализации. Тогда решение не только обязательно получится, но и будет при этом эффективным.
Последние версии SAP Netweaver, SAP BW и HANA внесли большее разнообразие подходов публикации BW-данных в Excel, без использования BW BEx. Можно упомянуть такие:
Я хочу рассказать о подходе, гораздо менее требовательном к новизне версий используемых продуктов, и в чем-то менее сложным. Речь идет о публикации данных отчетов в шаблон Excel-документа через OLE-интерфейс. Excel-шаблон при этом хранится в репозитории BDS на стороне SAP BW.
Преимущества подхода с OLE очевидны:
Сложности в ABAP могут возникнуть при получении данных из модели BW. Возможные варианты: вызов BEx-отчета в ABAP, вызов FM RSDRI_INFOPROV_READ, SQL-SELECT по таблицам модели данных. Но это обычно есть в арсенале навыков опытного BW-консультанта. Глубокие знания программировании ABAP понадобятся, если возникнет потребность еще более ускорить работу кода по подготовке данных за счет тюнинга ABAP-программы или даже распараллеливания вычислений. Последнее, кстати, невозможно архитектурно в подходе с рабочими книгами BW BEx.
Вкратце, порядок создания отчета с использованием подхода с OLE следующий.
Using ole2 objects to create an excel file
Let’s see how to create a lovely excel sheet like this using ole2 objects: 😀
First you need to know the different parts in MS excel. Each part will represent an ole2 object in our program:
All the examples below use the following template report. You only need to copy the code on the example and paste it in the space reserved for this purpose.
In this report you can see how to create a new document, how to save it and how to close it.
DATA : lo_cellstart TYPE ole2_object,
lo_cellend TYPE ole2_object,
lo_selection TYPE ole2_object,
lo_validation TYPE ole2_object.
DATA : lv_selected_folder TYPE string,
lv_complete_path TYPE char256,
lv_titulo TYPE string.
CONCATENATE lv_selected_folder ‘\Test’ INTO lv_complete_path.
| Select a cell |
|---|
| Change the name of the Worksheet |
|---|
| SET PROPERTY OF lo_worksheet ‘Name’ = ‘Hello!’. |
Modifying the content
I think the best way to understand how it works is creating a macro in excel and seeing the Visual Basic code in order to “translate” it to abap.
For create a macro you need first to activate the developer tab, the following link explains how to do it:
Create a macro is easy, you can follow the following link:
I also recommend to download the VB language reference as guide.
Compare the VB code with the Abap code. And you will understand how it works. You don’t need to transform the entire VB code in Abap in all the cases, only the parts you need.
1 – Select a cell and set a Value:
2- Change Font and Size

3- Change Colour, Bold, Underline and Italics:

In this example you can see we are using the VB constant xlUnderlineStyleSingle with the value 2. To know the values of those constants in excel you can download the VBA language reference from the link http://msdn.microsoft.com/en-us/library/aa220733(v=office.11).aspx and follow the following path for see all the constants. Or also you can use this link to look up the constants values online http://msdn.microsoft.com/en-us/library/aa221100(v=office.11).aspx.
But I prefer to execute the macro recorded step by step for debug the code and you can see the value of the constants you want leaving the mouse cursor over that constant.

| Abap | |||
|---|---|---|---|
| Abap | ||
|---|---|---|
| Copy-Paste | |
|---|---|
| Test report: Example of use the include ZRIC_OLE2_UTILS |
|---|
| Code of include ZRIC_OLE2_UTILS |
|---|































