0% found this document useful (0 votes)
448 views16 pages

Atta in Soffcont1

This document contains code for a program that finds objects with attachments in SAP. It declares tables, types, and data to retrieve information from various SAP tables including SOFFCONT1, SOFFPHIO, SOFFLOIO and SOOD. It also includes classes to initialize screens, handle events, and populate an ALV grid to display the results.

Uploaded by

bra_mxo
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
448 views16 pages

Atta in Soffcont1

This document contains code for a program that finds objects with attachments in SAP. It declares tables, types, and data to retrieve information from various SAP tables including SOFFCONT1, SOFFPHIO, SOFFLOIO and SOOD. It also includes classes to initialize screens, handle events, and populate an ALV grid to display the results.

Uploaded by

bra_mxo
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 16

***********************************************************

* 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
*---------------------------------------------------------*

DATA: gt_alv TYPE tt_alv,


alv_sort_tab TYPE lvc_t_sort,
alv_sort_wa TYPE lvc_s_sort.
*---------------------------------------------------------*
* Constant data declarations
*---------------------------------------------------------*
CONSTANTS: c_no_link TYPE oj_stext VALUE 'NO LINK TO OBJECT',
c_objtp(3) TYPE c VALUE 'EXT'.
*---------------------------------------------------------*
* Global data declarations
*---------------------------------------------------------*
DATA: gt_intusers LIKE STANDARD TABLE OF soos1.
*---------------------------------------------------------*
* Class declarations
*---------------------------------------------------------*
*--------------------------------------------------------*
*
CLASS lcl_event_handler DEFINITION
*---------------------------------------------------------------------*
CLASS lcl_event_handler DEFINITION.
PUBLIC SECTION.
CLASS-DATA: v_row TYPE lvc_s_row,
v_column TYPE lvc_s_col,
v_row_num TYPE lvc_s_roid,
ls_toolbar TYPE stb_button.
CLASS-METHODS:
handle_toolbar
FOR EVENT toolbar OF cl_gui_alv_grid
IMPORTING e_object e_interactive.
ENDCLASS.

"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.

DELETE e_object->mt_toolbar WHERE function = '&REFRESH'.


DELETE e_object->mt_toolbar WHERE function = '&LOCAL&CUT'.
DELETE e_object->mt_toolbar WHERE function = '&LOCAL&COPY'.
DELETE e_object->mt_toolbar WHERE function = '&LOCAL&PASTE'.
DELETE e_object->mt_toolbar WHERE function = '&INFO'.
DELETE e_object->mt_toolbar WHERE function = '&CHECK'.
DELETE e_object->mt_toolbar WHERE function = '&LOCAL&APPEND'.
DELETE e_object->mt_toolbar WHERE function = '&LOCAL&DELETE_ROW'.
DELETE e_object->mt_toolbar WHERE function = '&LOCAL&UNDO'.
DELETE e_object->mt_toolbar WHERE function = '&LOCAL&INSERT_ROW'.
DELETE e_object->mt_toolbar WHERE function = '&LOCAL&COPY_ROW'.
DELETE e_object->mt_toolbar WHERE function = '&MB_SUM'.
DELETE e_object->mt_toolbar WHERE function = '&MB_SUBTOT'.
DELETE e_object->mt_toolbar WHERE function = '&GRAPH'.
DELETE e_object->mt_toolbar WHERE function = ''.
ENDMETHOD.

"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.

DESCRIBE FIELD s_object-low.


PERFORM output.

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.

LOOP AT gt_alv INTO l_alv.


SELECT * FROM soffphio INTO l_soffphio
WHERE phio_id = l_alv-phio_id.
ENDSELECT.
IF sy-subrc = 0.
MOVE: l_soffphio-loio_id TO l_alv-loio_id,
l_soffphio-crea_user TO l_alv-crea_user.
MOVE: l_soffphio-chng_time(8) TO l_alv-crdat.
MODIFY gt_alv FROM l_alv.
ENDIF.
ENDLOOP.
DELETE gt_alv WHERE NOT crdat IN s_crdat.
ENDFORM.
" SOFFPHIO_SEL
*&---------------------------------------------------------------------*
*&
Form SOFFPHF_SEL
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM soffphf_sel .
DATA: l_alv TYPE t_alv,
l_soffphf TYPE soffphf.
*
lt_split TYPE STANDARD TABLE OF char30,
*
l_split TYPE char30.
LOOP AT gt_alv INTO l_alv.
SELECT * FROM soffphf INTO l_soffphf
WHERE phio_id = l_alv-phio_id.
ENDSELECT.
IF sy-subrc = 0.
PERFORM split_filename
USING l_soffphf-file_name
CHANGING l_alv.
*

SPLIT l_soffphf-file_name AT '.' INTO l_alv-objdes l_alv-file_ext.


MODIFY gt_alv FROM l_alv.
ENDIF.
ENDLOOP.

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

CHANGING p_alv TYPE t_alv.


DATA: lt_split TYPE STANDARD TABLE OF char30,
l_split TYPE char30,
cnt_split,
l_nums(11) VALUE '1234567890',
l_ext_idx TYPE int4.
CLEAR: cnt_split, l_split.
IF p_file_name CA '.'.
SPLIT p_file_name AT '.' INTO TABLE lt_split.
DESCRIBE TABLE lt_split LINES cnt_split.
IF cnt_split CO l_nums.
IF cnt_split EQ 2.
READ TABLE: lt_split INTO p_alv-objdes INDEX 1,
lt_split INTO p_alv-file_ext INDEX 2.
ELSE.
DESCRIBE TABLE lt_split.
READ TABLE: lt_split INTO p_alv-file_ext INDEX cnt_split.
DELETE lt_split FROM cnt_split TO cnt_split.
CONCATENATE LINES OF lt_split INTO p_alv-objdes
SEPARATED BY '.'.
ENDIF.
ELSE.
DESCRIBE FIELD cnt_split.
l_ext_idx = ( STRLEN( p_file_name ) ) - 3.
MOVE p_file_name+l_ext_idx(3) TO p_alv-file_ext.
MOVE p_file_name(l_ext_idx) TO p_alv-objdes.
ENDIF.
ELSE.
MOVE p_file_name TO p_alv-objdes.
ENDIF.
ENDFORM.
" SPLIT_FILENAME
*&---------------------------------------------------------------------*
*&
Form SOOD_SEL
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM sood_sel .
DATA: l_alv TYPE t_alv,
l_sood TYPE sood.
LOOP AT gt_alv INTO l_alv.
SELECT * FROM sood INTO l_sood
WHERE cronam = l_alv-crea_user AND
crdat = l_alv-crdat AND
objdes = l_alv-objdes.
ENDSELECT.
IF sy-subrc = 0.
MOVE: l_sood-objtp TO l_alv-objtp,
l_sood-objdes TO l_alv-objdes,
l_sood-file_ext TO l_alv-file_ext,
l_sood-objlen TO l_alv-objlen,

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

IF l_rc IS INITIAL. "AND ( l_alv-file_ext IN r_ext ).

APPEND l_alv TO lt_alv.


ENDIF.
MODIFY gt_alv FROM l_alv.
ENDLOOP.
DESCRIBE TABLE lt_alv.
gt_alv[] = lt_alv[].

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.

" STATUS_0100 OUTPUT

*&---------------------------------------------------------------------*
*&
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.

" PREPARE_ALV OUTPUT

*&---------------------------------------------------------------------*
*&
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 OPTIONS ***


CASE 'X'.
WHEN p_s_typ.
CLEAR alv_sort_wa.
alv_sort_wa-spos = '1'.
alv_sort_wa-fieldname = 'TYPEID_A'."'STEXT'.
alv_sort_wa-subtot = 'X'.
alv_sort_wa-up = 'X'.
*
alv_sort_wa-comp = 'X'.
alv_sort_wa-expa = 'X'.
APPEND alv_sort_wa TO alv_sort_tab.
WHEN p_s_usr.
CLEAR alv_sort_wa.
alv_sort_wa-spos = '1'.
alv_sort_wa-fieldname = 'CREA_USER'.
alv_sort_wa-subtot = 'X'.
alv_sort_wa-up = 'X'.
*
alv_sort_wa-comp = 'X'.
alv_sort_wa-expa = 'X'.
APPEND alv_sort_wa TO alv_sort_tab.
WHEN OTHERS.
*
CLEAR alv_sort_wa.
*
alv_sort_wa-spos = '1'.
*
alv_sort_wa-fieldname = 'FILE_EXT'.
**
alv_sort_wa-subtot = 'X'.
**
alv_sort_wa-up = 'X'.
***
alv_sort_wa-comp = 'X'.

**
*

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 .
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
**
*
*
*
*

DATA: l_rec TYPE soos1,


l_mail_header TYPE sood1-objdes,
lt_body_lines TYPE TABLE OF soli,
lt_body_line TYPE soli,
l_line TYPE char255,
l_alv LIKE LINE OF gt_alv,
l_hor_tab TYPE c VALUE cl_abap_char_utilities=>horizontal_tab,
l_nuline TYPE c VALUE cl_abap_char_utilities=>newline,
l_cnt TYPE i.
LOOP AT s_user.
MOVE s_user-low TO l_rec-recnam.
APPEND l_rec TO gt_intusers.
CLEAR l_rec.
ENDLOOP.
MOVE 'Objects with attachments' TO l_mail_header.
CONCATENATE 'Object Type' 'Object key' 'Filename' 'Ext'
'Created By' 'Date'
INTO l_line SEPARATED BY l_hor_tab.
CONCATENATE l_line l_nuline INTO l_line.
APPEND l_line TO lt_body_lines.
LOOP AT gt_alv INTO l_alv.
CONCATENATE l_alv-stext l_alv-instid_a l_alv-objdes
l_alv-file_ext l_alv-crea_user l_alv-crdat
INTO lt_body_line SEPARATED BY l_hor_tab.
CONCATENATE lt_body_line l_nuline INTO lt_body_line.
APPEND lt_body_line TO lt_body_lines.
CLEAR: lt_body_line.
ENDLOOP.
DESCRIBE TABLE lt_body_lines LINES l_cnt.
IF l_cnt > 1.
CALL FUNCTION 'Z_MXO_SAPOFF_MAIL_ATTACH' "'Z_SEND_SAPOFF_MAIL_ATTACH'
EXPORTING
USER
=
file_extension
= 'XLS'
header_text
= l_mail_header
commit_work
= 'X'
attachment_name
= 'GL Account changes'

*
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

You might also like