Tutorial de programare cu dialog: Pool de module SAP ABAP

โšก Rezumat inteligent

Programare cu dialoguri รฎn SAP ABAP construieศ™te programe de tip pool de module care interacศ›ioneazฤƒ cu utilizatorul prin intermediul ecranelor ศ™i modificฤƒ conศ›inutul bazei de date. Aceastฤƒ paginฤƒ explicฤƒ codurile de tranzacศ›ii, ecranele, starea interfeศ›ei grafice, logica fluxului ecranelor, dynpros ศ™i structura pool-ului de module.

  • ๐Ÿ’ฌ Definiศ›ia de bazฤƒ: Un program de dialog gestioneazฤƒ orice interacศ›iune cu utilizatorul, cum ar fi introducerea datelor, alegerea unui element de meniu sau clicul pe un buton ศ™i poate actualiza baza de date.
  • ๐Ÿ…ผ Tipul programului: Programele de dialog sunt grupuri de module de tip M, nu pot rula singure ศ™i trebuie ataศ™ate la cel puศ›in un cod de tranzacศ›ie cu un ecran iniศ›ial.
  • ๐Ÿงฉ Componente: Un cod de tranzacศ›ie, ecrane, o stare a interfeศ›ei grafice, setul de module ABAP ศ™i logica fluxului formeazฤƒ รฎmpreunฤƒ o singurฤƒ aplicaศ›ie de dialog.
  • ๐Ÿ”„ Logicฤƒ de flux: PBO ruleazฤƒ รฎnainte de apariศ›ia ecranului, PAI ruleazฤƒ dupฤƒ o acศ›iune a utilizatorului, POH rฤƒspunde la F1, iar POV rฤƒspunde la F4.
  • ๐Ÿ–ฅ๏ธ Dynpro: Un ecran plus logica sa de flux este un dynpro, iar fiecare dynpro controleazฤƒ exact un pas al dialogului.
  • ๐Ÿ“ฆ Grup de module: Toate dynpro-urile apelate รฎn cadrul unei tranzacศ›ii se referฤƒ la un pool comun de module care conศ›ine modulele de dialog.
  • ๐Ÿ› ๏ธ Calea de creaศ›ie: SE80 creeazฤƒ setul de module, SE51 proiecteazฤƒ ecranul, SE41 construieศ™te starea interfeศ›ei grafice (GUI), iar SE93 leagฤƒ codul tranzacศ›iei.

SAP Programare ABAP cu dialoguri

Ce este programarea dialogicฤƒ?

SAP-ABAP acceptฤƒ douฤƒ tipuri de programe โ€“ Programul de raportare ศ™i Programul de dialog.

Dacฤƒ programul ABAP solicitฤƒ intrarea utilizatorului, se utilizeazฤƒ programarea cu dialog.

Un dialog cu utilizatorul este orice formฤƒ de interacศ›iune รฎntre utilizator ศ™i program ศ™i poate fi oricare dintre urmฤƒtoarele

  • Introducerea datelor
  • Alegerea unui element de meniu
  • Fฤƒcรขnd clic pe un buton
  • Fฤƒcรขnd clic sau dublu clic pe o intrare

Programul de dialog este folosit ศ™i atunci cรขnd trebuie sฤƒ navigฤƒm รฎnainte ศ™i รฎnapoi รฎntre ecrane

Programele de dialog sunt create cu tipul โ€žMโ€ โ€“ Pool de module. Acestea nu pot fi executate independent ศ™i trebuie ataศ™ate la cel puศ›in un cod de tranzacศ›ie รฎn care specificaศ›i un ecran iniศ›ial.

Diferenศ›a dintre programele de raport ศ™i de dialog

Diferenศ›a dintre programele de raport ศ™i de dialog

Programul de raportare:

Un raport este un program care de obicei citeศ™te ศ™i analizeazฤƒ datele din tabelele bazei de date fฤƒrฤƒ a modifica Baza de date.

Program de dialog:

