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.

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
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
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
Strukturdiagrammet viser, hvordan transaktionskoden, skærmbillederne, GUI-status og modulpuljen er knyttet til det samme hovedprogram.
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.
- 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.
- Deklarer de globale data: Placer TABLES-sætningen og de globale variabler i TOP include, som alle dialogmoduler i puljen kan læse.
- 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.
- Skriv flowlogikken: På fanen Flowlogik skal du kalde ét modul til PBO og et til PAI, som vist nedenfor.
- 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.
- 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.




