Module development setting parameters

Hi all,
in a scenario I get a flat file in. The problem is that not all fields are delivered by every flat file. In the second line of each flat file are the field names stored, that are within each following line.
So my idea was to create a module that reads the second line and set this information to the parameter of the content conversion (e.g. "data.fieldNames"), but it seams like I don't have access to these parameters. I tried to use "inputModuleData.setSupplementalData("module.parameters", hashTable)", where hastable contains all the parameters, but it is ignored.
Can someone help me? Do I have to go over an other object?
Thx
Olli

Hi Satish,
I thought also that the conversion is called before. But I tried to set the message to the payload and it was the flat file, no xml.
I tried also not to use conversion by the file adapter directly, but to use the Transform bean as a module in the sequence after my module. But the problem is always the same. The parameters, witch I typed in on the module tab for the transform bean are also not visible in my module called before.
An other Idea is to see my module as a wrapper and make a lookup to the local interface of the transformbean. But for this solution I have to know witch classes to import.
Can you give me a hint how to determine such libraries out of the name of a bean?
Thx.
Olli

Similar Messages

  • Guidelines for setting Application Module Pool Size Parameters?

    Are there guidelines for setting the application module pool size parameters, such as initial pool size, maximum pool size, etc., based on the expected number of users or other factors? I've read the developer guide sections (ch 28-29), but still don't have a good feel for how to correctly set the optimal values for the pool configuration parameters? Even more importanty, how do I monitor the pool's efficiency during runtime to determine if the pooling parameters are configured correctly?
    This will be critical to performance and scalability, so I'm looking for a way to get some visibility into how the pooling is working during production operation to assess whether there are bottlenecks/constraints/ineffeciencies?
    Note I am using Tomcat as the java runtime container; ADF BC / JSF jdev 10.1.3.1
    Thanks in advance and Merry Christmas!

    KUBA - were you able to resolve these issues and if so are there any lessons learned you can share?
    I'm hoping someone from the ADF team can answer our original question including guidelines for setting pool parameters and how to monitor the pool's performance while running in production.
    thanks

  • Help required in File Adapter Module Development

    Hi All,
    I am working out a File to File scenario where my source file is in some different format. Please find the below sample:
    <Root>
    <ID>100</ID>
    <NAME>SAP</NAME>
    <END-Root>
    Before taking this into IS, I need to change the file to a proper XML format. I need to replace "END-" with "/".
    <?xml version="1.0" encoding="UTF-8" >
    <Root>
    <ID>100</ID>
    <NAME>SAP</NAME>
    </Root>
    I think I can achive this by developing Adapter Modules. I am new to Adapter Module development.
    Can you please tell me if there are any inbuilt Adapter Modules for this. If not please suggest me some relevant blogs to solve this issue. Thanks in Advance.

    Hi Phani Kumar
    There are more than one ways to do this. As per your timelines and skill set you can decide
    1. You can use the XMLAnonymizerBean this is an inbuilt module
    Check Stefen's blog
    Remove namespace prefix or change XML encoding with the XMLAnonymizerBean
    2. You can read this complete file in a single field and then you can create XSLT or Java mapping to parse it in a target XML you desire.
    Check these
    https://www.sdn.sap.com/irj/sdn/weblogs?blog=/pub/wlg/3823 [original link is broken] [original link is broken] [original link is broken](XSLT mapping)
    Java Mapping (Part I) (Java Mapping)
    The specified item was not found. (Java Mapping helper DOM)
    The specified item was not found. (XML Node into string)
    3. You can develop Adapter modules for this
    Refer
    Check Guides
    XI 3.0
    https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/3bdc14e1-0901-0010-b5a9-a01e29d75a6a
    PI 7.0
    https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/f013e82c-e56e-2910-c3ae-c602a67b918e
    PI 7.1
    https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/00838345-708c-2a10-1199-9514c0b0a91c

  • Develop setting names in LR3 and LR4,5

    Hello
    I'm trying to work with develop setting.
    to get current setting I use
    photo:getDevelopSettings()
    and for set settings I use
    LrApplication.addDevelopPresetForPlugin
    photo:applyDevelopPreset
    The problem is. If in LR3 (bot Mac and Win) I modify a settings with keyname "Contrast" then it is correctly applied this setting to LR's develop seting "Contrast" and everuthing works as it should.
    But in LR 4 and LR 5 it just create an inner plug-in seting with name "Contrast" what has not any affect on LR's setting "Contrast"
    I looked throw many pages of this forum and dint meet any mention about same problem. But I met what sometimes in some samples the develop settings are named as i.e "Exposure2012" instead of "Exposure".  There is a some special rules how to use setting's keys to access to standard LR develop settings independly of LR version?

    The LR 5 SDK API Reference does mention the process version 2012 settings:
    However, as mentioned above, the documentation isn't well-maintained, so you're always better off double-checking it by dumping out the results of getDevelopSettings().  E.g. in LR, take a sample photo, set all the develop settings to non-default values, and then in a script invoke Debug.lognpp(photo:getDevelopSettings())  (using the Debug module from my debugging toolkit for Lightroom).
    probably the simplest way is just check some global environment variable with LR version number and use keynames accordingly this value.
    Agreed.  You can get the version via LrApplication.versionTable().

  • ModuleData.getPrincipalData returns null in the adapter module development

    Hi gurus,
    i am doing a test on the adapter module development following an article written by William Li:
    http://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/f0ac06cf-6ee2-2c10-df98-e17430ca5949?QuickLink=index&overridelayout=true
    my problem is after the EJB has been deployed, it seems that the return of inputModuleData.getPrincipalData() is always null which makes the program can not get the xml payload from the framework.
    the main process of the example has been simplified like this:
         public ModuleData process(ModuleContext moduleContext, ModuleData inputModuleData) throws ModuleException {
              Object           obj = null;
              try {
              obj = inputModuleData.getPrincipalData();
              Message     msg1 = (Message) obj;          
                    XMLPayload xmlpayload = msg1.getDocument();}          
              catch (Exception e) {
                   ModuleException me = new ModuleException(e);
                   throw me;
              return inputModuleData;
    after deployed, i get the following error in the adapter monitor of RWB: (my JNDI is testtest)
    17.02.2012 17:13:44.643 Information Send binary file  "test8.xml" from FTP server "10.18.48.150:/encrypt_test/", size 206 bytes with QoS EO
    17.02.2012 17:13:44.644 Information MP: processing local module localejbs/CallSapAdapter
    17.02.2012 17:13:44.644 Information Application attempting to send an XI message asynchronously using connection File_http://sap.com/xi/XI/System
    17.02.2012 17:13:44.645 Information Trying to put the message into the send queue
    17.02.2012 17:13:44.648 Information MP: processing local module localejbs/testtest
    17.02.2012 17:13:44.648 Error MP: exception caught with cause java.lang.NullPointerException: while trying to invoke the method com.sap.engine.interfaces.messaging.api.Message.getDocument() of an object loaded from local variable 'msg1'
    whereas if the code has been changed like this:
         public ModuleData process(ModuleContext moduleContext, ModuleData inputModuleData) throws ModuleException {
              Object           obj = null;
              try {
                   obj = inputModuleData.getPrincipalData();
                   Message     msg1 = (Message) obj;     
                   if (obj != null )
                        XMLPayload xmlpayload = msg1.getDocument();
              catch (Exception e) {
                   ModuleException me = new ModuleException(e);
                   throw me;
              return inputModuleData;
    the file can be read by the file adapter.
    i just quite confused that why the return of the getPrincipalData() is null? where is the problem? thanks
    Edited by: Stephen Xue on Feb 17, 2012 5:22 AM

    I'm gonna reply to myself here. I changed the processing sequence of the adapter modules in the  in the FileSender channel so that my module comes first then CallSapAdapter. Then getPrincipalData() contains the message.
    Hope this helps someone else.

  • 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

  • Module Development for XI3.0 Adapters

    Hello,
    we are currently trying to develop a xi 3.0 adapter module. Modules are a way to expand the functionalities of a xi adapter, in our cas the file adapter.
    Our module should be used to perform a more complex transformation from flat file to xml.
    We know, that we have to develop the modul as a stateless session bean, and that we have to implement some modul-interfaces.
    What we are missing are some examples, code fragments and some more detailed informations.
    Anybody out there, who can help us?
    Thanks in advance,
    Frank Winkler

    There's a How-To Guide that describes Module Development (How To Create Modules for the J2EE Adapter Engine )
    https://websmp105.sap-ag.de/~form/sapnet?_SHORTKEY=01200252310000071155&_SCENARIO=01100035870000000202
    and a sample Module comes with XI. Details are available throught the SAP Help http://help.sap.com/saphelp_nw04/helpdata/en/e9/61e1407e858031e10000000a1550b0/frameset.htm
    General info on the Module Processor is here
    https://websmp105.sap-ag.de/~form/sapnet?_SHORTKEY=01200252310000071155&_SCENARIO=01100035870000000202
    The easiest way to deploy the module is through Netweaver Developer Studio. Alternatively you can go through SDM.
    Hope that's a starting point.
    regards,
    Peter

  • Clarification in Module Development

    Hello Friends,
                       We are working on Module development.We have imported jar files i.e sda files.In ejb-j2ee-engine .xml we have included the following code..
    <reference
         reference-type="weak">
         <reference-target
         provider-name="sap.com"
         target-type="service">com.sap.aii.af.svc</reference-target>
         </reference>
    Now..We have imported a external DOM4j.jar file..for our programming requirement. My doubt is should i include any piece of code like the above one for my imported jar file?? as we are calling the module from Receiver Communication Channel, it is throwing an error regarding that DOM4j. jar file. Please help me out.
    Thanks & Regards,
    N.Jayanth Kumar

    check this links for reference:
    https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/docs/library/uuid/02706f11-0d01-0010-e5ae-ac25e74c4c81
    https://www.sdn.sap.com/irj/sdn/webinar?rid=/library/uuid/8257ed90-0201-0010-b6a8-e9cd808eb1a9
    https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/3bdc14e1-0901-0010-b5a9-a01e29d75a6a
    note:reward points if solution found helpfull.....
    regards
    chandrakanth.k

  • SOAP attachment - module development?

    Hi,
    I have an IDOC -> SOAP scenario where I have to call a webservice that uses SOAP attachment.
    Example:
    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ueb="IBrokerInterface">
       <soapenv:Header/>
       <soapenv:Body>
          <ueb:TEBIBrokerInterface_PublishWS>
             <aClientId>TEST</aClientId>
             <aMessage>cid:file.xml</aMessage>
             <aDuplicates>0</aDuplicates>
          </ueb:TEBIBrokerInterface_PublishWS>
       </soapenv:Body>
    </soapenv:Envelope>
    The "file.xml" has to be a SOAP attachment.
    If I use a SOAP receiver channel how do I get the IDOC payload moved into a SOAP attachment and still keep the SOAP envelope?
    Can this only be done with module development?
    Thanks Rasmus

    Hi Rasmus,
    You cannot create an attachment in mapping.
    In PI 7.1 there will be a Java Mapping API for working with attachments, but the code will be similar to an adapter module. It will not be possible with XSLT.
    Regards
    Stefan

  • Function module to set user status during QA11 transaction

    Hi ,
    Anyone knows the function module to set the user status during QA11/QA12  transaction?
    I received the user status 'e.g CFA1' from an idoc data and would like to set the user set based on this idoc value during QA11/QA12 transaction.
    Any function module for this action? BDC seems impossible..
    Thanks.
    Regards,
    Clarice.

    oh i realised this function module can be used
    STATUS_CHANGE_EXTERN
    with a commit statement..

  • Module developement

    hi people,
          i have a problem in module developent.
    i m creating a module sample, for converting <b>xls data into xml.</b>
    but i m getting error in cc monitoring
    Error: com.sap.engine.services.jndi.persistent.exceptions.NameNotFoundException: Path to object does not exist at ejb Module, the whole lookup name is localejbs/sap.com/com.abc/GetFileNameBean.
    my module name is  <b>localejbs/sap.com/com.abc/GetFileNameBean.</b>
    type is <b>local</b>
    module key is 0
    can any one suggest me ,how to solve the problem.
    thanx
    HONEY

    Hi
    This pdf will guide u
    https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/3bdc14e1-0901-0010-b5a9-a01e29d75a6a
    Regards
    Santhosh

  • Unable to set parameters for "Act as Prox" in OBI11g

    Hi Gurus,
    following Mark Rittman's blog I was able to set parameters and I could use this feature in OBI10g.
    However, in OBI 11g I was not able.
    1. In the init block of Proxyblock I am not able to add SET_RUNAS to Execution Precedence
    The Add button is inactive.
    2. In the init block of Proxylevel I am not able to add Proxyblock to Execution Precedence .
    Only the SET_RUNAS available.
    What to do?
    Any ideas and help are appreciated!
    Thanks
    Laszlo

    Hi Laszlo,
    Check this,
    Re: Unable to select Connection pool when creating init block for current_month
    Regards,
    Dpka

  • Setting Application Set Parameters For Variable

    Hi Guys,
    When I've read the BPC help about "Setting application set parameters" and the statement likes this : 
    Allows you to define a custom email message that is sent when a work status code is changed. The message is applicable to all applications in the application set. You can customize the message using the following variables:
    %USER% - name of user who changed the status
    %ED% - Entity dimension
    %EM% - Entity member
    %CD% - Category dimension
    %CM% - Category member
    %TD% - Time dimension
    %TM% - Time member
    %STA% - Work status
    %OWNER% - Entity owner
    %TIME% - time of change
    For example, you can enter "This is to inform you that %USER% has updated the work status for %EM%, %CM%, %TM% on %TIME%". The message can be up to 255 characters, and there is no need for quotes or brackets around parameters.
    The Questions:
    When I put the "%ED" into the textfield "APPROVALSTATUSMSG", after that I try to send email from BPF and the "%ED" still same into the email message. But it should describe the value of variable.
    Could you help me how to view the value of variable ?
    Thanks,

    If I look at the available parameters in the helpfile 2 things are strange in my opinion:
    1)the parameter is called approvalstatusmsg, approval status was the V4 naming convention of the function, right now it is called workstatus, so it might be a V4 function. Never used it myself but maybe it is something not correctly migrated to v5.
    2) Even if it is working in V5, which I don't know for sure, then it is strange that you only have variables for Categroy, time and entity, since you can setup the workstatus for more then these 3 dimensions in V5 which you would also like to have in a case you set it up for more then 3 dimensions. For example for if you want to use Category,time,Entity & Product dimension in the workstatus, you would also like to inform the people which product is updated, since only just category,time and entity won't say that much.
    So I think you best check with support if this function is still usable in V5 or if it is an old function from V4. and if it is working in V5, how do you get the right parameters in the variables when you setup workstatus for other dimensions then just Category/time/Entity.
    I would like to know the results!
    Joost

  • Set Parameters in sub reports - can't know which parameter is in sub report

    Hi,
    I am trying to set parameters in reports that some time build from sub reports, the only input that I got is the parameters name(key) and there values.
    What I need is a way to retrieve the parameters from report and set them by the parameter name(key) with it's value.(when I am handle the case of parameter in sub report)
    and hope it's work!!
    any idea how to do this?
    My code is below, and I am using CR/VS2008.
    Thanks,
    Amos
    public class reportGenerator
        public reportGenerator(string reportTemplate, string reportResults, ListDictionary parameters)
            //Instantiate variables
            ReportDocument reportDocument = new ReportDocument();
            reportDocument.Load(reportTemplate);
            // Database Access
            ConnectionInfo connectionInfo = new ConnectionInfo();
            connectionInfo.ServerName = "ServerName";
            connectionInfo.DatabaseName = "DBName";
            connectionInfo.UserID = "UserId";
            connectionInfo.Password = "UserPassword";
            connectionInfo.IntegratedSecurity = false;
            SetDBLogonForReport(connectionInfo, reportDocument);
            reportDocument.SetDatabaseLogon("UserId", "UserPassword", "ServerName", "DBName", false);
            double Num = 0;
            bool isNum = false;
            ParameterDiscreteValue paramValue;
            foreach (System.Collections.DictionaryEntry param in parameters)
                isNum = double.TryParse((string)param.Value, out Num);
                if (isNum)
                    paramValue = new ParameterDiscreteValue();
                    paramValue.Value = Convert.ToDecimal(param.Value);
                    reportDocument.SetParameterValue((string)param.Key, paramValue.Value);
                else
                    reportDocument.SetParameterValue((string)param.Key, param.Value);
            reportDocument.SaveAs(reportResults, true);
        private void SetDBLogonForReport(ConnectionInfo connectionInfo, ReportDocument reportDocument)
            Tables tables = reportDocument.Database.Tables;
            foreach (CrystalDecisions.CrystalReports.Engine.Table table in tables)
                TableLogOnInfo tableLogonInfo = table.LogOnInfo;
                tableLogonInfo.ConnectionInfo = connectionInfo;
                table.ApplyLogOnInfo(tableLogonInfo);

    You should review the SDK guide online because it answers all your questions.
    The [SetParameterValue |http://devlibrary.businessobjects.com/BusinessObjectsXIR2SP2/en/en/CrystalReports_dotNET_SDK/crsdk_net_doc/doc/crsdk_net_doc/html/crlrfCrystalDecisionsCrystalReportsEngineReportDocumentSetParameterValueTopic2.htm]method is overloaded 3 times. One of the overloads takes the name of the parameter, its value, and the name of the subreport it is in.
    public virtual void SetParameterValue(   string name,    object value,    string subreport);
    [Reading and Setting Discrete Parameters|http://devlibrary.businessobjects.com/BusinessObjectsXIR2SP2/en/en/CrystalReports_dotNET_SDK/crsdk_net_doc/doc/crsdk_net_doc/html/crtsktutorialsrdparametersdiscreteintro.htm]

  • Newbie (!) - created a report; have to set parameters to print? How to print it all, please?

    Hi,
    I confess I'm a newbie. I've created my first table and a report based on that table. When I try to print the report, I get a dialogue box asking for the parameters for certain fields. How do I indicate "print all"? Can I save this setting, to
    print all of this document, every time? Do I have to input the parameters for each field, each time I print the document?
    I see the value of setting parameters, but don't need to filter this report.
    Thanks so very much!  Endless gratitude!

    That would explain it.  Because the report no longer recognizes the references it contains to the div_cde column, it treats it as a parameter.  Hence the prompt.  You can change the report design so that every reference to div_cde becomes
    one to div.  This could be in a number of places such as the ControlSource property of a control in the form, or the name of a column (field) by which the report is grouped or ordered, so an easier solution might be to change the table design, renaming
    the div column back to div_cde.  The report should then work without amendment.
    Ken Sheridan, Stafford, England

Maybe you are looking for