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

2020-08-31 13:08发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)专家们, 要求: 一个具有不...

         点击此处--->   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条回答
樱桃小丸子0093
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 /

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