如何从XML文件格式中删除选项卡?

2020-09-16 10:28发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


你好用户,

当我将数据传输到XML文件时,默认情况下在XML文件中获得标签。 我们没有为此标签执行任何代码。 我们如何才能从文件中删除此标记?。

找到附加的图片和代码。 我已经检查了很多SCN线程,但没有得到适当的解决方案。 请帮助我。

报告ztest_s8。
 *潘塔拉选择*
 参数:gk_ruta类型rlgrap文件名默认值'D:\ file2.xml'。
 *潘塔拉选择*
 数据:it_xml_final blob类型表。
 TYPES:analysiscatid开始,
        AnlCat_SHead TYPE char20,
        结束分析。


 类型:分析代码的开头,
         帐号代码TYPE char15,
         analysisdimensionid TYPE numc2,
         名称TYPE char50,
         状态类型numc1,
         AnalysisCatid TYPE analysiscatid,
   分析代码的结尾。

 类型:有效载荷的开始,
         analysiscode TYPE analysiscode,
   有效载荷的结尾。

 类型:sunsystemscontext的开头,
         业务单元TYPE char3,
 结束于sunsystemscontext。



 类型:用户开始,

     名称TYPE char3,

 END OF用户。



 类型:ssc的开始,

     用户TYPE用户,

     sunsystemscontext TYPE sunsystemscontext,

     有效载荷TYPE有效载荷,

 SSC的结尾。
 数据:it_file类型为TABLE OF ssc。
 数据:wa_file类型为ssc。
 *选择开始*
 选择开始。
   执行llena_accesos。
   执行descarga_xml。
 选择结束。
 *选择结束*
 *表格LLENA_ACCESOS *
 表格llena_accesos。
     清除it_file。
   移动:'PK1'到wa_file-user-name,
                 " KEV"到wa_file-sunsystemscontext-businessunit,
                 '99320042'到wa_file-payload-analysiscode-accountcode,
                 '05'TO wa_file-payload-analysiscode-analysisdimensionid,
                 'SUNIL'为wa_file-payload-analysiscode-name,
                 wa_file-payload-analysiscode-status为1,
                 " T5_STAFFID/CRED"到wa_file-payload-analysiscode-AnalysisCatid-AnlCat_SHead。
   将wa_file附加到it_file。
   清除:wa_file。
 ENDFORM。  " LLENA_ACCESOS
 *表格LLENA_ACCESOS *
 *表格DESCARGA_XML *
 表格descarga_xml。
   数据:l_dom类型参考if_ixml_element,
                 m_document类型参考if_ixml_document,
                 g_ixml类型参考if_ixml,
                 w_string TYPE xstring,
                 w_size TYPE i,
                 w_result TYPE i,
                 w_line TYPE字符串,
                 it_xml TYPE dcxmllines,
                 s_xml喜欢it_xml,
                 w_rc喜欢sy-subrc。
   数据:xml TYPE dcxmllines。
   数据:rc TYPE sy-subrc,
   开始xml_tab发生0,
                 d像xml之类的行,
   xml_tab的结尾。



  *类cl_ixml定义负载。
  * g_ixml = cl_ixml => create()。
  *不要检查g_ixml是否为INITIAL。
  * m_document = g_ixml-> create_document()。
  *不要检查m_document是否为INITIAL。
   写:/'将数据转换为DOM 1:'。
 
  通话转换('ID')
        来源ssc ='abc'" extractiondate = sy-datum
               obs = it_file
     结果XML it_xml_final。

 *通话功能'SDIXML_DATA_TO_DOM'
 *出口
 *名称='SSC'
 * dataobject = it_file
 *重要
 * data_as_dom = l_dom
 *变化
 * document = m_document
 *例外情况
 *非法名称= 1
 *其他= 2。
 *如果sy-subrc = 0。
 *写"好"。
 * ELSE。
 *写:" Err =",
 * sy-subrc。
 *  万一。
 *不要检查l_dom是否为INITIAL。
 * w_rc = m_document-> append_child(new_child = l_dom)。
 *如果w_rc是INITIAL。
 *写"好"。
 * ELSE。
 *写:" Err =",
 * w_rc。
 *  万一。


 *通话功能'SDIXML_DOM_TO_XML'
 *出口
 * document = m_document
 *重要
 * xml_as_string = w_string
 *大小= w_size
 *桌子
 * xml_as_table = it_xml
 *例外情况
 * no_document = 1
 *其他= 2。

 *如果sy-subrc = 0。
 *写"好"。
 * ELSE。
 *写:" Err =",
 * sy-subrc。
 *  万一。
 *循环到it_xml INTO xml_tab-d。

 * APPEND xml_tab。

 * ENDLOOP。

   通话功能'WS_DOWNLOAD'
     出口
       bin_filesize = w_size
       文件名= gk_ruta
       filetype ='BIN'
     桌子
 * data_tab = xml_tab
       data_tab = it_xml_final
     例外情况
       其他= 10。
   如果sy-subrc <> 0。
     消息ID sy-msgid类型sy-msgty编号sy-msgno
     与sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4。
   万一。
 ENDFORM。  " DESCARGA_XML

 *表格DESCARGA_XML * 

