经过测试该API可以取消订单发运行和订单行,取消订单未测试

只测试了取消标准采购订单,BPA未测试

例子说明:

标准PO采购订单有多行采购订单,有一行数量为3000,它有三行发运行都是1000的数量。

第一次取消一行发运行:前台检查发现,发运行变成两行,数量各1000,订单行变成2000

第二次取消一行发运行:前台检查发现,发运行变成一行,数量为1000,订单行变成1000

第三次去爱下一行发运:前台检查发现,发运行消失需要用户填写发运行,订单行数量变成0,需要用户填写需求时间等必要信息。

经过该测试,说明API会取消发运行,并同时扣减对应订单号数量等相关信息,因此如果所有发运行都取消,则建议使用api将订单行也进行取消,具体代码如下:

注意:需要初始化ou、职责等环境信息。

代码建立了临时表存储需要取消的发运行信息及执行状态

-- Create table
create table PO_LINE_LOC_CANCEL_T
(
  line_id     NUMBER,
  line_loc_id NUMBER,
  status      VARCHAR2(10),
  message     VARCHAR2(2000)
);

DECLARE
  x_Return_Status VARCHAR2(10);
  v_Header_Id     NUMBER;
  v_Line_Id       NUMBER;
  v_Line_Loc_Id   NUMBER;

Ln_Line_Loc_Id NUMBER := 13689870;
  Lv_No_Flag     VARCHAR2(1) := 'N';
  Lv_Message     VARCHAR2(2000);
  Lv_Status      VARCHAR2(20);

CURSOR Cur_Loop IS
    SELECT *
      FROM It_Erp_r.Po_Line_Loc_Cancel_t t
     ORDER BY t.Line_Id;
BEGIN
  --Mo_Global.Init('PO');
  Mo_Global.Init('SQLAP');
  Mo_Global.Set_Policy_Context('S', 8762);
  Fnd_Global.Apps_Initialize(User_Id => 16786, Resp_Id => 58560, Resp_Appl_Id => 20003);

v_Line_Loc_Id := NULL;

FOR i IN Cur_Loop LOOP
    Lv_No_Flag := 'N';
    Lv_Status  := Fnd_Api.g_Ret_Sts_Success;
    Lv_Message := NULL;
  
    BEGIN
      SELECT Plla.Po_Header_Id
            ,Plla.Po_Line_Id
            ,Decode(Sign(Plla.Quantity - Pla.Quantity), 0, NULL, Plla.Line_Location_Id)
        INTO v_Header_Id
            ,v_Line_Id
            ,v_Line_Loc_Id
        FROM Po_Line_Locations_All Plla
            ,Po_Lines_All          Pla
       WHERE 1 = 1
         AND Plla.Po_Line_Id = Pla.Po_Line_Id
         AND Plla.Line_Location_Id = i.Line_Loc_Id;
      Dbms_Output.Put_Line(v_Line_Loc_Id);
    EXCEPTION
      WHEN OTHERS THEN
        Lv_No_Flag := 'Y';
        Lv_Status  := Fnd_Api.g_Ret_Sts_Error;
        Lv_Message := '查询数据异常:' || SQLERRM;
        Dbms_Output.Put_Line(Lv_Message);
      
    END;
    IF Lv_No_Flag = 'N' THEN
      Po_Document_Control_Pub.Control_Document(p_Api_Version      => 1.0
                                              , --版本信息,目前为1.0
                                               p_Init_Msg_List    => 'T'
                                              ,p_Commit           => 'T'
                                              ,x_Return_Status    => x_Return_Status
                                              , -- 返回接口运行结果,S为成功,E为错误,U为未知错误
                                               p_Doc_Type         => 'PO'
                                              ,p_Doc_Subtype      => 'STANDARD'
                                              , -- 取消标准PO
                                               p_Doc_Id           => v_Header_Id
                                              ,p_Doc_Num          => NULL
                                              , -- Po_header_id和单据编码任选一个参数即可
                                               p_Release_Id       => NULL
                                              ,p_Release_Num      => NULL
                                              ,p_Doc_Line_Id      => v_Line_Id
                                              ,p_Doc_Line_Num     => NULL
                                              ,p_Doc_Line_Loc_Id  => v_Line_Loc_Id
                                              ,p_Doc_Shipment_Num => NULL
                                              ,p_Action           => 'CANCEL'
                                              , --固定值
                                               p_Action_Date      => SYSDATE
                                              ,p_Cancel_Reason    => NULL
                                              , --Cancel原因
                                               p_Cancel_Reqs_Flag => NULL
                                              ,p_Print_Flag       => NULL
                                              ,p_Note_To_Vendor   => NULL
                                              ,p_Use_Gldate       => 'N');
    
      COMMIT;
      IF x_Return_Status != 'S' THEN
        Lv_Status := Fnd_Api.g_Ret_Sts_Error;
        FOR i IN 1 .. Fnd_Msg_Pub.Count_Msg LOOP
          Lv_Message := Substr(Lv_Message || Fnd_Msg_Pub.Get(p_Msg_Index => i, p_Encoded => 'F')
                              ,1
                              ,2000);
          Dbms_Output.Put_Line(Fnd_Msg_Pub.Get(p_Msg_Index => i, p_Encoded => 'F'));
        
        END LOOP;
      END IF;
    
    END IF;
    UPDATE It_Erp_r.Po_Line_Loc_Cancel_t t
       SET t.Status = Lv_Status
          ,t.Message = Lv_Message
     WHERE t.Line_Id = i.Line_Id;
  
  END LOOP;

