SAP Програмиране на ABAP отчет
⚡ Умно обобщение
ABAP Report Programming изгражда изпълними програми, които избират, обработват и показват големи обеми от SAP данни. Тази страница обяснява добавените елементи в заглавката на отчета, екрана за избор, последователността от събития, командите за форматиране, интерактивните списъци и логическите бази данни.

Какво е ABAP програмиране на отчети?
SAP-ABAP поддържа два вида програми – програми за отчети и програми за диалог. Програмите за отчети се използват, когато е необходимо да се покажат големи количества данни.
Цел/Използване на програмите за отчети
- Те се използват, когато данните от редица таблици трябва да бъдат избрани и обработени преди представянето им.
- Използва се, когато отчетите изискват специален формат
- Използва се, когато отчетът трябва да бъде изтеглен от SAP към Excel лист, който да бъде разпределен.
- Използва се, когато отчетът трябва да бъде изпратен по пощата до определено лице.
Важни точки, които трябва да се отбележат относно програмата за отчети
- Програмите за отчети винаги са изпълними програми. Типът програма винаги е 1.
- Всяка програма за отчет съответства на конкретен тип приложение, т.е. или с Продажби и дистрибуция, FI – CO и т.н. Може също да бъде кръстосано приложение, т.е. тип '*'.
- Програмирането на отчети е програмиране, управлявано от събития.
- Първият ред на програмата за отчет винаги е Report .
- За да потиснете заглавието на списъка или името на програмата, добавката Няма стандартно заглавие на страницата се използва.
- Размерът на реда за конкретен отчет може да бъде зададен с помощта на добавката размер на линията .
- Броят на редовете за конкретна страница може да бъде зададен чрез добавяне брой редове n(n1). N е броят редове за страницата, а N1 е броят редове, запазени за долния колонтитул.
- За да покажем каквато и да е информация или съобщение за грешка, ние добавяме клас съобщения към програмата, като използваме добавката: ИД на съобщение . Класовете на съобщенията се поддържат в SE91.
Следователно една идеална програма за отчети трябва да започне с:
Report <report name> no standard page heading line-size <size> line-count <n(n1)> message-id <message class>.
Програма за отчети срещу програма за диалог
И двата типа програми работят в една и съща система, но решават противоположни проблеми. Докладът чете и показва данни, докато диалоговата програма позволява на потребителя да ги поддържа чрез екрани.
| Критерии | Програма за докладване | Диалогова програма |
|---|---|---|
| Тип на програмата | Тип 1, изпълним файл | Тип M, модулен басейн |
| Започната от | Име на програмата или код на транзакцията | Само код на транзакцията |
| Контрол на потока | Събития като ИНИЦИАЛИЗАЦИЯ и НАЧАЛО НА СЕЛЕКЦИЯ | Логика на потока на екрана с PBO и PAI модули |
| Въвеждане от потребителя | Генериран екран за избор | Екрани, проектирани в Screen Painter |
| Типична употреба | Показване и изтегляне на големи обеми данни | Създаване и промяна на бизнес данни |
Екранът за избор е мястото, където отчетът събира входните си данни, затова е описан по-долу.
Екран за избор
„Екран за избор“ е екранът, където се задават входните стойности, за които програмата трябва да се изпълни.
Екранът за избор обикновено се генерира от
- параметри
- Изберете-Опции
Синтаксис
Selection-screen begin of screen <screen #> selection-screen begin of block <#> with frame title <text> ......... ......... selection-screen end of block <#> selection-screen end of screen <screen #>
параметри
Параметрите помагат да се направи динамичен избор. Те могат да поемат само една стойност за един цикъл на изпълнение на програмата.
Синтаксис
Дефиниране на параметри като тип данни
Parameters p_id(30) type c.
Дефиниране на параметри като поле на таблица.
Parameter p_id like <table name>-<field name>.
Параметрите могат да бъдат квадратчета за отметка, както и радиобутони.
Parameters p_id as checkbox.Parameters p_id1 radiobutton group <group name>. Parameters p_id2 radiobutton group <group name>.
Параметрите могат да бъдат списъчно поле.
Parameter p_id like <table name>-<field name> as listbox
Изберете Опции
Опцията за избор се използва за въвеждане на диапазон от стойности или набор от стойности в програма
Синтаксис
select-options s_vbeln for vbak-vbeln.
Екранната снимка показва полетата за въвеждане с ниска и висока стойност, които се генерират от опция за избор, заедно с бутона за множествен избор.
Можете също да дефинирате опция за избор като променлива
select-options s_vbeln for vbak-vbeln no intervals no-extension
След като входните данни са събрани, програмата реагира на фиксирана поредица от събития.
Събития в програма за докладване на ABAP
Програмите за докладване на ABAP са управлявани от събития програми. Различните събития в програмата за отчет са:
Зареждане на програмата
- Задейства свързаното събитие във вътрешна сесия след зареждане на програма от тип 1, M, F или S.
- Също така изпълнява свързания блок за обработка веднъж и само веднъж за всяка програма и вътрешна сесия.
- Блокът за обработка LOAD-OF-PROGRAM има приблизително същата функция за an ABAP програма от тип 1, M, F или S като конструктор има за класове в ABAP обекти
Инициализация.
- Това събитие се изпълнява преди да се покаже екранът за избор.
- Инициализация на всички стойности.
- Можете да зададете различни стойности, различни от стойностите по подразбиране на екрана за избор.
- Можете да запълните екрана за избор с някои стойности по време на изпълнение.
На екрана за избор.
- Събитието се обработва, когато екранът за избор е обработен (в края на PAI).
- Валидирането и проверките на въведените стойности се извършват тук
Начало на избора.
- Тук програмата започва да избира стойности от таблици.
Край на селекцията.
- След като всички данни са избрани, това събитие записва данните на екрана.
Интерактивни събития
- Използва се за интерактивно отчитане. Използва се за създаване на подробен списък от основен списък.
💡 Съвет: Изразите, написани без ключова дума за събитие, принадлежат по подразбиране към START-OF-SELECTION, поради което отчетът все още се изпълнява, когато събитието липсва.
Пример: Проста програма за ABAP отчети
Програмата по-долу обединява добавените елементи, екрана за избор и събитията в един работен отчет. Тя чете заглавките на поръчките за продажба от VBAK за числата, въведени на екрана за избор, и ги записва като списък.
REPORT z_sales_order_list NO STANDARD PAGE HEADING LINE-SIZE 80 LINE-COUNT 65(3) MESSAGE-ID zsd. TABLES: vbak. DATA: lt_vbak TYPE STANDARD TABLE OF vbak, ls_vbak TYPE vbak. * Selection screen SELECT-OPTIONS: s_vbeln FOR vbak-vbeln. PARAMETERS: p_erdat LIKE vbak-erdat. INITIALIZATION. p_erdat = sy-datum. AT SELECTION-SCREEN. IF p_erdat > sy-datum. MESSAGE e001(zsd). " Date must not lie in the future ENDIF. START-OF-SELECTION. SELECT * FROM vbak INTO TABLE lt_vbak WHERE vbeln IN s_vbeln AND erdat LE p_erdat. END-OF-SELECTION. LOOP AT lt_vbak INTO ls_vbak. WRITE: / ls_vbak-vbeln, ls_vbak-erdat, ls_vbak-netwr. HIDE ls_vbak-vbeln. ENDLOOP.
Струва си да се отбележат три детайла. INITIALIZATION запълва параметъра за дата, преди да се появи екранът за избор. AT SELECTION-SCREEN валидира записа и генерира съобщение от клас ZSD. HIDE съхранява номера на реда на всеки записан ред, така че двойно щракване може да изгради вторичен списък от него, което е тема на следващия раздел.
Форматиране на отчета
ABAP позволява отчетите да бъдат форматирани така, както потребителят иска. Например „Алтернативни редове“ трябва да се показват в различни цветове, а редът „Общо“ трябва да се показва в жълто.
Синтаксис
Format Color n Format Color n Intensified On
n може да съответства на различни числа
Моля, имайте предвид, че има и други допълнения заедно с формата
FORMAT COLOR OFF INTENSIFIED OFF INVERSE OFF HOTSPOT OFF INPUT OFF
Интерактивно програмиране на отчети
- Чрез интерактивно програмиране потребителите могат активно да контролират извличането и показването на данни.
- Използва се за създаване на подробен списък от много опростен списък
- Подробните данни се записват във вторичен списък.
- Вторичният списък може или напълно да покрива първия екран, или може да се покаже на нов екран
- Самите вторични списъци могат да бъдат интерактивни.
- Първият списък може също да извика транзакция.
- Има различни събития, свързани с интерактивното програмиране.
Някои команди, използвани за интерактивно програмиране
Hotspot
Ако плъзнете мишката върху данните, показани в отчета, курсорът се променя на ръка с протегнат показалец. Гореща точка може да бъде постигната с помощта на израза FORMAT.
Syntax: Format Hotspot On (Off).
Крия
Тази команда ви помага да съхраните имената на полетата, въз основа на които ще се извършва допълнителна обработка, за да получите подробен списък. Пише се директно след командата WRITE за поле. Когато е избран ред, стойностите се попълват автоматично в променливите за по-нататъшна употреба.
Syntax: Hide <field-name>.
Отчетите, които четат много таблици, могат да заменят своите SELECT оператори с логическа база данни, описана по-долу.
Логически бази данни
- Вместо да използвате заявки „Избор“, можете да използвате логическа база данни, за да извлечете данни за програма.
- Логическите бази данни се създават чрез транзакция SE36
- Името на логическа база данни може да бъде с дължина до 20 знака. Може да започва с префикс на пространство от имена.
- Данните се избират от друга програма и можете да получите достъп до данните с помощта на GET команда, която поставя данните в работната област .
Предимства на логическата база данни пред нормалните Select заявки.
- Предлага условия за проверка, за да видите дали въведеното е правилно, пълно и правдоподобно
- Той съдържа централни проверки за оторизация за достъп до база данни
- Подобрения като подобряване на производителността незабавно се прилагат към всички отчети, които използват логическа база данни.
Забележка: Поради свързаната сложност логическите бази данни не се използват в повечето случаи
