Code: Alles auswählen.
*---------------------------------------------------------------------*
* Report ZTEST_MIT_GOS2 *
* *
*---------------------------------------------------------------------*
* *
* *
*---------------------------------------------------------------------*
REPORT ztest_mit_gos2.
* SRGBTBREL Verknüpfungen im GOS Umfeld
* SGOSATTR SGOS: Attribute der generischen Dienste
DATA: go_myobject TYPE REF TO cl_gos_manager,
ls_object TYPE borident,
ls_service TYPE sgos_sels,
lt_service TYPE TABLE OF sgos_sels.
START-OF-SELECTION.
PARAMETERS: P_EBELN TYPE ebeln OBLIGATORY.
exit.
AT SELECTION-SCREEN OUTPUT.
CHECK NOT P_EBELN IS INITIAL.
SELECT SINGLE COUNT(*) FROM ekko WHERE ebeln = P_EBELN.
CHECK sy-subrc = 0.
LOOP AT SCREEN.
CHECK screen-name = 'P_EBELN'.
screen-input = '0'.
MODIFY SCREEN.
ENDLOOP.
IF go_myobject IS INITIAL.
* Schlüssel für generisches Objekt (hier der Einkaufbeleg)
* MUSS eindeutig sein!!!
ls_object-objkey = P_EBELN.
* Objekttype: ermittelbar über die TA SWO1
* ls_object-objtype = 'BUS2012'. "EINKAUF
* MEIN NEUER OBJECT-TYP !!!!! siehe Tabelle SRGBTBREL !!!!!
ls_object-objtype = 'ZTEST'.
* Ausblenden verschiedener Standardservices
* zu finden in der Tabelle SGOSATTR
SELECT name FROM sgosattr INTO ls_service-low WHERE
name NE 'VIEW_ATTA' AND
name NE 'NOTE_CREA' AND
name NE 'PCATTA_CREA'.
ls_service-sign = 'E'.
ls_service-option = 'EQ'.
* ls_service-low = sgosattr-name.
APPEND ls_service TO lt_service.
ENDSELECT.
* Aufruf des generischen Objekts
* !!!ip_no_commit speichert automatisch angelegt Objekte!!!
CREATE OBJECT go_myobject
EXPORTING
is_object = ls_object
ip_no_commit = ' '
it_service_selection = lt_service
EXCEPTIONS
OTHERS = 1.
***********
ENDIF.
Danke dies funktionniert. Aber wie kann ich die Methode aus BAdl zur Laufzeit aufrufen z.B. beim Löschen einer Anlage? Die Methode SELECT_SERVICES wird nur beim Erzeugen des Objekts angesteuert.Thomas R. hat geschrieben:Hallo Maxim,
Du kannst doch in dem BAdI - abhängig ob eine Anlage vorhanden ist oder nicht - das Anlegen zulassen oder nicht....
MfG
Thomas R.
Wie kann ich aber ein 'GO' für die Zerstörung bekommen? Sprich wie kann ich in meinem ABAP-Programm feststellen ob ein Button in der GOS-Toolleiste gedrückt wurde? Soweit ich weiß gift es für das Toolbar keine Events.Tron hat geschrieben:Moin.
Die einfachste Methode besteht sicherlich darin das GOS-Objekt wieder zu zerstören (nach Deinen Bedingungen ) und neu aufzubauen.
lg Jens
gemeint ist: je nachdem, ob eine Anlage existiert,den Menüpunkt ANLAGEN ein-,oder auszublenden. Das bedeutet, das niemand ein Dokument ablegen kann, wenn schon eines existiert. (allerdings auch nicht mal mehr anschauen)MaximJD hat geschrieben: Wie kann ich aber ein 'GO' für die Zerstörung bekommen? Sprich wie kann ich in meinem ABAP-Programm feststellen ob ein Button in der GOS-Toolleiste gedrückt wurde? Soweit ich weiß gift es für das Toolbar keine Events.
Genau das ist auch das Problem bei der dieser Lösung. Die Anlage soll schon in der Liste angezeigt werden, jedoch der Dienst für Neuanlage soll deaktiviert bleiben und zwar solange diese Anlage in der Liste existiert.Tron hat geschrieben:...Das bedeutet, das niemand ein Dokument ablegen kann, wenn schon eines existiert. (allerdings auch nicht mal mehr anschauen)...
Also in meinem Fall müsste man Dynpro wo sich das GOS-Objekt befindet schliessen und nochmal öffnen.Thomas R. hat geschrieben:Wird nun die Anlage gelöscht muss man einmal aus der Transaktion raus und wieder rein...
Thomas R.