Moin Alex,
(issn BADI = SE19)mit dem "Raise Cancel" wird die Freigabe abgelehnt.
Du müsstest, je nach Anforderung, noch auswerten, ob Du nur den Auftrag, oder Auftrag und Aufgabe prüfen/sperren willst. Wo sind die Dokumentationen zu finden ?
In etwa so:
Das DIALOG Flag bestimmt, ob Du im Hintergrund (= Space) freigibst.
Die Dokumentation eines TR-Auftrags kann mit
TR_DOCU_INTERFACE gelesen werden.
Beispiel
- Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
METHOD if_ex_cts_request_check~check_before_release
. DATA lv_strkorr
TYPE e070
-strkorr
. DATA lt_line
TYPE TABLE OF tline
.
* check sy-mandt ne '000'. "siehe unten
SELECT SINGLE strkorr
FROM e070
INTO lv_strkorr
WHERE trkorr
= request
.
* Prüfe auf AUFTRAG
IF lv_strkorr
IS INITIAL.
* komm Pfiffi .. such die Doku...
CALL FUNCTION 'TR_DOCU_INTERFACE'
EXPORTING
iv_object = request
iv_action = 'R'
iv_modify_appending = 'X'
tt_line = lt_line
EXCEPTIONS
ret_code = 1
iv_object_value_unallowed = 2
order_not_exist = 3
order_already_released = 4
no_authority = 5
user_not_owner = 6
locked_by_other = 7
OTHERS = 8.
* Implement suitable error handling here
* Doku muss vorhanden sein
* bei Hintergrundverarbeitung kein Popup
IF NOT dialog
IS INITIAL.
CALL FUNCTION 'POPUP_TO_INFORM'
EXPORTING
titel = lv_text
txt1 = '@8O@ Freigabe wurde abgelehnt :'(002)
txt2 = 'Keine Doku .. keine Freigabe !'(003).
* Freigabe verhindern
ENDIF."LT_LINE[] IS INITIAL
ENDIF."STRKORR NE INITIAL
- GeSHi ©
gruß Jens
Ps.: Das "Ganze" ist Mandantenübergreifend !
(Was in meinem Fall mal dazu führte, daß die Basis (externer Anbieter im Mandant 000) von meinem Freigabemechanismus nichts wusste und einen CALL bei SAP aufgemacht hat.
Das Popup sah wohl einfach
zu professionell aus.)
Vielleicht ein bisschen so: