Vodič za dijaloško programiranje: Spremnik modula u SAP ABAP
⚡ Pametni sažetak
Programiranje dijaloga u SAP ABAP gradi programe za skup modula koji komuniciraju s korisnikom putem ekrana i mijenjaju sadržaj baze podataka. Ova stranica objašnjava kodove transakcija, ekrane, status GUI-ja, logiku toka ekrana, dynpros i strukturu skupa modula.

Što je dijaloško programiranje?
SAP-ABAP podržava dvije vrste programa – Report Program i Dialog Program.
Ako vaš ABAP program zahtijeva korisnički unos, koristi se dijaloško programiranje.
Korisnički dijalog je bilo koji oblik interakcije između korisnika i programa i može biti bilo koji od sljedećih
- Unos podataka
- Odabir stavke izbornika
- Klikom na gumb
- Klik ili dvostruki klik na unos
Dijaloški program također se koristi kada se trebamo kretati naprijed-natrag između ekrana
Dijaloški programi se kreiraju s tipom 'M' – Skup modula. Ne mogu se izvršiti neovisno i moraju biti pridruženi barem jednom kodu transakcije u kojem navedete početni zaslon.
Razlika između izvješća i dijaloških programa
Program izvješća:
Izvješće je program koji obično čita i analizira podatke u tablicama baze podataka bez mijenjanja baza podataka.
Dijaloški program:
Dijaloški program omogućuje vam interaktivni rad sa sustavom i promjenu sadržaja tablica baze podataka. Svaki dijaloški program ima određeni niz ekrana koje sustav obrađuje jedan za drugim.
| Kriteriji | Program izvješća | Program dijaloga |
|---|---|---|
| Vrsta programa | Tip 1, izvršna datoteka | Tip M, bazen modula |
| Pristup bazi podataka | Čita i analizira podatke | Čita i mijenja podatke |
| Izvršenje | Radi samostalno | Radi samo putem transakcijskog koda |
| kontrola | Događaji iz izvješća | Logika toka zaslona svakog dynpro-a |
Slijed prikaza na zaslonu dijaloške transakcije lakše je pratiti na primjeru.
Uzorak obrade transakcija u dijaloškom programiranju
Dijagram prati jednu transakciju od prvog zaslona do ažuriranja baze podataka. Korisnik unosi podatke na zaslonu 100, PAI potvrđuje unos i odlučuje o sljedećem zaslonu, zaslon 200 prikuplja preostale podatke, a zadatak ažuriranja konačno zapisuje zapis. Svaki od tih koraka proizvode komponente navedene u nastavku.
Komponente dijaloškog programa
Za razliku od prijaviti koji općenito podrazumijeva stvaranje jednog autonomnog programa koji se može izvršavati neovisno o drugim objektima, razvoj dijaloškog programa podrazumijeva razvoj više objekata od kojih se niti jedan ne može izvršiti sam za sebe. Umjesto toga, svi su objekti hijerarhijski povezani s glavnim programom i izvršavaju se u slijedu koji diktira glavni program dijaloga.
Komponente dijaloškog programa su:
Kod transakcije
- Šifra transakcije pokreće niz zaslona.
- Transakcijske kodove kreirate u Repository Browseru u ABAP Workbenchu ili koristeći Transaction SE93.
- Šifra transakcije povezana je s ABAP programom i početnim zaslonom.
- Možete pokrenuti sekvencu ekrana iz bilo kojeg ABAP programa koristeći naredbu CALL SCREEN.
Paravani
- Svaki dijalog u SAP sustavom upravlja jedan ili više ekrana.
- Zaslone stvarate pomoću Zaslona Painter u ABAP Workbench kroz transakciju SE51
- Svaki zaslon pripada ABAP program.
- Ti se ekrani sastoje od "zaslonske maske" ili "rasporeda" i njegove logike toka. Zaslon ima raspored koji određuje položaje ulazno/izlaznih polja i drugih grafičkih elemenata kao što su potvrdni okviri i radio gumbi. Logika toka određuje logičku obradu unutar zaslona.
GUI status
- Svaki zaslon ima GUI status(e) koji su neovisne komponente programa.
- Ovo kontrolira trake izbornika, standardnu alatnu traku, alatnu traku aplikacije, pomoću kojih korisnik može odabrati funkcije u aplikaciji.
- Stvarate ih u ABAP Workbenchu pomoću izbornika Painter.
ABAP program
- Svaki zaslon i GUI status u sustavu R/3 pripada jednom ABAP programu.
- Program ABAP sadrži dijaloške module koji se pozivaju logikom toka zaslona, a također obrađuju korisnički unos iz GUI statusa.
- ABAP programi koji koriste zaslone poznati su i kao dijaloški programi.
- U skupu modula (program tipa M); prvi blok obrade koji se poziva uvijek je dijaloški modul. Međutim, također možete koristiti zaslone u drugim ABAP programima, kao što su izvršni programi ili funkcijski moduli. Prvi blok obrade tada se naziva drugačije; na primjer, okruženjem vremena izvođenja ili pozivom procedure. Slijed zaslona se tada pokreće korištenjem naredbe CALL SCREEN.
Logika protoka zaslona
Logika Screen Flow prvenstveno je podijeljena u četiri komponente.
- Proces prije izlaza (PBO) događaj: koji se obrađuje prije nego što se prikaže ekran
- Proces nakon unosa (PAI) događaj: koji se obrađuje nakon radnje korisnika na zaslonu
- Proces na zahtjev za pomoć (P.O.H.): koji se obrađuje kada se pritisne F1
- Proces na zahtjev vrijednosti (POV):koji se obrađuje kada se pritisne F4
POH i POV detaljno su objašnjeni na stranici o obrada zahtjeva za vrijednost i obrada zahtjeva za pomoć.
Dynpro
- Zaslon zajedno sa svojom logikom toka naziva se Dynpro („Dinamički program“ jer logika toka zaslona utječe na tok programa)
- Svaki dynpro kontrolira točno jedan korak vašeg dijaloškog programa.
- Zasloni koji pripadaju programu su numeriranSlijed toka zaslona može biti linearan ili ciklički. Iznutra lanca zaslona možete čak pozvati drugi lanac zaslona i, nakon njegove obrade, vratiti se na izvorni lanac. Također možete nadjačati statički definirani sljedeći zaslon unutar dijaloških modula ABAP programa.
Skup modula ABAP
- Na PBO ili PAI događaju Dynpro poziva ABAP dijaloški program. Kolekcija takvih programa naziva se ABAP modularni skup.
- Na primjer, moduli pozvani u PAI događaju koriste se za provjeru korisničkog unosa i za pokretanje odgovarajućih koraka dijaloga, kao što je zadatak ažuriranja.
- Svi dynprosi koji se pozivaju iznutra jedan transakcije se odnose na zajednički skup modula.
Struktura dijaloškog programa
Strukturni dijagram prikazuje kako su transakcijski kod, ekrani, status GUI-ja i skup modula povezani s istim glavnim programom.
Tijek procesa za dijaloški program
Dijagram toka procesa prikazuje izmjenu između zaslona i ABAP programa: PBO ispunjava polja zaslona, korisnik djeluje, a PAI obrađuje ulaz prije nego što se pozove sljedeći zaslon.
Kako stvoriti program skupa modula
Gore navedene komponente stvaraju se fiksnim redoslijedom. Koraci u nastavku izgrađuju radnu transakciju iz praznog skupa modula.
- Kreirajte skup modula: U SE80 ili SE38, kreirajte program čije ime počinje s SAPMZ i postavite vrstu programa na M – Modularni bazenTip se kasnije ne može promijeniti bez brisanja objekta.
- Deklarirajte globalne podatke: Stavite naredbu TABLES i globalne varijable u TOP include, koje svaki dijaloški modul u skupu može čitati.
- Dizajnirajte ekran: Napravite ekran 100 pomoću programa Screen Painter (SE51), postavite polja za unos na raspored i unesite sljedeći broj zaslona u atribute zaslona.
- Napišite logiku toka: Na kartici Logika toka pozovite jedan modul za PBO i jedan za PAI, kao što je prikazano dolje.
- Izgradite status GUI-ja: Izradite status pomoću Izbornika Painter (SE41) i postavite ga u PBO modulu naredbom SET PF-STATUS, tako da Spremi, Natrag i Izlaz dođu do programa kao funkcijski kodovi.
- Poveži kod transakcije: U SE93 kreirajte dijalošku transakciju, nazovite skup modula i unesite 100 kao početni ekran.
* 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.
💡 Savjet: NAPAD NA EKRAN 0 završava trenutni ekran i vraća se na pozivnu točku, što je standardni način za čisto napuštanje dijaloške transakcije.




