ABAP: 内表到xml,以excel形式发送邮件
来源:互联网 发布:canvas nest.js下载 编辑:程序博客网 时间:2024/06/09 22:38
*&---------------------------------------------------------------------**& Report ZDEMO*&*&---------------------------------------------------------------------**&*&*&---------------------------------------------------------------------*REPORT zdemo.TYPE-POOLS: ixml.TYPES: BEGIN OF xml_line, data(255) TYPE x, END OF xml_line.DATA: l_xml_table_forecast TYPE TABLE OF xml_line, l_rc TYPE i, l_xml_size TYPE i, wa_xml TYPE xml_line, gs_solix TYPE solix, binary_content_forecast TYPE solix_tab, sent_to_all TYPE os_boolean, main_text TYPE bcsy_text, send_request TYPE REF TO cl_bcs, document TYPE REF TO cl_document_bcs, recipient TYPE REF TO if_recipient_bcs, bcs_exception TYPE REF TO cx_bcs, mailto TYPE ad_smtpadr.DATA: gt_sflight TYPE TABLE OF sflight, gs_sflight TYPE sflight.CONSTANTS gc_mark VALUE 'X'.SELECT-OPTIONS s_carrid FOR gs_sflight-carrid NO-EXTENSION NO INTERVALS.SELECT-OPTIONS s_connid FOR gs_sflight-connid NO-EXTENSION NO INTERVALS.SELECT-OPTIONS s_fldate FOR gs_sflight-fldate NO-EXTENSION NO INTERVALS.START-OF-SELECTION. mailto = 'xxx@xx.com'. "此处填入自己的邮箱 PERFORM frm_get_flight. PERFORM frm_process_xml_data USING 1. PERFORM frm_send_email.*&---------------------------------------------------------------------**& Form FRM_GET_FLIGHT*&---------------------------------------------------------------------** text*----------------------------------------------------------------------** --> p1 text* <-- p2 text*----------------------------------------------------------------------*FORM frm_get_flight . SELECT * "UP TO 10 ROWS FROM sflight INTO CORRESPONDING FIELDS OF TABLE gt_sflight.* WHERE carrid = s_carrid* AND connid = s_connid* AND fldate = s_fldate .ENDFORM. " FRM_GET_FLIGHT*&---------------------------------------------------------------------**& Form FRM_PROCESS_XML_DATA*&---------------------------------------------------------------------** text*----------------------------------------------------------------------** -->P_1 text*----------------------------------------------------------------------*FORM frm_process_xml_data USING reltype TYPE i. DATA: l_ixml TYPE REF TO if_ixml, l_streamfactory TYPE REF TO if_ixml_stream_factory, l_ostream TYPE REF TO if_ixml_ostream, l_renderer TYPE REF TO if_ixml_renderer, l_document TYPE REF TO if_ixml_document. DATA: l_element_root TYPE REF TO if_ixml_element, r_element TYPE REF TO if_ixml_element, r_worksheet TYPE REF TO if_ixml_element, r_table TYPE REF TO if_ixml_element, r_column TYPE REF TO if_ixml_element, r_row TYPE REF TO if_ixml_element, r_cell TYPE REF TO if_ixml_element, r_data TYPE REF TO if_ixml_element, l_value TYPE string. FIELD-SYMBOLS: <ls_flight> TYPE sflight.* create a ixml factory l_ixml = cl_ixml=>create( ).* create the DOM object model l_document = l_ixml->create_document( ).* create workbook PERFORM create_workbook USING l_document r_worksheet r_table.* column formatting CASE reltype. WHEN 1. PERFORM frm_forecast_column_format USING l_document r_table. WHEN 2. WHEN OTHERS. ENDCASE.* data table LOOP AT gt_sflight ASSIGNING <ls_flight>. r_row = l_document->create_simple_element( name = 'Row' parent = r_table ). r_cell = l_document->create_simple_element( name = 'Cell' parent = r_row ). l_value = <ls_flight>-mandt. r_data = l_document->create_simple_element( name = 'Data' value = l_value parent = r_cell ). r_data->set_attribute_ns( name = 'Type' prefix = 'ss' value = 'String' ). r_cell = l_document->create_simple_element( name = 'Cell' parent = r_row ). l_value = <ls_flight>-carrid. r_data = l_document->create_simple_element( name = 'Data' value = l_value parent = r_cell ). r_data->set_attribute_ns( name = 'Type' prefix = 'ss' value = 'String' ). r_cell = l_document->create_simple_element( name = 'Cell' parent = r_row ). l_value = <ls_flight>-connid. r_data = l_document->create_simple_element( name = 'Data' value = l_value parent = r_cell ). r_data->set_attribute_ns( name = 'Type' prefix = 'ss' value = 'String' ). r_cell = l_document->create_simple_element( name = 'Cell' parent = r_row ). l_value = <ls_flight>-fldate. r_data = l_document->create_simple_element( name = 'Data' value = l_value parent = r_cell ). r_data->set_attribute_ns( name = 'Type' prefix = 'ss' value = 'String' ). r_cell = l_document->create_simple_element( name = 'Cell' parent = r_row ). l_value = <ls_flight>-price. r_data = l_document->create_simple_element( name = 'Data' value = l_value parent = r_cell ). r_data->set_attribute_ns( name = 'Type' prefix = 'ss' value = 'String' ). r_cell = l_document->create_simple_element( name = 'Cell' parent = r_row ). l_value = <ls_flight>-currency. r_data = l_document->create_simple_element( name = 'Data' value = l_value parent = r_cell ). r_data->set_attribute_ns( name = 'Type' prefix = 'ss' value = 'String' ). r_cell = l_document->create_simple_element( name = 'Cell' parent = r_row ). l_value = <ls_flight>-planetype. r_data = l_document->create_simple_element( name = 'Data' value = l_value parent = r_cell ). r_data->set_attribute_ns( name = 'Type' prefix = 'ss' value = 'String' ). r_cell = l_document->create_simple_element( name = 'Cell' parent = r_row ). l_value = <ls_flight>-seatsmax. r_data = l_document->create_simple_element( name = 'Data' value = l_value parent = r_cell ). r_data->set_attribute_ns( name = 'Type' prefix = 'ss' value = 'String' ). r_cell = l_document->create_simple_element( name = 'Cell' parent = r_row ). l_value = <ls_flight>-seatsocc. r_data = l_document->create_simple_element( name = 'Data' value = l_value parent = r_cell ). r_data->set_attribute_ns( name = 'Type' prefix = 'ss' value = 'String' ). r_cell = l_document->create_simple_element( name = 'Cell' parent = r_row ). l_value = <ls_flight>-paymentsum. r_data = l_document->create_simple_element( name = 'Data' value = l_value parent = r_cell ). r_data->set_attribute_ns( name = 'Type' prefix = 'ss' value = 'String' ). r_cell = l_document->create_simple_element( name = 'Cell' parent = r_row ). l_value = <ls_flight>-seatsmax_b. r_data = l_document->create_simple_element( name = 'Data' value = l_value parent = r_cell ). r_data->set_attribute_ns( name = 'Type' prefix = 'ss' value = 'String' ). r_cell = l_document->create_simple_element( name = 'Cell' parent = r_row ). l_value = <ls_flight>-seatsocc_b. r_data = l_document->create_simple_element( name = 'Data' value = l_value parent = r_cell ). r_data->set_attribute_ns( name = 'Type' prefix = 'ss' value = 'String' ). r_cell = l_document->create_simple_element( name = 'Cell' parent = r_row ). l_value = <ls_flight>-seatsmax_f. r_data = l_document->create_simple_element( name = 'Data' value = l_value parent = r_cell ). r_data->set_attribute_ns( name = 'Type' prefix = 'ss' value = 'String' ). r_cell = l_document->create_simple_element( name = 'Cell' parent = r_row ). l_value = <ls_flight>-seatsocc_f. r_data = l_document->create_simple_element( name = 'Data' value = l_value parent = r_cell ). r_data->set_attribute_ns( name = 'Type' prefix = 'ss' value = 'String' ). ENDLOOP.* creating a stream factory l_streamfactory = l_ixml->create_stream_factory( ).* connect internal xml table to stream factory CASE reltype. WHEN 1. l_ostream = l_streamfactory->create_ostream_itable( table = l_xml_table_forecast ). WHEN 2. WHEN OTHERS. ENDCASE.* rendering the document l_renderer = l_ixml->create_renderer( ostream = l_ostream document = l_document ). l_rc = l_renderer->render( ).* saving the xml document l_xml_size = l_ostream->get_num_written_raw( ).ENDFORM. " FRM_PROCESS_XML_DATA*&---------------------------------------------------------------------**& Form CREATE_WORKBOOK*&---------------------------------------------------------------------** text*----------------------------------------------------------------------** -->P_L_DOCUMENT text* -->P_R_WORKSHEET text* -->P_R_TABLE text*----------------------------------------------------------------------*FORM create_workbook USING l_document TYPE REF TO if_ixml_document r_worksheet TYPE REF TO if_ixml_element r_table TYPE REF TO if_ixml_element. DATA: l_element_root TYPE REF TO if_ixml_element, ns_attribute TYPE REF TO if_ixml_attribute, r_element_properties TYPE REF TO if_ixml_element, l_value TYPE string.* create root node 'workbook' l_element_root = l_document->create_simple_element( name = 'Workbook' parent = l_document ). l_element_root->set_attribute( name = 'xmlns' value = 'urn:schemas-microsoft-com:office:spreadsheet' ). ns_attribute = l_document->create_namespace_decl( name = 'ss' prefix = 'xmlns' uri = 'urn:schemas-microsoft-com:office:spreadsheet' ). l_element_root->set_attribute_node( ns_attribute ). ns_attribute = l_document->create_namespace_decl( name = 'x' prefix = 'xmlns' uri = 'urn:schemas-microsoft-com:office:excel' ). l_element_root->set_attribute_node( ns_attribute ).* create node for document properties r_element_properties = l_document->create_simple_element( name = 'TEST_REPORT' parent = l_element_root ). l_value = sy-uname. l_document->create_simple_element( name = 'Author' value = l_value parent = r_element_properties ).* worksheet r_worksheet = l_document->create_simple_element( name = 'Worksheet' parent = l_element_root ). r_worksheet->set_attribute_ns( name = 'Name' prefix = 'ss' value = 'Sheet1' ).* table r_table = l_document->create_simple_element( name = 'Table' parent = r_worksheet ). r_table->set_attribute_ns( name = 'FullColumns' prefix = 'x' value = '1' ). r_table->set_attribute_ns( name = 'FullRows' prefix = 'x' value = '1' ).ENDFORM. " CREATE_WORKBOOK*&---------------------------------------------------------------------**& Form FRM_FORECAST_COLUMN_FORMAT*&---------------------------------------------------------------------** text*----------------------------------------------------------------------** -->P_L_DOCUMENT text* -->P_R_TABLE text*----------------------------------------------------------------------*FORM frm_forecast_column_format USING l_document TYPE REF TO if_ixml_document r_table TYPE REF TO if_ixml_element. DATA: l_element_root TYPE REF TO if_ixml_element, r_column TYPE REF TO if_ixml_element, r_row TYPE REF TO if_ixml_element, r_cell TYPE REF TO if_ixml_element, r_data TYPE REF TO if_ixml_element, l_value TYPE string. DATA: lv_short TYPE string, lv_medium TYPE string, lv_long TYPE string, lv_exe_date TYPE char10, lv_exe_time TYPE char10, lv_exe_user TYPE string, lt_month_names TYPE TABLE OF t247, ls_month_name TYPE t247, lv_date_add TYPE sy-datum, lv_count TYPE i. lv_short = '60'. lv_medium = '90'. lv_long = '150'. WRITE sy-datum TO lv_exe_date. CONCATENATE sy-uzeit+0(2) ':' sy-uzeit+2(2) INTO lv_exe_time. lv_exe_user = sy-uname. CALL FUNCTION 'MONTH_NAMES_GET' EXPORTING language = sy-langu TABLES month_names = lt_month_names EXCEPTIONS month_names_not_found = 1 OTHERS = 2. IF sy-subrc = 0. READ TABLE lt_month_names WITH KEY mnr = sy-datum+4(2) INTO ls_month_name. ENDIF.* columns and width* line DO 1 TIMES. r_column = l_document->create_simple_element( name = 'Column' parent = r_table ). r_column->set_attribute_ns( name = 'Width' prefix = 'ss' value = lv_short ). ENDDO. DO 14 TIMES. r_column = l_document->create_simple_element( name = 'Column' parent = r_table ). ENDDO.* information row r_row = l_document->create_simple_element( name = 'Row' parent = r_table ). r_row->set_attribute_ns( name = 'AutoFitHeight' prefix = 'ss' value = '1' ).* type r_cell = l_document->create_simple_element( name = 'Cell' parent = r_row ). l_value = 'SFLIGHT_FORECAST'. r_data = l_document->create_simple_element( name = 'Data' value = l_value parent = r_cell ). r_data->set_attribute_ns( name = 'Type' prefix = 'ss' value = 'String' ). DO 3 TIMES. r_cell = l_document->create_simple_element( name = 'Cell' parent = r_row ). ENDDO.* name r_cell = l_document->create_simple_element( name = 'Cell' parent = r_row ). l_value = sy-uname. r_data = l_document->create_simple_element( name = 'Data' value = l_value parent = r_cell ). " Data r_data->set_attribute_ns( name = 'Type' prefix = 'ss' value = 'String' ).* Date r_cell = l_document->create_simple_element( name = 'Cell' parent = r_row ). l_value = lv_exe_date. r_data = l_document->create_simple_element( name = 'Data' value = l_value parent = r_cell ). " Data r_data->set_attribute_ns( name = 'Type' prefix = 'ss' value = 'String' ).* Time r_cell = l_document->create_simple_element( name = 'Cell' parent = r_row ). l_value = lv_exe_time. r_data = l_document->create_simple_element( name = 'Data' value = l_value parent = r_cell ). " Data r_data->set_attribute_ns( name = 'Type' prefix = 'ss' value = 'String' ).* Column Headers Row r_row = l_document->create_simple_element( name = 'Row' parent = r_table ). r_row->set_attribute_ns( name = 'AutoFitHeight' prefix = 'ss' value = '1' ).* mandt r_cell = l_document->create_simple_element( name = 'Cell' parent = r_row ). r_data = l_document->create_simple_element( name = 'Data' value = 'mandt' parent = r_cell ). r_data->set_attribute_ns( name = 'Type' prefix = 'ss' value = 'String' ).* carrid r_cell = l_document->create_simple_element( name = 'Cell' parent = r_row ). r_data = l_document->create_simple_element( name = 'Data' value = 'carrid' parent = r_cell ). r_data->set_attribute_ns( name = 'Type' prefix = 'ss' value = 'String' ).* connid r_cell = l_document->create_simple_element( name = 'Cell' parent = r_row ). r_data = l_document->create_simple_element( name = 'Data' value = 'connid' parent = r_cell ). r_data->set_attribute_ns( name = 'Type' prefix = 'ss' value = 'String' ).* fldate r_cell = l_document->create_simple_element( name = 'Cell' parent = r_row ). r_data = l_document->create_simple_element( name = 'Data' value = 'fldate' parent = r_cell ). r_data->set_attribute_ns( name = 'Type' prefix = 'ss' value = 'String' ).* price r_cell = l_document->create_simple_element( name = 'Cell' parent = r_row ). r_data = l_document->create_simple_element( name = 'Data' value = 'price' parent = r_cell ). r_data->set_attribute_ns( name = 'Type' prefix = 'ss' value = 'String' ).* currency r_cell = l_document->create_simple_element( name = 'Cell' parent = r_row ). r_data = l_document->create_simple_element( name = 'Data' value = 'currency' parent = r_cell ). r_data->set_attribute_ns( name = 'Type' prefix = 'ss' value = 'String' ).* planetype r_cell = l_document->create_simple_element( name = 'Cell' parent = r_row ). r_data = l_document->create_simple_element( name = 'Data' value = 'planetype' parent = r_cell ). r_data->set_attribute_ns( name = 'Type' prefix = 'ss' value = 'String' ).* seatsmax r_cell = l_document->create_simple_element( name = 'Cell' parent = r_row ). r_data = l_document->create_simple_element( name = 'Data' value = 'seatsmax' parent = r_cell ). r_data->set_attribute_ns( name = 'Type' prefix = 'ss' value = 'String' ).* seatsocc r_cell = l_document->create_simple_element( name = 'Cell' parent = r_row ). r_data = l_document->create_simple_element( name = 'Data' value = 'seatsocc' parent = r_cell ). r_data->set_attribute_ns( name = 'Type' prefix = 'ss' value = 'String' ).* paymentsum r_cell = l_document->create_simple_element( name = 'Cell' parent = r_row ). r_data = l_document->create_simple_element( name = 'Data' value = 'paymentsum' parent = r_cell ). r_data->set_attribute_ns( name = 'Type' prefix = 'ss' value = 'String' ).* seatsmax_b r_cell = l_document->create_simple_element( name = 'Cell' parent = r_row ). r_data = l_document->create_simple_element( name = 'Data' value = 'seatsmax_b' parent = r_cell ). r_data->set_attribute_ns( name = 'Type' prefix = 'ss' value = 'String' ).* seatsocc_b r_cell = l_document->create_simple_element( name = 'Cell' parent = r_row ). r_data = l_document->create_simple_element( name = 'Data' value = 'seatsocc_b' parent = r_cell ). r_data->set_attribute_ns( name = 'Type' prefix = 'ss' value = 'String' ).* seatsmax_f r_cell = l_document->create_simple_element( name = 'Cell' parent = r_row ). r_data = l_document->create_simple_element( name = 'Data' value = 'seatsmax_f' parent = r_cell ). r_data->set_attribute_ns( name = 'Type' prefix = 'ss' value = 'String' ).* seatsocc_f r_cell = l_document->create_simple_element( name = 'Cell' parent = r_row ). r_data = l_document->create_simple_element( name = 'Data' value = 'seatsocc_f' parent = r_cell ). r_data->set_attribute_ns( name = 'Type' prefix = 'ss' value = 'String' ).ENDFORM. " FRM_FORECAST_COLUMN_FORMAT*&---------------------------------------------------------------------**& Form FRM_SEND_EMAIL*&---------------------------------------------------------------------** text*----------------------------------------------------------------------** --> p1 text* <-- p2 text*----------------------------------------------------------------------*FORM frm_send_email . DATA: lc_xls_type TYPE so_obj_tp VALUE 'XLS', lc_codepage TYPE abap_encod VALUE '4103', lv_string TYPE string, lv_size TYPE so_obj_len, lc_add_attc TYPE so_obj_des VALUE 'popup', lt_binary_content TYPE solix_tab. LOOP AT l_xml_table_forecast INTO wa_xml. CLEAR gs_solix. gs_solix-line = wa_xml-data. APPEND gs_solix TO binary_content_forecast. ENDLOOP. TRY .* -------------create persistent sent request---------------- send_request = cl_bcs=>create_persistent( ).* -------------create and set document with attachment-------* create document object from internal table with text APPEND 'Mail text!' TO main_text. document = cl_document_bcs=>create_document( i_type = 'HTM' i_text = main_text i_subject = 'Test created' ).* add the spread sheet as attachment to document object document->add_attachment( i_attachment_type = lc_xls_type i_attachment_subject = 'SpreadSheet' i_att_content_hex = binary_content_forecast ).* send document object to send request send_request->set_document( document ).* --------------add recipient (e-mail address)--------------* create recipient object recipient = cl_cam_address_bcs=>create_internet_address( mailto ).* add recipient object to send request send_request->add_recipient( recipient ).* --------------send document ------------------------------ sent_to_all = send_request->send( i_with_error_screen = 'X' ). commit work. IF sent_to_all is INITIAL. MESSAGE i500(sbcoms) WITH mailto. else. MESSAGE s022(so). ENDIF.* ---------------exception handling ------------------------ CATCH cx_bcs INTO bcs_exception. MESSAGE i865(so) WITH bcs_exception->error_type. ENDTRY.ENDFORM. " FRM_SEND_EMAIL
阅读全文
0 0
- ABAP: 内表到xml,以excel形式发送邮件
- ABAP: 内表到xml,以excel形式发送邮件
- ABAP模块-任意report作为附件以邮件形式发送
- 以文件形式的发送邮件
- php如何以post形式发送xml
- php如何以post形式发送xml
- 以流的形式发送邮件很霸道的...
- 解决zabbix 报警邮件以附件形式发送
- ABAP程序发送邮件
- SAP ABAP发送邮件
- 将DataSet以XML的形式发送给客户端
- php以post形式发送xml的方法
- PHP如何以post形式发送xml数据
- PHP如何以post形式发送xml数据
- 怎样使用asp语言去发送邮件,必须以附件的形式发送...?
- 用ABAP程序发送邮件
- 另一个ABAP邮件发送程序
- ABAP发送邮件-带附件
- 13、vue2.0利用better-scroll实现轮播图可以自动轮播可以无限循环轮播
- 如何将原生PDF转为纯图像Word?
- golang http server 源码解析与说明
- 判断一个字符串是否为另外一个字符串旋转之后的字符串。
- 惊!Linux 爆新漏洞,长按回车键70秒即可获得 root 权限
- ABAP: 内表到xml,以excel形式发送邮件
- Android自定义控件7----滑动动画scrollTo/scrollBy使用
- 检测TCP连接是否在线
- NYOJ喷水装置(一)
- Spring Boot整合Elasticsearch全文搜索引擎
- Eplan PPE(流程自动化软件) v2.6官方免费版下载
- 微信小程序没有返回按钮
- opencv读取数据
- 继承派生3