使用jtf_rs_resource_pub.create_resource API导入员工为销售人员时遇用户ID不存在错误
jtf_rs_resource_pub.create_resource API时的"UserID not exists"错误 你调用jtf_rs_resource_pub.create_resource API将员工导入为销售人员时触发"UserID not exists"错误,调用代码如下:
jtf_rs_resource_pub.create_resource(p_api_version => 1.0, p_category => 'EMPLOYEE', p_start_date_active => sysdate, p_source_id => ln_person_id (per_all_people_f.person_id) , p_user_id => ln_user_id, p_user_name => lc_user_name, p_resource_name => 'XXX', p_source_number => lc_user_name, p_source_name => 'XXXX' , p_source_first_name => 'XXXXX', p_source_last_name => 'XXXXXXX', p_source_business_grp_id => fnd_profile.value_specific('XXXX'), x_return_status => lc_return_status , x_msg_count => ln_msg_count, x_msg_data => lc_msg_data, x_resource_id => ln_resource_id, x_resource_number => lc_resource_number); COMMIT;
以下是针对性的排查和解决步骤:
验证
ln_user_id的有效性
确认传入的ln_user_id在fnd_user表中存在且状态激活,执行查询:SELECT user_id, user_name, enabled_flag FROM fnd_user WHERE user_id = :ln_user_id;需确保返回记录的
enabled_flag为'Y',且无过期锁定状态。确保
p_user_id与p_user_name匹配fnd_user表中user_id和user_name是一一对应的,必须保证传入的ln_user_id和lc_user_name属于同一用户,避免参数不匹配导致API校验失败。可通过以下查询验证:SELECT user_id FROM fnd_user WHERE user_name = :lc_user_name;对比返回的
user_id是否与ln_user_id一致。检查业务组一致性
确认用户关联的员工业务组与p_source_business_grp_id指定的业务组一致,执行查询:SELECT fu.user_id, papf.business_group_id FROM fnd_user fu JOIN per_all_people_f papf ON fu.person_id = papf.person_id AND SYSDATE BETWEEN papf.effective_start_date AND papf.effective_end_date WHERE fu.user_id = :ln_user_id;确保查询结果的
business_group_id与fnd_profile.value_specific('XXXX')的返回值完全相同。优化参数传递逻辑
当p_category='EMPLOYEE'时,API可通过p_source_id(员工person_id)自动关联用户,若无需显式指定用户,可移除p_user_id和p_user_name参数,仅保留员工相关参数尝试创建资源。校验执行权限
确保执行API的数据库用户或EBS职责拥有JTF_RESOURCE_MANAGEMENT相关权限,具备创建销售人员资源的操作权限。
内容的提问来源于stack exchange,提问作者Eswar Desam

