`
csstome
  • 浏览: 1521806 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

利用DEEP Table做层次XML输出(原文转自网络)

阅读更多

利用DEEP Table做层次XML输出

(---原文转自 http://blog.chinaunix.net/u1/40527/showart_681421.html 老白的ABAP博客



*&---------------------------------------------------------------------*
*& Report Z_BARRY_TEST_XML
*&---------------------------------------------------------------------*
*& 46C - ECC6 通用
*&---------------------------------------------------------------------*
REPORT z_barry_test_xml.
TYPES: BEGIN OF ty_item ,
ebelp LIKE ekpo-ebelp ,
menge LIKE ekpo-menge ,
END OF ty_item .
TYPES tt_item TYPE STANDARD TABLE OF ty_item WITH DEFAULT KEY .
DATA: itab_item TYPE STANDARD TABLE OF ty_item WITH HEADER LINE ,
wa_item LIKE LINE OF itab_item.
TYPES: BEGIN OF ty_po ,
ebeln LIKE ekko-ebeln ,
aedat LIKE ekko-aedat ,
item TYPE tt_item ,
END OF ty_po .
DATA: itab_po TYPE STANDARD TABLE OF ty_po WITH HEADER LINE .
DATA: BEGIN OF itab_all OCCURS 0 ,
ebeln LIKE ekko-ebeln ,
aedat LIKE ekko-aedat ,
ebelp LIKE ekpo-ebelp ,
menge LIKE ekpo-menge ,
END OF itab_all.
DATA: tmpebeln LIKE ekko-ebeln.
DATA: l_ixml TYPE REF TO if_ixml,
l_encoding TYPE REF TO if_ixml_encoding,
l_comment TYPE REF TO if_ixml_comment,
l_doc TYPE REF TO if_ixml_document,
l_root TYPE REF TO if_ixml_element,
l_po TYPE REF TO if_ixml_element,
l_pohead TYPE REF TO if_ixml_element,
l_item TYPE REF TO if_ixml_element,
l_element TYPE REF TO if_ixml_element,
l_attribute TYPE REF TO if_ixml_attribute,
l_ostream TYPE REF TO if_ixml_ostream,
l_factory TYPE REF TO if_ixml_stream_factory.
TYPES: BEGIN OF xml_line,
data(256) TYPE x,
END OF xml_line.
DATA: xml_table TYPE TABLE OF xml_line,
xml_size TYPE i.
DATA: l_rval TYPE i.
DATA: str TYPE string .
SELECT-OPTIONS : s_ebeln FOR itab_all-ebeln.
START-OF-SELECTION.
PERFORM getdata.
PERFORM create_xml.
PERFORM download.
*---------------------------------------------------------------------*
* FORM getdata *
*---------------------------------------------------------------------*
FORM getdata.
SELECT ekko~ebeln ekko~aedat ekpo~ebelp ekpo~menge
INTO TABLE itab_all
FROM ekko INNER JOIN ekpo ON ekko~ebeln = ekpo~ebeln
WHERE ekko~ebeln IN s_ebeln.
SORT itab_all BY ebeln ebelp.
LOOP AT itab_all .
ON CHANGE OF itab_all-ebeln .
CLEAR itab_po-item .
CLEAR tmpebeln .
tmpebeln = itab_all-ebeln .
LOOP AT itab_all WHERE ebeln = tmpebeln .
wa_item-ebelp = itab_all-ebelp .
wa_item-menge = itab_all-menge .
APPEND wa_item TO itab_po-item .
ENDLOOP .
SORT itab_po-item BY ebelp.
itab_po-ebeln = itab_all-ebeln .
itab_po-aedat = itab_all-aedat .
APPEND itab_po .
ENDON .
ENDLOOP .
ENDFORM. "getdata
*---------------------------------------------------------------------*
* FORM create_xml *
*---------------------------------------------------------------------*
FORM create_xml.
CLASS cl_ixml DEFINITION LOAD.
l_ixml = cl_ixml=>create( ).
CALL METHOD l_ixml->create_encoding
EXPORTING
byte_order = 0
character_set = 'gb2312'
RECEIVING
rval = l_encoding.
CALL METHOD l_ixml->create_document
RECEIVING
rval = l_doc.
CALL METHOD l_doc->set_encoding
EXPORTING
encoding = l_encoding.
CALL METHOD l_doc->create_simple_element
EXPORTING
name = 'Root'
parent = l_doc
RECEIVING
rval = l_root.
CALL METHOD l_root->set_attribute
EXPORTING
name = 'ATTRIBUTE'
value = 'sample'
RECEIVING
rval = l_rval.
CALL METHOD l_doc->create_comment
EXPORTING
comment = '''上面ATTRIBUTE为属性示例'''
RECEIVING
rval = l_comment.
CALL METHOD l_root->append_child
EXPORTING
new_child = l_comment
RECEIVING
rval = l_rval.
LOOP AT itab_po.
CALL METHOD l_doc->create_simple_element
EXPORTING
name = 'po'
parent = l_root
RECEIVING
rval = l_po.
CALL METHOD l_doc->create_simple_element
EXPORTING
name = 'pohead'
parent = l_po
RECEIVING
rval = l_pohead.
str = itab_po-ebeln .
CALL METHOD l_doc->create_simple_element
EXPORTING
name = 'ponumber'
parent = l_pohead
value = str
RECEIVING
rval = l_element.
str = itab_po-aedat .
CALL METHOD l_doc->create_simple_element
EXPORTING
name = 'podate'
parent = l_pohead
value = str
RECEIVING
rval = l_element.
PERFORM fill_itab2xml TABLES itab_po-item
USING 'pobody'
'poitem'
l_po.
ENDLOOP.
CALL METHOD l_ixml->create_stream_factory
RECEIVING
rval = l_factory.
CALL METHOD l_factory->create_ostream_itable
EXPORTING
table = xml_table
RECEIVING
rval = l_ostream.
CALL METHOD l_doc->render
EXPORTING
ostream = l_ostream
recursive = 'X'.
CALL METHOD l_ostream->get_num_written_raw
RECEIVING
rval = xml_size.
ENDFORM. "create_xml
*---------------------------------------------------------------------*
* FORM fill_itab *
*---------------------------------------------------------------------*
FORM fill_itab2xml TABLES intab
USING node1name TYPE string
node2name TYPE string
l_parent TYPE REF TO if_ixml_element.
DATA: BEGIN OF headtab OCCURS 0 ,
length TYPE i ,
decimals TYPE i,
type_kind TYPE c,
name(30) TYPE c,
END OF headtab.
DATA descr_ref TYPE REF TO cl_abap_structdescr.
FIELD-SYMBOLS: <comp_wa> TYPE abap_compdescr ,
<f_field> ,
<f_intab> TYPE ANY .
DATA: n TYPE i ,
str TYPE string ,
itemname TYPE string ,
text1 TYPE c ,
l_node TYPE REF TO if_ixml_element ,
l_item TYPE REF TO if_ixml_element .
descr_ref ?= cl_abap_typedescr=>describe_by_data( intab ).
LOOP AT descr_ref->components ASSIGNING <comp_wa>.
MOVE-CORRESPONDING <comp_wa> TO headtab.
APPEND headtab.
ENDLOOP.
CALL METHOD l_doc->create_simple_element
EXPORTING
name = node1name
parent = l_parent
RECEIVING
rval = l_node.
DESCRIBE TABLE headtab LINES n.
LOOP AT intab ASSIGNING <f_intab>.
CALL METHOD l_doc->create_simple_element
EXPORTING
name = node2name
parent = l_node
RECEIVING
rval = l_item.
DO n TIMES.
ASSIGN COMPONENT sy-index OF STRUCTURE <f_intab> TO <f_field>.
str = <f_field>.
READ TABLE headtab INDEX sy-index.
IF headtab-type_kind = 'I' OR headtab-type_kind = 'P'
OR headtab-type_kind = 'F'.
SEARCH str FOR '-'.
IF sy-subrc = 0 AND sy-fdpos <> 0.
SPLIT str AT '-' INTO str text1.
CONDENSE str.
CONCATENATE '-' str INTO str.
ELSE.
CONDENSE str.
ENDIF.
ELSE.
* SHIFT str LEFT DELETING LEADING '0' .
ENDIF.
itemname = headtab-name .
CALL METHOD l_doc->create_simple_element
EXPORTING
name = itemname
parent = l_item
value = str
RECEIVING
rval = l_element.
ENDDO.
ENDLOOP.
ENDFORM. "fill_itab2xml
*---------------------------------------------------------------------*
* FORM download *
*---------------------------------------------------------------------*
FORM download.
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
bin_filesize = xml_size
filename = 'C:\46C.XML'
filetype = 'BIN'
TABLES
data_tab = xml_table.
ENDFORM. "download


分享到:
评论

相关推荐

    《A fast learning algorithm for deep belief nets》原文

    《A fast learning algorithm for deep belief nets》是著名科学家Geoffrey Hinton于2006年发表的一篇具有里程碑意义的论文,它在神经网络和深度学习领域开辟了新的研究方向,对现代人工智能的发展产生了深远影响。...

    Neural Networks and Deep Learning - 神经网络与深度学习 中英双版本

    深度学习是神经网络的一个分支,它主要涉及多层的神经网络结构,也称为深层神经网络(Deep Neural Network, DNN)。这些层级允许网络逐渐学习更复杂的特征,从原始输入数据中提取高层次的信息。深度学习在图像识别、...

    Learning Deep Features for Discriminative Localization论文原文加翻译

    这篇论文主要探讨了如何利用深度学习方法来实现目标定位(discriminative localization),特别是关注卷积神经网络(CNN)在这一领域的应用。论文的核心在于提出了一种称为Class Activation Mapping (CAM) 的技术,...

    deep_complex_networks-master_复数域神经网络_

    本项目"deep_complex_networks-master"旨在为初学者和有一定基础的学习者提供全面的复数域神经网络解析,帮助他们理解和构建自己的复数神经网络模型。 在传统的实数域神经网络中,权重和激活函数都是实数。然而,在...

    Python-deepimageprior利用神经网络来修复图像

    "Python-deepimageprior"项目正是这样一个利用神经网络技术来进行图像修复的应用。本文将深入探讨这个项目的核心概念、工作原理以及如何在Python环境中实现。 首先,我们要了解什么是“深度图像先验(Deep Image ...

    人工智能+深度学习+数据集预处理+xml转json

    在当前的IT领域,人工智能(AI)和深度学习(Deep Learning)是两个极其重要的概念,它们正在推动着科技的快速发展。人工智能是模拟人类智能的一种技术,而深度学习则是AI的一个分支,通过模仿人脑神经网络的工作...

    Laravel开发-laravel-deepzoom

    4. **视图集成**:在 Laravel 视图中,引入 OpenSeadragon 的 JavaScript 和 CSS 文件,然后使用 JavaScript 代码配置 OpenSeadragon 实例,指向 Laravel Deepzoom 生成的 DeepZoom XML 描述文件(.dzi)。...

    deep_sort_yolov3利用深度学习的多目标跟踪

    这种结合不仅充分利用了YOLOv3的检测能力,还利用了Deep Sort的强大匹配策略,实现了稳定且高效的多目标跟踪。 在实际应用中,deep_sort_yolov3在配备1080ti显卡的设备上可以实现实时运行,这意味着即使面对复杂的...

    DeepLearning参考论文

    深度学习(Deep Learning)是人工智能领域的一个重要分支,它通过模拟人脑神经网络的工作机制,构建多层非线性处理单元的大型神经网络模型,从而实现对复杂数据的学习和理解。这一领域的研究和发展极大地推动了...

    Alex《利用深度卷积神经网络对图像进行分类》

    而DCNN通过自学习的方式,能够自动从原始像素层面提取高级特征,这些特征层次丰富,具有较强的表征能力。AlexNet,作为深度卷积网络的一个里程碑,其主要结构包括卷积层、池化层、全连接层以及激活函数等。 1. **卷...

    deepstream sdk 2.0

    参考应用程序(Reference Application)为开发者提供了一个完整的示例,展示如何利用DeepStream SDK构建视频分析解决方案。性能部分则是聚焦于如何优化DeepStream应用程序以达到最佳的运行效率。 定制插件(Custom ...

    deeplearning.ai 编程解答:卷积神经网络

    本资源“deeplearning.ai 编程解答:卷积神经网络”可能是来自Andrew Ng教授在Coursera上的深度学习专项课程中的实践作业解答。在这里,我们将深入探讨CNN的核心概念和关键组成部分。 1. 卷积层(Convolutional ...

    DeepWalk .pptx

    Skip-Gram 模型是一个神经网络模型,利用中心词预测周围的邻近词,而随机游走模型是一种数学统计模型,用来表示不规则的变动形式。 DeepWalk 的应用场景非常广泛,如社交网络分析、图网络、知识图谱等等。DeepWalk ...

    DeepSpeech2 语音识别.zip

    DeepSpeech2的核心架构采用了一种称为卷积神经网络(CNN)和长短期记忆网络(LSTM)相结合的方式。首先,CNN用于处理输入的音频信号,提取时域和频域的特征;接着,LSTM层负责捕捉音频序列中的时间依赖关系,有效地...

    deepid人脸识别

    DEEPID的核心是利用深度神经网络(Deep Neural Network,DNN)来学习人脸特征,实现高精度的人脸识别。这项技术在人脸识别的准确性、鲁棒性以及实时性上都取得了显著的成果。 在DEEPID的训练过程中,通常会采用大量...

    [Deep Learning] 神经网络基础 .pdf

    [Deep Learning] 神经网络基础 .pdf[Deep Learning] 神经网络基础 .pdf[Deep Learning] 神经网络基础 .pdf[Deep Learning] 神经网络基础 .pdf[Deep Learning] 神经网络基础 .pdf[Deep Learning] 神经网络基础 .pdf...

    Deep Zoom Composer Demo1

    【Deep Zoom Composer Demo1】是基于Silverlight技术的一个深度缩放(Deep Zoom)演示项目,它展示了如何利用Silverlight Deep Zoom Composer工具创建交互式的、高分辨率的图像浏览体验。这个工具使得开发者能够轻松...

    Matlab-Deep Learning Toolbox

    Deep Learning Toolbox™提供了一个框架,用于设计和实现具有算法,预训练模型和应用程序的深度神经网络。您可以使用卷积神经网络(ConvNets,CNN)和长期短期记忆(LSTM)网络对图像,时间序列和文本数据进行分类和...

Global site tag (gtag.js) - Google Analytics