SAP ABAP-rapportprogrammering

⚡ Smart sammanfattning

ABAP Report Programming bygger körbara program som väljer, bearbetar och visar stora volymer av SAP data. Den här sidan förklarar tillägg av rapporthuvuden, urvalsskärmen, händelsesekvensen, formateringskommandon, interaktiva listor och logiska databaser.

  • 📊 Kärnsyfte: Ett rapportprogram läser data från flera tabeller, bearbetar dem och presenterar dem som en lista som kan formateras, laddas ner eller skickas via e-post.
  • 🧾 Programtyp: Varje rapport är ett körbart program av typ 1, kopplat till ett tillämpningsområde och helt och hållet drivet av händelser.
  • 🏁 Tillägg av rubriker: INGEN STANDARD SIDRUBRIK, LINE-STORLEK, LINE-COUNT och MESSAGE-ID hör hemma i den första REPORT-satsen.
  • ⌨️ Urvalsskärm: PARAMETERS accepterar ett enda värde och SELECT-OPTIONS accepterar ett intervall eller en uppsättning värden.
  • ⏱️ Händelsesekvens: PROGRAMINFÖRING, INITIALISERING, VID VALVFÖRINGSSKÄRMEN, VALVFÖRINGSSTART och VALVFÖRINGSSLUT körs i en fast ordning.
  • 🖱️ Interaktiva listor: HIDE lagrar fältvärdena för den valda raden, och HOTSPOT omvandlar ett listfält till ett klickbart element för den sekundära listan.
  • 🗄️ Logiska databaser: De skapades i SE36 och ersätter SELECT-satser med en GET-händelse och lägger till centrala auktoriseringskontroller.

SAP ABAP-rapportprogrammering

Vad är ABAP-rapportprogrammering?

SAPABAP stöder två typer av program – rapportprogram och dialogprogram. Rapportprogram används när stora mängder data behöver visas.

Syfte/Användning av rapportprogram

  • De används när data från ett antal tabeller måste väljas och bearbetas innan de presenteras.
  • Används när rapporter kräver ett särskilt format
  • Används när rapporten ska laddas ner från SAP till ett Excel-ark som ska distribueras över.
  • Används när rapporten ska skickas till en viss person.

Viktiga punkter att notera om rapportprogrammet

  • Rapportprogram är alltid körbara program. Programtyp är alltid 1.
  • Varje rapportprogram motsvarar en viss applikationstyp dvs antingen med försäljning & distribution, FI – CO etc. Det kan också vara Cross Application dvs typ '*'.
  • Rapportprogrammering är en händelsestyrd programmering.
  • Den första raden i ett rapportprogram är alltid Rapport .
  • För att undertrycka listrubriken eller namnet på programmet tillägget Ingen standardsidarubrik är använd.
  • Radstorleken för en viss rapport kan ställas in med hjälp av tillägget linjestorlek .
  • Radantalet för en viss sida kan ställas in genom att använda tillägget radantal n(n1). N är antalet rader för sidan och N1 är antalet rader reserverade för sidfoten.
  • För att visa någon information eller felmeddelande lägger vi till en meddelandeklass till programmet med tillägget: Meddelande-id . Meddelandeklasser upprätthålls i SE91.

Därför bör ett idealiskt rapportprogram börja med:

Report <report name> no standard page heading

line-size <size>

line-count <n(n1)>

message-id <message class>.

Rapportprogram kontra dialogprogram

Båda programtyperna körs i samma system, men de löser motsatta problem. En rapport läser och visar data, medan ett dialogprogram låter en användare hantera den via skärmar.

Kriterier Rapportprogram Dialogprogram
Programtyp Typ 1, körbar Typ M, modulpool
Startat av Programnamn eller en transaktionskod Endast en transaktionskod
Flödeskontroll Händelser som INITIALISERING och START AV VALV Skärmflödeslogik med PBO- och PAI-moduler
Användarinmatning En genererad urvalsskärm Skärmar designade i skärmen Painter
Typisk användning Visa och ladda ner stora datamängder Skapa och ändra affärsdata

Det är på urvalsskärmen som en rapport samlar in sina indata, så den beskrivs härnäst.

Urvalsskärm

”Valskärm” är den skärm där man anger de ingångsvärden som programmet ska köras för.

Valskärmen genereras normalt från

  1. Driftparametrar
  2. Välj inställningar

syntax

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

Driftparametrar

Parametrar hjälper en att göra dynamiskt urval. De kan endast ta emot ett värde för en cykel av programmets exekvering.

syntax

Definiera parametrar som en datatyp

Parameters p_id(30) type c.

Definiera parametrar som ett tabellfält.

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

Parametrar kan vara kryssrutor och radioknappar.

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

Parametrar kan vara listbox.

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

Alternativ

En Select-Option används för att mata in ett värdeintervall eller en uppsättning värden till ett program

syntax

select-options s_vbeln for vbak-vbeln.

Urvalsskärm

Skärmdumpen visar de låga och höga inmatningsfälten som ett valalternativ genererar, tillsammans med knappen för flera val.

Du kan också definiera ett valalternativ som en variabel

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

När indata har samlats in reagerar programmet på en fast sekvens av händelser.

Händelser i ett ABAP-rapportprogram

ABAP rapportprogram är händelsedrivna program. De olika händelserna i ett rapportprogram är:

Laddat av programmet

  • Utlöser den associerade händelsen i en intern session efter att ha laddat ett program av typ 1, M, F eller S.
  • Kör också det associerade bearbetningsblocket en gång och endast en gång för varje program och intern session.
  • Bearbetningsblocket LOAD-OF-PROGRAM har ungefär samma funktion för en ABAP-program av typ 1, M, F eller S som en konstruktor har för klasser i ABAP Objects

