SAP ABAP-rapportprogrammering

⚡ Slimme samenvatting

ABAP-rapportageprogrammering bouwt uitvoerbare programma's die grote hoeveelheden gegevens selecteren, verwerken en weergeven. SAP Deze pagina beschrijft de toevoegingen aan de rapportkop, het selectiescherm, de gebeurtenisvolgorde, opmaakopdrachten, interactieve lijsten en logische databases.

  • 📊 Kerndoel: Een rapportageprogramma leest gegevens uit verschillende tabellen, verwerkt deze en presenteert ze als een lijst die kan worden opgemaakt, gedownload of per e-mail verzonden.
  • 🧾 Programmatype: Elk rapport is een uitvoerbaar programma van type 1, gekoppeld aan een toepassingsgebied en volledig aangestuurd door gebeurtenissen.
  • 🏁 Toevoegingen aan de koptekst: GEEN STANDAARD PAGINAKOP, LINE-MAAT, LINE-COUNT en MESSAGE-ID horen in de eerste REPORT-instructie thuis.
  • Selectiescherm: PARAMETERS accepteert één enkele waarde, terwijl SELECT-OPTIONS een bereik of een reeks waarden accepteert.
  • Volgorde van gebeurtenissen: De stappen LOAD-OF-PROGRAM, INITIALIZATION, AT SELECTION-SCREEN, START-OF-SELECTION en END-OF-SELECTION worden in een vaste volgorde uitgevoerd.
  • Interactieve lijsten: HIDE slaat de veldwaarden van de geselecteerde rij op, en HOTSPOT maakt van een lijstveld een klikbaar element voor de secundaire lijst.
  • Logische databases: Deze functionaliteit, ontwikkeld in SE36, vervangt SELECT-statements door een GET-event en voegt centrale autorisatiecontroles toe.

SAP ABAP-rapportprogrammering

Wat is ABAP-rapportprogrammering?

SAPABAP ondersteunt twee soorten programma's: rapportprogramma's en dialoogprogramma's. Rapportprogramma's worden gebruikt wanneer grote hoeveelheden gegevens moeten worden weergegeven.

Doel/gebruik van rapportprogramma's

  • Ze worden gebruikt wanneer gegevens uit een aantal tabellen moeten worden geselecteerd en verwerkt voordat ze worden gepresenteerd.
  • Wordt gebruikt wanneer rapporten een speciaal formaat vereisen.
  • Wordt gebruikt wanneer het rapport moet worden gedownload van SAP naar een Excel-blad om over te verspreiden.
  • Wordt gebruikt wanneer het rapport naar een bepaalde persoon moet worden gemaild.

Belangrijke punten om op te merken over het rapportprogramma

  • Rapportprogramma's zijn altijd uitvoerbare programma's. Programmatype is altijd 1.
  • Elk Rapportprogramma komt overeen met een bepaald Applicatietype, dwz met Verkoop & Distributie, FI – CO etc. Het kan ook een Cross-applicatie zijn, dwz type '*'.
  • Rapportprogrammering is een gebeurtenisgestuurde programmering.
  • De eerste regel van een rapportprogramma is altijd Report .
  • Om de lijstkop of de naam van het programma te onderdrukken, wordt de toevoeging onderdrukt Geen standaardpaginakop is gebruikt.
  • Met behulp van de toevoeging kunt u de lijngrootte voor een bepaald rapport instellen lijn grootte .
  • Het aantal regels voor een bepaalde pagina kan worden ingesteld met behulp van de optelling aantal lijnen n(n1). N is het aantal regels voor de pagina en N1 is het aantal regels gereserveerd voor de paginavoettekst.
  • Om informatie of foutmeldingen weer te geven, voegen we een berichtklasse toe aan het programma met behulp van de toevoeging: Bericht-ID . Berichtklassen worden bijgehouden in SE91.

Daarom zou een ideaal rapportprogramma moeten beginnen met:

Report <report name> no standard page heading

line-size <size>

line-count <n(n1)>

message-id <message class>.

Rapportageprogramma versus dialoogprogramma

Beide programmatypes draaien in hetzelfde systeem, maar ze lossen tegengestelde problemen op. Een rapport leest en toont gegevens, terwijl een dialoogprogramma de gebruiker in staat stelt gegevens via schermen te beheren.