Un program de dialog vฤƒ permite sฤƒ lucraศ›i interactiv cu sistemul ศ™i sฤƒ modificaศ›i conศ›inutul tabelelor bazei de date. Fiecare program de dialog are o anumitฤƒ secvenศ›ฤƒ de ecrane care sunt procesate de sistem una dupฤƒ alta.

Criterii Program de raportare Program de dialog
Tipul programului Tipul 1, executabil Tip M, piscinฤƒ de module
Acces la baza de date Citeศ™te ศ™i analizeazฤƒ datele Citeศ™te ศ™i modificฤƒ datele
Execuศ›ie Funcศ›ioneazฤƒ singur Ruleazฤƒ doar printr-un cod de tranzacศ›ie
Mod de control: Evenimentele raportului Logica fluxului de ecran pentru fiecare dynpro

Secvenศ›a de afiศ™ฤƒri a unei tranzacศ›ii de dialog este mai uศ™or de urmฤƒrit cu un exemplu.

Un exemplu de procesare a tranzacศ›iilor รฎn Dialog Programming

Un eศ™antion de procesare a tranzacศ›iei

Diagrama urmฤƒreศ™te o tranzacศ›ie de la primul ecran pรขnฤƒ la actualizarea bazei de date. Utilizatorul introduce date pe ecranul 100, PAI valideazฤƒ intrarea ศ™i decide asupra urmฤƒtorului ecran, ecranul 200 colecteazฤƒ datele rฤƒmase, iar sarcina de actualizare scrie รฎn final รฎnregistrarea. Fiecare dintre aceศ™ti paศ™i este produs de componentele enumerate mai jos.

Componentele programului de dialog

Spre deosebire de raporteazฤƒ care implicฤƒ รฎn general crearea unui program autonom care poate fi executat independent de alte obiecte, dezvoltarea programului de dialog implicฤƒ dezvoltarea mai multor obiecte, dintre care niciunul nu poate fi executat singur. รŽn schimb, toate obiectele sunt legate ierarhic la programul principal ศ™i sunt executate รฎntr-o secvenศ›ฤƒ dictatฤƒ de programul principal de dialog..

Componentele unui program de dialog sunt:

Cod de tranzacศ›ie

  • Codul tranzacศ›iei รฎncepe o secvenศ›ฤƒ de ecran.
  • Creaศ›i coduri de tranzacศ›ie รฎn Browserul de depozit din ABAP Workbench sau folosind Transaction SE93.
  • Un cod de tranzacศ›ie este legat de un program ABAP ศ™i de un ecran iniศ›ial.
  • Puteศ›i porni o secvenศ›ฤƒ de ecran din orice program ABAP utilizรขnd instrucศ›iunea CALL SCREEN.

Ecrane

  • Fiecare dialog รฎntr-un SAP sistemul este controlat de unul sau mai multe ecrane.
  • Creaศ›i ecrane folosind ecranul Painter รฎn ABAP Workbench prin tranzacศ›ia SE51
  • Fiecare ecran aparศ›ine unui program ABAP.
  • Aceste ecrane constau dintr-o โ€žmascฤƒ de ecranโ€ sau โ€žaspectโ€ ศ™i logica sa de flux. Ecranul are un aspect care determinฤƒ poziศ›iile cรขmpurilor de intrare/ieศ™ire ศ™i a altor elemente grafice, cum ar fi casetele de selectare ศ™i butoanele radio. O logicฤƒ de flux determinฤƒ procesarea logicฤƒ din ecran.

Stare GUI

  • Fiecare ecran are o stare GUI care sunt componente independente ale unui program.
  • Aceasta controleazฤƒ barele de meniu, bara de instrumente standard, bara de instrumente a aplicaศ›iei, cu care utilizatorul poate alege funcศ›iile din aplicaศ›ie.
  • Le creaศ›i รฎn ABAP Workbench folosind Meniu Painter.

