You are on page 1of 8

REPORT zmehul_file_task1.

TYPE-POOLS: truxs,kcde.
TABLES: mseg.
TYPES: BEGIN OF ty_mseg,
matnr TYPE mseg-matnr,
werks TYPE mseg-werks,
dmbtr TYPE mseg-dmbtr,
*
dmbtr(20) TYPE N,
menge TYPE mseg-menge,
*
menge(10) TYPE c,
meins TYPE mseg-meins,
END OF ty_mseg.
TYPES: BEGIN OF ty_sucess,
matnr TYPE mseg-matnr,
werks TYPE mseg-werks,
dmbtr TYPE mseg-dmbtr,
menge TYPE mseg-menge,
meins TYPE mseg-meins,
END OF ty_sucess.
TYPES: BEGIN OF ty_error,
matnr TYPE mseg-matnr,
werks TYPE mseg-werks,
dmbtr TYPE mseg-dmbtr,
menge TYPE mseg-menge,
meins TYPE mseg-meins,
END OF ty_error.

*DATA: it_mseg TYPE TABLE OF ty_mseg,


*
wa_mseg TYPE ty_mseg,
DATA: it_mseg TYPE TABLE OF ty_mseg," WITH DEFAULT KEY,
it_mseg1 TYPE TABLE OF ty_mseg,
wa_mseg TYPE ty_mseg,
wa_mseg1 TYPE ty_mseg,
it_sucess TYPE TABLE OF ty_sucess,
wa_sucess TYPE ty_sucess,
it_error TYPE TABLE OF ty_error,
wa_error TYPE ty_error,
*
it_sucess TYPE TABLE OF ty_mseg,
*
it_error TYPE TABLE OF ty_mseg,
it_type TYPE truxs_t_text_data.
DATA: su_file TYPE string,
err_file TYPE string,
path TYPE string,
type TYPE string.
CONSTANTS: c_separator TYPE c VALUE ','.
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""'""
DATA :
g_sent_to_all TYPE sonv-flag,
g_tab_lines
TYPE i.
"Types
TYPES:
t_document_data TYPE sodocchgi1,

t_packing_list
t_attachment
t_body_msg
t_receivers
"Workareas
DATA :
w_document_data
w_packing_list
w_attachment
w_body_msg
w_receivers
"Internal Tables
DATA :
i_document_data
i_packing_list
i_attachment
i_body_msg
i_receivers
DATA: gt_intern
gwa_intern

TYPE
TYPE
TYPE
TYPE

sopcklsti1,
solisti1,
solisti1,
somlreci1.

TYPE
TYPE
TYPE
TYPE
TYPE

t_document_data,
t_packing_list,
t_attachment,
t_body_msg,
t_receivers.

TYPE
TYPE
TYPE
TYPE
TYPE

STANDARD TABLE OF t_document_data,


STANDARD TABLE OF t_packing_list,
TABLE OF t_attachment,
STANDARD TABLE OF t_body_msg,
STANDARD TABLE OF t_receivers.

TYPE kcde_intern,
TYPE kcde_intern_struc.

""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
* C1 = 'C:\Users\832887\Desktop\New folder (2)'.
* C2 = 'TEST444.XLS'.
* CONCATENATE C1 C2 INTO STR.
"CONCATENATE C1 'SUCESS''.XLS' INTO STR.
SELECTION-SCREEN BEGIN OF BLOCK b1.
*PARAMETERS: p_file TYPE localfile OBLIGATORY.
PARAMETERS: p_file type rlgrap-filename." DEFAULT 'D:\M.TXT'." DEFAULT 'C:\Users
\985940\Desktop\test1234.xls'.
PARAMETERS: s_file TYPE rlgrap-filename.
PARAMETERS: e_file TYPE rlgrap-filename.
SELECTION-SCREEN END OF BLOCK b1.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
CALL FUNCTION 'F4_FILENAME'
EXPORTING
program_name = syst-cprog
dynpro_number = syst-dynnr
field_name
= 'P_FILE'
IMPORTING
file_name
= p_file.
"DATA: nfile TYPE string.
*file = p_file.
*CALL FUNCTION 'GUI_UPLOAD'
* EXPORTING
*
filename
""p_file
* FILETYPE
* HAS_FIELD_SEPARATOR
** HEADER_LENGTH
** READ_BY_LINE
** DAT_MODE
** CODEPAGE
** IGNORE_CERR
** REPLACEMENT
** CHECK_BOM

= 'D:\M.TXT'
= 'ASC'
= ' X'
= 0
= 'X'
= ' '
= ' '
= ABAP_TRUE
= '#'
= ' '

** VIRUS_SCAN_PROFILE
=
** NO_AUTH_CHECK
= ' '
** IMPORTING
** FILELENGTH
=
** HEADER
=
* tables
*
data_tab
= it_type
* EXCEPTIONS
* FILE_OPEN_ERROR
= 1
* FILE_READ_ERROR
= 2
* NO_BATCH
= 3
* GUI_REFUSE_FILETRANSFER
= 4
* INVALID_TYPE
= 5
* NO_AUTHORITY
= 6
* UNKNOWN_ERROR
= 7
* BAD_DATA_FORMAT
= 8
* HEADER_NOT_ALLOWED
= 9
* SEPARATOR_NOT_ALLOWED
= 10
* HEADER_TOO_LONG
= 11
* UNKNOWN_DP_ERROR
= 12
* ACCESS_DENIED
= 13
* DP_OUT_OF_MEMORY
= 14
* DISK_FULL
= 15
* DP_TIMEOUT
= 16
* OTHERS
= 17
*
.
*IF sy-subrc <> 0.
** MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
**
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
*ENDIF.
IF p_file IS NOT INITIAL.
SPLIT p_file AT '.' INTO path type.
CONCATENATE path '_sucess.xls' INTO su_file.
CONCATENATE path '_error.xls' INTO err_file.
ENDIF.
START-OF-SELECTION.
DATA: lv_filename TYPE rlgrap-filename.
DATA: lv_index TYPE i.
FIELD-SYMBOLS: <FS>." TYPE ANY.
lv_filename = p_file.
CALL FUNCTION 'KCD_CSV_FILE_TO_INTERN_CONVERT'
EXPORTING
i_filename
= lv_filename
i_separator
= c_separator
tables
e_intern
= gt_intern
EXCEPTIONS
UPLOAD_CSV
= 1
UPLOAD_FILETYPE
= 2
OTHERS
= 3
.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.


ENDIF.

LOOP AT gt_intern INTO gwa_intern.


MOVE : gwa_intern-col TO lv_index.
ASSIGN COMPONENT lv_index OF STRUCTURE WA_mseg TO <FS> .
MOVE : gwa_intern-value TO <FS>.
AT END OF row.
APPEND wa_mseg TO it_mseg.
CLEAR wa_mseg.
ENDAT.
ENDLOOP.
LOOP AT it_mseg INTO wa_mseg.
*
READ TABLE it_mseg1 INTO wa_mseg1 WITH KEY matnr = wa_mseg-matnr.
*
IF sy-subrc = 0.
WRITE: / wa_mseg-matnr , 8 wa_mseg-werks.
*
wa_sucess-matnr = wa_mseg-matnr.
*
wa_sucess-werks = wa_mseg-werks.
*wa_sucess-dmbtr = wa_mseg1-dmbtr.
*wa_sucess-menge = wa_mseg1-menge.
*wa_sucess-meins = wa_mseg1-meins.
ENDLOOP.
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*

CALL FUNCTION 'TEXT_CONVERT_CSV_TO_SAP'


EXPORTING
i_field_seperator
= ';'
I_LINE_HEADER
=
i_tab_raw_data
= it_type
i_filename
= lv_filename
TABLES
i_tab_converted_data
= it_mseg
EXCEPTIONS
conversion_failed
= 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.

*
*
*CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'
* EXPORTING
** I_FIELD_SEPERATOR
= I_FIELD_SEPERATOR
** I_LINE_HEADER
= I_LINE_HEADER
* I_LINE_HEADER
= 'X'
*
i_tab_raw_data
= IT_TYPE
*
i_filename
= p_file
* TABLES
*
i_tab_converted_data
= IT_MSEG

"""""p_file

* EXCEPTIONS
* CONVERSION_FAILED
= 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.
* IF it_mseg IS NOT INITIAL.
*
LOOP AT it_mseg INTO wa_mseg.
*
CONCATENATE '00000000' wa_mseg-matnr INTO wa_mseg-matnr.
*
MODIFY it_mseg FROM wa_mseg.
*
ENDLOOP.
*
*
SELECT matnr werks dmbtr menge meins
*
FROM mseg
*
INTO CORRESPONDING FIELDS OF TABLE it_mseg1
*
FOR ALL ENTRIES IN it_mseg
*
WHERE matnr = it_mseg-matnr AND werks = it_mseg-werks.
*
BREAK-POINT.
* ENDIF.
* IF it_mseg IS NOT INITIAL .
*
CALL METHOD cl_gui_frontend_services=>gui_download
*
EXPORTING
*
filename
= 'D:\RR.XLS'
*
write_field_separator = 'X'
*
CHANGING
*
data_tab
= it_mseg.
* ENDIF.
*
* LOOP AT it_mseg INTO wa_mseg.
*
READ TABLE it_mseg1 INTO wa_mseg1 WITH KEY matnr = wa_mseg-matnr.
*
IF sy-subrc = 0.
*
wa_sucess-matnr = wa_mseg1-matnr.
*
wa_sucess-werks = wa_mseg1-werks.
**wa_sucess-dmbtr = wa_mseg1-dmbtr.
**wa_sucess-menge = wa_mseg1-menge.
**wa_sucess-meins = wa_mseg1-meins.
*
APPEND wa_sucess TO it_sucess.
*
ELSE.
"IF SY-subrc = 4.
*
wa_error-matnr = wa_mseg-matnr.
*
wa_error-werks = wa_mseg-werks.
**wa_error-dmbtr = wa_mseg-dmbtr.
**wa_error-menge = wa_mseg1-menge.
**wa_error-meins = wa_mseg1-meins.
*
APPEND wa_error TO it_error.
*
*
ENDIF.
*
CLEAR: wa_mseg1,wa_mseg,wa_sucess,wa_error.
*
* ENDLOOP.
* IF it_sucess IS NOT INITIAL.
*
*
CALL METHOD cl_gui_frontend_services=>gui_download
*
EXPORTING
*
filename
= su_file
"'E:\RR.XLS'
*
write_field_separator = 'X'
*
CHANGING
*
data_tab
= it_sucess.
*

* ENDIF.
*
* IF it_error IS NOT INITIAL.
*
*
CALL METHOD cl_gui_frontend_services=>gui_download
*
EXPORTING
*
filename
= err_file
"'E:\TT.XLS'
*
write_field_separator = 'X'
*
CHANGING
*
data_tab
= it_error.
*
* ENDIF.
PERFORM data_xls.
PERFORM send_mail.
*&---------------------------------------------------------------------*
*&
Form data_xls
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM data_xls .
CLASS cl_abap_char_utilities DEFINITION LOAD.
CONSTANTS:
con_tab TYPE c VALUE cl_abap_char_utilities=>horizontal_tab,
con_cret TYPE c VALUE cl_abap_char_utilities=>cr_lf.
CONCATENATE
' matnr'
'werks'
'dmbtr'
'menge'
' meins'
INTO w_attachment
SEPARATED BY con_tab.
CONCATENATE con_cret
w_attachment
INTO w_attachment.
APPEND w_attachment TO i_attachment.
CLEAR w_attachment.
LOOP AT it_mseg INTO wa_mseg.
CONCATENATE wa_mseg-matnr
wa_mseg-werks
*
wa_mseg-dmbtr
*
wa_mseg-menge
*
wa_mseg-meins
INTO w_attachment SEPARATED BY con_tab.
CONCATENATE con_cret w_attachment
INTO w_attachment.
CLEAR w_attachment.
ENDLOOP.
ENDFORM.
" data_xls
*&---------------------------------------------------------------------*
*&
Form send_mail

*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM send_mail .
"Subject of the mail.endform.
" send_mail
w_document_data-obj_name = 'MAIL_TO_HEAD'.
w_document_data-obj_descr = 'Regarding Mail Program by SAP ABAP'.
PERFORM build_body_of_mail
USING:space,
'Hi,',
'Please find the attachment'.
"Write Packing List for Body
DESCRIBE TABLE i_body_msg LINES g_tab_lines.
w_packing_list-head_start = 1.
w_packing_list-head_num = 0.
w_packing_list-body_start = 1.
w_packing_list-body_num = g_tab_lines.
w_packing_list-doc_type = 'RAW'.
APPEND w_packing_list TO i_packing_list.
CLEAR w_packing_list.
"Write Packing List for Attachment
w_packing_list-transf_bin = space.
w_packing_list-head_start = 1.
w_packing_list-head_num = 1.
w_packing_list-body_start = g_tab_lines + 1.
DESCRIBE TABLE i_attachment LINES w_packing_list-body_num.
w_packing_list-doc_type = 'XLS'.
w_packing_list-obj_descr = 'Excel Attachment'.
w_packing_list-obj_name = 'XLS_ATTACHMENT'.
w_packing_list-doc_size = w_packing_list-body_num * 255.
APPEND w_packing_list TO i_packing_list.
CLEAR w_packing_list.
APPEND LINES OF i_attachment TO i_body_msg.
"Fill the document data and get size of attachment
w_document_data-obj_langu = sy-langu.
READ TABLE i_body_msg INTO w_body_msg INDEX g_tab_lines.
w_document_data-doc_size = ( g_tab_lines - 1 ) * 255 + STRLEN( w_body_msg ).
"Receivers List.
w_receivers-rec_type = 'U'. "Internet address
w_receivers-receiver = 'test.program@gmail.com'.
w_receivers-com_type = 'INT'.
w_receivers-notif_del = 'X'.
w_receivers-notif_ndel = 'X'.
APPEND w_receivers TO i_receivers .
CLEAR:w_receivers.
"Function module to send mail to Recipients
CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
EXPORTING
document_data
= w_document_data
put_in_outbox
= 'X'

commit_work
IMPORTING
sent_to_all
TABLES
packing_list
contents_txt
receivers
EXCEPTIONS
too_many_receivers
document_not_sent
document_type_not_exist
operation_no_authorization
parameter_error
x_error
enqueue_error
OTHERS

= 'X'
= g_sent_to_all
= i_packing_list
= i_body_msg
= i_receivers
=
=
=
=
=
=
=
=

1
2
3
4
5
6
7
8.

IF sy-subrc = 0 .
MESSAGE i303(me) WITH 'Mail has been Successfully Sent.'.
ELSE.
WAIT UP TO 2 SECONDS.
"This program starts the SAPconnect send process.
SUBMIT rsconn01 WITH mode = 'INT'
WITH output = 'X'
AND RETURN.
ENDIF.
ENDFORM.
"send_mail
*&---------------------------------------------------------------------*
*&
Form build_body_of_mail
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
*
-->P_SPACE text
*----------------------------------------------------------------------*
FORM build_body_of_mail USING l_message.
w_body_msg = l_message.
APPEND w_body_msg TO i_body_msg.
CLEAR w_body_msg.
ENDFORM.
" build_body_of_mail

You might also like