Back to Main Index

*
* This abap reports mass delete is useful if you have lots of unwanted
* program to clean up.
*
* Create a Menu Status 'STANDARD' with the fields
* BACK and DELE
*
* You have to protect this program either by authorization or hardcoded
* user name checks.
*
report zborra_reports.

tables: trdir, trdirt.

type-pools: slis.
data: gt_fieldcat type slis_t_fieldcat_alv with header line,
      gs_layout type slis_layout_alv,
      g_repid like sy-repid.

types: begin of st_output,
        marca(1),
        name  like trdir-name,
        subc  like trdir-subc,
        cnam  like trdir-cnam,
        cdat  like trdir-cdat,
        text  like trdirt-text,
       end of st_output.

data: gt_output type standard table of st_output with header line.
data: alv_events   type slis_t_event.

selection-screen begin of line.
selection-screen comment (35) comment1.
select-options   s_name  for trdir-name OBLIGATORY.
selection-screen end of line.
selection-screen begin of line.
selection-screen comment (35) comment2.
select-options   s_subc  for trdir-subc.
selection-screen end of line.
selection-screen begin of line.
selection-screen comment (35) comment3.
select-options   s_cnam  for trdir-cnam.
selection-screen end of line.
selection-screen begin of line.
selection-screen comment (35) comment4.
select-options   s_cdat  for trdir-cdat.
selection-screen end of line.

initialization.
  comment1 = 'ABAP Program Name'.
  comment2 = 'Program Type'.
  comment3 = 'Author'.
  comment4 = 'Created on'.

  g_repid = sy-repid.
 

start-of-selection.
  if sy-uname <> 'XXX'.
     WRITE: 'You are not authorized to run this report', sy-uname.
     exit.
  endif.

  perform toma_datos.

  perform init_fieldcat.
  perform init_layout.
  perform alv_build_eventtab using alv_events[].

  perform listado.
 

form init_fieldcat.

  gt_fieldcat-fieldname = 'MARCA'.
  gt_fieldcat-ref_tabname = ''.
  gt_fieldcat-input = 'X'.
  gt_fieldcat-checkbox = 'X'.
  gt_fieldcat-outputlen = 3.
  append gt_fieldcat. clear gt_fieldcat.

  gt_fieldcat-fieldname = 'NAME'.
  gt_fieldcat-ref_tabname = 'TRDIR'.
  append gt_fieldcat. clear gt_fieldcat.

  gt_fieldcat-fieldname = 'SUBC'.
  gt_fieldcat-ref_tabname = 'TRDIR'.
  append gt_fieldcat. clear gt_fieldcat.

  gt_fieldcat-fieldname = 'CNAM'.
  gt_fieldcat-ref_tabname = 'TRDIR'.
  append gt_fieldcat. clear gt_fieldcat.

  gt_fieldcat-fieldname = 'CDAT'.
  gt_fieldcat-ref_tabname = 'TRDIR'.
  append gt_fieldcat. clear gt_fieldcat.

endform.

form init_layout.

  gs_layout-zebra = 'X'.
  gs_layout-f2code = '&ETA'.
  gs_layout-detail_popup = 'X'.

endform.
 

form toma_datos.

  select * from trdir
    into corresponding fields of table  gt_output
   where name in s_name
     and subc in s_subc
     and cnam in s_cnam
     and cdat in s_cdat.

  loop at gt_output.
    select single text from trdirt
      into gt_output-text
     where name  = gt_output-name
       and sprsl = sy-langu.
    modify gt_output.
  endloop.
endform.

form listado.

  call function 'REUSE_ALV_LIST_DISPLAY'
    exporting
*   I_INTERFACE_CHECK              = ' '
*   I_BYPASSING_BUFFER             =
*   I_BUFFER_ACTIVE                = ''
    i_callback_program             = g_repid
*_CALLBACK_PF_STATUS_SET = ' '
* I_CALLBACK_USER_COMMAND = ' '
* I_STRUCTURE_NAME =
    is_layout                      = gs_layout
    it_fieldcat                    = gt_fieldcat[]
* IT_EXCLUDING =
* IT_SPECIAL_GROUPS =
* IT_SORT =
* IT_FILTER =
* IS_SEL_HIDE =
* I_DEFAULT = 'X'
* I_SAVE = ' '
* IS_VARIANT =
 it_events = alv_events[]
* IT_EVENT_EXIT =
* IS_PRINT =
* IS_REPREP_ID =
* I_SCREEN_START_COLUMN = 0
* I_SCREEN_START_LINE = 0
* I_SCREEN_END_COLUMN = 0
* I_SCREEN_END_LINE = 0
* IMPORTING
* E_EXIT_CAUSED_BY_CALLER =
* ES_EXIT_CAUSED_BY_USER =
tables      t_outtab                       = gt_output    exceptions
  program_error                  = 1
  others                         = 2            .

  if sy-subrc ne 0.
    message id sy-msgid type sy-msgty number sy-msgno            with
   sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  endif.
endform.                    " LISTADO
 

form build_comment using p_heading type slis_t_listheader.
  data: hline type slis_listheader,
        text(60) type c,
        sep(20) type c.
  clear: hline, text.
  hline-typ  = 'H'.
  write: 'List of Pending Deliveries' to text+05.
  hline-info = text.
  append hline to p_heading.
  clear text.
  write: 'User: ' to text,
         sy-uname to text+9,
         'Date: ' to text+30,
         sy-datum to text+37,
         'Page: ' to text+50,
         sy-pagno to text+56.
  hline-info = text.
  append hline to p_heading.

endform.                    " BUILD_COMMENT
 

form alv_build_eventtab using p_events type slis_t_event.
  data: ls_event type slis_alv_event.
  call function 'REUSE_ALV_EVENTS_GET'
       exporting
            i_list_type = 0
       importing
            et_events   = p_events.
  read table p_events with key name = slis_ev_top_of_page
                           into ls_event.
  if sy-subrc = 0.
    move slis_ev_top_of_page to ls_event-form.
    modify p_events from ls_event index sy-tabix.
  endif.
 

  read table p_events with key name = slis_ev_pf_status_set
                           into ls_event.
  if sy-subrc = 0.
    move slis_ev_pf_status_set to ls_event-form.
    modify p_events from ls_event index sy-tabix.
  endif.

  read table p_events with key name = slis_ev_user_command
                           into ls_event.
  if sy-subrc = 0.
    move slis_ev_user_command to ls_event-form.
    modify p_events from ls_event index sy-tabix.
  endif.

endform.                               " BUILD_EVENTTAB

form pf_status_set
   using pu_tab_excl_okcode type slis_t_extab.

  set pf-status 'STANDARD' excluding pu_tab_excl_okcode.

endform.

form user_command
  using pu_okcode type syucomm
        pu_selfield type slis_selfield.

  case pu_okcode.
    when 'DELE'.
      loop at gt_output where marca = 'X'.
        delete report gt_output-name.
        write:/ 'Report deleted ', gt_output-name.
      endloop.

    when 'DISP'.
      read table gt_output index pu_selfield-tabindex.
      if sy-subrc = 0.
      endif.
  endcase.
endform.