根据文件名将文件放置到其他文件夹

2020-08-31 13:08发布

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

加入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中实现此方案?

谢谢。

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

加入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中实现此方案?

谢谢。

付费偷看设置
发送
6条回答
Bunny_CDM
1楼-- · 2020-08-31 13:29

嗨,

请在下面的逐步博客中找到动态设置文件夹名称的方法。

https://blogs.sap.com/2014/10/13/step- 逐步使用sftp-adapter/java-mapping-target-folder动态选择目标文件夹/

希望这会有所帮助。

感谢和问候,

Praveen T

一只江湖小虾
2楼-- · 2020-08-31 13:18

感谢您的链接,但似乎博客中没有代码。

浮生未央
3楼-- · 2020-08-31 13:35

您是否正在为此不使用映射?

compass1988
4楼-- · 2020-08-31 13:38

否,此集成中没有映射,只是文件从一个文件夹复制到另一个文件夹。

95年老男孩
5楼-- · 2020-08-31 13:34

嗨,

在发送者通道中,使用ASMA并选中"文件复选框",以便在"动态配置"中获得文件名。

如果您使用的是映射,请编写UDF以根据通过ASMA属性接收的文件名来确定目标文件路径。

如果它是直通方案,则进行Java映射以根据源文件名设置目标文件路径。

在接收器通道中,使用ASMA并选中"文件和目录"复选框。

有许多可用的博客,它们解释了如何使用动态配置来设置文件名/路径。

此致,
车丹的花花公子

樱桃小丸子0093
6楼-- · 2020-08-31 13:36

你好,

由于您的情况是直通的,并且在文件传输过程中不涉及映射,请查看以下几点-

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());
     }
 }
 }
 

您可以从-

下载IOUtils帮助程序类。

https://commons.apache.org/proper/commons-io /

接收器通道设置-用于动态目录-使用与屏幕截图中相同的值

一周热门 更多>