可用函数修改:CO_XT_COMPONENT_CHANGE,一次一个

 FORM prm_change_bom .
DATA:gw_zstypf TYPE zstypf.
DATA:lv_rspos TYPE rspos.
CLEAR:gw_zstypf,lv_rspos. LOOP AT gt_zstypf INTO gs_zstypf.
IF gs_zstypf-rsnum IS NOT INITIAL.
MOVE-CORRESPONDING gs_zstypf TO gw_zstypf.
ENDIF.
ENDLOOP. LOOP AT gt_zstypf INTO gs_zstypf WHERE xloek = 'X'."原有组件,需要先删除
PERFORM prm_delete_bom_line USING gs_zstypf-rspos gs_zstypf-aufnr.
IF sy-subrc = .
ELSE.
MESSAGE '删除组件失败,请重新删除!' TYPE 'E'.
ENDIF.
ENDLOOP. WAIT UP TO SECONDS. LOOP AT gt_zstypf INTO gs_zstypf WHERE xloek = 'C' AND rsnum IS NOT INITIAL."修改原有组件
PERFORM prm_change_bom_line USING gs_zstypf.
IF sy-subrc = .
ELSE.
MESSAGE '修改组件失败,请重新修改!' TYPE 'E'.
ENDIF.
ENDLOOP. WAIT UP TO SECONDS. SELECT MAX( rspos ) INTO lv_rspos FROM resb WHERE rsnum = gw_zstypf-rsnum. LOOP AT gt_zstypf INTO gs_zstypf WHERE xloek <> 'X' AND rsnum IS INITIAL."新建组件
gs_zstypf-rspos = lv_rspos + .
gs_zstypf-aufnr = gw_zstypf-aufnr.
gs_zstypf-posnr = gs_zstypf-rspos * .
lv_rspos = lv_rspos + .
PERFORM prm_add_bom_line USING gs_zstypf.
IF sy-subrc = .
ELSE.
MESSAGE '添加组件失败,请重新添加!' TYPE 'E'.
ENDIF.
ENDLOOP. ENDFORM. " PRM_CHANGE_BOM
FORM prm_delete_bom_line  USING    p_posnr p_aufnr.
DATA:lv_value TYPE bdcdata-fval.
DATA:lv_fname TYPE bdcdata-fnam.
REFRESH:messtab,bdcdata.
CLEAR:lv_value,lv_fname.
CONCATENATE 'RESBD-POSNR(' p_posnr ')' INTO lv_value.
CONCATENATE 'RC27X-FLG_SEL(' p_posnr ')' INTO lv_fname.
PERFORM bdc_dynpro USING 'SAPLCOKO1' ''.
PERFORM bdc_field USING 'BDC_CURSOR'
'CAUFVD-AUFNR'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=KPU2'.
PERFORM bdc_field USING 'CAUFVD-AUFNR'
p_aufnr.
* '100000043'.
PERFORM bdc_field USING 'R62CLORD-FLG_OVIEW'
'X'.
PERFORM bdc_dynpro USING 'SAPLCOMK' ''.
PERFORM bdc_field USING 'BDC_CURSOR'
lv_value.
* 'RESBD-POSNR(02)'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=DEL'.
PERFORM bdc_field USING 'FILTER_BOX'
'NO_FIL'.
PERFORM bdc_field USING 'SORT_BOX'
'ST_STA'.
PERFORM bdc_field USING lv_fname"'RC27X-FLG_SEL(02)'
'X'.
PERFORM bdc_dynpro USING 'SAPLCOMK' ''.
PERFORM bdc_field USING 'BDC_CURSOR'
'RESBD-MATNR(01)'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=BU'.
PERFORM bdc_field USING 'FILTER_BOX'
'NO_FIL'.
PERFORM bdc_field USING 'SORT_BOX'
'ST_STA'.
CALL TRANSACTION 'CO02' USING bdcdata
MODE 'N'
UPDATE 'S'
MESSAGES INTO messtab.
*perform bdc_transaction using 'CO02'.
ENDFORM. " PRM_DELETE_BOM_LINE
FORM prm_change_bom_line  USING    p_gs_zstypf STRUCTURE zstypf.

   DATA:lv_value TYPE bdcdata-fval.
