UB单修改
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单修改的更多相关文章
- 参照UB单创建DN并过账
*&---------------------------------------------------------------------* *& Form FRM_DN_POST ...
- RPA供应链管制单修改机器人
背景:供应链环节中,研发物料时而因为市场缺货等原因无法采购,资材部需登入系统修改物料管制单. 操作流程:登录PDM系统中读取数据.登录ERP系统中更新数据. 人工操作:每日耗时3.5小时,出现一定比例 ...
- dede表单修改默认必填
默认的dedecms自定义表单却没有必填项的设置,如果要设置织梦自定义表单的必填项,需要进行额外的修改! 方法一:通过修改程序源文件实现 1.在plus文件夹下找到diy.php文件,对其进行编辑,在 ...
- form表单修改label样式
<?php $form = ActiveForm::begin([ 'options'=>['enctype'=>'multipart/form-data','class' => ...
- php表单修改数据
(接前面写的) 第一个页面xiugai.php <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" ...
- U890采购入库单修改供应商
采购入库单表头 SELECT *FROM RdRecordWHERE (cCode = '0000051801') 采购入库单表体 SELECT *FROM RdRecordsWHERE (cPOID ...
- Django form表单修改数据
form: #!/usr/bin/env python #coding:utf8 from django.forms import Form,ModelForm import models class ...
- MFC属性表单修改“应用”键名并对其响应
1.重载CPropertySheet的虚函数OnInitDialog(),添加如下代码 BOOL DialogInputData::OnInitDialog() { BOOL bResult = CP ...
- ExtJs如何判断form表单是否被修改过详解
1.Extjs表单提交主要有三种方式: 1, EXT的form表单ajax提交(默认提交方式) 相对单独的ajax提交来说优点在于能省略写参数数组 ,form.getForm().submi ...
随机推荐
- Django 查询很经典的
版权归作者所有,任何形式转载请联系作者. 作者:petanne(来自豆瓣) 来源:https://www.douban.com/note/301166150/ 1.多表连接查询:感觉django太N ...
- Timeout expired超时时间已到. 达到了最大池大小 错误及Max Pool Size设置
此文章非原创,仅为分享.学习!!! 参考数据库链接串: <add key="data" value="server=192.168.1.123; port=3306 ...
- NoSQL数据库的分布式模型
NoSQL数据库的分布式模型 单一服务器 在一个服务器完全能够胜任工作时就没必要考虑分布式,这样部署简单,维护也方便很多: 分片 特点 数据的各个部分存放在集群的不同服务器中: 比如按字母来划分:以a ...
- 关于ListView嵌套GridView中的onItemClickListener失效问题
一开始在ListView中设置了onItemClickListener,在里面Log输出Item列表的位置,完全没有反应, 网上大部分说的什么把子组件屏蔽掉(而且好多都是转载的一样的), 可是我希望的 ...
- Java 实现二分法查找算法
算法 假如有一组数为3,12,24,36,55,68,75,88要查给定的值24.可设三个变量front,mid,end分别指向数据的上界,中间和下界,mid=(front+end)/2. 1.开始令 ...
- iOS - ASIHTTPRequest 网络请求
前言 使用 iOS SDK 中的 HTTP 网络请求 API,相当的复杂,调用很繁琐,ASIHTTPRequest 就是一个对 CFNetwork API 进行了封装,并且使用起来非常简单的一套 AP ...
- SAP接口编程 之 JCo3.0系列(02) : JCo Client Programming
SAP接口编程 之 JCo3.0系列(02) : JCo Client Programming 字数545 阅读52 评论0 喜欢1 JCo3.0调用SAP函数的过程 大致可以总结为以下步骤: 连接至 ...
- Codeforces 731F Video Cards
题意:给定n个数字,你可以从中选出一个数A(不能对该数进行修改操作),并对其它数减小至该数的倍数,统计总和.问总和最大是多少? 题解:排序后枚举每个数作为选出的数A,再枚举其他数, sum += a[ ...
- ORACLE性能优化之SQL语句优化
版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] 操作环境:AIX +11g+PLSQL 包含以下内容: 1. SQL语句执行过程 2. 优化器及执行计划 3. 合 ...
- iOS 开发之 Xcode6 打包生成ipa给测试
Xcode 6正式版Version 6.0.1 (6A317)已经放出Mac AppStore,之前为了体验swift也安装过beta版,但是并没有注意到6系Xcode对于导出ipa的变化,更新正式版 ...