Help me with returing multiple rows - Query
I am trying to return multiple rows and i need help with my query.
and most important of all one of the requirement is the following:
SERVICE LEVEL has categories Sergeant, Bonus I, All Deputies, Deputy Bailiff, Deputy Lockup, Deputy Bailiff Security, Custody Assistant,
Security Officer, Security Assistant, Security Officer and Security Assistant, Private Security, ALL, All Sworn)
Note: Service Level “All Deputies” includes Deputy Bailiff, Deputy Bailiff Security and Deputy Lockup
*“All Sworn”: includes Sergeant, Bonus I, All Deputies, Deputy Bailiff, Deputy Lockup, Deputy Bailiff Security*
//this code doesn't work cuz case- when statement return only one row. but it works for singles such as 'Sergeant'
select *
from in_service
where rank IN (CASE TRIM(UPPER(:SL))
WHEN 'ALL DEPUTIES' THEN
(SELECT DISTINCT RANK FROM IN_SERVICE
WHERE UPPER(RANK) LIKE 'DEPUTY%')
WHEN 'ALL SWORN' THEN
(SELECT DISTINCT RANK FROM IN_SERVICE
WHERE UPPER(RANK) LIKE 'DEPUTY%' OR
UPPER(RANK) = 'SERGEANT' OR
UPPER(RANK) = 'BONUS 1')
WHEN 'ALL' THEN
(SELECT DISTINCT RANK FROM IN_SERVICE
WHERE UPPER(RANK) LIKE 'DEPUTY%' OR
UPPER(RANK) = 'SERGEANT' OR
UPPER(RANK) = 'BONUS 1' OR
UPPER(RANK) LIKE 'SECURITY%' OR
UPPER(RANK) = 'CUSTODY ASSISTANT' OR
UPPER(RANK) = 'PRIVATE SECURITY')
end ) I was able to get multiple rows for 'ALL' and specified category like 'Sergeant' or 'Bonus I' from the code below, but NOT for 'All Deputies' for example which includes Deputy Bailiff, Deputy Bailiff Security and Deputy Lockup. I know CASE, WHEN does NOT return multiple rows, but i am having problems writing the query to make it work for all categories as the requirements mentioned above.
WHERE RANK IN (SELECT RANK FROM (SELECT RANK, 'ALL' ALL_SERVICE
FROM IN_SERVICE
UNION ALL
SELECT RANK, RANK
FROM IN_SERVICE) WHERE ALL_SERVICE = :SL)Please help.
Thanks in advance
If you define your service_level as a table then it will be much easier.
with service_level
as
select 'ALL' parent_lvl, 'Sergeant' srv_lvl from dual union all
select 'ALL', 'Bonus I' from dual union all
select 'ALL', 'Deputy Bailiff' from dual union all
select 'ALL', 'Deputy Lockup' from dual union all
select 'ALL', 'Deputy Bailiff Security' from dual union all
select 'ALL', 'Custody Assistant' from dual union all
select 'ALL', 'Security Officer' from dual union all
select 'ALL', 'Security Assistant' from dual union all
select 'ALL', 'Security Officer and Security Assistant' from dual union all
select 'ALL', 'Private Security' from dual union all
select 'All Deputies', 'Deputy Bailiff' srv_lvl from dual union all
select 'All Deputies', 'Deputy Bailiff Security' from dual union all
select 'All Deputies', 'Deputy Lockup' from dual union all
select 'All Sworn', 'Sergeant' srv_lvl from dual union all
select 'All Sworn','Bonus I' from dual union all
select 'All Sworn','All Deputies' from dual union all
select 'All Sworn','Deputy Bailiff' from dual union all
select 'All Sworn','Deputy Lockup' from dual union all
select 'All Sworn','Deputy Bailiff Security' from dual
select *
from in_service
where rank IN (
select srv_lvl
from service_level
where upper(parent_lvl) = upper(:SL)
or upper(srv_lvl) = upper(:SL)
)
Similar Messages
-
Hi,
a) I want to read EACH VALUE from a spreadsheet file having multiple rows and columns WITH DELAY. I am attaching my VI and sample datalog file for reference (tempsensor.txt).I need to do so because as soon as I read put ON the Sensor button on front panel, LV reads all the values at one go. I need the values for each temperature to be displayed after a delay.
b) Secondly, I would like to read another file containing the state of four antennas (deployed:1; undeployed:0). I am logging state of each antenna in each column of the file(magnet.txt) I need to have four LEDS on front panel to display state of the antennas. I dont know what I have done for antennas in my VI is right or wrong. I guess thats rhe wrong way to approach the problem. Please help!!!(column1: Antenna1 state ; Column2:Antenna2 state.. and so..on..)
Any help would be greatly appreciated!!
Thanks in advance,
Ratnesh
FYI: The first column in my datalog file represents timestamp(number of seconds elapsed), second column: reading for temperature sensor 1, third column: reading for temperature senosr 2, and so on. I am using approx. 11 temperature sensors.
Also, I have generated the log files for the reference purpose only. They do not represent the actual values. They are far away from actual values.
Attachments:
01032005.zip 30 KBLook at this modified version of your VI. After looking at it, I determined that a shift reggister was not required in this case.
Lynn
Attachments:
MultiSensors.2.vi 85 KB -
HELP - Nested Case Question (Multiple Rows)
OK, Now that the syntax has been corrected with the help of "Chanchal Wankhade" (Thank you very much!), I have an entirely new issue. I am sure this issue has to do with my case statement logic. I am getting multiple rows, when I am only looking for one. Here is my code:
SELECT
CASE
WHEN EP.PHYSICAL_DATE IS NULL
THEN
CASE
WHEN EC.ORIGINAL_CONTRACT_START < ((SYSDATE) - 365)
THEN 'NEEDS PHYSICAL'
WHEN EC.ORIGINAL_CONTRACT_START < ((SYSDATE) - 330)
THEN 'COMING UP'
ELSE 'No'
END
WHEN EP.PHYSICAL_DATE IS NOT NULL
THEN
CASE
WHEN MAX(EP.PHYSICAL_DATE) KEEP (DENSE_RANK LAST ORDER BY EP.PHYSICAL_DATE) < ((SYSDATE) - 365)
THEN 'NEEDS PHYSICAL'
WHEN MAX(EP.PHYSICAL_DATE) KEEP (DENSE_RANK LAST ORDER BY EP.PHYSICAL_DATE) < ((SYSDATE) - 330)
THEN 'COMING UP'
ELSE 'No'
END
END "Needs Physical?"
FROM AP AE
LEFT JOIN EMP_PHYSICAL EP
ON AE.EMP_ID = EP.EMP_ID
LEFT JOIN POSITION_OFFERED PO
ON AE.EMP_ID = PO.EMP_ID
LEFT JOIN EMP_CONTRACT EC
ON AE.EMP_ID = EC.EMP_ID
WHERE PO.ACTUAL_END IS NULL
AND (EP.PHYSICAL = 1
OR EP.PHYSICAL IS NULL)
AND :P71_EMP_ID = AE.EMP_ID
GROUP BY EP.PHYSICAL_DATE, EC.ORIGINAL_CONTRACT_START;The OUTPUT is:
Needs Physical?
Row 1 NEEDS PHYSICAL
Row 2 No
However, only one of these rows should be the output, which is "No". How do you get a nested case statement to evaluate to one result, instead of multiple? I'm quite sure it is in the logic. To spell it out, this is what I am trying to accomplish with the above code:
If the "EP.PHYSICAL_DATE" is null, then use these sets of formula's to evalute the output, BUT if the "EP.PHYSICAL_DATE" is not null, then use these set's of formula's to evaluate the output.
As it stands now, it appears as if my nested case statement is doing exactly what I told it to do, which is to evaluate both conditions, and output both.
Any help would be appreciated. Thanks.
Aqua
Edited by: AquaNX4 on Mar 26, 2013 6:30 AMIf you define your service_level as a table then it will be much easier.
with service_level
as
select 'ALL' parent_lvl, 'Sergeant' srv_lvl from dual union all
select 'ALL', 'Bonus I' from dual union all
select 'ALL', 'Deputy Bailiff' from dual union all
select 'ALL', 'Deputy Lockup' from dual union all
select 'ALL', 'Deputy Bailiff Security' from dual union all
select 'ALL', 'Custody Assistant' from dual union all
select 'ALL', 'Security Officer' from dual union all
select 'ALL', 'Security Assistant' from dual union all
select 'ALL', 'Security Officer and Security Assistant' from dual union all
select 'ALL', 'Private Security' from dual union all
select 'All Deputies', 'Deputy Bailiff' srv_lvl from dual union all
select 'All Deputies', 'Deputy Bailiff Security' from dual union all
select 'All Deputies', 'Deputy Lockup' from dual union all
select 'All Sworn', 'Sergeant' srv_lvl from dual union all
select 'All Sworn','Bonus I' from dual union all
select 'All Sworn','All Deputies' from dual union all
select 'All Sworn','Deputy Bailiff' from dual union all
select 'All Sworn','Deputy Lockup' from dual union all
select 'All Sworn','Deputy Bailiff Security' from dual
select *
from in_service
where rank IN (
select srv_lvl
from service_level
where upper(parent_lvl) = upper(:SL)
or upper(srv_lvl) = upper(:SL)
) -
Need help with turning multiple rows into a single row
Hello.
I've come across a situation that is somewhat beyond my knowledge base. I could use a little help with figuring this out.
My situation:
I am attempting to do some reporting from a JIRA database. What I am doing is getting the dates and times for specific step points of a ticket. This is resulting in many rows per ticket. What I need to do is return one row per ticket with a calculation of time between each step. But one issue is that if a ticket is re-opened, I want to ignore all data beyond the first close date. Also, not all tickets are in a closed state. I am attaching code and a sample list of the results. If I am not quite clear, please ask for information and I will attempt to provide more. The database is 10.2.0.4
select jiraissue.id, pkey, reporter, summary
,changegroup.created change_dt
,dbms_lob.substr(changeitem.newstring,15,1) change_type
,row_number() OVER ( PARTITION BY jiraissue.id ORDER BY changegroup.created ASC ) AS order_row
from jiraissue
,changeitem, changegroup
,(select * from customfieldvalue where customfield = 10591 and stringvalue = 'Support') phaseinfo
where jiraissue.project = 10110
and jiraissue.issuetype = 51
and dbms_lob.substr(changeitem.newstring,15,1) in ('Blocked','Closed','Testing','Open')
and phaseinfo.issue = jiraissue.id
and changeitem.groupid = changegroup.id
and changegroup.issueid = jiraissue.id
order by jiraissue.id,change_dt
Results:
1 21191 QCS-91 Error running the Earliest-deadlines flight interface request/response message 2008-07-16 9:30:38 AM Open 1
2 21191 QCS-91 Error running the Earliest-deadlines flight interface request/response message 2008-07-16 11:37:02 AM Testing 2
3 21191 QCS-91 Error running the Earliest-deadlines flight interface request/response message 2010-06-08 9:14:52 AM Closed 3
4 21191 QCS-91 Error running the Earliest-deadlines flight interface request/response message 2010-09-02 11:29:37 AM Open 4
5 21191 QCS-91 Error running the Earliest-deadlines flight interface request/response message 2010-09-02 11:29:42 AM Open 5
6 21191 QCS-91 Error running the Earliest-deadlines flight interface request/response message 2010-09-02 11:29:50 AM Testing 6
7 21191 QCS-91 Error running the Earliest-deadlines flight interface request/response message 2010-09-02 11:29:53 AM Closed 7
8 23234 QCS-208 System Baseline - OK button does not show up in the Defer Faults page for the System Engineer role 2008-10-03 10:26:21 AM Open 1
9 23234 QCS-208 System Baseline - OK button does not show up in the Defer Faults page for the System Engineer role 2008-11-17 9:39:39 AM Testing 2
10 23234 QCS-208 System Baseline - OK button does not show up in the Defer Faults page for the System Engineer role 2011-02-02 6:18:02 AM Closed 3
11 23977 QCS-311 Tally Sheet - Reason Not Done fails to provide reason for unassigned tasks 2008-09-29 2:44:54 PM Open 1
12 23977 QCS-311 Tally Sheet - Reason Not Done fails to provide reason for unassigned tasks 2010-05-29 4:47:37 PM Blocked 2
13 23977 QCS-311 Tally Sheet - Reason Not Done fails to provide reason for unassigned tasks 2011-02-02 6:14:57 AM Open 3
14 23977 QCS-311 Tally Sheet - Reason Not Done fails to provide reason for unassigned tasks 2011-02-02 6:15:32 AM Testing 4
15 23977 QCS-311 Tally Sheet - Reason Not Done fails to provide reason for unassigned tasks 2011-02-02 6:15:47 AM Closed 5Hi,
Welcome to the forum!
StblJmpr wrote:
... I am attempting to do some reporting from a JIRA database. What is a JIRA database?
I am attaching code and a sample list of the results. If I am not quite clear, please ask for information and I will attempt to provide more. Whenever you have a question, please post a little sample data (CREATE TABLE and INSERT statements, relevant columns only) for all tables involved, and the results you want from that data.
Simplify the problem as much as possible. For example, if the part you don't know how to do only involves 2 tables, then jsut post a question involving those 2 tables. So you might just post this much data:
CREATE TABLE changegroup
( issueid NUMBER
, created DATE
, id NUMBER
INSERT INTO changegroup (issueid, created, id) VALUES (21191, TO_DATE ('2008-07-16 09:30:38 AM', 'YYYY-MM-DD HH:MI:SS AM'), 10);
INSERT INTO changegroup (issueid, created, id) VALUES (21191, TO_DATE ('2008-07-16 11:37:02 AM', 'YYYY-MM-DD HH:MI:SS AM'), 20);
INSERT INTO changegroup (issueid, created, id) VALUES (21191, TO_DATE ('2010-06-08 09:14:52 AM', 'YYYY-MM-DD HH:MI:SS AM'), 90);
INSERT INTO changegroup (issueid, created, id) VALUES (21191, TO_DATE ('2010-09-02 11:29:37 AM', 'YYYY-MM-DD HH:MI:SS AM'), 10);
INSERT INTO changegroup (issueid, created, id) VALUES (21191, TO_DATE ('2010-09-02 11:29:42 AM', 'YYYY-MM-DD HH:MI:SS AM'), 10);
INSERT INTO changegroup (issueid, created, id) VALUES (21191, TO_DATE ('2010-09-02 11:29:50 AM', 'YYYY-MM-DD HH:MI:SS AM'), 20);
INSERT INTO changegroup (issueid, created, id) VALUES (21191, TO_DATE ('2010-09-02 11:29:53 AM', 'YYYY-MM-DD HH:MI:SS AM'), 90);
INSERT INTO changegroup (issueid, created, id) VALUES (23234, TO_DATE ('2008-10-03 10:26:21 AM', 'YYYY-MM-DD HH:MI:SS AM'), 10);
INSERT INTO changegroup (issueid, created, id) VALUES (23234, TO_DATE ('2008-11-17 09:39:39 AM', 'YYYY-MM-DD HH:MI:SS AM'), 20);
INSERT INTO changegroup (issueid, created, id) VALUES (23234, TO_DATE ('2011-02-02 06:18:02 AM', 'YYYY-MM-DD HH:MI:SS AM'), 90);
INSERT INTO changegroup (issueid, created, id) VALUES (23977, TO_DATE ('2008-09-29 02:44:54 PM', 'YYYY-MM-DD HH:MI:SS AM'), 10);
INSERT INTO changegroup (issueid, created, id) VALUES (23977, TO_DATE ('2010-05-29 04:47:37 PM', 'YYYY-MM-DD HH:MI:SS AM'), 30);
INSERT INTO changegroup (issueid, created, id) VALUES (23977, TO_DATE ('2011-02-02 06:14:57 AM', 'YYYY-MM-DD HH:MI:SS AM'), 10);
INSERT INTO changegroup (issueid, created, id) VALUES (23977, TO_DATE ('2011-02-02 06:15:32 AM', 'YYYY-MM-DD HH:MI:SS AM'), 20);
INSERT INTO changegroup (issueid, created, id) VALUES (23977, TO_DATE ('2011-02-02 06:15:47 AM', 'YYYY-MM-DD HH:MI:SS AM'), 90);
CREATE TABLE changeitem
( groupid NUMBER
, newstring VARCHAR2 (10)
INSERT INTO changeitem (groupid, newstring) VALUES (10, 'Open');
INSERT INTO changeitem (groupid, newstring) VALUES (20, 'Testing');
INSERT INTO changeitem (groupid, newstring) VALUES (30, 'Blocked');
INSERT INTO changeitem (groupid, newstring) VALUES (90, 'Closed');Then post the results you want to get from that data, like this:
ISSUEID HISTORY
21191 Open (0) >> Testing (692) >> Closed
23234 Open (45) >> Testing (807) >> Closed
23977 Open (607) >> Blocked (249) >> Open (0) >> Testing (0) >> ClosedExplain how you get those results from that data. For example:
"The output contains one row per issueid. The HISTORY coloumn shows the different states that the issue went through, in order by created, starting with the earliest one and continuing up until the first 'Closed' state, if there is one. Take the first row, issueid=21191, for example. It started as 'Open' on July 16, 2008, then, on the same day (that is, 0 days later) changed to 'Testing', and then, on June 8, 2010, (692 days later), it became 'Closed'. That same issue opened again later, on September 2, 2010, but I don't want to see any activity after the first 'Closed'."
The database is 10.2.0.4That's very important. Always post your version, like you did.
Here's one way to get those results from that data:
WITH got_order_row AS
SELECT cg.issueid
, LEAD (cg.created) OVER ( PARTITION BY cg.issueid
ORDER BY cg.created
- cg.created AS days_in_stage
, ROW_NUMBER () OVER ( PARTITION BY cg.issueid
ORDER BY cg.created
) AS order_row
, ci.newstring AS change_type
FROM changegroup cg
JOIN changeitem ci ON cg.id = ci.groupid
WHERE ci.newstring IN ( 'Blocked'
, 'Closed'
, 'Testing'
, 'Open'
-- AND ... -- any other filtering goes here
SELECT issueid
, SUBSTR ( SYS_CONNECT_BY_PATH ( change_type || CASE
WHEN CONNECT_BY_ISLEAF = 0
THEN ' ('
|| ROUND (days_in_stage)
|| ')'
END
, ' >> '
, 5
) AS history
FROM got_order_row
WHERE CONNECT_BY_ISLEAF = 1
START WITH order_row = 1
CONNECT BY order_row = PRIOR order_row + 1
AND issueid = PRIOR issueid
AND PRIOR change_type != 'Closed'
ORDER BY issueid
;Combining data from several rows into one big delimited VARCHAR2 column on one row is call String Aggregation .
I hope this answers your question, but I guessed at so many things, I won't be surprised if it doesn't. If that's the case, point out where this is wrong, post what the results should be in those places, and explain how you get those results. Post new data, if necessary. -
Help Required with an OUTER JOIN Query
Hi,
I need a list of records carrying UserID and ALL SectionIDs and SectionTitles he/she is associated
with so I created following query:
SELECT UsersSections.UserID, Sections.SectionID, Sections.SectionTitle
FROM UsersSections, Sections
WHERE UsersSections.SectionID(+) = Sections.SectionID AND UsersSections.UserID = 1
Where my tables are:
- UsersSections (UserID, SectionID)
- Sections (SectionID, SectionTitle)
The problem is that if I exclude WHERE UserID = '1' clause the query return the desired result i.e. ALL Sections
And ALL Users associated with the any Section(s). But I need results for a particular UserID but
Including WHERE UserID = '1' clause only return records for that User only not the sections he/she belongs to which was the purpose of using OUTER JOIN.
Any help will be highly appreciated.
Thanks.
AKGuserssections.userid (+) = 1
-
Hi
Table A have 2 Columns Col1, Col2.
I want to select all distinct values of Col1 that have 2 corresponding value ‘X’ and ‘Y’ in Col2
create table TabA
Col1 varchar(10),
col2 char(1)
insert into TabA values ('tem1','X');
insert into TabA values ('tem1','Y');
insert into TabA values ('tem1','Z');
insert into TabA values ('tem2','X');
insert into TabA values ('tem2','Y');
insert into TabA values ('tem2','Z');
insert into TabA values ('tem3','X');
insert into TabA values ('tem3','Z');
insert into TabA values ('tem4','Y');
insert into TabA values ('tem4','Z');
insert into TabA values ('tem5','X');I need a query that only return tem1 & tem2 as they have both X, Y in col2.
WishesCheck this.
select distinct col1 from (
select A.*, count(case when Col2 in ('X','Y') then 1
end) over ( partition by col1) cnt
from TabA A)
Where cnt = 2
Regards
RKWill not work for all cases:
SQL> select * from taba;
COL1 C
tem1 X
tem1 X
SQL> select distinct col1 from (
2 select A.*, count(case when Col2 in ('X','Y') then 1 end) over ( partition by col1) cnt
3 from TabA A)
4 Where cnt = 2
5 /
COL1
tem1 -
Help needed with Spry Grow/Shrink Query!
Dear All,
I am attempting to use the new spry effects in cs3 to grow (
and the optionally shrink) a city map for users.
My difficulty is that if you use an image at the correct 100%
size, but want to grow it from 10%, the 100% image displays as
default when you load the page, then once clicked it reszies up
from 10%.
I cant use a 10% image as my start point, because then the
'grown' map is illegible.
Any tips?
Cheers
SiUse OnLoad with grow and set both size fields to 10% with
milliseconds set to 0
Then onClick toggle grow from 100% (don't know why) to the
Pixel size you want for the second field. -
MULTIPLE-ROW drag and drop between 2 ALV grids
Hi,
Can anybody help me with acheiving MULTIPLE-ROW drag and drop functionality between 2 ALV grids.hi Prakash,
Actually I'm trying to develop multiple drag and drop between 2 ALV's. To understand the events properly, I started working on this sample program where it uses 1 ALV and splits it into 2 and uses single row drag and drop between them. Now I'm making it to work for multiple drag and drop, so that I can use it on my application. This is the code which I'm working on..
*& Report Z_ALV_GRID_CONTROLS_DRAG_DROP *
REPORT z_alv_grid_controls_drag_drop.
DATA : i_ztransactions TYPE TABLE OF ztransactions
WITH HEADER LINE.
DATA : i_ztransactions2 TYPE TABLE OF ztransactions
WITH HEADER LINE.
DATA : ok_code LIKE sy-ucomm .
DATA : mcontainer TYPE REF TO cl_gui_custom_container .
DATA : mcontleft TYPE REF TO cl_gui_container .
DATA : mcontright TYPE REF TO cl_gui_container .
DATA : msplitcont TYPE REF TO
cl_gui_easy_splitter_container .
DATA : malv_left TYPE REF TO cl_gui_alv_grid .
DATA : malv_right TYPE REF TO cl_gui_alv_grid .
DATA : mrow TYPE lvc_s_row .
DATA : gt_outtab_source TYPE ztransactions.
DATA : gt_outtab_target TYPE ztransactions.
DATA : g_repid LIKE sy-repid.
DATA: gs_layout TYPE lvc_s_layo ,
g_behaviour_alv TYPE REF TO cl_dragdrop .
DATA : mlines TYPE i .
CLASS lcl_dragdropobj DEFINITION
This is the Class of Drag Drop Object .
This Object is used as a temporary storage means
of the information extracted with drag
CLASS lcl_dragdropobj DEFINITION.
PUBLIC SECTION.
DATA: i_ztransactions TYPE ztransactions ,
index TYPE i ,
original_table(5) TYPE c ,
proceed_trans(1) TYPE c .
ENDCLASS. "lcl_dragdropobj DEFINITION
DATA : mdata TYPE REF TO lcl_dragdropobj .
CLASS DND_TOOLS DEFINITION
This class contains the methods responding to the
events ONDRAG , ONDROP , ONDROPCOMPLETE
of the ALV Grid Controls
CLASS dnd_tools DEFINITION .
PUBLIC SECTION .
METHODS:handle_user_command
FOR EVENT user_command OF
cl_gui_alv_grid
IMPORTING
e_ucomm.
METHODS : handle_drag_from_left
FOR EVENT ondrag OF
cl_gui_alv_grid
IMPORTING
e_row
e_dragdropobj .
METHODS : handle_dropcomplete_from_left
FOR EVENT ondropcomplete OF
cl_gui_alv_grid
IMPORTING
e_row
e_dragdropobj .
METHODS : handle_drag_from_right
FOR EVENT ondrag OF
cl_gui_alv_grid
IMPORTING
e_row
e_dragdropobj .
METHODS : handle_dropcomplete_from_right
FOR EVENT ondropcomplete OF
cl_gui_alv_grid
IMPORTING
e_row
e_dragdropobj .
METHODS : handle_drop_to_left
FOR EVENT ondrop OF
cl_gui_alv_grid
IMPORTING
e_dragdropobj .
METHODS : handle_drop_to_right
FOR EVENT ondrop OF
cl_gui_alv_grid
IMPORTING
e_dragdropobj .
ENDCLASS . "DND_TOOLS DEFINITION
CLASS DND_TOOLS IMPLEMENTATION
CLASS dnd_tools IMPLEMENTATION .
METHOD handle_drag_from_left .
METHOD handle_user_command.
DATA: lt_rows TYPE lvc_t_row.
DATA: lt_rows TYPE lvc_t_roid.
DATA: lt_row TYPE lvc_s_roid.
DATA: mdata TYPE REF TO lcl_dragdropobj .
DATA: dragdropobj TYPE REF TO lcl_dragdropobj .
get selected row
CALL METHOD malv_left->get_selected_rows
IMPORTING
et_row_no = lt_rows.
CALL METHOD cl_gui_cfw=>flush.
IF sy-subrc NE 0.
add your handling, for example
CALL FUNCTION 'POPUP_TO_INFORM'
EXPORTING
titel = g_repid
txt2 = sy-subrc
txt1 = 'Error in Flush'(500).
ENDIF.
CREATE OBJECT mdata.
LOOP AT lt_rows INTO lt_row.
mrow = lt_row .
READ TABLE i_ztransactions INDEX lt_row-row_id INTO
i_ztransactions.
MOVE i_ztransactions TO mdata->i_ztransactions .
MOVE lt_row-row_id TO mdata->index.
MOVE 'LEFT' TO mdata->original_table .
e_dragdropobj->object = mdata .
ENDLOOP.
ENDMETHOD. "handle_user_command
METHOD handle_dropcomplete_from_left .
NB : the following data object MDATA is local to
the method and contains the information from the
import parameter of the method E_DRAGDROPOBJ
DATA : mdata TYPE REF TO lcl_dragdropobj .
DATA: lt_rows TYPE lvc_t_roid.
DATA: lt_row TYPE lvc_s_roid.
CALL METHOD malv_left->get_selected_rows
IMPORTING
et_row_no = lt_rows.
CALL METHOD cl_gui_cfw=>flush.
IF sy-subrc NE 0.
add your handling, for example
CALL FUNCTION 'POPUP_TO_INFORM'
EXPORTING
titel = g_repid
txt2 = sy-subrc
txt1 = 'Error in Flush'(500).
ENDIF.
LOOP AT lt_rows INTO lt_row.
mdata ?= e_dragdropobj->object .
CHECK mdata->proceed_trans = 'X' .
mrow = mdata->index.
DELETE i_ztransactions INDEX mrow .
APPEND mdata->i_ztransactions TO i_ztransactions2 .
SORT i_ztransactions2 BY kunnr belnr .
DELETE i_ztransactions2 WHERE kunnr IS INITIAL .
DESCRIBE TABLE i_ztransactions LINES mlines .
IF mlines EQ 0 .
CLEAR i_ztransactions .
APPEND i_ztransactions TO i_ztransactions .
ENDIF .
ENDLOOP.
CALL METHOD malv_left->refresh_table_display.
CALL METHOD malv_right->refresh_table_display.
ENDMETHOD . "HANDLE_DROPCOMPLETE_FROM_LEFT
METHOD handle_drag_from_right.
mrow = e_row-index .
READ TABLE i_ztransactions2 INDEX mrow INTO
i_ztransactions2 .
CREATE OBJECT mdata .
MOVE i_ztransactions2 TO mdata->i_ztransactions .
MOVE mrow TO mdata->index .
MOVE 'RIGHT' TO mdata->original_table .
e_dragdropobj->object = mdata .
ENDMETHOD . "HANDLE_DRAG_FROM_RIGHT
METHOD handle_dropcomplete_from_right .
DATA : mdata TYPE REF TO lcl_dragdropobj .
mdata ?= e_dragdropobj->object .
CHECK mdata->proceed_trans = 'X' .
mrow = mdata->index .
DELETE i_ztransactions2 INDEX mrow .
APPEND mdata->i_ztransactions TO i_ztransactions .
SORT i_ztransactions BY kunnr belnr .
DELETE i_ztransactions WHERE kunnr IS INITIAL .
DESCRIBE TABLE i_ztransactions2 LINES mlines .
IF mlines EQ 0 .
CLEAR i_ztransactions2 .
APPEND i_ztransactions2 TO i_ztransactions2 .
ENDIF .
CALL METHOD malv_left->refresh_table_display.
CALL METHOD malv_right->refresh_table_display.
ENDMETHOD . "HANDLE_DROPCOMPLETE_FROM_RIGHT
METHOD handle_drop_to_left .
DATA : mdata TYPE REF TO lcl_dragdropobj .
mdata ?= e_dragdropobj->object .
IF mdata->original_table = 'RIGHT' .
mdata->proceed_trans = 'X' .
ELSE .
mdata->proceed_trans = ' ' .
ENDIF .
e_dragdropobj->object = mdata .
ENDMETHOD . "HANDLE_DROP_TO_LEFT
METHOD handle_drop_to_right .
DATA : mdata TYPE REF TO lcl_dragdropobj .
DATA: lt_rows TYPE lvc_t_roid.
DATA: lt_row TYPE lvc_s_roid.
CALL METHOD malv_left->get_selected_rows
IMPORTING
et_row_no = lt_rows.
CALL METHOD cl_gui_cfw=>flush.
IF sy-subrc NE 0.
add your handling, for example
CALL FUNCTION 'POPUP_TO_INFORM'
EXPORTING
titel = g_repid
txt2 = sy-subrc
txt1 = 'Error in Flush'(500).
ENDIF.
LOOP AT lt_rows INTO lt_row.
mdata ?= e_dragdropobj->object .
IF mdata->original_table = 'LEFT' .
mdata->proceed_trans = 'X' .
ELSE .
mdata->proceed_trans = ' ' .
ENDIF .
e_dragdropobj->object = mdata .
ENDLOOP.
ENDMETHOD . "HANDLE_DROP_TO_RIGHT
ENDCLASS . "DND_TOOLS IMPLEMENTATION
DATA : mlistener TYPE REF TO dnd_tools .
======================================================
START OF SELECTION
======================================================
START-OF-SELECTION .
PERFORM get_data .
CALL SCREEN 100 .
The screen 100 has the custom control MCONTAINER and
on the flow logic has the following modules :
PROCESS BEFORE OUTPUT.
MODULE STATUS_0100.
MODULE PREPARE_SCREEN .
PROCESS AFTER INPUT.
MODULE USER_COMMAND_0100.
(Off course not commented out in the real flow logic)
FORM GET_DATA *
FOR THIS EXAMPLE THE DATA SELECTION IS HARD CODED
FORM get_data .
CLEAR : i_ztransactions , i_ztransactions[] .
i_ztransactions-mandt = sy-mandt .
i_ztransactions-waers = 'EUR ' .
i_ztransactions-kunnr = '0000000001' .
i_ztransactions-belnr = '0000000001' .
i_ztransactions-bldat = '20030101' .
i_ztransactions-dmbtr = '1000' .
APPEND i_ztransactions .
i_ztransactions-belnr = '0000000002' .
i_ztransactions-bldat = '20030202' .
i_ztransactions-dmbtr = '1010' .
APPEND i_ztransactions .
i_ztransactions-belnr = '0000000003' .
i_ztransactions-bldat = '20030323' .
i_ztransactions-dmbtr = '1020' .
APPEND i_ztransactions .
i_ztransactions-belnr = '0000000004' .
i_ztransactions-bldat = '20030404' .
i_ztransactions-dmbtr = '1030' .
APPEND i_ztransactions .
i_ztransactions-belnr = '0000000005' .
i_ztransactions-bldat = '20030505' .
i_ztransactions-dmbtr = '1040' .
APPEND i_ztransactions .
i_ztransactions-belnr = '0000000006' .
i_ztransactions-bldat = '20030606' .
i_ztransactions-dmbtr = '1050' .
APPEND i_ztransactions .
i_ztransactions-belnr = '0000000007' .
i_ztransactions-bldat = '20030707' .
i_ztransactions-dmbtr = '1060' .
APPEND i_ztransactions .
i_ztransactions-belnr = '0000000008' .
i_ztransactions-bldat = '20030808' .
i_ztransactions-dmbtr = '1070' .
APPEND i_ztransactions .
i_ztransactions-belnr = '0000000009' .
i_ztransactions-bldat = '20030909' .
i_ztransactions-dmbtr = '1080' .
APPEND i_ztransactions .
i_ztransactions-belnr = '0000000010' .
i_ztransactions-bldat = '20031010' .
i_ztransactions-dmbtr = '1090' .
APPEND i_ztransactions .
CLEAR : i_ztransactions2 , i_ztransactions2[] .
APPEND i_ztransactions2 .
ENDFORM . "GET_DATA
*& Module STATUS_0100 OUTPUT
The PF STATUS STATUS100 called from the module below,
has on the Standard toolbar the buttons
BACK , EXIT and CANCEL .
These buttons are provided with function code = 'EXIT'
MODULE status_0100 OUTPUT.
SET TITLEBAR 'TITLEDRAGDROP' .
SET PF-STATUS 'STATUS100'.
ENDMODULE. " STATUS_0100 OUTPUT
Module USER_COMMAND_0100 INPUT
The following module checks the User Command and ends
the program
MODULE user_command_0100 INPUT.
IF ok_code = 'EXIT' .
CLEAR : mcontainer ,
mcontleft ,
mcontright ,
msplitcont ,
malv_left ,
malv_right .
LEAVE TO SCREEN 0 .
ENDIF .
ENDMODULE. " USER_COMMAND_0100 INPUT
*& Module PREPARE_SCREEN OUTPUT
MODULE prepare_screen OUTPUT.
IF mcontainer IS INITIAL .
CREATE OBJECT mcontainer
EXPORTING
container_name = 'MCONTAINER' .
CREATE OBJECT msplitcont
EXPORTING
parent = mcontainer
orientation = 1 .
mcontleft = msplitcont->top_left_container .
mcontright = msplitcont->bottom_right_container .
CREATE OBJECT malv_left
EXPORTING i_parent = mcontleft .
gs_layout-sel_mode = 'D'.
CREATE OBJECT malv_right
EXPORTING i_parent = mcontright .
gs_layout-sel_mode = 'D'.
PERFORM set_layout_capable_of_drag_dro
USING 'X' 'X' .
CALL METHOD malv_left->set_table_for_first_display
EXPORTING
i_structure_name = 'ZTRANSACTIONS'
is_layout = gs_layout
CHANGING
it_outtab = i_ztransactions[].
CALL METHOD malv_right->set_table_for_first_display
EXPORTING
i_structure_name = 'ZTRANSACTIONS'
is_layout = gs_layout
CHANGING
it_outtab = i_ztransactions2[].
CREATE OBJECT mlistener .
CALL METHOD malv_left->set_toolbar_interactive.
SET HANDLER mlistener->handle_drag_from_left
FOR malv_left .
SET HANDLER mlistener->handle_dropcomplete_from_left
FOR malv_left .
SET HANDLER mlistener->handle_drag_from_right
FOR malv_right.
SET HANDLER mlistener->handle_dropcomplete_from_right
FOR malv_right .
SET HANDLER mlistener->handle_drop_to_right
FOR malv_right .
SET HANDLER mlistener->handle_drop_to_left
FOR malv_left .
ENDIF .
ENDMODULE. " PREPARE_SCREEN OUTPUT
Form SET_LAYOUT_CAPABLE_OF_DRAG_DRO
Definition of a Drag & Drop behaviour for the ALV
grid
FORM set_layout_capable_of_drag_dro USING drag drop.
DATA : effect TYPE i ,
handle_alv TYPE i .
CREATE OBJECT g_behaviour_alv.
effect = cl_dragdrop=>move + cl_dragdrop=>copy .
CALL METHOD g_behaviour_alv->add
EXPORTING
flavor = 'Line'
dragsrc = drag
droptarget = drop
effect = effect.
CALL METHOD g_behaviour_alv->get_handle
IMPORTING
handle = handle_alv.
gs_layout-s_dragdrop-row_ddid = handle_alv.
ENDFORM. " SET_LAYOUT_CAPABLE_OF_DRAG_DRO -
Cursor fetch with multiple rows
I have been given code which, effectively, looks like this:
declare
cursor cTest is select * from (select 'one' from dual union all select 'two' from dual);
lvText varchar2(10);
begin
open cTest;
fetch cTest into lvText;
close cTest;
dbms_output.put_line(lvText);
end;
/That consistently returns just the result "one", even though there are two rows in the cursor.
If I re-write the code like this:
declare
lvText varchar2(10);
begin
select thecol into lvText from (select 'one' as thecol from dual union all select 'two' from dual);
dbms_output.put_line(lvText);
end;
/...then I get the error I expected (ORA-01422: exact fetch returns more than requested number of rows).
I guess I am a bit surprised the "fetch into" syntax (which I haven't used before) works at all. Why doesn't it spot that multiple rows are being loaded into a single variable and explode? I am guessing that which row 'wins' the competition to be assigned to the variable is completely indeterminate? Any doco on this behaviour you can point me at, please? The bit I read (http://docs.oracle.com/cd/B28359_01/appdev.111/b28370/fetch_statement.htm) simply says that "You must use either a cursor FOR loop or the FETCH statement to process a multiple-row query", but it doesn't say "the code will silent grab one of the rows at random if you use the FETCH statement on a multiple-row resultset".
(tested on 11.2.0.3, if it makes a difference)>
I realise FETCH fetches one row. The problem is that without a loop, doing so is 'wrong', logically. But it's still allowed, and I can't find anywhere in the doco that says "if you use FETCH, you MUST loop through the results, otherwise we will only return the first row, which will then probably be a bug in your code".
I'm asking for something from the doco (or from a website somewhere, maybe) that explains that "fetch without loops will work, but will be wrong". It's not something I expected, put it that way. It's something I would have thought others would have tripped over before now, anyway. In what I've read, like your code example here, you just see fetch-with-loops, with the unstated assumption made that you'd never do it any other way. I've not seen it explicitly said that it's possible to do it without a loop, but would be a dumb thing to do.
>
Oracle has no way to know what a developer is trying to do or how many rows a cursor will return.
It isn't necessarily true that "fetch without loops will work, but will be wrong". My cursor might only return one row.
What about a BULK COLLECT INTO without a LIMIT clause? Should Oracle tell you that if you query too many records you may run out of memory?
What about a BULK COLLECT INTO with a limit clause? Should Oracle tell you that "bulk collect with limit without a loop will work, but will be wrong"? It isn't necessarily wrong either. -
LIKE operator in multiple-row subqueries
Hello,
in a test i saw 2 questions:
Which operator can be used with a multiple-row subquery?
A. =
B. LIKE
C. BETWEEN
D. NOT IN
E. IS
F. <>
Answer: D
and
Which two statements about subqueries are true? (Choose two.)
A. A single row subquery can retrieve data from only one table.
B. A SQL query statement cannot display data from table B that is referred to in its
subquery, unless table B is included in the main query's FROM clause.
C. A SQL query statement can display data from table B that is referred to in its subquery,
without including table B in its own FROM clause.
D A single row subquery can retrieve data from more than one table.
E. A single row subquery cannot be used in a condition where the LIKE operator is used for
comparison.
F. A multiple-row subquery cannot be used in a condition where the LIKE operator is used for
comparison.
Answer: B & D
But in the last question, why F is not correct? because the 1st question says that only NOT IN can be used in multiple-row subqueries. I'm confused
Thanksonly two, but what principle applies if not specified? First two correct?
however, in explanation i saw something like this (regarding to the 2nd question)
Incorrect Answers
A: A single row sub-query can retrieve data from more than one table.
C: A SQL query statement cannot display data from table B that is referred to in its subquery,
unless table B is included in the main query's FROM clause.
E: A single row sub-query can be used in a condition where the LIKE operator is used for
comparison.
F: A multiple-row sub-query can be used in a condition where the LIKE operator is used for
comparison.
so, at F: can be used or nor? they aren't so clear. only which operators can be used in multiple-row subquery? -
Hi,
I can't see the option to Multiple Rows Copy and Paste to the other page. Please help, thanks."Curious, there is no "copy option" click to the reference tab of the first row?"
What you see is what you get. There is no "copy" choice in the reference tab menu for any of the rows (or columns). I'm not certain how the presence of one would help with a "Multiple Rows Copy."
You can click on a reference tab to select the row, drag to add to the selection, release the mouse button, right click on any cell in the row, then choose Copy from the popup contextual menu. I don't know that that is any more efficient than what I described earlier, though.
Regards,
Barry -
Selecting multiple rows in a table
Hi All,
I have one problem with selecting multiple rows in a table.I tried with setting table property-selectionMode as Multi, but i dinn't get the solution.
please provide me solution for this.
Thanks & Regards,
Sreelakshmi.HI
Int leadSelection = wdcontext.nodemodelnode.getLeadSelection();
for(int i=0;i<wdcontext.nodeModelNode.size;i++)
if(wdcontext.nodeModelNode.isMultiselected(i) || leadSelection ==i)
String name = wdcontext.nodemodelnode.getnameelementatindex(i).getName();
String address = wdcontext.nodemodelnode.getaddresselementatindex(i).getAddress();
String age = wdcontext.nodemodelnode.getAgeelementatindex(i).getAge();
Create a method for the Table Property onLeadSelect() where you can open a popup window
Create a value node and with attributes same as Table attributes and then set the values of the table
to the value node attributes.
Thanks -
Help req : alv grid with multiple row selection
Hi all sap gurus,
i have a alv list display program , in which i can select the o/p rows(multiple rows)
and perform some actiom based on some icons .
now i have to convert this in to grid display
this is initial code i.e for list
DATA : BEGIN OF itab OCCURS 0.
INCLUDE STRUCTURE ztest.
DATA : checkbox type c.
DATA : END OF itab.
s_layout-box_fieldname = 'CHECKBOX'.
ty_events-name = slis_ev_top_of_page.
ty_events-form = 'TOP_OF_PAGE'.
APPEND ty_events TO it_events.
ALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_program_name = v_repid
i_internal_tabname = 'ITAB'
i_inclname = v_repid
CHANGING
ct_fieldcat = build_fieldcatalog.
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = ' '
I_BUFFER_ACTIVE = ' '
i_callback_program = v_repid
i_callback_pf_status_set = 'SET_PF_STATUS'
i_callback_user_command = 'USER_COMMAND'
i_structure_name = 'ITAB'
is_layout = s_layout
it_fieldcat = build_fieldcatalog[]
IT_EXCLUDING =
IT_SPECIAL_GROUPS =
IT_SORT =
IT_FILTER =
IS_SEL_HIDE =
I_DEFAULT = 'X'
I_SAVE = ' '
IS_VARIANT =
it_events = it_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 = itab
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.
FORM user_command USING ucomm LIKE sy-ucomm
selfield TYPE slis_selfield.
IF ucomm = 'DELE'.
LOOP AT iTAB WHERE CHECKbox = 'X' .
ENDLOOP.
MODIFY ztEST FROM TABLE itAB.
ENDIF.
selfield-refresh = 'X'.
ENDFORM.
NOW I HAVE A LIST O/P WHERE I CAN SELECT THE BOX AND CLICK DELETE ICON.
NOW I WANT TO CHANGE TO GRID, SO I KEPT EVERYTHING SAMRE AND I CHANGED " LIST" TO "GRID"
NOW TWO THINGS HAPPEND
1) I SEE A EMPTY COLUMN IN THE O/P , I GUESS THATS BECAUSE CHECKBOSX IN INTERNAL TABLE , SO I REMOVED IT
SO THIS MADE ME TO REMOVE
IF ucomm = 'DELE'.
LOOP AT iTAB." WHERE CHECKbox = 'X' .------PROBLEM
ENDLOOP.
MODIFY ztEST FROM TABLE itAB.
ENDIF.
selfield-refresh = 'X'.
NOW I DON'T SEE THE EMPTY COLUMN , BUT NOW PROBLEM IS I CANNNOT DISTINGUISH AS TO WHICH IS SELECTED AND AT ANY POINT OF TIME I CANSELECT ONLY ROW.
ALL I WANT IS
1) I WANT TO SELECT MULTIPLE ROWS AND SHOULD BE ABLE TO KNOW WHICH ROWS WERE SELECTED IN THE O/P SCREEN.
IN THE LIST DISPLAY I HAD CHECKBOX = 'X' FOR ALL THE ROWS THAT WERE SELECTED , I WANT THE SIMILAR THING in grid display
LET ME KNOW whether this can be done without USING 00 LANG.
thanksHi Swati,
Below code might help full for you. Description: is It selects multiple rows from ALV and display it on the next ALV.
*************************Reward Point If help full********************************************
*& Report z7cc_alv_oops_show_next_alv *
*& DEVELOPERS NAME : CHIDANAND CHAUHAN
*& DATE: SATURDAY 08-07-2006
*& DESCRIPTION: TO CREATE AN OBJECT ORIENTED ALV
REPORT z7cc_alv_oops_show_next_alv MESSAGE-ID z5hs .
DATA : BEGIN OF it_mara OCCURS 0,
mark TYPE flag,
matnr TYPE matnr,
mtart TYPE mtart,
meins TYPE meins,
END OF it_mara.
DATA : BEGIN OF it_mara1 OCCURS 0,
* mark type flag,
matnr TYPE matnr,
mtart TYPE mtart,
meins TYPE meins,
END OF it_mara1.
DATA : BEGIN OF it_mara2 OCCURS 0,
* mark type flag,
matnr TYPE matnr,
mtart TYPE mtart,
meins TYPE meins,
END OF it_mara2.
DATA : t_fieldcat TYPE lvc_t_fcat,
t_fieldcat1 TYPE lvc_t_fcat,
s_fieldcat LIKE LINE OF t_fieldcat.
DATA : s_layout TYPE lvc_s_layo.
DATA : control TYPE REF TO cl_gui_custom_container,
grid TYPE REF TO cl_gui_alv_grid.
DATA: BEGIN OF wa ,
mark TYPE flag,
matnr TYPE matnr,
mtart TYPE mtart,
meins TYPE meins,
END OF wa.
* CLASS lcl_events_box DEFINITION
CLASS lcl_events_box DEFINITION.
PUBLIC SECTION.
METHODS :
*Handler_Data_Changed for event Data_Changed of cl_gui_alv_grid
*imporTing er_data_changed,
handler_user_command FOR EVENT user_command OF cl_gui_alv_grid
IMPORTING e_ucomm,
handler_toolbar FOR EVENT toolbar OF cl_gui_alv_grid
IMPORTING e_object e_interactive.
ENDCLASS. "lcl_events_box DEFINITION
* CLASS lcl_events_box IMPLEMENTATION
CLASS lcl_events_box IMPLEMENTATION.
* method to handle the user command.
METHOD handler_user_command.
PERFORM form_usercommand CHANGING e_ucomm.
ENDMETHOD. "Handler_user_command
*& Mehod to handle the toolbar.
METHOD handler_toolbar.
PERFORM form_toolbar CHANGING e_object e_interactive
e_object->mt_toolbar.
ENDMETHOD. "Handler_ToolBar
ENDCLASS. "lcl_events_box IMPLEMENTATION
START-OF-SELECTION.
DATA : w_events TYPE REF TO lcl_events_box.
SELECT matnr mtart meins FROM mara INTO CORRESPONDING FIELDS OF TABLE
it_mara.
CALL SCREEN 100.
*& Module pbo_module OUTPUT
* text
MODULE pbo_module OUTPUT.
IF grid IS INITIAL.
CREATE OBJECT control
EXPORTING
container_name = 'CUST_CTRL'.
CREATE OBJECT grid
EXPORTING
i_parent = control.
PERFORM build_catalog.
PERFORM build_catalog1.
PERFORM build_layout.
CALL METHOD grid->set_table_for_first_display
EXPORTING
is_layout = s_layout
CHANGING
it_outtab = it_mara[]
it_fieldcatalog = t_fieldcat.
CREATE OBJECT w_events.
SET HANDLER : w_events->handler_toolbar FOR grid,
w_events->handler_user_command FOR grid.
CALL METHOD grid->set_toolbar_interactive.
ELSE.
CALL METHOD grid->refresh_table_display.
ENDIF.
ENDMODULE. " pbo_module OUTPUT
*& Form BUILD_CATALOG
FORM build_catalog .
s_fieldcat-col_pos = '1'.
s_fieldcat-fieldname = 'MARK'.
s_fieldcat-checkbox = 'X'.
s_fieldcat-edit = 'X'.
APPEND s_fieldcat TO t_fieldcat.
CLEAR s_fieldcat.
s_fieldcat-col_pos = '2'.
s_fieldcat-fieldname = 'MATNR'.
s_fieldcat-scrtext_m = 'MATERIAL'.
APPEND s_fieldcat TO t_fieldcat.
s_fieldcat-col_pos = '3'.
s_fieldcat-fieldname = 'MTART'.
s_fieldcat-scrtext_m = 'MATERL TYPE'.
APPEND s_fieldcat TO t_fieldcat.
s_fieldcat-col_pos = '4'.
s_fieldcat-fieldname = 'MEINS'.
s_fieldcat-scrtext_m = 'UOM'.
APPEND s_fieldcat TO t_fieldcat.
ENDFORM. " BUILD_CATALOG
*& Form BUILD_LAYOUT
* text
* --> p1 text
* <-- p2 text
FORM build_layout .
s_layout-zebra = 'X'.
* S_LAYOUT-CWIDTH_OPT = 'X'.
s_layout-grid_title = 'Material Details'.
ENDFORM. "BUILD_LAYOUT
" BUILD_LAYOUT////////////////////////////////////
" USER_COMMAND_0100 INPUT
*& Form FORM_USERCOMMAND
* text
* <--P_E_UCOMM text
FORM form_usercommand CHANGING p_e_ucomm.
CASE p_e_ucomm.
WHEN 'INT1'.
DO.
READ TABLE it_mara INDEX sy-index TRANSPORTING mark matnr.
IF sy-subrc <> 0.
EXIT.
ENDIF.
IF it_mara-mark = 'X'.
READ TABLE it_mara INTO wa TRANSPORTING matnr mtart meins .
MOVE-CORRESPONDING wa TO it_mara1.
READ TABLE it_mara1 TRANSPORTING matnr mtart meins .
MOVE-CORRESPONDING it_mara1 TO it_mara2.
APPEND it_mara2.
CALL METHOD grid->set_table_for_first_display
EXPORTING
is_layout = s_layout
CHANGING
it_outtab = it_mara2[]
it_fieldcatalog = t_fieldcat1.
* SET PARAMETER ID 'MAT' FIELD IT_MARA-MATNR.
* CALL TRANSACTION 'MM02'.
ENDIF.
* ENDIF.
ENDDO.
ENDCASE.
ENDFORM. " FORM_USERCOMMAND
*& Form FORM_TOOLBAR
* text
* <--P_E_OBJECT text
* <--P_E_INTERACTIVE text
* <--P_E_OBJECT_>MT_TOOLBAR text
FORM form_toolbar CHANGING p_e_object TYPE REF TO
cl_alv_event_toolbar_set
p_e_interactive
mt_toolbar TYPE ttb_button.
DATA wal_button TYPE stb_button.
*WAL_BUTTON-ICON = ICON_status_reverse.
wal_button-text = 'GO'.
wal_button-quickinfo = 'PROCEED'.
wal_button-function = 'INT1'.
wal_button-butn_type = 0.
wal_button-disabled = space.
INSERT wal_button INTO p_e_object->mt_toolbar INDEX 1.
ENDFORM. " FORM_TOOLBAR
*& Module PF-STATUS OUTPUT
* text
MODULE pf-status OUTPUT.
SET PF-STATUS 'Z7CCSTAT'.
ENDMODULE. " PF-STATUS OUTPUT
*& Module USER_COMMAND_0100 INPUT
* text
MODULE user_command_0100 INPUT.
CASE sy-ucomm.
WHEN 'BACK'.
LEAVE PROGRAM.
WHEN 'CANCEL'.
LEAVE PROGRAM.
ENDCASE.
ENDMODULE. " USER_COMMAND_0100 INPUT
*& Form BUILD_CATALOG1
* text
* --> p1 text
* <-- p2 text
FORM build_catalog1 .
s_fieldcat-col_pos = '1'.
s_fieldcat-fieldname = 'MATNR'.
s_fieldcat-scrtext_m = 'MATERIAL'.
APPEND s_fieldcat TO t_fieldcat1.
s_fieldcat-col_pos = '2'.
s_fieldcat-fieldname = 'MTART'.
s_fieldcat-scrtext_m = 'MATERL TYPE'.
APPEND s_fieldcat TO t_fieldcat1.
s_fieldcat-col_pos = '3'.
s_fieldcat-fieldname = 'MEINS'.
s_fieldcat-scrtext_m = 'UOM'.
APPEND s_fieldcat TO t_fieldcat1.
ENDFORM. " BUILD_CATALOG1 -
Please help with multiple insert query into nested table!!!!
I am having a problem with inserting multiple references to objects into a nested table using the following query:
INSERT INTO TABLE(SELECT Taken_by FROM courses WHERE course_number= 001)
(SELECT REF(p) FROM persons p
WHERE p.enroled_in = 'Computing for Business'
The database says that p.enroled_in is an invalid identifier. I know why this is. This is because the field enroled_in is part of a subtype of person called student_type and the query above is not accounting for this properly. I would like to know the correct syntax to use so I can insert into the nested table wherever a student is enroled into the 'computing for business' course. My full schema is below:
CREATE TYPE person_type;
CREATE TYPE student_type;
CREATE TYPE staff_type;
CREATE TYPE course_type;
CREATE TYPE module_type;
CREATE TYPE address_type AS OBJECT
Street VARCHAR2 (30),
Town VARCHAR2 (30),
County VARCHAR2 (30),
Postcode VARCHAR2 (9)
CREATE TYPE person_type AS OBJECT
Name VARCHAR2 (50),
Address address_type,
DOB DATE
) NOT FINAL;
CREATE TYPE staff_type UNDER person_type
Staff_number NUMBER (2,0)
) FINAL;
CREATE TYPE student_type UNDER person_type (
Student_number NUMBER (2,0),
Enroled_in VARCHAR2(50),
MEMBER FUNCTION getAge RETURN NUMBER
)NOT FINAL;
CREATE OR REPLACE TYPE BODY student_type AS
MEMBER FUNCTION getAge RETURN NUMBER AS
BEGIN
RETURN Trunc(Months_Between(Sysdate, DOB)/12);
END getAge;
END;
CREATE TYPE module_type AS OBJECT
Module_number VARCHAR2(6),
Module_name VARCHAR2(50),
Credit NUMBER(2,0),
Taught_in VARCHAR2(50)
CREATE TYPE students_tab AS TABLE OF REF person_type;
CREATE TYPE modules_tab AS TABLE OF REF module_type;
CREATE TYPE course_type AS OBJECT
Course_number NUMBER (2,0),
Course_name VARCHAR2(50),
Dept_name VARCHAR2(50),
Taken_by Students_tab,
Contains Modules_tab
CREATE TABLE modules OF module_type(
constraint pk_modules primary key (Module_number)
CREATE TABLE courses OF course_type(
constraint pk_courses primary key (Course_number)
NESTED TABLE Taken_by STORE AS students_nt,
NESTED TABLE Contains STORE AS modules_nt;By the way I am using oracle 9i and trying to insert into the nested table data from a subtype (i.e student is a subtype of person)
-
Query for Multiple Rows as XML
Ok I've seen this topic in the forums, but have failed to get this to work within my process. Basically I have a process that has a user fill out a form, and upon submittal the form writes it's information to a database (via a data connection within the form that invokes a separate process upon submittal.), once this is done the main process is invoked and it's first step is to query that same database and bring back the data in a lower (now exposed) portion of the form that contains certain fields that track the issue history. The query brings back the xml document and I store it in an xml variable (xml_output). I then take this information and use the Set Value object to assign the returned nodes values to the location fields in the form. This works if the query returns only one row. But once the form is moved beyond the initial Task Assignment, (first user), and query returns more than just one row, the added nodes to not show up on the form, i.e I still just get information about the first row in my form. From what I've read the form should be able to recognize the xpath expression, and bring back all the nodes, by in a sense using instance manager to create an instance for each node on the form. My question is how can I get this to work. Jasmin if your still out there... Help!
Also We're using Adobe LiveCycle ES 8.0
created the process using Workbench
the form was reader enabled and saved as a dynamic PDF.
Thanks
MikeOk have done the binding of the schema to the form, and I'm getting the information to flow as it's supposed to. The problem I'm having now, (I know I'm having a bunch.) is that once I've placed the form into my process, and I use the set value operation to pre-fill information I get the form to flow, but the rest of the information that was previously filled in is blank. So I have checked the variable and nothing wrong there. It appears the problem is how I'm using the set value operation. If I don't use the set value operation, the form retains it's information. And if I use the set value by trying to set the subform value, the form retains it's information, but no pre-fill. I'm going to try to be a little more detailed here. The xml that is returned looks like this:
0016-03-30
Mike
Public Works
alone in the dark
Type sleep
-1
Council
FYI
Important
Flowed and positioned are actual subforms on the form that have their properties set as their names indicates. The entire path is /form1/Page1/flowed/positioned . The way I was able to get the form to flow correctly upon the injection of this xml data, was to bind the subforms in the form in this manner, positioned[*]. Designer didn't place the [*] for me so I had to do this myself. But once I previewed the document, the form pre-populated and created the necessary number of subforms and placed information into the fields correctly.
Now on the process side, I have created an xfaform variable that stores the form (bound to xsd.) information, and another xml variable that stores the query return that looks like the xml listed above (has an xsd associated with it for navigating xpath). My first operation performs the query (JDBC- Query Multiple Rows as XML) and stores it into the xml variable. The next step of the process is the Set Value operation which is supposed to inject the xml data retrieved from the query into the form. Initially I tried the an xpath similar to the following:
/process_data/object/data/form1/page1/flowed/positioned = /xml_data/flowed/positioned.
No dice. On this one the form retains the information filled out by the user (didn't explain this earlier, the form is filled out first, and upon submittal the process starts.), but doesn't pre-populate the bottom part of the form. Next I tried the following xpath:
/process_data/object/data/form1/page1/flowed = /xml_data/flowed/positioned.
This time it retained the form information which was filed in by the user, but the bottom part is becomes hidden! Didn't understand this. But I started to kinda think that I had to navigate he xpath in order to correctly inject the xml into the form. That being said my next attempt was:
/process_data/object/data/form1/page1 = /xml_data
My thinking was that if on location, I stop at page1, the xml in the variable will allow it to navigate correctly through the form. Well it worked, but too well. The top part of the form is blank, but the bottom portion is pre-populated correctly. Now I'm stuck. Not sure how to get the rest of the information in the form. I thought about creating variables form each of the fields and then re-populating them after the injection of xml, but that didn't seem practical. I'm almost positive it's something I'm not doing correctly with xpath. Anyway, thanks for all your help on this.
Mike
Maybe you are looking for
-
I need my XY graph to plot all values it obtains, not one at a time.
When I use the XY graph and take the values from a global, it plots one point. Then when i enter in a new value to be graphed, it erases the one before it. How do I make all the values stay?
-
Are You getting Into Email & New Email Page?
I see many questions about email,from deleting email to other problems with email,but i don't see some even mentioning the sign-in email problem unless you use one of the old sign-in pages, such as:http://webmail.verizon.net/signin/ . We are still un
-
Headphone jack/hookup to stereo problem with existing jack??
Is it just me, or is the jack port different for the iPhone? Went to use it in my boat today where no less than 3 other ipods have been plugged in..... the jack won't go all the way into the hole. The iphone jack requires a skinny little plug to slip
-
Microsoft OLE DB Provider for SQL Server 2012 Analysis Services Error Code = 0x80040E05
I've been running a package for 6 months without any issues that pulls data from a cube via MDX and moves it to a database. We've recently moved to a new server x64 and the connections all succeed but at runtime (in 64 = T&F) I get the following erro
-
Questions re: calibrating a Thunderbolt and calibration problems
Is it considered "Normal" or "Wide" gamut? Is the backlight "White LED", "RGB LED" or something else? During calibration it tells me to set the brightness to within 4% of target. I can't. One notch of brightness control on a thunderbolt is a huge d