DATA:lv_dbmn TYPE bdcdata-fval."数量
DATA:lv_fnam1 TYPE bdcdata-fnam.
DATA:lv_fnam2 TYPE bdcdata-fnam.
DATA:lv_fnam3 TYPE bdcdata-fnam.
REFRESH:messtab,bdcdata.
CLEAR:lv_value,lv_fnam1,lv_fnam2,lv_fnam3.
CONCATENATE 'RESBD-MATXT(' p_gs_zstypf-rspos ')' INTO lv_value.
CONCATENATE 'RC27X-FLG_SEL(' p_gs_zstypf-rspos ')' INTO lv_fnam1.
CONCATENATE 'RESBD-MATNR(' p_gs_zstypf-rspos ')' INTO lv_fnam2.
CONCATENATE 'RESBD-MENGE(' p_gs_zstypf-rspos ')' INTO lv_fnam3. PERFORM bdc_dynpro USING 'SAPLCOKO1' ''.
PERFORM bdc_field USING 'BDC_CURSOR'
'CAUFVD-AUFNR'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=KPU2'.
PERFORM bdc_field USING 'CAUFVD-AUFNR'
p_gs_zstypf-aufnr.
PERFORM bdc_field USING 'R62CLORD-FLG_OVIEW'
'X'.
PERFORM bdc_dynpro USING 'SAPLCOMK' ''.
PERFORM bdc_field USING 'BDC_CURSOR'
lv_value.
PERFORM bdc_field USING 'BDC_OKCODE'
'=PICK'.
PERFORM bdc_field USING 'FILTER_BOX'
'NO_FIL'.
PERFORM bdc_field USING 'SORT_BOX'
'ST_STA'.
PERFORM bdc_field USING lv_fnam1
'X'.
PERFORM bdc_field USING lv_fnam2
p_gs_zstypf-matnr.
MOVE p_gs_zstypf-bdmng TO lv_dbmn.
CONDENSE lv_dbmn NO-GAPS.
PERFORM bdc_field USING lv_fnam3
lv_dbmn.
PERFORM bdc_dynpro USING 'SAPLCOMD' ''.
PERFORM bdc_field USING 'BDC_OKCODE'
'=BU'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RESBD-POTX1'.
PERFORM bdc_field USING 'RESBD-MATNR'
p_gs_zstypf-matnr.
PERFORM bdc_field USING 'RESBD-POSNR'
p_gs_zstypf-posnr.
PERFORM bdc_field USING 'RESBD-POTX1'
p_gs_zstypf-potx1.
PERFORM bdc_field USING 'RESBD-SANKA'
'X'.
PERFORM bdc_dynpro USING 'SAPLCOMD' ''.
PERFORM bdc_field USING 'BDC_OKCODE'
'=BU'.
PERFORM bdc_field USING 'RESBD-SANKA'
'X'.
CALL TRANSACTION 'CO02' USING bdcdata
MODE 'N'
UPDATE 'S'
MESSAGES INTO messtab. ENDFORM. " PRM_CHANGE_BOM_LINE
FORM prm_add_bom_line  USING    p_gs_zstypf STRUCTURE zstypf.

   DATA:lv_value TYPE bdcdata-fval.
