type-pools: IXML,ABAP.
types: begin of XML_LINE,
DATA(256) type X,
end of XML_LINE.
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_FLIGHTS type ref to IF_IXML_ELEMENT,
L_ELEMENT_AIRLINE type ref to IF_IXML_ELEMENT,
L_ELEMENT_FLIGHT type ref to IF_IXML_ELEMENT,
L_ELEMENT_DUMMY type ref to IF_IXML_ELEMENT,
L_VALUE type STRING.
data: L_XML_TABLE type table of XML_LINE,
L_XML_SIZE type I,
L_RC type I.
data: LT_SPFLI type table of SPFLI.
data: L_SPFLI type SPFLI.
start-of-selection.
* Fill the internal table
select * from SPFLI into table LT_SPFLI.
* Sort internal table
sort LT_SPFLI by CARRID.
* 生成XML数据
loop at LT_SPFLI into L_SPFLI.
at first.
* Creating a ixml factory
L_IXML = CL_IXML=>CREATE( ).
* Creating the dom object model
L_DOCUMENT = L_IXML->CREATE_DOCUMENT( ).
* Fill root node with value flow
L_ELEMENT_FLIGHTS = L_DOCUMENT->CREATE_SIMPLE_ELEMENT(
NAME = 'flow'
PARENT = L_DOCUMENT ).
L_RC = L_ELEMENT_FLIGHTS->SET_ATTRIBUTE( NAME = 'KEY' VALUE = 'gsgs-cgdd' ).
L_RC = L_ELEMENT_FLIGHTS->SET_ATTRIBUTE( NAME = 'DES' VALUE = '广深公司-采购订单').
L_RC = L_ELEMENT_FLIGHTS->SET_ATTRIBUTE( NAME = 'BAPI' VALUE ='ZBAPI_MM_RK_AFTER_APP' ).
****************************************************
*--将XML数据导入到内表
data XMLDATA type XSTRING .
data: RESULT_XML type standard table of SMUM_XMLTB .
data: RETURN type standard table of BAPIRET2 .
data: WA_XML type SMUM_XMLTB.
if SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
endif.
****************************************************************
*******************************************************************
** 用XSLT的方式解析、生成XML
* data LT_TABLE type standard table of CHAR2048.
* data: GT_RESULT_XML type ABAP_TRANS_RESBIND_TAB,
* GS_RESULT_XML type ABAP_TRANS_RESBIND.
*data lo_oref TYPE REF TO cx_root.
* try.
* call transformation ID "此ID是transformation,也可以用事务代码strans自定义一个transformation
* source xml LT_TABLE
* result (GT_RESULT_XML) .
*
* catch CX_ST_ERROR into LO_OREF.
** LS_MSG-MSGTYP = 'E'.
** LS_MSG-MSGNO = '000'.
** LS_MSG-MSGTXT = LO_OREF->GET_TEXT( ).
** append LS_MSG to C_MSGOUT.
* endtry.