criteria Rapportageprogramma Dialoogprogramma
Programmatype Type 1, uitvoerbaar Type M, modulepool
Gestart door Programmanaam of een transactiecode Alleen een transactiecode
Debietregeling Gebeurtenissen zoals INITIALISATIE en START VAN DE SELECTIE Schermstroomlogica met PBO- en PAI-modules
Gebruikers invoer Een gegenereerd selectiescherm Schermen ontworpen in het scherm Painter
Typisch gebruik Het weergeven en downloaden van grote hoeveelheden data. Het creëren en wijzigen van bedrijfsgegevens

Het selectiescherm is de plek waar een rapport zijn invoergegevens verzamelt, en wordt daarom hierna beschreven.

Selectiescherm

Het "selectiescherm" is het scherm waarop men de invoerwaarden specificeert waarop het programma moet worden uitgevoerd.

Het selectiescherm wordt normaal gesproken gegenereerd vanuit het

  1. Kenmerken
  2. Selecteer opties

Syntaxis

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 #>

Kenmerken

Parameters helpen iemand om dynamische selectie uit te voeren. Ze kunnen slechts één waarde bevatten voor één uitvoeringscyclus van het programma.

Syntaxis

Parameters definiëren als een gegevenstype

Parameters p_id(30) type c.

Parameters definiëren zoals een tabelveld.

Parameter p_id like <table name>-<field name>.

Parameters kunnen zowel selectievakjes als keuzerondjes zijn.

Parameters p_id as checkbox.Parameters p_id1 radiobutton group <group name>.
Parameters p_id2  radiobutton group <group name>.

Parameters kunnen een keuzelijst zijn.

Parameter p_id like <table name>-<field name> as listbox

Maak een keuze

Een Select-Option wordt gebruikt om een ​​reeks waarden of een reeks waarden in een programma in te voeren

Syntaxis

select-options s_vbeln for vbak-vbeln.

Selectiescherm

De schermafbeelding toont de lage en hoge invoervelden die een selectieoptie genereert, samen met de knop voor meervoudige selectie.

U kunt ook een selectieoptie definiëren, zoals een variabele

select-options s_vbeln for vbak-vbeln no intervals no-extension

Zodra de invoer is verzameld, reageert het programma op een vaste reeks gebeurtenissen.

Gebeurtenissen in een ABAP-rapportprogramma

ABAP-rapportprogramma's zijn dat wel gebeurtenisgestuurde programma's. De verschillende gebeurtenissen in een rapportprogramma zijn:

Programma laden

  • Activeert de bijbehorende gebeurtenis in een interne sessie na het laden van een programma van type 1, M, F of S.
  • Voert bovendien het bijbehorende verwerkingsblok eenmalig uit voor elk programma en elke interne sessie.
  • Het verwerkingsblok LOAD-OF-PROGRAM heeft grofweg dezelfde functie voor een ABAP-programma van type 1, M, F of S als constructor voor klassen in ABAP Objects

Initialisatie.

  • Deze gebeurtenis wordt uitgevoerd voordat het selectiescherm wordt weergegeven.
  • Initialisatie van alle waarden.
  • U kunt andere waarden toewijzen dan de standaardwaarden op het selectiescherm.
  • U kunt uw selectiescherm tijdens runtime met enkele waarden vullen.

Bij Selectiescherm.

  • De gebeurtenis wordt verwerkt wanneer het selectiescherm is verwerkt (aan het einde van PAI).
  • Validatie en controles van ingevoerde waarden gebeuren hier

Begin van selectie.

  • Hier begint het programma met het selecteren van waarden uit tabellen.

Einde van selectie.

  • Nadat alle gegevens zijn geselecteerd, schrijft deze gebeurtenis de gegevens naar het scherm.

Interactieve Evenementen

  • Gebruikt voor interactieve rapportage. Het wordt gebruikt om een ​​gedetailleerde lijst te maken op basis van een basislijst.

💡Tip: Instructies die zonder een event-trefwoord zijn geschreven, behoren standaard tot START-OF-SELECTION. Daarom wordt een rapport nog steeds uitgevoerd, zelfs als het event ontbreekt.

Voorbeeld: Een eenvoudig ABAP-rapportageprogramma

Het onderstaande programma combineert de toevoegingen, het selectiescherm en de gebeurtenissen tot één werkend rapport. Het leest de orderheaders uit VBAK voor de nummers die op het selectiescherm zijn ingevoerd en schrijft deze weg als een lijst.

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.

Drie details zijn het vermelden waard. INITIALIZATION vult de datumparameter in voordat het selectiescherm verschijnt. AT SELECTION-SCREEN valideert de invoer en genereert een bericht van klasse ZSD. HIDE slaat het volgnummer van elke ingevoerde regel op, zodat er met een dubbelklik een secundaire lijst kan worden gemaakt, wat in de volgende sectie wordt besproken.

