Diese Ablauflogik ist nur in folgender Bearbeitungssituation relevant: Sie bearbeiten ein Dokument (anlegen, ändern oder anzeigen) und möchten dieses Dokument mit einem anderen SAP-Objekt verknüpfen.
In diesem Bearbeitungsprozeß werden Daten zwischen folgenden Subscreens übertragen:
Trägerdynpro für die Bearbeitung der Dokuments
(Subscreen 1500, Funktionsgruppe CV130)
kundeneigener Subscreen für die Pflege der Verknüpfungsdaten
Hinweis
Weitere Informationen über die Kommunikation zwischen dem Trägerdynpro und dem kundeneigenem Subscreen finden Sie hier: Trägerdynpro und kundeneigener Subscreen .
Der Bildaufbau erfolgt im Verarbeitungsblock
Process Before Output
(PBO), der nach dem Aufruf eines Dynpros, aber vor der eigentlichen Bildanzeige verarbeitet wird.
Im SAP-System ist die Ablauflogik des Trägerdynpros 1500 (Programm SAPLCV130) vollständig programmiert. Über die BAdI-Schnittstelle wird der kundeneigene Subscreen für die Pflege der Objektverknüpfung dynamisch ermittelt.
Im PBO-Module DYN1500_INIT OUTPUT des BAdI wird die Instanz der Implementierung filterabhängig erzeugt. Der Filtertyp ist DOKOB
(Verknüpftes SAP-Objekt).
Die gelesenen Objektverknüpfungen (Tabelle DRAD) werden im Module DYN1500_SET_DATA an das Anwenderprogramm übergeben. Die Information, welcher Subscreen für die Pflege der Verknüpfungsdaten aufgerufen wird, enthält die von Ihnen angelegte Implementierung zum jeweiligen Filtertyp (Objekttyp).
Programmieren Sie im Screen Painter (Transaktion SE51) ein Programm mit folgender Ablauflogik:
Holen der Instanz zur Objektreferenz:
data object type ref to IF_EX_DOCUMENT_OBJ. ***get instance CALL METHOD CL_EXITHANDLER=>GET_INSTANCE_FOR_SUBSCREENS CHANGING INSTANCE = object.
Übergabe der Daten über die Methode GET_DATA von der Applikationsseite
Aufbereiten der Daten als Table Control
Die Bildabarbeitung erfolgt im Verarbeitungsblock
Process After Input
(PAI), der nach der Anzeige eines Dynpros verarbeitet wird. Dieser Verarbeitungsblock ruft Module in ABAP-Programmen auf und legt dadurch fest, welche Verarbeitung nach einer Benutzeraktion auf dem Bildschirm stattfindet.
Dem Anwendungsprogramm wird der Funktionscode übergeben. An dieser Stelle kann vom Anwendungsprogramm über die Methode GET_FUNCTION_CODE der jeweilige Funktionscode ermittelt werden.
In der Implementierung kann der Funktionscode über im hierfür vorgesehenen Attribut gespeichert und übergeben werden:
IF_EX_DOCUMENT_OBJ~FUNCTION_CODE = FUNCTION_CODE.
bzw.
FUNCTION_CODE = IF_EX_DOCUMENT_OBJ~FUNCTION_CODE.
Programmieren Sie im Screen Painter das Programm für die Bearbeitung des Dynpros. Der folgende Ablauf ist ein Vorschlag.
Übertragen der auf dem Table Control vorhandenen Daten über die Methode PUT_DATA
Die Markierungen müssen im Feld TAB_MARK der Schnittstellentabelle TAB_DRAD_WORK mit dem Zeichen 'X' geschrieben werden.
Für die Eingabeprüfung (field-Anweisung) auf dem Table Control kann folgender Baustein verwendet werden:
cv140_links_check
.
CALL FUNCTION 'CV140_LINKS_CHECK' EXPORTING: pf_check_exist = space pf_check_authority = 'X' pf_check_enq = 'X' pf_check_1_n = '' pf_dokob = 'X' pf_dokst = gs_draw_SAVE-dokst PF_TYPE_CHECK = 'D' TABLES: pt_check_links = lt_check_drad EXCEPTIONS: found_error = 1 OTHERS = 2. IF sy-subrc <> 0. LOOP AT lt_check_drad WHERE check_flag CA 'X'. EXIT. ENDLOOP. CASE sy-fdpos. WHEN '0'. MESSAGE e284(26) WITH lt_check_drad-dokob RAISING error. WHEN '1'. MESSAGE e285(26) WITH lt_check_drad-dokob RAISING error. WHEN '2'. MESSAGE e286(26) WITH lt_check_drad-dokob RAISING error. WHEN '3'. MESSAGE e287(26) WITH lt_check_drad-dokob RAISING error. WHEN '4'. MESSAGE e288(26) WITH lt_check_drad-dokob lt_check_drad-dokar RAISING error. ENDCASE. endif.
Um Datenschiefstände zu vermeiden, enthält die Ablauflogik des Trägerdynpros 1500 (Programm SAPLCV130) eine Prüfung der Verknüpfungsdaten:
Alte und neue Daten werden vom Baustein CV140_LINKS_CHECK geprüft.
Beim Auftreten eines Fehlers wird eine Nachricht vom Typ E (Error) ausgelöst.
Bevor die neuen Verknüpfungsdaten aus dem Table Control des kundeneigenen Subscreens gesichert werden, kann eine zusätzliche Sicherheitsabfrage erfolgen. Das Sichern der Verknüpfungsdaten kann hier auch abgebrochen werden:
Anwender:
Vor der Verarbeitung des Funktionscodes wird die Methode BEFORE_EXECUTE_FUNCTION aufgerufen. Wird das Kennzeichen lf_no_run gesetzt, werden keine Funktionen der Applikation ausgeführt.
Applikation:
Verarbeitung des OK-Codes für die markierten Einträge der übergebenen Tabelle TAB_DRAD_WORK .
Beim Ausführen eines Doppelklicks oder Auswählen der Funktion
Anzeigen
wird die Methode JUMP_TO_SCREEN aufgerufen. In dieser Methode muß der Absprung zum jeweiligen Objekt implementiert sein.