热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

SAP将ITAB内表的数据转换为XML字符串代码实例

一、将ABAP数据生成XML文件且生成到本地二、将XML文件解析到SAP中三、将XML数据生成字符串四、用XSLT的方式解析、生成XML,自定义XSLT的事务代

一、将ABAP数据生成XML文件且生成到本地

二、将XML文件解析到SAP中

三、将XML数据生成字符串

四、用XSLT的方式解析、生成XML,自定义XSLT的事务代码是strans

五、下面是具体实现代码

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 tableselect * from SPFLI into table LT_SPFLI.*   Sort internal tablesort LT_SPFLI by CARRID.* 生成XML数据loop at LT_SPFLI into L_SPFLI.at first.
*       Creating a ixml factoryL_IXML = CL_IXML=>CREATE( ).
*       Creating the dom object modelL_DOCUMENT = L_IXML->CREATE_DOCUMENT( ).
*       Fill root node with value flowL_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' ).L_ELEMENT_AIRLINE  = L_DOCUMENT->CREATE_SIMPLE_ELEMENT(NAME = 'customform'PARENT = L_ELEMENT_FLIGHTS  ).endat.at new CONNID.L_ELEMENT_FLIGHT  = L_DOCUMENT->CREATE_SIMPLE_ELEMENT(NAME = 'fd'PARENT = L_ELEMENT_AIRLINE  ).L_VALUE = L_SPFLI-CONNID.L_RC = L_ELEMENT_FLIGHT->SET_ATTRIBUTE( NAME = 'n' VALUE =
'flight' ).endat.L_VALUE = L_SPFLI-DEPTIME.L_ELEMENT_DUMMY  = L_DOCUMENT->CREATE_SIMPLE_ELEMENT(NAME = 'V'VALUE = L_VALUEPARENT = L_ELEMENT_FLIGHT ).endloop.
*   Creating a stream factoryL_STREAMFACTORY = L_IXML->CREATE_STREAM_FACTORY( ).
*   Connect internal XML table to stream factoryL_OSTREAM = L_STREAMFACTORY->CREATE_OSTREAM_ITABLE( TABLE =
L_XML_TABLE ).
*   Rendering the documentL_RENDERER = L_IXML->CREATE_RENDERER( OSTREAM  = L_OSTREAMDOCUMENT = L_DOCUMENT ).L_RC = L_RENDERER->RENDER( ).*************************************************************
*   将xml数据导出到本地
*   取得XML数据大小L_XML_SIZE = L_OSTREAM->GET_NUM_WRITTEN_RAW( ).
*   将xml数据导出到本地
*  call method CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD
*    exporting
*      BIN_FILESIZE = L_XML_SIZE
*      FILENAME     = 'E:\flights.xml'
*      FILETYPE     = 'BIN'
*    changing
*      DATA_TAB     = L_XML_TABLE
*    exceptions
*      others       = 24.
*  if SY-SUBRC <> 0.
*    message id SY-MSGID type SY-MSGTY number SY-MSGNO
*               with SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
*  endif.
****************************************************************************************************************
**--将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.
*
*如果需要上载XML可以用一下方法
*  call function &#39;GUI_UPLOAD&#39;
*    exporting
*      FILENAME   &#61; &#39;E:\flights.xml&#39;
*      FILETYPE   &#61; &#39;BIN&#39;
*    importing
*      FILELENGTH &#61; L_XML_SIZE
*    tables
*      DATA_TAB   &#61; L_XML_TABLE.**--将XML数据导入到内表
*  call function &#39;SCMS_BINARY_TO_XSTRING&#39;
*    exporting
*      INPUT_LENGTH &#61; L_XML_SIZE
*    importing
*      BUFFER       &#61; XMLDATA
*    tables
*      BINARY_TAB   &#61; L_XML_TABLE
*    exceptions
*      FAILED       &#61; 1
*      others       &#61; 2.
*
*  call function &#39;SMUM_XML_PARSE&#39;
*    exporting
*      XML_INPUT &#61; XMLDATA
*    tables
*      XML_TABLE &#61; RESULT_XML
*      RETURN    &#61; RETURN.
*
*  loop at RESULT_XML into WA_XML .
*  endloop.**************************************************************************************************
*将XML转换成字符串data: W_STRING type XSTRING.data LS_XML type STRING.*将XML转换成字符串call function &#39;SDIXML_DOM_TO_XML&#39;exportingDOCUMENT      &#61; L_DOCUMENTimportingXML_AS_STRING &#61; W_STRINGSIZE          &#61; L_XML_SIZEtablesXML_AS_TABLE  &#61; L_XML_TABLEexceptionsNO_DOCUMENT   &#61; 1others        &#61; 2.if SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.endif.* 将Xstring转换成二进制
*  call function &#39;SCMS_XSTRING_TO_BINARY&#39;
*    exporting
*      BUFFER        &#61; W_STRING
*    importing
*      OUTPUT_LENGTH &#61; L_XML_SIZE
*    tables
*      BINARY_TAB    &#61; L_XML_TABLE.call function &#39;SCMS_BINARY_TO_STRING&#39;exportingINPUT_LENGTH &#61; L_XML_SIZEimportingTEXT_BUFFER  &#61; LS_XMLtablesBINARY_TAB   &#61; L_XML_TABLEexceptionsFAILED       &#61; 1others       &#61; 2.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&#xff0c;也可以用事务代码strans自定义一个transformation
*        source xml LT_TABLE
*        result (GT_RESULT_XML) .
*
*    catch CX_ST_ERROR into LO_OREF.
**      LS_MSG-MSGTYP &#61; &#39;E&#39;.
**      LS_MSG-MSGNO  &#61; &#39;000&#39;.
**      LS_MSG-MSGTXT &#61; LO_OREF->GET_TEXT( ).
**      append LS_MSG to C_MSGOUT.
*  endtry.


