FUNCTION zmm_fm_copy2new.
*"----------------------------------------------------------------------
*"*"本地接口:
*"  IMPORTING
*"     VALUE(IN_EBELN) TYPE  EBELN
*"     VALUE(IN_EBELP) TYPE  EBELP
*"     VALUE(IN_QUANTITY) TYPE  BSTMG
*"     VALUE(IN_PRICE) TYPE  BPREI
*"  EXPORTING
*"     VALUE(STATUS) TYPE  C
*"     VALUE(OUT_EBELP) TYPE  EBELP
*"----------------------------------------------------------------------

DATA:gs_poheader           TYPE                   bapimepoheader,
       gs_poheaderx          TYPE                   bapimepoheaderx,
       gt_return             TYPE STANDARD TABLE OF bapiret2,
       gwa_return            TYPE                   bapiret2,
       gt_item               TYPE STANDARD TABLE OF bapimepoitem,
       gwa_item              TYPE                   bapimepoitem,
       lwa_item              TYPE                   bapimepoitem,
       gt_itemx              TYPE STANDARD TABLE OF bapimepoitemx,
       gwa_itemx             TYPE                   bapimepoitemx,
       gt_poschedule         TYPE STANDARD TABLE OF bapimeposchedule,
       gwa_poschedule        TYPE                   bapimeposchedule,
       lwa_poschedule        TYPE                   bapimeposchedule,
       gt_poschedulex        TYPE STANDARD TABLE OF bapimeposchedulx,
       gwa_poschedulex       TYPE                   bapimeposchedulx,
       gt_pocond             TYPE STANDARD TABLE OF bapimepocond,
       gwa_pocond            TYPE                   bapimepocond,
       lwa_pocond            TYPE                   bapimepocond,
       gt_pocondx            TYPE STANDARD TABLE OF bapimepocondx,
       gwa_pocondx           TYPE                   bapimepocondx,
       gt_pocomponents       TYPE STANDARD TABLE OF bapimepocomponent,
       gwa_pocomponents      TYPE                   bapimepocomponent,
       gwa_pocomponents_temp TYPE                   bapimepocomponent,
       gt_pocomponentsx      TYPE STANDARD TABLE OF bapimepocomponentx,
       gwa_pocomponentsx     TYPE                   bapimepocomponentx.
  DATA:lv_num TYPE bapimepoheader-po_number.

CALL FUNCTION 'BAPI_PO_GETDETAIL1'
    EXPORTING
      purchaseorder = in_ebeln
    IMPORTING
      poheader      = gs_poheader
    TABLES
      poitem        = gt_item
      poschedule    = gt_poschedule
      pocond        = gt_pocond
      return        = gt_return.

gs_poheaderx-doc_type = 'X'.
  gs_poheaderx-vendor = 'X'.
  gs_poheaderx-purch_org = 'X'.
  gs_poheaderx-pur_group = 'X'.
  gs_poheaderx-comp_code = 'X'.
  gs_poheaderx-doc_date = 'X'.
  gs_poheaderx-langu = 'X'.
  gs_poheaderx-currency = 'X'."货币
  gs_poheaderx-status = 'X'."货币

SORT gt_item BY po_item DESCENDING."按行项目从高到低排序
  DATA:new_po_item TYPE ebelp.
  READ TABLE gt_item INTO DATA(wa) INDEX 1."获取最大行项目值
  IF sy-subrc EQ 0.
    new_po_item = wa-po_item + 10."产生新行号
  ENDIF.

LOOP AT gt_item INTO gwa_item WHERE po_item EQ in_ebelp.
    MOVE-CORRESPONDING gwa_item TO lwa_item.
    lwa_item-po_item = new_po_item.
    lwa_item-net_price = in_price.
    lwa_item-quantity = in_quantity.
    APPEND lwa_item TO gt_item.

gwa_item-quantity = gwa_item-quantity - in_quantity.
    MODIFY TABLE gt_item FROM gwa_item.

gwa_itemx-po_item = new_po_item. "采购凭证的项目编号
    gwa_itemx-material = 'X'.
    gwa_itemx-net_price = 'X'.
    gwa_itemx-short_text = 'X'."短文本
    gwa_itemx-quantity = 'X'."采购订单数量
    gwa_itemx-po_unit = 'X' ."采购订单的计量单位
    gwa_itemx-plant = 'X'."工厂
    gwa_itemx-stge_loc = 'X'. "库存地点
    gwa_itemx-item_cat = 'X'.
    gwa_itemx-tax_code = 'X'.
    gwa_itemx-date_qty_fixed = 'X'.

APPEND gwa_itemx TO gt_itemx.

READ TABLE gt_itemx INTO DATA(wax) WITH KEY po_item = in_ebelp.
    IF sy-subrc EQ 0.
      wax-quantity = 'X'.
      MODIFY TABLE gt_itemx FROM wax.
      FREE wax.
    ELSE.
      wax-po_item = in_ebelp.
      wax-quantity = 'X'.
      APPEND wax TO gt_itemx.
      FREE wax.
    ENDIF.

ENDLOOP.

LOOP AT gt_poschedule INTO gwa_poschedule WHERE po_item EQ in_ebelp.
    MOVE-CORRESPONDING gwa_poschedule TO lwa_poschedule.
    lwa_poschedule-po_item = new_po_item.
    lwa_poschedule-quantity = in_quantity.
    APPEND lwa_poschedule TO gt_poschedule.

gwa_poschedule-quantity = gwa_poschedule-quantity - in_quantity.
    MODIFY TABLE gt_poschedule FROM gwa_poschedule.

gwa_poschedulex-po_item = new_po_item. "采购凭证的项目编号
    gwa_poschedulex-sched_line = 0001. "采购凭证的项目编号
    gwa_poschedulex-del_datcat_ext = 'X'."交货日期的类别
    gwa_poschedulex-delivery_date = 'X'."交货日期
    gwa_poschedulex-quantity = 'X'."采购订单数量
    APPEND gwa_poschedulex TO gt_poschedulex.

READ TABLE gt_poschedulex INTO DATA(wax1) WITH KEY po_item = in_ebelp.
    IF  sy-subrc EQ 0.
      wax-quantity = 'X'.
      MODIFY TABLE gt_poschedulex FROM wax1.
      FREE wax1.
    ELSE.
      wax1-quantity = 'X'.
      wax1-po_item = in_ebelp.
      wax1-sched_line = 0001.
      APPEND wax1 TO gt_poschedulex.
    ENDIF.

ENDLOOP.

LOOP AT gt_pocond INTO gwa_pocond WHERE itm_number EQ in_ebelp.
    MOVE-CORRESPONDING gwa_pocond TO lwa_pocond.
    lwa_pocond-itm_number = new_po_item.
    lwa_pocond-cond_p_unt = 1.
    lwa_pocond-cond_value = in_price.
    lwa_pocond-change_id = 'I'.
    APPEND lwa_pocond TO gt_pocond.

gwa_pocondx-itm_number = new_po_item.
    gwa_pocondx-cond_type = 'X'.
    gwa_pocondx-cond_value = 'X'.
    gwa_pocondx-cond_unit = 'X'.    "条件单位
    gwa_pocondx-cond_p_unt = 'X'.   "价格单位
    gwa_pocondx-currency = 'X'.
    gwa_pocondx-change_id    = 'X'.
    APPEND gwa_pocondx TO gt_pocondx.

ENDLOOP.

CALL FUNCTION 'BAPI_PO_CHANGE'
    EXPORTING
      purchaseorder = gs_poheader-po_number
      poheader      = gs_poheader
      poheaderx     = gs_poheaderx
*     POADDRVENDOR  =
*     TESTRUN       =
*     MEMORY_UNCOMPLETE            =
*     MEMORY_COMPLETE  =
*     POEXPIMPHEADER   =
*     POEXPIMPHEADERX  =
*     VERSIONS      =
*     NO_MESSAGING  =
*     NO_MESSAGE_REQ   =
*     NO_AUTHORITY  =
*     NO_PRICE_FROM_PO =
*     PARK_COMPLETE =
*     PARK_UNCOMPLETE  =
*    IMPORTING
*     exppurchaseorder = lv_num
*     EXPHEADER     =
*     EXPPOEXPIMPHEADER            =
    TABLES
      return        = gt_return
      poitem        = gt_item
      poitemx       = gt_itemx
*     POADDRDELIVERY   =
      poschedule    = gt_poschedule
      poschedulex   = gt_poschedulex
*     POACCOUNT     =
*     POACCOUNTPROFITSEGMENT       =
*     POACCOUNTX    =
*     POCONDHEADER  =
*     POCONDHEADERX =
      pocond        = gt_pocond
      pocondx       = gt_pocondx
*     POLIMITS      =
*     POCONTRACTLIMITS =
*     POSERVICES    =
*     POSRVACCESSVALUES            =
*     POSERVICESTEXT   =
*     EXTENSIONIN   =
*     EXTENSIONOUT  =

*     POEXPIMPITEM  =

*     POEXPIMPITEMX =

*     POTEXTHEADER  =

*     POTEXTITEM    =

*     ALLVERSIONS   =

*     POPARTNER     =

*     POCOMPONENTS  = GT_POCOMPONENTS

*     POCOMPONENTSX = GT_POCOMPONENTSX .
    
.

READ TABLE gt_return INTO gwa_return WITH KEY type = 'E'.
  
IF sy-subrc <> 0.
    
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
      
EXPORTING
        
wait = 'X'.
    out_ebelp 
= new_po_item.
    status 
= 'S'.
  
ELSE.
    
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
    status 
= 'E'.
  
ENDIF.

ENDFUNCTION.