END;
/

EBS 取消PO订单、订单行、订单发运行相关推荐

  1. Oracle EBS 取消订单行时提示 Error:WSH_NO_DATA_FOUND

    Oracle EBS 取消订单行时提示  Error:WSH_NO_DATA_FOUND 取消订单行时提示 Error:WSH_NO_DATA_FOUND 解决办法 将shipping_interfa ...

  2. Oracle EBS Interface/API(19)-PO修改行或发运行的单价、数量、需求日期和承诺日期等等

    调用API修改标准订单或一揽子发放行或发运行的单价.数量.需求日期和承诺日期等等,实例参考如下: 一.修改发运行API实例: DECLARELt_Errors Po_Api_Errors_Rec_Ty ...

  3. 关于采购订单、销售订单、工作单行上的库存详细信息说明

    关于采购订单.销售订单.工作单行上的库存详细信息说明 关于采购订单.销售订单.工作单行上的库存详细信息说明 库存详细信息 录入时配置 处理后查看 处理后配置 关于采购订单.销售订单.工作单行上的库存详 ...

  4. SAP中带用内部订单控制的成本中心发料的成本对象确定

    在处理成本中心发料操作中有多个事务类型,其中常用的移动类型201和移动类型261.而两者的区别是201是针对成本中心发料,261是带有内部订单控制的成本中心发料:那么在处理261发料时,内部订单中定义 ...

  5. Oracle EBS PO调用API修改一揽子发放行需求日期或数量引发单价变更

    背景:         最近,客户的用户反映批量修改或拆分一揽子发放行的需求日期或承诺日期或数量时,自动修改该发放行的单价为对应PBA行的单价. 解决方法:         通过实际数据分析.参考官方 ...

  6. Vue项目中常见问题(55)提交订单、获取订单号、展示支付信息

    目录 gitee仓库地址:https://gitee.com/CMD-UROOT/sph-project/commits/master 业务需求:完成提交订单的业务 1.支付静态组件先完成 Pay静态 ...

  7. SAP母子订单(汇总订单)详解测试_SAP刘梦_新浪博客

    汇总订单:一个在几个生产层次上链接计划订单或生产订单的多层结构.仅为结构中的最上面一个订单执行库存移动.每个订单有一个单独的订单号. 汇总订单(母子订单)优点 1.生产工艺的集成视图 汇总订单允许你在 ...

  8. 北京络捷斯特第三方物流信息系统技术解析(四) 订单录入-运输订单

    北京络捷斯特第三方物流信息系统技术解析(四) 订单录入-运输订单 2.1.3运输订单 运输订单有两个标签要编写,包括有订单信息和订单货品 订单信息界面截图: 2.1(图1) 订单货品信息截图: 2.1 ...

  9. Oracle EBS中PO的类型详细介绍【转】

    Oracle EBS中PO的类型详细介绍[转] Oracle EBS中PO的类型详细介绍 Oracle EBS中的采购订单主要有以下四种类型: 以下分类进行介绍. 1.Blanket Purchase ...

最新文章

  1. Python零基础学习代码实践 —— 提取字符串里面的单词数
  2. Spring Boot(04)——创建自己的自动配置
  3. boost::mp11::mp_iota相关用法的测试程序
  4. 20162318 2018-2019-2《网络对抗技术》Exp1 PC平台逆向破解
  5. github 上微信判断是否被删除的源码 以及使用解惑
  6. c# 整数除法取整_Java 如何取整整数除法的结果?
  7. SQL Server IN语句使用举例
  8. JMeter中使用“用户自定义变量”实现参数化
  9. 模块化解耦框架RxFluxArchitecture3-订阅管理绑定生命周期
  10. python将字符串写入txt文件_python将字符串以utf-8格式保存在txt文件中的方法
  11. 数字电子技术基础-2-逻辑函数的最小项与最大项
  12. 木马病毒 与后门技术
  13. 笔记本计算机涂硅脂,笔记本cpu怎么更换散热硅脂?笔记本电脑cpu涂硅脂教程
  14. 郑码输入法 字根记忆表 一般根变通处理
  15. blastn 输出结果每列啥意思_如何看懂NCBI BLAST输出结果
  16. 【规范】万字集大成的HDLFPGA学习和规范
  17. 使用Telerik的登陆模板实现DoubanFm的登陆(WP7)
  18. 安迪·格鲁夫: 一个PC时代的大写符号
  19. 国庆头像html代码
  20. 人工智能与智能的异同

热门文章

  1. MyBatisCodeHelper-Pro2.8.2
  2. 网页保存mhtml格式
  3. c语言编程软件平板_想在ipad上进行C语言程序编写,请问有没有编译的APP
  4. 微信公众号网页授权域名证书验证位置
  5. 微信扫码点餐小程序怎么做,一步步教你
  6. windows 调试若干知识
  7. 云计算应用现状及其发展趋势和特点
  8. 剑指Offer 27—二叉树的镜像
  9. 电力施工作业现场安全综合管控平台项目解决方案
  10. EKL-日志收集系统安装