Initialisering.

  • Denna händelse utförs innan valskärmen visas.
  • Initiering av alla värden.
  • Du kan tilldela andra värden än de som är standardvärden på urvalsskärmen.
  • Du kan fylla din urvalsskärm med några värden under körning.

På urvalsskärmen.

  • Händelsen behandlas när urvalsskärmen har bearbetats (i slutet av PAI ).
  • Validering och kontroller av inmatade värden sker här

Start av urval.

  • Här börjar programmet välja värden från tabeller.

Slut på urval.

  • Efter att alla data har valts skriver denna händelse data till skärmen.

Interaktiva evenemang

  • Används för interaktiv rapportering. Den används för att skapa en detaljerad lista från en grundläggande lista.

💡 Tips: Satser skrivna utan något händelsenyckelord tillhör START-OF-SELECTION som standard, vilket är anledningen till att en rapport fortfarande körs även om händelsen saknas.

Exempel: Ett enkelt ABAP-rapportprogram

Programmet nedan sammanfogar tilläggen, urvalsskärmen och händelserna i en arbetsrapport. Det läser försäljningsorderrubriker från VBAK för de nummer som anges på urvalsskärmen och skriver dem som en lista.

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.

Tre detaljer är värda att notera. INITIALIZATION fyller i datumparametern innan urvalsskärmen visas. AT SELECTION-SCREEN validerar posten och genererar ett meddelande från klassen ZSD. HIDE lagrar ordningsnumret för varje skriven rad, så ett dubbelklick kan skapa en sekundär lista från den, vilket är ämnet för nästa avsnitt.

Formatera rapporten

ABAP tillåter att rapporterna formateras som användaren vill att de ska vara. Till exempel måste "Alternativa linjer" visas i olika färger och raden "Total" ska visas i gult.

syntax

Format Color n

Format Color n Intensified On

n kan motsvara olika nummer

Observera att det finns andra tillägg tillsammans med format också

FORMAT COLOR OFF INTENSIFIED OFF INVERSE OFF HOTSPOT OFF INPUT OFF

Interaktiv rapportprogrammering

  • Med hjälp av interaktiv programmering kan användare aktivt styra datainsamling och visning av data
  • Används för att skapa en detaljerad lista från en mycket enkel lista
  • Den detaljerade informationen skrivs på en sekundär lista.
  • Den sekundära listan kan antingen överlappa den första skärmen helt eller så kan man visa den på en ny skärm
  • De sekundära listorna kan själva vara interaktiva.
  • Den första listan kan också anropa en transaktion.
  • Det finns olika evenemang förknippade med interaktiv programmering.

Vissa kommandon används för interaktiv programmering

hotspot

Om man drar musen över data som visas i rapporten ändras markören till en hand med ett utsträckt pekfinger. En hotspot kan uppnås med FORMAT-satsen.

Syntax:      Format Hotspot On (Off).

Dölja

Det här kommandot hjälper dig att lagra fältnamnen baserat på vilket som kommer att göra ytterligare bearbetning för att få en detaljerad lista. Det skrivs direkt efter WRITE-satsen för ett fält. När en rad väljs fylls värdena automatiskt i variablerna för vidare användning.

Syntax:     Hide <field-name>.

Rapporter som läser många tabeller kan ersätta sina SELECT-satser med en logisk databas, vilket beskrivs nedan.

Logiska databaser

  • Istället för att använda "Select"-frågor kan du använda logisk databas för att hämta data för ett program.
  • Logiska databaser skapas genom transaktion SE36
  • Namnet på en logisk databas kan vara upp till 20 tecken långt. Det kan börja med ett namnområdesprefix.
  • Data väljs av ett annat program och man kan komma åt data med GET kommando som placerar data i arbetsområdet .

Fördelar med en logisk databas jämfört med vanliga Select-frågor.

  1. Den erbjuder kontrollvillkor för att se om inmatningen är korrekt, fullständig och rimlig
  2. Den innehåller centrala behörighetskontroller för databasåtkomst
  3. Förbättringar som förbättring av prestanda gäller omedelbart för alla rapporter som använder logisk databas.

Obs: På grund av komplexiteten används inte logiska databaser i de flesta fall

Vanliga frågor

PARAMETERS skapar ett inmatningsfält som innehåller ett enda värde. SELECT-OPTIONS skapar en intern tabell med fälten SIGN, ALTERNATIV, LOW och HIGH, så att den accepterar intervall, undantag och flera val.

AT LINE-SELECTION reagerar på ett dubbelklick eller F2-tangenten, och AT USER-COMMAND reagerar på en funktionskod från menyn. Båda bygger den sekundära listan från de värden som lagras av HIDE.

Listmenyn erbjuder Lista, Spara och Lokal fil för en klassisk rapport. Ett program kan också anropa funktionsmodulen GUI_DOWNLOAD, och en ALV-lista exporteras till ett kalkylblad utan extra kodning.

Ja. AI-assistenter i ABAP-utvecklingsverktyg genererar REPORT-headern, SELECT-OPTIONS och händelseblocken från en enkel beskrivning av den obligatoriska listan. Den genererade SELECT-filen behöver fortfarande en prestandagranskning.

AI-verktyg sammanfattar en lång lista, markerar extremvärden och besvarar frågor om data på ett enkelt språk. Att bädda in sådan analys innebär vanligtvis att den klassiska listan flyttas till en ALV- eller Fiori-baserad utdata.

Sammanfatta detta inlägg med: