Dialogprogrammeringsveiledning: Modulpool in SAP ABAP
⚡ Smart oppsummering
Dialogprogrammering i SAP ABAP bygger modulpoolprogrammer som samhandler med brukeren via skjermbilder og endrer databaseinnhold. Denne siden forklarer transaksjonskoder, skjermbilder, GUI-status, skjermflytlogikk, dynpros og modulpoolstrukturen.

Hva er dialogprogrammering?
SAP-ABAP støtter to typer programmer – Rapportprogram og Dialogprogram.
Hvis ABAP-programmet krever brukerinndata, brukes dialogprogrammering.
En brukerdialog er enhver form for interaksjon mellom brukeren og programmet, og kan være hvilken som helst av følgende
- Legger inn data
- Velge et menyelement
- Klikk på en knapp
- Klikke eller dobbeltklikke på en oppføring
Dialogprogram brukes også når vi skal navigere frem og tilbake mellom skjermer
Dialogprogrammer lages med type som 'M' – Module Pool. De kan ikke utføres uavhengig og må være knyttet til minst én transaksjonskode der du spesifiserer en startskjerm.
Forskjellen mellom rapport- og dialogprogrammer
Rapportprogram:
En rapport er et program som vanligvis leser og analyserer data i databasetabeller uten å endre database.
Dialogprogram:
Et dialogprogram lar deg jobbe interaktivt med systemet og endre innholdet i databasetabellene. Hvert dialogprogram har en bestemt sekvens av skjermbilder som behandles av systemet etter hverandre.
| Kriterier | Rapportprogram | Dialogprogram |
|---|---|---|
| Programtype | Type 1, kjørbar | Type M, modulpool |
| Databasetilgang | Leser og analyserer data | Leser og endrer data |
| Gjennomføring | Kjører på egenhånd | Kjører kun gjennom en transaksjonskode |
| Kontroll: | Hendelser i rapporten | Skjermflytlogikk for hver dynpro |
Skjermsekvensen for en dialogtransaksjon er enklere å følge med et eksempel.
Et eksempel på transaksjonsbehandling i dialogprogrammering
Diagrammet følger én transaksjon fra det første skjermbildet til databaseoppdateringen. Brukeren skriver inn data på skjerm 100, PAI validerer registreringen og bestemmer seg for neste skjermbilde, skjerm 200 samler inn de resterende dataene, og oppdateringsoppgaven skriver til slutt posten. Hvert av disse trinnene produseres av komponentene som er oppført nedenfor.
Komponenter i dialogprogrammet
I motsetning til rapporterer som generelt innebærer opprettelse av ett autonomt program som kan kjøres uavhengig av andre objekter, dialogprogramutvikling innebærer utvikling av flere objekter, hvorav ingen kan kjøres på egen hånd. I stedet er alle objekter koblet hierarkisk til hovedprogrammet og og blir utført i en sekvens diktert av dialogens hovedprogram.
Komponentene i et dialogprogram er:
Transaksjons kode
- Transaksjonskoden starter en skjermsekvens.
- Du oppretter transaksjonskoder i Repository Browser i ABAP Workbench eller ved å bruke Transaction SE93.
- En transaksjonskode er knyttet til et ABAP-program og en startskjerm.
- Du kan starte en skjermsekvens fra et hvilket som helst ABAP-program ved å bruke CALL SCREEN-setningen.
Skjermer
- Hver dialog i en SAP systemet styres av en eller flere skjermer.
- Du lager skjermer ved å bruke skjermen Painter i ABAP Workbench gjennom transaksjon SE51
- Hver skjerm tilhører en ABAP-program.
- Disse skjermene består av en "skjermmaske" eller "layout" og dens flytlogikk. Skjermen har et oppsett som bestemmer plasseringen av inn-/utdatafelt og andre grafiske elementer som avmerkingsbokser og radioknapper. En flytlogikk bestemmer den logiske behandlingen på skjermen.
GUI-status
- Hver skjerm har en GUI-status(er) som er uavhengige komponenter i et program.
- Dette styrer menylinjene, standardverktøylinjen, applikasjonsverktøylinjen, som brukeren kan velge funksjoner i applikasjonen med.
- Du lager dem i ABAP Workbench ved å bruke menyen Painter.
ABAP-program
- Hver skjerm og GUI-status i R/3-systemet tilhører ett ABAP-program.
- ABAP-programmet inneholder dialogmodulene som kalles opp av skjermflytlogikken, og behandler også brukerinndata fra GUI-statusen.
- ABAP-programmer som bruker skjermer er også kjent som dialogprogrammer.
- I en modulpool (type M-program); den første behandlingsblokken som skal kalles er alltid en dialogmodul. Du kan imidlertid også bruke skjermer i andre ABAP-programmer, for eksempel kjørbare programmer eller funksjonsmoduler. Den første prosesseringsblokken kalles da annerledes; for eksempel av kjøretidsmiljøet eller et prosedyrekall. Skjermsekvensen startes deretter ved å bruke CALL SCREEN-setningen.
Skjermflytlogikk
Skjermflytlogikk er primært delt inn i fire komponenter.
- Prosess før utdata (PBO) hendelse: som behandles før skjermen vises
- Prosess etter inndata (PAI) hendelse: som behandles etter en brukerhandling på skjermen
- Prosess på forespørsel om hjelp (P.O.H.): som behandles når F1 trykkes
- Prosess på verdiforespørsel (POV): som behandles når F4 trykkes
POH og POV er forklart i detalj på siden om prosess på verdiforespørsel og prosess på hjelpeforespørsel.
Dynpro
- En skjerm sammen med flytlogikken kalles en Dynpro («Dynamisk program» siden skjermflytlogikken påvirker programflyten).
- Hver dynpro kontrollerer nøyaktig ett trinn i dialogprogrammet.
- Skjermene som tilhører et program er nummerertSkjermflytsekvensen kan være enten lineær eller syklisk. Innenfra en skjermkjede kan du til og med kalle en annen skjermkjede og, etter å ha behandlet den, gå tilbake til den opprinnelige kjeden. Du kan også overstyre det statisk definerte neste skjermbildet fra dialogmodulene i ABAP-programmet.
ABAP-modulpool
- Ved en PBO- eller PAI-hendelse kaller en Dynpro et ABAP-dialogprogram. En samling av slike programmer kalles ABAP-modulpoolen.
- For eksempel brukes moduler som kalles ved PAI-hendelsen til å sjekke brukerinndata og for å utløse passende dialogtrinn, for eksempel oppdateringsoppgaven.
- Alle dynpros skal kalles innenfra en transaksjon refererer til en felles modulpool.
Strukturen til et dialogprogram
Strukturdiagrammet viser hvordan transaksjonskoden, skjermbildene, GUI-statusen og modulpoolen er koblet til det samme hovedprogrammet.
Prosessflyt for et dialogprogram
Prosessflytdiagrammet viser vekslingen mellom skjermbildet og ABAP-programmet: PBO fyller ut skjermfeltene, brukeren handler, og PAI behandler inputen før neste skjermbilde kalles.
Slik oppretter du et modulpoolprogram
Komponentene ovenfor opprettes i en fast rekkefølge. Trinnene nedenfor bygger en fungerende transaksjon fra en tom modulpool.
- Opprett modulpoolen: I SE80, eller i SE38, opprett et program hvis navn begynner med SAPMZ og sett programtypen til M – ModulpoolTypen kan ikke endres senere uten å slette objektet.
- Deklarer de globale dataene: Plasser TABLES-setningen og de globale variablene i TOP include, som alle dialogmoduler i poolen kan lese.
- Design skjermen: Lag skjerm 100 med skjermen Painter (SE51), plasser inndatafeltene på layouten og skriv inn neste skjermnummer i skjermattributtene.
- Skriv flytlogikken: På fanen Flytlogikk kaller du én modul for PBO og én for PAI, som vist nedenfor.
- Bygg GUI-statusen: Opprett en status med menyen Painter (SE41) og sett den i PBO-modulen med SET PF-STATUS-setningen, slik at Lagre, Tilbake og Avslutt når programmet som funksjonskoder.
- Koble til en transaksjonskode: I SE93, opprett en dialogtransaksjon, gi modulpoolen et navn og skriv inn 100 som startskjermbilde.
* 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.
💡 Tips: FORLAT TIL SKJERMEN 0 avslutter gjeldende skjermbilde og går tilbake til kallepunktet, som er standardmåten for å avslutte en dialogtransaksjon uten problemer.