Program ABAP

  • Fiecare ecran ศ™i starea GUI din sistemul R/3 aparศ›ine unui program ABAP.
  • Programul ABAP conศ›ine modulele de dialog care sunt apelate de logica fluxului de ecran ศ™i, de asemenea, proceseazฤƒ intrarea utilizatorului din starea GUI.
  • Programele ABAP care folosesc ecrane sunt cunoscute ศ™i ca programe de dialog.
  • รŽntr-un pool de module (program de tip M); primul bloc de procesare care trebuie apelat este รฎntotdeauna un modul de dialog. Cu toate acestea, puteศ›i utiliza ecrane ศ™i รฎn alte programe ABAP, cum ar fi programe executabile sau module funcศ›ionale. Primul bloc de procesare este apoi numit diferit; de exemplu, de mediul de rulare sau de un apel de procedurฤƒ. Secvenศ›a de ecran este apoi pornitฤƒ folosind instrucศ›iunea CALL SCREEN.

Logica fluxului de ecran

Logica de flux de ecran este รฎmpฤƒrศ›itฤƒ รฎn primul rรขnd รฎn patru componente.

  • Proces รฎnainte de ieศ™ire (PBO) eveniment: care este procesat รฎnainte ca ecranul sฤƒ fie afiศ™at
  • Proces dupฤƒ introducere (PAI) eveniment: care este procesat dupฤƒ o acศ›iune a utilizatorului pe ecran
  • Proces la cererea de ajutor (P.O.H.): care este procesat atunci cรขnd este apฤƒsat F1
  • Procesare la cerere de valoare (POV): care este procesat atunci cรขnd este apฤƒsat F4

POH ศ™i POV sunt explicate รฎn detaliu pe pagina despre proces privind cererea de valoare ศ™i proces privind cererea de ajutor.

Dynpro

  • Un ecran รฎmpreunฤƒ cu logica sa de flux se numeศ™te Dynpro (โ€žProgram dinamicโ€, deoarece logica fluxului ecranului influenศ›eazฤƒ fluxul programului).
  • Fiecare dynpro controleazฤƒ exact un pas al programului de dialog.
  • Ecranele aparศ›inรขnd unui program sunt numerotatSecvenศ›a fluxului de ecrane poate fi liniarฤƒ sau ciclicฤƒ. Din cadrul unui lanศ› de ecrane, puteศ›i chiar apela un alt lanศ› de ecrane ศ™i, dupฤƒ procesarea acestuia, puteศ›i reveni la lanศ›ul original. De asemenea, puteศ›i suprascrie ecranul urmฤƒtor definit static din modulele de dialog ale programului ABAP.

Bazin de module ABAP

  • La un eveniment PBO sau PAI, un Dynpro apeleazฤƒ un program de dialog ABAP. Colecศ›ia de astfel de programe se numeศ™te pool de module ABAP.
  • De exemplu, modulele apelate la evenimentul PAI sunt folosite pentru a verifica intrarea utilizatorului ศ™i pentru a declanศ™a paศ™ii de dialog corespunzฤƒtori, cum ar fi sarcina de actualizare.
  • Toศ›i dynpros sฤƒ fie chemaศ›i din interior unu tranzacศ›ia se referฤƒ la un grup comun de module.

Structura unui program de dialog

Structura unui program de dialog

Diagrama structurii aratฤƒ modul รฎn care codul tranzacศ›iei, ecranele, starea interfeศ›ei grafice ศ™i setul de module sunt legate de acelaศ™i program principal.

Fluxul de proces pentru un program de dialog

Fluxul de proces pentru un program de dialog

Diagrama fluxului procesului aratฤƒ alternanศ›a dintre ecran ศ™i programul ABAP: PBO completeazฤƒ cรขmpurile ecranului, utilizatorul acศ›ioneazฤƒ, iar PAI proceseazฤƒ datele de intrare รฎnainte de apelarea urmฤƒtorului ecran.

Cum se creeazฤƒ un program de grup de module