item.jpg (90.2 kB)

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


你好用户,

当我将数据传输到XML文件时,默认情况下在XML文件中获得标签。 我们没有为此标签执行任何代码。 我们如何才能从文件中删除此标记?。

找到附加的图片和代码。 我已经检查了很多SCN线程,但没有得到适当的解决方案。 请帮助我。

报告ztest_s8。
 *潘塔拉选择*
 参数:gk_ruta类型rlgrap文件名默认值'D:\ file2.xml'。
 *潘塔拉选择*
 数据:it_xml_final blob类型表。
 TYPES:analysiscatid开始,
        AnlCat_SHead TYPE char20,
        结束分析。


 类型:分析代码的开头,
         帐号代码TYPE char15,
         analysisdimensionid TYPE numc2,
         名称TYPE char50,
         状态类型numc1,
         AnalysisCatid TYPE analysiscatid,
   分析代码的结尾。

 类型:有效载荷的开始,
         analysiscode TYPE analysiscode,
   有效载荷的结尾。

 类型:sunsystemscontext的开头,
         业务单元TYPE char3,
 结束于sunsystemscontext。



 类型:用户开始,

     名称TYPE char3,

 END OF用户。



 类型:ssc的开始,

     用户TYPE用户,

     sunsystemscontext TYPE sunsystemscontext,

     有效载荷TYPE有效载荷,

 SSC的结尾。
 数据:it_file类型为TABLE OF ssc。
 数据:wa_file类型为ssc。
 *选择开始*
 选择开始。
   执行llena_accesos。
   执行descarga_xml。
 选择结束。
 *选择结束*
 *表格LLENA_ACCESOS *
 表格llena_accesos。
     清除it_file。
   移动:'PK1'到wa_file-user-name,
                 " KEV"到wa_file-sunsystemscontext-businessunit,
                 '99320042'到wa_file-payload-analysiscode-accountcode,
                 '05'TO wa_file-payload-analysiscode-analysisdimensionid,
                 'SUNIL'为wa_file-payload-analysiscode-name,
                 wa_file-payload-analysiscode-status为1,
                 " T5_STAFFID/CRED"到wa_file-payload-analysiscode-AnalysisCatid-AnlCat_SHead。
   将wa_file附加到it_file。
   清除:wa_file。
 ENDFORM。  " LLENA_ACCESOS
 *表格LLENA_ACCESOS *
 *表格DESCARGA_XML *
 表格descarga_xml。
   数据:l_dom类型参考if_ixml_element,
                 m_document类型参考if_ixml_document,
                 g_ixml类型参考if_ixml,
                 w_string TYPE xstring,
                 w_size TYPE i,
                 w_result TYPE i,
                 w_line TYPE字符串,
                 it_xml TYPE dcxmllines,
                 s_xml喜欢it_xml,
                 w_rc喜欢sy-subrc。
   数据:xml TYPE dcxmllines。
   数据:rc TYPE sy-subrc,
   开始xml_tab发生0,
                 d像xml之类的行,
   xml_tab的结尾。



  *类cl_ixml定义负载。
  * g_ixml = cl_ixml => create()。
  *不要检查g_ixml是否为INITIAL。
  * m_document = g_ixml-> create_document()。
  *不要检查m_document是否为INITIAL。
   写:/'将数据转换为DOM 1:'。
 
  通话转换('ID')
        来源ssc ='abc'" extractiondate = sy-datum
               obs = it_file
     结果XML it_xml_final。

 *通话功能'SDIXML_DATA_TO_DOM'
 *出口
 *名称='SSC'
 * dataobject = it_file
 *重要
 * data_as_dom = l_dom
 *变化
 * document = m_document
 *例外情况
 *非法名称= 1
 *其他= 2。
 *如果sy-subrc = 0。
 *写"好"。
 * ELSE。
 *写:" Err =",
 * sy-subrc。
 *  万一。
 *不要检查l_dom是否为INITIAL。
 * w_rc = m_document-> append_child(new_child = l_dom)。
 *如果w_rc是INITIAL。
 *写"好"。
 * ELSE。
 *写:" Err =",
 * w_rc。
 *  万一。


 *通话功能'SDIXML_DOM_TO_XML'
 *出口
 * document = m_document
 *重要
 * xml_as_string = w_string
 *大小= w_size
 *桌子
 * xml_as_table = it_xml
 *例外情况
 * no_document = 1
 *其他= 2。

 *如果sy-subrc = 0。
 *写"好"。
 * ELSE。
 *写:" Err =",
 * sy-subrc。
 *  万一。
 *循环到it_xml INTO xml_tab-d。

 * APPEND xml_tab。

 * ENDLOOP。

   通话功能'WS_DOWNLOAD'
     出口
       bin_filesize = w_size
       文件名= gk_ruta
       filetype ='BIN'
     桌子
 * data_tab = xml_tab
       data_tab = it_xml_final
     例外情况
       其他= 10。
   如果sy-subrc <> 0。
     消息ID sy-msgid类型sy-msgty编号sy-msgno
     与sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4。
   万一。
 ENDFORM。  " DESCARGA_XML

 *表格DESCARGA_XML * 

