Choose field from joined table based on another field?
Good morning!
Is it possible to select a field from a joined table row based on another field? Consider the following data in the CVALUES table:
ID C1 C2 C3 C4 C5 C6
T1 9.6 10.3 12.4 19.6 19.6 0
T7 9.6 10.4 0 0 0 0
T3 8.2 9.9 11.4 19.6 19.6 0
T8 8.3 10.7 13.5 20.7 0 0
T5 9.4 10.3 12.7 22.9 19.6 0
...And the following data in the MDETAIL table:
ID MDATE CNUM ...
T1 03/28/2012 18:00:00 4
T1 03/28/2012 18:00:00 1
T8 03/29/2012 06:00:00 6
T8 03/29/2012 06:00:00 5
...I want to get the column from CVALUES corresponding to the CNUM field in the MDETAIL table. I'm currently doing this:
SELECT m.t1, m.mdate,
CASE WHEN m.cnum = 1 THEN c.c1
WHEN m.cnum = 2 THEN c.c2
WHEN m.cnum = 3 THEN c.c3
WHEN m.cnum = 4 THEN c.c4
WHEN m.cnum = 5 THEN c.c5
WHEN m.cnum = 6 THEN c.c6 END AS cvalue
FROM mdetail m
JOIN cvalues c ON m.id = c.idThe records in the CVALUES table are unique; only one row per ID.
This method works, and it's fast but it's messy code and I think there has to be a better way to do it. I use the cvalue value in several calculations so every calculation I use it in has this giant glob of CASE in it!
Since you're comparing the same column against scalar values, the CASE statement could be simplified in a similar way :
CASE m.cnum
WHEN 1 THEN c.c1
WHEN 2 THEN c.c2
WHEN 3 THEN c.c3
WHEN 4 THEN c.c4
WHEN 5 THEN c.c5
WHEN 6 THEN c.c6
END AS cvalueSince performance is not the issue here, now it depends on what you consider "more readable".
Using a one-liner piece of code certainly makes the query looks less bulky, but I won't be so sure about readability and immediate understanding.
Similar Messages
-
Please Help, I want to change field value in a table, based on another field value in the same row (for each added row)
I am using this code :
<HTML>
<HEAD>
<SCRIPT>
function addRow(tableID) {
var table = document.getElementById(tableID);
var rowCount = table.rows.length;
var row = table.insertRow(rowCount);
var colCount = table.rows[0].cells.length;
for(var i=0; i<colCount; i++ ) {
var newcell = row.insertCell(i);
newcell.innerHTML = table.rows[1].cells[i].innerHTML;
switch(newcell.childNodes[0].type) {
case "text":
newcell.childNodes[0].value = "";
break;
case "checkbox":
newcell.childNodes[0].checked = false;
break;
case "select-one":
newcell.childNodes[0].selectedIndex = 0;
break;}}}
function deleteRow(tableID) {
try {var table = document.getElementById(tableID);
var rowCount = table.rows.length;
for(var i=0; i<rowCount; i++) {
var row = table.rows[i];
var chkbox = row.cells[0].childNodes[0];
if(null != chkbox && true == chkbox.checked) {
if(rowCount <= 2) {
alert("Cannot delete all the rows.");
break;}
table.deleteRow(i);
rowCount--;
i--;}}}catch(e) {alert(e);}}
</SCRIPT>
</HEAD>
<BODY>
<INPUT type="button" value="Add Row" onClick="addRow('dataTable')" />
<INPUT type="button" value="Delete Row" onClick="deleteRow('dataTable')" />
<TABLE id="dataTable" width="350px" border="1">
<TR>
<TD width="32"></TD>
<TD width="119" align="center"><strong>Activity</strong></TD>
<TD width="177" align="center"><strong>Cost</strong></TD>
</TR>
<TR>
<TD><INPUT type="checkbox" name="chk"/></TD>
<TD>
<select name="s1" id="s1">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
</TD>
<TD><input type="text" name="txt1" id="txt1"></TD>
</TR>
</TABLE>
</BODY>
</HTML>Hi,
Let me make sure u r working with table control.
First u have to create a event(VALIDATE) to do the validation.
Inside the event,
1. First get the current index where user has pointed the curson
2. Once u get the index read the internal table with index value.
3. Now u can compare the col1 and col2 values and populate the error message.
1. DATA : lo_elt TYPE REF TO if_wd_context_element,
l_index type i.
lo_elt = wdevent->get_context_element( name = 'CONTEXT_ELEMENT' ).
CALL METHOD LO_ELT->GET_INDEX( RECEIVING MY_INDEX = l_index.
above code should be written inside the event.
Thanks, -
Table Control: make a field editable or not based on another field value
HI All,
How to make a column field input enabled or disabled based on another field value in a Table Control.
Here's the scenario:
I have a table control with two columns, KTOKK and LIFNR. Now for certain KTOKK, the LIFNR field should be editable and for certain KTOKK it should not be editable.
Eg., KTOKK = 0001 => LIFNR field is not editable.
KTOKK = ZKTO => LIFNR field is editable.
But these fields are in a table control.
Please advice.
Thanks in advance,
RK.Hi RK,
Go through the below link..
how to make special field editable or diseditable in table control?
the code mentioned in the link.. just add ur conditions in the module....
Best Regards,
Brijesh -
Adding the field in the internal table based on another field
Hi all,
I am Creating a Function module with three fields (HKONT,EBELN,DMBTR) in the output internal table(ITAB)
My Requirement is that as soon as the value of the HKONT in the internal table changes, i need to sum the DMBTR field values and should pass into a variable(v_sum).
ON CHANGE OF seems to me Obsolete.
Please help me in doing this.
Thanks
AjayHI,
Use control break event . AT END OF.
loop at ITAB.
V_DMBTR = V_DMBTR + ITAB-DMBTR.
at end of HKONT.
v_sum = V_DMBTR.
clear : V_DMBTR.
endat.
endloop.
Regards,
Srini. -
Update a field to a Sequence based on another Field
Hello Everyone,
Little problem: -
CREATE TABLE: -
CREATE TABLE SEQTABLE
("GRP_NUM" VARCHAR2(20),
"ORDER" NUMBER(5),
"NEW_GROP" VARCHAR2(20) ) ; DATA:-
INSERT INTO SEQTABLE ("GRP_NUM" ,"ORDER" ,"NEW_GROP" ) VALUES ('POIP1234567891234567' ,1 ,'' )
INSERT INTO SEQTABLE ("GRP_NUM" ,"ORDER" ,"NEW_GROP" ) VALUES ('POIP1234567891234567' ,2 ,'' )
INSERT INTO SEQTABLE ("GRP_NUM" ,"ORDER" ,"NEW_GROP" ) VALUES ('POIP1234567891234567' ,3 ,'' )
INSERT INTO SEQTABLE ("GRP_NUM" ,"ORDER" ,"NEW_GROP" ) VALUES ('LKJG1234567897412589' ,1 ,'' )
INSERT INTO SEQTABLE ("GRP_NUM" ,"ORDER" ,"NEW_GROP" ) VALUES ('JHGF1234567891234567' ,1 ,'' )
INSERT INTO SEQTABLE ("GRP_NUM" ,"ORDER" ,"NEW_GROP" ) VALUES ('JHGF1234567891234567' ,2 ,'' ) SELECT *
SQL> SELECT * FROM SEQTABLE;
GRP_NUM ORDER NEW_GROP
POIP1234567891234567 1
POIP1234567891234567 2
POIP1234567891234567 3
LKJG1234567897412589 1
JHGF1234567891234567 1
JHGF1234567891234567 2 Here my problem, I need to generate a smaller GRP_NUM in the NEW_GROP field. But cant just Substr the original field. This field has to be uniquie to the group.
Desired Results: -
GRP_NUM ORDER NEW_GROP
POIP1234567891234567 1 10001
POIP1234567891234567 2 10001
POIP1234567891234567 3 10001
LKJG1234567897412589 1 10002
JHGF1234567891234567 1 10003
JHGF1234567891234567 2 10003 Any ideas guys-- Data:
with seqtable as
select 'POIP1234567891234567' grp_num,1 "ORDER",'' new_grop from dual union all
select 'POIP1234567891234567' ,2 ,'' from dual union all
select 'POIP1234567891234567' ,3 ,'' from dual union all
select 'LKJG1234567897412589' ,1 ,'' from dual union all
select 'JHGF1234567891234567' ,1 ,'' from dual union all
select 'JHGF1234567891234567' ,2 ,'' from dual
-- Query:
select grp_num, "ORDER",
dense_rank() over (order by grp_num desc)
from seqtable;or:
-- Data:
with seqtable as
select 'POIP1234567891234567' grp_num,1 "ORDER",'' new_grop from dual union all
select 'POIP1234567891234567' ,2 ,'' from dual union all
select 'POIP1234567891234567' ,3 ,'' from dual union all
select 'LKJG1234567897412589' ,1 ,'' from dual union all
select 'JHGF1234567891234567' ,1 ,'' from dual union all
select 'JHGF1234567891234567' ,2 ,'' from dual
-- Query:
select grp_num, "ORDER",
10000 + dense_rank() over (order by grp_num desc)
from seqtable;I suggest not to use "ORDER" as column name, because it is an oracle reserved word.
You may ommit the quotes, when you use another column_name. -
Search help for a field in table control based on another field value
Hi,
I want to attach the Search help for a field in table control based on another field value.
Please help me asap.
Will be highly rewardedHI,..
Check these links
search help in table control
Re: How to create Search Help for a field in Table control !!
How to create Search Help for a field in Table control !!
F4 Help In Table Control
Control table F4 help
Problem in F4 help in screen field
check this code
DATA: BEGIN OF it_value4 OCCURS 0,
TEXTCODE LIKE ZXX-TEXTCODE,
TEXTDESC LIKE ZXX-TEXTDESC,
END OF it_value4.
progname = sy-repid.
dynnum = sy-dynnr.
SELECT TEXTCODE TEXTDESC
FROM xxxx
INTO CORRESPONDING FIELDS OF TABLE<b> it_value4</b>
WHERE LOSS_CODE =<b> IT_VALUE1 .</b>
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = 'TEXTCODE'
dynpprog = progname
dynpnr = dynnum
dynprofield = 'ITVALUE-TEXTCODE' "-->UR 4 th filed value in screen
value_org = 'S'
TABLES
value_tab = it_value4.
endmodule.
Message was edited by:
veereshbabu ponnada -
Changing a field based on another field
hi one and all
i am looking for a way to change a field based on another field. if i have item 2 and item 8 on the page and item 8 needs to be required based on item 2 based on a requirement, how would this be done.
ex if item 2 has a PO inputed, when it is moved off the field, item 8 should be changed from required false to required true. i have tried in both the process request and process form request with no luck
any suggestions.
thankshello again
after your input and after reviewing the tutorial ( which i accomplished based on data from a table but not a field ) , i did the following and have been fighting it for a day. am i doing this correctly
on the itemid OrgRptCode1 i changed the action type to firePartialAction and the event is name o1
then i added this code to see if the action would fire
if (pageContext.getParameter("OrgRptCode1") !=null) // either line will be commented out
if (pageContext.getParameter("o1") !=null) // either line will be commented out
System.out.println("Field is not empty");
else
System.out.println("Field is empty");
am i missing a step . also
when i enter the page i get Field is empty. when i enter the field and tab off i get the error page w/ this msg
oracle.apps.fnd.framework.OAException: java.lang.NullPointerException
at oracle.apps.fnd.framework.OAException.wrapperException(OAException.java:888)
at oracle.apps.fnd.framework.webui.OAPageErrorHandler.prepareException(OAPageErrorHandler.java:1064)
at oracle.apps.fnd.framework.webui.OAPageErrorHandler.processErrors(OAPageErrorHandler.java:1294)
at oracle.apps.fnd.framework.webui.OAPageBean.processFormRequest(OAPageBean.java:2396)
at oracle.apps.fnd.framework.webui.OAPageBean.preparePage(OAPageBean.java:1512)
at oracle.apps.fnd.framework.webui.OAPageBean.preparePage(OAPageBean.java:463)
at oracle.apps.fnd.framework.webui.OAPageBean.preparePage(OAPageBean.java:384)
at OA.jspService(OA.jsp:40)
at com.orionserver.http.OrionHttpJspPage.service(OrionHttpJspPage.java:56)
at oracle.jsp.runtimev2.JspPageTable.service(JspPageTable.java:317)
at oracle.jsp.runtimev2.JspServlet.internalService(JspServlet.java:465)
at oracle.jsp.runtimev2.JspServlet.service(JspServlet.java:379)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at com.evermind.server.http.ServletRequestDispatcher.invoke(ServletRequestDispatcher.java:727)
at com.evermind.server.http.ServletRequestDispatcher.forwardInternal(ServletRequestDispatcher.java:306)
at com.evermind.server.http.HttpRequestHandler.processRequest(HttpRequestHandler.java:767)
at com.evermind.server.http.HttpRequestHandler.run(HttpRequestHandler.java:259)
at com.evermind.server.http.HttpRequestHandler.run(HttpRequestHandler.java:106)
at EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(PooledExecutor.java:803)
at java.lang.Thread.run(Thread.java:534)
## Detail 0 ##
java.lang.NullPointerException
at uaboaf.oracle.apps.xxuab.hr.orghierarchy.webui.manageOrgCO.processFormRequest(manageOrgCO.java:289)
at oracle.apps.fnd.framework.webui.OAWebBeanHelper.processFormRequest(OAWebBeanHelper.java:734)
at oracle.apps.fnd.framework.webui.OAWebBeanContainerHelper.processFormRequest(OAWebBeanContainerHelper.java:352)
at oracle.apps.fnd.framework.webui.OAPageLayoutHelper.processFormRequest(OAPageLayoutHelper.java:943)
at oracle.apps.fnd.framework.webui.beans.layout.OAPageLayoutBean.processFormRequest(OAPageLayoutBean.java:1546)
at oracle.apps.fnd.framework.webui.OAWebBeanHelper.processFormRequestChildren(OAWebBeanHelper.java:929)
at oracle.apps.fnd.framework.webui.OAWebBeanHelper.processFormRequestChildren(OAWebBeanHelper.java:895)
at oracle.apps.fnd.framework.webui.OAWebBeanHelper.processFormRequest(OAWebBeanHelper.java:751)
at oracle.apps.fnd.framework.webui.OAWebBeanContainerHelper.processFormRequest(OAWebBeanContainerHelper.java:352)
at oracle.apps.fnd.framework.webui.beans.form.OAFormBean.processFormRequest(OAFormBean.java:373)
at oracle.apps.fnd.framework.webui.OAWebBeanHelper.processFormRequestChildren(OAWebBeanHelper.java:929)
at oracle.apps.fnd.framework.webui.OAWebBeanHelper.processFormRequestChildren(OAWebBeanHelper.java:895)
at oracle.apps.fnd.framework.webui.OAWebBeanHelper.processFormRequest(OAWebBeanHelper.java:751)
at oracle.apps.fnd.framework.webui.OAWebBeanContainerHelper.processFormRequest(OAWebBeanContainerHelper.java:352)
at oracle.apps.fnd.framework.webui.beans.OABodyBean.processFormRequest(OABodyBean.java:340)
at oracle.apps.fnd.framework.webui.OAPageBean.processFormRequest(OAPageBean.java:2392)
at oracle.apps.fnd.framework.webui.OAPageBean.preparePage(OAPageBean.java:1512)
at oracle.apps.fnd.framework.webui.OAPageBean.preparePage(OAPageBean.java:463)
at oracle.apps.fnd.framework.webui.OAPageBean.preparePage(OAPageBean.java:384)
at OA.jspService(OA.jsp:40)
at com.orionserver.http.OrionHttpJspPage.service(OrionHttpJspPage.java:56)
at oracle.jsp.runtimev2.JspPageTable.service(JspPageTable.java:317)
at oracle.jsp.runtimev2.JspServlet.internalService(JspServlet.java:465)
at oracle.jsp.runtimev2.JspServlet.service(JspServlet.java:379)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at com.evermind.server.http.ServletRequestDispatcher.invoke(ServletRequestDispatcher.java:727)
at com.evermind.server.http.ServletRequestDispatcher.forwardInternal(ServletRequestDispatcher.java:306)
at com.evermind.server.http.HttpRequestHandler.processRequest(HttpRequestHandler.java:767)
at com.evermind.server.http.HttpRequestHandler.run(HttpRequestHandler.java:259)
at com.evermind.server.http.HttpRequestHandler.run(HttpRequestHandler.java:106)
at EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(PooledExecutor.java:803)
at java.lang.Thread.run(Thread.java:534)
java.lang.NullPointerException
at uaboaf.oracle.apps.xxuab.hr.orghierarchy.webui.manageOrgCO.processFormRequest(manageOrgCO.java:289)
at oracle.apps.fnd.framework.webui.OAWebBeanHelper.processFormRequest(OAWebBeanHelper.java:734)
at oracle.apps.fnd.framework.webui.OAWebBeanContainerHelper.processFormRequest(OAWebBeanContainerHelper.java:352)
at oracle.apps.fnd.framework.webui.OAPageLayoutHelper.processFormRequest(OAPageLayoutHelper.java:943)
at oracle.apps.fnd.framework.webui.beans.layout.OAPageLayoutBean.processFormRequest(OAPageLayoutBean.java:1546)
at oracle.apps.fnd.framework.webui.OAWebBeanHelper.processFormRequestChildren(OAWebBeanHelper.java:929)
at oracle.apps.fnd.framework.webui.OAWebBeanHelper.processFormRequestChildren(OAWebBeanHelper.java:895)
at oracle.apps.fnd.framework.webui.OAWebBeanHelper.processFormRequest(OAWebBeanHelper.java:751)
at oracle.apps.fnd.framework.webui.OAWebBeanContainerHelper.processFormRequest(OAWebBeanContainerHelper.java:352)
at oracle.apps.fnd.framework.webui.beans.form.OAFormBean.processFormRequest(OAFormBean.java:373)
at oracle.apps.fnd.framework.webui.OAWebBeanHelper.processFormRequestChildren(OAWebBeanHelper.java:929)
at oracle.apps.fnd.framework.webui.OAWebBeanHelper.processFormRequestChildren(OAWebBeanHelper.java:895)
at oracle.apps.fnd.framework.webui.OAWebBeanHelper.processFormRequest(OAWebBeanHelper.java:751)
at oracle.apps.fnd.framework.webui.OAWebBeanContainerHelper.processFormRequest(OAWebBeanContainerHelper.java:352)
at oracle.apps.fnd.framework.webui.beans.OABodyBean.processFormRequest(OABodyBean.java:340)
at oracle.apps.fnd.framework.webui.OAPageBean.processFormRequest(OAPageBean.java:2392)
at oracle.apps.fnd.framework.webui.OAPageBean.preparePage(OAPageBean.java:1512)
at oracle.apps.fnd.framework.webui.OAPageBean.preparePage(OAPageBean.java:463)
at oracle.apps.fnd.framework.webui.OAPageBean.preparePage(OAPageBean.java:384)
at OA.jspService(OA.jsp:40)
at com.orionserver.http.OrionHttpJspPage.service(OrionHttpJspPage.java:56)
at oracle.jsp.runtimev2.JspPageTable.service(JspPageTable.java:317)
at oracle.jsp.runtimev2.JspServlet.internalService(JspServlet.java:465)
at oracle.jsp.runtimev2.JspServlet.service(JspServlet.java:379)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at com.evermind.server.http.ServletRequestDispatcher.invoke(ServletRequestDispatcher.java:727)
at com.evermind.server.http.ServletRequestDispatcher.forwardInternal(ServletRequestDispatcher.java:306)
at com.evermind.server.http.HttpRequestHandler.processRequest(HttpRequestHandler.java:767)
at com.evermind.server.http.HttpRequestHandler.run(HttpRequestHandler.java:259)
at com.evermind.server.http.HttpRequestHandler.run(HttpRequestHandler.java:106)
at EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(PooledExecutor.java:803)
at java.lang.Thread.run(Thread.java:534) -
Copy selected values from a table control into another table control
hi there,
as seen in the subject i need to copy selected values from a table control into another table control in the same screen. as i dont know much about table controls i made 2 table controls with the wizard and started to change the code... right now im totally messed up. nothing works anymore and i don't know where to start over.
i looked up the forums and google, but there is nothing to help me with this problem (or i suck in searching the internet for solutions)
i have 2 buttons. one to push the selected data from the top table control into the bottom tc and the other button is to push selected data from the bottom tc into the top tc. does somebody has a sample code to do this?you're funny
i still don't get it... can't believe, there is no tutorial or sample code around how to copy multiple selected rows from a tc.
here's my code, maybe you can tell me exactly were i have to change it:
tc1 = upper table control
tc2 = lower table control
SCREEN 0100:
PROCESS BEFORE OUTPUT.
MODULE status_0100.
MODULE get_nfo. --> gets data from the dictionary table
MODULE tc1_change_tc_attr.
LOOP AT it_roles_tc1
INTO wa_roles_tc1
WITH CONTROL tc1
CURSOR tc1-current_line.
ENDLOOP.
MODULE tc2_change_tc_attr.
LOOP AT it_roles_tc2
INTO wa_roles_tc2l
WITH CONTROL tc2
CURSOR tc2-current_line.
ENDLOOP.
PROCESS AFTER INPUT.
LOOP AT it_roles_tc1.
CHAIN.
FIELD wa_roles_tc1-agr_name.
FIELD wa_roles_tc1-text.
ENDCHAIN.
FIELD wa_roles_tc1-mark
MODULE tc1_mark ON REQUEST.
ENDLOOP.
LOOP AT it_roles_tc2.
CHAIN.
FIELD wa_roles_tc2-agr_name.
FIELD wa_roles_tc2-text.
ENDCHAIN.
FIELD wa_roles_tc2-mark
MODULE tc2_mark ON REQUEST.
ENDLOOP.
MODULE ok_code.
MODULE user_command_0100.
INCLUDE PAI:
MODULE tc1_mark INPUT.
IF tc1-line_sel_mode = 2
AND wa_roles_tc1-mark = 'X'.
LOOP AT it_roles_tc1 INTO g_tc1_wa2
WHERE mark = 'X'. -
> big problem here is, that no entry has an 'X' there
g_tc1_wa2-mark = ''.
MODIFY it_roles_tc1
FROM g_tc1_wa2
TRANSPORTING mark.
ENDLOOP.
ENDIF.
MODIFY it_roles_tc1
FROM wa_roles_tc1
INDEX tc1-current_line
TRANSPORTING mark.
ENDMODULE. "TC1_MARK INPUT
MODULE tc2_mark INPUT.
IF tc2-line_sel_mode = 2
AND wa_roles_tc2-mark = 'X'.
LOOP AT it_roles_tc2 INTO g_tc2_wa2
WHERE mark = 'X'. -
> same here, it doesn't gets any data
g_tc2_wa2-mark = ''.
MODIFY it_roles_tc2
FROM g_tc2_wa2
TRANSPORTING mark.
ENDLOOP.
ENDIF.
MODIFY it_roles_tc2
FROM wa_roles_tc2
INDEX tc2-current_line
TRANSPORTING mark.
ENDMODULE.
thx for anybody who can help with this! -
How to update one table based on another table ??
Hello Friends:
I am trying to run the following query in oracle but it won't run.
UPDATE BOYS
SET
BOYS.AGE = GIRLS.AGE
FROM GIRLS
WHERE
BOYS.FIRSTNAME = GIRLS.FIRSTNAME AND
BOYS.LASTNAME = GIRLS.LASTNAME;
This query runs fine in sql server but in oracle its saying can't find "SET". PLease tell me what is the correct syntax in oracle to update one table based on another table.
thanksSee if this helps.
If you wrote an SQL statement:
update boys set age = 10;
Every row in the boys table will get updated with an age of 10. But if you wrote:
update boys set age = 10
where firstname = 'Joe';
Then only the rows where the firstname is Joe would be updated with an age of 10.
Now replace the 10 in the above statements with (select g.age from girls g where g.firstname = b.firstname and g.lastname = b.lastname) and replace where firstname = 'Joe' in the second statement with where exists (select null from girls g where g.firstname = b.firstname and g.lastname = b.lastname). The same concepts apply whether 10 is an actual value or a query and whether you have a where clause with the update statement to limit rows being updated.
About the select null question regarding the outer where clause:
Since the query is checking to see if the row in the girls table exists in the boys table what the column is in this select statement doesn't matter, this column isn't being used anywhere. In this case Todd chose to use null. He could have also used a column name from the table or a lot of times you'll see the literal value 1 used here. -
Most recent date (UDATE) from CDHDR table based on CDPOS
Hi,
I am working on one object where i stuck with one issue. The requirement is I have to retrieve the most recent date from CDHDR table based on CHANGENR in CDPOS table. Where i am doing FOR ALL ENTRIES on CDPOS table to get the MAX( date )and i got the error, that aggregate functions are not allowed except COUNT( * ) with for all entries.
Any thread which can solve this issue would help aswel.
Please guide me how to achieve this. <removed>
Edited by: Thomas Zloch on Mar 13, 2010 9:10 PMHi Li,
Thats was really helpful information , infact my requirement is same as what you said. I even checked in the table entries there is only one changenumber.
You said we can take the first record, i even did the same. But for TABNAME I have to pass 3 table name 'LFA1', 'LFB1' and 'LFM1'. For FNAME 'LOEVM', 'SPERR'. I have written the code as below.
SELECT objectclas
objectid
changenr
FROM cdpos
INTO TABLE i_cdpos_a1
FOR ALL ENTRIES IN i_lfabm1
WHERE objectclas = c_kred "KRED
AND objectid EQ i_lfabm1-objectid "Lifnr
AND ( tabname EQ c_lfa1 OR tabname EQ c_lfb1 OR tabname EQ c_lfm1 ) "LFA1, LFB1 and LFM1
AND ( fname EQ c_loevm OR fname OR fname EQ c_sperr ) "LOEVM, SPERR
AND value_new EQ c_x.
IF sy-subrc EQ c_0.
IF i_cdpos_a1[] IS NOT INITIAL.
Select UDATE from CDHDR based on CHANGENR in CDPOS.
SELECT objectclas
objectid
changenr
udate
FROM cdhdr
INTO TABLE i_cdhdr_a1
FOR ALL ENTRIES IN i_cdpos_a1
WHERE objectclas = c_kred "KRED
AND objectid EQ i_lfabm1-objectid "Lifnr
AND changenr EQ i_cdpos_a1-changenr. "(this is coming from CDPOS above selection)
Here i got UDATE which have all the dates from 3 tables. I have to display in the output the field value (X) of LOEVM and UDATE for LFA1, SPERR value and UDATE for LFA1.Same way for other two tables, I have to display the UDATE and its field value (X). Where UDATE should be most recent date respectively.
How can I populate the Recent date (UDATE) from one interal table for indvidual field values and table names. -
Best way to create a table based on another table
Hello,
I am trying to create a table based on another table with all the data in it. It has large data.
create table <tablename> as select * from table1.
Is this the best way of doing it or is there any other way. please advice.
thanksI am suggested to create new table as
create table <newtable> as
select * from <oldtable> where rownum < 1;
then
alter table <newtable> compress;
then
insert /*+ append */ into <newtable> as select * from <oldtable>;
but i getting an error saying missing values key words ora- 00926.
please advice -
No records when inputting new field from linked tables.
I have linked two tables in a report. If I use only fields from one table, no problem. As soon as I add a field from the other table no records are pulled. I am using the same filed "IncidentID" in both tables as a link. If I attempt to pull the "IncidentID" from the second table no records are pulled. There does not appear to be any key fields or indexes in either table if that helps.
Here are the SQL queries. The first string is without any fields from "WorkLog". The second is after adding the field "WorkLog.Incident Number" to the form.
SELECT "HPD_Help_Desk"."Incident Number", "HPD_Help_Desk"."Reported Date", "HPD_Help_Desk"."Direct Contact Site", "HPD_Help_Desk"."Assignee", "HPD_Help_Desk"."Status", "HPD_Help_Desk"."Last Modified Date", "HPD_Help_Desk"."Description", "HPD_Help_Desk"."Priority"
FROM "HPD:Help Desk" "HPD_Help_Desk"
WHERE "HPD_Help_Desk"."Status"='Pending' AND ("HPD_Help_Desk"."Assignee"='Debbie Kiolbasa' OR "HPD_Help_Desk"."Assignee"='John L King' OR "HPD_Help_Desk"."Assignee"='Ligaya Plumlee' OR "HPD_Help_Desk"."Assignee"='Ryan Keeler')
ORDER BY "HPD_Help_Desk"."Assignee"
SELECT "HPD_Help_Desk"."Incident Number", "HPD_Help_Desk"."Reported Date", "HPD_Help_Desk"."Direct Contact Site", "HPD_Help_Desk"."Assignee", "HPD_Help_Desk"."Status", "HPD_Help_Desk"."Last Modified Date", "HPD_Help_Desk"."Description", "HPD_Help_Desk"."Priority", "HPD_WorkLog"."Incident Number"
FROM "HPD:Help Desk" "HPD_Help_Desk" INNER JOIN "HPD:WorkLog" "HPD_WorkLog" ON ("HPD_Help_Desk"."Incident Number"="HPD_WorkLog"."Incident Number") AND ("HPD_Help_Desk"."InstanceId"="HPD_WorkLog"."InstanceId")
WHERE "HPD_Help_Desk"."Status"='Pending' AND ("HPD_Help_Desk"."Assignee"='Debbie Kiolbasa' OR "HPD_Help_Desk"."Assignee"='John L King' OR "HPD_Help_Desk"."Assignee"='Ligaya Plumlee' OR "HPD_Help_Desk"."Assignee"='Ryan Keeler')
ORDER BY "HPD_Help_Desk"."Assignee"
BTW - The "Left Outer Join" receives the errors noted in above post whereas the default "Inner Join" just comes back with empty records.
Unable to use the third party tools due to restrictions on loading software. Also we are unable to access the lower level database.
Thanks -
Reading data from BSEG table with Non-key fields in where clause
Hi All,
I have to read data from BSEG table based on WBS element field (PROJK). As I'm not passing key fields to WHERE clause system couldnt run the select statement. Since BSEG is a cluster table I cant even create secondary index on PROJK field.
Could you please tell me, how to improve its performance.
Regards
Jaker.SELECT bukrs
belnr
gjahr
shkzg
dmbtr
hkont
lifnr
matnr
werks
menge
meins
ebeln
FROM bseg
INTO TABLE it_bseg
PACKAGE SIZE 10
FOR ALL ENTRIES IN it_final
WHERE bukrs EQ it_final-bukrs
AND belnr EQ it_final-belnr
AND gjahr EQ it_final-gjahr
AND buzei EQ it_final-buzei
AND hkont EQ it_final-hkont
AND werks IN s_werks.
By using package and fetch from BSEG table. gathering all other information to a final internal table.This will reduce the hit to database.And also try to put that data in hashed internal table which is it_bseg....then definetly improve the performance.
<REMOVED BY MODERATOR>
Dara.
Edited by: Alvaro Tejada Galindo on Apr 21, 2008 12:47 PM -
HI ALL,
I NEED FIELDS FROM VBFA TABLE
THE FIELDS I WANT IS :
CUSTOMER-ID
CUSTOMER NAME
CONTACT NAME
PROJECTID
ORDER NO
SALES MAN ID
ORDER PROCESS DATE
INVOICE DATE
GROSS AMOUNT
NET AMOUNT POSTAL CODE.
THANKS & REGARDS,
R.VINOD.Hi Vinod..
Try this Code. I made all the modifications in your code .. It will solve ur issues..
REPORT zsdr_omvsa40.
TYPE-POOLS
TYPE-POOLS: slis.
TABLE DECLARATIONS
TABLES : vbak, vbkd,
zzvbak,
kna1, vbrk, vbrp, knvp .
INTERNALTABLE DECLARATION *
DATA: BEGIN OF i_vbak OCCURS 0,
vbelv LIKE vbfa-vbelv, " Sales Order no
vbeln like vbfa-vbeln, "Invoice No
erdat LIKE vbak-erdat, " Date on Which Record Was Created
kunnr LIKE vbak-kunnr,
ps_psp_pnr LIKE vbak-ps_psp_pnr, " Work Breakdown Structure Element
END OF i_vbak.
*DATA : BEGIN OF i_zzvbak OCCURS 0,
*vbeln LIKE zzvbak-vbeln,
*zssidc LIKE zzvbak-zssidc, "Salesman ID
*END OF i_zzvbak.
DATA : BEGIN OF i_vbrk OCCURS 0,
vbeln LIKE vbrk-vbeln,
fkdat LIKE vbrk-fkdat, "Invoice Date
END OF i_vbrk.
DATA : BEGIN OF i_kna1 OCCURS 0,
kunnr LIKE kna1-kunnr , " Customer Number 1
name1 LIKE kna1-name1, " Customer Name
pstlz LIKE kna1-pstlz , " Postal Code
END OF i_kna1.
DATA : BEGIN OF i_vbrp OCCURS 0,
vbeln LIKE vbrp-vbeln,
aubel LIKE vbrp-aubel,
netwr LIKE vbrp-netwr , " Net Value in Document Currency
kzwi1 LIKE vbrp-kzwi1, " Subtotal 1 from pricing procedure for condition
erdat LIKE vbrp-erdat, "Billing document.
END OF i_vbrp.
DATA : BEGIN OF i_knvp OCCURS 0,
parvw LIKE knvp-parvw , " Partner Function
kunnr LIKE knvp-kunnr ,
parnr LIKE knvp-parnr , " Number of contact person
END OF i_knvp .
DATA : BEGIN OF i_data OCCURS 0,
erdat LIKE vbak-erdat, " Date on Which Record Was Created
vbeln LIKE vbak-vbeln, " Sales Order no
fkdat LIKE vbrk-fkdat, " Invoice date.
kunnr LIKE kna1-kunnr , " Customer Number
ps_psp_pnr LIKE vbak-ps_psp_pnr, " Work Breakdown Structure Element
name1 LIKE kna1-name1, " Customer Name
netwr LIKE vbrp-netwr , " Net Value in Document Currency
kzwi1 LIKE vbrp-kzwi1, " Subtotal 1 from pricing procedure for condition
parvw LIKE knvp-parvw , " Partner Function
parnr LIKE knvp-parnr , " Number of contact person
*zssidc LIKE zzvbak-zssidc, "Salesman ID
pstlz LIKE kna1-pstlz , " Postal Code
END OF i_data.
ALV Declaraton
DATA: fieldcatalog TYPE slis_t_fieldcat_alv WITH HEADER LINE,
gd_tab_group TYPE slis_t_sp_group_alv,
gd_layout TYPE slis_layout_alv,
it_listheader TYPE slis_t_listheader,
gd_repid LIKE sy-repid.
Selection - Screen
SELECTION-SCREEN : BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
SELECT-OPTIONS creation FOR vbak-erdat . " Sales Order Date
SELECT-OPTIONS period FOR vbrk-fkdat . " Invoice Date
SELECT-OPTIONS order FOR vbak-vbeln . " Sales order no
SELECT-OPTIONS name FOR kna1-name1 . " Customer Name
SELECT-OPTIONS contact FOR knvp-parnr . " Contact Name.
*SELECT-OPTIONS ssid FOR zzvbak-zssidc . " Salesman ID
SELECT-OPTIONS project FOR vbak-ps_psp_pnr . " Work Breakdown Structure Element
SELECTION-SCREEN : END OF BLOCK b1.
START-OF-SELECTION
START-OF-SELECTION.
PERFORM data_retrieval.
PERFORM build_fieldcatalog.
PERFORM BUILD_LAYOUT.
PERFORM top_of_page.
PERFORM fill_listheader USING it_listheader.
PERFORM display_alv_report.
END-OF-SELECTION.
*TOP-OF-PAGE.
TOP-OF-PAGE.
END-OF-PAGE.
*& Form BUILD_FIELDCATALOG
text
FORM build_fieldcatalog.
fieldcatalog-fieldname = 'KUNNR'.
fieldcatalog-seltext_m = 'Sold to Party'.
fieldcatalog-col_pos = 0.
fieldcatalog-outputlen = 10.
fieldcatalog-emphasize = 'X'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'NAME1'.
fieldcatalog-seltext_m = 'Hlev Customer'.
fieldcatalog-col_pos = 1.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'PARNR'.
fieldcatalog-seltext_m = 'Contact name'.
fieldcatalog-col_pos = 2.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'PS_PSP_PNR'.
fieldcatalog-seltext_m = 'Project ID'.
fieldcatalog-col_pos = 3.
fieldcatalog-do_sum = 'X'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'VBELN'.
fieldcatalog-seltext_m = 'Sales Document Type'.
fieldcatalog-col_pos = 4.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'ZSSIDC'.
fieldcatalog-seltext_m = 'SSID'.
fieldcatalog-col_pos = 5.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'ERDAT'.
fieldcatalog-seltext_m = 'so date'.
fieldcatalog-col_pos = 6.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'FKDAT'.
fieldcatalog-seltext_m = 'inv date'.
fieldcatalog-col_pos = 7.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'KWZI1'.
fieldcatalog-seltext_m = 'gross amt'.
fieldcatalog-col_pos = 8.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'NETWR'.
fieldcatalog-seltext_m = 'net amt'.
fieldcatalog-col_pos = 9.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'PSTLZ'.
fieldcatalog-seltext_m = 'Postal code'.
fieldcatalog-col_pos = 10.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
ENDFORM. "BUILD_FIELDCATALOG
*& Form DATA_RETRIEVAL
text
FORM data_retrieval.
SELECT VBFAvbelv VBFAvbeln
VBAKerdat VBAKkunnr VBAK~ps_psp_pnr
INTO TABLE i_vbak
FROM VBFA
INNER JOIN vbak
ON VBFAVBELV = VBAKVBELN
WHERE VBAK~erdat IN creation
AND VBFA~vbelV IN ORDER
AND VBAK~ps_psp_pnr IN project
AND VBFA~VBTYP_N = 'M' "Subsequent doc is Invoice
AND VBFA~VBTYP_V = 'C' "Prec doc is Sales order
IF NOT i_vbak[] IS INITIAL.
**Change of ORDER in SELECTS HERE
SELECT vbeln fkdat FROM vbrk INTO TABLE i_vbrk
FOR ALL ENTRIES IN i_vbak
WHERE vbeln = i_vbak-vbeln
AND fkdat IN period.
IF NOT i_vbrk[] IS INITIAL.
SELECT vbeln aubel netwr kzwi1 FROM vbrp INTO TABLE i_vbrp
FOR ALL ENTRIES IN i_vbrk
WHERE VBELN = i_vbrk-vbeln.
endif.
SELECT kunnr name1 pstlz FROM kna1 INTO TABLE i_kna1 FOR ALL ENTRIES IN i_vbak
WHERE kunnr = i_vbak-kunnr
AND name1 IN name.
*SELECT vbeln zssidc FROM zzvbak INTO TABLE i_zzvbak FOR ALL ENTRIES IN i_vbak
*WHERE vbeln = i_vbak-vbeln
*AND zssidc IN ssid .
select netwr kzwi1 erdat from vbrp into table i_vbrp for all entries in i_vbak
where erdat = i_vbak-erdat.
SELECT kunnr parnr parvw FROM knvp INTO CORRESPONDING FIELDS OF TABLE i_knvp FOR ALL ENTRIES IN i_vbak
WHERE kunnr = i_vbak-kunnr
AND parvw = 'AP'
AND parnr IN contact.
ENDIF .
SORT I_VBAK BY VBELN .
SORT I_VBRK BY VBELN .
LOOP AT i_vbrp. "Invoice Item data
MOVE i_vbrp-netwr TO i_data-netwr .
MOVE i_vbrp-kzwi1 TO i_data-kzwi1.
READ table I_VBAK WITH KEY VBELN = I_VBRP-VBELN BINARY SEARCH. "Sales Order info
IF SY-SUBRC = 0.
MOVE I_VBAK-VBELV TO I_DATA-VBELN. "Sales Order no
MOVE I_VBAK-erdat TO I_DATA-erdat. " Date on Which Record Was Created
MOVE I_VBAK-kunnr TO I_DATA-KUNNR. "Customer No
MOVE I_VBAK-ps_psp_pnr TO I_DATA-ps_psp_pnr. " Work Breakdown Structure Element
endif.
READ TABLE I_VBRK WITH KEY VBELN = I_VBRP-VBELN BINARY SEARCH. "Invoice header info
IF SY-SUBRC = 0.
MOVE i_vbrk-fkdat TO i_data-fkdat.
endif.
READ TABLE I_KNA1 WITH KEY KUNNR = I_VBAK-KUNNR BINARY SEARCH. "Customer info
IF SY-SUBRC = 0.
MOVE i_kna1-kunnr TO i_data-kunnr.
MOVE i_kna1-name1 TO i_data-name1.
MOVE i_kna1-pstlz TO i_data-pstlz .
endif.
READ TABLE I_KNvp WITH KEY KUNNR = I_VBAK-KUNNR BINARY SEARCH. "Partner info
IF SY-SUBRC = 0.
MOVE i_knvp-parnr TO i_data-parnr.
endif.
APPEND i_data.
ENDLOOP.
ENDFORM. "DATA_RETRIEVAL
*& Form DISPLAY_ALV_REPORT
text
FORM display_alv_report.
GD_REPID = SY-REPID.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = ' '
I_BYPASSING_BUFFER = ' '
I_BUFFER_ACTIVE = ' '
i_callback_program = sy-repid
I_CALLBACK_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND = ' '
i_callback_top_of_page = 'TOP_OF_PAGE'
I_CALLBACK_HTML_TOP_OF_PAGE = ' '
I_CALLBACK_HTML_END_OF_LIST = ' '
I_STRUCTURE_NAME =
I_BACKGROUND_ID = ' '
I_GRID_TITLE =
I_GRID_SETTINGS =
IS_LAYOUT =
it_fieldcat = fieldcatalog[]
IT_EXCLUDING =
IT_SPECIAL_GROUPS =
IT_SORT =
IT_FILTER =
IS_SEL_HIDE =
I_DEFAULT = 'X'
I_SAVE = ' '
IS_VARIANT =
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
I_HTML_HEIGHT_TOP = 0
I_HTML_HEIGHT_END = 0
IT_ALV_GRAPHICS =
IT_HYPERLINK =
IT_ADD_FIELDCAT =
IT_EXCEPT_QINFO =
IR_SALV_FULLSCREEN_ADAPTER =
IMPORTING
E_EXIT_CAUSED_BY_CALLER =
ES_EXIT_CAUSED_BY_USER =
TABLES
t_outtab = i_data.
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. "DISPLAY_ALV_REPORT
FORM FOR FILLING LISTHEADER *
FORM fill_listheader USING it_listheader TYPE slis_t_listheader.
DATA : wa_listheader TYPE slis_listheader.
wa_listheader-typ = 'H'.
wa_listheader-info = 'Noel Gifts International Limited '.
APPEND wa_listheader TO it_listheader.
wa_listheader-typ = 'S'.
wa_listheader-info = 'CUSTOMER CREDIT EXCEPTION REPORT' .
APPEND wa_listheader TO it_listheader.
CLEAR wa_listheader.
ENDFORM. "fill_listheader
*& Form top_of_page
text
FORM top_of_page.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = it_listheader.
ENDFORM. "top_of_page
REWARD IF HELPFUL. -
Read contents of changing fields from internal table
Hi Folks,
Please help me in my query below:
Consider there is a Z-table with two fields TABNAM and FIELD having values KNA1 and NAME1 respectively.
In my report I have fetched entries for customers from KNA1. Now based on the field from Z-table I want to populate a variable suppose V_FREE_VAR with the value from KNA1 table.
Here V_FREE_VAR is of CHAR200 so that it accomodate all types of values from KNA1.
The value of Z-table FIELD can change daily i.e next day the value may be PSTLZ.
So how can I read the particular field from internal table as the field to be read is dynamic.
Note: using case is not feasible.
Thanks in advance.
Regards,
Shardul@Hartmut P
As Rob said i want to get the value of the field from internal table. the code is something like this.
I_KNA1 contains records for customers.
Suppose values of Z-table are in internal table I_TEMP_TABLE.
Entries in I_TEMP_TABLE are as follows
TABNAME FIELDNAME
KNA1 NAME1
The value of FIELNAME in Z-table can be changed
Loop at I_TEMP_TABLE into WA_TEMP_TABLE.
Read I_KNA1 into WA_KNA1 with key KUNNR = '0001002234'.
IF SY-SUBRC EQ 0.
CASE WA_TEMP_TABLE-FIELDNAME.
WHEN 'NAME1'.
V_VAR = WA_KNA1-NAME1.
WHEN 'PSTLZ'
V_VAR = WA_KNA1-PSTLZ.
ENDIF.
But using case is not appropriate as KNA1 contains 176 fields.
Maybe you are looking for
-
Hi, We've been using Oracle HTTP Server (Apache) for my APEX connections. We're new to APEX Listener and have no knowledge about it. 1. First of all, is Oracle GlassFish Server free? Does it require license cost per CPU like Oracle Weblogic does? 2.
-
How to get the merged bitmap data of a photoshop selection
Im creating a "Flash Panel" extension for a client and Im having some issues getting the bitmap data associated with the current selection. Origninally I thought I would use the WindowedApplication and have the BITMAP_FILE fileformat available within
-
Synced with 2.0 and now no favorites or visual voice
Hey guys I need some help. I updated to 2.0 but in the process I lost some info from my phone. I have worked to get my music and ical and contacts back which werent originally there, but I cant get my favorites or voicemail to work. Favorites I can g
-
How to show a field value and a message text in a message box
Hi I have made a message box that shows the value of a text field when a button is clicked. I would like to add some message text to the message box as well, so that my message box will show something like: You have entered this data: "textField valu
-
Hellow. I have a problem with JTable. This is code of my simple programm: StClass.java import javax.swing.*; public class StClass public static void main(String []args) JFrame frm = new JFrame(); MyTab tb = new MyTab(); JS