FUNCTION Z_SD_UB_CHANGE.
*"----------------------------------------------------------------------
*"*"Local Interface:
*" IMPORTING
*" REFERENCE(IM_EBELN) TYPE EBELN
*" REFERENCE(IM_TYPE) TYPE CHAR4
*" REFERENCE(IM_BUDAT) TYPE BUDAT DEFAULT SY-DATUM
*" TABLES
*" IT_ITEM STRUCTURE ZSDS0025
*" IT_RETURN STRUCTURE BAPIRET2 OPTIONAL
*"----------------------------------------------------------------------
***********************************************************************
* Function <Z_SD_UB_CHANGE>
************************************************************************
*
* 作者: DZHANGHUI
* 完成日期: 2014/12/31
* 描述: UB单返写 发货
************************************************************************
* 版本号 日期 作者 修改描述 功能更改说明书
************************************************************************
* 1. YYYY/MM/DD author Read dataset from app. Server @001
************************************************************************
DATA : LV_EBELN TYPE BAPIMEPOHEADER-PO_NUMBER,
LV_ITEM LIKE GS_POITEM-PO_ITEM,
LV_WERKS LIKE GS_POITEM-PLANT,
LV_SUPPL LIKE GS_POITEM-SUPPL_STLOC,
LV_CAT LIKE GS_POITEM-ITEM_CAT,
LV_VAL_TYPE LIKE GS_POITEM-VAL_TYPE,
LV_BWTTY LIKE MARC-BWTTY. "评估类别 DATA : LS_ITEM TYPE ZSDS0025. LV_EBELN = IM_EBELN. REFRESH : GT_POITEM,GT_POITEMX,
GT_POSCHEDULE,GT_POSCHEDULEX. * 获取PO的Detail
CALL FUNCTION 'BAPI_PO_GETDETAIL1'
EXPORTING
PURCHASEORDER = LV_EBELN
TABLES
POITEM = GT_POITEM. * IF IM_TYPE = 'SJ'."素金
* 删除原来的行项目
LOOP AT GT_POITEM INTO GS_POITEM.
IF ( GS_POITEM-BATCH IS INITIAL OR GS_POITEM-BATCH EQ GS_POITEM-MATERIAL ) AND
GS_POITEM-DELETE_IND IS INITIAL.
GS_POITEM-DELETE_IND = 'D'.
MODIFY GT_POITEM FROM GS_POITEM INDEX SY-TABIX TRANSPORTING DELETE_IND. GS_POITEMX-PO_ITEM = GS_POITEM-PO_ITEM.
GS_POITEMX-DELETE_IND = 'X'.
APPEND GS_POITEMX TO GT_POITEMX.
ENDIF. LV_ITEM = GS_POITEM-PO_ITEM.
LV_WERKS = GS_POITEM-PLANT.
LV_SUPPL = GS_POITEM-SUPPL_STLOC.
LV_CAT = GS_POITEM-ITEM_CAT.
LV_VAL_TYPE = GS_POITEM-VAL_TYPE.
ENDLOOP. * 获取工厂 项目类型
IF SY-SUBRC NE .
READ TABLE GT_POITEM INTO GS_POITEM INDEX .
LV_ITEM = GS_POITEM-PO_ITEM.
LV_WERKS = GS_POITEM-PLANT.
LV_SUPPL = GS_POITEM-SUPPL_STLOC.
LV_CAT = GS_POITEM-ITEM_CAT.
LV_VAL_TYPE = GS_POITEM-VAL_TYPE.
ENDIF. * 新增需要发货的行项目
LOOP AT IT_ITEM INTO LS_ITEM.
* 检查不存在相同物料和批次的行项目
READ TABLE GT_POITEM INTO GS_POITEM WITH KEY MATERIAL = LS_ITEM-ZSPKH BATCH = LS_ITEM-ZSPPC DELETE_IND = ''.
CHECK SY-SUBRC NE . ADD TO LV_ITEM. CLEAR GS_POITEM.
GS_POITEM-PO_ITEM = LV_ITEM.
GS_POITEM-MATERIAL = LS_ITEM-ZSPKH.
GS_POITEM-PLANT = LV_WERKS.
GS_POITEM-BATCH = LS_ITEM-ZSPPC.
GS_POITEM-SUPPL_STLOC = LV_SUPPL.
GS_POITEM-QUANTITY = LS_ITEM-ZSPJH.
GS_POITEM-ITEM_CAT = LV_CAT.
* 检查物料是否启用评估类别
PERFORM FRM_CHECK_VALUE_TYPE USING LV_WERKS LS_ITEM-ZSPKH
CHANGING LV_BWTTY.
* 评估类型
IF LV_BWTTY EQ 'X'.
GS_POITEM-VAL_TYPE = LS_ITEM-ZSPPC.
ENDIF. APPEND GS_POITEM TO GT_POITEM. CLEAR GS_POITEMX.
GS_POITEMX-PO_ITEM = LV_ITEM.
GS_POITEMX-MATERIAL = 'X'.
GS_POITEMX-PLANT = 'X'.
GS_POITEMX-BATCH = 'X'.
GS_POITEMX-SUPPL_STLOC = 'X'.
GS_POITEMX-QUANTITY = 'X'.
GS_POITEMX-ITEM_CAT = 'X'.
IF LV_BWTTY EQ 'X'.
GS_POITEMX-VAL_TYPE = 'X'.
ENDIF.
APPEND GS_POITEMX TO GT_POITEMX. * 更新计划行
CLEAR GS_POSCHEDULE.
GS_POSCHEDULE-PO_ITEM = LV_ITEM.
GS_POSCHEDULE-SCHED_LINE = .
GS_POSCHEDULE-DELIVERY_DATE = IM_BUDAT.
APPEND GS_POSCHEDULE TO GT_POSCHEDULE. CLEAR GS_POSCHEDULEX.
GS_POSCHEDULEX-PO_ITEM = LV_ITEM.
GS_POSCHEDULEX-SCHED_LINE = .
GS_POSCHEDULEX-DELIVERY_DATE = 'X'.
APPEND GS_POSCHEDULEX TO GT_POSCHEDULEX.
ENDLOOP.
* ELSEIF IM_TYPE = 'XQ'."镶嵌
* LOOP AT IT_ITEM INTO LS_ITEM.
** 检查是否存在相同的物料和批次,若存在则不需返写
* READ TABLE GT_POITEM INTO GS_POITEM WITH KEY MATERIAL = LS_ITEM-ZSPKH
* BATCH = LS_ITEM-ZSPPC.
* CHECK SY-SUBRC NE 0.
*
** 查找无批次的行项目 - 返写批次信息
* READ TABLE GT_POITEM INTO GS_POITEM WITH KEY MATERIAL = LS_ITEM-ZSPKH
* BATCH = ''.
* IF SY-SUBRC EQ 0.
* GS_POITEM-BATCH = LS_ITEM-ZSPPC.
* GS_POITEM-QUANTITY = LS_ITEM-ZSPJH.
* MODIFY GT_POITEM FROM GS_POITEM INDEX SY-TABIX TRANSPORTING BATCH.
*
* GS_POITEMX-PO_ITEM = GS_POITEM-PO_ITEM.
* GS_POITEMX-BATCH = 'X'.
* GS_POITEMX-QUANTITY = 'X'.
* APPEND GS_POITEMX TO GT_POITEMX.
* ENDIF.
* ENDLOOP.
* ENDIF.
CHECK GT_POITEM IS NOT INITIAL. * 修改订单
CALL FUNCTION 'BAPI_PO_CHANGE'
EXPORTING
PURCHASEORDER = LV_EBELN
TABLES
RETURN = GT_RETURN
POITEM = GT_POITEM
POITEMX = GT_POITEMX
POSCHEDULE = GT_POSCHEDULE
POSCHEDULEX = GT_POSCHEDULEX. LOOP AT GT_RETURN INTO GS_RETURN WHERE TYPE = 'X' OR
TYPE = 'A' OR
TYPE = 'E'.
EXIT.
ENDLOOP. IF SY-SUBRC EQ .
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT = 'X'.
ENDIF. IT_RETURN[] = GT_RETURN.
ENDFUNCTION.
FORM FRM_CHECK_VALUE_TYPE  USING    P_WERKS
P_MATNR
CHANGING P_BWTTY.
CLEAR P_BWTTY. SELECT SINGLE BWTTY INTO P_BWTTY
FROM MARC
WHERE WERKS = P_WERKS
AND MATNR = P_MATNR.
ENDFORM. " FRM_CHECK_VALUE_TYPE

