|
0 registered (),
5
Guests and
5
Spiders online. |
|
Key:
Admin,
Global Mod,
Mod
|
|
|
#3311 - 14/07/08 10:49 AM
Creating hr jobs ORA-20001: HR_289477_JOB_GROUP_ID
   
|
hanger-on
Registered: 14/05/08
Posts: 74
Loc: UK
|
Hi I am trying to load jobs from my temp/staging table in oracle to oracle hrms: Code for my jobs api call package is here: http://pastebin.com/m704097f6I setup jobs flexfield as: 2 segments job name job desc allow dynmic insert is set to on, etc.. then i ran the above api to load jobs information into oracle but i get strange error: ERROR at line 1: ORA-20001: HR_289477_JOB_GROUP_ID ORA-06512: at "APPS.HR_JOB_API", line 878 ORA-06512: at "APPS.XXcompany_PKG_JOBS", line 58 ORA-06512: at line 1 I am confused, i even set job_group_id manually in the api call which in my code above as 21, which it is. but Still gave me the same error. Thanks in advance Tovia Singer
|
|
Top
|
|
|
|
#3312 - 14/07/08 11:48 AM
Re: Creating hr jobs ORA-20001: HR_289477_JOB_GROUP_ID
[Re: tovia123]
|
sitting tennant
Registered: 23/05/08
Posts: 344
Loc: UK
|
Check whether you are populating the concat_segments.
|
|
Top
|
|
|
|
#3313 - 14/07/08 12:20 PM
Re: Creating hr jobs ORA-20001: HR_289477_JOB_GROU
[Re: SBi]
|
Guru
 
