ABAP Subscreens Tutorial: Kald Subscreen ind SAP
⚡ Smart opsummering
ABAP-underskærme integrerer én skærm i et område af en anden skærm under kørsel, sammen med dens flowlogik. Denne side forklarer underskærmsområder, CALL SUBSCREEN-sætningen i PBO og PAI, dataoverførsel og de begrænsninger, der forårsager kørselsfejl.
Hvad er en underskærm i SAP ABAP?
Før du læser denne vejledning, skal du sørge for at vide, hvad en Dialogprogram er.
- En underskærm er en uafhængig skærm, der vises i et område på en anden ("hoved") skærm.
- Underskærme giver dig mulighed for at integrere en skærm i en anden under kørsel. Du kan inkludere flere underskærme på hovedskærmen.
- Udtrykket underskærm gælder både for den skærm, du integrerer, og det område på hovedskærmen, hvor du placerer den. Denne vejledning handler om underskærmsområder. De faktiske skærmbilleder, der er oprettet gennem SE51-transaktionen, kaldes underskærmsskærme, hvis de er defineret i skærmattributter.
- Når du bruger en underskærm, er flowlogikken for den indlejrede skærm også indlejret i flowlogikken på hovedskærmen. Derfor er det at bruge underskærme på skærme som at bruge inkluderer i ABAP programmer.
For at bruge en underskærm skal du følge tre enkle trin
- Definer underskærmsområde(r) på en skærm
- Definer passende underskærmsskærme
- Inkluder underskærmsskærmen i underskærmsområdet.
Du skal også justere rammen på underskærmen og hovedskærmen. Du skal navngive den i feltnavnsfeltet.
Yderligere skal du også justere felterne på underskærmen for at få dem vist på hovedskærmen. I tilfælde af at underskærmen er defineret til at være større end det tilgængelige område på hovedskærmen, vil kun den del af underskærmen være synlig, der passer i det tilgængelige område. Området måles altid fra øverste venstre hjørne af skærmen. Derfor bør du være forsigtig, mens du definerer underskærmsområder og opretter underskærme.
OPKALD UNDERSKÆRM
EKSEMPEL
For eksempel her har vi defineret to underskærmsområder på hovedskærmen og har knyttet to forskellige underskærme til tilsvarende områder. Når hovedskærmen kaldes, kaldes hovedskærmens PBO. Men før visning kaldes PBO'erne for hver skærm, der er knyttet til underskærmsområder på hovedskærmen, også.
Skærmbilledet viser hovedskærmen med de to underskærmområder udfyldt af to separate underskærme.
Du kan inkludere en underskærmsskærm ved at bruge CALL SUBSCREEN-sætningen i flowlogikken på hovedskærmen.
Kald af underskærmen i PBO
For at inkludere en underskærmsskærm i underskærmsområdet på hovedskærmen og kalde dens PBO-flowlogik, skal du bruge følgende sætning i PBO-hændelsen på hovedskærmen:
PROCESS BEFORE OUTPUT. CALL SUBSCREEN <area> INCLUDING [<prog>] <dynp>.
Denne erklæring tildeler underskærmsskærmen nummer til underskærmsområdet kaldet . Du kan også angive det program, hvor underskærmen er defineret (valgfrit). Hvis du ikke specificerer programmet eksplicit, leder systemet efter underskærmbilledet i det samme ABAP-program som hovedprogrammet. Hvis den ikke finder en tilsvarende underskærm, opstår der en runtime-fejl. PBO-flowlogikken for underskærmsskærmen er også inkluderet på samme punkt. Dette kan kalde PBO-moduler i ABAP-programmet, hvor underskærmbilledet er defineret. I slutningen af underskærmen PBO sendes de globale felter fra programmet til alle identisk navngivne skærmfelter på underskærmen. Underskærmens PBO-flowlogik kan i sig selv omfatte yderligere underskærme.
Navnet af underskærmsområdet skal indtastes direkte uden omvendte kommaer. Du kan angive navnene og enten som bogstavelige eller variable. Hvis du bruger variabler, skal du deklarere og udfylde identisk navngivne variable i ABAP-programmet. Skærmnummeret skal være på 4 tegn. Hvis du ikke tildeler en underskærm til et område, forbliver den tom.
Kald af underskærmen i PAI
For at kalde PAI-flowlogikken på underskærmbilledet skal du bruge følgende sætning i PAI-flowlogikken på hovedskærmen:
PROCESS AFTER INPUT. CALL SUBSCREEN <area>.
Denne erklæring inkluderer PAI-flowlogikken for underskærmsskærmen inkluderet i underskærmsområdet i PBO-arrangementet. Dette kan kalde PAI-moduler i ABAP-programmet, hvor underskærmen er defineret. Data transporteres mellem identisk navngivne felter på underskærmsskærmen og ABAP-programmet, enten når PAI-hændelsen udløses, eller ved de tilsvarende FIELD-sætninger i PAI-flowlogikken på underskærmsskærmen.
Sådan opretter og integrerer du en underskærm
De tre tidligere nævnte trin udføres på skærmen Painter og i flowlogikken på hovedskærmen. Sekvensen nedenfor opretter én hovedskærm med et enkelt underskærmområde.
- Opret underskærmsområdet: Åbn hovedskærmen, for eksempel skærm 100, i skærmmenuen Painter (SE51). Vælg Underskærm elementet fra elementlinjen, tegn det på layoutet, og indtast et navn som f.eks. SUB_AREA i feltet Navn. Dette navn bruges senere i CALL SUBSCREEN-sætningen.
- Opret underskærmen: Opret en anden skærm, for eksempel skærm 110, og indstil dens skærmtype til Underskærm i attributterne. En underskærm har intet OK-kodefelt og ingen egen GUI-status.
- Placer felterne: Tegn inputfelterne på skærm 110. Hold layoutet inden for størrelsen af underskærmområdet, da kun den del, der passer, vises, målt fra øverste venstre hjørne.
- Deklarer de globale data: Placer felterne i TOP include i modulpuljen, så både hovedskærmen og underskærmen læser de samme globale variabler.
- Ring til underskærmen: Tilføj CALL SUBSCREEN til PBO'en og PAI'en på hovedskærmen, som vist nedenfor.
- Aktivér og test: Aktiver skærmbillederne og programmet, og start derefter transaktionen. Underskærmområdet er udfyldt af skærm 110, og dets moduler kører inden for flowlogikken på skærm 100.
* Flow logic of the main screen 100 PROCESS BEFORE OUTPUT. MODULE status_0100. CALL SUBSCREEN sub_area INCLUDING 'SAPMZDEMO' '0110'. PROCESS AFTER INPUT. CALL SUBSCREEN sub_area. MODULE user_command_0100.
💡 Tip: Gem skærmnummeret i en global variabel i stedet for en literal, når området skal vise et forskelligt underskærmbillede afhængigt af brugerinputtet. Variablen skal have samme navn i programmet og i CALL SUBSCREEN-sætningen.
Point til at huske
- Navne på elementer i underskærme på en skærm skal være unikke
- Du bør ikke have OK_CODE eller FCODE tilknyttet med underskærm. OK_CODE for selve hovedskærmen er OK_CODE for underskærmen
- Underskærme kan ikke have nogen dialogmoduler, der indeholder SET TITLEBAR, SET PF-STATUS, SET SCREEN, LEAVE SCREEN eller LEAVE TO SCREEN. Dette vil forårsage runtime fejl.
- Du skal kalde det i flowlogikken (både PBO og PAI) på hovedskærmen.
- CALL SUBSCREEN er ikke tilladt i CHAIN..ENDCHAIN og LOOP ENDLOOP sætninger
- Kan ikke have et AT EXIT-COMMAND-modul
- De felter, du bruger, er de globale felter. De skal angives i toppen inkluderer
- Hvis du bruger underskærme fra en anden dialog program dataoverførslen vil ikke ske, medmindre du tilføjer specifik kode.
⚠️ Advarsel: Placering af CALL SUBSCREEN inden for CHAIN … ENDCHAIN eller inden for en skærm LOOP producerer en syntaksfejl, og kald af et skærmnummer, der ikke findes, producerer en runtime-fejl ved den første visning.