UB单修改的更多相关文章

  1. 参照UB单创建DN并过账

    *&---------------------------------------------------------------------* *& Form FRM_DN_POST ...

  2. RPA供应链管制单修改机器人

    背景:供应链环节中,研发物料时而因为市场缺货等原因无法采购,资材部需登入系统修改物料管制单. 操作流程:登录PDM系统中读取数据.登录ERP系统中更新数据. 人工操作:每日耗时3.5小时,出现一定比例 ...

  3. dede表单修改默认必填

    默认的dedecms自定义表单却没有必填项的设置,如果要设置织梦自定义表单的必填项,需要进行额外的修改! 方法一:通过修改程序源文件实现 1.在plus文件夹下找到diy.php文件,对其进行编辑,在 ...

  4. form表单修改label样式

    <?php $form = ActiveForm::begin([ 'options'=>['enctype'=>'multipart/form-data','class' => ...

  5. php表单修改数据

    (接前面写的) 第一个页面xiugai.php <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" ...

  6. U890采购入库单修改供应商

    采购入库单表头 SELECT *FROM RdRecordWHERE (cCode = '0000051801') 采购入库单表体 SELECT *FROM RdRecordsWHERE (cPOID ...

  7. Django form表单修改数据

    form: #!/usr/bin/env python #coding:utf8 from django.forms import Form,ModelForm import models class ...

  8. MFC属性表单修改“应用”键名并对其响应

    1.重载CPropertySheet的虚函数OnInitDialog(),添加如下代码 BOOL DialogInputData::OnInitDialog() { BOOL bResult = CP ...

  9. ExtJs如何判断form表单是否被修改过详解

    1.Extjs表单提交主要有三种方式: 1, EXT的form表单ajax提交(默认提交方式)      相对单独的ajax提交来说优点在于能省略写参数数组 ,form.getForm().submi ...

随机推荐

  1. git sshkeygen Fingerprint cannot be generated解决方法

    ssh-keygen -t rsa -C "xxx@xxx.com"   生成后使用cat或者vim 查看该rsa,然后复制到github的ssh keys中:     提示:   ...

  2. python_way day13 paramiko

    paramiko 一.安装 pip3 install paramiko 二.使用 1.SSHClient 用于连接远程服务器并执行基本命令 import paramiko # 创建SSH对象 ssh ...

  3. 在SQL Server中 获取日期、日期格式转换

    --常用日期转换参数: PRINT CONVERT(varchar, getdate(), 120 ) 2016-07-20 16:09:01 PRINT replace(replace(replac ...

  4. git学习笔记05-从远程库克隆

    现在,假设我们从零开发,那么最好的方式是先创建远程库,然后,从远程库克隆. 首先,登陆GitHub,创建一个新的仓库,名字叫gitskills: 我们勾选Initialize this reposit ...

  5. git学习笔记01-git最基本的工作原理分布式

    git学习的网站 http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000  --廖雪峰老师 ...

  6. [转载] zookeeper 事件通知

    ZK事件回调当一个client访问ZK时,client与ZK保持长连接.应用可以通过client的api注册一些callback,当对应的事件发生时,client会执行对应的callback.如果你基 ...

  7. (转)Web自动化测试中的接口测试

    1.背景 1.1 Web程序中的接口 1.1.1 典型的Web设计架构 web是实现了基于网络通信的浏览器客户端与远程服务器进行交互的应用,通常包括两部分:web服务器和web客户端.web客户端的应 ...

  8. 选择列表控件的使用(PickList)

    需要下载picklist.dll类库配合使用 <%@ Register TagPrefix="cc1" Namespace="PickListControl&quo ...

  9. JS---------->数组练习!

      var arr = [4, 0, 7, 9, 0, 0, 2, 6, 0, 3, 1, 0]; 要求将数组中的0项去掉,将不为0的值存入一个新的数组,生成新的数组 <!doctype htm ...

  10. iOS开发之Xcode 6 国际化

    Xcode6 国际化 (1) 新建一个Single View app模版项目,命名为LocalizationTest 1.建立strings文件,命名为Localization.strings 2.点 ...