item.jpg (90.2 kB)
付费偷看设置
发送
5条回答
小c菟菟
1楼-- · 2020-09-16 11:12

是传递给xml并自动生成的每个表行的标记。 例如OBS成为根节点,OBS表行项目成为节点。 如果您不想要该标签,则必须设计自己的转换模板。

DafaDDDa
2楼-- · 2020-09-16 11:06

你好,马修,

感谢您的回复。

我们正在使用交易ID方法或上面注释的代码获取。因此,我创建以上代码只是出于测试目的。

我在替换功能模块WS_DOWNLOAD中添加了以下代码,但结果仍然相同。

 呼叫方法cl_gui_frontend_services => gui_download
     出口
       文件名= file_path
       filetype ='BIN'
     改变
       data_tab = it_xml_final 
宇峰科技
3楼-- · 2020-09-16 11:06

我没有回答您的问题-我只是在说ABAP的一般原则。 不要使用过时的技术。 从WS_DOWNLOAD切换到CL_GUI_FRONTEND_SERVICES可以使您的代码更好,但不能解决您的问题。 你真的认为会吗?

宇峰科技
4楼-- · 2020-09-16 11:04

你好,马修,

非常感谢。是的,它将对我的未来有所帮助。

三十六小时_GS
5楼-- · 2020-09-16 10:57

编辑:确定您要导出的布局,但是我有一个变通方法,可以使用转换ID根据需要管理xml节点。 理想是这样的:

选择CARRID,CARRNAME从SCARR到表@DATA(IT_FILE)最多20行。
在IT_FILE处将数据放入DATA(LS_FILE)。
R_DESCR?= CL_ABAP_TYPEDESCR => DESCRIBE_BY_DATA(LS_FILE)。
DATA(LV_NAME)= R_DESCR-> COMPONENTS [1] -NAME。
DATA(OBS)=值ABAP_TRANS_SRCBIND_TAB((NAME ='SSC'VALUE = REF#('abc')))
(NAME = LV_NAME VALUE = REF#(LS_FILE-CARRID)) )。 结局。 通话转换('ID') 源(OBS) 结果XML IT_XML_FINAL。

一周热门 更多>