DATA:lv_dbmn TYPE bdcdata-fval."数量
DATA:lv_fnam1 TYPE bdcdata-fnam.
DATA:lv_fnam2 TYPE bdcdata-fnam.
DATA:lv_fnam3 TYPE bdcdata-fnam.
DATA:lv_fnam4 TYPE bdcdata-fnam.
DATA:lv_fnam5 TYPE bdcdata-fnam.
DATA:lv_fnam6 TYPE bdcdata-fnam.
REFRESH:messtab,bdcdata.
CLEAR:lv_value,lv_fnam1,lv_fnam2,lv_fnam3,lv_fnam4,lv_fnam5,lv_fnam6.
CONCATENATE 'RESBD-MATXT(' p_gs_zstypf-rspos ')' INTO lv_value.
CONCATENATE 'RESBD-MATNR(' p_gs_zstypf-rspos ')' INTO lv_fnam1.
CONCATENATE 'RESBD-MENGE(' p_gs_zstypf-rspos ')' INTO lv_fnam2.
CONCATENATE 'RESBD-EINHEIT(' p_gs_zstypf-rspos ')' INTO lv_fnam3.
CONCATENATE 'RESBD-POSTP(' p_gs_zstypf-rspos ')' INTO lv_fnam4.
CONCATENATE 'RESBD-VORNR(' p_gs_zstypf-rspos ')' INTO lv_fnam5.
CONCATENATE 'RCOLS-APLFL(' p_gs_zstypf-rspos ')' INTO lv_fnam6. PERFORM bdc_dynpro USING 'SAPLCOKO1' ''.
PERFORM bdc_field USING 'BDC_CURSOR'
'CAUFVD-AUFNR'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=KPU2'.
PERFORM bdc_field USING 'CAUFVD-AUFNR'
p_gs_zstypf-aufnr.
PERFORM bdc_field USING 'R62CLORD-FLG_OVIEW'
'X'.
PERFORM bdc_dynpro USING 'SAPLCOMK' ''.
PERFORM bdc_field USING 'BDC_CURSOR'
lv_value.
PERFORM bdc_field USING 'BDC_OKCODE'
'=PICK'.
PERFORM bdc_field USING 'FILTER_BOX'
'NO_FIL'.
PERFORM bdc_field USING 'SORT_BOX'
'ST_STA'.
PERFORM bdc_field USING lv_fnam1
p_gs_zstypf-matnr.
MOVE p_gs_zstypf-bdmng TO lv_dbmn.
CONDENSE lv_dbmn NO-GAPS.
PERFORM bdc_field USING lv_fnam2
lv_dbmn. CALL FUNCTION 'CONVERSION_EXIT_CUNIT_OUTPUT'
EXPORTING
input = p_gs_zstypf-meins
language = sy-langu
IMPORTING
* LONG_TEXT =
output = p_gs_zstypf-meins
* SHORT_TEXT =
EXCEPTIONS
unit_not_found =
OTHERS = .
PERFORM bdc_field USING lv_fnam3
p_gs_zstypf-meins.
PERFORM bdc_field USING lv_fnam4
'L'.
PERFORM bdc_field USING lv_fnam5
p_gs_zstypf-vornr.
PERFORM bdc_field USING lv_fnam6
p_gs_zstypf-plnfl.
PERFORM bdc_dynpro USING 'SAPLCOMD' ''.
PERFORM bdc_field USING 'BDC_OKCODE'
'=BU'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RESBD-POTX1'.
PERFORM bdc_field USING 'RESBD-POTX1'
p_gs_zstypf-potx1.
PERFORM bdc_field USING 'RESBD-SANKA'
'X'.
PERFORM bdc_dynpro USING 'SAPLCOMD' ''.
PERFORM bdc_field USING 'BDC_OKCODE'
'=BU'.
CALL TRANSACTION 'CO02' USING bdcdata
MODE 'N'
UPDATE 'S'
MESSAGES INTO messtab.
ENDFORM. " PRM_ADD_BOM_LINE

