REPORT MESSAGE-ID 00
NO STANDARD PAGE HEADING LINE-SIZE 200 LINE-COUNT 65.
TABLES: bsik, lfa1, somlreci1.
SELECT-OPTIONS: s_email FOR somlreci1-receiver NO INTERVALS.
PARAMETERS : p_sub TYPE char50 DEFAULT 'Notification',
p_file TYPE char50 DEFAULT 'Open DP'.
DATA : BEGIN OF t_bsik OCCURS 0,
bukrs TYPE bsik-bukrs,
zuonr TYPE bsik-zuonr,
belnr TYPE bsik-belnr,
gjahr TYPE bsik-gjahr,
blart TYPE bsik-blart,
bldat TYPE bsik-bldat,
budat TYPE bsik-budat,
xblnr TYPE bsik-xblnr,
zumsk TYPE bsik-zumsk,
bschl TYPE bsik-bschl,
zlspr TYPE bsik-zlspr,
vertn TYPE bsik-vertn,
dmbtr TYPE bsik-dmbtr,
wrbtr TYPE bsik-wrbtr,
waers TYPE bsik-waers,
augbl TYPE bsik-augbl,
bktxt TYPE bkpf-bktxt,
sgtxt TYPE bsik-sgtxt,
saknr TYPE bsik-saknr,
lifnr TYPE bsik-lifnr,
name1 TYPE lfa1-name1,
usnam TYPE bkpf-usnam,
prctr TYPE bsik-prctr,
ebeln TYPE ekbe-ebeln,
ebelp TYPE ekbe-ebelp,
END OF t_bsik.
DATA : BEGIN OF t_bkpf OCCURS 0,
bukrs TYPE bkpf-bukrs,
belnr TYPE bkpf-belnr,
gjahr TYPE bkpf-gjahr,
bktxt TYPE bkpf-bktxt,
usnam TYPE bkpf-usnam,
END OF t_bkpf.
DATA : BEGIN OF t_lfa1 OCCURS 0,
lifnr TYPE lfa1-lifnr,
name1 TYPE lfa1-name1,
END OF t_lfa1.
DATA: it_message TYPE STANDARD TABLE OF solisti1 INITIAL SIZE 0
WITH HEADER LINE.
DATA: it_attach TYPE STANDARD TABLE OF solisti1 INITIAL SIZE 0
WITH HEADER LINE.
DATA: t_packing_list LIKE sopcklsti1 OCCURS 0 WITH HEADER LINE,
t_contents LIKE solisti1 OCCURS 0 WITH HEADER LINE,
t_receivers LIKE somlreci1 OCCURS 0 WITH HEADER LINE,
t_attachment LIKE solisti1 OCCURS 0 WITH HEADER LINE,
t_object_header LIKE solisti1 OCCURS 0 WITH HEADER LINE,
w_cnt TYPE i,
w_sent_all(1) TYPE c,
w_doc_data LIKE sodocchgi1,
gd_error TYPE sy-subrc,
gd_reciever TYPE sy-subrc.
************************************************************************
*START_OF_SELECTION
START-OF-SELECTION.
PERFORM get_data.
PERFORM build_xls_data_table.
************************************************************************
*END-OF-SELECTION
END-OF-SELECTION.
* Populate message body text
PERFORM populate_email_message_body.
* Send file by email as .xls speadsheet
PERFORM send_file_as_email_attachment
TABLES it_message
it_attach
USING 'XLS'
'filename'
' '
' '
CHANGING gd_error
gd_reciever.
* Instructs mail send program for SAPCONNECT to send email(rsconn01)
PERFORM initiate_mail_execute_program.
*&---------------------------------------------------------------------*
*& Form get_data
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM get_data.
DATA : tgl TYPE sy-datum.
tgl = sy-datum - 14.
*select BUKRS LIFNR=tidak sama dengan 52* GJAHR BELNR=15* BLART=KZ from Tables : bsik bktxt usnam
SELECT bukrs zuonr belnr gjahr blart bldat budat xblnr zumsk bschl zlspr vertn dmbtr wrbtr waers
augbl sgtxt saknr lifnr prctr ebeln ebelp
INTO CORRESPONDING FIELDS OF TABLE t_bsik
FROM bsik
UP TO 25 ROWS.
IF t_bsik[] IS NOT INITIAL.
SELECT bukrs belnr gjahr bktxt usnam
INTO CORRESPONDING FIELDS OF TABLE t_bkpf
FROM bkpf
FOR ALL ENTRIES IN t_bsik
WHERE bukrs = t_bsik-bukrs
AND belnr = t_bsik-belnr
AND gjahr = t_bsik-gjahr.
SELECT lifnr name1
INTO CORRESPONDING FIELDS OF TABLE t_lfa1
FROM lfa1
FOR ALL ENTRIES IN t_bsik
WHERE lifnr = t_bsik-lifnr.
ENDIF.
FIELD-SYMBOLS :
LOOP AT t_bsik ASSIGNING
READ TABLE t_bkpf WITH KEY bukrs =
IF sy-subrc = 0.
ENDIF.
READ TABLE t_lfa1 WITH KEY lifnr =
IF sy-subrc = 0.
REPLACE ALL OCCURRENCES OF '"' IN t_lfa1-name1 WITH ''.
ENDIF.
ENDLOOP.
SORT t_bsik BY lifnr.
ENDFORM. " DATA_RETRIEVAL
*&---------------------------------------------------------------------*
*& Form build_xls_data_table
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM build_xls_data_table.
DATA : nilai TYPE char30,
post_date TYPE char10.
CONSTANTS:
con_tab TYPE c VALUE cl_abap_char_utilities=>horizontal_tab,
con_cret TYPE c VALUE cl_abap_char_utilities=>cr_lf.
CONCATENATE 'ASSIGNMENT' 'DOC NUMBER' 'DOC TYPE' 'POSTING DATE' 'REFERENCE' 'POST.KEY' 'PAYMENT BLOCK'
'G/L ACCOUNT' 'NO VENDOR' 'NAMA' 'NILAI' 'CURRENCY' 'DOC. HEADER TEXT' 'TEXT' 'PO' 'ITEM' 'USERNAME' 'PROFIT CENTER'
INTO it_attach SEPARATED BY con_tab.
CONCATENATE con_cret it_attach INTO it_attach.
APPEND it_attach.
IF t_bsik[] IS NOT INITIAL.
LOOP AT t_bsik.
CLEAR : nilai, post_date.
WRITE t_bsik-wrbtr CURRENCY t_bsik-waers TO nilai.
CONCATENATE t_bsik-budat+6(2) t_bsik-budat+4(2) t_bsik-budat(4) INTO post_date SEPARATED BY '/'.
CONCATENATE t_bsik-zuonr t_bsik-belnr t_bsik-blart post_date t_bsik-xblnr t_bsik-bschl t_bsik-zlspr
t_bsik-saknr t_bsik-lifnr t_bsik-name1 nilai t_bsik-waers t_bsik-bktxt t_bsik-sgtxt
t_bsik-ebeln t_bsik-ebelp t_bsik-usnam t_bsik-prctr INTO it_attach SEPARATED BY con_tab.
CONCATENATE con_cret it_attach INTO it_attach.
APPEND it_attach.
CLEAR it_attach.
ENDLOOP.
ENDIF.
ENDFORM. " BUILD_XLS_DATA_TABLE
*&---------------------------------------------------------------------*
*& Form send_file_as_email_attachment
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->PIT_MESSAGE text
* -->PIT_ATTACH text
* -->P_EMAIL text
* -->P_MTITLE text
* -->P_FORMAT text
* -->P_FILENAME text
* -->P_ATTDESCRIPTION text
* -->P_SENDER_ADDRESS text
* -->P_SENDER_ADDRES_TYPE text
* -->P_ERROR text
* -->P_RECIEVER text
*----------------------------------------------------------------------*
FORM send_file_as_email_attachment
TABLES pit_message
pit_attach
USING p_format
p_filename
p_sender_address
p_sender_addres_type
CHANGING p_error
p_reciever.
DATA: ld_error TYPE sy-subrc,
ld_reciever TYPE sy-subrc,
ld_format TYPE so_obj_tp ,
ld_attdescription TYPE so_obj_nam ,
ld_attfilename TYPE so_obj_des ,
ld_sender_address LIKE soextreci1-receiver,
ld_sender_address_type LIKE soextreci1-adr_typ,
ld_receiver LIKE sy-subrc.
ld_format = p_format.
ld_attfilename = p_filename.
ld_sender_address = p_sender_address.
ld_sender_address_type = p_sender_addres_type.
* Fill the document data.
w_doc_data-doc_size = 1.
* Populate the subject/generic message attributes
w_doc_data-obj_langu = sy-langu.
w_doc_data-obj_name = 'SAPRPT'.
w_doc_data-obj_descr = p_sub .
w_doc_data-sensitivty = 'F'.
* Fill the document data and get size of attachment
CLEAR w_doc_data.
READ TABLE it_attach INDEX w_cnt.
w_doc_data-doc_size =
( w_cnt - 1 ) * 255 + STRLEN( it_attach ).
w_doc_data-obj_langu = sy-langu.
w_doc_data-obj_name = 'SAPRPT'.
w_doc_data-obj_descr = p_sub.
w_doc_data-sensitivty = 'F'.
CLEAR t_attachment.
REFRESH t_attachment.
t_attachment[] = pit_attach[].
* Describe the body of the message
CLEAR t_packing_list.
REFRESH t_packing_list.
t_packing_list-transf_bin = space.
t_packing_list-head_start = 1.
t_packing_list-head_num = 0.
t_packing_list-body_start = 1.
DESCRIBE TABLE it_message LINES t_packing_list-body_num.
t_packing_list-doc_type = 'RAW'.
APPEND t_packing_list.
* Create attachment notification
t_packing_list-transf_bin = 'X'.
t_packing_list-head_start = 1.
t_packing_list-head_num = 1.
t_packing_list-body_start = 1.
DESCRIBE TABLE t_attachment LINES t_packing_list-body_num.
t_packing_list-doc_type = ld_format.
t_packing_list-obj_descr = p_file.
t_packing_list-obj_name = ld_attfilename.
t_packing_list-doc_size = t_packing_list-body_num * 255.
APPEND t_packing_list.
* Add the recipients email address
CLEAR t_receivers.
REFRESH t_receivers.
LOOP AT s_email.
t_receivers-receiver = s_email-low.
t_receivers-rec_type = 'U'.
t_receivers-com_type = 'INT'.
t_receivers-notif_del = 'X'.
t_receivers-notif_ndel = 'X'.
APPEND t_receivers.
CLEAR t_receivers.
ENDLOOP.
CALL FUNCTION 'SO_DOCUMENT_SEND_API1'
EXPORTING
document_data = w_doc_data
put_in_outbox = 'X'
sender_address = ld_sender_address
sender_address_type = ld_sender_address_type
commit_work = 'X'
IMPORTING
sent_to_all = w_sent_all
TABLES
packing_list = t_packing_list
contents_bin = t_attachment
contents_txt = it_message
receivers = t_receivers
EXCEPTIONS
too_many_receivers = 1
document_not_sent = 2
document_type_not_exist = 3
operation_no_authorization = 4
parameter_error = 5
x_error = 6
enqueue_error = 7
OTHERS = 8.
* Populate zerror return code
ld_error = sy-subrc.
* Populate zreceiver return code
LOOP AT t_receivers.
ld_receiver = t_receivers-retrn_code.
ENDLOOP.
ENDFORM. "send_file_as_email_attachment
*&---------------------------------------------------------------------*
*& Form initiate_mail_execute_program
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM initiate_mail_execute_program.
WAIT UP TO 2 SECONDS.
SUBMIT rsconn01 WITH mode = 'INT'
WITH output = ''
AND RETURN.
ENDFORM. " INITIATE_MAIL_EXECUTE_PROGRAM
*&---------------------------------------------------------------------*
*& Form populate_email_message_body
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM populate_email_message_body.
REFRESH it_message.
it_message = 'DH.'.
APPEND it_message.
it_message = ''.
APPEND it_message.
it_message = 'Please find attached a list Open DP records.'.
APPEND it_message.
it_message = ''.
APPEND it_message.
it_message = 'Matursuwon.'.
APPEND it_message.
ENDFORM. " POPULATE_EMAIL_MESSAGE_BODY
Tidak ada komentar:
Posting Komentar