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. eclupse启动报 Failed to load JavaHL Library.错

    解决办法: window --> preferences --> Team --> SVN --> Client选项选择: SVNKit x.x.x.xxx

  2. Codeforces Round #380 (Div. 2, Rated, Based on Technocup 2017 - Elimination Round 2) D. Sea Battle 模拟

    D. Sea Battle time limit per test 1 second memory limit per test 256 megabytes input standard input ...

  3. ACDC

    acdc dcdc电源模块中大功率一般都是开关电源模式的,所以一般输入都是一个较宽的电源范围,体积也相对于变压器要小一些,效率高一些,但是纹波会偏大一些,如何选择就要看电路的需求来选择相应的方案

  4. iOS - Swift NSDate 时间

    前言 NSDate public class NSDate : NSObject, NSCopying, NSSecureCoding NSDate 用来表示公历的 GMT 时间(格林威治时间).是独 ...

  5. iOS - NSURLSession 网络请求

    前言 NS_CLASS_AVAILABLE(NSURLSESSION_AVAILABLE, 7_0) @interface NSURLSession : NSObject @available(iOS ...

  6. [转载] linux 程序运行过程中替换文件

    今天被朋友问及“Linux下可以替换运行中的程序么?”,以前依稀记得Linux下是可以的(而Windows就不让),于是随口答道“OK”.结果朋友发来一个执行结果:(test正在运行中)# cp te ...

  7. js学习笔记-编写高效、规范的js代码-Tom

    编写高效.规范的js代码: 1.变量命名空间问题,尽量使用局部变量,防止命名冲突(污染作用域中的全局变量):全局空间命名的变量可以在对应的文档域任意位置中使用window调用. 2.尽量使用单var定 ...

  8. maven入门

    1.1.项目构建 Maven(翻译为"专家","内行")是跨平台的项目管理工具.主要服务于基于Java平台的项目构建,依赖管理和项目信息管理. 项目构建过程包括 ...

  9. C++中的虚函数与纯虚函数

    这个吧,我也不怎么知道,所以,大家来看这两篇文章哦: http://blog.csdn.net/hackbuteer1/article/details/7558868 http://blog.csdn ...

  10. (六)C语言之typedef详解

    1.typedef可以看作type define的缩写,顾名思义就是类型定义,也就是说它只是给已有的类型重新定义了一个方便使用的别名,并没有产生新的数据类型.typedef的使用与宏定义define有 ...