生产订单修改删除组件BDC的更多相关文章

  1. SAP生产订单状态

    SAP系统的常见订单状态如下: ·        CRTD (创建):标识生产订单刚刚创建,此时禁止做后续发料和报工确认等操作: ·        PREL (部分下达):当生产订单部分下达时,如仅下 ...

  2. PP生产订单成本的计划、控制和结算

    SAP系统成本分析功能关注订单的成本,通过对计划成本和实际成本的比较分析,可以发现成本控制上的问题,以便及时解决问题.1.订单成本计划在基础数据齐全的基础上,系统可以自动滚算生产订单的成本.生产订单计 ...

  3. PP-判断生产订单状态(关闭)

    方法一.工单号通过 resb找到对象号 然后找到状态为I0045利用表JEST与TJ02T . 方法二.函数'STATU_CHECK' 检查工单状态为'I0045' 则为已做技术性关闭. READ T ...

  4. ABAP 生产订单的创建与修改函数

    ABAP 生产订单的创建与修改函数转自http://www.cnblogs.com/aBaoRong/archive/2012/04/11/2441946.html   如果生产订单过多,可以批量创建 ...

  5. PP篇11 增、改生产订单组件BAPI

    增.改生产订单组件BAPI BAPI_ALM_ORDER_MAINTAIN USE BAPI_ALM_ORDER_MAINTAIN TO CREATE OR CHANGE PM WORK ORDER ...

  6. 打通前后端全栈开发node+vue进阶【课程学习系统项目实战详细讲解】(3):用户添加/修改/删除 vue表格组件 vue分页组件

    第三章 建议学习时间8小时      总项目预计10章 学习方式:详细阅读,并手动实现相关代码(如果没有node和vue基础,请学习前面的vue和node基础博客[共10章] 演示地址:后台:demo ...

  7. 关闭生产订单时报错“订单&的未处理将来更改记录组织删除标记/完成”,消息号CO688

    消息号 CO688 诊断 仍存在未来的更改记录,或从订单的确认过程的确认中要处理的错误记录.可能的确认过程是: 自动收货 反冲 实际成本的计算 数据传输至 HR 系统响应 未打算对订单设置删除标记/‘ ...

  8. SAP PP 生产订单变更记录保存

    *&---------------------------------------------------------------------* *& 包括 ZXCO1U01 *&am ...

  9. SAP 生产订单变更管理 OCM Order Changement Management

    SAP OCM Order Changement Management  一.目的 订单变更管理系统是当我们的订单(生产订单.计划订单.采购订单)已经存在的时候,其物料主数据或销售数据有变更时,我们可 ...

随机推荐

  1. linux留下后门的技巧

    在团队内部的wiki上已经写出 http://drops.wooyun.org/tips/1951 http://www.freebuf.com/sectool/10474.html 还有一种方法是写 ...

  2. CVE-2015-7547

    危险漏洞补丁修复通知 漏洞编号 漏洞编号为CVE-2015-7547 漏洞说明: Google安全团队近日发现glibc存在的溢出漏洞. glibc的DNS客户端解析器中存在基于栈的缓冲区溢出漏洞.当 ...

  3. XShell 安装与虚拟机连接

    XShell:是liunx的远程管理工具 为啥要用这个工具呢?因为在古老的liunx字符命令下,是看不到中文的,要么使用liunx的图形化界面(支持中文),要么使用远程管理工具,是在windows中的 ...

  4. Struts2配置详解_配置Action

    Struts2的核心功能是action,对于开发人员来说,使用Struts2主要就是编写action,action类通常都要实现com.opensymphony.xwork2.Action接口,并实现 ...

  5. JS——JavaScript Confirm

    function show_confirm(){var r=confirm("Press a button!");if (r==true) { alert("You pr ...

  6. iOS问题处理:如何在Mac下显示Finder中的所有文件

    摘自:http://www.cnblogs.com/elfsundae/archive/2010/11/30/1892544.html 在Unix下工作,你可能需要处理一些“特殊“文件或文件夹,例如/ ...

  7. C#堆栈和托管堆

    首先堆栈和堆(托管堆)都在进程的虚拟内存中.(在32位处理器上每个进程的虚拟内存为4GB) 堆栈stack 堆栈中存储值类型. 堆栈实际上是向下填充,即由高内存地址指向低内存地址填充. 堆栈的工作方式 ...

  8. delegate基于on

    前几天看到事件委托的时候,关于live()方法讲的不是很详细,就去搜了一下关于live()和delegate()的,最后看源码发现bind()和delegate()都是由on()实现的,感兴趣的朋友可 ...

  9. 你未必知道的css小知识

    1:当按百分比设定一个元素的宽度时,它是相对于父容器的宽度计算的,但是,对于一些表示竖向距离的属性,例如padding-top,padding-bottom,margin-top,margin-bot ...

  10. 抓包工具__Windows

    我常使用的: 1. SoftPerfect Network Protocol Analyzer 2. fiddler . fiddler2 3.