Oracle EBS PO 采购订单接口 创建后 点击发运后 未修改任何数据 需要保存

前端之家收集整理的这篇文章主要介绍了Oracle EBS PO 采购订单接口 创建后 点击发运后 未修改任何数据 需要保存前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

Oracle EBS PO 采购订单接口 创建后 点击发运后 未修改任何数据 需要保存

现象:

Oracle EBS PO 采购订单接口创建的订单 点击发运后 未修改任何数据 需要保存

测试环境:

Oracle EBS R12.1.3

解决方法

oracle 官方BUG 不能进行修复 只能进行数据修复

oracle 官方提供两个数据修复脚本 matelink: (Doc ID 943681.1)

先执行下面脚本:

  1. DECLARE
  2. CURSOR non_releases_data IS
  3. SELECT pla.item_id,pos.ship_to_organization_id,pha.vendor_id,pha.vendor_site_id,pos.line_location_id
  4. FROM po_line_locations_all pos,po_lines_all pla,po_headers_all pha
  5. WHERE pos.po_line_id=pla.po_line_id
  6. AND pos.po_header_id=pha.po_header_id
  7. AND pos.po_release_id is NULL
  8. AND pos.country_of_origin_code IS NULL
  9. AND pos.shipment_type IN ('STANDARD','PLANNED')
  10. AND pha.DOCUMENT_CREATION_METHOD='PDOI';
  11.  
  12. x_item_id number;
  13. x_ship_to_org_id number;
  14. x_vendor_id number;
  15. x_vendor_site_id number;
  16. x_shipment_type VARCHAR2(25);
  17. x_country_of_origin_code varchar2(2);
  18. x_line_location_id NUMBER;
  19. rowsupdated NUMBER;
  20.  
  21. BEGIN
  22. DELETE po_session_gt;
  23. OPEN non_releases_data;
  24. rowsupdated:=0;
  25. LOOP
  26. FETCH non_releases_data INTO
  27. x_item_id,x_ship_to_org_id,x_vendor_id,x_vendor_site_id,x_line_location_id;
  28. EXIT WHEN non_releases_data%NOTFOUND;
  29. rowsupdated:=rowsupdated+1;
  30.  
  31. po_coo_s.get_default_country_of_origin
  32. (x_item_id,x_country_of_origin_code);
  33.  
  34.  
  35. IF (x_country_of_origin_code IS NOT NULL) the
  36. INSERT INTO po_session_gt(num1,char1,num2) values
  37. (x_line_location_id,x_country_of_origin_code,7516875);
  38. END IF;
  39.  
  40. END LOOP;
  41. Close non_releases_data;
  42.  
  43. EXCEPTION
  44. WHEN OTHERS THEN
  45. ROLLBACK;
  46. dbms_output.put_line('An exception occurred.');
  47. dbms_output.put_line('Please contact Oracle support.');
  48. END;

查询下面脚本:

  1. SELECT Count(*) FROM po_session_gt WHERE num2=7516875;

再执行下面脚本:

  1. DECLARE
  2. CURSOR non_releases_data IS
  3. SELECT pla.item_id,pos.line_location_id FROM po_line_locations_all pos,po_headers_all pha WHERE pos.po_line_id=pla.po_line_id AND pos.po_header_id=pha.po_header_id AND pos.po_release_id is NULL AND pos.country_of_origin_code IS NULL AND pos.shipment_type IN ('STANDARD','PLANNED') AND pha.DOCUMENT_CREATION_METHOD='PDOI';
  4.  
  5. x_item_id number;
  6. x_ship_to_org_id number;
  7. x_vendor_id number;
  8. x_vendor_site_id number;
  9. x_shipment_type VARCHAR2(25);
  10. x_country_of_origin_code varchar2(2);
  11. x_line_location_id NUMBER;
  12. rowsupdated NUMBER;
  13.  
  14. BEGIN DELETE po_session_gt;
  15. OPEN non_releases_data;
  16. rowsupdated:=0;
  17. LOOP
  18. FETCH non_releases_data INTO
  19. x_item_id,x_line_location_id;
  20. EXIT WHEN non_releases_data%NOTFOUND;
  21. rowsupdated:=rowsupdated+1;
  22.  
  23. po_coo_s.get_default_country_of_origin
  24. (x_item_id,x_country_of_origin_code);
  25.  
  26. UPDATE po_line_locations_all SET country_of_origin_code= x_country_of_origin_code WHERE line_location_id=x_line_location_id;
  27.  
  28. END LOOP;
  29. Close non_releases_data;
  30.  
  31. EXCEPTION
  32. WHEN OTHERS THEN
  33. ROLLBACK;
  34. dbms_output.put_line('An exception occurred.');
  35. dbms_output.put_line('Please contact Oracle support.');
  36. END;

进行数据修复。

总结:

在做接口导入的时候 可以直接将这两个脚本写成两个存储过程 放在采购订单导入的包里面 订单创建成功后 调用第一个脚本的存储过程 然后查询 符合条件 在调用第二个脚本的存储过程修复数据。

猜你在找的Oracle相关文章