ESS Tax Declaration Multiple Records Restriction
Hi,
My client wants to restrict the tax declaration records to only one record.
ex: as an employee if i want to declare HRA amount, then thru ESS, under compensation & benefits, i should be able to create only one record.
presently employee am able to create multiple records for the same component & send for approval to my manager which requires a lot of time to go thru all of them.
please suggest a solution for it...
rgrds,
ravi
Thanks Mithun,
Actual problem is:
approver is able to see the same record for tax declaration type for the same employee, twice.
ex: if the declare HRA once thru my portal, then my approver is able to see the record twice.
Please let me know if we can restrict this to one record..
Thanks & Regards,
Ravi
Similar Messages
-
Hi
Not able to get ESS Tax node -Provision and actual in R/3, do we need to activate something for the same.
Thanks
Adityaacheck note
1441924 and 1366382 -
Income tax declarations approval error
Dear Team,
In my client, employee has submitted the income tax declarations through employee self-service (ESS), when the approval approves the infotype 0585 & 0586 shown the error. While the rest infotype (0581, 0584 etc) updated successfully.
The error is given below:-
“Error while infotype/ Database updating. Solution type: 00002”
Kindly suggest!
Regards,
RakeshFor those employees check whether 585/586 records exist previously-for that year
We encountered the same error for the new employees joined in this FY year but IT0585/0586 were not created during hiring. for such employees through IT declaration new record is not created -but existing record will be modified through declaration.
try creating a blank record for those employees and try approving again
Regards
Srinivas -
PLSQL web service returning multiple records
Hello,
I am trying to create a web service using oracle 11g which should be able to return multiple records.
Based on hints and code samples found on the internet here is my code :
CREATE OR REPLACE TYPE test_rec is OBJECT (
s_nume_adre NUMBER ,
c_eta_civi VARCHAR2(4 BYTE),
l_nom1_comp VARCHAR2(40 BYTE),
l_nom2_comp VARCHAR2(40 BYTE),
l_nom3_comp VARCHAR2(40 BYTE),
l_pren_comp VARCHAR2(30 BYTE),
d_date_nais DATE);
CREATE OR REPLACE TYPE test_array AS TABLE OF test_rec;
CREATE OR REPLACE PACKAGE test_pkg AS
function get_rows(snume_adre in number) return test_array;
END;
CREATE OR REPLACE PACKAGE BODY test_pkg AS
function get_rows(snume_adre in number) return test_array is
v_rtn test_array := test_array(null);
v_first boolean := true;
cursor c_get_rows(snume_adre in number) is
SELECT a.s_nume_adre,
nvl(a.c_eta_civi, '') c_eta_civi,
nvl(a.l_nom1_comp, '') l_nom1_comp,
nvl(a.l_nom2_comp, '') l_nom2_comp,
nvl(a.l_nom3_comp, '') l_nom3_comp,
nvl(a.l_pren_comp, '') l_pren_comp,
nvl(a.d_date_nais, to_date('01.01.1900', 'dd.mm.yyyy')) d_date_nais
FROM bro.z45 a
where a.s_nume_adre = snume_adre or snume_adre is null;
begin
for rec in c_get_rows(snume_adre) loop
if v_first then
v_first := false;
else
v_rtn.extend;
end if;
v_rtn(v_rtn.last) := test_rec(rec.s_nume_adre, rec.c_eta_civi, rec.l_nom1_comp, rec.l_nom2_comp,
rec.l_nom3_comp, rec.l_pren_comp, rec.d_date_nais);
end loop;
return v_rtn;
end;
END;
--select * from table (test_pkg.get_rows(null));
I am able to retrieve the data using the select.
However when I try to access its wsdl I get an error :
<soap:Envelope>
<soap:Body>
<soap:Fault>
<faultcode>soap:Client</faultcode>
<faultstring>Error processing input</faultstring>
<detail>
<OracleErrors></OracleErrors>
</detail>
</soap:Fault>
</soap:Body>
</soap:Envelope>
If I comment the function call in the package declaration I get a "correct" wsdl :
<definitions name="GET_ROWS" targetNamespace="http://xmlns.oracle.com/orawsv/TEST/TEST_PKG/GET_ROWS" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="http://xmlns.oracle.com/orawsv/TEST/TEST_PKG/GET_ROWS" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">
<types>
<xsd:schema targetNamespace="http://xmlns.oracle.com/orawsv/TEST/TEST_PKG/GET_ROWS" elementFormDefault="qualified">
<xsd:element name="GET_ROWSInput">
<xsd:complexType>
</xsd:complexType>
</xsd:element>
<xsd:element name="GET_ROWSOutput">
<xsd:complexType>
</xsd:complexType>
</xsd:element>
</xsd:schema>
</types>
<message name="GET_ROWSInputMessage">
<part name="parameters" element="tns:GET_ROWSInput"/>
</message>
<message name="GET_ROWSOutputMessage">
<part name="parameters" element="tns:GET_ROWSOutput"/>
</message>
<portType name="GET_ROWSPortType">
<operation name="GET_ROWS">
<input message="tns:GET_ROWSInputMessage"/>
<output message="tns:GET_ROWSOutputMessage"/>
</operation>
</portType>
<binding name="GET_ROWSBinding" type="tns:GET_ROWSPortType">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="GET_ROWS">
<soap:operation soapAction="GET_ROWS"/>
<input>
<soap:body parts="parameters" use="literal"/>
</input>
<output>
<soap:body parts="parameters" use="literal"/>
</output>
</operation>
</binding>
<service name="GET_ROWSService">
<documentation>Oracle Web Service</documentation>
<port name="GET_ROWSPort" binding="tns:GET_ROWSBinding">
<soap:address location="http://server.domain.ch:8080/orawsv/TEST/TEST_PKG/GET_ROWS"/>
</port>
</service>
</definitions>
Any hint as how to create and access pl sql web service returning multiple rows?
I don't use java and don't have access to tools like JDeveloper.
Thanks!The actual issue is that collection types are not supported for return parameters.
The solution is to wrap the collection into another object.
Here's a working example based on your settings :
CREATE OR REPLACE TYPE test_rec is OBJECT (
empno number(4)
, ename varchar2(10)
, hiredate date
CREATE OR REPLACE TYPE test_array AS TABLE OF test_rec;
CREATE OR REPLACE TYPE test_array_wrapper is OBJECT ( arr test_array );
CREATE OR REPLACE PACKAGE test_pkg AS
function get_rows(p_deptno in number) return test_array_wrapper;
END;
CREATE OR REPLACE PACKAGE BODY test_pkg AS
function get_rows(p_deptno in number) return test_array_wrapper is
results test_array;
begin
select test_rec(empno, ename, hiredate)
bulk collect into results
from scott.emp
where deptno = p_deptno;
return test_array_wrapper(results);
end;
END;
The wsdl is then generated correctly :
SQL> select httpuritype('http://DEV:dev@localhost:8080/orawsv/DEV/TEST_PKG/GET_ROWS?wsdl').getxml() from dual;
HTTPURITYPE('HTTP://DEV:DEV@LOCALHOST:8080/ORAWSV/DEV/TEST_PKG/GET_ROWS?WSDL').GETXML()
<definitions name="GET_ROWS" targetNamespace="http://xmlns.oracle.com/orawsv/DEV/TEST_PKG/GET_ROWS" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="http://xmlns.oracle.com/orawsv/DEV/TEST_PKG/GET_
ROWS" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">
<types>
<xsd:schema targetNamespace="http://xmlns.oracle.com/orawsv/DEV/TEST_PKG/GET_ROWS" elementFormDefault="qualified">
<xsd:element name="CTEST_ARRAY_WRAPPER-GET_ROWSInput">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="P_DEPTNO-NUMBER-IN" type="xsd:double"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="GET_ROWSOutput">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="RETURN" type="tns:TEST_ARRAY_WRAPPERType"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:complexType name="TEST_ARRAY_WRAPPERType">
<xsd:sequence>
<xsd:element name="TEST_ARRAY_WRAPPER">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="ARR">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="TEST_REC" type="tns:TEST_REC_IntType" maxOccurs="unbounded" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="TEST_REC_IntType">
<xsd:sequence>
<xsd:element name="EMPNO" type="xsd:double"/>
<xsd:element name="ENAME">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="10"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="HIREDATE" type="xsd:date"/>
</xsd:sequence>
</xsd:complexType>
</xsd:schema>
</types>
<message name="GET_ROWSInputMessage">
<part name="parameters" element="tns:CTEST_ARRAY_WRAPPER-GET_ROWSInput"/>
</message>
<message name="GET_ROWSOutputMessage">
<part name="parameters" element="tns:GET_ROWSOutput"/>
</message>
<portType name="GET_ROWSPortType">
<operation name="GET_ROWS">
<input message="tns:GET_ROWSInputMessage"/>
<output message="tns:GET_ROWSOutputMessage"/>
</operation>
</portType>
<binding name="GET_ROWSBinding" type="tns:GET_ROWSPortType">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="GET_ROWS">
<soap:operation soapAction="GET_ROWS"/>
<input>
<soap:body parts="parameters" use="literal"/>
</input>
<output>
<soap:body parts="parameters" use="literal"/>
</output>
</operation>
</binding>
<service name="GET_ROWSService">
<documentation>Oracle Web Service</documentation>
<port name="GET_ROWSPort" binding="tns:GET_ROWSBinding">
<soap:address location="http://localhost:8080/orawsv/DEV/TEST_PKG/GET_ROWS"/>
</port>
</service>
</definitions> -
How to concatenate multiple records into one
Hi everybody:
I want to know if exist some way to concat multiple records into one without using cursors. For example, I have a table named "Authors" like this:
Lan|Author
English|Ernest Hemingway
Spanish|Octavio Paz
Spanish|Mario Vargas Llosa
English|Sinclair Lewis
Spanish|Gabriel García Márquez
And I want to get this:
Author
Octavio Paz, Mario Vargas Llosa, Gabriel García Márquez
I have worked with SQL Server and I can do something like this:
CREATE FUNCTION dbo.MyConcat (@lan varchar(10))
RETURNS varchar(5000) AS
BEGIN
declare @retvalue varchar(5000)
set @retvalue=''
select @retvalue = @retvalue + Author +',' from Authors where lan = @lan
return substring(@retvalue,1,len(@retvalue)-1)
END
ie, do not use cursors to concatenate records. However, with ORACLE, I have to do someting like this.
FUNCTION MyConcat(P_Lan IN VARCHAR2) RETURN VARCHAR2 IS
v_ret VARCHAR2(4000);
v_element VARCHAR2(4000);
v_cursor sys_refcursor;
BEGIN
OPEN v_cursor FOR SELECT Author FROM Authors where Lan = P_Lan
LOOP
FETCH v_cursor INTO v_elemento;
EXIT WHEN v_cursor%NOTFOUND;
IF v_ret IS NULL THEN
v_ret := v_element;
ELSE
v_ret := v_ret || ', ' || v_element;
END IF;
END LOOP;
RETURN v_ret;
END;
Exist some other way to do this?
Best Regards
JackTks both for answer... I forgot to mention that I am using Oracle 10g. I read about LISTAGG() but this function is available for Oracle 11g release 2.
I wil read about the other techniques than Hoek mention
Best Regards.
Jack -
Multiple record created in Cube
Hi BI Expert,
I have got a DSO and it's passing data to infocube. When it passes data, the cube generates multiple records. I am using the following code and this was originally written by BI consultant.
PROGRAM UPDATE_ROUTINE.
$$ begin of global - insert your declaration only below this line -
TABLES: /bic/azo_sop_100,
/bic/aZO_POP_100,
/bic/azo_pop0600,
/BIC/AZO_PRE_100,
/BIC/AZO_SBP_100,
/BIC/AZO_SDP_100.
DATA: in TYPE f,
out TYPE f,
denom TYPE f,
numer TYPE f,
vc_df_preq type /BI0/OIDF_PREQ.
Def. of 'credit-documents': following doc.categ. are 'credit docs'
return order (H)
credit memo (K)
Credit-documents are delivered with negative sign. Sign is switched
to positive to provide positive key-figures in the cube.
The combination of characteristics DE_CRED and DOC-CLASS provides
a comfortable way to distinguisch e.g. positive incoming orders or
order returns.
Def. der 'Soll-Dokumente': folgende Belegtypen sind 'Soll-Belege'
Retoure (H)
Gutschriftsanforderung (K)
Soll-Dokumente werden mit negativem Vorzeichen geliefert. Um die Kenn-
zahlen positiv in den Cube zu schreiben, wird das Vorzeich. gedreht
Die Kombination der Merkmale DEB_CRED und DOC-CLASS gibt Ihnen die
Möglichkeit schnell z.B. zwischen Auftrags-Eingang oder Retouren zu
unterscheiden.
DATA: deb_cred(2) TYPE c VALUE 'HK'.
DATA: quot(1) TYPE c VALUE 'B'.
CONSTANTS: c_msgty_e VALUE 'E'.
Variable declarations for
derivation of Fiscal week {by SB:18.10.2007}
DATA: lv_createdon TYPE /bi0/oicreatedon,
lv_period LIKE t009b-poper,
lv_year LIKE t009b-bdatj,
lv_fiscweek TYPE /bi0/oicalweek,
w_vendor like /BIC/AZO_POP_100-VENDOR.
Deriving Master Data Attribute (0MRP_CONTRL)
from 0MAT_PLANT {by SB:18.10.2007}
Hashed table declaration for 0MAT_PLANT master data
*DATA: it_mat_plant
TYPE HASHED TABLE OF /bi0/pmat_plant
WITH UNIQUE KEY plant mat_plant
INITIAL SIZE 0.
$$ end of global - insert your declaration only before this line -
FORM compute_data_field
TABLES MONITOR STRUCTURE RSMONITOR "user defined monitoring
USING COMM_STRUCTURE LIKE /BIC/CS8ZO_SOP_5
RECORD_NO LIKE SY-TABIX
RECORD_ALL LIKE SY-TABIX
SOURCE_SYSTEM LIKE RSUPDSIMULH-LOGSYS
CHANGING RESULT LIKE /BIC/VZIB_SOP_1T-SUBTOT_1S
RETURNCODE LIKE SY-SUBRC
ABORT LIKE SY-SUBRC. "set ABORT <> 0 to cancel update
$$ begin of routine - insert your code only below this line -
DATA: VALUE LIKE COMM_STRUCTURE-NET_VALUE.
DATA: US_RATE_TYPE LIKE COMM_STRUCTURE-RATE_TYPE.
CLEAR RESULT.
IF NOT COMM_STRUCTURE-SUBTOTAL_1 IS INITIAL AND
COMM_STRUCTURE-DOC_CURRCY NE COMM_STRUCTURE-STAT_CURR.
US_RATE_TYPE = COMM_STRUCTURE-RATE_TYPE.
IF US_RATE_TYPE EQ SPACE.
US_RATE_TYPE = 'M'.
ENDIF.
ENDIF.
IF COMM_STRUCTURE-DOC_CURRCY NE COMM_STRUCTURE-STAT_CURR.
CALL FUNCTION 'CONVERT_TO_STAT_CURRENCY'
EXPORTING
DATE = COMM_STRUCTURE-ST_UP_DTE
DOCUMENT_AMOUNT = COMM_STRUCTURE-SUBTOTAL_1
DOCUMENT_CURRENCY = COMM_STRUCTURE-DOC_CURRCY
LOCAL_CURRENCY = COMM_STRUCTURE-LOC_CURRCY
STAT_CURRENCY = COMM_STRUCTURE-STAT_CURR
LOCAL_RATE = COMM_STRUCTURE-EXCHG_RATE
STAT_RATE = COMM_STRUCTURE-EXCHG_STAT
LOCAL_TYPE_OF_RATE = US_RATE_TYPE
STAT_TYPE_OF_RATE = US_RATE_TYPE
IMPORTING
STATISTICAL_AMOUNT = VALUE
EXCEPTIONS
LOCAL_RATE_NOT_FOUND = 1
STAT_RATE_NOT_FOUND = 2.
CASE SY-SUBRC.
WHEN 0.
RESULT = VALUE.
RETURNCODE = 0.
WHEN 1.
CLEAR MONITOR.
MONITOR-msgno = '005'.
MONITOR-msgid = 'SDBW'.
MONITOR-msgty = c_msgty_e.
MONITOR-msgv1 = COMM_STRUCTURE-DOC_NUMBER.
MONITOR-msgv2 = COMM_STRUCTURE-ST_UP_DTE.
MONITOR-msgv3 = COMM_STRUCTURE-DOC_CURRCY.
MONITOR-msgv4 = COMM_STRUCTURE-LOC_CURRCY.
append MONITOR.
RETURNCODE = 4.
WHEN 2.
CLEAR MONITOR.
MONITOR-msgno = '006'.
MONITOR-msgid = 'SDBW'.
MONITOR-msgty = c_msgty_e.
MONITOR-msgv1 = COMM_STRUCTURE-DOC_NUMBER.
MONITOR-msgv2 = COMM_STRUCTURE-ST_UP_DTE.
MONITOR-msgv3 = COMM_STRUCTURE-DOC_CURRCY.
MONITOR-msgv4 = COMM_STRUCTURE-STAT_CURR.
append MONITOR.
RETURNCODE = 4.
ENDCASE.
ELSE.
RESULT = COMM_STRUCTURE-SUBTOTAL_1.
ENDIF.
IF COMM_STRUCTURE-DOC_CATEG CA DEB_CRED.
RESULT = RESULT * ( -1 ).
ENDIF.
If the order type is 'Returns' or 'Credit Memo' then the figure will be changed to positive value. But the cube has got both negative and positive value for the order line.
Order line PO no. 0COST 0CML_OR_QTY
89576 10 925401 130.60 1
89576 10 925401 -130.60 1-
Could you please help me as to how I can resolve this issue?
Thanks.
Edited by: Bhai Basnet on Mar 7, 2008 11:58 AMHi,
the code you provided does not duplicate records.
Most probably the records are duplicated in the start routine, or the key figure is copied in the update rule (so you get 0AMOUNT en 0AMOUNT_01).
So I'd check your start routine and take a look if the key figures are copied. -
Inserting multiple records in to database table using webdynpro abap
Hi all,
I have created a username inputfield,a button and a table
with one coloumn.
If i enter names in the input field then the values should be
displayed in that table.
Even i have got the answer i am not able to insert
the values in to database(ztable) table.
i.e. only one value(1st) was inserted the second value was
not inserted ....
so kindly send me the coding to insert multiple records
into the database table......
by,
ranjithhi Ranjith,
If you want to insert multiple records from the webdynpro view table to database table then try the following code.
DATA lo_nd_tablenode TYPE REF TO if_wd_context_node.
DATA lo_el_tablenode TYPE REF TO if_wd_context_element.
DATA ls_tablenode TYPE wd_this->element_tablenode.
DATA it_tablenode LIKE STANDARD TABLE OF ls_tablenode.
navigate from <CONTEXT> to <tablenode> via lead selection
lo_nd_tablenode = wd_context->get_child_node( name = wd_this->wdctx_tablenode ).
get element via lead selection
lo_el_tablenode = lo_nd_tablenode->get_element( ).
get all declared attributes
lo_nd_tablenode->get_static_attributes_table(
IMPORTING
table = it_tablenode ).
MODIFY databasetablename FROM TABLE it_tablenode.
here it_tablenode is the internal table which holds the value from webdynpro view..
Regards,
Shamila. -
Multiple records as a single transaction in JDBC Receiver Adapter
Hi,
I am sending multiple records in a single message to a JDBC receiver adapter to get updated to the database. How to make all the insert a single transaction. Like all the records has to be inserted else all has to be rolled back.
For eg for table Employee two fields EMPNO and EMPNAME
EMPNO EMPNAME
1 Jay
2 Christie
These two records are in the same message and has to be updated
if one fails the other has to be rolled back.
How can i achieve it using a JDBC Receiver Adapter.
Thanks
SebinHi Rolf Micus,
My xml structure to insert 2 tables are as follow:-
<?xml version="1.0" encoding="UTF-8"?>
<ns0:MT_PODB xmlns:ns0="http://abeam.com/xi/fer_filejdbc_scenarios1">
.. <STATEMENT_HEADER>
.... <ROW action="INSERT">
...... <TABLE>ZPO_HEADER</TABLE>
...... <access>
........ <PONUMBER>001</PONUMBER>
........ <PODATE>20070801</PODATE>
........ <POAMOUNT>200.99</POAMOUNT>
.... </access>
.... </ROW>
.. </STATEMENT_HEADER>
.. <STATEMENT_DETAIL>
.... <ROW action="INSERT">
...... <TABLE>ZPODETAIL</TABLE>
...... <access>
........ <PONUMBER>001</PONUMBER>
........ <PONO>1</PONO>
........ <POITEMCODE>A12345</POITEMCODE>
........ <POITEMDESC>Testing A</POITEMDESC>
........ <POITEMAMOUNT>2990.00</POITEMAMOUNT>
........ <POITEMQTY>55</POITEMQTY>
...... </access>
.... </ROW>
.. </STATEMENT_DETAIL>
</ns0:MT_PODB>
Fro the structure that you have declared..there is only contained 1 statement, try to admend your MT to have 2 statements.
If you wish to insert multiple records, just create a loop/multiple of access tag inside STATEMENT tag. For example, multiple records insert into Header should have multiple access tag in Header STATEMENT. Same goes for muliple records insert into Details STATEMENT should have multiple access tag in Details STATEMENT.
With this structure, whenever any records insert/update/delete failed...it will rollback all the transactions together, ie. Header and Details.
PS: For different table, please create different STATEMENT.
Hope it helps.
Message was edited by: Pua Ming Fei -
How to retrive one table records into another table by multiple records
how to retrive table X records into another table Y by multiple records (means at once i want display 10 records) in form 6i .
when i am written cursor it is ftching only one record.But i want to display all records at once.
Declare
Cursor cur_name is
select PROTOCOL_NO,DOCNUM,SUBSETSN,REPEATSN,AESEQ,AETERM from coding_ae WHERE PROTOCOL_NO='KP229';
Begin
open cur_name;
loop
fetch cur_name into :PROTOCOL_NO,:DOCNUM,:SUBSETSN,:REPEATSN,:AESEQ,:AETERM;
exit when cur_name%notfound;
next_record;
end loop;
close cur_name;
End;Hi,
Make sure the cursor is in the detailed block. For that use 8GO_BLOCK* built-in. So the code will be
Declare
Cursor cur_name is
select PROTOCOL_NO,DOCNUM,SUBSETSN,REPEATSN,AESEQ,AETERM from coding_ae;
Begin
GO_BLOCK('<detailed_block_name>');
open cur_name;
loop
fetch cur_name into :PROTOCOL_NO,:DOCNUM,:SUBSETSN,:REPEATSN,:AESEQ,:AETERM;
exit when cur_name%notfound;
next_record;
end loop;
close cur_name;
End;Regards,
Manu.
If my response or the response of another was helpful or Correct, please mark it accordingly -
Can i get multiple records if selection screen is 900 using PROVIDE
Hi All,
Iam using following statement for fetching MULTIPLE records from infotype 0008. In Attributes if i declare LDB as pnp and selection screen as 900, then iam not getting any records.
Instead of th selection screen 900 is empty. then records will getting properly.
How can i get multiple records if selection screen is 900?
PROVIDE * FROM p0008
between pn-begda and pn-endda.Hi Ranjith
You can use
PYBEGDA and PYENDDA instead of PN-BEGDA AND PN-ENDDA.
Regards
Muneer.VK -
Hello all! I have implemented a simple shoppingcart (not for commercial purposes) and I would like to help me with the following code. When a user makes shopping, the items appear in a table with the use of a java servlet with arraylist.. When the user checkouts, I want to call a servlet that it will enter the items of shoppingcart (multiple records) in a table in my db (I use mysql). I have tried to write the following code but it doesn't work. Can you give me some hints how to achieve this?
Sorry for my possible error codes but I m new in programming and I m trying to find the way..
Thanx a lot for your help,
danny
import java.sql.*;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.ArrayList;
public class Checkout extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
res.setContentType("text/html");
PrintWriter out = res.getWriter();
String[] itemsSelected;
String[] priceSelected;
String[] quantitySelected;
itemsSelected = req.getParameterValues("productname");
priceSelected = req.getParameterValues("price");
quantitySelected = req.getParameterValues("quantity");
// connecting to database
Connection con = null;
Statement stmt = null;
PreparedStatement ps = null;
try {
//db connection
String sql;
sql = "INSERT INTO order (productname, price, quantity) VALUES (?,?,?)";
ps = con.prepareStatement(sql);
stmt = con.createStatement();
for (int i = 0; i < itemsSelected.length; i++) {
=
ps.setString(1, itemsSelected[ i ]);
ps.setString(2, priceSelected[ i ]);
ps.setString(3, quantitySelected[ i ]);
ps.executeUpdate();
} catch (SQLException e) {
throw new ServletException(e);
} catch (ClassNotFoundException e) {
throw new ServletException(e);
} finally {
try {
if(stmt != null)
stmt.close();
if(ps != null)
ps.close();
if(con != null)
con.close();
} catch (SQLException e) {}
out.close();
}Message was edited by:
danny44Well, after some tests I did, I understood that the variables have not be passed from the shoppingcart servlet to checkout. I declared the variables for 1 product (+productname+) ,not the array, as[b] hidden values in the shoppingcart servlet and when user clicked checkout button, checkout servlet was called and my db was updated succesfully. My problem is now, how all the products in the shopping cart can be successfully entered in the db because I receive only the last one product everytime I checkout. I think that I will probably have to declare the whole array of products and not the one string in my hidden values but I dont know how..
If you have a solution to this, please help me.. I m new in java and I have read a lot to create my code and build my project so every help will be valuable for me to continue...
Thanx again -
How to Save Multiple Records In Data Block
Hi All,
I Have Two Blocks --> Control Block,Database Block
Please Any Idea How to Save Multiple Records In Data Block when User changed Data in Control Block.
Thanks For Your Help
SaNow i have to use each record of control block(ctl_blk) as where condition in data base block(dat_blk)and display 10 records from database table.>
Do you want this coordination to be automatic/synchronized or only when the user clicks a button or something else to signal the coordination? Your answer here will dicate which trigger to put your code in.
As to the coordination part, as the user selects a record in the Control Block (CB), you will need to take the Key information and modify the Data Block's (DB) "DEFAULT_WHER E" block property. The logical place to put this code is the CB When-New-Record-Instance (WNRI) trigger. You code will look something like the following:
/* Sample WNRI trigger */
/* This sample assumes you do not have a default value in the BLOCK WHER E property */
DECLARE
v_tmp_dw VARCHAR2(250);
BEGIN
v_tmp_dw := ' DB_Key_Column1 = '||:CONTROL.Key_Column1||' AND DB_Key_Column2 = '||:CONTROL.Key_Column_2;
Set_Block_Property('DATA_BLOCK', DEFAULT_WHER E, v_tmp_df);
/* If you want auto coordination to occur, do the following */
Go_Block('DATA_BLOCK');
Execute_Query;
/* Now, return to the Control Block */
Go_Block('CONTROL_BLOCK');
END;
The Control block items are assigned with values in Form level (Key_exeqry).If your CD is populated from a single table, it would be better to create a Master - Detail relationship (as Abdetu) describes.
Hope this helps,
Craig B-)
If someone's response is helpful or correct, please mark it accordingly. -
How to pass multiple records to target side using xquery
Hi Everybody,
I am using xquery transformation.
Input: Source payload contains 5 variables.
Target payload contains 5 variables.
I have input with payload with multiple instance like:
<Input>
<payload1>
<a>1<a>
<b>2<b>
<c>3<c>
<d>4<d>
<e>5<e>
</payload1>
<payload1>
<a>6<a>
<b>7<b>
<c>8<c>
<d>9<d>
<e>10<e>
</payload1>
</Input>
So my requirement is to pass above records into target side,
So I am using xquery Transformation.
I have written code as follows.
(:: pragma bea:global-element-parameter parameter="$tHRecAdv1" element="ns0:THRecAdv" location="../XMLSchemas/THRecAdv.xsd" ::)
(:: pragma bea:global-element-return element="ns1:ShipmentReceiptEBO" location="../../AIAReferenceModelProject/EnterpriseObjectLibrary/Core/EBO/ShipmentReceipt/V1/ShipmentReceiptEBO.xsd" ::)
declare namespace ns2 = "http://xmlns.oracle.com/EnterpriseObjects/Core/Custom/EBO/ShipmentReceipt/V1";
declare namespace ns1 = "http://xmlns.oracle.com/EnterpriseObjects/Core/EBO/ShipmentReceipt/V1";
declare namespace ns4 = "http://xmlns.oracle.com/EnterpriseObjects/Core/Common/V2";
declare namespace ns3 = "http://xmlns.oracle.com/EnterpriseObjects/Core/Custom/Common/V2";
declare namespace ns0 = "http://diversey.com/THRecAdv";
declare namespace xf = "http://tempuri.org/ShipmentReceiptServicesProject/XMLTransformations/THRecAdvFile_ShipmentReceiptEBO_JDE_XQuery/";
declare function xf:THRecAdvFile_ShipmentReceiptEBO_JDE_XQuery($tHRecAdv1 as element(ns0:THRecAdv))
as element(ns1:ShipmentReceiptEBO) {
for $THRecAdvFields in $tHRecAdv1/ns0:THRecAdvFields
return
<ns1:ShipmentReceiptEBO>
<ns4:Identification>
<ns4:BusinessComponentID>{ data($THRecAdvFields/ns0:JD_WHSE_Code) }</ns4:BusinessComponentID>
<ns4:ID schemeID = "{ (data($THRecAdvFields/ns0:JD_PO_Number)) }"
schemeVersionID = "{ data($THRecAdvFields/ns0:JD_PO_Type) }">{ data($THRecAdvFields/ns0:WMS_InternalPONumber) }</ns4:ID>
<ns4:ApplicationObjectKey>
<ns4:ID>{ data($THRecAdvFields/ns0:JD_BranchPlant) }</ns4:ID>
</ns4:ApplicationObjectKey>
<ns4:Revision>
<ns4:Reason>{ data($THRecAdvFields/ns0:ReturnReceiptReasonCode) }</ns4:Reason>
</ns4:Revision>
</ns4:Identification>
<ns1:ExpectedReceiptDate>{ data($THRecAdvFields/ns0:WMS_ReceiptDate) }</ns1:ExpectedReceiptDate>
<ns4:InvoiceReference>
<ns4:InvoiceIdentification>
<ns4:ID>{ data($THRecAdvFields/ns0:JDE_SupplierInvoiceNumber) }</ns4:ID>
</ns4:InvoiceIdentification>
</ns4:InvoiceReference>
<ns1:ShipmentReceiptLine actionCode = "{ data($THRecAdvFields/ns0:ActionFlag) }">
<ns4:Identification>
<ns4:ID schemeID = "{ data($THRecAdvFields/ns0:JD_PO_LineNumber) }"
schemeVersionID = "{ data($THRecAdvFields/ns0:ExternPONumber) }">{ data($THRecAdvFields/ns0:WMS_ReceiptNumber) }</ns4:ID>
<ns4:ContextID>{ data($THRecAdvFields/ns0:WMSReceivingClerk) }</ns4:ContextID>
<ns4:ApplicationObjectKey>
<ns4:ID schemeID = "{ data($THRecAdvFields/ns0:BatchNumber) }"
schemeVersionID = "{ data($THRecAdvFields/ns0:BatchLineNumber) }">{ data($THRecAdvFields/ns0:JD_LocationCode) }</ns4:ID>
</ns4:ApplicationObjectKey>
<ns4:AlternateObjectKey>
<ns4:ID>{ data($THRecAdvFields/ns0:SupplierCode) }</ns4:ID>
<ns4:ContextID>{ data($THRecAdvFields/ns0:LineNumber_Or_SequenceNumber) }</ns4:ContextID>
</ns4:AlternateObjectKey>
<ns4:Revision>
<ns4:Label>{ data($THRecAdvFields/ns0:Records) }</ns4:Label>
</ns4:Revision>
</ns4:Identification>
<ns1:ReceivedQuantity unitCode = "{ data($THRecAdvFields/ns0:ReceiptUOM) }">{ data($THRecAdvFields/ns0:UnitReceipt) }</ns1:ReceivedQuantity>
<ns1:SourceDocumentTypeCode>{ data($THRecAdvFields/ns0:SKU_Code) }</ns1:SourceDocumentTypeCode>
<ns1:DestinationTypeCode>{ data($THRecAdvFields/ns0:DestinationProcessFlag) }</ns1:DestinationTypeCode>
<ns1:Comment>{ data($THRecAdvFields/ns0:Remarks) }</ns1:Comment>
<ns4:Status>
<ns4:Code>{ data($THRecAdvFields/ns0:ProcessSourceFlag) }</ns4:Code>
<ns4:EffectiveDateTime>{ data($THRecAdvFields/ns0:ADDDATE) }</ns4:EffectiveDateTime>
</ns4:Status>
<ns1:ShipmentReceiptTransaction>
<ns1:ShipmentReceiptTransactionLot>
<ns1:ShipmentReceiptItemLotReference>
<ns1:ExpirationDate>{ data($THRecAdvFields/ns0:ExpiryDate) }</ns1:ExpirationDate>
<ns1:CreationDateTime>{ data($THRecAdvFields/ns0:ProductionDate) }</ns1:CreationDateTime>
</ns1:ShipmentReceiptItemLotReference>
</ns1:ShipmentReceiptTransactionLot>
</ns1:ShipmentReceiptTransaction>
</ns1:ShipmentReceiptLine>
</ns1:ShipmentReceiptEBO>
declare variable $tHRecAdv1 as element(ns0:THRecAdv) external;
xf:THRecAdvFile_ShipmentReceiptEBO_JDE_XQuery($tHRecAdv1)
But while importing this code to OSB,and tested it ,
With 1 payload it successfully shows the data in Target side,
But while testing with multiple line items,i am getting an error as follows.
*Error executing the XQuery transformation: line 14, column 17: {err}FORG0005: expected exactly one item, got 2+ items*
So please provide me the steps how to pass multiple records to target side using xquery.
Regards,
Jyoti NayakHi Jyoti Nayak,
You have to do something like the example bellow, you can not just repeat the inner element, you will need an outer "container" tag. So you will have to change the target element of your xq transformation.
declare function xf:setToList($set1 as element(ns0:set))
as element(ns0:list) {
<ns0:list>
for $pair in $set1/ns0:pair
return
<ns0:entry>
<ns0:key>{ data($pair/ns0:key) }</ns0:key>
<ns0:value>{ data($pair/ns0:value) }</ns0:value>
</ns0:entry>
</ns0:list>
Cheers,
Vlad
Give points - it is good etiquette to reward an answerer points (5 - helpful; 10 - correct) for their post if they answer your question. If you think this is helpful, please consider giving points -
Multiple records for infotype with TC1
Hi all,
We have maintained use case A4 for mailing address in ESS.
Strangely, one of our end users, has two overlapping mailing address records! The user had a mailing address record which he edited in ESS. This edited record appears in the backend as a new record. So now the user sees two records in the backend - both with a different start date, but the same end date of 12/31/9999, instead of seeing the first record as delimited. And now when he tries to edit his mailing address in ESS, he gets an RFC error.
Ideally for TC1, a user cannot have two overlapping records and the first record gets delimited to accomodate the updated record as the current record.
Any idea, why this could be happening? We are unable to replicate this issue at our end as this scenario seems impossible for an infotype with TC1.
TIA!
Regards,
Dianaideally it should have delimited the records, but can check how the enduser created the record?
TC1 can use A1,A4,B1,B4
TC2 can use A1,A2,A3,A4,A5,B1,B2,B4,B5
TC3 can use A6,B3
Note this
A: A record can be created specifying the valid start and/or end date Multiple records can exist.. By default the ESS scenario's will allow you specify the start date as today or future date. If you wish to enable ESS scenario's to accept a start date in the past, Business Add-in "HRXSS_PER_BEGDA" can be implemented.
For more information, please refer to IMG activity "Change Default Start Date".
B: A record can be created without specifying the valid start and/or end date. Multiple records are not possible.
A4: Variant of A1, Difference to A1 being, "New <infotype/subtype>" button will always be available on the overview screen of the concerned scenario. E.g., suitable in Permanent address.
A6: Multiple infotype records of the same type (e.g. other bank) may exist for an employee at the same time. "New <infotype/subtype>" button will always be available on the overview screen of the concerned scenario. E.g., suitable in Other bank. -
ORA-01654 error message when inserting multiple records
Hello all,
I have a Test table with attributes TEST_ID, TEST_NAME, TEST_DATE, STATUS, and want to insert multiple records into this table based on user input form. If user select a value from the drop down list, and the number of records to insert into the Test table, the application should insert that many into the Test table with the same TEST_DATE, STATUS, but TEST_NAME should be the drop down list value + i (1....the number of inserted records). I manually created the form, and wrote a sql for the process.
For example if the user select MUSIC, 3 then data should look like this
TEST_ID TEST_NAME TEST_DATE STATUS
1 MUSIC1 04/06/2010 Y
2 MUSIC2 04/06/2010 Y
3 MUSIC3 04/06/2010 Y
I got the error ORA-01654: unable to extend index TEST_TOOL_ID.TEST_PK by 128 in table space FLOW_13120862905990037739.
The process query
DECLARE IDTEST NUMBER := 1;
BEGIN
WHILE (IDTEST < :P1_COUNT + 1) LOOP
INSERT INTO TEST ( TEST_NAME, TEST_DATE, STATUS )
VALUES ((:P1_TEST_NAME || ' ' ||IDTEST), SYSDATE, 'Y');
END LOOP;
END;
Here is the link to this application
http://apex.oracle.com/pls/apex/f?p=4000:1:3173416575551580::NO:RP:FB_FLOW_ID,F4000_P1_FLOW:32828,32828
Any help would be appreciated.
Thanks,
KarolineThis is the output i get when i change the getMessage with printStackTrace.
String getMessage() replaced with printStackTrace:
G:\studies\Chapter11\MakeDB.java:33: 'void' type not allowed here
System.out.println("Could not drop primary key on UserStocks table: "
^
G:\studies\Chapter11\MakeDB.java:43: 'void' type not allowed here
System.out.println("Could not drop UserStocks table: "
^
G:\studies\Chapter11\MakeDB.java:54: 'void' type not allowed here
System.out.println("Could not drop Users table: "
^
G:\studies\Chapter11\MakeDB.java:64: 'void' type not allowed here
System.out.println("Could not drop Stocks table: "
^
G:\studies\Chapter11\MakeDB.java:83: 'void' type not allowed here
System.out.println("Exception creating Stocks table: "
^
G:\studies\Chapter11\MakeDB.java:102: 'void' type not allowed here
System.out.println("Exception creating Users table: "
^
G:\studies\Chapter11\MakeDB.java:119: 'void' type not allowed here
System.out.println("Exception creating UserStocks table: "
^
G:\studies\Chapter11\MakeDB.java:133: 'void' type not allowed here
System.out.println("Exception creating UserStocks index: "
^
G:\studies\Chapter11\MakeDB.java:159: 'void' type not allowed here
System.out.println("Exception inserting user: "
^
9 errors
Tool completed with exit code 1
Maybe you are looking for
-
Bind vars and LOVs on same JSP -incompatible?
I have managed to get a project working using bind variables, and another project working that has LOV. (Both using ADF,struts,JSP) However, when I try and use bind variables for one attribute and an LOV for a different attribute on the same JSP I ge
-
NOKIA 5530 XPRESS MUSIC :WIFI "NO GATEWAY reply"
I have brought nokia 5530 xpress music ....I want to use wifi but the problem is after getting connected to the wifi server..when I press "start web browsing " then the reply comes no gateway reply... These are my wlan wizard setting after connection
-
I am trying to restore my ipad2 but i have the error message "The IPAD could not be rerstored. The device cannot be found" Can anyone help me?
-
APEX 3.1.2 upgrade Question IBM AIX
Hi All, Currently we have APEX Application Express 3.0.0.00.20 on IBM/AIX RISC System/6000: Version 10.2.0.4.0 . Is it ok to install (fresh installation) APEX ver 3.1.2 on the same database? Is there any place where I can verify oracle supports for I
-
Map crashes when entering a search term
Map repeatedly crashed when I kept typing in "T" - before I could put the whole search term in "Target". Any ideas. i thought it related to an address book entry - but not so.