Assigning global variable to a bapi

hi all,
I have created 3 context node..
account1 with attribute bank-key
account2 with attribute bank-country
account3 with attribute accno.
These 3 nodes are binded to 3 input fields,
now on the click of the action m reading these 3 values individually and storing it into an Internal Table.
now this Internal table is passed to the Api as shown below but its still showing error( Type conflict when calling a function module.)
code...............
method ONACTIONGET_ITEM .
data itab type standard table of BAPI_BCA_STR_CN_ACCT_EXT.
data wa type BAPI_BCA_STR_CN_ACCT_EXT.
*reading bank-country
DATA lo_nd_account_details TYPE REF TO if_wd_context_node.
DATA lo_el_account_details TYPE REF TO if_wd_context_element.
DATA ls_account_details TYPE wd_this->element_account_details.
DATA lv_bank_country LIKE ls_account_details-bank_country.
navigate from <CONTEXT> to <ACCOUNT_DETAILS> via lead selection
lo_nd_account_details = wd_context->get_child_node( name = wd_this->wdctx_account_details ).
get element via lead selection
lo_el_account_details = lo_nd_account_details->get_element( ).
get single attribute
lo_el_account_details->get_attribute(
EXPORTING
name = `BANK_COUNTRY`
IMPORTING
value = lv_bank_country ).
WA-ACCOUNT_NUMBER = lv_bank_country.
Append WA to ITAB.
*reading bank-key
DATA lo_nd_account_details1 TYPE REF TO if_wd_context_node.
DATA lo_el_account_details1 TYPE REF TO if_wd_context_element.
DATA ls_account_details1 TYPE wd_this->element_account_details1.
DATA lv_bank_code LIKE ls_account_details1-bank_code.
navigate from <CONTEXT> to <ACCOUNT_DETAILS1> via lead selection
lo_nd_account_details1 = wd_context->get_child_node( name = wd_this->wdctx_account_details1 ).
get element via lead selection
lo_el_account_details1 = lo_nd_account_details1->get_element( ).
get single attribute
lo_el_account_details1->get_attribute(
EXPORTING
name = `BANK_CODE`
IMPORTING
value = lv_bank_code ).
WA-ACCOUNT_NUMBER = lv_bank_code.
Append WA to ITAB.
*reading account-number
DATA lo_nd_account_details2 TYPE REF TO if_wd_context_node.
DATA lo_el_account_details2 TYPE REF TO if_wd_context_element.
DATA ls_account_details2 TYPE wd_this->element_account_details2.
DATA lv_account_number LIKE ls_account_details2-account_number.
navigate from <CONTEXT> to <ACCOUNT_DETAILS2> via lead selection
lo_nd_account_details2 = wd_context->get_child_node( name = wd_this->wdctx_account_details2 ).
get element via lead selection
lo_el_account_details2 = lo_nd_account_details2->get_element( ).
get single attribute
lo_el_account_details2->get_attribute(
EXPORTING
name = `ACCOUNT_NUMBER`
IMPORTING
value = lv_account_number ).
CALL FUNCTION 'BAPI_BCA_PAYMITEM_GET_LIST'
EXPORTING
ACCOUNTIDENT = itab
DATEFROM =
DATETO =
MAXROWS =
PROCESSEXTENSION =
OPENLOG = 'X'
WITHNOTES =
VALUEDATEFROM =
VALUEDATETO =
IMPORTING
MOREROWS =
ARCHPOSTDATE =
TABLES
EXTENSIONIN =
PAYMENTITEMDETAIL =
ITEMSTATUS =
ITEMTYPE =
RETURN =
EXTENSIONOUT =
PAYMENTITEMNOTES =
What should i do...
Thanks n regards...

Hi Urbashi Dewan  ,
                     Try calling the Fm Seperately and try to find the propertypes for all importing ang exporting parameters, that woont give error. Check the itab type used in 'BAPI_BCA_PAYMITEM_GET_LIST' and also try to find out if the error is getting because od itab itself.
try to recall the 'BAPI_BCA_PAYMITEM_GET_LIST'
using wizard.
and also u can try passing the itab without appending any values..
Regards
Sarath

