Atta in Soffcont1
Atta in Soffcont1
* Program : ZFKMM089_OBJ_ATTA_NEW
* Narration : Find Objects with attachments in
* Author
: <Program Author>
* Place
: Mondi Paper - Merebank
* Date
: <date>
***********************************************************
REPORT zfkmm089_obj_atta_new NO STANDARD PAGE HEADING
LINE-SIZE 180 LINE-COUNT 65(3).
*---------------------------------------------------------*
*
Table Declarations
*---------------------------------------------------------*
TABLES: bhdgd,
"Common data area batch heading routine
tcdob, "Objects for change document creation
tojtt, "Texts Basic Data(SWo1 objects)
sood,
usr21,
soos1.
*---------------------------------------------------------*
*
Includes
*---------------------------------------------------------*
INCLUDE: zfi_general_data.
*---------------------------------------------------------*
*
Type Declarations
*---------------------------------------------------------*
TYPES: BEGIN OF t_soffcont1,
relid LIKE soffcont1-relid ,
phio_id LIKE soffcont1-phio_id ,
srtf2 LIKE soffcont1-srtf2 ,
ph_class LIKE soffcont1-ph_class ,
END OF t_soffcont1.
TYPES: BEGIN OF t_alv,
phio_id LIKE soffcont1-phio_id ,
loio_id LIKE soffphio-loio_id,
crea_user LIKE soffphio-crea_user,
crdat LIKE sood-crdat,
crtim LIKE sood-crtim,
objdes LIKE sood-objdes,
"filename
file_ext LIKE sood-file_ext,
* objlen LIKE sood-objlen, "size in bytes
objlen TYPE p,
objtp LIKE sood-objtp,
objyr LIKE sood-objyr,
objno LIKE sood-objno,
instid_a LIKE srgbtbrel-instid_a, "object key
typeid_a LIKE srgbtbrel-typeid_a, "BOR object type
stext LIKE tojtt-stext,
"BOR object type
cnt TYPE i,
END OF t_alv.
TYPES: tt_soffcont1 TYPE STANDARD TABLE OF t_soffcont1,
tt_alv TYPE STANDARD TABLE OF t_alv.
*---------------------------------------------------------*
*
Data Declarations
*---------------------------------------------------------*
* Internal table declarations
*---------------------------------------------------------*
"lcl_event_handler DEFINITION
*---------------------------------------------------------------------*
*
CLASS screen_init DEFINITION
*---------------------------------------------------------------------*
CLASS screen_init DEFINITION.
PUBLIC SECTION.
CLASS-METHODS init_screen.
METHODS
constructor.
PRIVATE SECTION.
DATA:
grid_container TYPE REF TO cl_gui_custom_container,
gs_print TYPE lvc_s_prnt,
le_handler TYPE REF TO lcl_event_handler.
METHODS
fill_grid.
ENDCLASS.
"screen_init DEFINITION
*---------------------------------------------------------------------*
*---------------------------------------------------------------------*
*
Implementations
*
*---------------------------------------------------------------------*
*---------------------------------------------------------------------*
CLASS lcl_event_handler IMPLEMENTATION.
* Used to add buttono to ALV toolbar
METHOD handle_toolbar.
DATA: ls_toolbar TYPE stb_button.
**-- Deleting unwanted tools from toolbar.
"handle_toolbar
ENDCLASS.
"lcl_event_handler IMPLEMENTATION
*----------------------------------------------------------------------*
*
CLASS screen_init IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS screen_init IMPLEMENTATION.
METHOD init_screen.
DATA screen TYPE REF TO screen_init.
CREATE OBJECT screen.
ENDMETHOD.
"init_screen
METHOD constructor.
CALL METHOD me->fill_grid.
ENDMETHOD.
"constructor
METHOD fill_grid.
IF grid_container IS INITIAL.
IF cl_gui_alv_grid=>offline( ) IS INITIAL.
CREATE OBJECT grid_container
EXPORTING
container_name = 'ALV_CONTAINER'
style
= cl_gui_custom_container=>ws_thickframe.
ENDIF.
CREATE OBJECT alv_grid
EXPORTING
i_parent = grid_container.
gs_variant-report
*
= sy-repid.
hotspot handler
CREATE OBJECT le_handler.
SET HANDLER le_handler->handle_toolbar FOR alv_grid.
CALL METHOD alv_grid->set_table_for_first_display
EXPORTING
is_layout
= gs_layout
is_variant
= gs_variant
is_print
= gs_print
i_save
i_default
CHANGING
it_outtab
it_fieldcatalog
it_sort
= 'A'
= 'X'
= gt_alv
= fc_fieldcat
= alv_sort_tab.
ELSE.
CALL METHOD alv_grid->set_frontend_layout
EXPORTING
is_layout = gs_layout.
CALL METHOD alv_grid->set_frontend_fieldcatalog
EXPORTING
it_fieldcatalog = fc_fieldcat.
CALL METHOD alv_grid->refresh_table_display.
ENDIF.
alv_grid->register_edit_event( cl_gui_alv_grid=>mc_evt_modified ).
ENDMETHOD.
"fill_grid
ENDCLASS.
"screen_init IMPLEMENTATION
*---------------------------------------------------------*
* User Input declarations
*---------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK b01 WITH FRAME TITLE ttl_01.
SELECT-OPTIONS: s_object FOR tojtt-name,"tcdob-object.
s_crdat FOR sood-crdat.
PARAMETERS: p_all RADIOBUTTON GROUP rb2,
p_s_typ RADIOBUTTON GROUP rb2,
p_s_usr RADIOBUTTON GROUP rb2.
*PARAMETERS: p_alv RADIOBUTTON GROUP rb1,
*
p_mail RADIOBUTTON GROUP rb1.
*SELECT-OPTIONS: s_user FOR usr21-bname.
SELECTION-SCREEN END OF BLOCK b01.
* ----------- INITIALIZATION EVENT -----------------------*
INITIALIZATION.
*...Get program transaction and do Authorisation check
PERFORM trans_auth_check(zz_forms).
ttl_01 = 'Enter selection criteria'.
* fill report header details
PERFORM fill_report_header.
* ----------- AT SELECTION-SCREEN EVENT ------------------*
AT SELECTION-SCREEN.
* ----------- AT LINE-SELECTION EVENT --------------------*
AT LINE-SELECTION.
* ----------- AT USER-COMMAND EVENT ----------------------*
AT USER-COMMAND.
* ----------- TOP-OF-PAGE
EVENT -----------------------*
TOP-OF-PAGE.
* display report header
FORMAT COLOR COL_HEADING INTENSIFIED ON.
PERFORM batch-heading(rsbtchh0).
FORMAT RESET.
* ----------- END-OF-PAGE
EVENT -----------------------*
END-OF-PAGE.
* ----------- START-OF-SELECTION EVENT -------------------*
START-OF-SELECTION.
PERFORM report_count(zz_forms).
PERFORM run_report.
* ----------- END-OF-SELECTION EVENT ---------------------*
END-OF-SELECTION.
*---------------------------------------------------------*
* Form : FILL REPORT HEADER
*---------------------------------------------------------*
FORM fill_report_header.
MOVE: '0'
sy-linsz
sy-uname
sy-repid
sy-title
sy-datum
sy-uzeit
TO
TO
TO
TO
TO
TO
TO
bhdgd-inifl,
bhdgd-lines,
bhdgd-uname,
bhdgd-repid,
bhdgd-line1,
bhdgd-datum,
bhdgd-zeit.
ENDFORM.
"fill_report_header
*&---------------------------------------------------------------------*
*&
Form RUN_REPORT
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM run_report .
*SOFFCONT1 -> SOFFPHIO -> SOFFLOIO -> SOOD
*SOFFPHIO- use phio_id from SOFFCONT1
*SOFFLOIO- use lo_id/lo_class from SOFFPHIO
*SOOD- use crea_user/chng_time from SOFFPHIO
*__________________________________________________________********
*SOFFPHIO-STOR_CAT must be SOFFDB(Storage for SAPoffice (database))
*SDOKSTCAE has STOR_CAT master data
DATA: l_kill.
PERFORM pre_checks CHANGING l_kill.
IF l_kill IS INITIAL.
PERFORM
PERFORM
PERFORM
PERFORM
PERFORM
*
soffcont1_sel.
soffphio_sel.
soffphf_sel.
sood_sel.
get_links.
ENDIF.
ENDFORM.
" RUN_REPORT
*&---------------------------------------------------------------------*
*&
Form PRE_CHECKS
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM pre_checks CHANGING p_kill.
* IF p_mail EQ 'X' AND
*
s_user-low IS INITIAL.
*
*
WRITE:/ 'Please provide mail recipient(s)'.
*
MOVE 'X' TO p_kill.
*
* ENDIF.
ENDFORM.
" PRE_CHECKS
*&---------------------------------------------------------------------*
*&
Form SOFFCONT1_SEL
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM soffcont1_sel .
DATA: l_cnt TYPE i,
lt_soffcont1 TYPE STANDARD TABLE OF t_soffcont1,
l_soffcont1 TYPE t_soffcont1,
l_alv TYPE t_alv.
SELECT * FROM soffcont1 INTO CORRESPONDING FIELDS OF TABLE lt_soffcont1.
* remove duplicates from the itab
DELETE ADJACENT DUPLICATES FROM lt_soffcont1 COMPARING phio_id.
* DESCRIBE TABLE gt_soffcont1 LINES l_cnt.
LOOP AT lt_soffcont1 INTO l_soffcont1.
MOVE l_soffcont1-phio_id TO l_alv-phio_id.
APPEND l_alv TO gt_alv.
ENDLOOP.
ENDFORM.
" SOFFCONT1_SEL
*&---------------------------------------------------------------------*
*&
Form SOFFPHIO_SEL
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM soffphio_sel .
DATA: l_alv TYPE t_alv,
l_soffphio TYPE soffphio.
ENDFORM.
" SOFFPHF_SEL
*&---------------------------------------------------------------------*
*&
Form SPLIT_FILENAME
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
*
-->P_L_SOFFPHF_FILE_NAME text
*
<--P_L_ALV text
*----------------------------------------------------------------------*
FORM split_filename USING
p_file_name LIKE soffphf-file_name
l_sood-objyr TO l_alv-objyr,
l_sood-objno TO l_alv-objno,
1 TO l_alv-cnt.
MODIFY gt_alv FROM l_alv.
ENDIF.
CLEAR l_sood.
ENDLOOP.
ENDFORM.
" SOOD_SEL
*&---------------------------------------------------------------------*
*&
Form GET_LINKS
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM get_links .
DATA: l_alv TYPE t_alv,
l_fol_id TYPE soodk,
l_obj_id TYPE soodk,
lt_alv TYPE tt_alv,
l_rc TYPE i.
LOOP AT gt_alv INTO l_alv.
CLEAR: l_fol_id, l_obj_id.
CALL FUNCTION 'ICL_GOS_GET_FOL_AND_OBJ_ID'
EXPORTING
i_objyr
= l_alv-objyr
i_obyno
= l_alv-objno
IMPORTING
e_folder_id = l_fol_id
e_object_id = l_obj_id.
MOVE 1 TO l_rc.
IF sy-subrc IS INITIAL.
PERFORM get_relation
USING l_fol_id l_obj_id
CHANGING l_alv l_rc.
ENDIF.
***** remove later **********
*
RANGES r_ext FOR sood-file_ext.
*
DATA: l_fext LIKE LINE OF r_ext.
*
MOVE: 'I' TO l_fext-sign,
*
'EQ' TO l_fext-option.
*
*
MOVE 'EXE' TO l_fext-low.
*
APPEND l_fext TO r_ext.
*
*
MOVE 'exe' TO l_fext-low.
*
APPEND l_fext TO r_ext.
******************************** don't forget to fix the if stmt below
ENDFORM.
" GET_LINKS
*&---------------------------------------------------------------------*
*&
Form GET_RELATION
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
*
-->P_L_FOL_ID text
*
-->P_L_OBJ_ID text
*
<--P_L_ALV text
*----------------------------------------------------------------------*
FORM get_relation USING
p_fol_id TYPE soodk
p_obj_id TYPE soodk
CHANGING p_alv TYPE t_alv
p_rc TYPE i.
DATA: l_instid_b TYPE sibfboriid,
l_srgbtbrel TYPE srgbtbrel,
l_tojtt TYPE tojtt.
MOVE: p_fol_id-objtp TO l_instid_b(3),
p_fol_id-objyr TO l_instid_b+3(2),
p_fol_id-objno TO l_instid_b+5(12),
*
p_obj_id-objtp TO l_instid_b+17(3), " Value is 'RAW' and returns nothin
g
c_objtp TO l_instid_b+17(3), " Value is 'EXT' and it works
p_obj_id-objyr TO l_instid_b+20(2),
p_obj_id-objno TO l_instid_b+22(12).
CLEAR: l_srgbtbrel.
SELECT SINGLE * FROM srgbtbrel INTO l_srgbtbrel
WHERE instid_b = l_instid_b AND
typeid_a IN s_object.
* get the name of the BOR object from TOJTT
IF sy-subrc IS INITIAL.
MOVE-CORRESPONDING: l_srgbtbrel TO p_alv.
SELECT SINGLE * FROM tojtt INTO l_tojtt
WHERE name = l_srgbtbrel-typeid_a AND
language = sy-langu.
MOVE l_tojtt-stext TO p_alv-stext.
CLEAR p_rc.
ELSE.
*
MOVE c_no_link TO p_alv-stext.
MOVE 1 TO p_rc.
ENDIF.
ENDFORM.
" GET_RELATION
*&---------------------------------------------------------------------*
*&
Form OUTPUT
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM output .
DELETE ADJACENT DUPLICATES FROM gt_alv
COMPARING crea_user objdes file_ext objlen instid_a.
* CASE p_alv.
*
WHEN 'X'.
PERFORM alv_output.
*
WHEN OTHERS.
*
PERFORM send_mail.
* ENDCASE.
ENDFORM.
" OUTPUT
*&---------------------------------------------------------------------*
*&
Form ALV_OUTPUT
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM alv_output .
CALL SCREEN 100.
ENDFORM.
" ALV_OUTPUT
*&---------------------------------------------------------------------*
*&
Module STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
MODULE status_0100 OUTPUT.
SET PF-STATUS 'PF-100'.
ENDMODULE.
*&---------------------------------------------------------------------*
*&
Module PREPARE_ALV OUTPUT
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
MODULE prepare_alv OUTPUT.
PERFORM alv_layout_and_fcat.
SORT gt_alv BY stext.
CALL METHOD screen_init=>init_screen.
ENDMODULE.
*&---------------------------------------------------------------------*
*&
Module USER_COMMAND_0100 INPUT
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
MODULE user_command_0100 INPUT.
CASE ok_code.
WHEN 'BACK'.
LEAVE TO SCREEN 0.
ENDCASE.
ENDMODULE.
" USER_COMMAND_0100 INPUT
*&---------------------------------------------------------------------*
*&
Form ALV_LAYOUT_AND_FCAT
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM alv_layout_and_fcat .
MOVE 'Objects with attachments in SOFFCONT1 ' TO gs_layout-grid_title.
gs_layout-zebra = 'X'.
gs_layout-totals_bef = 'X'.
* gs_layout-no_totline = space.
gs_layout-sel_mode = 'D'.
gs_layout-info_fname = 'LINECOLOUR'.
gs_layout-stylefname = 'CELLSTYLES'.
* setup grid fieldcat -------------------------*
*
*
*
*
*
*
*
CLEAR wa_fieldcat.
wa_fieldcat-fieldname
wa_fieldcat-tabname
wa_fieldcat-coltext =
wa_fieldcat-seltext =
wa_fieldcat-outputlen
wa_fieldcat-hotspot
APPEND wa_fieldcat TO
= ''.
= 'gt_alv'.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname
wa_fieldcat-tabname
wa_fieldcat-coltext =
wa_fieldcat-seltext =
wa_fieldcat-outputlen
* wa_fieldcat-hotspot
APPEND wa_fieldcat TO
''.
''.
= .
= ' '.
fc_fieldcat.
*
*
*
*
*
*
**
*
CLEAR wa_fieldcat.
wa_fieldcat-fieldname
wa_fieldcat-tabname
wa_fieldcat-coltext =
wa_fieldcat-seltext =
wa_fieldcat-outputlen
wa_fieldcat-hotspot
APPEND wa_fieldcat TO
= 'TYPEID_A'.
= 'gt_alv'.
'Object Type'.
'Object Type'.
= 32.
= ' '.
fc_fieldcat.
CLEAR wa_fieldcat.
= 'STEXT'.
= 'gt_alv'.
'Related Object Type'.
'Related Object Type'.
= 20.
= ' '.
fc_fieldcat.
wa_fieldcat-fieldname
wa_fieldcat-tabname
wa_fieldcat-coltext =
wa_fieldcat-seltext =
wa_fieldcat-outputlen
wa_fieldcat-hotspot
APPEND wa_fieldcat TO
= 'OBJTP'.
= 'gt_alv'.
'Object Type'.
'Object Type'.
= 12.
= ' '.
fc_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname
wa_fieldcat-tabname
wa_fieldcat-coltext =
wa_fieldcat-seltext =
wa_fieldcat-outputlen
* wa_fieldcat-hotspot
APPEND wa_fieldcat TO
= 'OBJDES'.
= 'gt_alv'.
'Name'.
'Name'.
= 50.
= ' '.
fc_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname
wa_fieldcat-tabname
wa_fieldcat-coltext =
wa_fieldcat-seltext =
wa_fieldcat-outputlen
* wa_fieldcat-hotspot
APPEND wa_fieldcat TO
= 'FILE_EXT'.
= 'gt_alv'.
'Ext'.
'Ext'.
= 3.
= ' '.
fc_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname
= 'OBJLEN'.
wa_fieldcat-tabname
= 'gt_alv'.
wa_fieldcat-coltext = 'Size(in bytes)'.
wa_fieldcat-seltext = 'Size(in bytes)'.
wa_fieldcat-outputlen = 12.
wa_fieldcat-do_sum = 'X'.
* wa_fieldcat-hotspot
= ' '.
APPEND wa_fieldcat TO fc_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname
wa_fieldcat-tabname
wa_fieldcat-coltext =
wa_fieldcat-seltext =
wa_fieldcat-outputlen
* wa_fieldcat-hotspot
APPEND wa_fieldcat TO
= 'INSTID_A'.
= 'gt_alv'.
'Doc Number/Object Key'.
'Doc Number/Object Key'.
= 70.
= ' '.
fc_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname
wa_fieldcat-tabname
wa_fieldcat-coltext =
wa_fieldcat-seltext =
wa_fieldcat-outputlen
* wa_fieldcat-hotspot
APPEND wa_fieldcat TO
= 'CREA_USER'.
= 'gt_alv'.
'Created By'.
'Created By'.
= 12.
= ' '.
fc_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname
= 'CRDAT'.
wa_fieldcat-tabname
= 'gt_alv'.
wa_fieldcat-coltext = 'Date Created'.
wa_fieldcat-seltext = 'Date Created'.
wa_fieldcat-outputlen = 12.
* wa_fieldcat-hotspot
= ' '.
APPEND wa_fieldcat TO fc_fieldcat.
IF p_s_usr = 'X' OR p_s_typ = 'X'.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname
= 'CNT'.
wa_fieldcat-tabname
= 'gt_alv'.
wa_fieldcat-coltext = 'Count'.
wa_fieldcat-seltext = 'Count'.
wa_fieldcat-outputlen = 8.
wa_fieldcat-do_sum = 'X'.
* wa_fieldcat-hotspot
= ' '.
APPEND wa_fieldcat TO fc_fieldcat.
ENDIF.
*
*
*
*
*
*
**
*
CLEAR wa_fieldcat.
wa_fieldcat-fieldname
wa_fieldcat-tabname
wa_fieldcat-coltext =
wa_fieldcat-seltext =
wa_fieldcat-outputlen
wa_fieldcat-hotspot
APPEND wa_fieldcat TO
= 'EXTCT'.
= 'gt_alv'.
'Stored Externally'.
'Stored Externally'.
= 20.
= ' '.
fc_fieldcat.
*
*
*
*
*
*
*
CLEAR wa_fieldcat.
wa_fieldcat-fieldname
wa_fieldcat-tabname
wa_fieldcat-coltext =
wa_fieldcat-seltext =
wa_fieldcat-outputlen
APPEND wa_fieldcat TO
= 'PHIO_ID'.
= 'gt_alv'.
'Physical Document'.
'Physical Document'.
= 32.
fc_fieldcat.
**
*
alv_sort_wa-expa = 'X'.
APPEND alv_sort_wa TO alv_sort_tab.
ENDCASE.
ENDFORM.
" ALV_LAYOUT_AND_FCAT
*&---------------------------------------------------------------------*
*&
Form SEND_MAIL
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM send_mail .
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
**
*
*
*
*
*
body_lines
= 1
*
TABLES
*
lines
= lt_body_lines
*
intusers
= gt_intusers
*
EXCEPTIONS
*
internal_error
= 1
*
OTHERS
= 2
.
*
IF sy-subrc <> 0.
** MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
**
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
*
ENDIF.
* ENDIF.
ENDFORM.
" SEND_MAIL