REPORT zwiinbox NO STANDARD PAGE HEADING LINE-SIZE 170. ************************************************************************ * AUTHOR: Mike Mathieson mmathieson@hotmail.com * * CREATE DATE: 02/22/2001 * * DESCRIPTION: Delete Specified Tasks from a Users Inbox * ************************************************************************ ************************************************************************ * T A B L E S * ************************************************************************ TABLES: swwwlhead, swworgtask. ************************************************************************ * I N T E R N A L T A B L E S * ************************************************************************ DATA xhead LIKE swwwlhead OCCURS 100 WITH HEADER LINE. DATA xview LIKE hrwfuser_v OCCURS 1 WITH HEADER LINE. DATA: BEGIN OF itab OCCURS 100, cbox. INCLUDE STRUCTURE xhead. DATA: END OF itab. ************************************************************************ * D A T A * ************************************************************************ DATA: cbox VALUE 'X', xcol, w_index LIKE sy-index, w_agent LIKE swwwlhead-wi_aagent. ************************************************************************ * R A N G E S * ************************************************************************ RANGES: r_wi_id FOR swwwlhead-wi_id. ************************************************************************ * S E L E C T I O N - S C R E E N * ************************************************************************ SELECTION-SCREEN BEGIN OF BLOCK blk1 WITH FRAME TITLE text-001. PARAMETERS: p_user LIKE hrwfuser_v-objid OBLIGATORY DEFAULT sy-uname. SELECT-OPTIONS: s_task FOR swwwlhead-wi_rh_task, s_stat FOR swwwlhead-wi_stat, s_date FOR swwwlhead-wi_cd. SELECTION-SCREEN END OF BLOCK blk1. SELECTION-SCREEN BEGIN OF BLOCK blk2 WITH FRAME TITLE text-002. PARAMETERS: p_commit(3) TYPE n DEFAULT '10', p_dellog AS CHECKBOX DEFAULT 'X', p_delhis AS CHECKBOX DEFAULT 'X'. SELECTION-SCREEN END OF BLOCK blk2. ************************************************************************ * S T A R T - O F - S E L E C T I O N * ************************************************************************ START-OF-SELECTION. xview-otype = 'US'. xview-objid = p_user. APPEND xview. CALL FUNCTION 'RH_INBOX_VIEW_CREATE' TABLES inbox_view = xview wi_head = xhead EXCEPTIONS no_active_plvar = 1 no_tasks_found = 2 user_not_defined = 3 no_workitem_found = 4 OTHERS = 5. LOOP AT xhead WHERE wi_rh_task IN s_task AND wi_stat IN s_stat AND wi_cd IN s_date. MOVE-CORRESPONDING xhead TO itab. PERFORM get_wi_agent. IF w_agent = p_user. "Pre-mark workitems that are itab-cbox = 'X'. "only in this users inbox ENDIF. APPEND itab. ENDLOOP. SET PF-STATUS 'LIST'. PERFORM create_list. ************************************************************************ * A T U S E R - C O M M A N D * ************************************************************************ AT USER-COMMAND. CASE sy-ucomm . WHEN 'SELALL'. PERFORM select_all. WHEN 'CLRALL'. PERFORM clear_all. WHEN 'DELETE'. PERFORM get_selected_wi. PERFORM delete_work_items. ENDCASE. PERFORM create_list. *&---------------------------------------------------------------------* *& Form GET_WI_AGENT *&---------------------------------------------------------------------* FORM get_wi_agent. CLEAR w_agent. SELECT org_obj UP TO 1 ROWS FROM swworgtask INTO swworgtask-org_obj WHERE wi_id = itab-wi_id AND no_sel = ' '. IF swworgtask-org_obj(2) = 'US'. w_agent = swworgtask-org_obj+2(12). ENDIF. ENDSELECT. ENDFORM. " GET_WI_AGENT *&---------------------------------------------------------------------* *& Form DELETE_WORK_ITEMS *&---------------------------------------------------------------------* FORM delete_work_items. RANGES: r_type FOR swwwlhead-wi_type, " Always empty r_aagnt FOR swwwlhead-wi_aagent. " Always empty PERFORM create_wi_id_range. SUBMIT rswwwide WITH it_aagnt IN r_aagnt WITH it_id IN r_wi_id WITH it_stat IN s_stat WITH it_cd IN s_date WITH it_type IN r_type WITH i_commit = p_commit WITH i_dellog = p_dellog WITH i_disply = 'X' AND RETURN. CHECK p_delhis = 'X'. SUBMIT rswwhide WITH it_agent IN r_aagnt WITH it_cd IN s_date WITH it_id IN r_wi_id WITH i_commit = p_commit WITH i_disply = 'X' AND RETURN. ENDFORM. " DELETE_WORK_ITEMS *&---------------------------------------------------------------------* *& Form GET_SELECTED_WI *&---------------------------------------------------------------------* FORM get_selected_wi. DO. CHECK sy-index > 2. w_index = sy-index - 2. READ TABLE itab INDEX w_index. IF sy-subrc NE 0. EXIT. ENDIF. READ LINE sy-index FIELD VALUE itab-cbox. MODIFY itab INDEX w_index. ENDDO. ENDFORM. " GET_SELECTED_WI *&---------------------------------------------------------------------* *& Form CREATE_WI_ID_RANGE *&---------------------------------------------------------------------* FORM create_wi_id_range. REFRESH r_wi_id. CLEAR r_wi_id. r_wi_id-sign = 'I'. r_wi_id-option = 'EQ'. LOOP AT itab WHERE cbox = 'X'. r_wi_id-low = itab-wi_id. APPEND r_wi_id. ENDLOOP. ENDFORM. " CREATE_WI_ID_RANGE *&---------------------------------------------------------------------* *& Form CREATE_LIST *&---------------------------------------------------------------------* FORM create_list. CLEAR sy-lsind. FORMAT COLOR COL_HEADING. WRITE: /4 'Work Item', ' Created', ' Status', 170 space. ULINE. FORMAT RESET. LOOP AT itab. IF xcol IS INITIAL. xcol = 'X'. FORMAT COLOR OFF. ELSE. FORMAT COLOR COL_NORMAL. CLEAR xcol. ENDIF. WRITE: / itab-cbox AS CHECKBOX, itab-wi_id, itab-wi_cd, itab-wi_stat, itab-wi_text. ENDLOOP. ENDFORM. " CREATE_LIST *&---------------------------------------------------------------------* *& Form SELECT_ALL *&---------------------------------------------------------------------* FORM select_all. itab-cbox = 'X'. MODIFY itab TRANSPORTING cbox WHERE cbox = ' '. ENDFORM. " SELECT_ALL *&---------------------------------------------------------------------* *& Form CLEAR_ALL *&---------------------------------------------------------------------* FORM clear_all. itab-cbox = ' '. MODIFY itab TRANSPORTING cbox WHERE cbox = 'X'. ENDFORM. " CLEAR_ALL