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. genome MuSic安装

    系统:ubuntu 15.04全程在root权限下安装 首先安装软件samtools ,必须是samtools-0.1.19 版本tar jxf samtools-0.1.19.tar.bz2cd s ...

  2. C#TextBox自动滚动到最低端

    C#中一个RichTextBox,当新写入内容时,超过当前显示区域后,自动滚动到最低端,方便查看内容. private void txtInfo_TextChanged(object sender,  ...

  3. Codeforces Round #158 (Div. 2) C. Balls and Boxes 模拟

    C. Balls and Boxes time limit per test 1 second memory limit per test 256 megabytes input standard i ...

  4. XAF应用开发教程(二)业务对象模型之简单类型属性

    使用过ORM的朋友对这一部分理解起来会非常快,如果没有请自行补习吧:D. 不说废话,首先,我们来开发一个简单的CRM系统,CRM系统第一个信息当然是客户信息.我们只做个简单 的客户信息来了解一下XAF ...

  5. 跨代的对决 英特尔i7-6700HQ对比i7-4720HQ性能测试

    http://itianti.sinaapp.com/index.php/cpu 跨代的对决 英特尔i7-6700HQ对比i7-4720HQ性能测试 2015-10-13 19:46:31 来源:电脑 ...

  6. c++ ,类型转换

    一.隐式转换 1)精度低转高,sigend转unsigend2)数值0,会转为为指针. 数组名会转换为首地址.3)bool转换 .0为false.其他为true.-1也是true...4)非const ...

  7. [转载] 理解 rto

    原文: http://mp.weixin.qq.com/s?__biz=MzAxNjM3MDkyOQ==&mid=204656491&idx=1&sn=5046aa16eee0 ...

  8. mysql 选择性高

    选择性高是指能够过滤掉更多不需要的记录.举例来说,在一个公司里,使用性别只能过滤掉一半的人,而使用姓名一般可以过滤掉99%以上的人,因为会有重名情况,而使用员工号,选出一个,其他的全部过滤掉.也就是说 ...

  9. 一次tomcat服务器被入侵解决办法

    突然tomcat目录下莫名其妙的多了几个war文件,里面内容只有一个index.jsp,打开控制台发现多了几个应用,我可以确定不是我部署上去的,顺着应用访问竟然看到了

  10. 正则的小效果:-------> 过滤敏感词

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...