ALV Rapporterer inn SAP Opplæring – ABAP List Viewer

⚡ Smart oppsummering

ALV Rapporterer inn SAP, produsert av ABAP List Viewer, leverer kolonnejustering, sortering, filtrering, totaler og delsummer uten tilpasset koding. Denne siden forklarer de enkle, blokkerte og hierarkiske listetypene, deres GJENBRUK-funksjonsmoduler og visningsvarianter.

  • ???? Kjerneformål: ABAP List Viewer leverer standard listefunksjoner gjennom ferdige funksjonsmoduler, slik at de aldri trenger å programmeres på nytt.
  • 🗂️ Feltkatalog: REUSE_ALV_FIELDCATALOG_MERGE bygger katalogen som beskriver hver utdatakolonne, og den kan også fylles ut manuelt.
  • 🖥️ Liste og rutenett: REUSE_ALV_LIST_DISPLAY skriver ut en klassisk liste, og REUSE_ALV_GRID_DISPLAY viser de samme dataene i en rutenettkontroll.
  • 🧱 Blokkeringsrapport: INIT, APPEND og DISPLAY kombinerer flere interne tabeller til én utdata laget av separate blokker.
  • ???? Hierarkisk rapport: REUSE_ALV_HIERSEQ_LIST_DISPLAY kobler en header-tabell og en element-tabell gjennom den delte nøkkelen i IS_KEYINFO.
  • 🧰 Type Pool SLIS: Hver struktur, tabelltype og konstant som brukes av den klassiske ALV-en, deklareres i typepoolen SLIS.
  • 💾 Visningsvarianter: En variant lagrer standardverdier for sortering, filtrering og summering, og I_SAVE-parameteren avgjør om den er brukerspesifikk eller standard.

ALV Rapporterer inn SAP ABAP

Hva er ALV i SAP ABAP?

De vanlige ønskede funksjonene i enhver rapport er «kolonnejustering», sortering, filtrering, delsummer, totaler osv. For å implementere disse fra bunnen av kreves det mye kodearbeid. For å unngå dette kan vi bruke et konsept som kalles ABAP List Viewer (ALV).

Hver av disse rapportene gir funksjonsmoduler som hjelper til med å produsere ønsket utgang uten mye anstrengelse. La oss se på dem i detalj -

Den klassiske ALV-en tilbyr tre listetyper, og hver av dem har sitt eget sett med REUSE-funksjonsmoduler:

  • Enkel rapport: én intern tabell vist som en liste eller et rutenett.
  • Blokkrapport: flere interne tabeller vist under hverandre som separate blokker.
  • Hierarkisk rapport: en overskriftstabell og en elementtabell koblet sammen av en delt nøkkel.

Enkel rapport

Viktige funksjonsmoduler i disse rapporterer er -

  • Gjenbruk_alv_feltkatalog_sammenslåing
  • Gjenbruk_alv_liste_visning
  • Gjenbruk_alv_events_get
  • Gjenbruk_alv_grid_display
  • Gjenbruk_alv_kommentar_skriv

REUSE_ALV_FIELDCATALOG_MERGE

Denne funksjonsmodulen brukes til å fylle ut en feltkatalog som er avgjørende for å vise dataene i ALV.

Hvis utdataene er fra en enkelt ordboktabell og alle kolonnene er valgt, trenger vi ikke utelukkende å lage feltkatalogen. Det er nok til å nevne tabellnavnet som en parameter (I_structure_name) i REUSE_ALV_LIST_DISPLAY. Men i andre tilfeller må vi lage det.

Merk: Feltkatalog kan også fylles ut manuelt ved å fylle opp alle nødvendige detaljer i den interne tabellen

Viktige parametere i er:

1. Eksport:

  • I_program_name : rapport-ID
  • I_internal_tabname : den interne utdatatabellen
  • I_inclname : inkluderer eller rapportnavnet der alle de dynamiske skjemaene håndteres.

2. Endre

  • ct_fieldcat : an innvendig bord med typen SLIS_T_FIELDCAT_ALV som er deklarert i typepoolen SLIS.

REUSE_ALV_LIST_DISPLAY

Dette er funksjonsmodulen som skriver ut dataene.

De viktige parameterne er:

1. Eksport:

  • I_callback_program : rapport-id
  • I_bypassing_buffer : 'X'
  • I_buffer_active : ' '
  • I_callback_pf_status_set : rutine hvor en bruker kan sette sin egen pf-status eller endre funksjonaliteten til den eksisterende pf-statusen.
  • I_callback_user_command : rutine hvor funksjonskodene håndteres.
  • I_structure name : navnet på ordboktabellen
  • Is_Layout : struktur for å angi oppsettet for rapporten
  • It_fieldcat : intern tabell med liste over alle felt og deres attributter som skal skrives ut (denne tabellen kan fylles ut automatisk av funksjonen)
  • It_events : intern tabell med en liste over alle mulige hendelser av ALV og deres tilsvarende skjemanavn.

2. Tabeller:

  • en. t_outtab : intern tabell med dataene som skal sendes ut

GJENBRUK_ALV_HENDELSER_FÅ

Returnerer tabell over mulige hendelser for en listetype

1. Importer:

Et_Events :Hendelsestabellen returneres med alle mulige CALLBACK-hendelser for den angitte listetypen (kolonne 'NAME'). For at hendelser skal behandles av tilbakeringingen, må deres 'FORM'-felt fylles ut. Hvis feltet initialiseres, ignoreres hendelsen. Oppføringen kan leses fra hendelsestabellen, feltet 'FORM' fylles ut og oppføringen kan endres ved hjelp av konstanter fra type pool SLIS.

2. Eksport:

I_list_type: 0 = enkel liste REUSE_ALV_LIST_DISPLAY

1 = hierarkisk-sekvensiell liste REUSE_ALV_HIERSEQ_LIST_DISPLAY

2 = enkel blokkeringsliste REUSE_ALV_BLOCK_LIST_APPEND

3 = hierarkisk-sekvensiell blokkliste REUSE_ALV_BLOCK_LIST_HS_APPEND

REUSE_ALV_GRID_DISPLAY

En ny funksjon fra ABAP4.6 versjon, for å vise resultatene i rutenett i stedet for en forhåndsvisning.

Parametere: samme som reuse_alv_list_display

Merk: Rutenett kan ikke håndtere store mengder. Funksjoner som sortering og nedoverrulling bruker mye ressurser/tid hvis datamengden som skal vises er stor. Det finnes ingen klar definisjon av at hvis datamengden er X, bør man velge liste eller rutenett, men utvikleren må ta en avgjørelse basert på sin erfaring. Hvis man er usikker, er liste det beste alternativet.

REUSE_ALV_COMMENTARY_WRITE

Dette brukes i Top-of-page-hendelsen for å skrive ut overskrifter og andre kommentarer for listen.

Viktige parametere

  • It_list_commentary : Intern tabell med overskrifter av typen slis_t_listheader.

Denne interne tabellen har tre felt:

  1. Typ : 'H' – overskrift, 'S' – valg, 'A' – handling
  2. Nøkkel : bare når typen er 'S'.
  3. Info: teksten som skal skrives ut

Eksempel: En enkel ALV-rutenettrapport

Programmet nedenfor gjør om funksjonsmodulene ovenfor til en arbeidsrapport. Det leser flyplantabellen SPFLI, bygger feltkatalogen automatisk og viser resultatet i et rutenett.

REPORT z_alv_demo.

TYPE-POOLS: slis.

DATA: lt_spfli    TYPE STANDARD TABLE OF spfli,
      lt_fieldcat TYPE slis_t_fieldcat_alv,
      ls_layout   TYPE slis_layout_alv.

START-OF-SELECTION.

  * 1. Read the data into the output table
  SELECT * FROM spfli INTO TABLE lt_spfli.

  * 2. Build the field catalog from the dictionary structure
  CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
    EXPORTING
      i_program_name     = sy-repid
      i_internal_tabname = 'LT_SPFLI'
      i_structure_name   = 'SPFLI'
    CHANGING
      ct_fieldcat        = lt_fieldcat.

  * 3. Set the layout and display the grid
  ls_layout-zebra             = 'X'.
  ls_layout-colwidth_optimize = 'X'.

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      i_callback_program = sy-repid
      is_layout          = ls_layout
      it_fieldcat        = lt_fieldcat
      i_save             = 'A'
    TABLES
      t_outtab           = lt_spfli.

Tre parametere utfører mesteparten av arbeidet. I_STRUCTURE_NAME lar feltkatalogen utledes fra ordboken, slik at ingen kolonne beskrives manuelt. IS_LAYOUT slår på stripete rader og optimaliserte kolonnebredder. I_SAVE = 'A' lar både brukerspesifikke og standard visningsvarianter lagres fra den ferdige listen.

Blokker rapport

Dette ser ut som en enkel rapport, men denne rapporten har bare funksjonene sortering og filtrering. Denne rapporten brukes hvis du må vise mer enn én rapport på utdataene. Teknisk sett hvis du har flere interne tabeller med data som skal vises som separate blokker, så går vi for blokkrapport av ALV.

De viktige funksjonene som brukes for å lage denne rapporten er:

  • REUSE_ALV_BLOCK_LIST_INIT
  • REUSE_ALV_BLOCK_LIST_APPEND
  • REUSE_ALV_BLOCK_LIST_DISPLAY