Het rapport opmaken

Met ABAP kunnen de rapporten worden opgemaakt zoals de gebruiker dat wil. “Alternatieve lijnen” moeten bijvoorbeeld in verschillende kleuren verschijnen en de lijn “Totalen” moet in geel verschijnen.

Syntaxis

Format Color n

Format Color n Intensified On

n kan overeenkomen met verschillende getallen

Houd er rekening mee dat er naast het formaat ook andere toevoegingen zijn

FORMAT COLOR OFF INTENSIFIED OFF INVERSE OFF HOTSPOT OFF INPUT OFF

Interactieve rapportprogrammering

  • Met interactieve programmering kunnen gebruikers actief de gegevensopvraging en -weergave beheren.
  • Wordt gebruikt om een ​​gedetailleerde lijst te maken van een zeer eenvoudige lijst.
  • De gedetailleerde gegevens worden op een secundaire lijst geschreven.
  • De secundaire lijst kan volledig over het eerste scherm heen liggen of kan in een nieuw scherm worden weergegeven
  • De secundaire lijsten kunnen zelf interactief zijn.
  • De eerste lijst kan ook een transactie oproepen.
  • Er zijn verschillende evenementen die verband houden met interactief programmeren.

Sommige opdrachten die worden gebruikt voor interactief programmeren

hotspot

Als u de muis over de in het rapport weergegeven gegevens sleept, verandert de cursor in een hand met een uitgestoken wijsvinger. Een hotspot kan worden bereikt met de FORMAT-instructie.

Syntax:      Format Hotspot On (Off).

Verbergen

Met deze opdracht kunt u de veldnamen opslaan op basis waarvan u verdere verwerking gaat uitvoeren om een ​​gedetailleerde lijst te krijgen. Het wordt direct na de WRITE-instructie voor een veld geschreven. Wanneer een rij wordt geselecteerd, worden de waarden automatisch ingevuld in de variabelen voor verder gebruik.

Syntax:     Hide <field-name>.

Rapporten die veel tabellen raadplegen, kunnen hun SELECT-instructies vervangen door een logische database, zoals hieronder beschreven.

Logische databases

  • In plaats van “Select”-query’s te gebruiken, kunt u een logische database gebruiken om gegevens voor een programma op te halen.
  • Logische databases worden gecreëerd door middel van transacties SE36
  • De naam van een logische database kan maximaal 20 tekens lang zijn. Het kan beginnen met een naamruimtevoorvoegsel.
  • De gegevens worden door een ander programma geselecteerd en men heeft toegang tot de gegevens met behulp van GET commando dat de gegevens in het werkgebied plaatst .

Voordelen van een logische database ten opzichte van normale Select-query's.

  1. Het biedt controlevoorwaarden om te zien of de invoer juist, volledig en plausibel is
  2. Het bevat centrale autorisatiecontroles voor databasetoegang
  3. Verbeteringen zoals verbetering van de prestaties zijn onmiddellijk van toepassing op alle rapporten die gebruik maken van een logische database.

Let op: Vanwege de complexiteit worden logische databases in de meeste gevallen niet gebruikt

Veelgestelde vragen

PARAMETERS creëert één invoerveld met één waarde. SELECT-OPTIONS creëert een interne tabel met de velden SIGN, OPTION, LOW en HIGH, zodat bereiken, uitsluitingen en meerdere selecties mogelijk zijn.

AT LINE-SELECTION reageert op een dubbelklik of de F2-toets, en AT USER-COMMAND reageert op een functiecode uit het menu. Beide bouwen de secundaire lijst op uit de waarden die door HIDE zijn opgeslagen.

Het lijstmenu biedt de opties 'Lijst', 'Opslaan' en 'Lokaal bestand' voor een klassiek rapport. Een programma kan ook de functiemodule GUI_DOWNLOAD aanroepen, waarna een ALV-lijst zonder extra code naar een spreadsheet kan worden geëxporteerd.

Ja. AI-assistenten in ABAP-ontwikkeltools genereren de rapportkop, de selectieopties en de gebeurtenisblokken op basis van een eenvoudige beschrijving van de vereiste lijst. De gegenereerde selectie moet echter nog wel op prestaties worden geëvalueerd.

AI-tools vatten een lange lijst samen, markeren uitschieters en beantwoorden vragen over de gegevens in begrijpelijke taal. Het integreren van dergelijke analyses betekent meestal dat de klassieke lijst wordt omgezet naar een ALV- of Fiori-gebaseerde uitvoer.

Vat dit bericht samen met: