Dialogprogrammeringsvejledning: Modulpulje i SAP ABAP

⚡ Smart opsummering

Dialogprogrammering i SAP ABAP bygger modulpoolprogrammer, der interagerer med brugeren via skærmbilleder og ændrer databaseindhold. Denne side forklarer transaktionskoder, skærmbilleder, GUI-status, skærmflowlogik, dynpros og modulpoolstrukturen.

  • 💬 Kernedefinition: Et dialogprogram håndterer enhver brugerinteraktion, såsom indtastning af data, valg af et menupunkt eller klik på en knap, og kan opdatere databasen.
  • 🅼 Programtype: Dialogprogrammer er modulpuljer af typen M, kan ikke køre alene og skal være knyttet til mindst én transaktionskode med et startskærmbillede.
  • 🧩 Komponenter: En transaktionskode, skærmbilleder, en GUI-status, ABAP-modulpuljen og flowlogikken danner tilsammen én dialogapplikation.
  • 🔄 Flowlogik: PBO kører før skærmen vises, PAI kører efter en brugerhandling, POH svarer på F1, og POV svarer på F4.
  • 🖥️ Dynpro: En skærm plus dens flowlogik er en dynpro, og hver dynpro styrer præcis ét trin i dialogen.
  • 📦 Modulpulje: Alle dynproer, der kaldes inden for én transaktion, refererer til en fælles modulpulje, der indeholder dialogmodulerne.
  • 🛠️ Oprettelsessti: SE80 opretter modulpuljen, SE51 designer skærmen, SE41 bygger GUI-status, og SE93 forbinder transaktionskoden.

SAP ABAP Dialogprogrammering

Hvad er dialogprogrammering?

SAP-ABAP understøtter to typer programmer - Rapportprogram og Dialogprogram.

Hvis dit ABAP-program kræver brugerinput, bruges dialogprogrammering.

En brugerdialog er enhver form for interaktion mellem brugeren og programmet og kan være en hvilken som helst af følgende

  • Indtastning af data
  • Valg af menupunkt
  • Klik på en knap
  • Klik eller dobbeltklik på en post

Dialogprogram bruges også når vi skal navigere frem og tilbage mellem skærme

Dialogprogrammer oprettes med typen som 'M' – Modulpulje. De kan ikke udføres uafhængigt og skal være knyttet til mindst én transaktionskode, hvor du angiver en startskærm.

Forskellen mellem rapport- og dialogprogrammer

Forskellen mellem rapport- og dialogprogrammer

Rapportprogram:

En rapport er et program, der typisk læser og analyserer data i databasetabeller uden at ændre database.

Dialog program:

Et dialogprogram giver dig mulighed for at arbejde interaktivt med systemet og ændre indholdet af databasetabellerne. Hvert dialogprogram har en bestemt rækkefølge af skærmbilleder, der behandles af systemet efter hinanden.

Kriterier Rapportprogram Dialogprogram
Programtype Type 1, eksekverbar Type M, modulpool
Adgang til database Læser og analyserer data Læser og ændrer data
Udførelse Kører af sig selv Kører kun via en transaktionskode
kontrol Begivenheder i rapporten Skærmflowlogik for hver dynpro

Skærmsekvensen for en dialogtransaktion er lettere at følge med et eksempel.

Et eksempel på transaktionsbehandling i dialogprogrammering

En prøvetransaktionsbehandling

Diagrammet følger én transaktion fra det første skærmbillede til databaseopdateringen. Brugeren indtaster data på skærm 100, PAI validerer indtastningen og beslutter sig for det næste skærmbillede, skærm 200 indsamler de resterende data, og opdateringsopgaven skriver endelig posten. Hvert af disse trin er produceret af komponenterne anført nedenfor.

Komponenter i dialogprogrammet

I modsætning til indberette som generelt indebærer oprettelsen af ​​et autonomt program, som kan udføres uafhængigt af andre objekter, dialogprogramudvikling indebærer udvikling af flere objekter, hvoraf ingen kan udføres på egen hånd. I stedet er alle objekter knyttet hierarkisk til hovedprogrammet og udføres i en sekvens dikteret af dialogens hovedprogram.

Komponenterne i et dialogprogram er:

Transaktionskode

  • Transaktionskoden starter en skærmsekvens.
  • Du opretter transaktionskoder i Repository Browser i ABAP Workbench eller ved hjælp af Transaction SE93.
  • En transaktionskode er knyttet til et ABAP-program og en startskærm.
  • Du kan starte en skærmsekvens fra ethvert ABAP-program ved hjælp af CALL SCREEN-sætningen.

Skærme

  • Hver dialog i en SAP systemet styres af en eller flere skærme.
  • Du opretter skærme ved hjælp af skærmen Painter i ABAP Workbench gennem transaktion SE51
  • Hver skærm tilhører en ABAP program.
  • Disse skærmbilleder består af en "skærmmaske" eller "layout" og dens flowlogik. Skærmen har et layout, der bestemmer placeringen af ​​input/output felter og andre grafiske elementer såsom afkrydsningsfelter og radioknapper. En flowlogik bestemmer den logiske behandling på skærmen.

GUI status

  • Hver skærm har en GUI-status(er), som er uafhængige komponenter i et program.
  • Dette styrer menulinjerne, standardværktøjslinjen, applikationsværktøjslinjen, hvormed brugeren kan vælge funktioner i applikationen.
  • Du opretter dem i ABAP Workbench ved hjælp af menuen Painter.

ABAP-program

  • Hver skærm og GUI-status i R/3-systemet tilhører ét ABAP-program.
  • ABAP-programmet indeholder de dialogmoduler, der kaldes af skærmflowlogikken, og behandler også brugerinput fra GUI-status.
  • ABAP-programmer, der bruger skærme, er også kendt som dialogprogrammer.
  • I en modulpulje (type M-program); den første behandlingsblok, der skal kaldes, er altid et dialogmodul. Du kan dog også bruge skærmbilleder i andre ABAP-programmer, såsom eksekverbare programmer eller funktionsmoduler. Den første behandlingsblok kaldes så anderledes; for eksempel af runtime-miljøet eller et procedurekald. Skærmsekvensen startes derefter ved hjælp af CALL SCREEN-sætningen.

Skærmflowlogik

Screen Flow logik er primært opdelt i fire komponenter.

  • Proces før output (PBO) hændelse: som behandles før skærmen vises
  • Proces efter input (PAI) hændelse: som behandles efter en brugerhandling på skærmen
  • Proces på anmodning om hjælp (P.O.H.): som behandles, når der trykkes på F1
  • Proces på værdianmodning (POV): som behandles, når der trykkes på F4

POH og POV er forklaret detaljeret på siden om proces på værdianmodning og proces på hjælpanmodning.

Dynpro

  • En skærm sammen med dens flowlogik kaldes en Dynpro ("Dynamisk Program", da skærmflowlogikken påvirker programflowet).
  • Hver dynpro styrer præcis ét trin i dit Dialog-program.
  • De skærme, der hører til et program, er nummereredeSkærmflowsekvensen kan være enten lineær eller cyklisk. Indefra en skærmkæde kan du endda kalde en anden skærmkæde og, efter at have behandlet den, vende tilbage til den oprindelige kæde. Du kan også tilsidesætte den statisk definerede næste skærm indefra dialogmodulerne i ABAP-programmet.

ABAP-modulpulje

  • Ved en PBO- eller PAI-hændelse kalder en Dynpro et ABAP-dialogprogram. En samling af sådanne programmer kaldes ABAP-modulpuljen.
  • For eksempel bruges moduler kaldet ved PAI-hændelsen til at kontrollere brugerinput og til at udløse passende dialogtrin, såsom opdateringsopgaven.
  • Alle dynpros skal kaldes indefra en transaktion henviser til en fælles modulpulje.

Opbygning af et dialogprogram

Opbygning af et dialogprogram

Strukturdiagrammet viser, hvordan transaktionskoden, skærmbillederne, GUI-status og modulpuljen er knyttet til det samme hovedprogram.

Procesflow for et dialogprogram

Procesflow for et dialogprogram

Procesflowdiagrammet viser vekslen mellem skærmbilledet og ABAP-programmet: PBO udfylder skærmfelterne, brugeren reagerer, og PAI behandler inputtet, før det næste skærmbillede kaldes.

Sådan opretter du et modulpoolprogram

Komponenterne ovenfor oprettes i en fast rækkefølge. Trinene nedenfor opbygger en fungerende transaktion fra en tom modulpulje.

  1. Opret modulpuljen: I SE80, eller i SE38, skal du oprette et program, hvis navn starter med SAPMZ og indstil programtypen til M – ModulpuljeTypen kan ikke ændres senere uden at objektet slettes.
  2. Deklarer de globale data: Placer TABLES-sætningen og de globale variabler i TOP include, som alle dialogmoduler i puljen kan læse.
  3. Design af skærmen: Opret skærm 100 med skærmen Painter (SE51), placer inputfelterne på layoutet, og indtast det næste skærmnummer i skærmattributterne.
  4. Skriv flowlogikken: På fanen Flowlogik skal du kalde ét modul til PBO og et til PAI, som vist nedenfor.
  5. Byg GUI-status: Opret en status med menuen Painter (SE41) og sæt den i PBO-modulet med SET PF-STATUS-sætningen, så Gem, Tilbage og Afslut når programmet som funktionskoder.
  6. Link en transaktionskode: I SE93 skal du oprette en dialogtransaktion, navngive modulpuljen, og indtast 100 som startskærmbilledet.
* Screen 100, flow logic
PROCESS BEFORE OUTPUT.
  MODULE status_0100.

PROCESS AFTER INPUT.
  MODULE user_command_0100.

* Module pool SAPMZDEMO
MODULE status_0100 OUTPUT.
  SET PF-STATUS 'STATUS_100'.
  SET TITLEBAR 'TITLE_100'.
ENDMODULE.

MODULE user_command_0100 INPUT.
  CASE sy-ucomm.
    WHEN 'SAVE'.
      PERFORM save_data.
    WHEN 'BACK' OR 'EXIT'.
      LEAVE TO SCREEN 0.
  ENDCASE.
ENDMODULE.

💡 Tip: FORLAD TIL SKÆRM 0 afslutter den aktuelle skærm og vender tilbage til kaldepunktet, hvilket er standardmåden til at afslutte en dialogtransaktion uden problemer.

Ofte Stillede Spørgsmål

CALL SCREEN åbner en ny skærm og beholder opkaldsskærmen på stakken, så behandlingen vender tilbage til den. LEAVE TO SCREEN erstatter den aktuelle skærm, og intet vender tilbage til den, der ringer op.

En modulpulje med navnet SAPMZDEMO er opdelt i MZDEMOTOP for globale data, MZDEMOO01 for PBO-moduler, MZDEMOI01 for PAI-moduler og MZDEMOF01 for subrutiner. Arbejdsbænken genererer dem automatisk.

Giv knappens funktion type E i GUI-status og kald dens modul med MODULE exit AT EXIT-COMMAND. Modulet kører derefter før feltvalidering, så brugeren kan forlade en skærm med ugyldige indtastninger.

Ja. AI-assistenter i ABAP-udviklingsværktøjer udarbejder PBO- og PAI-modulerne, CASE-sætningen på SY-UCOMM og feltvalideringerne ud fra en beskrivelse af skærmbilledet. Selve layoutet tegnes stadig på skærmbilledet. Painter.

Dynpros kører stadig alle klassiske musikinstrumenter SAP GUI-transaktion. Nye brugergrænseflader bygges normalt med Fiori, og AI-værktøjer hjælper ved at læse den eksisterende flowlogik og foreslå et tilsvarende service- og applikationsdesign.

Opsummer dette indlæg med: