Dialog
Dialog
2 Legen Sie ein Dynpro über den integrierten Screen Painter an...........................5
2.1 Object Navigator.............................................................................................6
2.2 Definieren Sie einen Rahmen.........................................................................7
2.3 Definieren Sie die Eingabeanwahl..................................................................7
15 Lagern Sie ihren zu aktualisierenden Datensatz in einer Work-Area zwischen und prüfen Sie die
Update-Relevanz.....................................................................................................29
15.1 Work-Area integrieren..................................................................................29
15.2 Übergabe der Werte konditionieren..............................................................29
16 User befragen..........................................................................................................29
19 Felder aus/einblenden............................................................................................33
19.1 Blenden Sie Felder die das Gehalt betreffen individuell aus / ein................33
SAP Menü
Object Navigator
>Repository Browser<
>lokale Objekte<
Enter
Enter
>sichern<
>lokales Objekt<
>Objektliste anzeigen <
>aktivieren <
enter
Favoriten
+ Hinzufügen
Favoriten
+ Programme
+ + ihr relevantes
==========================================================
Prosa
Dynpro ist die Abkurzung fur Dynamisches Programm. Ein Dynpro ist ein Objekt des Repositorys
und liegt immer als Komponente eines ABAP-Programms vor. Es besteht aus einem Bildschirmbild
mit seinen Bildschirmelementen und der Dynpro-Ablauflogik. Den Bildschirmelementen
sind Dynpro-Felder zugeordnet. Die Ablauflogik enthalt Verarbeitungsblocke fur
Ereignisse, die vor dem Senden eines Bildschirmbildes und nach Benutzeraktionen auf dem
angezeigten Bildschirmbild ausgelost werden. Dynpros sind damit neben den weborientierten
Neuerungen von SAP NetWeaver die Grundlage fur Benutzerdialoge auf einem AS ABAP.
Das SAP GUI prasentiert auf dem Bildschirm das Bildschirmbild eines Dynpros in einem GUIFenster.
Das Bildschirmbild kann Bildschirmelemente zum Anzeigen von Inhalten oder zur Entgegennahme von Benutzeraktionen enthalten. Das Bildschirmbild
und seine Bildschirmelemente werden mit dem Layout Editor des Werkzeugs Screen Painter bearbeitet. Jedes Bildschirmelement hat Eigenschaften,
die im Screen Painter statisch vordefiniert und teilweise dynamisch im ABAP-Programm modifiziert werden konnen.
Als weiteren Teil der grafischen Benutzeroberflache enthalt jedes Standardfenster eine Menuleiste,
eine Systemfunktionsleiste und eine Anwendungsfunktionsleiste. GUI-Fenster, die als
modales Dialogfenster angezeigt werden, enthalten nur eine Anwendungsfunktionsleiste. Die
Leisten sind eigenstandige Komponenten des ABAP-Programms und werden in einem GUIStatus
zusammengefasst und uber Setzen des GUI-Status einem Dynpro zugeordnet. Neben
den grafischen Elementen ist die Funktionstastenbelegung Teil der Benutzeroberflache, die
ebenfalls als eigenstandige Komponente des ABAP-Programms definiert und ebenfalls Teil
eines GUI-Status ist. Die Komponenten des GUI-Status und der GUI-Status selbst werden mit
dem Werkzeug Menu Painter bearbeitet, wobei im Wesentlichen die von der Benutzeroberflache
prasentierten Bedienelemente mit Funktionscodes verknupft werden, die im ABAPProgramm
auswertbar sind. Die Bezeichnung des aktuellen GUI-Status kann dem Systemfeld
sy-pfkey entnommen werden.
Vervollstandigt wird ein GUI-Fenster durch die Titel- und Statusleiste. Die Titelleiste, die
ebenfalls mit dem Menu Painter bearbeitet wird, enthalt die Uberschrift des GUI-Fensters. Die
Statusleiste zeigt Informationen an, die unter anderem wahrend der Ausfuhrung eines ABAPProgramms
durch die MESSAGE-Anweisung gesendet werden konnen. Auserdem enthalt sie Systeminformationen, die uber ein Icon auf der rechten Seite der
Leiste ein- und ausgeblendet werden konnen.
Das Bildschirmbild eines Dynpros wird im Layout Editor des Screen Painters erstellt. Das Bildschirmbild des Programms DEMO_DYNPRO enthalt alle
moglichen Bildschirmelemente. Oberhalb des Bildschirmbildes sind Menuleiste, Systemfunktionsleiste (Symbolleiste), Titelleiste und
Anwendungsfunktionsleiste (Buttonleiste), unterhalb ist die Statusleiste angeordnet.
Nach der PBO-Verarbeitung (Process Before Output) und vor dem Senden des Bildschirmbildes erfolgt ein Datentransport globaler Datenobjekte des
zugehorigen ABAP-Programms zu gleichnamigen Dynpro-Feldern. Nach einer Benutzeraktion auf dem Bildschirmbild und vor oder wahrend der PAI-
Verarbeitung (Process After Input) erfolgt der Datentransport in umgekehrter
Reihenfolge. Zum Zeitpunkt PAI werden zunachst die Inhalte aller Dynpro-Felder, die keinem Table Control oder Steploop angehoren und in keiner
FIELD-Anweisung aufgefuhrt werden in die gleichnamigen Felder des ABAP-Programms
SAP Menü
+ Werkzeuge
+ + ABAP Workbench
+ + + Übersicht
+ + + + SE80 - Object Navigator
>Repository Browser<
>ihr Programm<
enter
>layout<
Springen
+ Sekundaerfenster
+ + Dict/Programmfelder
enter
>Popup schliessen<
>Defnieren Sie den Funktionstyp durch Doppelklick auf das jeweilige Symbol und Eintrag des Typs 'E'
>Aktivieren im Gesamtkontext
SAP Menü
+ Werkzeuge
+ + ABAP Workbench
+ + + Übersicht
+ + + + SE80 - Object Navigator
Object Navigator
>Repository Browser<
===================================================================
Prosa
Die Anweisung MODULE der Dynpro-Ablauflogik ruft das Dialogmodul mod des ABAP-Programms auf. MODULE kann entweder als Schlusselwort oder
als Zusatz der Anweisung FIELD verwendet werden. Bei der Verwendung als Zusatz ist der Aufruf des Dialogmoduls von Bedingungen an Dynpro-
Felder abhangig.
====================================================================
>Enter x 4
>Pretty Printer<^
>aktivieren<
SAP Menü
+ Werkzeuge
+ + ABAP Workbench
+ + + Übersicht
+ + + + SE80 - Object Navigator
>Repository Browser<
>ihr Programm<
> <
> <
> <
> <
> <
> <
> <
>Enter x 4
=========================================
module basic_100_200 output.
set pf-status 'BASIC_100_200'.
set titlebar '100'.
endmodule.
=========================================
>Pretty Printer<
>Enter
>Enter
>aktivieren<
komplettes Programm aktivieren + testen (Breakpoint im neuen Modul auf Zeile 10)
SAP Menü
+ Werkzeuge
+ + ABAP Workbench
+ + + Übersicht
+ + + + SE80 - Object Navigator
Object Navigator
>Repository Browser<
>ihr Dynpro<
>ändern<
> <
> x 2<
> <
> <
> <
> <
> <
> <
> <
=======================================================
Prosa
Die Anweisung FIELD der Dynpro-Ablauflogik steuert wahrend des Ereignisses PAI den Datentransport vom Dynpro an das ABAP-Programm. Daruber
hinaus kann sie mit der Anweisung MODULE verknupft werden, um Dialogmodule bedingt aufzurufen, um eine Uberprufung der Eingabe zu
ermoglichen. Wenn die Anweisung FIELD im Ereignisblock zu PAI mit einer MODULE-Anweisung verknupft ist, steuert sie die Behandlung von
Warnungen und Fehlermeldungen, die im aufgerufenen Modul mit der Anweisung MESSAGE gesendet werden.
=====================================================
>Testen<
==============================================================================
Prosa
Diese Bedingung bewirkt, dass das Modul mod nur dann aufgerufen wird, wenn dynp_field bei einem eingabebereiten Dynpro-Feld nicht leer ist. Alle
Dynpro-Felder mit Ausnahme solcher vom Typ STRING oder SSTRING gelten als leer, wenn sie in der Bildschirmdarstellung ausschlieslich
Leerzeichen enthalten. Dynpro-Felder vom Typ STRING und SSTRING gelten als leer, wenn sie keine Zeichen enthalten. Falls das Eingabefeld das
spezielle Attribut *-Eingabe besitzt und der Benutzer einen Stern als erstes Zeichen in das Eingabefeld des Dynpro-Feldes dynp_field eingegeben hat,
ist die Bedingung ON INPUT jedoch nicht erfullt. In der Bildschirmanzeige ist ein leeres Feld vom Typ STRING oder SSTRING dadurch erkennbar, dass
der Cursor nur auf den Beginn des Feldes gesetzt werden kann.
==============================================================================
Gehen Sie mit dem Zusatz "on input" um und testen Sie den Ablauf (Debugging)
==========================================================================
Prosa
========================================================================
=====================================================
Prosa
Diese Bedingung bewirkt, dass das Modul mod nur dann aufgerufen wird, wenn der Wert des Dynpro-Feldes dynp_field seit dem Ereignis PBO durch
eine Eingabe verandert wurde. Als Eingabe gilt auch, wenn eine bereits vorhandene Eingabe mit dem gleichen Wert uberschrieben oder explizit der
Initialwert des Feldes eingegeben wird.
======================================================
Testen Sie den Unterschied
> <
> <
> <
> <
> <
>Folgebild anpassen<
>alles aktivieren<
>testen<
==============================================================
Prosa
In Ihren ABAP-Programmen sollten Sie statt mit SY-UCOMM mit dem Feld OK_CODE arbeiten.
Erstens hat das ABAP-Programm die volle Kontrolle über die darin deklarierten Felder, und zweitens sollten Sie niemals den Wert eines ABAP-
Systemfelds ändern.
Globale Datendeklarationen:
Statt eines Menüpunktes oder eines Druckknopfes kann man einen Funktionscode auch in das Kommando-Feld eingeben, was zum Übertragen des
FCodes in die OK-Code-Variable führt.
=============================================================================
Im ersten PAI-Modul sollten Sie der Hilfsvariable den Inhalt des OK_FIELD zuweisen und anschließend das Feld OK_CODE löschen und mit der
Hilfsvariable weiterarbeiten.
Drucktasten beleben
===================================================
module basic_100_200 output.
data(input) = ''.
case save_ok.
when 'UPDATE'.
set pf-status 'BASIC_100_200' excluding 'UPDATE'.
input = 1.
when 'DISPLAY' or
' '.
set pf-status 'BASIC_100_200' excluding 'DISPLAY'.
endcase.
case sy-dynnr.
when 100.
set titlebar '100'.
when 200.
set titlebar '200'.
endcase.
endmodule.
==================================================
> <
> x 2<
> <
===================================================
===================================================
><
> <
> <
> <
>Primärtabelle angeben<
>Schreibsperre setzen<
Schreibsperre
Die gesperrten Daten können ausschließlich von einem Benutzer gelesen bzw. bearbeitet werden. Sowohl die Anforderung einer weiteren
Schreibsperre als auch einer Lesesperre werden abgewiesen.
Lesesperre
Mehrere Benutzer können gleichzeitig lesend auf dieselben Daten zugreifen. Sobald ein Nutzer jedoch die Daten bearbeitet, hat ein zweiter Benutzer
keinen Zugang auf diese Daten. Die Anforderungen weiterer Lesesperren werden akzeptiert, auch wenn diese von anderen Benutzern kommen. Eine
Schreibsperre wird abgewiesen.
erweiterte Schreibsperre
Während Schreibsperren mehrfach von der gleichen Transaktion angefordert und sukzessive wieder abgebaut werden können, kann eine Erweiterte
Schreibsperre auch von der gleichen Transaktion nur ein einziges Mal angefordert werden. Jede weitere Anforderung einer Sperre wird abgewiesen.
> <
> <
> <
><
> <
> <
> <
><
><
> <
>Eintrag sichten<
in den [Link] wechseln
> x 3<
> <
> <
> <
> <
15 Lagern Sie ihren zu aktualisierenden Datensatz in einer Work-Area zwischen und prüfen Sie die Update-Relevanz
Anpassung 1 in Zeile 12
Anpassung im 200er-PAI
========================================================================================
process before output.
module basic_100_200.
module feldsteuerung.
*
process after input.
chain.
field: ztb_pstamm_xx-zfenachname,
ztb_pstamm_xx-zfevorname,
ztb_pstamm_xx-zfegeburtstag,
ztb_pstamm_xx-zfestunden,
ztb_pstamm_xx-zfeunit,
ztb_pstamm_xx-zfegehalt,
ztb_pstamm_xx-zfewaehrung.
module update_relevanz on chain-request.
endchain.
module user_command_0200.
module navigation at exit-command.
===============================================================================
16 User befragen
==============================================================
if wa_ztb_pstamm_xx ne ztb_pstamm_xx.
perform user_abfrage changing answer.
case answer.
when '1'. " Update
perform verbuchung on commit.
when '2'. " Kein Update
ztb_pstamm_xx = wa_ztb_pstamm_xx.
when 'A'. " Abbruch
endcase.
endif.
================================================================================
Anpassung im Top-Include
==================================================================================
form user_abfrage changing answer.
data answer.
call function 'POPUP_TO_CONFIRM'
exporting
titlebar = 'Personalstammdatenänderung'(004)
text_question = 'Daten wurden verändert ! Sichern ?'(001)
text_button_1 = 'Ja'(002)
text_button_2 = 'Nein'(003)
display_cancel_button = 'X'
importing
answer = answer
exceptions
text_not_found =1
others = 2.
if sy-subrc <> 0.
* Implement suitable error handling here
endif.
================================================================================
================================================================================
form verbuchung .
break pwd.
endform.
================================================================================
17 Verbuchungskonzept
Funktionsgruppe anlegen
Funktionsbaustein anlegen
Schnittstelle benennen
===========================================================
function zfgztb_pstamm_xx_vb.
*"----------------------------------------------------------------------
*"*"Lokale Schnittstelle:
*" IMPORTING
*" VALUE(IM_ZTB_PSTAMM_XX) TYPE ZTB_PSTAMM_XX
*" EXCEPTIONS
*" TEST
*"----------------------------------------------------------------------
modify ztb_pstamm_xx from im_ztb_pstamm_xx.
if im_ztb_pstamm_xx-zfenachname cs 'Ki'.
raise test.
endif.
endfunction.
============================================================
Eigenschaften einstellen
=======================================================
form verbuchung .
break pwd.
=======================================================================
=============================================================
form verbuchung .
break pwd.
19 Felder aus/einblenden
19.1 Blenden Sie Felder die das Gehalt betreffen individuell aus / ein
Elementliste
Layout
Top-Include erweitern
==================================================================
module feldsteuerung output.
loop at screen.
screen-input = input.
if screen-group1 eq 'KEY'.
screen-input = 0.
endif.
screen-invisible = 0.
if screen-group1 eq 'MIT'.
if ohne = 'X'.
screen-invisible = 1.
endif.
endif.
modify screen.
endloop.
endmodule.
==============================================================
=========================================================================
data: lo_alv_display type ref to if_salv_gui_table_ida.
data: lo_container_d0300 type ref to cl_gui_custom_container.
data: fcode type table of sy-ucomm.
=========================================================================
Layout
Ablauflogik
Module basic_100_200
im 300er Bild
im 300er Bild
====================================================================================
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
form pbo .
if lo_container_d0300 is not bound.
lo_container_d0300 = new #( 'D0300' ).
========================================================================================
save_ok = ok_code.
clear ok_code.
case save_ok.
when con_exit or con_back or con_canc.
* lo_alv_display->free( ).
set screen 100.
leave screen.
endcase.
======================================================================================
Aktivieren + testen