ABAP-复制采购订单行项目到新的行
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-复制采购订单行项目到新的行的更多相关文章
- ABAP 查看采购订单行项目已开票金额和已清金额
FUNCTION zmm_fm_po_invence. *"----------------------------------------------------------------- ...
- 002 MIRO发票校验采购订单项目科目分配类别检查增强-20150819
BADI SE19:ZINVOICE_UPDATE MIRO发票检验过账好模拟时,检查采购订单line 是否有固定资产的行项目,如果有固定资产项目,则弹出提示框,提示消息:存在规定资产采购项目! ...
- ME_PROCESS_PO_CUST 实现采购订单行项目增强
用户希望创建采购订单时,输入行项目时,能根据采购订单类型,自动带出科目分类类别. 业务顾问看了一下配置,不能实现这个功能,所以用增强实现. 采购订单BADI增强:ME_PROCESS_PO_CUST. ...
- SAP MM 有了采购订单历史的PO行项目里的采购附加费不允许再改了?
SAP MM 有了采购订单历史的PO行项目里的采购附加费不允许再改了? 正确答案是: 不允许,这是SAP标准逻辑. 那么问题来了!今日收到业务人员报说采购订单4300013979,完成了收货和IV, ...
- 【ABAP系列】SAP 销售订单的行项目里条件的增强
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP 销售订单的行项目里条件的 ...
- 【MM系列】SAP MM模块-控制采购订单中某些项目的输出显示
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[MM系列]SAP MM模块-控制采购订单中某些 ...
- 如何用代码填充S/4HANA销售订单行项目的数量字段
我的任务是用代码生成S/4HANA销售订单(Sales Order)的行项目,并且填充对应的quantity(数量)值. 最开始我用了下面的代码,把quantity的值写入item字段target_q ...
- 采购订单限价(包含阶梯价)ME_PROCESS_PO_CUST
为了能管控到钱财的每个环节,公司要求采购订单需要使用物料限价,当有报价低于先前的价格时,在采购订单保存时,更新最低限价 BADI:ME_PROCESS_PO_CUST process~item里做限价 ...
- SAP MM 按采购订单查询付款信息的报表?
SAP MM 按采购订单查询付款信息的报表? 上午给P3项目采购部门用户做了一个采购相关的报表的培训.培训过程中,客户的采购部门经理提出了一个问题:有没有报表能查询到各个采购订单的付款情况,显示采购订 ...
随机推荐
- 微服务SpringCloud之熔断器
学习SpringCloud微服务是参考纯洁的微笑博客,看到他提到股市的熔断我也忍不住吐槽一下,记得当时实施熔断第一天就熔断了,现在想想也还是搞笑,从之前的全民炒股到现在的全民炒房,都是一个炒字,问题是 ...
- c++ 二分答案
c++ 二分答案 问题 使得x^x达到或超过n位数字的最小正整数x是多少?n<=2000000000 分析 对与这种较难求解的问题,我们很难想出较好的解决策略.但是,我们至少知道答案一定在1与2 ...
- android网络编程_socket(一)
转载http://www.eoeandroid.com/thread-97477-1-1.html 小知识点:UDP协议和TCP协议的不同.UDP是把数据都打成数据包,数据包上自带通信的地址,但是数据 ...
- Leetcode多线程题库练习(新功能尝鲜)& 个人感悟
大家好, 我是方子龙.很久没有自己写文章了. 一面是因为工作上的需求开发任务比较重,下班回家基本上就躺床玩几把王者,度过闲暇时光. 二面是一有点时间就自己主动地去看书和学习,知道自己还缺少很多知识,由 ...
- Python多进程与多线程编程及GIL详解
介绍如何使用python的multiprocess和threading模块进行多线程和多进程编程. Python的多进程编程与multiprocess模块 python的多进程编程主要依靠multip ...
- 使用flink Table &Sql api来构建批量和流式应用(3)Flink Sql 使用
从flink的官方文档,我们知道flink的编程模型分为四层,sql层是最高层的api,Table api是中间层,DataStream/DataSet Api 是核心,stateful Stream ...
- 一次使用InfluxDB数据库的总结
前言 因当前的项目需要记录每秒钟服务器的状态信息,例如负载.cpu等等信息,这些数据都是和时间相关联的. 因为一秒钟就要存储挺多的数据.而且我还在前端做了echart的折线图,使用websocket实 ...
- Day1 -Python program
采用python 3.5 用PyCharm编译 第一串代码 print ("hello,world!") 练习1 输入一个用户名和密码,如果输入正确,就欢迎登陆,否则就显示错误. ...
- 个人永久性免费-Excel催化剂功能第61波-快速锁定解锁单元格及显示隐藏公式
Excel的所有功能都是需求导向的,正因为有客户在企业管理的过程中,有这样的需求出现了,然后相应的Excel就出现了相应的功能来辅助管理,学习Excel的功能,其实真的可以学习到先进企业的许多的管理思 ...
- Shiro在Web环境下集成Spring的大致工作流程
1,Shiro提供了对Web环境的支持,其通过一个 ShiroFilter 入口来拦截需要安全控制的URL,然后进行相应的控制. ①配置的 ShiroFilter 实现类为:org.spri ...