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.VHello
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. -
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,
susantahi
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.
RegardsThis 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 -
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
rajasekharhi 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 -
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, NinaHello 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,
WillemIs 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
Manjumanjukn 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 AMHello 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 PMHi 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
-
The web pages look like text boxes with a blinking line appearing near where I click on the page. == This happened == Every time Firefox opened == 3 months ago
-
We want to create a test Magic Triangle where we can test major changes before deploying them in production. We have a Mac Xserver 10.6 (matches production), Active Directory at Windows 2008 R2 functional level (Production is at 2003), and NetApp fil
-
Find objects currently in memory
I am currently helping a friend write a program that will take any object currently in memory with one of our applications and then return all the methods and public variables associated with that object. Our goal is to find them in memory or get the
-
Hi, I'm looking for a Badi/method, user-exit able to activate when clearing document is processing. Thank Alice
-
Boolean values from multiple Digital Inputs
Hi guys, This should be really basic but I've looked around to find a solution with no succes... I have a Digital Input device with multiple inputs. Eg, I'm reading 0-24VDC signals from pushbuttons and limit switches. I simply would like to be able