ABAP-复制采购订单行项目到新的行的更多相关文章

  1. ABAP 查看采购订单行项目已开票金额和已清金额

    FUNCTION zmm_fm_po_invence. *"----------------------------------------------------------------- ...

  2. 002 MIRO发票校验采购订单项目科目分配类别检查增强-20150819

    BADI SE19:ZINVOICE_UPDATE   MIRO发票检验过账好模拟时,检查采购订单line 是否有固定资产的行项目,如果有固定资产项目,则弹出提示框,提示消息:存在规定资产采购项目! ...

  3. ME_PROCESS_PO_CUST 实现采购订单行项目增强

    用户希望创建采购订单时,输入行项目时,能根据采购订单类型,自动带出科目分类类别. 业务顾问看了一下配置,不能实现这个功能,所以用增强实现. 采购订单BADI增强:ME_PROCESS_PO_CUST. ...

  4. SAP MM 有了采购订单历史的PO行项目里的采购附加费不允许再改了?

    SAP MM 有了采购订单历史的PO行项目里的采购附加费不允许再改了? 正确答案是: 不允许,这是SAP标准逻辑. 那么问题来了!今日收到业务人员报说采购订单4300013979,完成了收货和IV, ...

  5. 【ABAP系列】SAP 销售订单的行项目里条件的增强

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP 销售订单的行项目里条件的 ...

  6. 【MM系列】SAP MM模块-控制采购订单中某些项目的输出显示

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[MM系列]SAP MM模块-控制采购订单中某些 ...

  7. 如何用代码填充S/4HANA销售订单行项目的数量字段

    我的任务是用代码生成S/4HANA销售订单(Sales Order)的行项目,并且填充对应的quantity(数量)值. 最开始我用了下面的代码,把quantity的值写入item字段target_q ...

  8. 采购订单限价(包含阶梯价)ME_PROCESS_PO_CUST

    为了能管控到钱财的每个环节,公司要求采购订单需要使用物料限价,当有报价低于先前的价格时,在采购订单保存时,更新最低限价 BADI:ME_PROCESS_PO_CUST process~item里做限价 ...

  9. SAP MM 按采购订单查询付款信息的报表?

    SAP MM 按采购订单查询付款信息的报表? 上午给P3项目采购部门用户做了一个采购相关的报表的培训.培训过程中,客户的采购部门经理提出了一个问题:有没有报表能查询到各个采购订单的付款情况,显示采购订 ...

随机推荐

  1. 跟着大彬读源码 - Redis 4 - 服务器的事件驱动有什么含义?(上)

    众所周知,Redis 服务器是一个事件驱动程序.那么事件驱动对于 Redis 而言有什么含义?源码中又是如何实现事件驱动的呢?今天,我们一起来认识下 Redis 服务器的事件驱动. 对于 Redis ...

  2. Java 客户端负载均衡

    客户端侧负载均衡 在下图中,负载均衡能力算法是由内容中心提供,内容中心相对于用户中心来说,是用户中心的客户端,所以又被称为客户端侧负载均衡 自定义实现Client Random负载均衡 获取所有的服务 ...

  3. 个人永久性免费-Excel催化剂功能第104波-批量选择多种类型的图形对象

    在Excel的日常操作过程中,选择绝对是一个高频的操作,之前开发过一些快速选择单元格区域的辅助功能,除了单元格区域,Excel强大之处在于,类似PhotoShop那般可以存放多种图形,并且有图层先后顺 ...

  4. iOS-监听原生H5性能数据window.performance

    WebKit-WKWebView iOS8开始苹果推荐使用WKWebview作为H5开发的核心组件,以替代原有的UIWebView,以下是webkit基本介绍介绍: 介绍博客 Webkit H5 - ...

  5. Java EE.Servlet.会话管理

    一次会话是从客户打开浏览器开始到关闭浏览器结束.记录会话信息的技术称为会话跟踪.常见的会话跟踪技术有Cookie.URL重写和隐藏表单域. 1.Cookie Cookie是一小块可以嵌入到HTTP请求 ...

  6. iframe插入视频自动播放代码

    <iframe marginwidth=0 marginheight=0 src='http://www.wsview.com/yzplayerAction!play2.action?autoP ...

  7. solr配置分词器

    一.solr4.10 + mmseg4j-2.2.0分词器 1.solr的安装部署:http://www.cnblogs.com/honger/p/5876289.html,注意不同的版本安装方式可能 ...

  8. 从深处去掌握数据校验@Valid的作用(级联校验)

    每篇一句 NBA里有两大笑话:一是科比没天赋,二是詹姆斯没技术 相关阅读 [小家Java]深入了解数据校验:Java Bean Validation 2.0(JSR303.JSR349.JSR380) ...

  9. Ubuntu18.04服务器使用netplan网络构建桥接kvm虚拟机

    参考链接 Ubuntu 18.04 LTS安装KVM虚拟机 如何在 Ubuntu 18.04 服务器上安装和配置 KVM KVM日常管理和克隆 KVM详解 1.准备工作 首先需要检查一下CPU是否支持 ...

  10. 【Sublime】设置显示编码格式

    Mac 上的 Sublime 显示编码格式,设置方法: 右下角显示的 UTF-8 就是当前的编码格式. 添加如下代码: { "font_size": 18, // Display ...