Adapter Module Question

Hi,
I would like to know if we can access the value of the "Source Directory" that we define in the sender communication channel within an adapter module on the same side
Helpful answers will be rewarded.
Thanks
krishna

Hi,
use this code for the directory,
public ModuleData process(ModuleContext mc, ModuleData md) throws
ModuleException
Hashtable mp = (Hashtable)
md.getSupplementalData("module.parameters");
String fileDirectory = null;
if (mp != null)
fileDirectory = (String) mp.get("Directory");
This will work for the directory,
You need to give the technical name of the Adapter Specific Identifiers.
The list of technical names are at the ned of this link,
http://help.sap.com/saphelp_nw04/helpdata/en/bc/bb79d6061007419a081e58cbeaaf28/content.htm
Regards
Bhavesh

Similar Messages

  • Reg Adapter Module in SAP PI 7.11

    Hi,
    I am trying to develop an Adapter Module using SAP NWDS and I am referring http://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/c0b39e65-981e-2b10-1c9c-fc3f8e6747fa?quicklink=index&overridelayout=true for the same.
    Now I am stuck on page 11 (page 16 of the pdf).
    Does the value of Remote interface have to be strictly com.sap.aii.af.lib.mp.module.ModuleRemote (similarly for other parameters)?
    Are these values dependent on the Default EJB Package that we use (mentioned on page10). Because the name of my package is com.companyname.adaptermodule and is as per the naming convention that we follow.
    Thank you,
    Pankaj.

    Hi,
    Ok. Actually I thought that the names are dependent on the default EJB package-name that we specify in previous step; but now these two do not seem to be related to each other (name-wise)
    The question seems to be answered for now. Thanks to Stefan.
    Thank you,
    Pankaj.

  • Change "subject" in Receiver Mail Adapter Module

    Hi all,
    following the "How To Guide" I developed a Module for my receiver mail adapter. Everything works fine.
    Now my question: is it possible to change the content of the mail-"subject" in the module?
    Your help is appreciated.
    Carmen

    Hi Stefan,
    maybe I should describe my problem more detailed:
    My scenario is RFC-XI-Mail. I use the mail package to determine the receiver of the mail dynamically. Another thing I want to do, is to attach a file to this mail which is located on the server. So far so good.
    My problem is, that the name of the file (which I need in my adapter module) changes for every mail. So what I need is the possibility to deliver it to the adapter module.
    I found out that it is possible to read the payload. So my idea was to hand it over in one of the fields like "subject". But now I want to change the subject afterwards...(delete the filename).
    Maybe you have another idea?
    Regards
    Carmen

  • How to access Adapter Specific Message Attribute in my  own adapter module

    Hi,
    I'm developing a mail adapter customer module. Now I have a requirement about getting the CC information from mail. Even if I
    checked the option of "use mail package" when configing sender Mail Adapter, I still can not get CC information in my module
    because it is not included in mail package.
    I got to know CC information is included in ASMA(Adapter Specific Message Attribute), but how can I access ASMA in my module?
    Till now I know there are two ways to access ASMA
    1. use AF_Modules/DynamicConfigurationBean XI standard module to access ASMA.I did it as below:
    add this module in front of my own module, then set key: write http://sap.com/xi/XI/System/Mail SHeaderCC and value :      
    <b>message.refToMessageId</b>(which message property should be put here?). I'm trying to get it by message.getRefToMessageId() in my
    own module. But what happens is not as I expected, I get null instead of CC information. Which step I did wrong?
    2. use mapping api
       DynamicConfiguration conf = (DynamicConfiguration) <b>container</b>
        .getTransformationParameters()
        .get(StreamTransformationConstants.DYNAMIC_CONFIGURATION);
         DynamicConfigurationKey key = DynamicConfigurationKey.create(
             “http://sap.com/xi/XI/System/Mail”,
             “SHeaderCC”);
    but how can I get <b>container</b> object in my module?
    Is there any other way to access ASMA in customer module?
    Thanks

    hi,
    >>>>but how can I access ASMA in my module?
    have a look at this blog:
    /people/daniel.graversen/blog/2006/10/05/dynamic-configuration-in-adapter-modules
    and try getMessageProperty
    it's also here:
    in Adapter-Specific Message Attributes link
    http://help.sap.com/saphelp_nw04/helpdata/en/17/50d440e14f8431e10000000a1550b0/frameset.htm
    Regards,
    michal
    <a href="/people/michal.krawczyk2/blog/2005/06/28/xipi-faq-frequently-asked-questions"><b>XI / PI FAQ - Frequently Asked Questions</b></a>

  • Reading Dynamic Configuration information in side adapter module.

    Hi All,
    We are writing an adapter module for one of our receiver adapter.
    On the Sender side we have a file adapter whose adapter specific properties are checked. So the message has the file name in the Dynamic configuration.
    Now we need to read this file name from dynamic configuration inside our adapter module for receiver adapter.
    If any one can tell us how to do this we would be really thankful.
    Thanks
    Abinash

    Bhavesh,
    When we use the follwoing code inside mapping
    DynamicConfiguration conf = (DynamicConfiguration) container.getTransformationParameters().get(StreamTransformationConstants.DYNAMIC_CONFIGURATION);
    the conf object gets populated
    but inside our adapter module we ares using
    Map param;
    DynamicConfiguration conf = (DynamicConfiguration) 
                   param.get(StreamTransformationConstants.DYNAMIC_CONFIGURATION);
                   DynamicConfigurationKey key = DynamicConfigurationKey.create
                   ("http://sap.com/xi/XI/System/File","FileName");
                   String ourSourceFileName = conf.get(key);
    Now the question is from where the <b>object of par</b>am will initialize.
    I think we need to get container object from some where, but don't know how to get it as inside mapping the container object is passed as method argument.
    Thanks
    Abinash

  • Adapter Module Error-Sending excel file as an attachment of the mail

    Hi ,
    My scenario is as follows
    1)I am sending an excel file as an attachment of the mail.I need to read that excel attachment as a payload.
    So mail adapter is used in sender side.
      To configure this, have used standard PayloadSwapBean  module with proper module key.
      Next to convert excel to XML another custom adapter module is being used.
    Both this adapter module , I configured into the CC of sender mail adapter.
    The order in which adapter modules are being used in the sender CC are as follows
    1)localejbs/AF_Modules/PayloadSwapBean
    2)localejbs/MDPExcelToXMLConversion
    3)sap.com/com.sap.aii.adapter.mail.app/XIMailAdapterBean
    MDPExcelToXMLConversion-Custom adapter module written to convert excel to xml.
    I am getting the following error
    exception caught during processing mail message [4899]com.sap.aii.af.lib.mp.module.ModuleException
    And also,
    no messages in coming MONI of PI.
    Pls suggest what to do.
    Thanks
    Ayan

    Shabarish,
    Will the ordering in which the adapter modules(In this case there are two-PayloadSwapBean & MDPExcelToXML) are appearing into Module tab of sender adapter matter?
    Firstly, what is happenning
    1)If I take out the custom  adapter module MDPExcelToXML and put only PayloadSwapBean  then it is successfully converting mail attachment into the main Payload i.e PayloadSwapBean   module is working.
    2)Nextly, my local code( i.e java code without including standard Module specific method like ejbActivate(),ejbPassivate(),process()  etc etc.)) for MDPExcelToXML is successfuly converting the excel file into the XML file.Then I am making the local code into adapter module specific code and deploying that.
    A few question arises here,
    Do I need to do any specific configurations here in PI for this particular things.Maybe both the adapter module is clashing with each other.
    And also using tracing and logging into my custom adapter module code.Getting the following error,
    java.io.IOException: Unable to read entire header; 116 bytes read; expected 512 bytes#
    Thanks
    Ayan

  • How to debug adapter module in PI 7.1

    Hello all,
    I am trying to figure out how to debug adapter module in PI 7.1.
    I guess runtime debugging ( switch AS java in debug mode and attach NWDS to the AS Java to debug as module is being executed) is not possible with adapter module. Please let me know if this is indeed possible and how to enable it.
    The only option is to send debug information to log file. So in the module code like:
    audit.addAuditLogEntry(key, status, message);
    location.debugT(SIGNATURE, message);
    I've read that for PI 7.0, you need to add log-configuration.xml to meta-inf. Is this still required for PI 7.1?
    My next question is how to read the log in audit log and in location. I've read that the audit log can be read in .../MessagingSystem/monitor/monitor.jsp, under which section of the page I can read the audit log? I can't see any of my log there.
    For log in location, I guess I need to go to NWA, can you please share the path (navigation) in NWA to see the location?
    Thanks
    Jayson

    > I guess runtime debugging ( switch AS java in debug mode and attach NWDS to the AS Java to debug as module is being executed) is not possible with adapter module. Please let me know if this is indeed possible and how to enable it.
    It is possible for adapter modules as well. I know this from our developers
    It should work like this:
    /people/christian.drumm/blog/2008/09/30/debugging-java-mappings-using-sap-netweaver-developer-studio
    > The only option is to send debug information to log file. So in the module code like:
    > audit.addAuditLogEntry(key, status, message);
    > location.debugT(SIGNATURE, message);
    > My next question is how to read the log in audit log and in location. I've read that the audit log can be read in .../MessagingSystem/monitor/monitor.jsp, under which section of the page I can read the audit log?
    In the RWB under Message Monitoring for Adapter, or try the shortcut
    http://server:port/mdt

  • PI 7.1 Adapter Module Development - Identify SOAP Fault Message

    Hi Experts,</br>
    here's a PI 7.1 Adapter Module Development issue I hope you can help me to resolve. It's about identifying SOAP fault messages.</br>
    </br>
    Scenario at a glance:</br>
    Adapter Modules placed in the modules chain at request and response time in a synchronous Scenario:</br>
    - Request: SOAP Axis to RFC </br>
    - Response and Fault Response: RFC to SOAP Axis</br>
    </br>
    The issue is how to identify SOAP fault message in SOAP Axis Adapter Module in the response message:</br>
    The client gets SOAP fault messages like the follwong one:</br>
       <SOAP:Body>
          <SOAP:Fault>
             <faultcode>SOAP:Server</faultcode>
             <faultstring>Server Error</faultstring>
             <detail>
                <ns1:exception xmlns:ns1="http://typen.geschaeftsstelle.pab.barmer.de">
                   <ns1:errortext>bla bla bla ...</ns1:errortext>
                </ns1:exception>
             </detail>
          </SOAP:Fault>
       </SOAP:Body>
    </br>
    </br>
    But when trying to access the tags faultcode and/or faultstring in the adapter module via xPath expressions I do not get them. Obviously the SOAP Fault tags are built AFTER the adapter module has been passed. So my question is:</br>
    How can I clearly/uniquely detect a SOAP fault response message (and distinguish it from a "normal" response message) in my SOAP Axis Adapter Module?</br>
    </br>
    I tried it the following way:</br>
    </br>
    </br>
    // Check Message Payload for SOAP Fault Message via xPath expressions</br>
    ...</br>
    // SOAP Fault Code</br>
    zv_xPression = zc_constXPattern.replaceFirst("&", "faultcode");</br>
    zv_soapFaultCode = XPathAPI.eval(zv_doc, (String) zv_xPression).toString();</br>
    // SOAP Fault String</br>
    zv_xPression = zc_constXPattern.replaceFirst("&", "faultstring");</br>
    zv_soapFaultString = XPathAPI.eval(zv_doc, (String) zv_xPression).toString();</br>
    // check for SOAP Fault Message</br>
    if (zv_soapFaultCode.equals("") && zv_soapFaultString.equals("")) {</br>
         // Create Audit Log entry - NOT a SOAP Fault Message</br>
         zv_msgText = zc_constModuleName + " 0190: xPath - OK! This message is NOT a SOAP Fault Message";</br>
         zv_audit.addAuditLogEntry(zv_msgKey, AuditLogStatus.SUCCESS, zv_msgText);</br>
         zv_faultCheck = false;</br>
    }</br>
    else {</br>
         ...</br>
         // Create Audit Log entry - SOAP Fault Message</br>
         zv_msgText = zc_constModuleName </br>
              + " 0200: xPath - this message is a SOAP Fault Message. " </br>
              + " - Faultcode is: " + zv_soapFaultCode </br>
              + " - Faultstring is: " + zv_soapFaultString; </br>
         zv_audit.addAuditLogEntry(zv_msgKey, AuditLogStatus.ERROR, zv_msgText);</br>
         ...</br>
    }</br>
    ...</br>
    </br></br>
    But zv_soapFaultCode and zv_soapFaultString are always empty (with other payload tags this coding works fine).</br>
    </br>
    Any ideas? </br></br>
    Thanx very much in advance!</br></br>
    Regards,</br>
    Volker

    Hi Alex!
    Like already mentioned I solved my problem by identifying the SOAP exception with the messageClass attribute of the PI message header. Acess code:
    try {
    String zv_msgClass = zv_piMsg.getMessageClass().toString();
    } catch (Exception e) {
    zv_msgText = zc_constModuleName
    + " E0110: Message processing terminated."
    + " Reason: Error while getting MessageClass "
    + zv_dataSource
    + e;
    // create trace and audit log entry (severity ERROR) for exception
    zv_location.errorT(ZV_SIGNATURE, zv_msgText);
    zv_audit.addAuditLogEntry(zv_msgKey, AuditLogStatus.ERROR, zv_msgText);
    ModuleException me = new ModuleException(e);
    zv_location.throwing(ZV_SIGNATURE, me);
    e.printStackTrace();
    throw me;
    }     // end of try-catch-block
    But I do not think this will solve your problem. I am almost sure, that something in your Axis configuration is wrong/missing. If a handler cannot be instatiated then it really may be missing. Have a look at defaultTrace.trc. Maybe you will find more suitable information about the root cause of your problem. Also have a look at NWA under software components and/or application modules if you can find/see your modules.
    But there is a general issue when trying to catch PI fault messages. If e.g. the requestor tries to login with wrong userid/pasword, then you will have no chance to catch this kind of error - at least as far as I know. Because in this very early stage of PI message processing no module is called.
    One last question: Did you develop your own Adapter or just an adapter module? In the first case: Is your adapter started and healthy? Have a look at RWB -> communication channel monitoring.
    Regards,
    Volker

  • Dynamic Configuration or Adapter module ?

    Hi Experts
    I need advice in the following scenarios where the interface is from a legacy file in the Source to an IDOC posting on the Target
    a) The logic for the mapping is that if the File name is A then pass 123 and if the file name is B pass 456
    for eg if it is IT_ABYYYYMMDD.350 then i have to pass 123 adn if it is  IT_ABYYYYMMDD.350 then i have to pass 456
    How is it possible to use the file name PI picks from the folder and use it in the mapping
    It has to be done in the File Adapter ? do i have to write an Adapter module for it ??
    how do i pass the file name in the mapping in IR ???
    b) i need to derive data from the file name
    for eg if the filename is IT_ABYYYYMMDD.345 and i have to derive the AB part from it and use it in the message mapping
    since it is to be maped to a target field int he idoc .. how can I do that ?
    Does it require a lot of coding ?
    I have read about Dynamic Configuration but where and how to use it ??
    can any one please help me with the steps to use or the code  for deriving the value AB from the File name IT_ABYYYYMMDD.345 ??
    thanks
    Rohan

    >
    RohanS wrote:
    > Yes I am on track .. just two small questions ..in michal's blog
    > the UDF code says
    >
    > DynamicConfigurationKey key = DynamicConfigurationKey.create("http://sap.com/xi/XI/System/File","FileName");
    >
    > so does the first argument in the braces = the file path ? as in the server path and location ?
    >
    > and secondly
    > does this UDF require no input parameters cos in my mapping there is no source for this ... just that i need to derive this name and pass it to the target  field so will this udf take any input argument when i am creating it in message mapping n PI 7.1?
    >
    > or do I  just  create a UDF without a variable input and write this code and return as per your code and map it to the target ?
    >
    > thanks
    > Rohan
    first one is not path i.e file adapter property of SAP PI use as it is and need to pass some input to UDF just some variable which does nothing in the mapping and map the output to  your target variable
    HTH
    Rajesh

  • Java Mapping Or Adapter Module for MultiLevel File Content Conversion ??

    Hi Experts,
    Hi All,
    As we all know file content conversion cannot parse more than three level even if we use FCC paramenters or MessageTransform Bean /StrictXmlToPlain Bean.
    Currently i am facing an scenario where i can expect an content coversion with four or five levels.
    for ex.
    Target Message Looks like
    Header(0..1)
           |_____X
           |_____Y
           |_____Detail(0.n)
                 |____A
                 |____B
                 |____SubDetail(0.n)
                        |_____Trailer(0.n)
                                |______rec1
                                |______rec2
                                |______rec3(0..n)
                                       |______Subrec1
                                       |______Subrec2
    So my question how can i do the FixedLength/CSV in the target system ???
    Shall i do java mapping ? if yes then any code example relevant to this type of scenario
    Shall i do adapter module development ?if yes then any code example relevant to this type of scenario
    Thanks In Advance
    Ronit Mishra

    Target Message Looks like
    Header(0..1)----
    Level 1
           |_____X
           |_____Y
           |_____Detail(0.n)----
    Level 2
                 |____A
                 |____B
                 |____SubDetail(0.n)----
    Level 3
                        |_____Trailer(0.n)----
    Level 4
                                |______rec1
                                |______rec2
                                |______rec3(0..n)----
    Level 5
                                       |______Subrec1
                                       |______Subrec2

  • File adapter - Archive issue with adapter module

    Hi All,
    I have 2 issues here. We are currently using PI 7.11 EHp1 SP02.
    1. Arhival with "add time stamp" wont work. It just gives us an error message saying simpledate format exception.
    I have gone through the OSS note 1265534 and thought this will resolve the issue. But our BASIS team believes this note is only applicable for PI 7.1 SP01. Can you one using PI 7.11 SP02 comment on this?
    Note: Archive option with out add time stamp works fine.
    2. When I use adapter module in my sender file configuration, the archive option itself does not work. Read the official SAP help which says "To archive source files where a permanent error occurred during processing, set the indicator.
    A permanent error occurs either during the conversion of the file content, or in a module in the module processor."
    So the question here is, how do we make the error permanent? The only way to throw error from adapter module is using the ModuleException. It has 4  different constructors. I have used both
    ModuleException me = new ModuleException ("My error Msg"); and
    Module Exception me1 = new ModuleException ("Error String", new Throwable("My error Msg");
    In both the cases, the archival wont happen.
    Any ideas welcome.
    Thanks
    Jai

    Hi,
    I am using NFS protocol here not FTP. Sorry I dint mention that earlier.
    Thanks
    Jai
    Edited by: Jaishankar on Apr 1, 2010 9:55 AM
    Edited by: Jaishankar on Apr 6, 2010 11:10 AM

  • Get poll interval parameter from adapter module

    Hi,
    I'd like to make special treatment in my adapter module based on the "poll interval" information filled in Processing Parameters part of the adapter configuration.
    Can an adapter module access this information?
    regards
    Yann

    Hi Yann,
    >>>>Can an adapter module access this information?
    of course it can you just have to use
    a correct parameter's name
    check this post to get the java code
    Re: Access the URL Parameter from a Adaptermodule
    Regards,
    michal
    <a href="/people/michal.krawczyk2/blog/2005/06/28/xipi-faq-frequently-asked-questions"><b>XI / PI FAQ - Frequently Asked Questions</b></a>

  • Module Question.

    Hi all,
    My scenario is File->XI->R3
    Can I validate file information in a Sender Adapter Custom Module and if the validation fails then cancel the input so Integration Engine never gets the corresponding message? My question is how to cancel the procesing of the message in the adapter module?
    Thanks in advance,
    Diego.

    Chandu,
    my problem is that I want to validate data of an input file, so if the file doesn't contain certain fields, then it doesn't go to the XI Engine. (It's discarded before that.)
    So i thought to build a module for the sender adapter that do this validation, but I don't know how to discard the message at modules chain.
    I hope you could understand my english.
    Regards,
    Diego.

  • Creating a new message in adapter module

    Hello,
    I already posted the question in this [Thread|Sending Adapter Module to split messages;, but I now create this new topic so you can get points for your answer
    Jan from this thread wrote "I know how to send a new message using a new instance of the Module Processor and using ModuleProcessor.process()" and I'm now searching for a code example how to create a new message from within an adapter module. I think it must be something like [this|http://help.sap.com/saphelp_srm40/helpdata/en/8d/6ad6409ff68631e10000000a1550b0/frameset.htm].
    Regards
    Markus

    Hi Sippy,
    First of all we need to configure the systems. So that we can transfer data from Outbound system to Inbound system.
    Configure an Outbound Process that uses Message Control
    Step 1: Create a new Message Type
    TCode: We 81
    Path: From the Area menu of EDI, choose Development, IDOC Type/ Message
    Step 2: link the IDOC type to the Message Type
    TCode: We 82
    Path: From the Area menu of EDI, choose Development, IDOC Type/ Message
    Step 3: Create a new Process Code
    TCode: We 41
    Path: From the Area menu of EDI, choose Control,Outbound Process COde
    Step 4: Create or Change a Partner Profile
    TCode: We 41
    Path: From the Area menu of EDI, choose IDOC,Partner Profile
    Configure an Outbound Process for Stand-Alone Programs.
    1. Create a new message type
    2. Link the IDOC type to the Message Type
    3. Add the message to the ALE Distribution Model(use BD 64)
    4. Create or change the Partner Profile
    I think this will be helpful for you.
    Reward points if useful.
    Cheers,
    Swamy Kunche

  • Adapter Module: How to see if Msg is Request or Response in Sync process?

    Hi all,
    I have created an adapter module. It works fine, in my case on NW07.
    This module is called twice in a synchronous processing as described in
    http://help.sap.com/saphelp_nw2004s/helpdata/en/a4/31d940f52f7e7fe10000000a1550b0/content.htm
    and additionally with more details here
    http://help.sap.com/saphelp_nw2004s/helpdata/en/a4/f13341771b4c0de10000000a1550b0/frameset.htm
    In a synchronous scenario one can see that modules are called in a special sequence twice. First for the request, second for the response.
    My question:
    A: How can I tell the Module Processor to call my Module only once?
    or
    B: How can I check within the module wether my message is a request or a response. this way offers the posibility to skip handling based on rules eg. req/resp.
    Kindest regards Joerg Hopmann

    Hi all,
    I have to add, that in normal cases an adapter module is called only once, I know, but I have my adapter module in the JMS-Adapter inserted.
    And while using the feature of the Reply-Queue one can use the JMS-Adapter for synchronous processing. And in this specal case my module is called twice. Independent of the position within the list of modules.
    Regards Joerg Hopmann

Maybe you are looking for