SAP Програмиране на ABAP отчет

⚡ Умно обобщение

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

  • 📊 Основна цел: Програмата за отчети чете данни от няколко таблици, обработва ги и ги представя като списък, който може да бъде форматиран, изтеглен или изпратен по имейл.
  • 🧾 Тип програма: Всеки отчет е изпълнима програма от тип 1, обвързана с приложна област и управлявана изцяло от събития.
  • 🏁 Допълнения към заглавката: БЕЗ СТАНДАРТЕН ЗАГЛАВИЕ НА СТРАНИЦАТА, LINE-РАЗМЕР, LINE-COUNT и MESSAGE-ID принадлежат към първия REPORT оператор.
  • Екран за избор: PARAMETERS приема единична стойност, а SELECT-OPTIONS приема диапазон или набор от стойности.
  • Последователност на събитията: ЗАРЕЖДАНЕ НА ПРОГРАМА, ИНИЦИАЛИЗАЦИЯ, НА ЕКРАНА ЗА ИЗБОР, НАЧАЛО НА ИЗБОР и КРАЙ НА ИЗБОР се изпълняват във фиксиран ред.
  • 🖱️ Интерактивни списъци: HIDE съхранява стойностите на полетата на избрания ред, а HOTSPOT превръща поле от списък в елемент, върху който може да се кликва, за вторичния списък.
  • 🗄️ Логически бази данни: Създадени през SE36, те заместват SELECT операторите със GET събитие и добавят централизирани проверки за оторизация.

SAP Програмиране на ABAP отчет

Какво е 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
Типична употреба Показване и изтегляне на големи обеми данни Създаване и промяна на бизнес данни

Екранът за избор е мястото, където отчетът събира входните си данни, затова е описан по-долу.

Екран за избор

„Екран за избор“ е екранът, където се задават входните стойности, за които програмата трябва да се изпълни.

Екранът за избор обикновено се генерира от

  1. параметри
  2. Изберете-Опции

Синтаксис

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 заявки.

  1. Предлага условия за проверка, за да видите дали въведеното е правилно, пълно и правдоподобно
  2. Той съдържа централни проверки за оторизация за достъп до база данни
  3. Подобрения като подобряване на производителността незабавно се прилагат към всички отчети, които използват логическа база данни.

Забележка: Поради свързаната сложност логическите бази данни не се използват в повечето случаи

Въпроси и Отговори

PARAMETERS създава едно поле за въвеждане, съдържащо една стойност. SELECT-OPTIONS създава вътрешна таблица с полетата SIGN, OPTION, LOW и HIGH, така че приема диапазони, изключения и множество селекции.

AT LINE-SELECTION реагира на двойно щракване или клавиша F2, а AT USER-COMMAND реагира на функционален код от менюто. И двата метода изграждат вторичния списък от стойностите, съхранени от HIDE.

Менюто със списък предлага „Списък“, „Запазване“ и „Локален файл“ за класически отчет. Програмата може също да извика функционалния модул GUI_DOWNLOAD и ALV списъкът да се експортира в електронна таблица без допълнително кодиране.

Да. AI асистентите в ABAP инструментите за разработка генерират REPORT заглавката, SELECT-OPTIONS и блоковете за събития от просто описание на необходимия списък. Генерираният SELECT все още се нуждае от преглед на производителността.

Инструментите с изкуствен интелект обобщават дълъг списък, открояват отклонения и отговарят на въпроси относно данните на разбираем език. Вграждането на такива анализи обикновено означава преместване на класическия списък към изход, базиран на ALV или Fiori.

Обобщете тази публикация с: