具有Java增强方向的XSLT映射

2020-08-19 12:32发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)专家们, 我开始学习XSLT映...

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

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


专家们,

我开始学习XSLT映射,尽管我认为我已经掌握了一些基础知识,但是我仍在努力理解Java增强功能。 我已经尝试过许多博客和网站,但是必须很旧,链接指向不再存在的页面。 我有几个问题。

对于其中一个,我不确定这是否始终可行或取决于处理器。

第二,我不知道如何正确调用Java类。 在XSLT文件中,我声明在示例代码中找到的名称空间。 但是我不知道自己在哪里可以找到这些命名空间,或者现在如何知道特定类或函数所需的命名空间?

第三,我无法使用XSLT常量,例如$ MessageId。 我声明了一个MessageId参数,但是当尝试输出该数字时,该字段保持为空。 我使用ESR的测试功能,所以也许在那里没有构造MessageId(仅当发送真实消息时)?

我有一个输入IDOC,为了练习,我尝试连接两个值TABNAM和MESTYP。

 <?xml version =" 1.0" encoding =" UTF-8"?>
 
 
 
  EDI_DC40 
  310 
  0000000280974044 
  750 
  30 
  1 
  2 
  ZIKDTA01 
  ZMKADATA 
  SAPQAS 
  LS 
  QAS_310 
  SAPQX3_300 
  LS 
  QKADATA001 
  20200428 
  151804 
  20200428151804 
  

我的XSLT当前看起来像这样(部分)

 <?xml version =" 1.0" encoding =" UTF-8"?>
 

 

 

 
 
 
 
 
 

 

 
 
 <消息>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

这是Java代码:

包com.company.group;
 导入java.util.Map;
 导入com.sap.aii.mapping.api.AbstractTrace;
 导入com.sap.aii.mapping.api.StreamTransformationConstants;
 公共类MappingClass {
 公共静态字符串concat(String Table,
 字符串消息,
 地图输入参数)
 {
 跟踪=(AbstractTrace)inputparam.get(
 StreamTranformationConstants.MAPPING_TRACE);
 trace.addInfo(" concat():
 \ nTABNAM =" +表格+
 \ nMESTYP =" +消息);
 返回表+''+消息;
 }
 }


 

对于串联,我以SAP文档中的示例为例 https://help.sap.com/saphelp_nwpi71/helpdata/en/73/f61eea1741453eb8f794e150067930/content.htm?no_cache=true 在我的情况下,它跳过了XSLT中的javamap:concat部分。 此外,Mes

它不起作用,因为我对此不太熟悉,所以我不知道在哪里寻找答案:我的Java类正确吗? 处理器不能处理这个,我的XSLT错误吗?

在ESR中,我将XSLT和Java文件作为导入的档案上传并获得以下测试结果:

(128.8 kB)
4条回答
落灬小鱼
2020-08-19 12:39

嗨Reinout,

乍一看一切都很好。 我会做类似的。 有两种猜测可能会有所帮助:

  1. 您是否尝试过选中"操作映射"中的"使用SAP XML Toolkit"框。 (不需要,但有时它确实会产生奇迹...)
  2. 您是否尝试过将Java类文件放置到与ZIP中的XSL文件相同的级别上? (看来您将Java文件放在XSL下方的子目录中。请尝试将Java类放在ZIP文件的根目录上。)

一周热门 更多>