Declaration for va-args type external functions

Does Oracle 9i support external functions of similar type to decode() and if so what is the syntax for defining the package wrapper.
If not is there a means of evaluating a regexpr passed as an array element (other than by writing an interface to the regexp C library?

Michael Reiche wrote:
Java invocation from XQuery in ALDSP is supported.Therefore, as ALSB uses the same XQuery implementation as ALDSP, I should be
able to use it in ALSB. Especially, that link to ALDSP XQuery documentation I
have found in ALSB documentation. Does anyone know how to do this?
Best regards,
Dawid Duda

Similar Messages

  • Document type declaration for root element type "web-app" must end with ' '

    I am attempting to deploy an application (.war file) using the Sun Access Manager Agent installed, (Reference http://docs.sun.com/app/docs/doc/819-3201/6n5eht3k4?a=view -near the bottom) and I get this error:
    Error loading deployment descriptors for ajacs Line 3 Column 19 -- The document type declaration for root element type "web-app" must end with '>'.
    Here is the relavent code:
    <!DOCTYPE web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
    <web-app>
    <filter>
    <filter-name>Agent</filter-name>
    <filter-class> com.sun.identity.agents.filter.AmAgentFilter </filter-class>
    </filter>
    <filter-mapping>
    <filter-name>Agent</filter-name>
    <url-pattern>/*</url-pattern>
    <dispatcher>REQUEST</dispatcher>
    <dispatcher>INCLUDE</dispatcher>
    <dispatcher>FORWARD</dispatcher>
    <dispatcher>ERROR</dispatcher>
    </filter-mapping>
    <display-name>AJACS</display-name>
    <welcome-file-list>
    <welcome-file>frameSet.jsp</welcome-file>
    </welcome-file-list>
    etc...
    Now, when I remove the parts that http://docs.sun.com/app/docs/doc/819-3201/6n5eht3k4?a=view said to add, it deploys just like it used to deploy- just fine with no errors. However, I add that code and it breaks.
    Note: The code was a straight copy/paste, so if there is any error in the code, it is because it's written incorrectly on the Sun doc website.
    Any help would be MUCH appreciated. Thanks!

    Well, if that was pasted on one line, it would be:
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
    So it's supposed to be that way. I just tried it with the extra quotes, and no dice...

  • Identification number for the object type H

    Hello:
    There is an infotype thats allow me to enter an identification number for the object type external person (H) in the training and event management module (PE)?.  I was checking in the configuration and I dont find the solution for this issue.
    I ask to myself if is necessary to create one infotype for this purpose?
    I will appreciate your colaboration and the answer.
    Thanks

    Hi Vijay:
    It is something similar to the infotipo 185 of object person type of the module PA.  I need an identification document for external person (example: driver license)
    Regards
    CarlosZ

  • Argument data type varchar is invalid for argument 1 of formatmessage function

    So, I have a need to parameterize my templates so I can dynamically compile and execute them as needed. I have read on some blogs that it is possible to use FORMATMESSAGE  for user string formatting but I can't seem to get that working on my end and
    would appreciate help getting this running. 
    I continually run into the following error message
    Msg 8116, Level 16, State 1, Line 9
    Argument data type varchar is invalid for argument 1 of formatmessage function.
    when I try to execute either of  the queries below
    1) 
     SELECT FORMATMESSAGE ( CAST('%s' AS VARCHAR(10)), 'name' );
    2) 
    -- printf formatting  %[[flag][width][.precision]]typeDECLARE @Format CHAR(1)         = ''   -- '',+,-,0,#,' '      , @Width INT              = 6    -- display field size      , @Precision INT          = 3    -- characters to display      , @Type CHAR(1)           = 'X'  -- s, d, i, u, o, x, X      , @Binary VARBINARY(128)  = 0x1239       , @Int INT                = 11                      , @String NVARCHAR(128)   = N'test';  DECLARE @$QL NVARCHAR(256) = ( SELECT FORMATMESSAGE( N'SELECT FORMATMESSAGE(''%%s -->%%%s*.*%s<--'', @$QL, %i, %i, %s)'                      , s.Flag                       , f.Type                      , @Width                      , @Precision                       , CASE WHEN @Type = 's'                              THEN FORMATMESSAGE('''%s''', @String)                             WHEN @Type = 'd'                             THEN FORMATMESSAGE('%d', @Int)                             WHEN @Type = 'i'                             THEN FORMATMESSAGE('%i', @Int)                             WHEN @Type = 'u'                             THEN FORMATMESSAGE('%u', @Int)                             WHEN @Type = 'o'                             THEN FORMATMESSAGE('%o', @Int)                             WHEN @Type = 'x'                             THEN FORMATMESSAGE('%x', @Binary)                             WHEN @Type = 'X'                             THEN FORMATMESSAGE('%X', @Binary)                             END )   FROM (SELECT           ('') AS Flag         UNION ALL SELECT ('+')          UNION ALL SELECT ('-')          UNION ALL SELECT ('0')          UNION ALL SELECT ('#')          UNION ALL SELECT (' ') ) AS s         CROSS JOIN (SELECT           ('s') AS Type               UNION ALL SELECT ('d')               UNION ALL SELECT ('i')               UNION ALL SELECT ('u')               UNION ALL SELECT ('o')               UNION ALL SELECT (LOWER('x'))               UNION ALL SELECT (UPPER('X')) ) as f   WHERE CHARINDEX(@Format,s.Flag) > 0   AND ASCII(f.Type) = ASCII(@Type) );EXEC sp_executesql @$QL, N'@$QL NVARCHAR(256)', @$QL;
    [email protected]

    Hi Databyter,
    Based on my testing, the first query runs fine in a SQL Server 2012 while I got the same error in your post when trying to run it in a SQL Server 2008R2.
    After going through the BOL of the FORMATMESSAGE for both versions, something came into my sight.  The note below was removed in the 2012 BOL.
    FORMATMESSAGE works only with messages created using
    sp_addmessage.
    BOL:FORMATMESSAGE(2008)
    BOL:FORMATMESSAGE(2012)
    The messages created using sp_addmessage can be viewed by using the sys.messages. Thus in SQL Server 2008, you have to follow the example to use the function or you get the error in your post.
    SELECT * FROM sys.messages WHERE message_id = 20009 AND language_id = 1033;
    DECLARE @var1 VARCHAR(200);
    SELECT @var1 = FORMATMESSAGE(20009, 'First Variable', 'Second Variable');
    SELECT @var1;
    For some reason the limitation is removed in SQL Server 2012, that's why your first query runs fine.
    If you have any feedback on our support, you can click
    here.
    Eric Zhang
    TechNet Community Support

  • What is the need of creating partner functions for sales document type.

    Hi SAP (SD-GURUS),
    Actually we create partner functions  before creating customer ex: sold to party, ship to party, bill to party, and payer.
    These partner functions are going to be copied into sales order while processing sales order.
    Again what is the need of creating partner functions for sales document type.
    Thanks&Regards
    sreenivas peruru

    There are some Partners you could enter at Sales ORder Level. E.g. Sales Person, Employee Responsible, Forwarding Agent, Broker, etc.
    Thus these partner Determination need to be carried out at Sales Order Level & not at Customer Master level.
    So we have to configure partner Determination for various levels e.g. Customer Master, Sales Order, Delivery level etc...
    Hope this helps...
    THanks,
    Jignesh Mehta

  • Function Module for getting the Sales Price for a condition type

    Hi,
    I am looking for a standard function module to which I can pass my condition type(new customizing) and it will return the sales price. The customer is going to create some new condition type to manitain the sales price. I'll have the necessary information like material/sales org/distribution channel, customer and need the standard function module to read the condition records for that condition type(as configured) and give me the price. PLease help if you know of a standard function module performing this.
    Thanks in advance.
    Regards
    Malthi

    Hi malthi ,
    welcome to sdn
    for material sales area u can look for the validations is table MVKE.
    the classification of the conditions is in tables like A901, a902 etc which in my opinion holds the condition types per classification .
    put a A* in se11 and this will give the list of tables per classification .
    u need to get the conditions as per kschl and dmbtr and
    etc..
    like this ..
    Get Condition Values for Material/Plant combination
      IF NOT i_a916[] IS INITIAL.
        SELECT knumh kappl kschl krech
               kbetr konwa kpein kmein
               INTO TABLE i_konp
               FROM konp
               FOR ALL ENTRIES IN i_a916
               WHERE knumh EQ i_a916-knumh AND
                     kappl EQ i_a916-kappl AND
                     kschl EQ i_a916-kschl AND
                     loevm_ko NE 'X'.
      ENDIF.
    Get Condition Values for Material/Plant/Ordertype/
    Customer combination
      IF NOT i_a925[] IS INITIAL.
        SELECT knumh kappl kschl  krech
               kbetr konwa kpein kmein
               APPENDING TABLE i_konp
               FROM konp
               FOR ALL ENTRIES IN i_a925
               WHERE knumh EQ i_a925-knumh AND
                     kappl EQ i_a925-kappl AND
                     kschl EQ i_a925-kschl AND
                     loevm_ko NE 'X'.
      ENDIF.
    just check this Fm if u can apply ur condition over here ..
    ME_GET_PRICE_CONDITION
    regards,
    VIjay.

  • Function module to change the value for pricing condition type

    Hello experts,
    I want to change the value for pricing condition type for an item in the transaction CRMD_ORDER.
    I used many function modules but none are working.
    Please kindly suggest a function module that will change the value for a condition type .
    I have used the following function module but its not working, please correct the coding if anything needs to be changed or added. Please help me .
    Thank you.
    CLEAR PRCD_COND.
         SELECT SINGLE * FROM PRCD_COND WHERE KPOSN = WA_ORDERADM_I-GUID AND
                                              KSCHL = COND_TY.
      IF SY-SUBRC = 0.
    *    MOVE-CORRESPONDING PRCD_COND TO L_COND_CHG.
    *    CLEAR L_COND_CHG-KBETR.
        L_COND_CHG-STUNR = PRCD_COND-STUNR.
        L_COND_CHG-KBETR = COND_PRC.
    *    L_COND_CHG-KSCHL = COND_TY.
        INSERT L_COND_CHG INTO TABLE T_COND_CHG.
    L_HEAD_GUID = CRMD_ORDERADM_H-GUID.
    L_ITEM_GUID = WA_ORDERADM_I-GUID.
    INSERT L_HEAD_GUID INTO TABLE HEAD_GUID.
    INSERT L_ITEM_GUID INTO TABLE ITEM_GUID.
        CALL FUNCTION 'CRM_ORDER_READ'
         EXPORTING
           IT_HEADER_GUID                    = HEAD_GUID
           IT_ITEM_GUID                      = ITEM_GUID
         IMPORTING
           ET_ORDERADM_H                     = LT_ORDERADM_H
           ET_ORDERADM_I                     = LT_ORDERADM_I
           ET_PRIDOC                         = IT_PRIDOC_RD
           ET_DOC_FLOW                       = T_DOC_FLOW
    *     CHANGING
    *       CV_LOG_HANDLE                     =
    *     EXCEPTIONS
    *       DOCUMENT_NOT_FOUND                = 1
    *       ERROR_OCCURRED                    = 2
    *       DOCUMENT_LOCKED                   = 3
    *       NO_CHANGE_AUTHORITY               = 4
    *       NO_DISPLAY_AUTHORITY              = 5
    *       NO_CHANGE_ALLOWED                 = 6
    *       OTHERS                            = 7
        IF SY-SUBRC <> 0.
    * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
        ENDIF.
    MOVE-CORRESPONDING LS_PRIDOC_RD TO L_PRI_COND.
    INSERT L_PRI_COND INTO TABLE PRI_COND.
    LOOP AT IT_PRIDOC_RD INTO LS_PRIDOC_RD.
    MOVE-CORRESPONDING LS_PRIDOC_RD TO L_PRIDOC_CHG.
    L_PRIDOC_CHG-PRIC_COND = PRI_COND.
    L_PRIDOC_CHG-REF_GUID = LS_PRIDOC_RD-GUID.
    L_PRIDOC_CHG-COND_CHANGE = T_COND_CHG.
    INSERT L_PRIDOC_CHG INTO TABLE PRIDOC_CHG.
    ENDLOOP.
    LOOP AT LT_ORDERADM_H INTO LS_ORDERADM_H .
    MOVE-CORRESPONDING LS_ORDERADM_H TO L_HEADER.
    INSERT L_HEADER INTO TABLE HEADER.
    ENDLOOP.
    LOOP AT LT_ORDERADM_I INTO LS_ORDERADM_I.
    MOVE-CORRESPONDING LS_ORDERADM_I TO L_ITEM.
    INSERT L_ITEM INTO TABLE ITEM.
    ENDLOOP.
    L_FIELD-FIELDNAME = 'STUNR'.
    INSERT L_FIELD INTO TABLE FIELD.
    L_FIELD-FIELDNAME = 'KBETR'.
    L_FIELD-CHANGEABLE = 'X'.
    INSERT L_FIELD INTO TABLE FIELD.
    L_INPUT-FIELD_NAMES = FIELD.
    L_INPUT-REF_KIND = 'E'.
    L_INPUT-REF_GUID = LS_PRIDOC_RD-GUID.
    L_INPUT-OBJECTNAME = 'PRIDOC'.
    INSERT L_INPUT INTO TABLE INPUT.
        CALL FUNCTION 'CRM_ORDER_MAINTAIN'
         EXPORTING
           IT_PRIDOC                     = PRIDOC_CHG
         IMPORTING
           ET_EXCEPTION                  = EXCEPT
         CHANGING
           CT_INPUT_FIELDS               = INPUT.
        IF SY-SUBRC <> 0.
    * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
        ENDIF.
    REFRESH EXCEPT.
    CALL FUNCTION 'CRM_ORDER_SAVE'
      EXPORTING
        IT_OBJECTS_TO_SAVE         = HEAD_GUID
    *   IV_UPDATE_TASK_LOCAL       = FALSE
    *   IV_SAVE_FRAME_LOG          = FALSE
    *   IV_NO_BDOC_SEND            = FALSE
    *   IT_ACTIVE_SWITCH           =
    IMPORTING
       ET_SAVED_OBJECTS           = SAVED
       ET_EXCEPTION               = EXCEPT
       ET_OBJECTS_NOT_SAVED       = UNSAVED
    * CHANGING
    *   CV_LOG_HANDLE              =
    * EXCEPTIONS
    *   DOCUMENT_NOT_SAVED         = 1
    *   OTHERS                     = 2
    IF SY-SUBRC <> 0.
    * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    COMMIT WORK AND WAIT.

    Hi,,
    To be able to call a function module in an update work process, you must flag it in the Function Builder. When you create the function module, set the Process Type attribute to Update with immediate start
    Alternatively u can use this function module.
    CRM_STATUS_DATA_SAVE_DB
    BAPI_CUSTOMERCRM_CHANGE (If u wish to use a bapi for this).
    Also , Let me know what error you got when implementing other function module.Does the function module didnt return any error but still the value is not changed for pricing condition type?

  • Function module for assigned wage types

    Hi experts,
    We need wage type wise count and sum of the amount for each wage type defined in infotype '0008' for the given from and to dates. Is there any function module available for the same.
    Please suggest.
    Regards,
    Kaustubh Kabre.

    Hi,
    <li>I do not look for function module for this case as i know that we can or have to read wage types and corresponding amount in the program. LDB PNP should be given in program attributes.
    REPORT RPABAP06.
    TABLES:PERNR.
    INFOTYPES:0008.
    DATA: BEGIN OF WAGETYPES,
       LGA LIKE P0008-LGA01,
       BET LIKE P0008-BET01,
       ANZ LIKE P0008-ANZ01,
       EIN LIKE P0008-EIN01,
       OPK LIKE P0008-OPK01,
      END OF WAGETYPES.
    DATA:total type P0008-BET01.
    GET PERNR.
    RP_PROVIDE_FROM_LAST P0008 SPACE PN-BEGDA PN-ENDDA.
    DO 20 TIMES VARYING WAGETYPES-LGA FROM P0008-LGA01 NEXT P0008-LGA02
                VARYING WAGETYPES-BET FROM P0008-BET01 NEXT P0008-BET02.
    IF WAGETYPES-LGA IS INITIAL.
    EXIT.
    ELSE.
    TOTAL = TOTAL + WAGETYPES-BET.
    WRITE: / WAGETYPES-LGA, WAGETYPES-BET.
    ENDIF.
    ENDDO.
    WRITE TOTAL.
    Thanks
    Venkat.O

  • I need serious help please.. We do translations of schoolbooks, I looked for an over-type function but were unable to find, we are working in indesign CS 5. it takes up allot of time to delete text and type in the new language.

    I need serious help please.. We do translations of schoolbooks, I looked for an over-type function but were unable to find, we are working in indesign CS 5. it takes up allot of time to delete text and type in the new language.

    Argh that's frustrating! I never noticed that key did not work in InDesign.
    A bit of research and it turns out the MS Office has this as an option in their software. But I cannot find an option in InDesign preferences to make this work.
    However, somethings are not listed in the shortcuts and preferences and are hidden triggers in InDesign which can be accessed through a script.
    I'm not saying it's possible to activate the Insert Key through a script, but it's plausible that it can be activated.
    Maybe ask on the scripting forum? InDesign Scripting
    I know this may be a possibility as with InDesign's earlier versions of PDF export to interactive documents there previously was no way to export interactive pdfs as single pages if in Spreads.
    But the option to toggle this setting was scriptable.

  • Does SAP have  function to allow the prices for the activities type to copy

    Hi Expert,
    Would like to seek for your help refer to above subject.
    Does SAP have  function to allow the prices for the activities type to copy from previuos fiscal year to current fiscal year so that we do not need to manually set up the acitvities types prices via KP26.
    What are the T-code and what are the configuration need to be set in order to use the function.
    Please help.
    Regards,
    KH

    Hi,
    Thank you for the prompt reply.
    However, would like to seek for your advise does SAP provide standard report to view the cost of activities incur?What are the T-code?
    Thank you.
    Regards,
    Karen

  • User Defined External Function - How to work?

    I have defined some external functions in java by following the description in
    C:\OraBPELPM_3\integration\orabpel\samples\demos\XSLMapper\ExtensionFunctions
    I can use my functions in JDeveloper, but they do not work on the Oracle BPEL engine.
    Is it enough just to place the jar-file in <OC4J_HOME>\j2ee\home\applib and add the jar-file in class-path (as described)?
    What about the xml-file specifying the functions (called SampleExtentionFunctions.xml in the documentation)?
    Should this file be copied to <OC4J_HOME>\... ?
    Here is the error message I get by running my service:
    XPath expression failed to execute.
    Error while processing xpath expression, the expression is "ora:processXSLT("TransformationInput.xsl", bpws:getVariableData("inputVariable", "request"))", the reason is java.lang.NoSuchMethodException: For extension function, could not find method org.apache.xpath.objects.XNodeSet.leadingZeros([ExpressionContext,] #NUMBER)..
    Please verify the xpath query.
    ______________ MY JAVA CODE EXAMPLE: _____________________________
    package extentionfunctions;
    This is a sample XSL Mapper User Defined Extension Functions implementation class.
    public class JavaExtensionFunctionsBpel
    * Inserts leading zeros to a text, if this starts with a digit.
    * Else the return value will be the same as the given text.
    * The return value will have the specified length.
    public static String leadingZeros(String text, int len)
    {  String retur = text;
    char c = (text == ""?'0':text.charAt(0));
    if ('0'<=c && c<='0'+9) { // Is first char a digit?
    retur = "";
    int n = len - (text == ""?0:text.length());
    for (int i=0; i<n; i++) { // Insert zeros:
    retur = '0' + retur;
    retur = retur + text;
    return retur;
    * Removes leading zeros from a text.
    public static String removeLeadingZeros(String text)
    {  String retur = text;
    int pos = 0;
    int len = (text == ""?0:text.length());
    for (int i=0; i<len; i++) {
    if (text.charAt(i)=='0') { // Is char a digit?
    pos++;
    return retur;
    public static void main(String[] args)
    { // Basic test of functions:
    int len = 5;
    String s = "1234";
    String r;
    System.out.println("leadingZeros("+s+","+len+")="+(r=leadingZeros(s,len)));
    System.out.println("removeLeadingZeros("+r+")="+removeLeadingZeros(s));
    Regards
    Flemming Als

    Flemming, it looks like somthing is wrong in the xsl that it still goes to org.apache.xpath.objects.XNodeSet package instead of yours ..
    I created a sample that illustrates the usage of this functions (even with 2 params, different types).
    Java class (com.otn.samples.xslt.CustomXSLTFunctions)
    package com.otn.samples.xslt;
    public class CustomXSLTFunctions
    <function name="extension:multiplyStringAndInt" as="number">
    <param name="base" as="String"/>
    <param name="multiplier" as="number"/>
    </function>
    public int multiplyStringAndInt (String pString, int pMultiplier)
    int base = Integer.parseInt(pString);
    return base * pMultiplier;
    XML descriptor:
    Note the types (in the java class and the xml descriptor)
    for java:base -> string and for xslt:base -> string
    for java:multiplier -> int and for xslt:multiplier -> number
    <?xml version="1.0" encoding="UTF-8"?>
    <extension-functions>
    <functions extension:multiplyStringAndInt="http://www.oracle.com/XSL/Transform/java/com.otn.samples.xslt.CustomXSLTFunctions">
    <function name="extension:multiplyStringAndInt" as="number">
    <param name="base" as="string"/>
    <param name="multiplier" as="number"/>
    </function>
    </functions>
    </extension-functions>
    Definition of variables in the process:
    (as you can see, the base is a string - I do the conversion in my method, and the return value
    is converted to a string by the engine)
    <!-- Input -->
    <element name="CustomXSLTFunctionProcessRequest">
    <complexType>
    <sequence>
    <element name="base" type="string"/>
    <element name="multiplier" type="int"/>
    </sequence>
    </complexType>
    </element>
    <!-- Output -->
    <element name="CustomXSLTFunctionProcessResponse">
    <complexType>
    <sequence>
    <element name="result" type="string"/>
    </sequence>
    </complexType>
    </element>
    Using the new function in the XSL transformation:
    - watch out for the namespace declaration (xmlns:sample="...")
    - and the usage (sample:multiplyStringAndInt)
    <xsl:stylesheet version="1.0"
    xmlns:ldap="http://schemas.oracle.com/xpath/extension/ldap"
    xmlns:xp20="http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.Xpath20"
    xmlns:bpws="http://schemas.xmlsoap.org/ws/2003/03/business-process/"
    xmlns:plnk="http://schemas.xmlsoap.org/ws/2003/05/partner-link/"
    xmlns:extension="http://www.oracle.com/XSL/Transform/java/com.otn.samples.xslt.CustomXSLTFunctions"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:ora="http://schemas.oracle.com/xpath/extension"
    xmlns:ns0="http://www.w3.org/2001/XMLSchema"
    xmlns:orcl="http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.ExtFunc"
    xmlns:client="http://xmlns.oracle.com/CustomXSLTFunction"
    exclude-result-prefixes="xsl plnk ns0 client ldap xp20 bpws extension ora orcl">
    <xsl:template match="/">
    <client:CustomXSLTFunctionProcessResponse>
    <client:result>
    <xsl:value-of select="extension:multiplyStringAndInt(/client:CustomXSLTFunctionProcessRequest/client:base,/client:CustomXSLTFunctionProcessRequest/client:multiplier)"/>
    </client:result>
    </client:CustomXSLTFunctionProcessResponse>
    </xsl:template>
    </xsl:stylesheet>
    Then I created a jar file with the class (and for testing the xml descriptor in it)...
    and put it into j2ee/home/applib directory
    hth clemens

  • External function specification

    Hi All!
    (Envs: Centos 5.2, Oracle 10.2.0.4)
    According to documentation a developer should provide RETURN clause in the external function parameters declaration.
    But I faced a conflict with additional extproc specific parameters , INDICATOR for example...
    Option 1 (no INDICATOR variable in specification)
    CREATE OR REPLACE FUNCTION MyTest(Lang IN VARCHAR2, Form IN VARCHAR2) RETURN VARCHAR2
    AS EXTERNAL
    LIBRARY Lemma_Ext
    NAME "MyExtTest"
    LANGUAGE "C"
    WITH CONTEXT
    PARAMETERS(CONTEXT,Lang string, Form string, RETURN string)
    and it works OK with it's "C" prototype
    +char * MyExtTest (char Lang, char Form);+
    Option 2 (with INDICATOR, doesn't work):
    CREATE OR REPLACE FUNCTION MyTest(Lang IN VARCHAR2, Form IN VARCHAR2) RETURN VARCHAR2
    AS EXTERNAL
    LIBRARY Lemma_Ext
    NAME "MyExtTest"
    LANGUAGE "C"
    WITH CONTEXT
    PARAMETERS(CONTEXT, Lang string, Form string, RETURN INDICATOR short, RETURN string)
    and it is not works with following "C" prototype:
    +char * MyExtTest (char Lang, char Form, short *return_ind);+
    Option 3 (with INDICATOR, works!):
    CREATE OR REPLACE FUNCTION MyTest(Lang IN VARCHAR2, Form IN VARCHAR2) RETURN VARCHAR2
    AS EXTERNAL
    LIBRARY Lemma_Ext
    NAME "MyExtTest"
    LANGUAGE "C"
    WITH CONTEXT
    PARAMETERS(CONTEXT, Lang string, Form string, RETURN INDICATOR short)
    and it works like a charm with the same "C" prototype as in the Option 2:
    +char * MyExtTest (char Lang, char Form, short *return_ind);+
    Just removing "RETURN string" was a correct solution!
    And I found a couple of examples of successful external functions (with extra parameters) from Metalink. All these examples don't contain RETURN <type> in function specification.
    So, where is the source of misunderstanding?
    Regards,
    Andrew.

    Hi AndresG,
    Are you using O2A cartridges or not?
    If you are not, by default, the fulfillment states are in the following location --
    a) external fulfillment state -- /ControlData/Functions/<Function>/orderItem/ExternalFulfillmentState
    b) composite fulfillment state (i.e. output of FS composition) -- /ControlData/OrderItem/OrderItemFulfillmentState for order items, and /ControlData/OrderFulfillmentState for overall order.
    Note that mapped fulfillment states are not persisted.
    These defaults are configurable by creating FulfillmentStateModule.xquery file, and have XML catalog include the file. In fact, this is how O2A cartridges override these defaults; the fulfillment states are stored in /OrderLifeCycleManagement area.
    Yes, you can update the external fulfillment state during function execution -- in your automation of the function, simply return the external fulfillment state in your xquery automator.
    To send composite fulfillment state to CRM, yes, you need to create a Data Changed Event Notification -- set it to trigger by Composite Fulfillment State change.
    Cheers,
    Daniel Ho
    OSM Product Management

  • Output type - Special function 8 - ARCHIV_CONNECTION_INSERT

    Hi gurus,
    I created a new Output Type with special function 8 called ZPDF in transaction NACE with application MR (invoice verification) and I added to that Output Type ZPDF our custom program called ZXXX_ARCHIVE_LINK in order to post into the MM invoice, a PDF who cames from the SD inovoice.
    The SD invoice number is recorder into the field "Referece" in the MM invoice.
    So, the program should (through the output type and the program):
    1. Read the MM invoice number generated (NAST table into NAST-OBJKY).
    2. Enter to table RBKP with MM invoice number RBKP-BELNR and get the SD invoice number: RBKP-XBLNR.
    3. Enter with SD invoice number XBLNR to table TOA01-OBJECT_ID And get TOA01-ARC_DOC_ID.
    4. Call FM ARCHIV_CONNECTION_INSERT.
    The problem here is when I post a MM inovice in MIRO transaction the system through the condition record added the ZPDF Output Type but don´t read the program ZMIC_INVOICE_PDF_ARCHIVE_LINK added to that output type. The status of the output type is green (but without any processing log). I checked the setting for the Output Type like 100 times and everything seems to be OK.
    Please this is very urgent. Any advice?
    I don´t know why SAP don´t call the program. I think the ABAP code is wrong:
    REPORT ZXXX_ARCHIVE_LINK.
    Table Declaration
    TABLES: NAST, " Message Status
    CMFP, " Storage Structure for Errors Collected
    EDIDS, " Status Record (IDoc)
    VBRK, " Billing Document: Header Data
    TOA01. " Link table 1
    TYPES: BEGIN OF TY_RBKP,
    BELNR TYPE RE_BELNR, " Document number of an invoice document
    XBLNR TYPE XBLNR1, "SAEOBJID, " Reference Document Number
    END OF TY_RBKP.
    TYPES: BEGIN OF TY_TOA01,
    OBJECT_ID TYPE SAEOBJID, " SAP ArchiveLink: Object ID (object identifier)
    ARC_DOC_ID TYPE SAEARDOID, " SAP ArchiveLink: Document ID
    END OF TY_TOA01.
    Data Declaration
    DATA: WA_BELNR TYPE RE_BELNR ,
    WA_ARC_DOC_ID TYPE TY_TOA01 , "-ARC_DOC_ID,
    WA_SAP_OBJECT LIKE SAPB-SAPOBJID," TYPE TOAOM-SAP_OBJECT ,
    ARC_DOC_ID TYPE TOAV0-ARC_DOC_ID,
    GT_RBKP TYPE STANDARD TABLE OF TY_RBKP , "WITH HEADER LINE,
    GT1_RBKP TYPE STANDARD TABLE OF TY_RBKP, " WITH HEADER LINE,
    GT_ARC_DOC_ID TYPE STANDARD TABLE OF TY_TOA01, " -ARC_DOC_ID,
    WA1_RBKP TYPE TY_RBKP ,
    WA_RBKP TYPE TY_RBKP.
    DATA: WA1_OBJECT_ID TYPE SAEOBJID.
    DATA: WA_OBJKY TYPE NA_OBJKEY,
    WA1_OBJKY TYPE RE_BELNR.
    FORM entry USING ent_retco ent_screen.
    CLEAR ent_retco.
    PERFORM ARCHIV_CONNECTION_INSERT USING nast-objky ent_retco.
    ENDFORM. "entry
    FORM ARCHIV_CONNECTION_INSERT USING objky returncode.
    * Select Reference Document Number from RBKP table
    SELECT BELNR XBLNR
    FROM RBKP
    INTO TABLE GT_RBKP
    WHERE BELNR = objky . " .WA1_OBJKY .
    IF SY-SUBRC EQ 0 .
    LOOP AT GT_RBKP INTO WA_RBKP.
    WA1_OBJECT_ID = WA_RBKP-XBLNR .
    CONCATENATE WA1_OBJECT_ID '%' INTO WA1_OBJECT_ID .
    WA_SAP_OBJECT = WA_RBKP-BELNR .
    SELECT OBJECT_ID
    ARC_DOC_ID
    FROM TOA01
    INTO TABLE GT_ARC_DOC_ID
    WHERE OBJECT_ID LIKE WA1_OBJECT_ID.
    IF SY-SUBRC EQ 0 .
    READ TABLE GT_ARC_DOC_ID INTO WA_ARC_DOC_ID INDEX 1.
    ARC_DOC_ID = WA_ARC_DOC_ID-ARC_DOC_ID.
    WA_SAP_OBJECT = WA_ARC_DOC_ID-OBJECT_ID.
    ENDIF.
    CALL Function Module:Link table operations
    CALL FUNCTION 'ARCHIV_CONNECTION_INSERT'
    EXPORTING
    ARCHIV_ID = 'Z0'
    ARC_DOC_ID = ARC_DOC_ID
    AR_DATE = SY-DATUM
    AR_OBJECT = 'MMILOGINV'
    DEL_DATE = ' '
    MANDANT = SY-MANDT
    OBJECT_ID = WA_SAP_OBJECT
    SAP_OBJECT = 'BUS2081'
    DOC_TYPE = 'PDF'
    BARCODE = ' '
    EXCEPTIONS
    ERROR_CONNECTIONTABLE = 1
    OTHERS = 2
    IF SY-SUBRC 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    CLEAR: WA_RBKP.
    ENDLOOP.
    ENDIF.
    ENDFORM.

    Hi,
    Use
    You can process a message immediately by updating the application document or you can process it at a later time. For later processing you must use the report program RSNAST00 or a corresponding application function.
    The individual possibilites are:
    Time 1: The message is processed through report program RSNAST00. This report program can be scheduled periodically or started manually.
    Time 2: As in time 1, but the message contains an earliest processing date and a requested processing time. The message is ignored by report program RSNAST00 before the requested date.
    Time 3: The message is selected and processed by application specific programs. Processing can take place online or in the background.
    Time 4: The message is processed when the application document is saved. No further processing of the message is necessary.
    Kapil

  • Unexpected problem with authorization scheme of type plsql function

    Hi,
    I have created one authorization scheme of type plsql function returning boolean. Authorization scheme is for pages only. p2_user_priviledge is a textbox on home page which extract privilege (list of pagenos) for login user from database. Home page has no authorization required. AUTHORIZATION SCHEME always returns false. I am not able to trace problem in my code. same code works fine for a textbox's default returning 'c'.
    ----- CODE FOR AUTHORIZATION SCHEME------------------------------------------------------------
    declare
    pageid varchar2(10);
    privilege varchar2(300);
    c number(3);
    begin
    pageid := ':P'||to_char(:app_page_id)||':' ; ---Pageno get stored in format  *:P2:*
    privilege := trim(:p2_user_priviledge); ++------Contain list of privilege like    :P2:P13:P67:P23:  etc+++ select instr(privilege,pageid) into c from dual;
    if c>0 then
    return true;
    else
    return false;
    end if;
    end;
    One more problem is again related to authorization scheme.
    I created one application and one authorization scheme (auth_aug) which worked finely. Then after some days i added 10 more pages to same application, But now autho_aug was always returning false for new pages. So i copied code from 'autho_aug' to new scheme 'autho_sept', & it worked for new pages. I don't understand if code is same for both scheme, why required to use two different schemes.
    Now i have added few more pages to application, and facing problem mentioned earlier.
    any solution for both the problems.....

    Hi,
    Let me clear my problem once again.
    -->Home page i.e. P2 does not use authorization, So it is displayed along with text item :p2_user_privilege.
    -->Then user click on one of the links , Now page :P70: should get displayed.
    P70 is using authorization scheme.
    -->But :p2_user_priviledge value is not accessible at authorization scheme, I dont know why.
    I could not find out where to create Application item , as suggested by you.
    & not able to find Developer menu , session at home page as suggested earlier.
    And one more question, my application at runtime display
    X en us
    at bottom
    How to make it
    USER: X Language: en us
    Like in development environment.
    Hope I have cleared my problem, waiting for reply.
    Edited by: TEJU on Nov 17, 2008 9:25 AM

  • Creating external function

    We are trying to create an external function that will be linked at run- time. How is such a function compiled?
    Does it need to be compiled into a Dynamic library? Or would the function be called?
    The operating system we are trying to do this is Sun UNIX Solaris. However any insight would be of great
    assistance.

    I have a nasty feeling there is in XQuery expressions, but I'm not going there. ;-)
    michaels>  WITH t AS
         (SELECT 1 ID, 1 x, 2 y FROM DUAL UNION ALL
          SELECT 2,    3,   4   FROM DUAL UNION ALL
          SELECT 3,    5,   6   FROM DUAL)
    SELECT   *
        FROM XMLTable('declare function local:a($a,$b)
                         ($a + $b)
                       }; (: eof :)
                       for $i in /ROWSET/ROW
                       return <ROW>
                              <ID>{$i/ID}</ID>
                              <X>{$i/X}</X>
                              <Y>{$i/Y}</Y>
                              <A>{local:a($i/X,$i/Y)}</A>
                              <B>{local:a($i/X,$i/Y) + 2}</B>
                              </ROW>' PASSING XMLTYPE(CURSOR(SELECT * FROM t))
                       COLUMNS ID NUMBER PATH 'ID',
                                X NUMBER PATH 'X',
                                Y NUMBER PATH 'Y',
                                A NUMBER PATH 'A',
                                B NUMBER PATH 'B'
            ID          X          Y          A          B
             1          1          2          3          5
             2          3          4          7          9
             3          5          6         11         13

Maybe you are looking for