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. [HDOJ3714]Error Curves(三分)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3714 题意:求n个二次函数在[0,1000]的最小值. 三分枚举. #include <bits ...

  2. 自动编号维护SNRO

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  3. CUBRID学习笔记 38 net调用java的函数过程

    首先要设置java_stored_procedure 为yes  该配置项在cubrid.conf中 书写并编译java代码 public class SpCubrid{      public st ...

  4. Xcode:Foundation框架找不到,或者是自动提示出现问题

    问题描述:Foundation框架找不到,或者是自动提示出现问题 之前的操作:手贱,不少心把编译器里面的源码改了 处理办法:清理缓存 缓存位置:点击桌面后,选择系统菜单栏:前往—电脑—硬盘—用户—ap ...

  5. LINQ之路 2:C# 3.0的语言功能(上)

    在上一篇的LINQ介绍中,我们已经看到了隐式类型变量var,扩展方法(extension method)和lambda表达式的身影.没错,他们正是LINQ技术的基石,是他们让LINQ的实现成为可能,并 ...

  6. ASP.Net UpdatePanel控件(转)

      Asp.net UpdatePanel 允许用户构建一个丰富的,以客户端为中心的应用程序,引用UpdatePanel控件,能够实现页面的部分刷新,一个包含scriptManage和 UpdateP ...

  7. 《易货》Alpha版本测试报告

    一.测试计划 功能需求编号 功能需求名称 功能需求描述 测试计划 1 用户注册 每一个想要发布商品或者需要购买商品的用户都需要注册一个账号 √ 2 用户登录 已经拥有账号的用户登录 √ 3 密码修改 ...

  8. ean13码的生成,python读取csv中数据并处理返回并写入到另一个csv文件中

    # -*- coding: utf-8 -*- import math import re import csv import repr def ean_checksum(eancode): &quo ...

  9. iOS开发之.pch文件初识

    pch全称是“precompiled header”,即预编译头文件,自Xcode6诞生之日起,便在Supporting Files文件下消失多年.说起苹果对pch的爱恨情仇,其分析pch的作用便不言 ...

  10. html frames

    http://blog.sina.com.cn/s/blog_67697189010116o0.html *********************************************** ...