Favoriten löschen

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.