Урок за диалогово програмиране: Модулен пул в SAP ABAP

⚡ Умно обобщение

Диалогово програмиране в SAP ABAP изгражда програми за модулни пулове, които взаимодействат с потребителя чрез екрани и променят съдържанието на базата данни. Тази страница обяснява кодовете на транзакциите, екраните, състоянието на графичния потребителски интерфейс, логиката на потока на екраните, dynpros и структурата на модулния пулов.

  • 💬 Основна дефиниция: Диалоговата програма обработва всяко потребителско взаимодействие, като например въвеждане на данни, избиране на елемент от менюто или щракване върху бутон, и може да актуализира базата данни.
  • 🅼 Тип програма: Диалоговите програми са модулни пулове от тип M, не могат да се изпълняват самостоятелно и трябва да бъдат прикачени към поне един код на транзакция с начален екран.
  • 🧩 Компоненти: Код на транзакция, екрани, състояние на графичния потребителски интерфейс, пулът от ABAP модули и логиката на потока заедно образуват едно диалогово приложение.
  • 🔄 Логика на потока: PBO се изпълнява преди да се появи екранът, PAI се изпълнява след действие на потребителя, POH отговаря на F1, а POV отговаря на F4.
  • Динпро: Екранът плюс неговата логика на потока е dynpro и всеки dynpro контролира точно една стъпка от диалоговия прозорец.
  • 📦 Модулна група: Всички dynpro-и, извикани в рамките на една транзакция, се отнасят до общ модулен пул, който съдържа диалоговите модули.
  • 🛠️ Път на създаване: SE80 създава пула модули, SE51 проектира екрана, SE41 изгражда графичния потребителски интерфейс за състоянието, а SE93 свързва кода на транзакцията.

SAP ABAP диалогово програмиране

Какво е диалогово програмиране?

SAP-ABAP поддържа два вида програми – програма за докладване и програма за диалог.

Ако вашата ABAP програма изисква потребителско въвеждане, се използва диалогово програмиране.

Потребителски диалог е всяка форма на взаимодействие между потребителя и програмата и може да бъде някоя от следните

  • Въвеждане на данни
  • Избор на елемент от менюто
  • Щракване върху бутон
  • Щракване или двойно щракване върху запис

Диалоговата програма се използва и когато трябва да навигираме напред и назад между екраните

Диалоговите програми се създават с тип 'M' – Модулен пул. Те не могат да бъдат изпълнени независимо и трябва да бъдат прикрепени към поне един код на транзакция, в който посочвате начален екран.

Разлика между отчетни и диалогови програми

Разлика между отчетни и диалогови програми

Програма за докладване:

Отчетът е програма, която обикновено чете и анализира данни в таблици на база данни, без да променя база данни.

Диалогова програма:

Диалоговата програма ви позволява да работите интерактивно със системата и да променяте съдържанието на таблиците на базата данни. Всяка диалогова програма има определена последователност от екрани, които се обработват от системата един след друг.

Критерии Програма за докладване Диалогова програма
Тип на програмата Тип 1, изпълним файл Тип M, модулен басейн
Достъп до база данни Чете и анализира данни Чете и променя данни
Изпълнение Работи самостоятелно Изпълнява се само чрез код на транзакция
контрол Събития от доклада Логика на екранния поток на всеки dynpro

Последователността на екрана при диалогова транзакция е по-лесна за следване с пример.

Примерна обработка на транзакции в диалогово програмиране

Обработка на примерна транзакция

Диаграмата проследява една транзакция от първия екран до актуализацията на базата данни. Потребителят въвежда данни на екран 100, PAI валидира записа и решава за следващия екран, екран 200 събира останалите данни и задачата за актуализация накрая записва записа. Всяка от тези стъпки се произвежда от компонентите, изброени по-долу.

Компоненти на диалоговата програма

За разлика от докладва което обикновено включва създаването на една автономна програма, която може да се изпълнява независимо от други обекти, разработването на диалогова програма включва разработване на множество обекти, нито един от които не може да се изпълнява сам. Вместо това всички обекти са йерархично свързани с главната програма и се изпълняват в последователност, продиктувана от главната диалогова програма.

Компонентите на диалоговата програма са:

Код на транзакцията

  • Кодът на транзакцията започва екранна последователност.
  • Създавате кодове на транзакции в браузъра на хранилището в ABAP Workbench или с помощта на транзакция SE93.
  • Кодът на транзакция е свързан с ABAP програма и начален екран.
  • Можете да стартирате екранна последователност от всяка ABAP програма, като използвате оператора CALL SCREEN.

Екрани

  • Всеки диалогов прозорец в SAP системата се управлява от един или повече екрани.
  • Вие създавате екрани с помощта на екрана Painter в ABAP Workbench чрез транзакция SE51
  • Всеки екран принадлежи на ABAP програма.
  • Тези екрани се състоят от „екранна маска“ или „оформление“ и нейната логика на потока. Екранът има оформление, което определя позициите на полетата за вход/изход и други графични елементи, като квадратчета за отметка и радио бутони. Логиката на потока определя логическата обработка в рамките на екрана.

GUI състояние

  • Всеки екран има статус(а) на GUI, които са независими компоненти на програма.
  • Това контролира лентите с менюта, стандартната лента с инструменти, лентата с инструменти на приложението, с която потребителят може да избира функции в приложението.
  • Вие ги създавате в ABAP Workbench с помощта на менюто Painter.

