cancel
Showing results for 
Search instead for 
Did you mean: 

Placing a file in Different Directories using Dynamic Configuration

Former Member
0 Kudos

I am using following UDF for my requirement and choosing ASMA in channel, here I am using both filename as well as directory dynamically.

public String setFileName(String input1, String input2, String input3, Container container) throws StreamTransformationException{

String filename = new String("");

String directory = new String("");

DynamicConfiguration conf1 = (DynamicConfiguration) container.getTransformationParameters().get(StreamTransformationConstants.DYNAMIC_CONFIGURATION);

DynamicConfigurationKey key1 = DynamicConfigurationKey.create("http:/"+"/sap.com/xi/XI/System/File","FileName");

DynamicConfiguration conf2 = (DynamicConfiguration) container.getTransformationParameters().get(StreamTransformationConstants.DYNAMIC_CONFIGURATION);

DynamicConfigurationKey key2 = DynamicConfigurationKey.create("http:/"+"/sap.com/xi/XI/System/File","Directory");

Date dNow = new Date( );

      SimpleDateFormat ft =

      new SimpleDateFormat ("yyyyMMdd_HHmmssSSS");

filename = ft.format(dNow)  +"_"+input1+ "_WO_"+ input2 +  "_" + input3 + ".XML";

conf1.put(key1,filename);

if(input1=="CR")

{

directory = directory1;

}

else

{

if(input1 =="UP")

{

directory =  "directory2";

}

}

conf2.put(key2,directory);

return "";

}

I am getting floowing error

Transmitting the message to endpoint <local> using connection SOAP_http://sap.com/xi/XI/System failed, due to: com.sap.engine.interfaces.messaging.api.exception.MessagingException: com.sap.aii.adapter.file.configuration.InvalidDynamicConfigurationValueException: The Adapter Message Property Directory provided in the message header has an invalid value: ''

Please Help....

Accepted Solutions (1)

Accepted Solutions (1)

engswee
Active Contributor
0 Kudos

Hi Vinod

input1 is a String. You cannot compare Strings using == operator in Java. Use input1.equals("UP") instead.

Refer to the following thread.

Rgds

Eng Swee

Answers (5)

Answers (5)

Former Member
0 Kudos

Hi All,

Thanks for your suggestions.

Issue got resolved using variable substitution

Thanks !

former_member184720
Active Contributor
0 Kudos

Please close the thread -

RaghuVamseedhar
Active Contributor
0 Kudos

Vinod,

Adding to above suggestions.

Please check, if UDF is trying to add invalid characters to filename. For example \, /, :, *, ?, ", <, >, |, replace them with underscore ("_").

Defining Variable Substitution File Name

Former Member
0 Kudos

Hi Vinod,

here's a simple example:

public String SetTargetDirectory(String Zid_network,Container container){

DynamicConfiguration conf = (DynamicConfiguration)container.getTransformationParameters().get(StreamTransformationConstants.DYNAMIC_CONFIGURATION);

DynamicConfigurationKey key = DynamicConfigurationKey.create("http://sap.com/xi/XI/System/File","Directory");

if (Zid_network.equals("XXXX_A"))  {

conf.put(key, "DMH/upload/motor/prv");

}

if (Zid_network.equals("XXXX_B"))  {

conf.put(key,"DMH/upload/ricambi/prv");

}

if (Zid_network.equals("XXXX_C"))  {

conf.put(key, "DMT/upload/thai/prv");

}

return "";

}

hope it helps

BR

Fabio

PS= use .equals not ==

iaki_vila
Active Contributor
0 Kudos

Hi Vinod,

There is an extraordinary Amit Srivastava blog which deals with your problem. It is oriented to be used at module adapter level, from my point of view if you are going to work with characteristics near to the communication channels, it's better to add a new adapter module. Check the blog here

Regards.

former_member184720
Active Contributor
0 Kudos

>>>

if(input1=="CR")

{

directory = directory1;

}

Where did you define directory 1? I believe it's a syntax error. You won't be able to activate the mapping right?

However if it is a constant path then please provide valid path "/<<dir name>>" instead of just giving the directory name.