REUSE_ALV_BLOCK_LIST_INIT

Denne funksjonsmodulen brukes til å angi standard gui-status osv. Parametrene ligner på den som brukes i reuse_alv_list_display eller reuse_alv_grid_display

REUSE_ALV_BLOCK_LIST_APPEND

Denne funksjonsmodulen legger til dataene til blokken.

Viktige parametere

1. Eksport :

  • is_layout : layoutinnstillinger for blokk
  • it_fieldcat : feltkatalog
  • I_tabname : internt tabellnavn med alle mulige hendelser

2. Tabeller:

  • t_outtab : intern tabell med utdata.

REUSE_ALV_BLOCK_LIST_DISPLAY

Denne funksjonsmodulen viser listen med data vedlagt av funksjonen ovenfor.

Parametere: Alle parametere er valgfrie.

Hierarkiske rapporter

Hierarkisk visning brukes for å vise data som er relatert. Som salgsordre og varedetaljer. Her kan salgsordredetaljer være overskriftsdata, mens varene i salgsordren kan være varedata

Funksjonsmodulen som brukes til dette er

REUSE_ALV_HIERSEQ_LIST_DISPLAY

Eksport:

  • I_CALLBACK_PROGRAM
  • I_CALLBACK_PF_STATUS_SET
  • I_CALLBACK_USER_COMMAND
  • IS_LAYOUT
  • It_fieldcat
  • Det_hendelser
  • I_tabname_header : Navn på den interne tabellen i programmet som inneholder utdataene for det høyeste hierarkinivået.
  • I_tabname_item : Navn på den interne tabellen i programmet som inneholder utdataene for det laveste hierarkinivået.
  • Is_keyinfo : Denne strukturen inneholder overskrifts- og elementtabellfeltnavnene som kobler sammen de to tabellene (delt nøkkel).

tabeller

  • t_outtab_header : Overskriftstabell med data som skal sendes ut
  • t_outtab_item : Navn på den interne tabellen i programmet som inneholder utdataene for det laveste hierarkinivået.

Alle definisjoner av interne tabeller, strukturer og konstanter er deklarert i en type-pool kalt SLIS. Denne interne tabellen kan fylles ut automatisk ved å bruke REUSE_ALV_FIELDCATALOG_MERGE'.

Vis varianter

  • Visningsvarianter brukes til å angi standardegenskapene til en alv-utgang som sorteringskriterier, filtreringskriterier, summering og subtotering osv.
  • Visningsvarianter kan være brukerspesifikke og standard (standardvarianter kan brukes av alle brukere)
  • Hvilke visningsvarianter som kan lagres styres av parameteren i_save som sendes i funksjonsmodulene reuse_alv_list_display / reuse_alv_grid_display
  • Du kan gi et alternativ på valgskjermen for å velge hvilken skjermvariant som skal brukes

De vanlige funksjonsmodulene knyttet til valg / validering av visningsvarianter er

  1. Gjenbruk_alv_variant_default_get
  2. Gjenbruk_alv_variant_f4
  3. Gjenbruk_alv_variant_eksistens

💡 Tips: Send I_SAVE = 'U' for å kun tillate brukerspesifikke varianter, 'X' for kun standardvarianter og 'A' for begge. En tom verdi blokkerer lagring fullstendig.

Det er alt til ABAP – ALV-programmering!

Spørsmål og svar

REUSE-modulene tilhører den klassiske, funksjonsbaserte ALV-en. CL_GUI_ALV_GRID er den objektorienterte kontrollen som er innebygd i en tilpasset container på en dynpro, og den tilbyr redigerbare celler og hendelseshåndtering gjennom metoder.

Sett DO_SUM i feltkatalogen for kolonnen som må legges til, og send en sorteringstabell med SUBTOT aktivert for kolonnen som grupperer radene. Ingen ekstra beregningskode er nødvendig.

Send navnet på et skjema til I_CALLBACK_USER_COMMAND. Skjemaet mottar funksjonskoden og den valgte raden, slik at programmet kan lese posten og åpne en detaljliste eller en transaksjon.

Ja. AI-assistenter i ABAP-utviklingsverktøy produserer SELECT, feltkatalogen og kallet av REUSE_ALV_GRID_DISPLAY fra en beskrivelse av de nødvendige kolonnene. Den genererte SELECT-en trenger fortsatt en ytelseskontroll.

Nei. ALV er fortsatt standardutgangen til SAP GUI-rapporter. AI-assistenter tilfører verdi i tillegg ved å oppsummere en lang liste, identifisere avvik og svare på spørsmål om de viste dataene i et enkelt språk.

Oppsummer dette innlegget med: