0% found this document useful (0 votes)
199 views

CSV File111

This document defines data types and internal tables to store file data extracted from a CSV file. It includes procedures to convert the CSV file to internal tables, write selected records to output files, and send an email with an attachment containing the file data.

Uploaded by

Sanjay P
Copyright
© © All Rights Reserved
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)
199 views

CSV File111

This document defines data types and internal tables to store file data extracted from a CSV file. It includes procedures to convert the CSV file to internal tables, write selected records to output files, and send an email with an attachment containing the file data.

Uploaded by

Sanjay P
Copyright
© © All Rights Reserved
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/ 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 = '[email protected]'.
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