At Craig's suggestion: Why Invoke PERL functionality from WD-ABAP?

Craig -
This is response to your suggestion that I post my own reasons for thinking that it would be useful to be able to invoke PERL functionality from WD-ABAP.
Please note at the outset that these reasons are based on my own personal belief that the relatively new vertical sectors of bioinformatics/biomed could produce reasonably significant income for SAP in a reasonably short time if SAP decided to create application-level functionalities in these areas. 
This belief is in turn based on a very significant new initiative which has been publicly announced by the university Medical Center recently voted "most-wired" (Vanderbilt) and equivalent initiatives at other university Medical Centers across the country.  (BTW, I've posted a meeting time (Tue 7pm) at Tech Ed for anyone who wants to learn more about these initiatives, the new vertical sectors they define, and how SAP could EASILY play in them.)
So, with this background established, assume that SAP does decide to play in the bioinformatic/biomed sector. 
SAP will rapidly find that a lot of biomed is based on the kind of bioinformatics that essentially does pattern-analysis on two kinds of strings: polynucleotide strings (DNA, mRNA, tRNA, etc.) and polypeptide strings (mainly the amino acid strings that form the "primary structures" of protiens.)  For example, biomed will soon include the ID of "at risk" markers for all patients in a university medical center, indicating what diseases patients may be genetically at risk for due to SNP's and other abnormalities in their inherited DNA.
Now when such analysis is not done by running "canned" versions of well-developed programs such as the ubiqitious BLAST program for "aligning" polynucleotide or polypeptide sequences, it is done by programs written in languages that offer superb capabilities for pattern-searching and manipulation of strings, e.g. PERL.
Additionally, I know from personal experience and the experience of my SigOther that even data obtained from well-known canned programs must be further massaged by non-canned techniques that again are readily implementable in PERL and other similar languages.
Finally, a lot of bioinformatic/biomed applications require iterative batch execution of canned stat routines such as t-tests or normality tests, which can be conveniently done via calls from languages such as PERL to canned products such as STATA.
So assume SAP wants to develop a biomed application that has:
back-end data containing the usual kinds of info med centers need to know about patients, plus the new kinds of scientific info about patients that med centers are creating
a presentation component that displays these two kinds of data for query, further elaboration/refinement, and subsquent update.
For example, there will be times when a doctor will want to take scientific data on a patient from the back-end (e.g. portions of a patient's DNA), subject it to pattern-analysis of the type described above, and then store the results of the analysis as additional new scientific info in the back-end databases.
And SAP can readily provide the doctor with this capability if it allows PERL functionality to be invoked from WD/WD-ABAP components.  In some cases, the PERL will simply invoke industry-standard canned programs such as BLAST and wrap the results in a way friendly to SAP.  In other cases, the PERL may do the analysis itself.  In other cases, the PERL may invoke stat programs.  Etc, etc. etc.
The point is that there is a vast inventory of bioinformatic/biomed PERL code out there, and if SAP wants to get serious about playing in the bioinformatics/biomed sector, it will be much easier to talk to this inventory of programs rather than recreate it in JAVA or SAP inside SAP. 
Anyway, please remember - this post was based on the  assumption that SAP may want to get serious about playing in the bioinformatic/biomed sector.
If not, then as Rosanne Rosanadanna used to say, "Never mind".

Hi David,
Where it can be used :-
Anywhere that you can insert ABAP code to run, you can integrate Perl in the manor that I laid out.  The only requirements are the ability to run registered RFC programs, and to execute ABAP code including RFC calls (which is anywhere inside of an R/3 system basically).
Comparison with other techniques :-
All communication from the ABAP stack with the J2EE stack is done via RFC - this is only faster than a registerd RFC Server if Fast RFC is used which means that the J2EE stack MUST reside on the same host as the R/3 instance.  Therefore there is no performance difference at that level and any performance differentiation is going to be in the programming language Perl vs Java, or payload encoding techniques (XML) at that level (not withstanding the consideration of development time).
There is also the HTTP Client communication facilities - with or without document encodings (the ICF + eg. SOAP).  Again - I'd take a long hard look at whether it is necessary to be encumbered with the data packet encoding/ecapsulation overhead.
What you gain :-
Once you are in the "land of Perl" you have access to essentially any module you can find on CPAN, so any data access you require whether it be some kind of application server technology, or DB, can be fullfilled by whats available there (unless you need to roll your own?).  And lets not forget algorythm implemented in Perl or Perl XS extensions - probably very important in the medical/scientifc field.
SOA (IMO) is a big ugly 4 letter word.  At the end of the day, you have to look where your time and money is best spent, and whether you can achieve the desired results using Scripting Language Connector technology, or whether you feel compelled to go down a WS-* style route.
However - I would like to say this - IMO it is totally unecessary to wrap up system integration in multiple (expensive both in money, and performance considerations) layers if you are confident that you have good control over both ends of the communication streams.  I believe that when your main objective is to utilise large chunks of code written in another language (rather than reimplement it in something closer to SAPs core interests), or communicate with inhouse data sources/systems (I've done this for MySQL before), then this is definitely one such case that opens the door for using my outlined approach (in the article).
Cheers,
Piers Harding.
Message was edited by: Piers Harding

Similar Messages

  • How to invoke math functions from dbx?

    Is there an easy way to invoke math functions from dbx? If I try, for example, to call sqrt I get meaningless results:
    (dbx) print sqrt(4.0)
    sqrt(4) = 1074790400
    (dbx)
    This is from code which uses sqrt, so sqrt should be accessible. Does this need some kind of cast?

    It turns out that this is a bit different than it looks: dbx is indeed able to invoke functions invoked in this way correctly; dbx just fails to print a sensible return value.
    I tried with the following small function:
    #include <stdio.h>
    int printme(double x) {
    printf("This is %g\n",x);
    return (int)2*x;
    Compiling this without -g, linking this with some hello world program and invoking the function from dbx gives
    (dbx) print ((int (*)(double))printme)(4.0)
    This is 4
    ((int (*)(double)) printme)(4) = &(noname)(double) at 0x8
    (dbx)
    The line "This is 4" clearly indicates that the function has been invoked correctly. Just the printed return value is meaningless. In this case, it is even possible to construct expressions with the return value:
    (dbx) print 5 + ((int (*)(double))printme)(4.0)
    This is 4
    5+((int (*)(double)) printme)(4) = 13
    i.e. dbx "knows" the correct return value 8. This does, however, apparently not work with return values of type double (i.e. in the original sqrt-Example).
    I have therefore submitted a bug report with bugs.sun.com; I will post the BugID when (and if) this has been accepted.

  • Dump when trying to invoke RFC function from Webchannel

    Dear all,
    I recently tried to invoke a RFC function from Webchannel. But I got dump like this:
    Actually, the error message showed that, null object is pulling out from com.sap.wec.tc.core.backend.ConnectionFactory.getDefaultConnection().
    I have no idea about this at all. Does anyone know it?
    Thank you.
    Best Regards,
    Sam.

    Hi Sam,
    the issue occurs in your khalibre package. I suppose that you try to access the backend but entries in the backendobject-config.xml, businessobject-config.xml are not correct. Or not taken into account correctly.
    Thus, please check these settings in the xml files and ensure that you module enhancement is taken into account. Finally, Hamendra already proposed the debugger...
    Best regards,
      Steffen

  • Invoke javascript function from outside the pdf

    Hello
    Is there a possibility to invoke a (inside) PDF-JavaScript function from outside the PDF?
    Do I need the PDF SDK? Where can I get it? Where can I find examples?
    Thank you
    Sincerely
    Lore

    [email protected] wrote:
    > Hello
    >
    > Is there a possibility to invoke a (inside) PDF-JavaScript function from outside the PDF?
    >
    > Do I need RE? Do I need PDF API?
    >
    > What I want to do is collect form data by a Server script.
    >
    > Thank you
    > Sincerely
    > Lore
    I don't know of a way to invoke a javascript function from outside the PDF. Adobe LiveCycle Forms
    (Form Server) gives you the ability to extract form data from a submitted form. You should
    investigate this option.
    Justin Klei
    Cardinal Solutions Group
    www.cardinalsolutions.com

  • How to - invoke OAF function from outside oracle with parameters?

    I have an oaf page, that does simple create/update/view functions for set of records based on custom db.
    currently user has to login to oracle apps, go to resp> invoke the page> search the part number > look up all the existing records(part#,set#,rev)> click on view link to view details of specific record.
    The requirement is : to invoke a set of record outside oracle.
    for example : user goes on network folder and opens a doc file from : /folder-2010/AAA-101-pqr.doc
    contents of doc file :
    revision = 1
    setNumber=2
    partNumber : ABCDEF* --this needs to be a link invoking the function call to the oaf page with these set of parameters :revision, part number and set number.
    ....and a few more....
    What I did was : I gave the OAFunc=xxxxx guest grants (http://mukx.blogspot.com/2008/07/creation-of-anonymous-page-introduction.html)
    so it invokes the main page from any file outside oracle, without login required. but i still have to search the existing records for a part number and click on view link.
    How can I pass the part#,set#,rev to the link so that it opens up the view page directly ?
    any help would be appreciated.
    thanks a ton.

    ok so say my function is :
    MASETUPVIEW with html call : OA.jsp?page=/oracle/apps/mac/matooling/webui/WorkSheetViewPG
    So from word file : Should I give the link to invoke as :
    http://zzzzzz.company.com:8009/OA_HTML/OA.JSP?OAFunc=MASETUPVIEW&viewInvItemId=123456&viewMachine=101&viewRevision=C&viewSetNumber=5&viewCategory=MILLS&paramActionType=ViewWS

  • Invoking Perl module from Apex

    I am developing an application using Apex that needs to be integrated with some other modules written in different languages.
    In my application I need to invoke a perl module/API based on some button action.
    Please suggest me the ways how I can do this.
    The perl module is already existing one and now we can not change it to Java program.

    Hello,
    Whilst it's possibly to 'call out' to an external Perl module, I think you're actually probably making things more complicated by going that route.
    As an alternative, why not have the Perl code actually connect to the Oracle database and check for the data changing itself?
    If you do want to perform the external call yourself, then the following AskTom thread should give you some ideas on how to do it -
    http://asktom.oracle.com/pls/ask/f?p=4950:8:9608971842817866565::NO::F4950_P8_DISPLAYID,F4950_P8_CRITERIA:952229840241
    There's actually some other options, you could actually connect to the other databases directly from the Oracle DB (using dblinks, hetrogenous connectivity etc), or you could convert the Perl module (or wrap it) so that it's callable via a URL in which case you could then perform an HTTP call from out of the database using utl_http.
    It really depends on the specifics of what your perl module does, what sort of processing etc.

  • Invoking perl cartridge from another perl cartridge

    Hi,
    I have a perl cgi tht I am porting to the cartridge framework and am having the following issue:
    the perl script "opens" another perl script (and "system"s another). THis does not seem to work in my setup presumable because the standalone version of perl is not installed. Now, I want to get the performance benefits of a cartridge while invoking these other perl scripts. Also, I know that I can make these other scripts as modules and it will work, but how do I invoke these scripts via a cartridge (they are in a different folder).
    An example (with any requisite syntax) will be greatly appreciated.
    regards

    Hello,
    Whilst it's possibly to 'call out' to an external Perl module, I think you're actually probably making things more complicated by going that route.
    As an alternative, why not have the Perl code actually connect to the Oracle database and check for the data changing itself?
    If you do want to perform the external call yourself, then the following AskTom thread should give you some ideas on how to do it -
    http://asktom.oracle.com/pls/ask/f?p=4950:8:9608971842817866565::NO::F4950_P8_DISPLAYID,F4950_P8_CRITERIA:952229840241
    There's actually some other options, you could actually connect to the other databases directly from the Oracle DB (using dblinks, hetrogenous connectivity etc), or you could convert the Perl module (or wrap it) so that it's callable via a URL in which case you could then perform an HTTP call from out of the database using utl_http.
    It really depends on the specifics of what your perl module does, what sort of processing etc.

  • Issue of invoke wf_engine function from web service client.

    hi,
    I want to update work flow item attribute from web service client through soa gateway. but got the below exception:
    Error Description Error occured while service was processing.
    Error Details oracle.apps.fnd.soa.util.SOAException: ServiceProcessingError: Exception returned from JCA Service Runtime. file:/pim/oracle/DEV/inst/apps/DEV_pimenv/soa/PLSQL/1318/SETITEMATTRTEXT.wsdl [ SETITEMATTRTEXT_ptt::SETITEMATTRTEXT(InputParameters) ] - WSIF JCA Execute of operation 'SETITEMATTRTEXT' failed due to: Error while processing an API interaction execution. An error occurred while processing the interaction for invoking the WF_ENGINE.SETITEMATTRTEXT API. Cause: oracle.tip.adapter.apps.AppsContextValidationException: Cannot set Context ; nested exception is: ORABPEL-11812 Error while processing an API interaction execution. An error occurred while processing the interaction for invoking the WF_ENGINE.SETITEMATTRTEXT API. Cause: oracle.tip.adapter.apps.AppsContextValidationException: Cannot set Context Check to ensure that the XML containing parameter data matches the parameter definitions in the XSD. Contact oracle support if error is not fixable. at oracle.apps.fnd.soa.provider.services.jca.JCAHandler.invoke(JCAHandler.java:173) at oracle.apps.fnd.soa.provider.services.jca.JCAHandler.handleRequest(JCAHandler.java:120)
    it indicate " cannot set context". but there is no method of wf_engine api to set it.
    Thanks,
    Rock

    Hi, Buddy,
    Did you fix your issue?
    Now, I have the same issue, EBS version is 12.1.3. Using Soapui invoking PL/SQL, then go back to SOA monitor to check the error message.
    Could you please give me some advises?
    Thanks,
    Jackie

  • Invoke perl script from JAVA 1.4.2

    Hello All,

    Has this been resolved?
    I'm having an issue with it also, using the command line as such:
    j2sdk-1_4_2_02-windows-i586-p.exe /s /v "/qn ADDLOCAL=jrecore IEXPLORER=0 INSTALLDIR=D:\Progra~1\j2sdk-1_4_2_02 REBOOT=Suppress JAVAUPDATE=0 /L D:\temp\jvm142install.log"
    I've also tried different variations of the commands in "", but still no luck.
    From the command prompt it appears to hang, but comes back to the command prompt about 10 seconds later and nothing gets installed.
    Previous to installing it from the command line, I had installed it manually, and ran add/remove programs to remove it from the system.
    Is there something I should check in the registry that might be prevening the above command to run?
    InstallSheild's web site was helpful, but gave command line options for the msiexec to run.
    Any help would be appreciated!

  • Invoke SAP GUI from Webdynpro ABAP

    Hi All,
    I am calling the webdynpro screen (using FM 'WDY_EXECUTE_IN_PLACE') from SAP GUI screen. In the webdynpro screen I have created one button upon clicking the button it should go back to the SAP screen from where I called the webdynpro screen.
    Could some tell me how to do this.
    Thanks in Advance.

    Hi Saba,
    Please check this: [this FM seem to be not supported by SAP and only release internally within SAP|Re: how to exchange data between wda program and abap program?;
    Thanks,
    Duy

  • Problem with Perl Function

    Hello,
    My MacBook Pro is running on Mac OS X v 10.6.5 (Snow Leopard), and I was trying to run a perl script on the terminal. The script contains perl functions, such as chomp, split, next; however, the perl in my MacBook could not read (recognize) those functions. I checked the perl versions and found both 5.10.0 and 5.8.9 installed at /usr/bin/perl. Still, the perl functions are not working. Also, when I ran the command "perldoc perl", it returned "No documentation found for perl".
    So, the questions are:
    1. Is perl properly installed in my MacBook?
    2. If not, how can I install it properly since the perl comes with OS as default?
    3. Why the perl functions are not working?
    Any help will be much appreciated.
    dehalococcoides

    ... The script contains perl functions, such as chomp, split, next; however, the perl in my MacBook could not read (recognize) those functions. I checked the perl versions and found both 5.10.0 and 5.8.9 installed at /usr/bin/perl.
    How can you have 2 versions in the same file? /usr/bin/perl ???
    Still, the perl functions are not working. Also, when I ran the command "perldoc perl", it returned "No documentation found for perl".
    So, the questions are:
    1. Is perl properly installed in my MacBook?
    It should be. It is installed on all my Mac systems, and I've been known to write perl scripts using chomp, split, and next.
    2. If not, how can I install it properly since the perl comes with OS as default?
    As has been mentioned, perhaps you need to either to do a clean install (backing up first; maybe backing up twice).
    3. Why the perl functions are not working?
    Your system does not seem right. Have you been trying to install your own perl packages? Manually? Via MacPorts.org? Via Fink.sf.net? Have you been trying to set your own Perl environment variables, and got them wrong?
    The perl statements you want to use are core perl statements, and if you can invoke perl at all, they should work.

  • Function Invoking Another Function

    Trying to invoke 1 function from another function, using same parameters for each.
    Trying to invoke 1 function from another function. MasterFunction has parameterX which is a dictionary Name. When attempting to call ChildFunction from within MasterFunction, and passing it the same parameter that MasterFunction has, got javascript error 'Invalid Object'.
    Here is basic scenario:
    MasterFunction(dictionaryName)
    ChildFunction(dictionaryName);
    Both of these functions are in the JavaScript function list.
    Any help on this would be appreciated.

    You need to pass the dictionary object, not the dictionary name.  So you would pass in a parameter of "serviceForm.DictName", which is the dictionary object.  Then, if your parameter name was "objDict", you would call methods against it, for example: "objDict.setVisible(false);" and "objDict.FieldName.getValue();"
    If, for some reason, you do need or want to pass a string of the dictionary name, you need to use the "eval" method to get the dictionary object back: eval("serviceForm." + dictString + ".FieldName.getValue()");

  • Invoke function from oracle application express

    Hello,
    I am using oracle application express 10g.
    I wrote a simple function.
    I want to call the function from oracle application express.
    *Is it possible to invoke the function from oracle application express?*
    I search the web and find no example for it.
    Can you please write any good links for an example? What have I missed?_
    I am really stuck with it. Any help will be appreciated!
    Thanks a lot,
    Niron.

    Hi,
    You can call function in e.g. computations, validations and process like you call it in SQL sheet.
    Process example to get value to variable from function sending item value as parameter
    DECLARE
      l_my_var varchar2(32700);
    BEGIN
      l_my_var := my_function(:Px_MY_ITEM);
      /* other code */
    END;Regards,
    Jari

  • Call a function from another software

    hello,
    Iam working on a program where i have to invoke a function from another software, is there any way i can do that? someone told me that i can use RMI to invoke the function but it seems to me like RMI is mainly for networked and distributed systems. any suggestions? i have an idea in my mind, if the software is programmed using c/c++ i can use the native coding to access the functions, well this is only a blind shot, not sure about it.
    asrar

    Hey asrar,
    It is possible to call external programs from within the JVM. You need to do the following:
    Process p = java.lang.Runtime.getInstance().exec("some.exe");
    You can then do the following:
    p.waitFor();
    This will block until the process returns.
    The Process class gives you access to 3 streams.
    p.getInputStream(); returns a stream that the process sends to stdout.
    p.getErrorStream(); returns a stream that the process sends to stderr.
    p.getOutputStream(); returns a stream that allows you to send data to the process.
    That is basically all you get.
    regards,
    Dr_N35S

  • Can Any one tell me what is the step in calling a function from a *.lib file in Labview application

    Hi, I am working on Labview 8.0.
    I am trying to  communicate to a thrid party HW using the driver file he has provided to me.
    The drive file is a *.lib file.
    I am unable to call the function from the lib file.
    I could get only from a DLL.
    Pls help .
    Regards
    -Patil

    patil wrote:
    When it is possible in Lab Windows, why calling a function from a static library is prohibited?
    I was trying to use Function node, but found that it is only for functions from a DLL file.
    Will CIN be useful.? 
    LabWindows is not the same as LabVIEW. LabVIEW cannot call .lib files. LIB files are intermediary products and you need to use a wrapper DLL that's compatible with the object format of the .lib file. It's as simple as that. LabWindows creates C application and from that perspective is no different than a regular C
    compiler. That's why you can call .lib files because that's how .lib
    files are used.
    A CIN, as pointed out, is something completely different and will not help you.  

Maybe you are looking for

  • How to create a 4 page pdf from images - each page should open at same size

    How do I create a 4 page pdf (from 4 images - all the same size) that opens each page at  full page size? Thank you so much. Ginger PREVIOUS MSG: My goal is to create multi page pdfs that are created from images (scans of old brochures).  I receive i

  • Samsung CLP300 prints via old G4 Power(10.4) but not with MacBook (10.5.5)

    I bought an Airport Express so I wouldn't have to keep my old power-hogging G4 running as a print server. If I try and print wirelessly to my Samsung CLP300 printer with the G4, it works fine. But when I try and print via my MacBook (10.5.5), the pri

  • [update July 5, 2007] k3b 1.0.2-1

    After Install K3B 1.0.2-1 K3B is frozen. several restarts and it takes long long time to start up.

  • Digital booklets in iTunes

    I recently bought an album on iTunes that included a digital booklet. Usually, digital booklets show up in your iTunes music library as a PDF. However, when I copied the album and Digital Booklet to another of my computers by the "add to library" men

  • Setup Family Share with Two Apple IDs

    Apple has long prevented customers from merging two Apple IDs associated with the same person. With Family Share I thought I might be able to finally share all of my purchases between my two Apple IDs. But I'm not sure how to go about it. One Apple I