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' ).
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.