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.

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
- Kenmerken
- 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.
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.
- Het biedt controlevoorwaarden om te zien of de invoer juist, volledig en plausibel is
- Het bevat centrale autorisatiecontroles voor databasetoegang
- 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
