2020-08-31 13:08发布
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
专家们,
要求:
一个具有不同文件名的源目录。
需要提取文件,然后根据文件名将其发送到其他文件夹。
例如,我在下面有3个不同的文件名:
A01_datetime.xml
A02_datetime.xml
A03_datetime.xml
我需要将这3个文件复制到文件夹中:
C:/已接收/A01
C:/已接收/A02
C:/已接收/A03
如何在SAP PO中实现此方案?
谢谢。
嗨,
请在下面的逐步博客中找到动态设置文件夹名称的方法。
https://blogs.sap.com/2014/10/13/step- 逐步使用sftp-adapter/java-mapping-target-folder动态选择目标文件夹/
希望这会有所帮助。
感谢和问候,
Praveen T
感谢您的链接,但似乎博客中没有代码。
您是否正在为此不使用映射?
否,此集成中没有映射,只是文件从一个文件夹复制到另一个文件夹。
在发送者通道中,使用ASMA并选中"文件复选框",以便在"动态配置"中获得文件名。
如果您使用的是映射,请编写UDF以根据通过ASMA属性接收的文件名来确定目标文件路径。
如果它是直通方案,则进行Java映射以根据源文件名设置目标文件路径。
在接收器通道中,使用ASMA并选中"文件和目录"复选框。
有许多可用的博客,它们解释了如何使用动态配置来设置文件名/路径。
此致,车丹的花花公子
你好,
由于您的情况是直通的,并且在文件传输过程中不涉及映射,请查看以下几点-
1。 您的场景是直通的-因此,接收方目录和文件名的任何更改都应通过Java映射处理-无法使用图形映射。
2。 当您要基于源文件名创建多个接收器目录时,请查看要点-
您最终将在目标FTP服务器上为每个文件创建多个目录(具体取决于消息量)。 不确定这是否是理想的设计,因为它将为每个文件创建1个文件夹。
b。 由于文件名每次都是动态的,因此需要确保已在接收器文件适配器中选择了"创建目录"选项。
3。 您还需要确保将在其下创建文件夹的根目录保持不变(不过,您可以将值作为参数传递给Java映射)。 例如-
C:/已收到/-这部分。
您可以使用以下Java映射从源中读取文件名,并根据传递给Java映射的文件名和参数来构建目标目录-
包com.sap.DynamicDir; 导入com.sap.aii.mapping.api.AbstractTransformation; 导入com.sap.aii.mapping.api.DynamicConfiguration; 导入com.sap.aii.mapping.api.DynamicConfigurationKey; 导入com.sap.aii.mapping.api.StreamTransformationException; 导入com.sap.aii.mapping.api.TransformationInput; 导入com.sap.aii.mapping.api.TransformationOutput; 导入org.apache.commons.io.IOUtils; 公共类SPCDynamicArchive扩展AbstractTransformation { 公共无效transform(TransformationInput TransformationInput,TransformationOutput TransformationOutput)引发StreamTransformationException { 尝试 { IOUtils.copy(transformationInput.getInputPayload()。getInputStream(),transformationOutput.getOutputPayload()。getOutputStream()); 字符串filename =""; DynamicConfiguration conf1 =(DynamicConfiguration)container.getTransformationParameters()。get(StreamTransformationConstants.DYNAMIC_CONFIGURATION); DynamicConfigurationKey FILE_NAME = DynamicConfigurationKey.create(" http:/" +"/img/sap.com/xi/XI/System/File","FileName"); filename = conf1.get(FILE_NAME); 字符串[] fname = filename.split(" _"); 字符串rootDir = arg0.getInputParameters()。getString(" ROOT_DIR"); 字符串targetDir = rootDir.concat(fname [0]); DynamicConfigurationKey TARGET_DIRECTORY = DynamicConfigurationKey.create(" http://sap.com/xi/XI/System/File","目录"); conf1.put(TARGET_DIRECTORY,targetDir); 捕获(异常e) { 抛出新的StreamTransformationException(e.getMessage()); } } }
您可以从-
https://commons.apache.org/proper/commons-io /
接收器通道设置-用于动态目录-使用与屏幕截图中相同的值
最多设置5个标签!
嗨,
请在下面的逐步博客中找到动态设置文件夹名称的方法。
https://blogs.sap.com/2014/10/13/step- 逐步使用sftp-adapter/java-mapping-target-folder动态选择目标文件夹/
希望这会有所帮助。
感谢和问候,
Praveen T
感谢您的链接,但似乎博客中没有代码。
您是否正在为此不使用映射?
否,此集成中没有映射,只是文件从一个文件夹复制到另一个文件夹。
嗨,
在发送者通道中,使用ASMA并选中"文件复选框",以便在"动态配置"中获得文件名。
如果您使用的是映射,请编写UDF以根据通过ASMA属性接收的文件名来确定目标文件路径。
如果它是直通方案,则进行Java映射以根据源文件名设置目标文件路径。
在接收器通道中,使用ASMA并选中"文件和目录"复选框。
有许多可用的博客,它们解释了如何使用动态配置来设置文件名/路径。
此致,
车丹的花花公子
你好,
由于您的情况是直通的,并且在文件传输过程中不涉及映射,请查看以下几点-
1。 您的场景是直通的-因此,接收方目录和文件名的任何更改都应通过Java映射处理-无法使用图形映射。
2。 当您要基于源文件名创建多个接收器目录时,请查看要点-
您最终将在目标FTP服务器上为每个文件创建多个目录(具体取决于消息量)。 不确定这是否是理想的设计,因为它将为每个文件创建1个文件夹。
b。 由于文件名每次都是动态的,因此需要确保已在接收器文件适配器中选择了"创建目录"选项。
3。 您还需要确保将在其下创建文件夹的根目录保持不变(不过,您可以将值作为参数传递给Java映射)。 例如-
C:/已收到/-这部分。
您可以使用以下Java映射从源中读取文件名,并根据传递给Java映射的文件名和参数来构建目标目录-
您可以从-
下载IOUtils帮助程序类。https://commons.apache.org/proper/commons-io /
接收器通道设置-用于动态目录-使用与屏幕截图中相同的值
一周热门 更多>