Similar Messages

  • Assigning global variables to 2 bapis

    Hello everyone,
                  I want to pass this global variable which i have created in the context code as an importing parameter to 2 BAPI"S which i am using.
    Is this possible and how do i go about it....Please do help me overcome dis problem...
    Thanks a ton n Regards,
    Urbashi

    hi urbashi......
             if you are passing the attribute type as structure.... then it is just a char10....
            or if you giving the structure type as mara or some tble then you have to pas an internal table.
    for example....
         your input field is material number ie(matnr) and your structure is mara. then.....
          first you should read the structure, then your input field.
          let the work are be wa.
          wa-matnr = <input field value>.
          append wa to itab.
          now bind this itab to the structure....
          so now your structure is having many fields but only one value that is  matnr.
          but this. cannot be passed directly to a bapi import parameter. you should read it into a work area nad hen pass it.
            for a import parameter in a bapi... you should pass only a single value and not a  table.
    ---regards,
       alex b justin

  • Assigning value returned from RFC call to a global variable

    If I have an RFC call to SAP how can I assign the value returned to a global variable on my data services job?

    Hi,
    For now, it seems u haven't specified the destination properly. the call function statement must be suffixed with the 'destination' addition to make sure that the function call is an RFC and the particular function be executed at the desired destination.

  • How to assign local variable to global variable dynamically in adobe livecycle designer 7.1

    Hi All,
    i want to assign my textfield value to global variable dynamically.so that where ever i want , i will access my global variable.so it is possible in adobe livecycle designer 7.1. kindly suggest me method.Thanks in advance.
    Thanks & Regards
    Ganesh

    Please remove all adobe livecycle designer versions from your local pc.
    restart your pc to be sure, that all temp data is deleted.
    download the newest ald version from service.sap.com and install it.
    have fun with developing adobe forms with sap transaction sfp.

  • Global variable are not assigned to other files

    Hello
    I have defined & assigning some values to Global files in one of the project files, But the same i am not able to read in other files of the same project.
    i have defined as  'extern int  x ' in one file  & also called in other file by defining 'extern int  x'
    let me know if you more info needed
    Hussain

    Hello
    I am trying to implement this in my program .. but assigning the Global variable is not working 
    NOTE: I am using LABWINDOWS CVI 5. (Old version)
    /////***Test 1 contents****///
    extern ViInt32 A= 0;   // Assigning  ‘0’  to Global variables 
    extern ViInt32 B= 0;
    extern ViInt32 C= 0;
    extern ViInt32 D= 0;
    if (revision = =1)
    A=Confirm Popup (“Verifiy”,"Does this unit also have hardware A”);
    ///*** end of Test 1 ***//
    If I am trying the access above global variable to Test 5 or some other test program within same project
    /////***Test 5 contents****///
    If (A)
    printf (“the Hardware mod is REV A”);
    Else
    Printf(“NO Hardware mod find”);
    //*** end of Test 5 ***//
    Now the query is whichever option (YES OR NO) in the confirm POPUP in Test 1. I am getting the output: “NO Hardware mod find”
    The reason is the Global Variable is not passing.  

  • PLSQL: Changing in parameter thru assignment to global variable???

    Hi there!
    On 10gR2 (10.2.0.3) the following PL/SQL block
    declare
    glob_val pls_integer := 2;
    procedure test_p(x in pls_integer) is
    begin
    dbms_output.put_line(x);
    glob_val := 3;
    dbms_output.put_line(x);
    end test_p;
    begin
    dbms_output.enable;
    test_p((glob_val));
    end;
    appears to change the value of the in-parameter x by an assignment to the
    global variable glob_val. To verify, just check the dbms_output generated.
    This is completely unexpected behaviour, and contrary to my understanding of
    PL/SQL's parameter passing mechanisms. If this was the intended behaviour
    in 10.2 it would definitely break tons of existing PL/SQL code.
    Has anyone run into this problem before? Is this a bug? Is there a workaround
    available? Any ideas??
    All the best
    Michael

    Sorry, I cannot accept that statement.
    According to the PL/SQL user's guide
    <QUOTE>
    Using the IN Mode
    An IN parameter lets you pass values to the subprogram being called. Inside the subprogram, an IN parameter acts like a constant. It cannot be assigned a value.
    You can pass a constant, literal, initialized variable, or expression as an IN parameter.
    IN parameters can be initialized to default values, which are used if those parameters are omitted from the subprogram call. For more information, see "Using Default Values for Subprogram Parameters".
    </QUOTE>
    IN-Parameter were not passed by reference in former versions of PL/SQL.
    You may notice that you cannot assign to an in-parameter either; an attempt
    to do that will just produce the error PLS-00363.

  • Loading a text file into a global variable issue - really a global var?

    From all the documentation and examples I can find, it appears that it would be
    correct to create a global array variable [outside of any functions] to load image names into,
    then use these images for a slideshow. I want to make the app dynamic, in that changing the text file gives a new set of images.
    The global variable goes null [no values] after the load event listener. Why is that?
    Isn't global, well global, and alive for the duration of the SWF?
    PARAMS.TXT:
    monthNames=January,February,March,April,May,June,July,August,September,October,November,De cember&dayNames=Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday
    CODE:
    var dNames:Array = new Array();
    var mNames:Array = new Array();
    var request:URLRequest = new URLRequest("images/params.txt");
    var variables:URLLoader = new URLLoader();
    variables.dataFormat = URLLoaderDataFormat.VARIABLES;
    variables.addEventListener(Event.COMPLETE, completeHandler);
    try
    variables.load(request);
    catch (error:Error)
    trace("Unable to load URL: " + error);
    trace("2 mNames 2: " + mNames[2]);
    trace("2 dNames 3: " + dNames[3]);
    stop();
    function completeHandler(event:Event):void
    var loader:URLLoader = URLLoader(event.target);
    dNames = loader.data.dayNames.split(",");
    mNames = loader.data.monthNames.split(",");
    trace(loader.data.dayNames);
    trace("1 mNames 2: " + mNames[2]);
    trace("1 dNames 3: " + dNames[3]);
    OUTPUT:
    2 mNames 2: undefined
    2 dNames 3: undefined
    Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday
    1 mNames 2: March
    1 dNames 3: Wednesday
    How do I access these values after loading from the external file, after the load?
    Thanks in advance.

    The statement you quoted from whatever Adobe documentation is correct.
    If you want to load the data into the arrays before anything else happens, then have anything else that happens execute via the completeHandler function... after the data is loaded and processed into the arrays.
    the command: loadFile() executes before the trace("2:" +images[4]); command.  The loadFile function is processed and the loading process BEGINS... but starting the loading does not delay the main processing from continuing down the line--the loading itself becomes a secondary/background task.  The command was to execute the loadFile function and the processing of that function was completed.  If you don't believe so, then add a trace...
    function loadFile():void
         vars.dataFormat = URLLoaderDataFormat.VARIABLES;
         vars.addEventListener(Event.COMPLETE, onComplete, false, 0, true);
         vars.load(new URLRequest("images/fnames.txt"));
         trace("started loading");
    If you add that trace, you should see that the loadFile function execution is completed and the next line in your code is then processed... trace(2....)
    The addEventlistener does not stop anything.  The addEventListener code is assigning a monitor, not a traffic controller... it is telling the monitor to indicate when the data has finished loading.  It is not telling anything to stop program execution.
    So if you want to wait until the data is loaded before you do anything else... it goes....
    function onComplete(evt:Event):void
         var urlVars:URLVariables = evt.target.data;
         images = vars.data.images.split(",");
         tnails = vars.data.thumbnails.split(",");
         ................HERE.................

  • How can I access global variables in a loaded Applescript?

    How can I access global variables in a loaded script, in Xcode, ApplescriptObjC? Basically, I have a global variable defined in my parent script using "property", and I need to modify objects connected to those variables inside of a loaded script.
    Example:
    Parent script:
    script AppDelegate
    property myTextField : missing value
    //linked to a text field object
    tell myScript to myAwesomeHandler_()
    end script
    Loaded script:
    on myAwesomeHandler_()
    myTextField's setStringValue_("The new Xcode is so glitchy ugh")
    //changes value of linked text field of parent script
    end myAwesomeHandler_
    The problem is, the variable is undefined in the Loaded script, and I need it to have the same value as the parent script, and I don't want to pass the variable through the Handler. Any ideas?

    I think want you are looking to do will need to be done in two steps. Because myTextField needs to be a property for the ObjectiveC part of the code you cannot turn it into a global.
    However if you make a temporary variable global assign the string to it in the handler then set myTextField off of it.
    global myTextFieldGlobal
    script AppDelegate 
    property myTextField : missing value 
    //linked to a text field object 
    tell myScript to myAwesomeHandler_() 
    myTextField's setStringValue_(myTextFieldGlobal)
    end script 
    on myAwesomeHandler_() 
    set myTextFieldGlobal to "The new Xcode is so glitchy ugh"
    //changes value of linked text field of parent script 
    end myAwesomeHandler_ 
    I know you stated you did not want the handler to return a value but I have to ask why? Global's, imo, are not a good idea and really should be used as a last resort.
    One other possibility is to pass a reference to the property to the handler. Not sure if that works in AS of if that would satisfy our requirement of not passing the variable through the handler
    <edit>
    Another though have you tried to define the property outside the script?  That is
    property myTextField : missing value
    script AppDelegate
    Not sure if that will work.
    You might also want to have a look at Scope of Properties and Variables Declared in a Script Object

  • Global Variable in Oracle Forms 6i

    Hi,
    How & where to define global variable in Oracle form 6i and also let me know how to access it.
    Thanks in advance
    Regards,
    Sanket

    hi
    Global variable are forms specifice variable.
    it can store character value upto 255 for all usages.
    We can initialize it when we declare otherwise give error if we did not assign it any value.
    Oracle 10g it can take upto 4000 bytes
    GLOBAL.ur_globalvar := TO_CHAR(15);
    or
    :GLOBAL.ur_globalvar:= '15';
    or
    Remmber numeric values are implicitly converted by oracle 2 character
    :GLOBAL.ur_globalvar:= 15;
    -- which can then subsequently be accessed using...
    :GLOBAL.ur_globalvar;
    -- To destroy a global variable and release its memory, use the ERASE built-in procedure:
    Erase('GLOBAL.my_var'); Regards,
    Abdetu...

  • Can I Access the Value of a Global Variable in a Trigger

    I'm using a Global variable in a Package which i use in the BIU Trigger to populate a column. After assigning the value for that global variable, I run an INSERT in the same package. But I find only the default value of the Global variable populated in the column. Can I use a Global Variable in a Trigger? Is there any way to put in a common value across all the tables in an application for all DMLs of a particular session?

    Helios,
    I'm already having the same setup mentioned in the thread. And I'm doing exactly whats given there. But the issue seems to be something different. I'm assigning the value to the Global Variable in the Package through Apex. Here's the Package Code:
    CREATE OR REPLACE PACKAGE Schema1.SPMS_SECURITY_PKG
    AS
    X_app_user_id NUMBER DEFAULT -1;
    FUNCTION USER_ID RETURN NUMBER;
    END SPMS_SECURITY_PKG;
    CREATE OR REPLACE PACKAGE BODY Schema1.spms_security_pkg
    AS
    FUNCTION user_id
    RETURN NUMBER
    IS
    BEGIN
    -- RAISE_APPLICATION_ERROR(-20001,'USER ID'||'*'||X_app_user_id);
    RETURN NVL (x_app_user_id, -1);
    -- RETURN NVL (sys_context('USERENV', 'CURRENT_USER'), -1);
    EXCEPTION
    WHEN OTHERS
    THEN
    RETURN -1;
    END;
    And Here is the Trigger Code:
    CREATE OR REPLACE TRIGGER Schema1."USER_DETAILS_TRIGGER"
    BEFORE INSERT OR UPDATE
    ON PMS_SICAL.SPMS_USER_DETAILS REFERENCING NEW AS NEW OLD AS OLD
    FOR EACH ROW
    BEGIN
    IF INSERTING
    THEN
    :NEW.created_by := spms_security_pkg.user_id;
    :NEW.created_date := SYSDATE;
    :NEW.START_DATE := SYSDATE;
    ELSIF UPDATING
    THEN
    :NEW.updated_by := SPMS_SECURITY_PKG.X_app_user_id;--spms_security_pkg.user_id;
    :NEW.updated_date := SYSDATE;
    END IF;
    END;
    But I always get -1 in the both in the table after the DMLs.

  • Global variable in XSLT

    Hi,
    I have a requirement in XSLT mapping where i sum up all the data related to amount field and then want to display total that i have added in the another node
    eg.
    <Detail>
    <xsl:variable name="<b>etotal</b>" select="sum(ns0:pay/ns0:checkList/ns0:check/ns0:deductionList/ns0:adjustment/ns0:amount/ns0:amount)"/>
    </Detail>
    <Trailer>
    <TotalDeductionAmount><xsl:value-of select="<b>$etotal</b>"/>
    </TotalDeductionAmount>
    </Trailer>
    how to do ?
    since the above example the scope of the variable is local and cannot be accessed globally. how to declare a global variable and then assign value to the variable
    or is there any other method to do this in XSLT
    Thanks in advance
    With Regards
    Pradeep N

    Hi,
    Please see below sample code is solving your problem. Global variable can not solve the problem, you need to use templates and call then appropriately.
    -Kavita
    Sample Input
    <?xml version="1.0" encoding="UTF-8"?>
    <root>
    <Test>23</Test>
    <Test>34</Test>
    <Test>90</Test>
    </root>
    Sample Output
    <?xml version="1.0" encoding="UTF-8"?>
    <Mt_test>
         <Header>"create the header data according to req"</Header>
         <Details>
              <DetailsCol>23</DetailsCol>
         </Details>
         <Details>
              <DetailsCol>34</DetailsCol>
         </Details>
         <Details>
              <DetailsCol>90</DetailsCol>
         </Details>
         <Trailer>
              <TotalSum>147</TotalSum>
         </Trailer>
    </Mt_test>
    XLST:
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format">
    <xsl:template match="/">
    <xsl:element name="Mt_test">
    <xsl:element name="Header">"create the header data according to req"</xsl:element>
              <xsl:variable name="checkNext" select="//Test[1]"/>
    <xsl:call-template name="GenerateTest">
    <xsl:with-param name="currNode" select="//Test[1]"></xsl:with-param>
    <xsl:with-param name="Sum" select="0"></xsl:with-param>
    </xsl:call-template>
    </xsl:element>
    </xsl:template>
    <xsl:template name="GenerateTest">
    <xsl:param name="currNode"></xsl:param>
    <xsl:param name="Sum"></xsl:param>
    <xsl:element name="Details">
    <xsl:element name="DetailsCol"><xsl:value-of select="$currNode"></xsl:value-of></xsl:element>
    </xsl:element>
    <xsl:variable name="Sum1" select="$Sum + $currNode"></xsl:variable>
    <xsl:variable name="checkNext" select="$currNode/following-sibling::*[1]"/>
    <xsl:choose>
         <xsl:when test="$checkNext">
    <xsl:call-template name="GenerateTest">
    <xsl:with-param name="currNode" select="$checkNext"></xsl:with-param>
    <xsl:with-param name="Sum" select="$Sum1"></xsl:with-param>
    </xsl:call-template>     
         </xsl:when>
         <xsl:otherwise>
         <xsl:call-template name="GenerateTrailer">
    <xsl:with-param name="currNode" select="chkeckNext"></xsl:with-param>
    <xsl:with-param name="Sum" select="$Sum1 "></xsl:with-param>
    </xsl:call-template>
         </xsl:otherwise>
    </xsl:choose>
    </xsl:template>
    <xsl:template name="GenerateTrailer">
    <xsl:param name="currNode"></xsl:param>
    <xsl:param name="Sum"></xsl:param>
    <xsl:element name="Trailer">
    <xsl:element name="TotalSum"><xsl:value-of select="$Sum"></xsl:value-of></xsl:element>
    </xsl:element>
    </xsl:template>
    </xsl:stylesheet>

  • How do I see values of global variables in a SAP system

    Hi Guys
    How do I get to see the values of global variables DIR_GLOBAL etc.
    Actually I wanted to run an archive for some IDOCs, and I configured a filepath for the same and gave it an address to my local system, now when I use SARA and after customising the logical path it gives me an error stating that "Logical file path is not completely maintained".
    So I resorted to one of the predefined paths ARCHIVE_DATA_FILE and it archived successfully but I am not able to figure out the exact path of the archived file can you please help??
    Best regards
    Sujoy

    Hello Sujoy,
    Execute transaction FILE, double click on Logical File Name Definition, then, scroll down to find ARCHIVE_DATA_FILE - double click on ARCHIVE_DATA_FILE.  Note what is entered in the Logical path field and then, go to Logical File Path Definition.  Look for the path name from previous step and highlight/select it and click on Assignment of Physical Paths to Logical Path.  From there, you can double click on the relevant Syntax group.  This will give you the path for where the archive file has been written to.
    I hope this explanation is not too confusing :-).
    Best Regards,
    Karin Tillotson

  • How do you reference a created global variable in a report text field?

    I have created a parameter using the Globaldim statement in a script file. when I reference this parameter in any other script file during the current DIAdem session the value is passed without any issue.  Call the variable parmxyz where I assign it a value of 25.3 
    The help section under Globaldim mentions that global variables can be referenced in all panels, scripts, and dialogue boxes.  When I try to insert a text box on a report page using the @@parmxyz@@ it returns NOVALUE where I expect to see 25.3 (for example).
    When I substitute @@CurrDate@@ I do get the date, so I know the text box is valid.  What am I doing wrong?
    Steve    M 

    Hello Steve!
    It should work the way you did it. But their are some circumstances wich might prevent it:
    You have reseted the global script engine. All variables will be lost.
    You have a Sub with the same name in a command extension script. There is no warning ;-)
    One Test you can make is to put in '@@TypeName(paramxy)@@' as the expression to see the variable type. You can also try a realy unique variable name. The last option is to use ItemInfoGet to get detailed infos about your variable.
    Matthias
    Matthias Alleweldt
    Project Engineer / Projektingenieur
    Twigeater?  

  • Set global variable in FOX formula

    Hi all,
    Does anybody know how to change the value of a global variable inside a FOX formula?.
    I can get its value and assign to a local variable but I would like to set the global value after reading a keyfigure and make some calculations.
    is it possible? maybe with some ABAP function call?
    Thanks for your help!

    Include characteristic HIRE in your 'fields to be changed' of planning function and in FOX write:
    DATA L_HIRE TYPE HIRE.
    DATA EXISTBPSID TYPE ZTA_BPSID.
    DATA BPSIDNO TYPE ZTA_BPSID.
    BPSIDNO = VARV(BPSTAS2).
    FOREACH L_HIRE.
    IF EXISTBPSID = '#'.
    {L_HIRE,BPSIDNO} = {L_HIRE,EXISTBPSID}.
    BPSIDNO = BPSIDNO + 0000000001.
    ENDIF.
    ENDFOR.

  • Using global variable in package

    Hi. I have created a function (Retrieve_SerialNo) which returns a variable, which I use throughout my package. I would like to assign this variable as a global variable to be used by all functions and procedures in the package. Can someone help me in the declaration of this variable as a global variable? Also, is it necessary for me to initialize this variable whenever the package executes. If yes, how would I do this?
    CREATE OR REPLACE PACKAGE BODY Supply_Item_Interface AS
    FUNCTION Retrieve_SerialNo RETURN VARCHAR2 IS
        v_serial_no VARCHAR2(20);
        CURSOR Serial_Code IS
          SELECT S.Serial_Code
            FROM Spare_Parts s, Orders r
           WHERE s.serial_code = r.serial_code;
      BEGIN
        OPEN Serial_Code;
        LOOP
          FETCH Serial_Code
            INTO v_serial_no;
          EXIT WHEN Serial_Code%NOTFOUND;
          v_serial_no := v_serial_no;
        END LOOP;
        CLOSE Serial_Code;
        RETURN v_serial_no;
      EXCEPTION
        WHEN OTHERS THEN
          RETURN NULL;
      END;

    user13415143 wrote:
    Hi. I have created a function (Retrieve_SerialNo) which returns a variable, which I use throughout my package. I would like to assign this variable as a global variable to be used by all functions and procedures in the package.All variables have scope or "visibility". A variable defined in a procedure is only visible within that procedure.
    A variable defines in a package body. is visible within that package body (i.e. procedures and functions in that package body can "see" that variable.
    A variable defined in the package definition? Well, who can see the definitions of procedures and function in a a package header/definition? Everyone else basically (other PL/SQL packages and procedures and functions). So this is also true for variables defined in the package interface. These are global variables that not only can be used by the code in that package's body, but also can be used by other packages and PL/SQL code.
    So when you create a global variable you need to decide on its scope:
    - define it in package header for global usage in all PL/SQL code
    - define it in package body for global usage within that package only
    CREATE OR REPLACE PACKAGE BODY Supply_Item_Interface AS
    ..snipped..Ugly code as there is no need to use an explicit cursor if returning a value from a single row. Also buggy code. If there are multiple rows returned by the cursor, the function returns the serial of the last random row. How does this make sense?
    This is what I would expect to see from a function like this. You pass it a unique identifier and it returns the applicable attribute (column) value for it.
    E.g.
    create or replace function GetSerialNo( orderNo number ) return number is
      serialNo number;
    begin
      select
        s.serial_code into serialNo
      from spare_parts s,
           orders o  
      where s.serial_code = o.serial_code
      and o.order_no = orderNo;
      return( serialNo );
    exception when NO_DATA_FOUND then
      return( null )
    end;Also note that there is no need to write ugly uppercase code. This is not a proper coding standard. Programming standards for all languages (ranging from C# to Java to Delphi to Visual Basic to C/C++) specify that camelcase should be used for variables and pascalcase for procedures/functions/methods. Uppercase is very seldom used and then only for constant names and compiler options/flags for example.
    Coding reserved words in uppercase? That is just plain silly - and not found in today's programming languages. Do yourself a favour and forget the idiotic standards used by some for PL/SQL and look at the standards for Java and .Net/C# - as the latter are the de facto standards for programming (and have been for the last 2 decades and more).

Maybe you are looking for