ABAP програма

  • Всеки екран и статус на GUI в системата R/3 принадлежат на една ABAP програма.
  • Програмата ABAP съдържа диалоговите модули, които се извикват от логиката на потока на екрана и също така обработват потребителския вход от състоянието на GUI.
  • ABAP програмите, които използват екрани, са известни също като диалогови програми.
  • В модулен пул (програма тип М); първият обработващ блок, който трябва да бъде извикан, винаги е диалогов модул. Можете обаче да използвате екрани и в други ABAP програми, като изпълними програми или функционални модули. След това първият блок за обработка се нарича по различен начин; например от средата за изпълнение или извикване на процедура. След това екранната последователност се стартира с помощта на оператора CALL SCREEN.

Логика на екрана

Логиката на екранния поток е разделена основно на четири компонента.

  • Процес преди извеждане (РВО) събитие: което се обработва преди показването на екрана
  • Процес след въвеждане (PAI) събитие: което се обработва след действие на потребителя на екрана
  • Процес при поискване за помощ (P.O.H.): който се обработва при натискане на F1
  • Обработка на заявка за стойност (POV):който се обработва при натискане на F4

POH и POV са обяснени подробно на страницата за процес на заявка за стойност и процес на заявка за помощ.

Dynpro

  • Екранът, заедно с неговата логика на потока, се нарича Dynpro („Динамична програма“, тъй като логиката на потока на екрана влияе върху потока на програмата).
  • Всеки dynpro контролира точно една стъпка от вашата диалогова програма.
  • Екраните, принадлежащи към дадена програма, са номерираниПоследователността на екранния поток може да бъде линейна или циклична. От една екранна верига можете дори да извикате друга екранна верига и след обработката ѝ да се върнете към оригиналната верига. Можете също така да презапишете статично дефинирания следващ екран от диалоговите модули на програмата ABAP.

ABAP модулен пул

  • При събитие PBO или PAI, Dynpro извиква ABAP диалогова програма. Колекцията от такива програми се нарича ABAP модулен пул.
  • Например модулите, извикани при събитието PAI, се използват за проверка на въведеното от потребителя и за задействане на подходящи диалогови стъпки, като например задачата за актуализиране.
  • Всички dynpros да бъдат извикани отвътре един транзакцията се отнася до общ модулен пул.

Структура на диалогова програма

Структура на диалогова програма

Структурната диаграма показва как кодът на транзакцията, екраните, състоянието на графичния потребителски интерфейс и пулът от модули са свързани към една и съща главна програма.

Поток на процеса за диалогова програма

Поток на процеса за диалогова програма

Диаграмата на потока на процеса показва редуването между екрана и ABAP програмата: PBO запълва полетата на екрана, потребителят действа, а PAI обработва входните данни, преди да се извика следващият екран.

Как да създадете програма за пул от модули

Горните компоненти се създават във фиксиран ред. Стъпките по-долу изграждат работеща транзакция от празен пул модули.

  1. Създайте пула от модули: В SE80 или SE38 създайте програма, чието име започва с SAPMZ и задайте типа на програмата на M – Модулен басейнТипът не може да бъде променен по-късно без изтриване на обекта.
  2. Декларирайте глобалните данни: Поставете оператора TABLES и глобалните променливи в TOP include, който всеки диалогов модул от пула може да чете.
  3. Проектирайте екрана: Създайте екран 100 с помощта на Screen Painter (SE51), поставете полетата за въвеждане върху оформлението и въведете следващия номер на екрана в атрибутите на екрана.
  4. Напишете логиката на потока: В раздела „Логика на потока“ извикайте един модул за PBO и един за PAI, както е показано по-долу.
  5. Изграждане на състоянието на графичния потребителски интерфейс: Създайте статус с Менюто Painter (SE41) и го задайте в PBO модула с командата SET PF-STATUS, така че Save, Back и Exit да достигнат до програмата като функционални кодове.
  6. Свържете код за транзакция: В SE93 създайте диалогова транзакция, наименувайте пула модули и въведете 100 като начален екран.
* 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.

💡 Съвет: LEAVE TO SCREEN 0 завършва текущия екран и се връща към точката на извикване, което е стандартният начин за чисто напускане на диалогова транзакция.

Въпроси и Отговори

CALL SCREEN отваря нов екран и запазва екрана на повикващия в стека, така че обработката се връща към него. LEAVE TO SCREEN замества текущия екран и нищо не се връща към повикващия.

Пул от модули с име SAPMZDEMO е разделен на MZDEMOTOP за глобални данни, MZDEMOO01 за PBO модули, MZDEMOI01 за PAI модули и MZDEMOF01 за подпрограми. Работната среда ги генерира автоматично.

Дайте на бутона функция тип E в състоянието на графичния потребителски интерфейс и извикайте неговия модул с MODULE exit AT EXIT-COMMAND. След това модулът се изпълнява преди валидиране на полетата, така че потребителят може да напусне екран с невалидни записи.

Да. AI асистентите в инструментите за разработка на ABAP изготвят PBO и PAI модулите, CASE оператора на SY-UCOMM и валидациите на полетата от описание на екрана. Самото оформление все още се изчертава на екрана. Painter.

Dynpros все още изпълнява всяка класическа музика SAP Транзакция с графичен потребителски интерфейс. Новите потребителски интерфейси обикновено се изграждат с Fiori, а инструментите с изкуствен интелект помагат, като четат съществуващата логика на потока и предлагат еквивалентен дизайн на услуга и приложение.

Обобщете тази публикация с: