*&---------------------------------------------------------------------*
*& 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_el
ABAP: 内表到xml,以excel形式发送邮件 - 完整例子代码
最新推荐文章于 2024-08-26 10:06:52 发布
此博客演示了一种使用ABAP将内表转换为XML格式,并将数据作为Excel文件附加到电子邮件中发送的方法。代码首先获取SFLIGHT表的数据,然后创建XML结构并将其保存到内表。接着,将XML数据转换为二进制内容,并通过BCS(Business Communication Services)发送包含该附件的邮件。
摘要由CSDN通过智能技术生成