
* Constants
CONSTANTS: lc_extension TYPE char20 VALUE'email.zip',
lc_outlook_call TYPE string VALUE 'ZOUTLOOK'. "Transaction Launcher for Outlook page
DATA: lt_solix_tab TYPE TABLE OF w3mime-line, "Binary Tab
l_solix TYPE w3mime-line, "Binary wa
l_filename TYPE dxfile-filename, "Full Filename
lr_nav_service TYPE REF TO if_crm_ui_navigation_service, "Navigation service instance
l_msg TYPE boolean, "Error flag
l_system TYPE tbdls-logsys. "Current system
* Convert Zip file To Binary
CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'
EXPORTING
buffer = lv_zip_file
IMPORTING
output_length = lv_length
TABLES
binary_tab = lt_solix_tab.
* Write file to server
OPEN DATASET l_filename FOR OUTPUT IN BINARY MODE.
LOOP AT lt_solix_tab INTO l_solix.
lv_length = xstrlen( l_solix ).
TRANSFER l_solix TO l_filename LENGTH lv_length.
IF sy-subrc NE 0.
l_msg = abap_true.
EXIT.
ENDIF.
ENDLOOP.
CLOSE DATASET l_filename.
* Write file name to BOR class
zl_outlook=>g_path = l_filename.
* Call Transaction Launcher which calls T-code ZOUTLOOK
lr_nav_service = cl_crm_ui_navigation_service=>get_instance( ).
IF lr_nav_service IS NOT INITIAL.
lr_nav_service->navigate( EXPORTING iv_link_id = lc_outlook_call ).
ENDIF.
INCLUDE : ole2incl.
* Constants
CONSTANTS: lc_directory TYPE char100 VALUE '\\vdhupn\desktop$\desktop\&uname&\Desktop\&ufile&',
lc_physical TYPE dxfile-filetype VALUE 'P', "Physical server
lc_path_param TYPE char10 VALUE 'p_path', "Path Parameter name
lc_binary TYPE char10 VALUE 'BIN'. "Binary Type
* Declarations
DATA: out TYPE ole2_object, "Outlook Application
outmail TYPE ole2_object, "Create Outlook Item
desti TYPE ole2_object, "Destinations
* att TYPE ole2_object, "Attachments
atts TYPE ole2_object, "Attachments
l_directory(30).
DATA l_zipped_data TYPE xstring. "Zipped data
DATA: l_file_length TYPE i. "length
DATA: lt_file_tab TYPE w3mimetabtype. "Binary data
*Parameters
PARAMETERS: p_path TYPE dxfile-filename. "Path
AT SELECTION-SCREEN OUTPUT.
*Fill path from memory if found initial
IF p_path IS INITIAL.
GET PARAMETER ID lc_path_param FIELD p_path.
ENDIF.
* Start of selection
START-OF-SELECTION.
....
l_source_filename = p_path.
* Get zipped data from presentation server
OPEN DATASET l_source_filename IN BINARY MODE FOR INPUT.
READ DATASET l_source_filename INTO l_zipped_data.
CLOSE DATASET l_source_filename.
"convert to table
CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'
EXPORTING
buffer = l_zipped_data
IMPORTING
output_length = l_file_length
TABLES
binary_tab = lt_file_tab.
"Save the file
CALL METHOD cl_gui_frontend_services=>gui_download
EXPORTING
bin_filesize = l_file_length " File length for binary files
filename = l_target_filename " Name of file
filetype = lc_binary " File type (ASCII, binary ...)
CHANGING
data_tab = lt_file_tab " Transfer table
IF sy-subrc = 0.
CALL FUNCTION 'DX_FILE_DELETE'
EXPORTING
filetype = lc_physical "Physical
filename = l_source_filename "Filename
EXCEPTIONS
file_handling_error = 1
no_authority_to_delete_file = 2
file_doesnot_exist = 3
file_is_used = 4
db_error = 5
no_authority = 6
OTHERS = 7.
IF sy-subrc <> 0.
CLEAR l_source_filename.
ENDIF.
ELSE.
CLEAR l_target_filename.
ENDIF.
*Call OLE Outlook
CREATE OBJECT out 'Outlook.Application'.
CALL METHOD OF out 'CREATEITEM' = outmail EXPORTING #1 = 0.
SET PROPERTY OF outmail 'SUBJECT' = TEXT-001.
SET PROPERTY OF outmail 'BODY' = TEXT-002.
CALL METHOD OF outmail 'RECIPIENTS' = desti.
*CALL METHOD OF desti'ADD' EXPORTING #1 = 'user @ yyy.com'.
CALL METHOD OF outmail 'ATTACHMENTS' = atts.
*Fill Attachment when found
IF l_target_filename IS NOT INITIAL.
CALL METHOD OF atts 'ADD' EXPORTING #1 = l_target_filename.
ENDIF.
CALL METHOD OF outmail 'DISPLAY'.
begin_method execute_param changing container.
DATA:
lv_param1 TYPE cpidlist,
lv_param2 TYPE zcpidlist_ol,
lv_skipscreen TYPE char1.
swc_get_element container 'param1' lv_param1.
swc_get_element container 'param2' lv_param2.
swc_get_element container 'SKIPSCREEN' lv_skipscreen.
*BREAK-POINT.
IF lv_param1 IS NOT INITIAL.
SET PARAMETER ID: lv_param1-pid FIELD lv_param1-value.
ENDIF.
IF lv_param2 IS NOT INITIAL.
SET PARAMETER ID: lv_param2-pid FIELD lv_param2-value.
ENDIF.
CALL FUNCTION 'AUTHORITY_CHECK_TCODE'
EXPORTING
tcode = object-key-code
EXCEPTIONS
ok = 0
not_ok = 1
OTHERS = 2.
IF sy-subrc NE 0.
MESSAGE s059(eu) WITH object-key-code.
* Sie haben keine Berechtigung für die Transaktion &
ELSE.
IF lv_skipscreen IS NOT INITIAL.
CALL TRANSACTION object-key-code AND SKIP FIRST SCREEN.
ELSE.
CALL TRANSACTION object-key-code.
ENDIF.
ENDIF.
end_method.
METHOD if_crm_ic_action_handler~prepare_data_flow.
...
param2-pid = 'p_path'.
param2-value = g_path.
CLEAR g_path.
me->set_container_data(
iv_name = gc_param2
iv_value = param2 ).
skipscreen-pid = 'SKIPSCREEN'.
skipscreen-value = 'X'.
me->set_container_data(
iv_name = gc_skipscreen
iv_value = skipscreen ).
icwebclientborkeyparameter = 'ZOUTLOOK'.
me->set_container_object(
iv_name = '<*MAINOBJ*>'
iv_object_key = icwebclientborkeyparameter
iv_object_type = gv_bortype ).
* Data flow is complete - set to false if data is missing
gv_data_flow_complete = abap_true.
ENDMETHOD.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.