Refcursor concept

I never used refcursor.Can any one please explain about refcursor with example when it will be usefull?
Regards
Raghavendra Nara

... and don't forget , choose the appropriate forum, normally you will get better and faster answers. The best place for a question about 'Ref Cursor' is the 'SQL and PL/SQL' forum under main topic DATABASE.
But since you are a newcomer it's not a problem.
Werner

Similar Messages

  • How to return rows from tmp table created inside function??

    Hi,
    I'm trying to return rows from a cursor or table (created within
    the function). How do I specify the return type?

    Hi,
    Here is the code that examples to create a function that can
    return data from table.This is achieved using REFCURSOR concept.
    Hope this helps you.I'm giving all stuff in single PL/SQL
    block.You can break it and create a package and declare
    refcursor type and function in that as well.
    DECLARE
    -- Declare generic cursor type
    TYPE gencur_type IS REF CURSOR ;
    -- Declare generic cursor varaible
    gencur gencur_type;
    -- Declare record type
    TYPE rec_type IS RECORD(descr emp.ename%type) ;
    -- Declare record type variable
    rec rec_type;
    --This how you declare a local function that returns gencrtype
    data set
    --This function is called in main block
    FUNCTION call_refcur return gencur_type
    AS
              rr gencur_type;
    BEGIN
         OPEN rr FOR SELECT descr FROM emp;
         RETURN rr;
    END;-- end of local function
    -- Main block begins here
    BEGIN
    -- Call the local function so that gencur will have
    -- the data set returned by select statement
    gencur:= call_refcur;
    -- Open a loop to test the stuff
    LOOP
         FETCH gencur INTO rec;
         EXIT WHEN gencur%NOTFOUND;
         null;
         dbms_output.put_line(rec.ename);
    END LOOP;
    END;
    Regards,
    Sridhar

  • Redirect the refcursor output of an SP to a table ?

    hi.
    i have an SP which returns a refcursor. now what i need is to get this output to a table so that i can manupulate the data.
    this is how i executed the table
    var a refcursor
    exec packagename.spname(:a,'inputchar');
    print :a;
    please help.
    i tried create table temp as select * from :a
    and
    create table temp as select * from table (cast a as a)
    but both didnt work..
    what am i missing here ????

    novicedba wrote:
    the SP is not mine. so i cannot alter it.So? That does not make something less wrong.
    suppose the refursor returns itemcode, purchase_time, price. and details of 100+ items are returning in thi refcursor. what i need is first to get the results. and then filter it only to view detaild of one item. Why? That cursor does work (in the SQL engine) to find the relevant rows (using indexes and/or tables reading data blocks). It does +"x"+ amount of work to output the results for that SQL select statement.
    Now you want to filter, in PL/SQL or another client language, the output of that cursor. That filtering should be done by the SQL engine - as it is best suited for doing that work. And the workload of +"x"+ that was needed, can now be +"x/2"+ as a result - as the filtering and elimination of columns not needed from the SQL projection can significantly decrease the workload and increase performance.
    So what benefits are there to filter the output of a cursor? NONE! There are no benefits. Not a single one.
    this is why i need to get the Output into a table.The cursor returns data from the SQL engine. This data needs to be pushed from the SGA db buffer cache all the way to the client language. In the case of PL/SQL, into the private heap space of the process (called the PGA).
    Then you take that very same data, create an insert SQL cursor, and send that data back to the SQL engine to be inserted.
    So what benefits are there pushing and pulling SQL data like this across memory and process and even platform boundaries, when the both the read data and write data processes could have been done as a SQL "+insert .. select+" cursor? NONE! There are no benefits. Not a single one.
    (no wonder this sounds like TSQL coz i am more familiar to TSQL than PL ;) (irrelevant stuff) )Treating PL/SQL like TSQL 'cause your are "familiar" with TSQL is, bluntly put, idiotic. PL/SQL is not TSQL. Oracle is not MS-SQL Server.
    if i am going for a cast.. what should i do ?I would go instead for the manuals.. and educate myself on the concepts and fundamentals of the product and languages I'm using. And design and write robust and performant and flexible and scalable code.

  • Doubt in Overloading Concept in Packages

    Hi,
    I have two Stored Procedures are inside a package
    sp_mem(mCursor REFCURSOR Datatype,MemberId INTEGER);
    sp_mem(mCursor REFCURSOR Datatype, mEmailId INTEGER);
    In the Above Procedures if the second Parameter is Member Id then the first SP will be executed.
    In the Above Procedures if the Second Parameter is MemEmailId then the Second SP will be Executed.
    This is the normal OverLoading Concept inside the package. But for me, i am returning the Recordset using a RefCursor.
    I just want to know it is possible for returning the recordset using ref cursor with the overloading concept for both the SP.
    Thanks,
    Murali.V

    Hello
    You need to be careful with this type of overloading. Overloading is generally based around the position and data types of the parameters being supplied which are used to identify the "signature" of the particular procedure to call i.e.
    sp_myproc(ref cursor, integer)
    sp_myproc(ref cursor, date)
    sp_myproc(ref cursor, varchar2)
    sp_myproc(ref cursor, varchar2, integer)
    etc etc
    When you have 2 procedures that have the same signature, unless you specify the name of the parameter, there is no way to determine which procedure to call:
    tylerd@DEV2> CREATE OR REPLACE PACKAGE pkg_test_overload
      2  IS
      3
      4     PROCEDURE sp_mem(mCursor sys_refcursor,MemberId INTEGER);
      5     PROCEDURE sp_mem(mCursor sys_refcursor, mEmailId INTEGER);
      6
      7  END;
      8  /
    Package created.
    tylerd@DEV2>
    tylerd@DEV2> CREATE OR REPLACE PACKAGE BODY pkg_test_overload
      2  IS
      3
      4     PROCEDURE sp_mem(mCursor sys_refcursor,MemberId INTEGER)
      5     IS
      6
      7     BEGIN
      8
      9             NULL;
    10
    11     END;
    12
    13     PROCEDURE sp_mem(mCursor sys_refcursor, mEmailId INTEGER)
    14     IS
    15
    16     BEGIN
    17
    18             NULL;
    19
    20     END;
    21
    22  END;
    23  /
    Package body created.
    Package body created.
    tylerd@DEV2> var mycursor refcursor
    tylerd@DEV2> var memberid number
    tylerd@DEV2> exec pkg_test_overload.sp_mem(:mycursor,:memberid)
    BEGIN pkg_test_overload.sp_mem(:mycursor,:memberid); END;
    ERROR at line 1:
    ORA-06550: line 1, column 7:
    PLS-00307: too many declarations of 'SP_MEM' match this call
    ORA-06550: line 1, column 7:
    PL/SQL: Statement ignored
    tylerd@DEV2> exec pkg_test_overload.sp_mem(:mycursor,MemberId=>:memberid)
    PL/SQL procedure successfully completed.
    tylerd@DEV2> exec pkg_test_overload.sp_mem(:mycursor,mEmailId=>:memberid)
    PL/SQL procedure successfully completed.To me, using named notation with overloading kind of defeats part of the objective...I'm not saying it's completely wrong, as sometimes I guess it's unavoidable, but I'd review the design carefully :-)
    HTH
    David
    Message was edited by:
    David Tyler
    Oops, copied the wrong bit of the output! :-)

  • WHEN TO USE SYS_REFCURSOR AND WHEN NOT TO USE REFCURSOR

    SYS_REFCURSOR is a Weakly Defined Cursor
    DECLARE emp_refcur SYS_REFCURSOR;
    when this is so simple
    why this
    DECLARE TYPE emp_cur_type IS REF CURSOR RETURN emp%ROWTYPE; my_rec emp_cur_type; ?
    Can anyone explain in what situations we should prefer among these ..when both can give same result set .

    > WHEN TO USE SYS_REFCURSOR AND WHEN NOT TO USE REFCURSOR
    When the requirements define that one is better suited than the other.
    There are no hard and fast rules about when to use a specific tool. There are however basic concepts of what the purpose of the tool is, and what typical problems the tool can address.
    Ref cursors in PL/SQL.. usually not the best of ideas. Ref cursors are designed for client-server processing.
    1) The client makes a request for data/information.
    2) PL applies the back-end server logic and construct a SQL statement for the client.
    3) PL passes the SQL to the SQL engine where it is parsed and a SQL cursor created.
    4) PL passes a reference handle to SQL cursor back to the client
    5) The client can now fetch the rows output from the cursor.
    Advantages.
    - The client does not need to know SQL, db structures, business logic, etc
    - The PL code can be improved, modified, new business logic added, without even touching a single byte of client code
    So what are the advantages where the "client" in the above is another PL/SQL program? None really.
    A "real" client (an external one like Java, C#, Delphi, etc) can receive the ref cursor handle and dynamically at run-time determine the projection (output) of the cursor.
    PL code cannot (unless using the latest 11g features). In PL code, a ref cursor is actually implemented as a DBMS_SQL cursor. A DBMS_SQL cursor is to PL code what ref cursor is to Java/C#/etc.
    So whether you define a strongly typed or weakly typed ref cursor in PL/SQL code... typical response is "so what?" as ref cursors are not really intended for PL code. Not that there are exceptions - they do come in handy at times.. but as exceptions to the rule.
    So my response is "so what?" - it is more important to *correctly" chose what type of client cursor data type you want to use to interact with the back-end SQL cursor. Once that decision has been made (based on technical sound logic), then one can look at  (minor) issues such as weak vs. strong ref cursors.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               

  • Free goods concept in STO

    hi all,
    i have an issue regarding free goods for STO betn plants.
    our concept is to give free goods for ex- 10 out of 100 are free goods.
    when i am creating a po with item catagory U, the free goods indicator is become vanice. so i am unable to process this free goods.
    so if any settings is thr , then pls let me know.
    regards,
    susanta

    hi
    ru selling ur goods to ur plant?
    in sto ur not selling the material to ur plant
    so the issue of free goods is not there
    thats why u cant see any kind of basic cost condition in that
    as the material is transfer from one plant to another the inventory changes and so the the price in material master is get updated for the another plznt
    refer following docs
    with delivery
    http://help.sap.com/bp_blv1600/V5600/BBLibrary/HTML/134_EN_IN.htm
    without  delivery
    http://help.sap.com/bp_blv1600/V5600/BBLibrary/HTML/135_EN_IN.htm
    hope it clears
    regards
    kunal
    award if helpful

  • Concept of free –m command in Linux

    I wanted to know the concept of free –m command as there are different rows of Mem, -/+ buffers/cache & Swap in the output. As an example, it is showing 195 as free Mem in my server but 13850 in the free section of the -/+ buffers/cache. The output needs in depth knowledge of the different parameters of the command.
    I hope, my question is clear.
    Please revert with the reply to my query.
    Regards

    This is my understanding. used and free column in line 2 can be used to find out total used and free memory for applications
    [oracle@test ~]$ free
    total used free shared buffers cached
    Mem: 264122724 253692112 10430612 0 2074864 178696468
    -/+ buffers/cache: 72920780 191201944
    Swap: 8388600 0 8388600
    select 264122724/1024/1024 "Total RAM" FROM DUAL; (264122724 ---from line 1 Mem)
    Total RAM
    251.887058
    select (253692112-(2074864+178696468)) "used for applications" from dual; (used from line 1 - (buffers + cached) from line 1)
    used for applications
    --------------------- (matches with used from line 2)
    72920780
    select 10430612+2074864+178696468 "total free for applications" from dual;
    total free for applications
    191201944 (matches with free from line 2)
    Edited by: vlethakula on Jan 17, 2013 7:18 AM

  • HR-ABAP-Infotypes concept

    Hi Masters,
                           Can you please let me know the perfect reason for infotypes concept in HR-ABAP.
    1 Why we are using infotypes and exactly what is purpose?
    2.Why we are using LDB's why cannot we extract data directly from database tables?
    3.Can you please give me clear explanations about these infotypes.

    Hi
    Infotype(s) are used in the Personnel Management (PA) module primarily. This is where personnel master data is stored. Data is grouped according to subject matter. The Human Resources component aims to enable the user to process employee data in an effective structure in accordance with business requirements. The data structure of infotypes mirrors a logical set of data records. Infotypes can be identified by their four-digit keys, for example, the Addresses infotype (0006). To facilitate reporting on past employee data, infotypes can be saved for specific periods.
    Some people use the term HR ABAP to describe the method of managing the infotype data. Typically HR logical databases are used which offers more secure methods of accessing the infotype data. Once the infotypes are declared, you can use standard macros to access the data. Table TRMAC holds the macro name and the code behind it. This makes developing HR programs much quicker and easy to turn around.
    HR uses INFOTYPES instead of tables.
    There are different sub modules exist in HR.
    For Personal Admn the Infotypes start with PA0000 to PA1999
    Time Related Infotypes start with PA2000 to PA2999.
    Orgn related Infotypes start with HRP1000 to HRP1999.
    All custom developed infotypes stsrat with PA9000 onwards.
    In payroll processing we use Clusters like PCL1,2,3 and 4.
    Instead of Select query we use PROVIDE and ENDPROVIDE..
    You have to assign a Logical Database in the attributes PNP.
    Go through the SAp doc for HR programming and start doing.
    http://www.sapdevelopment.co.uk/hr/hrhome.htm
    See:
    http://help.sap.com/saphelp_46c/helpdata/en/4f/d5268a575e11d189270000e8322f96/content.htm
    http://help.sap.com/saphelp_47x200/helpdata/en/bb/bdb041575911d189240000e8323d3a/frameset.htm
    see this link you would get information about types of infotypes
    Logical databases are special ABAP programs that retrieve data and make it available toapplication programs. The most common use of logical databases is still to read data fromdatabase tables by linkin them to executable ABAP programs.
    Logical databases contain Open SQL statements that read data from the database.You do not therefore need to use SQL in your own programs. The logical database reads theprogram, stores them in the program if necessary, and then passes them line by line to theapplication program or the function module LDB_PROCESS using an interface work area .
    For further info
    check link http://help.sap.com/saphelp_nw70/helpdata/en/9f/db9b5e35c111d1829f0000e829fbfe/frameset.htm
    1. A logical database is in fact
    a program only.
    2. This LDB provides two main things :
    a) a pre-defined selection screen
    which handles all user inputs and validations
    b) pre defined set of data
    based upon the user selection.
    3. So we dont have to worry about from
    which tables to fetch data.
    4. Moreover, this LDB Program,
    handles all user-authorisations
    and is efficient in all respects.
    5. tcode is SLDB.
    /people/srivijaya.gutala/blog/2007/03/05/why-not-logical-databases
    <b>REward fi suefull</b>

  • Java package concept in ABAP Objects

    Hi, just a question on grouping of classes in ABAP Objects.
    In Java, you can group classes by "package" to avoid
    namespace collision, my question, in ABAP Objects, how
    do you group classes to avoid namespace collision?
    I know that there is package concept in SAP/ABAP but it
    is different concept in Java.
    Thanks in advanced for your reply.

    Hello One and Lonley,
    the package concept in ABAP and Java is quite different. In java the package name is part of the development object in ABAP not. So any class pool name is global unique. In combination with the restriction on 30 chars this leads often to somehow cryptic names.
    The only way to escape this somehow is the excessive use of local classes. That mean classes defined within main programs. If you are on 7.00 you may check FuGr SAPLSAUNIT_TREE_CTRL_LISTENER for this technique.
    Best Regards
      klaus

  • Help needed Displaying ALV  Secondary list without using oops concept

    Hi Experts
    Help needed Displaying ALV  Secondary list without using oops concept.
    its urgent
    regds
    rajasekhar

    hi chk this code
    ******************TABLES DECLARATION*****************
    TABLES : VBAP,MARA.
    *****************TYPE POOLS**************************
    TYPE-POOLS : SLIS.
    ****************INTERNAL TABLES**********************
    DATA : BEGIN OF IT_VBAP OCCURS 0,
    VBELN LIKE VBAP-VBELN, "SALES DOCUMENT
    POSNR LIKE VBAP-POSNR, "SALES DOCUMENT ITEM
    MATNR LIKE VBAP-MATNR, "MATERIAL NUMBER
    END OF IT_VBAP.
    ****************TEMPORARY VARIABLES******************
    DATA : V_VBELN LIKE VBAP-VBELN."SALES DOCUMENT
    DATA : V_MTART LIKE MARA-MTART. "MATERIAL TYPE
    *****************FIELD CATALOG***********************
    DATA : IT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
           WA_FIELDCAT TYPE SLIS_FIELDCAT_ALV.
    ****************LAYOUT*******************************
    DATA : WA_LAYOUT TYPE SLIS_LAYOUT_ALV.
    ***************VARIANT*******************************
    DATA : G_VARIANT LIKE DISVARIANT.
    ****************SAVE*********************************
    DATA : G_SAVE(1) TYPE C.
    *****************EVENTS******************************
    DATA : XS_EVENTS TYPE SLIS_ALV_EVENT,
           G_EVENTS TYPE SLIS_T_EVENT.
    ******************PF STATUS**************************
    DATA : PF_STATUS TYPE SLIS_FORMNAME VALUE 'SET_PF_STATUS'.
    ******************USER COMMAND************************
    DATA : USER_COMMAND TYPE SLIS_FORMNAME VALUE 'SET_USER_COMMAND',
           R_UCOMM LIKE SY-UCOMM.
    ****************SELECTION SCREEN************************
    SELECT-OPTIONS : S_VBELN FOR VBAP-VBELN.
    ***************AT SELECTION SCREEN*********************
    AT SELECTION-SCREEN.
      PERFORM VALIDATE.
    **************START-OF-SELECTION**************************
    START-OF-SELECTION.
      PERFORM GET_DETAILS.
      PERFORM FIELDCAT.
      PERFORM LAYOUT.
      PERFORM VARIANT.
      PERFORM SAVE.
      PERFORM EVENTS.
      PERFORM ALV_DISPLAY.
    *********************FORMS*******************************************
    *&      Form  validate
          text
    -->  p1        text
    <--  p2        text
    FORM VALIDATE .
      SELECT SINGLE VBELN
                    FROM VBAP
                    INTO V_VBELN
                    WHERE VBELN IN S_VBELN.
      IF SY-SUBRC <> 0.
        MESSAGE E000 WITH 'enter valid vbeln'.
      ENDIF.
    ENDFORM.                    " validate
    *&      Form  get_details
          text
    -->  p1        text
    <--  p2        text
    FORM GET_DETAILS .
      SELECT VBELN
             POSNR
             MATNR
             FROM VBAP
             INTO TABLE IT_VBAP
             WHERE VBELN IN S_VBELN.
      IF SY-SUBRC <> 0.
        MESSAGE E000 WITH 'no details found'.
      ENDIF.
    ENDFORM.                    " get_details
    *&      Form  fieldcat
          text
    -->  p1        text
    <--  p2        text
    FORM FIELDCAT .
      WA_FIELDCAT-TABNAME = 'IT_VBAP'.
      WA_FIELDCAT-FIELDNAME = 'VBELN'.
      WA_FIELDCAT-OUTPUTLEN = 10.
      WA_FIELDCAT-SELTEXT_L = 'SALES DOC'.
      APPEND WA_FIELDCAT TO IT_FIELDCAT.
      CLEAR WA_FIELDCAT.
      WA_FIELDCAT-TABNAME = 'IT_VBAP'.
      WA_FIELDCAT-FIELDNAME = 'POSNR'.
      WA_FIELDCAT-OUTPUTLEN = 6.
      WA_FIELDCAT-SELTEXT_L = 'ITEM'.
      APPEND WA_FIELDCAT TO IT_FIELDCAT.
      CLEAR WA_FIELDCAT.
      WA_FIELDCAT-TABNAME = 'IT_VBAP'.
      WA_FIELDCAT-FIELDNAME = 'MATNR'.
      WA_FIELDCAT-OUTPUTLEN = 18.
      WA_FIELDCAT-SELTEXT_L = 'MATERIAL NO'.
      APPEND WA_FIELDCAT TO IT_FIELDCAT.
      CLEAR WA_FIELDCAT.
    ENDFORM.                    " fieldcat
    *&      Form  LAYOUT
          text
    -->  p1        text
    <--  p2        text
    FORM LAYOUT .
      WA_LAYOUT-ZEBRA = 'X'.
    ENDFORM.                    " LAYOUT
    *&      Form  VARIANT
          text
    -->  p1        text
    <--  p2        text
    FORM VARIANT .
      CLEAR G_VARIANT.
      G_VARIANT-REPORT = SY-REPID.
    ENDFORM.                    " VARIANT
    *&      Form  SAVE
          text
    -->  p1        text
    <--  p2        text
    FORM SAVE .
      CLEAR G_SAVE.
      G_SAVE = 'A'.
    ENDFORM.                    " SAVE
    *&      Form  EVENTS
          text
    -->  p1        text
    <--  p2        text
    FORM EVENTS .
      CLEAR XS_EVENTS.
      XS_EVENTS-NAME = SLIS_EV_TOP_OF_PAGE.
      XS_EVENTS-FORM = 'TOP_OF_PAGE'.
      APPEND XS_EVENTS TO G_EVENTS.
    ENDFORM.                    " EVENTS
    *&      Form  TOP_OF_PAGE
          text
    FORM TOP_OF_PAGE.
      WRITE :/ ' INTELLI GROUP'.
    ENDFORM.                    "TOP_OF_PAGE
    *&      Form  ALV_DISPLAY
          text
    -->  p1        text
    <--  p2        text
    FORM ALV_DISPLAY .
      CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
       EXPORTING
      I_INTERFACE_CHECK              = ' '
      I_BYPASSING_BUFFER             =
      I_BUFFER_ACTIVE                = ' '
         I_CALLBACK_PROGRAM             = SY-REPID
         I_CALLBACK_PF_STATUS_SET       = PF_STATUS
         I_CALLBACK_USER_COMMAND        = USER_COMMAND
      I_STRUCTURE_NAME               =
         IS_LAYOUT                      = WA_LAYOUT
         IT_FIELDCAT                    = IT_FIELDCAT
      IT_EXCLUDING                   =
      IT_SPECIAL_GROUPS              =
      IT_SORT                        =
      IT_FILTER                      =
      IS_SEL_HIDE                    =
      I_DEFAULT                      = 'X'
         I_SAVE                         = G_SAVE
         IS_VARIANT                     = G_VARIANT
         IT_EVENTS                      = G_EVENTS
      IT_EVENT_EXIT                  =
      IS_PRINT                       =
      IS_REPREP_ID                   =
      I_SCREEN_START_COLUMN          = 0
      I_SCREEN_START_LINE            = 0
      I_SCREEN_END_COLUMN            = 0
      I_SCREEN_END_LINE              = 0
    IMPORTING
      E_EXIT_CAUSED_BY_CALLER        =
      ES_EXIT_CAUSED_BY_USER         =
        TABLES
          T_OUTTAB                       = IT_VBAP
       EXCEPTIONS
         PROGRAM_ERROR                  = 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.
    ENDFORM.                    " ALV_DISPLAY
    *&      Form  SET_PF_STATUS
          text
    FORM SET_PF_STATUS USING EXTAB TYPE SLIS_T_EXTAB.
      SET PF-STATUS 'Z50651_PFSTATUS' EXCLUDING EXTAB.
    ENDFORM.                    "SET_PF_STATUS
    *&      Form  SET_USER_COMMAND
          text
    FORM SET_USER_COMMAND USING R_UCOMM
                                RS_SELFIELD TYPE SLIS_SELFIELD.
      CASE R_UCOMM.
        WHEN 'DC'.
          READ TABLE IT_VBAP INDEX RS_SELFIELD-TABINDEX.
          IF SY-SUBRC = 0.
            SELECT SINGLE MTART
                          FROM MARA
                          INTO V_MTART
                          WHERE MATNR = IT_VBAP-MATNR.
            IF SY-SUBRC <> 0.
       MESSAGE E000 WITH 'NO MATERIAL DESCRIPTION FOR SELECTED MATERIAL NO'.
            ELSE.
              WRITE :/ 'MATERIAL NO :',IT_VBAP-MATNR.
              WRITE :/ 'MATERIAL TYPE :' , V_MTART.
            ENDIF.
          ENDIF.
        WHEN 'BACK'.
          LEAVE TO SCREEN 0.
        WHEN 'EXIT'.
          LEAVE TO SCREEN 0.
        WHEN 'CLOSE'.
          CALL TRANSACTION 'SE38'.
      ENDCASE.
    REPORT  Z_ALV_INTERACTIVE  MESSAGE-ID ZMSG_50651
                                    LINE-SIZE 100
                                    LINE-COUNT 60
                                    NO STANDARD PAGE HEADING.
    ******************TABLES DECLARATION*****************
    TABLES : VBAP,MARA.
    *****************TYPE POOLS**************************
    TYPE-POOLS : SLIS.
    ****************INTERNAL TABLES**********************
    DATA : BEGIN OF IT_VBAP OCCURS 0,
    VBELN LIKE VBAP-VBELN, "SALES DOCUMENT
    POSNR LIKE VBAP-POSNR, "SALES DOCUMENT ITEM
    MATNR LIKE VBAP-MATNR, "MATERIAL NUMBER
    END OF IT_VBAP.
    ****************TEMPORARY VARIABLES******************
    DATA : V_VBELN LIKE VBAP-VBELN."SALES DOCUMENT
    DATA : V_MTART LIKE MARA-MTART. "MATERIAL TYPE
    *****************FIELD CATALOG***********************
    DATA : IT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
           WA_FIELDCAT TYPE SLIS_FIELDCAT_ALV.
    ****************LAYOUT*******************************
    DATA : WA_LAYOUT TYPE SLIS_LAYOUT_ALV.
    ***************VARIANT*******************************
    DATA : G_VARIANT LIKE DISVARIANT.
    ****************SAVE*********************************
    DATA : G_SAVE(1) TYPE C.
    *****************EVENTS******************************
    DATA : XS_EVENTS TYPE SLIS_ALV_EVENT,
           G_EVENTS TYPE SLIS_T_EVENT.
    ******************PF STATUS**************************
    DATA : PF_STATUS TYPE SLIS_FORMNAME VALUE 'SET_PF_STATUS'.
    ******************USER COMMAND************************
    DATA : USER_COMMAND TYPE SLIS_FORMNAME VALUE 'SET_USER_COMMAND',
           R_UCOMM LIKE SY-UCOMM.
    ****************SELECTION SCREEN************************
    SELECT-OPTIONS : S_VBELN FOR VBAP-VBELN.
    ***************AT SELECTION SCREEN*********************
    AT SELECTION-SCREEN.
      PERFORM VALIDATE.
    **************START-OF-SELECTION**************************
    START-OF-SELECTION.
      PERFORM GET_DETAILS.
      PERFORM FIELDCAT.
      PERFORM LAYOUT.
      PERFORM VARIANT.
      PERFORM SAVE.
      PERFORM EVENTS.
      PERFORM ALV_DISPLAY.
    *********************FORMS*******************************************
    *&      Form  validate
          text
    -->  p1        text
    <--  p2        text
    FORM VALIDATE .
      SELECT SINGLE VBELN
                    FROM VBAP
                    INTO V_VBELN
                    WHERE VBELN IN S_VBELN.
      IF SY-SUBRC <> 0.
        MESSAGE E000 WITH 'enter valid vbeln'.
      ENDIF.
    ENDFORM.                    " validate
    *&      Form  get_details
          text
    -->  p1        text
    <--  p2        text
    FORM GET_DETAILS .
      SELECT VBELN
             POSNR
             MATNR
             FROM VBAP
             INTO TABLE IT_VBAP
             WHERE VBELN IN S_VBELN.
      IF SY-SUBRC <> 0.
        MESSAGE E000 WITH 'no details found'.
      ENDIF.
    ENDFORM.                    " get_details
    *&      Form  fieldcat
          text
    -->  p1        text
    <--  p2        text
    FORM FIELDCAT .
      WA_FIELDCAT-TABNAME = 'IT_VBAP'.
      WA_FIELDCAT-FIELDNAME = 'VBELN'.
      WA_FIELDCAT-OUTPUTLEN = 10.
      WA_FIELDCAT-SELTEXT_L = 'SALES DOC'.
      APPEND WA_FIELDCAT TO IT_FIELDCAT.
      CLEAR WA_FIELDCAT.
      WA_FIELDCAT-TABNAME = 'IT_VBAP'.
      WA_FIELDCAT-FIELDNAME = 'POSNR'.
      WA_FIELDCAT-OUTPUTLEN = 6.
      WA_FIELDCAT-SELTEXT_L = 'ITEM'.
      APPEND WA_FIELDCAT TO IT_FIELDCAT.
      CLEAR WA_FIELDCAT.
      WA_FIELDCAT-TABNAME = 'IT_VBAP'.
      WA_FIELDCAT-FIELDNAME = 'MATNR'.
      WA_FIELDCAT-OUTPUTLEN = 18.
      WA_FIELDCAT-SELTEXT_L = 'MATERIAL NO'.
      APPEND WA_FIELDCAT TO IT_FIELDCAT.
      CLEAR WA_FIELDCAT.
    ENDFORM.                    " fieldcat
    *&      Form  LAYOUT
          text
    -->  p1        text
    <--  p2        text
    FORM LAYOUT .
      WA_LAYOUT-ZEBRA = 'X'.
    ENDFORM.                    " LAYOUT
    *&      Form  VARIANT
          text
    -->  p1        text
    <--  p2        text
    FORM VARIANT .
      CLEAR G_VARIANT.
      G_VARIANT-REPORT = SY-REPID.
    ENDFORM.                    " VARIANT
    *&      Form  SAVE
          text
    -->  p1        text
    <--  p2        text
    FORM SAVE .
      CLEAR G_SAVE.
      G_SAVE = 'A'.
    ENDFORM.                    " SAVE
    *&      Form  EVENTS
          text
    -->  p1        text
    <--  p2        text
    FORM EVENTS .
      CLEAR XS_EVENTS.
      XS_EVENTS-NAME = SLIS_EV_TOP_OF_PAGE.
      XS_EVENTS-FORM = 'TOP_OF_PAGE'.
      APPEND XS_EVENTS TO G_EVENTS.
    ENDFORM.                    " EVENTS
    *&      Form  TOP_OF_PAGE
          text
    FORM TOP_OF_PAGE.
      WRITE :/ ' INTELLI GROUP'.
    ENDFORM.                    "TOP_OF_PAGE
    *&      Form  ALV_DISPLAY
          text
    -->  p1        text
    <--  p2        text
    FORM ALV_DISPLAY .
      CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
       EXPORTING
      I_INTERFACE_CHECK              = ' '
      I_BYPASSING_BUFFER             =
      I_BUFFER_ACTIVE                = ' '
         I_CALLBACK_PROGRAM             = SY-REPID
       I_CALLBACK_PF_STATUS_SET         = PF_STATUS
         I_CALLBACK_USER_COMMAND        = USER_COMMAND
      I_STRUCTURE_NAME               =
         IS_LAYOUT                      = WA_LAYOUT
         IT_FIELDCAT                    = IT_FIELDCAT
      IT_EXCLUDING                   =
      IT_SPECIAL_GROUPS              =
      IT_SORT                        =
      IT_FILTER                      =
      IS_SEL_HIDE                    =
      I_DEFAULT                      = 'X'
         I_SAVE                         = G_SAVE
        IS_VARIANT                      = G_VARIANT
         IT_EVENTS                      = G_EVENTS
      IT_EVENT_EXIT                  =
      IS_PRINT                       =
      IS_REPREP_ID                   =
      I_SCREEN_START_COLUMN          = 0
      I_SCREEN_START_LINE            = 0
      I_SCREEN_END_COLUMN            = 0
      I_SCREEN_END_LINE              = 0
    IMPORTING
      E_EXIT_CAUSED_BY_CALLER        =
      ES_EXIT_CAUSED_BY_USER         =
        TABLES
          T_OUTTAB                       = IT_VBAP
       EXCEPTIONS
         PROGRAM_ERROR                  = 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.
    ENDFORM.                    " ALV_DISPLAY
    *&      Form  SET_PF_STATUS
          text
    FORM SET_PF_STATUS USING EXTAB TYPE SLIS_T_EXTAB.
      SET PF-STATUS 'STANDARD' EXCLUDING EXTAB.
    ENDFORM.                    "SET_PF_STATUS
    *&      Form  SET_USER_COMMAND
          text
    FORM SET_USER_COMMAND USING R_UCOMM
                                RS_SELFIELD TYPE SLIS_SELFIELD.
      CASE R_UCOMM.
        WHEN 'DC'.
          READ TABLE IT_VBAP INDEX RS_SELFIELD-TABINDEX.
          IF SY-SUBRC = 0.
            SELECT SINGLE MTART
                          FROM MARA
                          INTO V_MTART
                          WHERE MATNR = IT_VBAP-MATNR.
            IF SY-SUBRC <> 0.
       MESSAGE E000 WITH 'NO MATERIAL DESCRIPTION FOR SELECTED MATERIAL NO'.
            ELSE.
              WRITE :/ 'MATERIAL NO :',IT_VBAP-MATNR.
              WRITE :/ 'MATERIAL TYPE :' , V_MTART.
      SUBMIT SLIS_DUMMY WITH P_MATNR EQ IT_VBAP-MATNR
                        WITH P_MTART EQ V_MTART.
            ENDIF.
          ENDIF.
        WHEN 'BACK'.
          LEAVE TO SCREEN 0.
        WHEN 'EXIT'.
          LEAVE TO SCREEN 0.
        WHEN 'CLOSE'.
          CALL TRANSACTION 'SE38'.
      ENDCASE.
    plz reward if useful

  • Problem with refcursor in 11g

    Hello,
    I have a problem with refcursor in a project migrated from 10 to 11g.
    I found this thread from a few years ago that talks about the same problem.
    It has no final answer - is it ok to comment the st.close(); in callStoredFunction in the AMImpl.
    Re: TP4 - View Object with REF CURSOR - SQLException
    Please tell me if the suggested solution on that thread is fine, or ot will cause many unclosed statetements?
    Thank you, Nina

    Hello All,
    I got the solution to the problem.
    I was trying to surround the region component using the Structure pane. But instead drag and drop the strechable components on to the region.
    Ex: Region got expanded 100% if I surround it with PanelStrechLayout with width and height set to 100%. But I didnit find this Panel StrechLayout when I try to surround it using Structure Pane.
    Refer to this: http://www.oracle.com/technology/products/adf/patterns/layoutBestPractices.html
    Thanks,
    Melissa.

  • Show refcursor returned by a PL/SQL function ?

    Is it possible to show the results returned by a
    PL/SQL function that returns a refcursor ?
    In sqlplus it goes like this:
    SQL> variable a refcursor;
    SQL> execute :a := p_front.get_invoice_list;
    PL/SQL procedure successfully completed.
    SQL> print a;
    INVOICE_ID CLIENT_ID INVOICE_D
    101 100 01-APR-06
    100 100 06-APR-06
    If not, this would be on the top of my wishlist...
    By the way: you did a good job on this tool!
    Regards,
    Willem

    Is it possible to show the results returned by a
    PL/SQL function that returns a refcursor ?
    In sqlplus it goes like this:
    SQL> variable a refcursor;
    SQL> execute :a := p_front.get_invoice_list;
    PL/SQL procedure successfully completed.
    SQL> print a;
    INVOICE_ID CLIENT_ID INVOICE_D
    101 100 01-APR-06
    100 100 06-APR-06
    If not, this would be on the top of my wishlist...
    By the way: you did a good job on this tool!
    Regards,
    Willem

  • Having issues with bind variable refcursor

    Hi,
    I have a procedure which returns just the list of employees from the emp table.
    while executing this package, it gives me an error
    Ex:
    sql> variable cur refcursor;
    sql> exec emp.getemplist(:cur);
    error:
    not all variables bound
    Please let me know what is wrong here.
    Thanks
    Manju

    manjukn wrote:
    package is a simple one..
    Exact Oracle version? Works fine on 10.2.0.4.0:
    SQL> create or replace package body emp_pkg is
      2  PROCEDURE getemplist (result_cursor OUT sys_refcursor)
      3  IS
      4  begin
      5  open result_cursor for select * from emp where deptno=10;
      6  end getemplist;
      7  end emp_pkg;
      8  /
    Package body created.
    SQL> variable cur refcursor;
    SQL> exec emp_pkg.getemplist(:cur);
    PL/SQL procedure successfully completed.
    SQL> print cur
         EMPNO ENAME      JOB              MGR HIREDATE         SAL       COMM     DEPTNO
          7782 CLARK      MANAGER         7839 09-JUN-81       2450                    10
          7839 KING       PRESIDENT            17-NOV-81       5000                    10
          7934 MILLER     CLERK           7782 23-JAN-82       1300                    10
    SQL> SY.

  • Need help to modify a report written using Field-Groups Concept. - Part1

    Hello ABAP Experts,
    I need your help to modify the following report with following requirement as I have least knowledge
    about the field-group concept. Thats is the reason, I am pasting the whole code. As it is part of our
    production requirement. I really appreciate your help, If its sent modifying the code required.
    Modification required in the report.
    To allow the sales representatives to see billed shipments and open orders for the current month.
    1) Selection Screen Changes:
    u2022     Add selection by Sales group and Customer group
    u2022     Add sort by:     3. Ship-to / Material
    u2022     Add another selection box
    [ ] Open Orders and Shipments with the current month
    2)      For the new selection box, subtotal sales quantity and delivery quantity.
         If delivered, make the sales quantity zero in the subtotal
    Current report displays, in Selection Screen
    Sales org:
    Person Name:
    Material:
    Plant:
    Sales Office:
    Ship to Name:
    Ship to Number:
    Sorts Report by : 1. Person Name 2. Material
    Check Boxes : 1. Open Orders 2. Delayed Orders.
    report  zorder  LINE-SIZE 170
                      LINE-COUNT 58
                      MESSAGE-ID zv
                      NO STANDARD PAGE HEADING.
    TABLES:
    cdhdr,                                 "Change Doc Header
    cdpos,                                 "Change Doc Item
    kna1,                                  "Customer master
    likp,                                  "Delivery Header
    lips,                                  "Delivery Item
    *lips,                                 "Delivery Item
    zvbpa_lfa1,                            "Vendor Master
    makt,                                  "Material Desc
    t001w,                                 "Plant
    tvkbt,                                 "Sales Office
    tvko,                                  "Sales Organizations
    vbak,                                  "Sales Header
    vbap,                                  "Sales Item
    zvvbak,                                "Sales Hdr - Time calc
    vbup,                                  "Item status
    vbep,                                  "Sales Schedule Line
    vbfa,                                  "Flow documents
    vbpa,                                  "Partners
    vbrk,                                  "Billing Header
    vbrp.                                  "Billing Item
    SELECT-OPTIONS:
      s_vkorg FOR vbak-vkorg OBLIGATORY,
      s_ernam FOR vbak-ernam,
      s_matnr FOR vbap-matnr,
      s_werks FOR vbap-werks,
      s_vkbur FOR vbak-vkbur,
      s_name1 FOR kna1-name1,
      s_kunnr FOR kna1-kunnr.
    SELECTION-SCREEN ULINE.
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 1(49) text-c20.
    PARAMETERS: p_sort TYPE n DEFAULT '1'.
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 19(40) text-022.
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 19(40) text-023.
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 19(40) text-024.
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN COMMENT 19(40) text-070.
    SELECTION-SCREEN ULINE.
    SELECTION-SCREEN BEGIN OF BLOCK b20 WITH FRAME.
    SELECTION-SCREEN BEGIN OF LINE.
    PARAMETERS:p_open AS CHECKBOX DEFAULT 'X'.
    SELECTION-SCREEN COMMENT 5(48) text-072.
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN BEGIN OF LINE.
    PARAMETERS:p_delay AS CHECKBOX DEFAULT 'X'.
    SELECTION-SCREEN COMMENT 5(48) text-073.
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN END OF BLOCK b20.
    DATA:
    vbeln(11),                             "Document number
    cancel_dt TYPE d,                      "Cancellation Date
    BEGIN OF tabkey,                       "Tabkey
    mandant LIKE sy-mandt,
    vbeln LIKE vbap-vbeln,
    posnr LIKE vbap-posnr,
    END OF tabkey,
    name1_sp1 LIKE lfa1-name1,             "Sales Carrier Name
    name1_sp2 LIKE lfa1-name1,             "Delivery Carrier Name
    datum-1 TYPE d,                        "Current Dt Less 1
    datum-14 TYPE d,                       "Current Dt Less 14
    datum-90 TYPE d,                       "Current Dt Less 90
    rpt_hdr1(170),                         "Report Header 1
    rpt_hdr2(170),                         "Report Header 2
    rpt_hdr3(170),                         "Report Header 3
    cb_hdr1(170),                          "Control Break Header 1
    line_pos1 TYPE i,                      "Line Print Position HDR1
    line_pos2 TYPE i,                      "Line Print Position HDR2
    line_pos3 TYPE i,                      "Line Print Position DET2
    status,                                "Order Status
    open,                                  "Open Order
    delayed VALUE 'D',                     "Delayed Order
    v_comp(30).                            "Company Text Field
    DATA: v_flagh2.  " Flag for header 2 & 3
    DATA: ls_comwa LIKE vbco6. "Structure for flow information
    DATA: t_vbfa_tab TYPE STANDARD TABLE OF vbfa WITH HEADER LINE."Itab
    for flow information
    data: g_trans_id type vttk-tdlnr. "get transport id from flow
      information
      data  v_sales_org_cpimex type vkorg value  '3300'.
      FIELD-GROUPS:
      header,
      order.
      INSERT
      status                                 "Status
      vbak-vkbur                             "Sales Office
      vbak-ernam                             "Created By
      kna1-kunnr                             "Customer
      kna1-name1                             "Customer Name
      vbap-matnr                             "Material
      vbap-werks                             "Plant
      vbep-lddat                             "Load Dt
      vbap-vbeln                             "Sales Document
      INTO header.
      INSERT
      kna1-ort01                             "City
      kna1-regio                             "Region
      likp-traid                             "Transport ID
      lips-vbeln                             "Delivery Document
      lips-ntgew                             "Net Wt
      lips-gewei                             "Unit of Weight
      vbap-kwmeng                            "Order Qty
      vbap-vrkme                             "Sales Unit
      vbak-bstnk                             "Customer PO
      vbak-erdat                             "Sales Create Dt
      vbak-ihrez                             "PO Release
      vbak-vdatu                            "Req Delivery Dt
      vbak-vzeit                            "Req Delivery Time
      vbfa-vbeln                             "Goods issue doc
      vbrk-vbeln                             "Billing Document
      name1_sp1                              "Sales Carrier
      name1_sp2                              "Delivery Carrier
      INTO order.
    INITIALIZATION.
    AT SELECTION-SCREEN.
      IF NOT p_sort BETWEEN 1 AND 2.
        MESSAGE e022 WITH p_sort.
      ENDIF.
    * Report 1 or more of cancelled, delayed or open
      IF p_open IS INITIAL AND
         p_delay IS INITIAL.
        MESSAGE e023.
      ENDIF.
    START-OF-SELECTION.
    * Load Company Name
      WRITE 'XYZ INC'(000) TO v_comp.
    * Calculate Date Range
      datum-1 = sy-datum - 1.
      datum-14 = sy-datum - 14.
      datum-90 = sy-datum - 90.
    * Compose Parameter Header
      PERFORM parm_hdr.
    ** Compose Report Header
      v_flagh2 = 1.
      PERFORM data_selection.
    END-OF-SELECTION.
    * Determine Sort
      CASE p_sort.
        WHEN 1.
          SORT BY status vbak-ernam kna1-name1 kna1-kunnr
                  vbep-lddat vbap-vbeln.
        WHEN 2.
          SORT BY status vbap-matnr vbap-werks vbep-lddat
                  vbap-vbeln.
      ENDCASE.
      LOOP.
        AT NEW status.
          CASE status.
            WHEN delayed.
              WRITE 'Delayed Orders'(061) TO rpt_hdr1.
            WHEN OTHERS.
              WRITE 'Open Orders'(062) TO rpt_hdr1.
          ENDCASE.
          NEW-PAGE.
        ENDAT.
        AT NEW vbak-ernam.
          IF p_sort = 1.
            CLEAR cb_hdr1.
            WRITE 'CAA:'(064) TO cb_hdr1.
            WRITE vbak-ernam TO cb_hdr1+5.
            NEW-PAGE.
          ENDIF.
        ENDAT.
        AT NEW vbap-matnr.
          IF p_sort = 2.
            CLEAR makt.
            SELECT SINGLE * FROM makt
                WHERE spras = sy-langu AND
                      matnr = vbap-matnr.
            CLEAR cb_hdr1.
            WRITE 'Material:'(042) TO cb_hdr1.
            WRITE vbap-matnr TO cb_hdr1+10.
            WRITE makt-maktx TO cb_hdr1+21.
            NEW-PAGE.
          ENDIF.
        ENDAT.
        AT NEW vbap-werks.
          AT order.
            RESERVE 3 LINES.
            SKIP 1.
            NEW-LINE.
    * Indicate new open item
            WRITE vbap-vbeln TO vbeln.
    * Find Transport ID
    * Fill the structure LS_COMWA
            ls_comwa-mandt = sy-mandt.
            ls_comwa-vbeln = vbap-vbeln.
            CALL FUNCTION 'RV_ORDER_FLOW_INFORMATION'
              EXPORTING
                comwa    = ls_comwa
              TABLES
                vbfa_tab = t_vbfa_tab.
            IF sy-subrc EQ 0.
              READ TABLE t_vbfa_tab WITH KEY vbtyp_n = '8'.
              IF sy-subrc EQ 0.
                SELECT SINGLE tdlnr INTO g_trans_id
                  FROM vttk WHERE tknum = t_vbfa_tab-vbeln.
                CONDENSE g_trans_id.
              ENDIF.
            ENDIF.
            IF vbak-erdat >= datum-1.
              vbeln+10 = 'N'.
            ENDIF.
            CASE p_sort.
              WHEN 1.
                WRITE 1 vbak-vkbur.
                WRITE 8 kna1-name1.
                WRITE 44 vbeln.
                WRITE 56 vbap-matnr.
                WRITE:
                    75 vbap-kwmeng LEFT-JUSTIFIED,
                     vbap-vrkme,
                    100 vbak-bstnk,
                     vbak-ihrez,
                    134 vbak-vdatu,
                        vbak-vzeit,
                    154 vbep-lddat.
                WRITE 166 vbap-werks.
                NEW-LINE.
                WRITE:
                  5  kna1-ort01,
                  41 kna1-regio.
                IF name1_sp2 IS INITIAL.
                  WRITE:
                    45 name1_sp1,
                ELSE.
                  WRITE 45 name1_sp2.
                  IF name1_sp1 = name1_sp2.
                    WRITE ' '.
                  ELSE.
                    WRITE '*'.
                  ENDIF.
                ENDIF.
                IF  vbak-vkorg =  v_sales_org_cpimex .
                  WRITE  81 g_trans_id.
                ELSE.
                  WRITE  81 likp-traid.
                ENDIF.
                WRITE:
                  102 lips-vbeln,
                  115 lips-ntgew NO-ZERO LEFT-JUSTIFIED,
                      lips-gewei,
                  140 vbfa-vbeln,
                  152 vbrk-vbeln.
              WHEN 2.
                WRITE 1 vbak-ernam.
                WRITE 14 vbak-vkbur.
                WRITE 21 kna1-name1.
                WRITE 57 vbeln.
                WRITE:
                    69 vbap-kwmeng LEFT-JUSTIFIED,
                        vbap-vrkme,
                    92 vbak-bstnk,
                        vbak-ihrez,
                    126 vbak-vdatu,
                      vbak-vzeit,
                    146 vbep-lddat.
                WRITE 162 vbap-werks.
                NEW-LINE.
                WRITE:
                  5  kna1-ort01,
                  41 kna1-regio.
                IF name1_sp2 IS INITIAL.
                  WRITE:
                    45 name1_sp1,
                ELSE.
                  WRITE 45 name1_sp2.
                  IF name1_sp1 = name1_sp2.
                    WRITE ' '.
                  ELSE.
                    WRITE '*'.
                  ENDIF.
                ENDIF.
                IF  vbak-vkorg =  v_sales_org_cpimex .
                  WRITE  81 g_trans_id.
                ELSE.
                  WRITE  81 likp-traid.
                ENDIF.
                WRITE:
                   102 lips-vbeln,
                   115 lips-ntgew NO-ZERO LEFT-JUSTIFIED,
                       lips-gewei,
                   140 vbfa-vbeln,
                   152 vbrk-vbeln.
            ENDCASE.
          ENDAT.
        ENDLOOP.
    *       FORM PARM_HDR                                                 *
    FORM parm_hdr.
      WRITE 'Program selections'(101) TO rpt_hdr1.
      WRITE 'Sign'(102) TO rpt_hdr1+29.
      WRITE 'Option'(103) TO rpt_hdr1+34.
      WRITE 'From'(104) TO rpt_hdr1+41.
      WRITE 'To'(105) TO rpt_hdr1+77.
    ENDFORM.                    "PARM_HDR
    *       FORM RPT_HDR                                                  *
    FORM rpt_hdr.
      CASE p_sort.
        WHEN 1.               "When sort by CAA
          WRITE 1'SOff'(066).
          WRITE 8'Customer'(009).
          WRITE 44'Sales Doc'(010).
          WRITE 56'Material'(031).
          WRITE 75'Sales Qty'(011).
          WRITE 100'Customer PO'(012).
          WRITE 134'Req.Del.Dt & Tm'(014).
          WRITE 154'Load Dt'(015).
          WRITE 166'Plnt'(016).
          NEW-LINE.
          WRITE 5'City'(017).
          WRITE 41'Reg'(069).
          WRITE 45'Carrier'(018).
          WRITE 81'Transport ID'(019).
          WRITE 102'Dlvry Doc'(021).
          WRITE 115'Dlvry Qty'(025).
          WRITE 140'PGI Doc'(026).
          WRITE 152'Billng Doc'(027).
        WHEN 2.               "When sort by Material
          WRITE 1'Created By'(008).
          WRITE 14'SOff'(066).
          WRITE 21'Customer'(009).
          WRITE 57'Sales Doc'(010).
          WRITE 69'Sales Qty'(011).
          WRITE 92'Customer PO'(012).
          WRITE 126'Req.Del.Dt & Tm'(014).
          WRITE 146'Load Dt'(015).
          WRITE 162'Plnt'(016).
          NEW-LINE.
          WRITE 5'City'(017).
          WRITE 41'Reg'(069).
          WRITE 45'Carrier'(018).
          WRITE 81'Transport ID'(019).
          WRITE 102'Dlvry Doc'(021).
          WRITE 115'Dlvry Qty'(025).
          WRITE 140'PGI Doc'(026).
          WRITE 152'Billng Doc'(027).
      ENDCASE.
    ENDFORM.                    "RPT_HDR
    INCLUDE zrpthdri.
    WRITE:
    / rpt_hdr1.
    ULINE.
    IF v_flagh2 <> 0.
      PERFORM rpt_hdr.  "Write secondary header
      ULINE.
    * Control Break Header
      WRITE / cb_hdr1.
    ENDIF.
    Continued in Part-2
    Thanks  a ton in advance.
    Mythili Sharma
    Edited by: Mythili sharma on Mar 30, 2009 3:32 AM
    Edited by: Rob Burbank on Mar 30, 2009 10:46 AM

    Hello ABAP Experts,
    I need your help to modify the following report with following requirement as I have least knowledge about the field-group concept. Thats is the reason, I am pasting the whole code. As it is part of our production requirement. I really appreciate your help, If its sent modifying the code required.
    Modification required in the report.
    To allow the sales representatives to see billed shipments and open orders for the current month.
    1) Selection Screen Changes:
    u2022     Add selection by Sales group and Customer group
    u2022     Add sort by:     5. Ship-to / Material
    u2022     Add another selection box
    [ ] Open Orders and Shipments with the current month
    2)      For the new selection box, subtotal sales quantity and delivery quantity.
         If delivered, make the sales quantity zero in the subtotal
    Current report displays, in Selection Screen
    Sales org:
    Person Name:
    Material:
    Plant:
    Sales Office:
    Ship to Name:
    Ship to Number:
    Sorts Report by :
    1. Person Name
    2. Material
    3. Plant
    4. Sales Office
    Check Boxes :
    1. Open Orders
    2. Delayed Orders
    3.Cancelled Orders
    PLEASE DOWNLOAD THE COMPLETE REPORT FROM THE FOLLOWING LINK
    << Link removed >>
    It would be a great help, If the program is modified according to the requirement and snd it back through send space and send link, even if u send the necessary changes to be done in the report is also appreciable.
    Thanks a ton in adanvce
    Mythili
    I wanted to close this thread as I could not put my question in a proper format. So please reply in the new thread which is posted.
    Edited by: Mythili sharma on Mar 30, 2009 2:16 PM
    Edited by: Rob Burbank on Mar 30, 2009 4:24 PM

  • How to call a procedure with refcursor  from another  plsql unit

    example I created a pkg with the a procedure that returns a REFCURSOR.
    Now I need to call this procedure from another pkg and use the refcursor values in other pkg.
    Help please.......
    PROCEDURE CustomerSite_Get (p_Registry IN VARCHAR2,
    p_CustomerNumber IN VARCHAR2, p_Cursor IN OUT t_cursor);
    PROCEDURE CustomerSite_Get (p_Registry IN VARCHAR2,
    p_CustomerNumber IN VARCHAR2, p_Cursor IN OUT t_cursor)
    IS
    -- 0903: Include BillToName
    BEGIN
    OPEN p_Cursor FOR
         SELECT S.LOCATION CustomerSite, S.SITE_USE_ID CustomerSiteID, C.CUSTOMER_NAME BillToName
         FROM RA_CUSTOMERS C,
    RA_ADDRESSES A,
    RA_SITE_USES S,
    UWA_REGISTRY R,
    UWA_REGISTRY_BILL_TO B
         WHERE C.CUSTOMER_ID = A.CUSTOMER_ID
         AND A.ADDRESS_ID = S.ADDRESS_ID
         AND S.SITE_USE_ID = B.SITE_USE_ID
         AND R.REGISTRY_ID = B.REGISTRY_ID
         AND B.TRIP_BILLING != 'N'
         AND R.DELETE_FLAG != 'Y'
              AND R.Registry = p_Registry
              AND R.CUSTOMER_NUM = p_CustomerNumber
         ORDER BY S.LOCATION;
    END CustomerSite_Get;
    thanks,
    Anitha.
    Edited by: user521218 on May 6, 2009 1:24 PM

    Hi Anitha,
    try this,
    -- PKG_A
    Procedure CustomerSite_Get( p_Registry       IN Varchar2
                              , p_CustomerNumber IN Varchar2
                              , p_Cursor         IN OUT t_cursor) Is
    Begin
       PKG_B.CustomerSite_Get( p_Registry     
                             , p_CustomerNumber
                             , p_Cursor );
    End;
    -- PKG_B
    Procedure CustomerSite_Get(p_Registry       IN Varchar2
                              ,p_CustomerNumber IN Varchar2
                              ,p_Cursor         IN OUT t_cursor) Is
    Begin
       Open p_Cursor For
          SELECT S.LOCATION      CustomerSite
                ,S.SITE_USE_ID   CustomerSiteID
                ,C.CUSTOMER_NAME BillToName
            FROM RA_CUSTOMERS         C
                ,RA_ADDRESSES         A
                ,RA_SITE_USES         S
                ,UWA_REGISTRY         R
                ,UWA_REGISTRY_BILL_TO B
           WHERE C.CUSTOMER_ID = A.CUSTOMER_ID
             AND A.ADDRESS_ID = S.ADDRESS_ID
             AND S.SITE_USE_ID = B.SITE_USE_ID
             AND R.REGISTRY_ID = B.REGISTRY_ID
             AND B.TRIP_BILLING != 'N'
             AND R.DELETE_FLAG != 'Y'
             AND R.Registry = p_Registry
             AND R.CUSTOMER_NUM = p_CustomerNumber
           Order BY S.LOCATION;
    End CustomerSite_Get;regards,
    Christian Balz

Maybe you are looking for