Hier ein kleines Programm, um alle Favoriten eines Users zu löschen.
Recht praktisch, wenn man die Favoriten vereinheitlichen will und in regelmässigen Abständen abstimmt.
Wird alle ausgewählt, so werden alle T-Codes gelöscht, wenn im Echtlauf.
Wird echt ausgewählt, so ist der Echtlauf aktiviert.
Das Programm löscht nur für den angemeldeten User.
*&---------------------------------------------------------------------*
*& Report Z_SAP_FAVORITE_DELETE
*&---------------------------------------------------------------------*
*& Demo program to export data from a user favorite menu
*&---------------------------------------------------------------------*
REPORT z_sap_favorite_delete.
* Testprogramm zum Löschen von einer Transaktion aus den Favoriten
TABLES smen_buffc.
*TYPES: gtt_smen_c TYPE TABLE OF smen_buffc.
*data: gt_smen_c TYPE TABLE OF smen_buffc,
*
* gv_smen_c like LINE OF gt_smen_c.
*
*data: begin of gs_file,
*
* rtype like smen_buffc-reporttype,
*
* parent_id like smen_buffc-parent_id,
*
* object_id like smen_buffc-object_id,
*
* tcode like smen_buffc-report,
*
* text like smen_buffc-text,
*
* sap_guid like smen_buffc-sap_guid,
*
* end of gs_file.
DATA: char50 TYPE char50.
SELECT-OPTIONS so_tcode FOR char50 DEFAULT 'MMBE'.
PARAMETERS p_alle TYPE xfeld AS CHECKBOX DEFAULT abap_false.
PARAMETERS p_echt TYPE xfeld AS CHECKBOX DEFAULT abap_false.
DATA: lv_text(100) TYPE c.
DATA lv_text1(10) TYPE c.
DATA lv_zahl TYPE integer.
*Testlauf
IF p_echt IS INITIAL.
IF p_alle IS INITIAL.
lv_text = 'Testlauf Löschen eines TCodes.'.
cl_demo_output=>write_text( lv_text ).
SELECT COUNT(*) FROM smen_buffc INTO lv_zahl WHERE
report IN so_tcode AND
uname = sy-uname.
ELSE.
lv_text = 'Testlauf Löschen aller TCodes und Menüs.'.
cl_demo_output=>write_text( lv_text ).
SELECT COUNT(*) FROM smen_buffc INTO lv_zahl WHERE
uname = sy-uname.
ENDIF.
"CHECK sy-subrc EQ 0.
MOVE sy-dbcnt TO lv_text1.
CONCATENATE lv_text1 'TCodes/Menüs für angemeldeten User würden gelöscht werden'
INTO lv_text SEPARATED BY space.
cl_demo_output=>write_text( lv_text ).
cl_demo_output=>display( ).
ELSE.
*Echtlauf
IF p_alle IS INITIAL.
lv_text = 'Echtlauf Löschen eines Tcodes.'.
cl_demo_output=>write_text( lv_text ).
DELETE FROM smen_buffc WHERE
report IN so_tcode AND
uname = sy-uname.
ELSE.
lv_text = 'Echtlauf Löschen eines Tcodes.'.
cl_demo_output=>write_text( lv_text ).
DELETE FROM smen_buffc WHERE
"report IN so_tcode AND
uname = sy-uname.
endif.
"CHECK sy-subrc EQ 0.
MOVE sy-dbcnt TO lv_text1.
CONCATENATE lv_text1 'TCode/Menüs für angemeldeten User wurden gelöscht'
INTO lv_text SEPARATED BY space.
cl_demo_output=>write_text( lv_text ).
cl_demo_output=>display( ).
ENDIF.
EXIT.