Componentele de mai sus sunt create รฎntr-o ordine fixฤƒ. Paศ™ii de mai jos construiesc o tranzacศ›ie funcศ›ionalฤƒ dintr-un pool de module gol.

  1. Creaศ›i pool-ul de module: รŽn SE80 sau รฎn SE38, creaศ›i un program al cฤƒrui nume รฎncepe cu SAPMZ ศ™i setaศ›i tipul de program la M โ€“ Grup de moduleTipul nu poate fi modificat ulterior fฤƒrฤƒ a ศ™terge obiectul.
  2. Declaraศ›i datele globale: Plasaศ›i instrucศ›iunea TABLES ศ™i variabilele globale รฎn include-ul TOP, pe care fiecare modul de dialog al pool-ului รฎl poate citi.
  3. Proiectaศ›i ecranul: Creaศ›i ecranul 100 cu ajutorul funcศ›iei Screen Painter (SE51), plasaศ›i cรขmpurile de introducere pe layout ศ™i introduceศ›i urmฤƒtorul numฤƒr de ecran รฎn atributele ecranului.
  4. Scrieศ›i logica fluxului: รŽn fila Logicฤƒ de flux, apelaศ›i un modul pentru PBO ศ™i unul pentru PAI, aศ™a cum se aratฤƒ mai jos.
  5. Construiศ›i starea interfeศ›ei grafice: Creaศ›i o stare cu ajutorul Meniului Painter (SE41) ศ™i setaศ›i-l รฎn modulul PBO cu instrucศ›iunea SET PF-STATUS, astfel รฎncรขt Save, Back ศ™i Exit sฤƒ ajungฤƒ รฎn program ca ศ™i coduri de funcศ›ie.
  6. Asociaศ›i un cod de tranzacศ›ie: รŽn SE93, creaศ›i o tranzacศ›ie de dialog, denumiศ›i grupul de module ศ™i introduceศ›i 100 ca ecran iniศ›ial.
* 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.

๐Ÿ’ก Sfat: LEAVE TO SCREEN 0 รฎncheie ecranul curent ศ™i revine la punctul de apelare, aceasta fiind modalitatea standard de a pฤƒrฤƒsi curat o tranzacศ›ie de dialog.

รŽntrebฤƒri frecvente

CALL SCREEN deschide un ecran nou ศ™i pฤƒstreazฤƒ ecranul apelant รฎn stivฤƒ, astfel รฎncรขt procesarea revine la acesta. LEAVE TO SCREEN รฎnlocuieศ™te ecranul curent ศ™i nimic nu se รฎntoarce la apelant.

Un grup de module numit SAPMZDEMO este รฎmpฤƒrศ›it รฎn MZDEMOTOP pentru date globale, MZDEMOO01 pentru module PBO, MZDEMOI01 pentru module PAI ศ™i MZDEMOF01 pentru subrutine. Atelierul de lucru le genereazฤƒ automat.

Daศ›i funcศ›iei butonului tipul E รฎn interfaศ›a graficฤƒ ศ™i apelaศ›i modulul sฤƒu cu comanda MODULE exit AT EXIT-COMMAND. Modulul ruleazฤƒ apoi รฎnainte de validarea cรขmpului, astfel รฎncรขt utilizatorul poate pฤƒrฤƒsi un ecran cu intrฤƒri nevalide.

Da. Asistenศ›ii AI din cadrul instrumentelor de dezvoltare ABAP redacteazฤƒ modulele PBO ศ™i PAI, instrucศ›iunea CASE pe SY-UCOMM ศ™i validฤƒrile cรขmpurilor dintr-o descriere a ecranului. Layout-ul รฎn sine este รฎncฤƒ desenat รฎn Ecran. Painter.

Dynpros รฎncฤƒ ruleazฤƒ fiecare piesฤƒ clasicฤƒ SAP Tranzacศ›ie GUI. Noile interfeศ›e utilizator sunt de obicei construite cu Fiori, iar instrumentele de inteligenศ›ฤƒ artificialฤƒ ajutฤƒ prin citirea logicii de flux existente ศ™i propunerea unui design echivalent pentru servicii ศ™i aplicaศ›ii.

Rezumaศ›i aceastฤƒ postare cu: