Need PL/SQL code for this
Hi,
I need a PL/SQL code for this one...
Let me know if something is not clear...
1) The table CLOB_CLOBJECT_CDA has the columns described below...
Explaining only those fields which are important in this context
-- CDA_STEP_ID : Basically a Sequence
-- CLOBJECT_SOURCE1_ID : Every id has got a set of records
-- CLOBJECT_SOURCE2_ID : Every id has got a set of records
-- LVL : There are total 8 levels..
This is the main aim :
1) There are total 16 million rows..(limited to 10 rows here)
2) We need to go through level by level (LVL column) & insert the intersection records (CLOBJECT_SOURCE1_ID intersect CLOBJECT_SOURCE2_ID)
into another table...but this is how it goes..
Level (LVL column) 3's basically have CLOBJECT_SOURCE1_ID as level (LVL column) 2 CDA_STEP_ID's..
(consider the statement --** where CLOBJECT_SOURCE1_ID = 285 which is same as 1st insert statement step id)..
The above process goes for next levels until 8..(so have to use loops)
So for ex :
We go through the first insert statement and insert the insertion records only when both CLOBJECT_SOURCE1_ID & CLOBJECT_SOURCE2_ID has got records ..
If we don't find any records for both of them we should skip the corresponding step id when we go to the next levels...
Let's go through the 1st insert statement...
-- We have CDA_STEP_ID = 285 & two sources CLOBJECT_SOURCE1_ID as 19 & CLOBJECT_SOURCE2_ID as 74...
-- We see the table CLOBJECT_COUNTS & check whether we have counts for both 19 & 74 ..(In fact we insert counts into this table only if they have records)
-- If so, we insert the intersection records into CDA_MRN_RESULTS ( we do have counts for both of them..) with CDA_STEP_ID 285...
-- Then we insert the step id which is 285 along with the count into CLOBJECT_COUNTS..
Let's go through another insert statement...
-- Consider CDA_STEP_ID = 288 which has two sources CLOBJECT_SOURCE1_ID as 19 & CLOBJECT_SOURCE2_ID as 92...
-- We see the table CLOBJECT_COUNTS & check whether we have counts for both 19 & 92 ..(we have records for 19 but not for 92)
-- So we should not proceed with this..& also skip all those records (future records with increasing levels..basically level 3's) which have got 288 as CLOBJECT_SOURCE1_ID..
(As said earlier that the present CDA_STEP_ID will always be CLOBJECT_SOURCE1_ID in the next level)...
I wrote the following code which is after the statement...
Let me have the create & insert statements here..
create table CLOB_CLOBJECT_CDA
CDA_STEP_ID NUMBER,
CDA_ID NUMBER,
CDA_SEQ_NUMBER NUMBER,
CLOBJECT_SOURCE1_TYPE VARCHAR2(3000),
CLOBJECT_SOURCE1_ID NUMBER,
CLOBJECT_OPERATOR VARCHAR2(3000),
CLOBJECT_SOURCE2_TYPE VARCHAR2(3000),
CLOBJECT_SOURCE2_ID NUMBER,
LVL NUMBER
insert into clob_clobject_cda (CDA_STEP_ID, CDA_ID, CDA_SEQ_NUMBER, CLOBJECT_SOURCE1_TYPE, CLOBJECT_SOURCE1_ID, CLOBJECT_OPERATOR, CLOBJECT_SOURCE2_TYPE, CLOBJECT_SOURCE2_ID, LVL)
values (285, 285, 1, 'CLOBJECT', 19, 'INTERSECT', 'CLOBJECT', 74, 2);
insert into clob_clobject_cda (CDA_STEP_ID, CDA_ID, CDA_SEQ_NUMBER, CLOBJECT_SOURCE1_TYPE, CLOBJECT_SOURCE1_ID, CLOBJECT_OPERATOR, CLOBJECT_SOURCE2_TYPE, CLOBJECT_SOURCE2_ID, LVL)
values (286, 286, 1, 'CLOBJECT', 19, 'INTERSECT', 'CLOBJECT', 75, 2);
insert into clob_clobject_cda (CDA_STEP_ID, CDA_ID, CDA_SEQ_NUMBER, CLOBJECT_SOURCE1_TYPE, CLOBJECT_SOURCE1_ID, CLOBJECT_OPERATOR, CLOBJECT_SOURCE2_TYPE, CLOBJECT_SOURCE2_ID, LVL)
values (287, 287, 1, 'CLOBJECT', 19, 'INTERSECT', 'CLOBJECT', 91, 2);
insert into clob_clobject_cda (CDA_STEP_ID, CDA_ID, CDA_SEQ_NUMBER, CLOBJECT_SOURCE1_TYPE, CLOBJECT_SOURCE1_ID, CLOBJECT_OPERATOR, CLOBJECT_SOURCE2_TYPE, CLOBJECT_SOURCE2_ID, LVL)
values (288, 288, 1, 'CLOBJECT', 19, 'INTERSECT', 'CLOBJECT', 92, 2);
insert into clob_clobject_cda (CDA_STEP_ID, CDA_ID, CDA_SEQ_NUMBER, CLOBJECT_SOURCE1_TYPE, CLOBJECT_SOURCE1_ID, CLOBJECT_OPERATOR, CLOBJECT_SOURCE2_TYPE, CLOBJECT_SOURCE2_ID, LVL)
values (4869, 4869, 1, 'CDA_STEP', 285, 'INTERSECT', 'CLOBJECT', 91, 3); -- **
insert into clob_clobject_cda (CDA_STEP_ID, CDA_ID, CDA_SEQ_NUMBER, CLOBJECT_SOURCE1_TYPE, CLOBJECT_SOURCE1_ID, CLOBJECT_OPERATOR, CLOBJECT_SOURCE2_TYPE, CLOBJECT_SOURCE2_ID, LVL)
values (4870, 4870, 1, 'CDA_STEP', 285, 'INTERSECT', 'CLOBJECT', 92, 3);
insert into clob_clobject_cda (CDA_STEP_ID, CDA_ID, CDA_SEQ_NUMBER, CLOBJECT_SOURCE1_TYPE, CLOBJECT_SOURCE1_ID, CLOBJECT_OPERATOR, CLOBJECT_SOURCE2_TYPE, CLOBJECT_SOURCE2_ID, LVL)
values (4871, 4871, 1, 'CDA_STEP', 285, 'INTERSECT', 'CLOBJECT', 93, 3);
insert into clob_clobject_cda (CDA_STEP_ID, CDA_ID, CDA_SEQ_NUMBER, CLOBJECT_SOURCE1_TYPE, CLOBJECT_SOURCE1_ID, CLOBJECT_OPERATOR, CLOBJECT_SOURCE2_TYPE, CLOBJECT_SOURCE2_ID, LVL)
values (4880, 4880, 1, 'CDA_STEP', 286, 'INTERSECT', 'CLOBJECT', 91, 3);
insert into clob_clobject_cda (CDA_STEP_ID, CDA_ID, CDA_SEQ_NUMBER, CLOBJECT_SOURCE1_TYPE, CLOBJECT_SOURCE1_ID, CLOBJECT_OPERATOR, CLOBJECT_SOURCE2_TYPE, CLOBJECT_SOURCE2_ID, LVL)
values (4881, 4881, 1, 'CDA_STEP', 286, 'INTERSECT', 'CLOBJECT', 92, 3);
insert into clob_clobject_cda (CDA_STEP_ID, CDA_ID, CDA_SEQ_NUMBER, CLOBJECT_SOURCE1_TYPE, CLOBJECT_SOURCE1_ID, CLOBJECT_OPERATOR, CLOBJECT_SOURCE2_TYPE, CLOBJECT_SOURCE2_ID, LVL)
values (4882, 4882, 1, 'CDA_STEP', 286, 'INTERSECT', 'CLOBJECT', 93, 3);
create table CDA_MRN_RESULTS
CDA_STEP_ID NUMBER,
MRN NUMBER,
INSERT_DATE_TIME DATE
insert into cda_mrn_results (CDA_STEP_ID, MRN, INSERT_DATE_TIME)
values (19, 1, to_date('19-10-2011', 'dd-mm-yyyy'));
insert into cda_mrn_results (CDA_STEP_ID, MRN, INSERT_DATE_TIME)
values (19, 2, to_date('19-10-2011', 'dd-mm-yyyy'));
insert into cda_mrn_results (CDA_STEP_ID, MRN, INSERT_DATE_TIME)
values (19, 3, to_date('19-10-2011', 'dd-mm-yyyy'));
insert into cda_mrn_results (CDA_STEP_ID, MRN, INSERT_DATE_TIME)
values (74, 1, to_date('19-10-2011', 'dd-mm-yyyy'));
insert into cda_mrn_results (CDA_STEP_ID, MRN, INSERT_DATE_TIME)
values (74, 2, to_date('19-10-2011', 'dd-mm-yyyy'));
insert into cda_mrn_results (CDA_STEP_ID, MRN, INSERT_DATE_TIME)
values (74, 4, to_date('19-10-2011', 'dd-mm-yyyy'));
insert into cda_mrn_results (CDA_STEP_ID, MRN, INSERT_DATE_TIME)
values (75, 1, to_date('19-10-2011', 'dd-mm-yyyy'));
insert into cda_mrn_results (CDA_STEP_ID, MRN, INSERT_DATE_TIME)
values (75, 2, to_date('19-10-2011', 'dd-mm-yyyy'));
insert into cda_mrn_results (CDA_STEP_ID, MRN, INSERT_DATE_TIME)
values (75, 6, to_date('19-10-2011', 'dd-mm-yyyy'));
insert into cda_mrn_results (CDA_STEP_ID, MRN, INSERT_DATE_TIME)
values (91, 2, to_date('19-10-2011', 'dd-mm-yyyy'));
insert into cda_mrn_results (CDA_STEP_ID, MRN, INSERT_DATE_TIME)
values (91, 3, to_date('19-10-2011', 'dd-mm-yyyy'));
create table CLOBJECT_COUNTS
CDA_STEP_ID NUMBER,
CLOBJECT_COUNT NUMBER,
DATE_TIME DATE
Insert into CLOBJECT_COUNTS values (19,3, to_date('19-10-2011', 'dd-mm-yyyy'));
Insert into CLOBJECT_COUNTS values (74,3, to_date('19-10-2011', 'dd-mm-yyyy'));
Insert into CLOBJECT_COUNTS values (75,3, to_date('19-10-2011', 'dd-mm-yyyy'));
Insert into CLOBJECT_COUNTS values (91,2, to_date('19-10-2011', 'dd-mm-yyyy'));The output goes into two tables...
CDA_MRN_RESULTS : O/p of intersection records between source1 & source2 id
CLOBJECT_COUNTS : Step id with counts ...(useful for skipping next level step id's if either of source id has "0" counts)
Any help is appreciated..
Thanks..
I tried to code this..but looping takes a lot of time..I want to skip certain rows where source1_step_id & source_2_step_id are not in clobject_counts table as we proceed to the next levels..Not sure how to skip the rows..
declare
cursor c1 (p_level varchar2 ) is
Select * from clob_clobject_cda
where lvl = p_level ;
TYPE V_TT IS TABLE OF C1%ROWTYPE INDEX BY PLS_INTEGER;
L_TT V_TT;
v1 number;
v2 number;
v_step_id number;
v_operator varchar2(100) := '';
begin
for i in 2..8 loop
open c1(i);
LOOP
FETCH C1 BULK COLLECT INTO L_TT LIMIT 500;
FOR indx IN 1 .. L_TT.COUNT
LOOP
v1 := L_TT(indx).clobject_source1_id;
v2 := L_TT(indx).clobject_source2_id;
v_step_id := L_TT(indx).cda_step_id;
v_operator := L_TT(indx).clobject_operator;
Execute Immediate ('Insert into cda_mrn_results Select --+ parallel (cm 128)
distinct ' || v_step_id || ', mrn, trunc(sysdate) dt from cda_mrn_results cm
where cda_step_id = ' || v1 || '
and cda_step_id in (Select cda_step_id from clobject_counts) ' ||
v_operator ||
' Select --+ parallel (cm 128)
distinct ' || v_step_id || ', mrn, trunc(sysdate) dt from cda_mrn_results cm
where cda_step_id = ' || v2 || '
and cda_step_id in (Select cda_step_id from clobject_counts) ' );
Insert --+ Append
into clobject_counts Select cda_step_id, count(distinct mrn),
insert_date_time dt from cda_mrn_results where cda_step_id = v_step_id group by cda_step_id,insert_date_time;
COMMIT;
END LOOP;
EXIT WHEN L_TT.COUNT = 0;
END LOOP;
CLOSE C1;
End Loop;
Commit;
End;
Similar Messages
-
Need pl/sql stmnts. for this simple logic
Hi,
I need PL/SQL program for this simple logic i am doing mistake somewhere unbale to trace
out ..
select * from GSR03_PO_DTL;
PO_NUM
L53177000 -- > no changes reqd (only one entry with new format)
L00041677 --> to be updated to L41677000(only one entry with OLD format)
L43677000 -- > no change reqd (exists one row with new format and old format like below)
L00043677 -- > to be deleted this is old format (and new format like above already exists)
EX:
L00012345 --- old format
L12345000 --- new format
Hope question is clear. I written the following program.
update is working fine but delete is not working.
Please help.
Thanks in Advance
Devender
declare
Cursor c_test is
(select po_num from GSR03_PO_DTL);
BEGIN
FOR r_test in c_Test
LOOP
dbms_output.put_line (r_test.po_num);
IF ('L'||substr(r_test.po_num,5,5)) = ('L'||substr(r_test.po_num,2,5)) then
dbms_output.put_line ('delete stmnt');
END IF;
EXIT WHEN c_test%NOTFOUND;
END LOOP;
FOR r_test in c_Test
LOOP
IF r_test.po_num like 'L000%' then
IF ('L'||substr(r_test.po_num,5,5)) is not NULL then
update GSR03_PO_DTL set PO_NUM = 'L'||substr(po_num,5,5)||'000'
where po_num like 'L000%' ;
dbms_output.put_line ('update stmnt');
END IF;
END IF;
END LOOP;
END;
*********************No need for PL/SQL, man.
SQL> SELECT po_no FROM po1
2 /
PO_NO
L53177000
L00041677
L43677000
L00043677
SQL> UPDATE po1 y
2 SET y.po_no = 'L'||substr(y.po_no,5,5)||'000'
3 WHERE y.po_no LIKE 'L000%'
4 AND NOT EXISTS ( SELECT null FROM po1 x
5 WHERE x.po_no = 'L'||substr(y.po_no,5,5)||'000')
6 /
1 row updated.
SQL> DELETE FROM po1 y
2 WHERE y.po_no LIKE 'L000%'
3 AND EXISTS ( SELECT null FROM po1 x
4 WHERE x.po_no = 'L'||substr(y.po_no,5,5)||'000')
5 /
1 row deleted.
SQL> SELECT po_no FROM po1
2 /
PO_NO
L53177000
L41677000
L43677000
SQL> Cheers, APC -
Need SQL code for this logic - - From Serial and To serial no.
In Forms 4.5 Screen I have two text boxes where i will be entering From Serial No
and to serial no.
I want the code which will check whether any number in between these from and to serial exists in a table or not ?
For Example
Select * from t; -- contains
serial number
321-456-789
123-456-654
321-569-986
321-569-987
When I enter from Serial no 321-456-789 and to serial no as 321-456-789.. I should get a message sayinig that 321-456-789 exists.
When I enter from Serial no 321-569-986 and to serial no as 321-569-988.
I should get a message sayinig that 321-456-986 exists.
I should get a message sayinig that 321-456-987 exists.
I should get a message sayinig that 321-456-988 not exists.
is it possible with a SQL query or do we need to go for procedure or temp table ?
If anybody ahving similar code please post it here.
Thanks in Advance
DevenderHi Devender,
Try this :
SQL> select * from t;
SN
321-456-789
123-456-654
321-569-986
321-569-987
SQL> var sn1 varchar2(11)
SQL> exec :sn1 := '321-569-986'
Procédure PL/SQL terminée avec succès.
SQL> var sn2 varchar2(11)
SQL> exec :sn2 := '321-569-988'
Procédure PL/SQL terminée avec succès.
SQL>1 select a.sn, decode(t.sn,null,'does not exists','already exists')
2 from
3 (select substr(replace(:sn1,'-','')+rownum-1,1,3)||'-'
4 ||substr(replace(:sn1,'-','')+rownum-1,4,3)||'-'
5 ||substr(replace(:sn1,'-','')+rownum-1,7,3) as sn
6 from (select level
7 from dual
8 connect by level <= (replace(:sn2,'-','')-replace(:sn1,'-',''))+1
9 )
10 )a,
11 t
12* where a.sn=t.sn(+)
SQL> /
SN DECODE(T.SN,NUL
321-569-986 already exists
321-569-987 already exists
321-569-988 does not exists
SQL> exec :sn1 := '321-456-789'
Procédure PL/SQL terminée avec succès.
SQL> exec :sn2 := '321-456-789'
Procédure PL/SQL terminée avec succès.
SQL> l
1 select a.sn, decode(t.sn,null,'does not exists','already exists')
2 from
3 (select substr(replace(:sn1,'-','')+rownum-1,1,3)||'-'
4 ||substr(replace(:sn1,'-','')+rownum-1,4,3)||'-'
5 ||substr(replace(:sn1,'-','')+rownum-1,7,3) as sn
6 from (select level
7 from dual
8 connect by level <= (replace(:sn2,'-','')-replace(:sn1,'-',''))+1
9 )
10 )a,
11 t
12* where a.sn=t.sn(+)
SQL> /
SN DECODE(T.SN,NUL
321-456-789 already exists
SQL> Nicolas. -
How to write the pl/sql code for this scenario
Hi,
Here is the data in a Table with below colums
id firstname lastname code
1 scott higgins 001
2 Mike Ferrari 001
3 Tom scottsdale 002
4 Nick pasquale 003
1 scott higgins 004
I want to trap the following exceptions into an error table using pl/sql
1. same person having multiple code
example
id first last Code
1 scott higgins 001
1 scott higgins 004
2. Multiple persons having same code
id first last Code
1 scott higgins 001
2 Mike Ferrari 001
Could you please help me how to capture the exceptions above using pl/sql
and what will be the structure of error table. it should capture eff date & end dateor using analytic functions like this:
select id, fname, lname, code from (
with t as(
select 1 id, 'scott' fname, 'higgins' lname, 001 code from dual
union all
select 2 id,'Mike ' fname, 'Ferrari' lname, 001 code from dual
union all
select 3 id,'Tom' fname, 'scottsdale' lname, 002 code from dual
union all
select 4 id,'Nick' fname, 'pasquale' lname, 003 code from dual
union all
select 5 id,'scott' fname, 'higgins' lname, 004 code from dual
select t.*, count(*) over (partition by fname) row_count from t)
where row_count > 1;
select id, fname, lname, code from (
with t as(
select 1 id, 'scott' fname, 'higgins' lname, 001 code from dual
union all
select 2 id,'Mike ' fname, 'Ferrari' lname, 001 code from dual
union all
select 3 id,'Tom' fname, 'scottsdale' lname, 002 code from dual
union all
select 4 id,'Nick' fname, 'pasquale' lname, 003 code from dual
union all
select 5 id,'scott' fname, 'higgins' lname, 004 code from dual
select t.*, count(*) over (partition by code) row_count from t)
where row_count > 1; -
null
Post relates to: Tungsten E2Hi.. Welcome to the Palm forums. If you need a registration code for this software you need to talk to the manufacturer, Bapsoft @ http://www.bapsoft.com/. I assume you purchased it thru the Palm store but you have to realize they are simply the store front that has rights to sell the software for the manufacturer. The manufacturer takes care of all support.
Post relates to: Centro (Sprint) -
Need code for this program in pl/sql
Hi,
was looking for a pl/sql code for the following case
If there are two employees from the EMP table. i want all the names of the managers common to the two employees....
to explain in detail : if employee1 and employee2 have the same manager mgr1....mgr1 should be displayed.
else if employee 1 and employee2 have no immediate manager in common...meaning team leader of employee 1 and employee2 are different but the project managers for both the employee is same..in this case the project manager's name should be displayed......
else in worst case when there are no managers common between these two employees.........the CEO who is at the highest level is common....then display CEO's name
it's hierchiacal structure......
thanks,
PreethiWhy PL/SQL? Why not look at if this can be done using SQL firstly? SQL is the preferred language for crunching Oracle data. Not PL/SQL.
Think data sets.
One method to do this in SQL would be to build a hierarchical list of managers for each employee. E.g.
LEVEL MANAGER
1 Jack
2 John
10 Dan the CEOOnce you have such a list for each employee, you can join these two lists on matching names. Then you simply need to find the matching join that has the lowest level.
I'm sure there are other approaches. But unless you put together some test data, put together some SQLs and play around with this problem, you are not going to learn anything.
And no, copying and pasting an answer that someone is inevitable to post in response is NOT learning anything new.
So why not try and solve this problem yourself? Gain some new knowledge. That will only do your career well as your employer is after all expecting you to write the code to solve this problem - and not for members of this forum to supply the code for you. -
In the transformation between 0FIGL_O02(table1) and ZSPM_D01(table2), delete records in 0FIGL_O02(table1), if 0AC_DOC_NO AND 0FISCPER AND 0COMP_CODE do not exists in 0FIAP_O03(table 3).
need code for this...i have to implement it in BW.pls give me necessary code.
Moderator message: please do more research before asking, show what you have done when posting, use meaningful titles when posting, read the rules of engagement.
Edited by: Thomas Zloch on Feb 24, 2012Hai Pavan
Check the following Code
tables : mara.
data : begin of itab occurs 0,
matnr like mara-matnr,
mbrsh like mara-mbrsh,
mtart like mara-mtart,
meins like mara-meins,
end of itab.
select-options : S_matnr for mara-matnr.
initialization.
clear s_matnr.
refresh : s_matnr.
s_matnr-low = '0001'.
s_matnr-high = '0010'.
s_matnr-Sign = 'I'.
s_matnr-Option = 'BT'.
append s_matnr.
start-of-selection.
select matnr
mbrsh
mtart
meins
from mara
into table itab
where matnr in s_matnr.
if sy-subrc = 0.
sort itab by matnr.
endif.
if not itab[] is initial.
loop at itab.
if itab-matnr NOT BETWEEN s_matnr-high AND s_matnr-low.
if sy-subrc = 0.
write :/ 'OK'.
else.
write :/ 'Not OK'.
endif.
endif.
endloop.
endif.
Thanks & regards
Sreenivasulu P
Message was edited by: Sreenivasulu Ponnadi -
Need code for this Small validation on when-validate-item
Hi All,
I have a text item(date datatype) in forms 4.5 I need to do a small validation want to write on when-validate-item. When I enter a date in that text item (Ex 10-JUN-2005) it has to check
1) It Cannot be "blank"
2) It cannot be "Not older than today"
can you please put me code for this small validation. I am new to Forms.
Thanks in Advance,
ReddyI always put code in the when-validate-RECORD trigger to ensure fields are entered, rather than setting the property. That way, the user can enter other fields within the record, and then gets a message that the field is required only when leaving the record.
...of course, if the date item is the only field in the block, then the when-validate triggers will not run unless the user at least types a space in the date. In that case, you need to check in the key-commit trigger. -
I NEED MY UNBLOCKING CODE FOR MY IPHONE 4S ,I HAVE BEEN INCONTACT WITH MY SERVICE PROVIDER AND THEY CONFIRMED THEY HAVE SENT AN EMAIL TO YOURSELF TO GET THE CODE AND NOW I NEED TO CONTACT YOU MYSELF IS THIS CORRECT AS VODAFONE DO NOT SEEM TO BE HELPING ME
There is no such thing as an unlock code for an iPhone. It's done by restoring the phone using iTunes
-
Need code for this checkbox trigger...please
Hi All,
I have a checkbox in detail block where block is having No. of records displayed is 3(Three) so Checkbox and all other items are displaying thrice. I am inserting the records 1 by 1 using the following code
Declare
Begin
Loop
First_Record;
Insert into Veri_Test values(:PNo,:c1);
Exit When :System.Last_Record='TRUE';
Next_Record;
End Loop;
COMMIT;
End;
Its inserting properly. no problem. But what I want is
when i checked on 1st row of checkbox remaining two(2nd,3rd row) checkboxes should be disabled. If i uncheck 1st row checkbox then
remaining two should be enabled. As same way
If i click on 3rd row of checkbox remaining two(1,2) should be disabled. If i uncheck 3rd row checkbox then remaining two(1,2) should be enabled.
Hope its clear. is it possible ? if yes can anyboxy give the code for this checkbox trigger ?
Thanks in Advacne
DevenderHello,
Apply this in a When-Checkbox-Changed trigger:
Declare
-- Record being modified --
LN$CurRec pls_integer := :system.cursor_record ;
LN$Rec pls_integer := 1 ;
Begin
If :BLOC.CB1 = 'O' Then
-- Goto first record --
First_record ;
Loop
If LN$Rec <> LN$CurRec Then
-- record <> current record --
:BLOC.CB1 := 'N' ;
End if ;
If :system.last_record = 'TRUE' Then
Exit ;
End if ;
-- Goto next record --
Next_record ;
LN$Rec := LN$Rec + 1 ;
End loop ;
-- Jump to current record --
Go_Record( LN$CurRec );
End if ;
End ;Francois -
Needs sample ABAP code for field routine
Dear Expert,
There is a field "Pay Scale Group" in my DSO which stores the data in the format
AA1/B1/CCC2/DD2/EEE1, A1/BB2/CC2/DDD3/EE2 etc. These data has to be transferred to
InfoCube where "pay Scale Group" in the InfoCube will store the data like EEE1,EE2 etc.
I need to write a field routine on the transformation between DSO and Cube.
Can any one please help me with the sample ABAP code for this scenario.
Some more examples for better understanding of the requirement:-
Data in DSO(Source) Data in Cube(Target)
=================== ===================
AA1/B1/CCC2/DD2/EEE1 EEE1
AAA1/BB2/CC1/DDD3/EE2 EE2
A2/BBB2/CC2/DDD3/EEE5 EEE5
AA2/BB1/C1/DDD3/EE3 EE3
A3/B1/CC2/DDD1/EE4 EE4
Many thanks in advance.
Regards,
Prakash
Please do not dump your code requirements in SDN
Edited by: Pravender on May 18, 2011 11:37 AMHi,
You can use the following code :
Suppose the technical name of the field coming from DSO is ZPAY_SGRP.
And also for example let me take one record, that is ZPAY_SGRP = AA1/B1/CCC2/DD2/EEE1 .
My assumption is that there will always be 4 '/'.
In the field routine write the below code
data: V1(5) type c,
V2(5) type c,
V3(5) type c,
V4(5) type c,
V5(5) type c.
data : VAR1 TYPE /BIC/OIZPAY_SGRP.
split VAR 1 at '/' into V1 V2 V3 V4 V5.
result = V5.
V5 will be having the characters after the last '/' .That is V5 = EEE1.
Hope the above reply was helpful.
Kind Regards,
Ashutosh Singh
Edited by: Ashutosh Singh on May 17, 2011 3:53 PM
Edited by: Ashutosh Singh on May 17, 2011 4:17 PM -
A wallet needs to be configured for this instance of Application Express
hi
I m very new to APEX. I could create web service client with wsdl. But when service is on https i get message
"a wallet needs to be configured for this instance of Application Express".
I have created wallet using OWM (10.2.0.1.0) at location c:\del_sometime
Using admin i configured APEX instance settings wallet as
Wallet Path = file:c:\del_sometime
And checked in database too
SQL> ALTER SESSION SET CURRENT_SCHEMA = APEX_030200;
Session altered.
SQL> SELECT
2 APEX_INSTANCE_ADMIN.GET_PARAMETER('WALLET_PATH')
3 from dual;
APEX_INSTANCE_ADMIN.GET_PARAMETER('WALLET_PATH')
file:c:\del_sometime
Any idea whats wrong? I am following steps from http://download.oracle.com/docs/cd/E14373_01/admin.32/e13371/adm_wrkspc.htm#BABFBJEAalso whe I try following i keep getting error failure to open file. I am on XP and file is present with proper permissions.
SQL> SELECT utl_http.request('https://support.oracle.com/',null,'file:c:\del_sometime\') from dual;
SELECT utl_http.request('https://support.oracle.com/',null,'file:c:\del_sometime\') from dual
ERROR at line 1:
ORA-29273: HTTP request failed
ORA-06512: at "SYS.UTL_HTTP", line 1577
ORA-28759: failure to open file
ORA-06512: at line 1 -
Needed example working code for FM"LAST_DAY_IN_PERIOD_GET"
needed example working code for FM"LAST_DAY_IN_PERIOD_GET"
Hi,
Go through this code
*& Report Z_FICO_REP_SHIPMENTS
REPORT z_fico_rep_shipments MESSAGE-ID sd.
TYPE-POOLS : slis.
TABLES : vbak,
kna1,
likp,
vbfa.
*>> DEFINE global Types
TYPES : BEGIN OF gt_vbak,
vbeln TYPE vbeln,
kunnr TYPE kunnr ,
spart TYPE spart,
audat TYPE audat,
END OF gt_vbak,
BEGIN OF gt_kna1,
kunnr TYPE kunnr,
name1 TYPE name1,
END OF gt_kna1,
BEGIN OF gt_likp,
vbeln TYPE vbeln,
wadat_ist TYPE wadat_ist,
END OF gt_likp,
BEGIN OF gt_vbfa,
vbelv TYPE vbelv,
erdat TYPE erdat,
rfwrt TYPE rfwrt,
END OF gt_vbfa,
BEGIN OF gt_final,
kunnr TYPE kunnr,
name1 TYPE name1,
cumon TYPE monat,
trcum TYPE rfwrt,
trcuy TYPE rfwrt,
perce TYPE rfwrt,
fiscy TYPE gjahr,
ftrcum TYPE rfwrt,
ftrcuy TYPE rfwrt,
fperce TYPE rfwrt,
END OF gt_final.
DATA : gwa_vbak TYPE gt_vbak,
gwa_kna1 TYPE gt_kna1,
gwa_likp TYPE gt_likp,
gwa_vbfa TYPE gt_vbfa,
gwa_final TYPE gt_final,
gwa_sort TYPE slis_sortinfo_alv,
gwa_layout TYPE slis_layout_alv. "ALV Layout
DATA : gi_vbak TYPE STANDARD TABLE OF gt_vbak,
gi_kna1 TYPE STANDARD TABLE OF gt_kna1,
gi_likp TYPE STANDARD TABLE OF gt_likp,
gi_vbfa TYPE STANDARD TABLE OF gt_vbfa,
gi_likp1 TYPE STANDARD TABLE OF gt_likp,
gi_vbfa1 TYPE STANDARD TABLE OF gt_vbfa,
gi_final TYPE STANDARD TABLE OF gt_final WITH HEADER LINE,
gi_final1 TYPE STANDARD TABLE OF gt_final WITH HEADER LINE.
*>> DEFINE INTERNAL TABLE
DATA : gi_fieldcat TYPE slis_t_fieldcat_alv, "ALV Fieldcatalog
gi_events TYPE slis_t_event, "ALV EventS
gi_sort TYPE slis_t_sortinfo_alv ,
gi_top_of_page TYPE slis_t_listheader. "ALV LIST HEADER
DATA : gv_month(2) TYPE n.
*>> GLOBAL CONSTANTS
CONSTANTS: gc_day(2) TYPE n VALUE 01,
gc_top_of_page TYPE slis_formname VALUE 'TOP_OF_PAGE',
gc_x TYPE c VALUE 'X'.
SELECTION-SCREEN:BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
PARAMETERS: p_monat TYPE monat OBLIGATORY,
p_gjahr TYPE gjahr OBLIGATORY.
SELECT-OPTIONS : s_bukrs FOR vbak-bukrs_vf OBLIGATORY,
s_vkorg FOR vbak-vkorg,
s_spart FOR vbak-spart OBLIGATORY,
s_audat FOR vbak-audat NO-DISPLAY.
SELECTION-SCREEN:END OF BLOCK b1.
SELECTION-SCREEN:BEGIN OF BLOCK b2 WITH FRAME TITLE text-001.
PARAMETERS: p_det RADIOBUTTON GROUP grp DEFAULT 'X' ,
p_sum RADIOBUTTON GROUP grp.
SELECTION-SCREEN:END OF BLOCK b2.
START-OF-SELECTION.
*>> Take Period And year and find starting and ending date
PERFORM fiscal_date.
PERFORM collect_data.
PERFORM manipulation_collect_data.
END-OF-SELECTION.
*>> Sort
PERFORM gi_sort_table.
*>> MEARGE FIELD CATALOG USING INTERNAL TABLE
PERFORM mearge_field_catalog.
*>> SET EVENTS
PERFORM set_event.
*>> FOR ALV HEADER
PERFORM n_top_of_page USING gi_top_of_page[].
*>>For ALV Layout
PERFORM build_layout.
*>>For output display
PERFORM alv_grid_display.
*& Form fiscal_date
FORM fiscal_date.
TYPES : BEGIN OF lt_fisc,
bukrs TYPE bukrs,
periv TYPE periv,
bumon TYPE bumon,
butag TYPE butag,
END OF lt_fisc,
BEGIN OF lt_t009b,
periv TYPE periv,
bumon TYPE bumon,
butag TYPE butag,
poper TYPE poper,
END OF lt_t009b.
DATA : lwa_fisc TYPE lt_fisc,
lwa_t009b TYPE lt_t009b.
DATA : li_fisc TYPE STANDARD TABLE OF lt_fisc,
li_t009b TYPE STANDARD TABLE OF lt_t009b.
DATA : lv_date(2) TYPE c,
lv_mont(2) TYPE c,
lv_year(4) TYPE c.
SELECT bukrs periv FROM t001
INTO TABLE li_fisc
WHERE bukrs IN s_bukrs.
IF sy-subrc EQ 0.
SELECT * FROM t009b
INTO CORRESPONDING FIELDS OF TABLE li_t009b
FOR ALL ENTRIES IN li_fisc
WHERE periv EQ li_fisc-periv .
IF sy-subrc NE 0.
CLEAR li_t009b.
ENDIF.
ELSE.
CLEAR li_fisc.
ENDIF.
SORT li_t009b BY periv poper.
LOOP AT li_fisc INTO lwa_fisc.
READ TABLE li_t009b INTO lwa_t009b WITH KEY periv = lwa_fisc-periv
poper = '001'
BINARY SEARCH.
IF sy-subrc = 0.
s_audat-option = 'EQ'.
s_audat-sign = 'I'.
CALL FUNCTION 'FIRST_DAY_IN_PERIOD_GET'
EXPORTING
i_gjahr = p_gjahr
i_periv = lwa_t009b-periv
i_poper = lwa_t009b-poper
IMPORTING
e_date = s_audat-low.
ENDIF.
CLEAR lwa_t009b.
READ TABLE li_t009b INTO lwa_t009b WITH KEY periv = lwa_fisc-periv
poper = '012'
BINARY SEARCH.
IF sy-subrc = 0.
CALL FUNCTION 'LAST_DAY_IN_PERIOD_GET'
EXPORTING
i_gjahr = p_gjahr
i_periv = lwa_t009b-periv
i_poper = lwa_t009b-poper
IMPORTING
e_date = s_audat-high.
ENDIF.
CLEAR lwa_t009b.
READ TABLE li_t009b INTO lwa_t009b WITH KEY periv = lwa_fisc-periv
poper = p_monat
BINARY SEARCH.
IF sy-subrc = 0.
lv_date = s_audat-high+6(2).
lv_mont = s_audat-high+4(2).
lv_year = s_audat-high(4).
lv_mont = lwa_t009b-bumon.
lv_date = lwa_t009b-butag.
CONCATENATE lv_year lv_mont lv_date INTO s_audat-high.
APPEND s_audat.
CLEAR: lwa_fisc,lwa_t009b,lv_date,lv_mont,lv_year.
ENDIF.
ENDLOOP.
DELETE ADJACENT DUPLICATES FROM s_audat.
ENDFORM. "fiscal_date
*& Form collect_data
FORM collect_data .
SELECT vbeln kunnr spart audat
FROM vbak
INTO TABLE gi_vbak
WHERE audat GE s_audat-low AND
audat LT s_audat-high AND
vkorg IN s_vkorg AND
spart IN s_spart AND
bukrs_vf IN s_bukrs.
IF sy-subrc EQ 0.
SELECT kunnr name1
FROM kna1
INTO TABLE gi_kna1
FOR ALL ENTRIES IN gi_vbak
WHERE kunnr EQ gi_vbak-kunnr.
IF sy-subrc NE 0.
CLEAR gi_kna1.
ENDIF.
SELECT vbeln wadat_ist
FROM likp
INTO TABLE gi_likp
WHERE wadat_ist GE s_audat-low AND
wadat_ist LT s_audat-high .
IF sy-subrc EQ 0.
SELECT vbelv erdat rfwrt
FROM vbfa
INTO TABLE gi_vbfa
FOR ALL ENTRIES IN gi_likp
WHERE vbeln = gi_likp-vbeln AND
( vbtyp_n = 'M' OR
vbtyp_n = 'H' ) .
IF sy-subrc NE 0.
CLEAR gi_vbfa.
ENDIF.
ELSE.
CLEAR gi_likp.
ENDIF.
PERFORM change_date.
SELECT vbeln wadat_ist
FROM likp
INTO TABLE gi_likp1
WHERE wadat_ist GE s_audat-low AND
wadat_ist LT s_audat-high .
IF sy-subrc EQ 0.
SELECT vbelv erdat rfwrt
FROM vbfa
INTO TABLE gi_vbfa1
FOR ALL ENTRIES IN gi_likp1
WHERE vbeln = gi_likp1-vbeln AND
( vbtyp_n = 'M' OR
vbtyp_n = 'H' ) .
IF sy-subrc NE 0.
CLEAR gi_vbfa.
ENDIF.
ELSE.
CLEAR gi_likp.
ENDIF.
ELSE.
MESSAGE i261.
LEAVE SCREEN.
ENDIF.
ENDFORM. "collect_data
*& Form Manipulation_collect_data
FORM manipulation_collect_data.
SORT gi_vbak BY vbeln.
SORT gi_kna1 BY kunnr.
LOOP AT gi_vbak INTO gwa_vbak.
MOVE-CORRESPONDING gwa_vbak TO gwa_final.
READ TABLE gi_kna1 INTO gwa_kna1 WITH KEY kunnr = gwa_vbak-kunnr
BINARY SEARCH.
IF sy-subrc EQ 0.
gwa_final-name1 = gwa_kna1-name1.
ENDIF.
ENDLOOP.
* v_month = gwa_vbak-audat+4(2).
* gwa_final-cumon = p_monat.
* gwa_final-fiscy = p_gjahr.
* IF v_month = p_monat.
* CLEAR wa_ckmlhd.
* READ TABLE i_ckmlhd INTO wa_ckmlhd WITH KEY matnr = wa_vbap-matnr
* bwkey = wa_vbap-werks
* BINARY SEARCH.
* IF sy-subrc EQ 0.
* CLEAR i_nckmlcr.
* READ TABLE i_nckmlcr INTO wa_nckmlcr
* WITH KEY kalnr = wa_ckmlhd-kalnr
* BINARY SEARCH.
* IF sy-subrc EQ 0.
* gwa_final-peinh = wa_nckmlcr-peinh.
* gwa_final-kzwi6 = wa_vbap-kzwi6 - wa_vbap-kzwi5.
* gwa_final-kzwi5 = wa_vbap-kzwi5.
* gwa_final-totre = gwa_final-kzwi6 + gwa_final-kzwi5.
* gwa_final-actco = ( wa_nckmlcr-pvprs / wa_nckmlcr-peinh ) *
* wa_vbap-kwmeng.
* gwa_final-profit = gwa_final-totre - gwa_final-actco.
* gwa_final-prows = ( gwa_final-profit - gwa_final-kzwi6 ) *
*100.
* ENDIF.
* ENDIF.
* ELSE.
* CLEAR wa_ckmlhd.
* READ TABLE i_ckmlhd INTO wa_ckmlhd WITH KEY matnr = wa_vbap-matnr
* bwkey = wa_vbap-werks
* BINARY SEARCH.
* IF sy-subrc EQ 0.
* READ TABLE i_ckmlcr INTO wa_ckmlcr
* WITH KEY kalnr = wa_ckmlhd-kalnr
* BINARY SEARCH.
* IF sy-subrc NE 0.
* CLEAR wa_ckmlcr.
* ENDIF.
* CLEAR wa_nckmlcr.
* READ TABLE i_nckmlcr INTO wa_nckmlcr
* WITH KEY kalnr = wa_ckmlhd-kalnr
* BINARY SEARCH.
* IF sy-subrc EQ 0.
* gwa_final-fkzwi6 = wa_vbap-kzwi6 - wa_vbap-kzwi5.
* gwa_final-fkzwi5 = wa_vbap-kzwi5.
* gwa_final-ftotre = gwa_final-fkzwi6 + gwa_final-fkzwi5.
* gwa_final-factco = ( ( wa_nckmlcr-pvprs / wa_ckmlcr-peinh )
* * wa_vbap-kwmeng ) / wa_nckmlcr-count.
* gwa_final-fprofit = gwa_final-ftotre - gwa_final-factco.
* gwa_final-fprows = ( gwa_final-fprofit - gwa_final-kzwi6 ) *
*100
* ENDIF.
* ENDIF.
* ENDIF.
* APPEND gwa_final TO gi_final.
* CLEAR : gwa_final,wa_nckmlcr,wa_ckmlcr,wa_ckmlhd,
* gwa_vbak,wa_vbap,gwa_kna1.
* ENDLOOP.
* gwa_final-matnr = space.gwa_final-vbeln = space.
* MODIFY gi_final FROM gwa_final TRANSPORTING vbeln matnr
* WHERE matnr NE space.
* SORT gi_final BY kunnr vbeln matnr.
* IF p_sum = gc_x.
* LOOP AT gi_final INTO gwa_final.
* COLLECT gwa_final INTO gi_final1.
* ENDLOOP.
* CLEAR gwa_final.REFRESH gi_final.
* gi_final[] = gi_final1[].
* ENDIF.
ENDFORM. "manipulation_collect_data
*& Form change_date
FORM change_date.
DATA : lv_date(2) TYPE c,
lv_mont(2) TYPE c,
lv_year(4) TYPE n.
lv_date = s_audat-low+6(2).
lv_mont = s_audat-low+4(2).
lv_year = s_audat-low(4).
lv_year = lv_year - 1.
CONCATENATE lv_year lv_mont lv_date INTO s_audat-low.
CLEAR : lv_date ,lv_mont,lv_year.
lv_date = s_audat-high+6(2).
lv_mont = s_audat-high+4(2).
lv_year = s_audat-high(4).
lv_year = lv_year - 1.
CONCATENATE lv_year lv_mont lv_date INTO s_audat-high.
CLEAR : lv_date ,lv_mont,lv_year.
ENDFORM. " change_date
*& Form gi_sort_table
FORM gi_sort_table.
IF p_det = gc_x.
gwa_sort-spos = '1'.
gwa_sort-fieldname = 'KUNNR'.
gwa_sort-tabname = 'gi_final'.
gwa_sort-up = gc_x.
gwa_sort-subtot = gc_x.
APPEND gwa_sort TO gi_sort.
CLEAR gwa_sort.
gwa_sort-spos = '2'.
gwa_sort-fieldname = 'NAME1'.
gwa_sort-tabname = 'gi_final'.
gwa_sort-up = gc_x.
APPEND gwa_sort TO gi_sort.
* ELSE.
* gwa_sort-spos = '1'.
* gwa_sort-fieldname = 'KUNNR'.
* gwa_sort-tabname = 'gi_final'.
* gwa_sort-up = gc_x.
* APPEND gwa_sort TO gi_sort.
* CLEAR gwa_sort.
* gwa_sort-spos = '2'.
* gwa_sort-fieldname = 'NAME1'.
* gwa_sort-tabname = 'gi_final'.
* gwa_sort-up = gc_x.
* gwa_sort-group = gc_x.
* gwa_sort-subtot = gc_x.
* APPEND gwa_sort TO gi_sort.
ENDIF.
ENDFORM. "gi_sort_table
*& Form mearge_field_catalog
FORM mearge_field_catalog .
*>> LOCAL WORK AREA FOR FIELDCATALOG
DATA : lwa_fieldcata TYPE slis_fieldcat_alv.
CLEAR lwa_fieldcata.
lwa_fieldcata-fieldname = 'KUNNR'.
* lwa_fieldcata-col_pos = 1.
lwa_fieldcata-key = 'X'.
lwa_fieldcata-key_sel = 'X'.
lwa_fieldcata-ref_tabname = 'KNA1'.
lwa_fieldcata-seltext_l = 'Customer No.'.
APPEND lwa_fieldcata TO gi_fieldcat.
CLEAR lwa_fieldcata.
lwa_fieldcata-fieldname = 'NAME1'.
* lwa_fieldcata-col_pos = 2.
lwa_fieldcata-ref_tabname = 'KNA1'.
lwa_fieldcata-seltext_l = 'Customer Name'.
APPEND lwa_fieldcata TO gi_fieldcat.
IF p_det = gc_x.
CLEAR lwa_fieldcata.
lwa_fieldcata-fieldname = 'VBELN'.
* lwa_fieldcata-col_pos = 3.
lwa_fieldcata-ref_tabname = 'VBAK'.
lwa_fieldcata-seltext_l = 'Sales Order Number'.
APPEND lwa_fieldcata TO gi_fieldcat.
CLEAR lwa_fieldcata.
lwa_fieldcata-fieldname = 'MATNR'.
* lwa_fieldcata-col_pos = 4.
lwa_fieldcata-ref_tabname = 'VBAK'.
lwa_fieldcata-seltext_l = 'Material No.'.
APPEND lwa_fieldcata TO gi_fieldcat.
ENDIF.
CLEAR lwa_fieldcata.
lwa_fieldcata-fieldname = 'KWMENG'.
lwa_fieldcata-col_pos = 5.
lwa_fieldcata-ref_tabname = 'VBAP'.
lwa_fieldcata-do_sum = 'X'.
lwa_fieldcata-seltext_l = 'Order Quantity'.
APPEND lwa_fieldcata TO gi_fieldcat.
CLEAR lwa_fieldcata.
lwa_fieldcata-fieldname = 'PEINH'.
lwa_fieldcata-col_pos = 6.
lwa_fieldcata-ref_tabname = 'CKMLCR'.
lwa_fieldcata-text_fieldname = 'PEINH'.
APPEND lwa_fieldcata TO gi_fieldcat.
CLEAR lwa_fieldcata.
lwa_fieldcata-fieldname = 'CUMON'.
lwa_fieldcata-col_pos = 7.
lwa_fieldcata-ref_tabname = 'VBKPF'.
lwa_fieldcata-seltext_l = 'Month'.
lwa_fieldcata-no_sum = gc_x.
APPEND lwa_fieldcata TO gi_fieldcat.
CLEAR lwa_fieldcata.
lwa_fieldcata-fieldname = 'KZWI6'.
lwa_fieldcata-col_pos = 8.
lwa_fieldcata-ref_tabname = 'VBAK'.
lwa_fieldcata-seltext_l = 'Costed Sales'.
APPEND lwa_fieldcata TO gi_fieldcat.
CLEAR lwa_fieldcata.
lwa_fieldcata-fieldname = 'KZWI5'.
lwa_fieldcata-col_pos = 9.
lwa_fieldcata-ref_tabname = 'VBAK'.
lwa_fieldcata-seltext_l = 'Surcharges'.
APPEND lwa_fieldcata TO gi_fieldcat.
CLEAR lwa_fieldcata.
lwa_fieldcata-fieldname = 'TOTRE'.
lwa_fieldcata-col_pos = 10.
lwa_fieldcata-ref_tabname = 'VBAK'.
lwa_fieldcata-seltext_l = 'Total Revenues'.
APPEND lwa_fieldcata TO gi_fieldcat.
CLEAR lwa_fieldcata.
lwa_fieldcata-fieldname = 'ACTCO'.
lwa_fieldcata-col_pos = 11.
lwa_fieldcata-ref_tabname = 'VBAP'.
lwa_fieldcata-seltext_l = 'Actual Cost for Period'.
APPEND lwa_fieldcata TO gi_fieldcat.
CLEAR lwa_fieldcata.
lwa_fieldcata-fieldname = 'PROFIT'.
lwa_fieldcata-col_pos = 12.
lwa_fieldcata-ref_tabname = 'VBAK'.
lwa_fieldcata-seltext_l = 'Profit'.
APPEND lwa_fieldcata TO gi_fieldcat.
CLEAR lwa_fieldcata.
lwa_fieldcata-fieldname = 'PROWS'.
lwa_fieldcata-col_pos = 13.
lwa_fieldcata-ref_tabname = 'VBAK'.
lwa_fieldcata-seltext_l = 'Profit % w/surcharge'.
APPEND lwa_fieldcata TO gi_fieldcat.
CLEAR lwa_fieldcata.
lwa_fieldcata-fieldname = 'FISCY'.
lwa_fieldcata-col_pos = 14.
* lwa_fieldcata-ref_tabname = 'VBAK'.
lwa_fieldcata-seltext_l = 'Fiscal Year'.
APPEND lwa_fieldcata TO gi_fieldcat.
CLEAR lwa_fieldcata.
lwa_fieldcata-fieldname = 'FKZWI6'.
lwa_fieldcata-col_pos = 15.
lwa_fieldcata-ref_tabname = 'VBAK'.
lwa_fieldcata-seltext_l = 'Costed Sales'.
APPEND lwa_fieldcata TO gi_fieldcat.
CLEAR lwa_fieldcata.
lwa_fieldcata-fieldname = 'FKZWI5'.
lwa_fieldcata-col_pos = 16.
lwa_fieldcata-ref_tabname = 'VBAK'.
lwa_fieldcata-seltext_l = 'Surcharges'.
APPEND lwa_fieldcata TO gi_fieldcat.
CLEAR lwa_fieldcata.
lwa_fieldcata-fieldname = 'FTOTRE'.
lwa_fieldcata-col_pos = 17.
lwa_fieldcata-ref_tabname = 'VBAK'.
lwa_fieldcata-seltext_l = 'Total Revenues'.
APPEND lwa_fieldcata TO gi_fieldcat.
CLEAR lwa_fieldcata.
lwa_fieldcata-fieldname = 'FACTCO'.
lwa_fieldcata-col_pos = 18.
lwa_fieldcata-ref_tabname = 'VBAP'.
lwa_fieldcata-seltext_l = 'Actual Cost for Period'.
APPEND lwa_fieldcata TO gi_fieldcat.
CLEAR lwa_fieldcata.
lwa_fieldcata-fieldname = 'FPROFIT'.
lwa_fieldcata-col_pos = 19.
lwa_fieldcata-ref_tabname = 'VBAK'.
lwa_fieldcata-seltext_l = 'Profit'.
APPEND lwa_fieldcata TO gi_fieldcat.
CLEAR lwa_fieldcata.
lwa_fieldcata-fieldname = 'FPROWS'.
lwa_fieldcata-col_pos = 20.
lwa_fieldcata-ref_tabname = 'VBAK'.
lwa_fieldcata-seltext_l = 'Profit % w/surcharge'.
APPEND lwa_fieldcata TO gi_fieldcat.
ENDFORM. " mearge_field_catalog
*& Form set_event
FORM set_event .
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
i_list_type = 1
IMPORTING
et_events = gi_events.
SORT gi_events BY name.
*-- To read Top of Page event
PERFORM read_events USING slis_ev_top_of_page gc_top_of_page.
ENDFORM. " set_event
*& Form top_of_page
FORM n_top_of_page USING lp_top_of_page TYPE slis_t_listheader.
DATA: lwa_listhead TYPE slis_listheader,
lv_ccode TYPE string,
lv_sales TYPE string,
lv_divis TYPE string.
CONCATENATE 'From : ' s_bukrs-low ' To: ' s_bukrs-high INTO lv_ccode.
CONCATENATE 'From: ' s_vkorg-low ' To: ' s_vkorg-high INTO lv_sales.
CONCATENATE 'From: ' s_spart-low ' To: ' s_spart-high INTO lv_divis.
CLEAR lwa_listhead.
lwa_listhead-typ = 'H'.
lwa_listhead-info = text-003.
APPEND lwa_listhead TO lp_top_of_page.
CLEAR lwa_listhead.
lwa_listhead-typ = 'S'.
lwa_listhead-key = 'Month'.
lwa_listhead-info = p_monat.
APPEND lwa_listhead TO lp_top_of_page.
CLEAR lwa_listhead.
lwa_listhead-typ = 'S'.
lwa_listhead-key = 'Year'.
lwa_listhead-info = p_gjahr.
APPEND lwa_listhead TO lp_top_of_page.
CLEAR lwa_listhead.
lwa_listhead-typ = 'S'.
lwa_listhead-key = 'Company Code'.
lwa_listhead-info = lv_ccode.
APPEND lwa_listhead TO lp_top_of_page.
CLEAR lwa_listhead.
lwa_listhead-typ = 'S'.
lwa_listhead-key = 'Sales Org'.
lwa_listhead-info = lv_sales.
APPEND lwa_listhead TO lp_top_of_page.
CLEAR lwa_listhead.
lwa_listhead-typ = 'S'.
lwa_listhead-key = 'Division'.
lwa_listhead-info = lv_divis.
APPEND lwa_listhead TO lp_top_of_page.
IF p_det = gc_x.
CLEAR lwa_listhead.
lwa_listhead-typ = 'A'.
lwa_listhead-info = text-004.
APPEND lwa_listhead TO lp_top_of_page.
ELSE.
CLEAR lwa_listhead.
lwa_listhead-typ = 'A'.
lwa_listhead-info = text-005.
APPEND lwa_listhead TO lp_top_of_page.
ENDIF.
ENDFORM. "top_of_page
*& Form TOP_OF_PAGE
FORM top_of_page.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
i_logo = 'ENJOYSAP_LOGO'
it_list_commentary = gi_top_of_page.
ENDFORM. "TOP_OF_PAGE
*& Form build_layout
FORM build_layout .
gwa_layout-no_input = gc_x.
gwa_layout-colwidth_optimize = gc_x.
gwa_layout-zebra = gc_x.
ENDFORM. "build_layout
*& Form alv_grid_display
FORM alv_grid_display .
* Function module to display ALV report
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy-repid
is_layout = gwa_layout
it_fieldcat = gi_fieldcat[]
it_sort = gi_sort
i_save = 'A'
it_events = gi_events[]
TABLES
t_outtab = gi_final
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_grid_display
*& Form read_events
FORM read_events USING pr_events TYPE slis_alv_event-name
pr_eventname TYPE slis_formname.
DATA: lwa_event TYPE slis_alv_event.
CLEAR lwa_event.
READ TABLE gi_events INTO lwa_event
WITH KEY name = pr_events BINARY SEARCH.
IF sy-subrc = 0.
MOVE pr_eventname TO lwa_event-form.
MODIFY gi_events FROM lwa_event
TRANSPORTING form
WHERE name = pr_events.
ENDIF.
ENDFORM. " read_events
Regards
Sandipan -
HT1222 What is a pass code,for this next up date.never been asked that before
What's the pass code for this next update.never been asked that in the past
The passcode you need to enter is the passcode you set on your device. It is the passcode that you enter when you turn on your iPad or awaken it from sleep after and Auto lock.
If you do not know or remember your password and did not store it somewhere then you will have to restore your device.
http://support.apple.com/kb/HT1212 -
APP-ALR-04106: Please correct the user-defined SQL statement for this alert
Hi All,
I have created an alert for engineering module in R12. It got tested and was working fine. when the user testing it, while trigger the alert getting the error, "APP-ALR-04106: Please correct the user-defined SQL statement for this alert".
when verified the alert, it got verified and ran also. It parsed the query successfully and when run it fetched few records.
Need help in resolving the issue.
Thanks in advance.
Regards,
sri
Edited by: user10939296 on Jan 18, 2010 1:16 AMHi Sri;
I have already gone through the Note: 948037.1. But this note is related to 11i. The solution provided in the Note is for 11i.
I am facing this issue in R12. Is this patch applicable to R12?I belive its not. But u can check Solution part 4 for your instance, at least it can give you idea. The other note in metalink related bug and all for R11 too.
I belive its better way to rise Sr while waiting other forum user response to that thread
Regard
Helios
Maybe you are looking for
-
Error while loading data to Infocube using DTP.
Dear All I am facing problem while uploading data in Zinfocube. Up to PSA the data is loaded and not showing any error but when we try to upload the data from PSA to INFOCUBE through a DTP, It ens up showing error message (Error while updating to tar
-
My PC is no longer visible by my mac
my PC is no longer visible by my mac on the home network i created sometime ago. I did change some power settings on my PC but I do not see how this would effect network connection. It shows that my PC is online, also my Mac is as well. How ever my M
-
How can I download software from the App store a second time?
Hi, I purchased OS 10.7 from the App store because I no longer had the original discs from my computer. I downloaded it on to one of my computers, but now I want to put it on a second computer but the App Store say "You've already downloaded this " a
-
hi all, We have a requirement of report painter in our project.Any help in thei regard is highly appreciated. Any docs giving the basics of report painter is highly appreciated. Regards, Rajashree
-
How to handle hierarchies in process chain
Hi All, I am designing the process chain for a master GL account number . It has attribute hierarchy and text. I am successfully able to create the process chain for the attribute and text . But when i add the infopackage for the hierachy I am confus