项目中,需要对一些采购订单做强制“交货已完成”,如果采购订单已批准,是不能用BAPI_PO_CHANGE更改状态的,只有先除去“批准”状态 ,再“交货已完成”,然后再置为批准状态,下面是函数代码,希望对用到的兄弟有帮助。

DATA:PO_NUMBER LIKE EKKO-EBELN.

DATA :T_POITEM  LIKE  BAPIMEPOITEM  OCCURS   0   WITH   HEADER   LINE .
DATA :T_POITEMX  LIKE  BAPIMEPOITEMX  OCCURS   0   WITH   HEADER   LINE .
DATA :T_RETURN  LIKE  BAPIRET2  OCCURS   0   WITH   HEADER   LINE .
DATA : LV_FRGKE  LIKE  EKKO-FRGKE,
      LV_FRGSX  LIKE  EKKO-FRGSX.

DATA : RETURN   TYPE   TABLE   OF  BAPIRETURN  WITH   HEADER   LINE .

REFRESH   OUTPUT .
CLEAR   OUTPUT .

SORT   INPUT   BY  EBELN.
LOOP   AT   INPUT .
      CLEAR  T_POITEM.
      REFRESH  T_POITEM.
      CLEAR  T_POITEMX.
      REFRESH  T_POITEMX.

MOVE -CORRESPONDING  INPUT   TO   OUTPUT .

CLEAR  LV_FRGKE.
      SELECT   SINGLE
            FRGKE
            FRGSX
             INTO  (LV_FRGKE,LV_FRGSX)
             FROM  EKKO
             WHERE  EBELN =  INPUT -EBELN.
*     如果采购订单被批准了,则先取消批准,才能修改
       IF  LV_FRGKE =  'R' .

CALL   FUNCTION   'BAPI_PO_RESET_RELEASE'
               EXPORTING
                PURCHASEORDER =  INPUT -EBELN
                PO_REL_CODE   = LV_FRGSX
                USE_EXCEPTIONS =  'X'
               TABLES
                 RETURN  =  RETURN .
          CLEAR   RETURN .
          READ   TABLE   RETURN   WITH   KEY   TYPE  =  'E' .
          IF  SY-SUBRC  EQ   0 .
             OUTPUT -FLAG =  'E' .
             OUTPUT - MESSAGE  =  RETURN - MESSAGE .
          ENDIF .
       ENDIF .

IF   OUTPUT -FLAG <>  'E' .
         PO_NUMBER =  INPUT -EBELN.

T_POITEM-PO_ITEM =  INPUT -EBELP.
         T_POITEM-NO_MORE_GR =  'X' .
          APPEND  T_POITEM.
          CLEAR  T_POITEM.

T_POITEMX-PO_ITEM =  INPUT -EBELP.
         T_POITEMX-PO_ITEMX =  'X' .
         T_POITEMX-NO_MORE_GR =  'X' .
          APPEND  T_POITEMX.
          CLEAR  T_POITEMX.

CALL   FUNCTION   'BAPI_PO_CHANGE'
             EXPORTING
              PURCHASEORDER = PO_NUMBER
             TABLES
               RETURN         = T_RETURN
              POITEM        = T_POITEM
              POITEMX       = T_POITEMX.
            READ   TABLE  T_RETURN  WITH   KEY   TYPE  =  'E' .
            IF  SY-SUBRC  EQ   0 .
              OUTPUT -FLAG =  'E' .
              OUTPUT - MESSAGE  = T_RETURN- MESSAGE .
              ROLLBACK   WORK .
            ELSE .
              OUTPUT -FLAG =  'S' .
              OUTPUT - MESSAGE  =  '交货已完成更改成功!' .
              CALL   FUNCTION   'BAPI_TRANSACTION_COMMIT'
                EXPORTING
                  WAIT  =  'X' .
            ENDIF .
       ENDIF .

*     如果采购订单被批准了,则先取消批准,修改交货已完成后,在重新设置上批准状态
       IF  LV_FRGKE =  'R'   AND   OUTPUT -FLAG <>  'E' .
          CALL   FUNCTION   'BAPI_PO_RELEASE'
               EXPORTING
                PURCHASEORDER =  INPUT -EBELN
                PO_REL_CODE   = LV_FRGSX
                USE_EXCEPTIONS =  'X'
               TABLES
                 RETURN  =  RETURN .
       ENDIF .

APPEND   OUTPUT .
       CLEAR   OUTPUT .
ENDLOOP .

abap对采购订单强制置为”交货已完成“状态(BAPI_PO_CHANGE、BAPI_PO_RELEASE、BAPI_PO_RESET_RELEASE)相关推荐

  1. SAP ABAP ME23N 采购订单打印输出

    本人诚心接ABAP远程开发任务,价格公道,有需要的联系我,欢迎个人,甲方爸爸,乙方私信联系. 完成的功能是ME23N 点击打印预览 客制化用户自己的打印模板, 首先需要先配置打印输出 路径:spro- ...

  2. 【ABAP】采购订单行项目 税码 自动默认

    [业务背景]唉,怎么说呢.采购订单的定价策略是个相对复杂一点的事情,但是,根据企业的业务实践,也可以做的相对简单一些. 我们这个案例呢,就是采购定价策略做的比较简单,但是有一点不便捷的地方,就是采购订 ...

  3. SAP ABAP 根据采购订单(PO)创建交货单(DN) BAPI_DELIVERYPROCESSING_EXEC - 创建内向交货单

    原文链接:https://blog.csdn.net/JKingyin/article/details/107133840 FORM CREATE_INBOUND_DELIVIRY.DATA: _RE ...

  4. SAP ABAP me21n 采购订单抬头字段增强 MM06E005

    SMOD MM06E005 CI_EKKODB添加增强字段: ZXM06TOP: data:gv_mode type char01 . 1.创建0101子屏幕 MODULE STATUS_0101 O ...

  5. SAP中采购订单交货己完成相关逻辑和控制原理分析

    在采购订单的行项目中,有一个"交货己完成"标志.看过一些资料,结合应际应用的经验,记下自己的理解: 交货己完成决定订单中的项目是否还有未清项,它可以由系统在达成交货完成条件后自动设 ...

  6. 未清采购订单关闭最全的方法

    1.如采购订单未产生过交货,ME22N,行项目删除或采购订单删除: 2. 如已产生过交货,ME22N ,采购订单项目-交货,勾选"交货已完成": 3. 如启用了采购订单审核,先ME ...

  7. 如何获取公司间采购订单或销售订单的交货状态

    在上SAP项目过程,上了SD模块的企业一般都要做一些跟公司间采购订单或销售订单的交货状态的报表,通过这些报表可以经客户的业务上提供很大的灵活性,至于如何的灵活,还是那句老话"谁用谁知道&qu ...

  8. SAP寄售采购订单退货

    在行业中处于强势地位的工厂往往会有供应商寄售的业务存在,某些时候还遇到供应商寄售的物料需要退货返回供应商处的需求,可以有几种做法 1.单纯使用一个移动类型减少K库存.可以使用562+K.502+K等等 ...

  9. 为什么采购订单管理非常重要?

    采购管理中一个重要的工作就是将采购需求转换成采购订单.采购订单让你对已经提供的产品或服务有个全面的了解.乍一看,这也许似乎不太重要,但是订单历史可以确定公司的绩效,暗示应做出哪些改变,进而优化当前的业 ...

最新文章

  1. 设计一个成功的微服务,堪称必备的9个基础知识
  2. 一篇文章搞定Linux基础操作
  3. QT实现统计历年的太阳黑子数
  4. Java读源代码学设计模式:适配器Adapter
  5. linux上mongodb的安装与卸载
  6. ios部分阴影_iOS UIMenuController UIMenuItem第2部分
  7. 【CF1325E】 Ehab's REAL Number Theory Problem(思维+最小环bfs)
  8. 计算机毕业设计Java新能源汽车故障分析2021(源码+系统+mysql数据库+Lw文档)
  9. 老电脑宏基E1-471G SSD 装win10系统
  10. 台式计算机的cpu,台式电脑处理器(CPU)性能排行榜
  11. 医院HIS预约系统源码丨同城排队预约下单微信小程序公众号 his源码
  12. C语言数字图像处理进阶---6 LOMO滤镜
  13. 搭建openstack keystone服务创建域报错An unexpected error prevented the server from fulfilling your request. (H
  14. AndroidStuodio编译失败报错:Entry name ‘assets/sm2/t.jks‘ collided解决方案
  15. php省略后缀,隐藏php后缀的方法是什么
  16. 墨菲定律 Murphy’s Law
  17. 最新Win10离线安装.NET Framework 3.5的方法(不需要离线包,只需原版系统安装包,亲测完美快捷有效)
  18. 随心所欲b超工作站图像处理_彩超工作站B超随心所欲XP版超声随心所欲XP版
  19. Reactive的使用(reactive 和 shallowReactive使用上区别)
  20. Linux下Oracle 11g安装(1)—— 系统安装篇

热门文章

  1. 为ASP.NET MVC扩展异步Action功能(下)
  2. PMCAFF问答龙虎榜,大神云集,等你挑战
  3. 复盘无人业态的三点心得:起于共享单车,止于何?
  4. 活动 | Daung~!他们用产品思维改变医疗挂号问题
  5. 【pmcaff】产品经理必知改善用户体验的基本方法
  6. Java新手如何学习Spring、Struts、Hibernate三大框架?
  7. adas--智能驾驶辅助系统
  8. Python OpenCV实例:图像直方图均衡化(数学公式简单实现)
  9. Android Scroller用法
  10. 廖雪峰javascript教程学习记录