推荐阅读
  • Imtryingtofigureoutawaytogeneratetorrentfilesfromabucket,usingtheAWSSDKforGo.我正 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • eclipse学习(第三章:ssh中的Hibernate)——11.Hibernate的缓存(2级缓存,get和load)
    本文介绍了eclipse学习中的第三章内容,主要讲解了ssh中的Hibernate的缓存,包括2级缓存和get方法、load方法的区别。文章还涉及了项目实践和相关知识点的讲解。 ... [详细]
  • 本文介绍了PE文件结构中的导出表的解析方法,包括获取区段头表、遍历查找所在的区段等步骤。通过该方法可以准确地解析PE文件中的导出表信息。 ... [详细]
  • flowable工作流 流程变量_信也科技工作流平台的技术实践
    1背景随着公司业务发展及内部业务流程诉求的增长,目前信息化系统不能够很好满足期望,主要体现如下:目前OA流程引擎无法满足企业特定业务流程需求,且移动端体 ... [详细]
  • YOLOv7基于自己的数据集从零构建模型完整训练、推理计算超详细教程
    本文介绍了关于人工智能、神经网络和深度学习的知识点,并提供了YOLOv7基于自己的数据集从零构建模型完整训练、推理计算的详细教程。文章还提到了郑州最低生活保障的话题。对于从事目标检测任务的人来说,YOLO是一个熟悉的模型。文章还提到了yolov4和yolov6的相关内容,以及选择模型的优化思路。 ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • Spring源码解密之默认标签的解析方式分析
    本文分析了Spring源码解密中默认标签的解析方式。通过对命名空间的判断,区分默认命名空间和自定义命名空间,并采用不同的解析方式。其中,bean标签的解析最为复杂和重要。 ... [详细]
  • Commit1ced2a7433ea8937a1b260ea65d708f32ca7c95eintroduceda+Clonetraitboundtom ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 本文介绍了在wepy中运用小顺序页面受权的计划,包含了用户点击作废后的从新受权计划。 ... [详细]
  • 如何查询zone下的表的信息
    本文介绍了如何通过TcaplusDB知识库查询zone下的表的信息。包括请求地址、GET请求参数说明、返回参数说明等内容。通过curl方法发起请求,并提供了请求示例。 ... [详细]
  • 本文介绍了OpenStack的逻辑概念以及其构成简介,包括了软件开源项目、基础设施资源管理平台、三大核心组件等内容。同时还介绍了Horizon(UI模块)等相关信息。 ... [详细]
  • 本文讨论了编写可保护的代码的重要性,包括提高代码的可读性、可调试性和直观性。同时介绍了优化代码的方法,如代码格式化、解释函数和提炼函数等。还提到了一些常见的坏代码味道,如不规范的命名、重复代码、过长的函数和参数列表等。最后,介绍了如何处理数据泥团和进行函数重构,以提高代码质量和可维护性。 ... [详细]
  • Android系统源码分析Zygote和SystemServer启动过程详解
    本文详细解析了Android系统源码中Zygote和SystemServer的启动过程。首先介绍了系统framework层启动的内容,帮助理解四大组件的启动和管理过程。接着介绍了AMS、PMS等系统服务的作用和调用方式。然后详细分析了Zygote的启动过程,解释了Zygote在Android启动过程中的决定作用。最后通过时序图展示了整个过程。 ... [详细]
author-avatar
反反复复-念念不忘
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有