This content has been marked as final. Show 17 replies
You're confusing two methods with each other:
+Update: This option is available if the component interface does not have create keys. Use this mode if you are adding new children to an existing parent.+
UpdateData: Use this option to update specific non-key values that already exist. The system uses the keys to locate the row, and when a match is found, the row is updated with new data. If a key match is not found by the system, it displays an error message indicating which collection was missing a key match.
When using the UpdateData action, you must provide all keys for the collection for the system to modify the data.
The <service_name>UD is for updating values of keys that already exists. <servicename>UP is for adding a new child to an existing parent (which is exactly what you're trying to achieve). You can test it yourself with SoapUI. You're trying to add another expense for the same employee, so you are trying to add a new child to an existing parent. That is the reason why you can only call the create method once with the same keys; once the row is created you cannot call that method again since it results in a duplicate error. You should try doing the same with the <servicename>_UP and you'll see that a new expense will be added to an already existing row.
i tried your idea of using the update method..but that doesnt have the key field empl id..if that is not there then how will it add a new child record for that particular empl ID? if i am wrong please correct me .
FOR YOUR INFORMATION I AM ATTACHIN FIRST FEW LINES OF THE CI OF BOTH SERVICES
<FEW LINES REMOVED FROM TOP>
if u see the both, the Emp id is missing...which is the key field reqd for creatin a new expense entry.
I've checked the component in my FIN database and created a CI with a web service as well. They key structure for the EX_SHEET_HDR record (which is the parent record in the Component interface) has SHEET_ID as key however. EMPLID is not a key value (only an alternate search key), but it is a required field. The component has a separate view which is used as the 'Add search record', where EMPLID is a key value. This one only applies to the create method, hence the reason why you're not getting EMPLID as key value in any of the other methods. If you want to add child records you need to supply the correct SHEET_ID.
Again the webservice etc. are fine; it's the logic behind the component interface which is different from what you're trying to achieve. The key structure simply doesn't allow you to do what you're trying to do. When adding new expense entries you need to have a SHEET_ID number. If you want this to be based on the employee number instead you'd have to modify the key structure of the EX_SHEET_HDR record. That's not something I would recommend doing.