Registered: 11/03/05
Posts: 1080
Loc: Bath
|
Hello Tovia
Can I ask, how are you executing this procedure?
If you're running it as a standalone piece of code in a SQL or TOAD session, then I can see why it might not be delivering what you expect. I've looked at the package procedure PER_JOB_BUS.chk_job_group_id, and the thing that becomes immediately apparent is that it should work nicely provided you've supplied an appropriate value for business group id.
However, looking at your driving code that calls the api, you appear to be setting the business group by making a call to FND_PROFILE.value('PER_BUSINESS_GROUP_ID')
By way of a simple check, can you try setting the business group to an appropriate value, to see if you get past that problem? Also, whilst you are about it, can I please make another couple of suggestions:
1. If you're using sysdate as some kind of reference date, it's a very good idea to TRUNC it, in order to remove the time component. e.g. v_date_from DATE:=TRUNC(SYSDATE);
2. You will note that the parameter p_job_definition_id is defined as IN OUT - now the first time you call the api, the value you supply is NULL (as you haven't explicitly set the variable up as any particular value). On successful completion of the API, it will supply the value of the job_definition_id back to the calling procedure via that same parameter. However, the next call for the next job will end up passing back in that same value returned from the previous call. That will cause problems because the job definition id you 'gave' it will not match the values for the segments. To get round this, you need to explicitly set the variable v_job_definition_id to NULL just before calling the API.
Hope this helps
Edited by CT (14/07/08 12:20 PM)
_________________________
L&K CT
Remember: A dog is for life, not just for Christmas... unless you're in Korea
|
|
Top
|
|
|
|
#3316 - 14/07/08 01:46 PM
Re: Creating hr jobs ORA-20001: HR_289477_JOB_GROU
[Re: CT]
|
hanger-on
Registered: 14/05/08
Posts: 74
Loc: UK
|
Hi CT Thanks for the reply, your a genius, i set the business group id manually, and alsi did trunc on sysdate, and set: v_job_definition_id NUMBER:=NULL; updated code: http://pastebin.com/d7ce018bbWhats happend now is its said procedure succesfully completed, Howevere when i checked: per_jobs only old jobs where ion there not teh ones i tried to load using the api. And i also checke teh application: hrms uk super user workstructures > job > Description So i then ran the proceudre again and it said: ERROR at line 1: ORA-20001: The job you have entered already exists in this Business Group. Please enter a unique na ORA-06512: at "APPS.HR_JOB_API", line 878 ORA-06512: at "APPS.XXH3G_PKG_JOBS", line 46 ORA-06512: at line 1 but thats not true, the only thing i can think of is: Application Developer > Application: Lookups > Common COMPANY_HR_JOB_FUNCTION HERE I ENETERD ALL THE JOB FUNCTIONS MANUALLY. AND UNDER THE LOOKUP: COMPANY_HR_JOB_TITLE I ENTERED ALL THE JOB TITLES MANUALLY AS WELL. Now i was atempting to load job_codes, eg: Personal Assistant.Administration Personal Assistant.Human Resources Planner.Engineering (Networks) Planner.Engineering (Operations) Planner.Engineering (Technology) Planner.Marketing However Personal Assistant only exists under COMPANY_HR_JOB_TITLE lookup, and Administration for the first job above exists only in the lookups: COMPANY_HR_JOB_FUNCTION, They dont exist as a combination in: per_Jobs name field. So does that mean i have to create all my jobs using the above two lookup values which are visible when i go to: workstructures > job > Description ? I have too many jobs: 436 jobs in total. Shall i remove the lookup value values? by the way job_code in my temp table where i loaded all my jobs stores the values as: Planner.Engineering (Operations) Planner.Engineering (Technology) Thanks in advance Tovia Singer
|
|
Top
|
|
|
|
#3319 - 14/07/08 02:18 PM
Re: Creating hr jobs ORA-20001: HR_289477_JOB_GROU
[Re: CT]
|
hanger-on
Registered: 14/05/08
Posts: 74
Loc: UK
|
Hi CT
Also when i try to find the job.desc in: workstrrtures > job > description
I get the error: app-fnd-00906: You can only query existing flexfield combinations. You entered query criteria...
Does that mean my api didnt create/ load the job?
job menaing the combination of the two segments as i epxlained eralier
Thanks in advance
Tovia Singer
|
|
Top
|
|
|
|
#3320 - 14/07/08 02:22 PM
Re: Creating hr jobs ORA-20001: HR_289477_JOB_GROU
[Re: CT]
|
hanger-on
Registered: 14/05/08
Posts: 74
Loc: UK
|
Hi CT
Interesting: The first job(first record) in my company_jobs table (temp table) returned when i ran: SELECT * FROM PER_JOBS WHERE creation_date > trunc(sysdate);
which is:
Manager.Engineering (Operations)
the rets arent there
thanks in advance
Tovia
|
|
Top
|
|
|
|
#3324 - 14/07/08 03:11 PM
Re: Creating hr jobs ORA-20001: HR_289477_JOB_GROU
[Re: CT]
|
hanger-on
Registered: 14/05/08
Posts: 74
Loc: UK
|
Hi CT Thanks so much, i am still getting error: ERROR at line 1: ORA-20001: The job you have entered already exists in this Business Group. Please enter a unique name for your job. ORA-06512: at "APPS.HR_JOB_API", line 878 ORA-06512: at "APPS.XXH3G_PKG_JOBS", line 46 ORA-06512: at line 1 i set v_job_id NUMBER:=NULL; updated the code here: http://pastebin.com/d3b255130thanks in advance Tovia
|
|
Top
|
|
|
|
#3325 - 14/07/08 03:18 PM
Re: Creating hr jobs ORA-20001: HR_289477_JOB_GROU
[Re: CT]
|
hanger-on
Registered: 14/05/08
Posts: 74
Loc: UK
|
HI CT Thanks, I ste those 2 variables to null after teh start of teh for loop, updated code: http://pastebin.com/d62c748cdHowevere really bizare i now get: ERROR at line 1: ORA-20001: FLEX-ID DOES NOT EXIST: ORA-06512: at "APPS.HR_JOB_API", line 878 ORA-06512: at "APPS.XXCOMPANY_PKG_JOBS", line 47 ORA-06512: at line 1 KIND REGARDS Tovia
|
|
Top
|
|
|
|
#3332 - 15/07/08 08:19 AM
Re: Creating hr jobs ORA-20001: HR_289477_JOB_GROU
[Re: CT]
|
hanger-on
Registered: 14/05/08
Posts: 74
Loc: UK
|
Hi CT Thanks so much, i wish my boyfriend was as good as you, your amazing. I have updated the code again and added an exception, however i added it after the end loop statement: http://pastebin.com/d2b16fdea8 records loaded and i got the following in sql*plus: SQL> execute XXCOMPANY_PKG_JOBS. XXCOMPANY_LOAD_JOBS PL/SQL procedure successfully completed. SQL> select name 2 from per_jobs; NAME -------------------------------------------------------------------------------- Assistant.Finance Department Head.Human Resources (Operations) Designer.Information Technology Designer.Marketing Director.Engineering (Radio) Director.Technology Manager.Commercial Project Manager.Information Technology 8 rows selected. SQL> commit; Commit complete. SQL> ----------------------------------------------------------------- It didnt load the rest of the records, Which total 420+. Why didnt it load all records did i close loop to early i dont understand. Thanks in advance Tovia S
|
|
Top
|
|
|
|
#3337 - 15/07/08 10:22 AM
Re: Creating hr jobs ORA-20001: HR_289477_JOB_GROU
[Re: tovia123]
|
Guru
 
Registered: 11/03/05
Posts: 1080
Loc: Bath
|
OK, here's how I would have done it (note the following has been totally untested so you can reasonably expect some syntax errors when trying to compile it):
CREATE OR REPLACE PACKAGE BODY XXcompany_PKG_JOBS IS -- PROCEDURE XXcompany_LOAD_JOBS IS -- v_validate boolean:=false; v_date_from DATE:=TRUNC(SYSDATE); v_comments VARCHAR2(20); v_approval_authority NUMBER:=NULL; v_benchmark_job_flag VARCHAR2(20):='N'; v_benchmark_job_id NUMBER:=NULL; v_emp_rights_flag VARCHAR2(20):='N'; v_job_group_id NUMBER:=21; v_segment3 VARCHAR2(20):=NULL; v_segment4 VARCHAR2(20):=NULL; v_concat_segments VARCHAR2(20):=NULL; v_language_code VARCHAR2(20):=hr_api.userenv_lang; v_job_id NUMBER; v_object_version_number NUMBER; v_job_definition_id NUMBER; v_name VARCHAR2(150); --Inssert Value set Output Parameter v_storage_value VARCHAR2(60); v_business_group_id number:=81; -- CURSOR cur_job_emp IS -- SELECT job_code, SUBSTR(job_code,1,(INSTR(job_code,'.')) -1 ) job_name, SUBSTR(job_code,(instr(job_code,'.'))+1) job_desc FROM company.company_JOBS; -- -- v_emp_jobs cur_job_emp%ROWTYPE; -- not needed in a FOR ... IN <cursor> LOOP consruct -- BEGIN -- -- CET Only need to do this once, so removed it from within the loop -- SELECT job_group_id INTO v_job_group_id FROM PER_JOB_GROUPS WHERE master_flag='Y'; -- FOR v_emp_jobs IN cur_job_emp LOOP -- BEGIN -- SELECT job_id INTO v_job_id FROM per_jobs WHERE name = v_emp_jobs.job_code; -- EXCEPTION WHEN NO_DATA_FOUND THEN v_job_id := null; FND_FILE.PUT_LINE(FND_FILE.LOG,'There is no job id Exist For this job code'||v_emp_jobs.job_code); WHEN OTHERS THEN FND_FILE.PUT_LINE(FND_FILE.LOG,'Error While selecting from PER_JOBS: '||SQLCODE||SQLERRM); -- END; -- -- IF v_job_id IS NULL THEN BEGIN -- v_job_definition_id:=null; -- hr_job_api.create_job (p_validate => v_validate ,p_business_group_id => v_business_group_id ,p_date_from => v_date_from ,p_job_group_id => v_job_group_id ,p_segment1 => v_emp_jobs.job_name ,p_segment2 => v_emp_jobs.job_desc ,p_language_code => v_language_code ,p_job_id => v_job_id ,p_object_version_number => v_object_version_number ,p_job_definition_id => v_job_definition_id ,p_name => v_name ); EXCEPTION -- trap any individual problems with the api call and report them but allow to return to the loop WHEN OTHERS THEN FND_FILE.PUT_LINE(FND_FILE.LOG,'Error in CREATE_JOB API on job '||v_emp_jobs.job_code||' ': '||SQLCODE||SQLERRM); END; -- ELSE DBMS_OUTPUT.PUT_LINE('Job '||v_emp_jobs.job_code||' already exists'); END IF; -- DBMS_OUTPUT.PUT_LINE('Ex:'||v_job_id||','||v_object_version_number); -- END LOOP; COMMIT; -- EXCEPTION WHEN OTHERS THEN DBMS_OUTPUT.PUT_LINE('Error:'||SQLERRM); -- END XXcompany_LOAD_JOBS; END XXcompany_PKG_JOBS; /
_________________________
L&K CT
Remember: A dog is for life, not just for Christmas... unless you're in Korea
|
|
Top
|
|
|
|
#3339 - 15/07/08 12:13 PM
all working! thanks:
[Re: CT]
|
hanger-on
Registered: 14/05/08
Posts: 74
Loc: UK
|
Hi CT Thanks a million!! Final code for loading jobs via api's thanks and all credit to CT: http://pastebin.com/f460e45ccSorry i took a while as i was trying to understand the code you wrote and why i only had 8 records loading, i had to debug a little, but just made the change in my code, and it worked, However temp table has 329 rows, and per_jobs has 295, so 34 rows (jobs) wherent created. I forgot to create job_function, and job_title for those 34 jobs. under application developer > application Lookups > common Which i suppose is done manually i will try to find an api for those, however i have grades,positions and employees to load via apis, so i must carry on with those as my line manager is on my back for updating receivables cutsomer address details via a TCA api, which i've done before anyway, but completely new to hrms apis. So i will be using the same site again where i got my initial api code from, unless you can suggest otherwise: http://irep11i10.oracle.com/OA_HTML/OA.jsp?page=%2Foracle%2Fapps%2Ffnd%2Frep%2Fwebui%2FInterfacesBrowsePG&_ti=350577385&oapc=3&oas=bXS7OQzJjhPqk-gcENqmSg.. Thanks a million CT! Tovia Singer
|
|
Top
|
|
|
|
#3340 - 15/07/08 12:53 PM
Re: all working! thanks:
[Re: tovia123]
|
Guru
 
Registered: 11/03/05
Posts: 1080
Loc: Bath
|
That link looks very interesting, and even without having looked at it in great detail would seem to me to be an ideal starting point for how each api works. Thanks for sharing by the way. Loading grades is pretty similar to loading jobs, so shouldn't be any unpleasant experiences there. Positions is slightly more complicated, as in HRMS a position has to belong to a specific organization and a specific job. So you'll need to come up with the appropriate foreign key ids from the HR_ALL_ORGANIZATION_UNITS and PER_JOBS tables as well as all the other segment-related data. Loading employees is marginally more complicated than that, but only because there are a lot more pieces of information needed to create an employee record. Essentially the same philosophy will apply: Query in the data For each row, execute a pl/sql block to get the values and call the api, and trap the error if it occurs Next row... Commit etc From looking at my R12 instance, we still don't have an api for managing lookup values. There are FND_ type packages there, but the way they're written suggests to me that they are not in the public domain in the way that APIs are. ie you could use them but their use by the likes of thee and me is not supported. This of course is not necessarily a problem if it's for a one-off exercise such as a migration, but for day-to-day interfacing etc the issue of supportability (by Oracle) is very pertinent. A possible alternative for loading data is of course the DataLoader tool, which used to be available from Comstar but I believe is now owned/maintained by Edenbrook. If you've never heard of it, it's basically a keystroke emulator which spits data and screen navigation keystroke information at an application instance from what looks very like a spreadsheet interface. A much preferable way of course (and by far my favourite) is to report your findings to the functional team and invite them to earn some of their exorbitant fee keying the missing lookups in manually! Good luck!
_________________________
L&K CT
Remember: A dog is for life, not just for Christmas... unless you're in Korea
|
|
Top
|
|
|
|
|
756 Members
48 Forums
1517 Topics
7287 Posts
Max Online: 63 @ 24/11/10 07:21 AM
|
|
|
|
|
|
1
|
2
|
3
|
4
|
|
5
|
6
|
7
|
8
|
9
|
10
|
11
|
|
12
|
13
|
14
|
15
|
16
|
17
|
18
|
|
19
|
20
|
21
|
22
|
23
|
24
|
25
|
|
26
|
27
|
28
|
29
|
|
|
|
|
|