【ABAP系列】SAP 生产订单完工确认(CO11N) BAPI : BAPI_PRODORDCONF_CREATE_TT

前言部分
大家可以关注我的公众号,公众号里的排版更好,阅读更舒适。
正文部分
生产完成后,需要对产品进行完工确认(也叫 报工确认);
一般情况下,可以通过事务码(T-Code)CO11 或 CO11N 进行确认。
对于一些零配件的生产时,往往需要确认大量的数量,因而有些用户就会有批量报工的需求。
批量报工可以通过两种方式实现:录制BDC 或者 Call 系统标准 BAPI。
1) 录制BDC这里就不讲述了,直接在CO11N上录屏即可;
2) Call 系统标准 BAPI:BAPI_PRODORDCONF_CREATE_TT.
在报工时,当涉及到 倒冲料扣料 的操作时,则需要 Call 两个BAPI来操作:
1. BAPI_PRODORDCONF_GET_TT_PROP 获取生产订单相关属性
2. BAPI_PRODORDCONF_CREATE_TT 报工确认
相关操作示例(包括倒冲料操作):
* 定义数据内表
DATA: gt_afko TYPE STANDARD TABLE OF afko. * Work Area 定义
DATA: gw_afko TYPE afko,
gw_afpo TYPE afpo,
gw_afvc TYPE afvc,
gw_afvv TYPE afvv. DATA: gv_index TYPE sy-tabix,
gv_result TYPE c. DATA:
*BAPI相关定义
propose LIKE bapi_pp_conf_prop,
timetickets LIKE bapi_pp_timeticket OCCURS WITH HEADER LINE,
goodsmovements LIKE bapi2017_gm_item_create OCCURS WITH HEADER LINE,
link_conf_goodsmov LIKE bapi_link_conf_goodsmov OCCURS WITH HEADER LINE,
return_detail LIKE bapi_coru_return OCCURS WITH HEADER LINE,
return LIKE bapiret1 OCCURS WITH HEADER LINE. CONSTANTS:
cn_flagx TYPE c VALUE 'X'. * Get Data...
* Header
CLEAR gt_afko[].
SELECT aufnr rsnum aufpl
INTO CORRESPONDING FIELDS OF TABLE gt_afko
FROM afko
WHERE aufnr IN so_aufnr "生产工单号
. * Data Proccess...
CLEAR gw_afko.
LOOP AT gt_afko INTO gw_afko. IF sy-subrc = . CLEAR gw_afvc.
SELECT SINGLE
aufpl "订单工序的工艺路线号
aplzl "订单的通用计数器
vornr "工序
plnfl "顺序
arbid
aplfl "序列(新) 有值
INTO CORRESPONDING FIELDS OF gw_afvc
FROM afvc
WHERE aufpl = gw_afko-aufpl. IF sy-subrc = . * 1.需要更新的数据设置
CLEAR propose.
propose-quantity = cn_flagx. "更新数量
propose-date_and_time = cn_flagx. "更新作业时间
propose-goodsmovement = cn_flagx. "更新货物移动 * 2.作业时间
CLEAR: timetickets,timetickets[].
timetickets-orderid = gw_print-aufnr. "工单号
timetickets-operation = gw_afvc-vornr. "工序号
timetickets-yield = gw_print-lmnga. "工单生产数量
timetickets-sequence = gw_afvc-aplfl. "
APPEND timetickets.
CLEAR timetickets. * 3.货物移动属性
* 第一次赋值,用于获取相关默认属性值
CLEAR: goodsmovements,goodsmovements[].
goodsmovements-orderid = gw_print-aufnr. "生产订单号
goodsmovements-order_itno = gw_afvc-vornr. "工序号
APPEND goodsmovements.
CLEAR goodsmovements. * 4.调用BAPI,获取默认属性值
CALL FUNCTION 'BAPI_PRODORDCONF_GET_TT_PROP'
EXPORTING
propose = propose
IMPORTING
return = return
TABLES
timetickets = timetickets
goodsmovements = goodsmovements
link_conf_goodsmov = link_conf_goodsmov
detail_return = return_detail. * 5.输出异常信息
IF return-type = 'E' OR return-type = 'A'. CONCATENATE '错误:' return-message INTO return-message.
gv_result = cn_flagx. ENDIF. LOOP AT return_detail WHERE type IS NOT INITIAL. IF return_detail-type = 'E' OR return_detail-type = 'A'. CONCATENATE '错误:' return_detail-message INTO return-message.
gv_result = cn_flagx. ENDIF. ENDLOOP. * 6. 如若需要更新相关信息,可在此修改
* -- 这里修改作业时间 --
IF gv_result NE cn_flagx. CLEAR gv_index.
LOOP AT timetickets. gv_index = sy-tabix. "索引
CLEAR gw_afvv.
SELECT SINGLE * FROM afvv
INTO CORRESPONDING FIELDS OF gw_afvv
WHERE aufpl = gw_afvc-aufpl
AND aplzl = gw_afvc-aplzl. IF sy-subrc = . IF NOT gw_afvv-bmsch = .
IF timetickets-conf_acti_unit1 NE 'S'.
timetickets-conf_activity1 = timetickets-yield * gw_afvv-vgw01 / gw_afvv-bmsch.
ELSE.
timetickets-conf_activity1 = timetickets-yield * gw_afvv-vgw01 DIV gw_afvv-bmsch.
ENDIF. IF timetickets-conf_acti_unit2 NE 'S'.
timetickets-conf_activity2 = timetickets-yield * gw_afvv-vgw02 / gw_afvv-bmsch.
ELSE.
timetickets-conf_activity2 = timetickets-yield * gw_afvv-vgw02 DIV gw_afvv-bmsch.
ENDIF. IF timetickets-conf_acti_unit3 NE 'S'.
timetickets-conf_activity3 = timetickets-yield * gw_afvv-vgw03 / gw_afvv-bmsch.
ELSE.
timetickets-conf_activity3 = timetickets-yield * gw_afvv-vgw03 DIV gw_afvv-bmsch.
ENDIF. IF timetickets-conf_acti_unit4 NE 'S'.
timetickets-conf_activity4 = timetickets-yield * gw_afvv-vgw04 / gw_afvv-bmsch.
ELSE.
timetickets-conf_activity4 = timetickets-yield * gw_afvv-vgw04 DIV gw_afvv-bmsch.
ENDIF. IF timetickets-conf_acti_unit5 NE 'S'.
timetickets-conf_activity5 = timetickets-yield * gw_afvv-vgw05 / gw_afvv-bmsch.
ELSE.
timetickets-conf_activity5 = timetickets-yield * gw_afvv-vgw05 DIV gw_afvv-bmsch.
ENDIF. IF timetickets-conf_acti_unit6 NE 'S'.
timetickets-conf_activity6 = timetickets-yield * gw_afvv-vgw06 / gw_afvv-bmsch.
ELSE.
timetickets-conf_activity6 = timetickets-yield * gw_afvv-vgw06 DIV gw_afvv-bmsch.
ENDIF. ENDIF. ENDIF. timetickets-yield = . "待确认的产量(用户输入确认值) IF gw_afvv IS NOT INITIAL. MODIFY timetickets INDEX gv_index TRANSPORTING yield
conf_activity1 conf_acti_unit1 conf_activity2 conf_acti_unit2
conf_activity3 conf_acti_unit3 conf_activity4 conf_acti_unit4
conf_activity5 conf_acti_unit5 conf_activity6 conf_acti_unit6. ELSE. MODIFY timetickets INDEX gv_index TRANSPORTING yield. ENDIF. CLEAR timetickets.
ENDLOOP. CLEAR gw_afvv.
ENDIF. * 7. 调用BAPI,报工确认
CLEAR: return, return[].
CLEAR: return_detail, return_detail[].
CALL FUNCTION 'BAPI_PRODORDCONF_CREATE_TT'
EXPORTING
post_wrong_entries = ''
testrun = '' "标识为 X,则为试运行 不提交至系统
IMPORTING
return = return
TABLES
timetickets = timetickets
goodsmovements = goodsmovements
link_conf_goodsmov = link_conf_goodsmov
detail_return = return_detail. CLEAR gv_result.
READ TABLE return WITH KEY type = 'E'.
IF sy-subrc = . CONCATENATE '错误:' return-message INTO return-message.
gv_result = cn_flagx. ENDIF.
LOOP AT return_detail WHERE type IS NOT INITIAL.
IF return_detail-type = 'E' OR return_detail-type = 'A'. CONCATENATE '错误:' return_detail-message INTO return-message.
gv_result = cn_flagx. ENDIF.
ENDLOOP. IF gv_result NE cn_flagx.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = cn_flagx.
ENDIF. ENDIF.
ENDIF. CLEAR gw_afko.
ENDLOOP.
【ABAP系列】SAP 生产订单完工确认(CO11N) BAPI : BAPI_PRODORDCONF_CREATE_TT的更多相关文章
- SAP生产订单状态
SAP系统的常见订单状态如下: · CRTD (创建):标识生产订单刚刚创建,此时禁止做后续发料和报工确认等操作: · PREL (部分下达):当生产订单部分下达时,如仅下 ...
- SAP 生产订单变更管理 OCM Order Changement Management
SAP OCM Order Changement Management 一.目的 订单变更管理系统是当我们的订单(生产订单.计划订单.采购订单)已经存在的时候,其物料主数据或销售数据有变更时,我们可 ...
- SAP生产订单各种日期的计算说明
生产订单各种日期的计算说明 基本日期.已计划的.确认的日期,介绍一下这些日期的作用和计算方法: 首先我们来介绍一下基本日期: 基本开始日期:表示订单的开始日期 基本完成日期:表示订单的完成日期 我们在 ...
- PP-判断生产订单状态(关闭)
方法一.工单号通过 resb找到对象号 然后找到状态为I0045利用表JEST与TJ02T . 方法二.函数'STATU_CHECK' 检查工单状态为'I0045' 则为已做技术性关闭. READ T ...
- 【ABAP系列】SAP 读取生产订单 记入文档的货物移动明细
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP 读取生产订单 记入文档的 ...
- 【ABAP系列】SAP 销售订单的行项目里条件的增强
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP 销售订单的行项目里条件的 ...
- 【ABAP系列】SAP VA02修改销售订单的BAPI举例
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP VA02修改销售订单的B ...
- SAP S/4HANA使用ABAP获得生产订单的状态
在S/4HANA里,我们如何根据一个销售订单的行项目,查看对应的生产订单状态? 双击行项目: 点击Schedule line: 这里就能看到生产订单的ID和状态了. 其中订单的状态存储在表vsaufk ...
- 【ABAP系列】SAP 关于出口(user-exit)MV50AFZ1的一些问题
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP 关于出口(user-ex ...
随机推荐
- Springboot 打jar包项目无法访问jsp问题解决方案
maven编译插件,请选择1.4.2.RELEASE版本,1.5.x的版本已经不再支持 pom.xml重要部分如下: <build> <resources> <resou ...
- iOS 设备尺寸以及图标尺寸
iPhone 4和iPod Touch 4有一个新的特性:在屏幕尺寸不变的前提下,分辨率提升一倍(320 x 480 => 640 x 960).苹果将这个特性命名为Retina. 用苹果的话讲 ...
- Python自动化学习--批量执行.py用例
这段时间在摸索自动化,学到执行测试用例的时候发现,执行单用例的时候很简单,如果想多条用例执行的话就没那么简单了,经过几番查找,找到如下方法: unittest模块中的TestLoader类有一个dis ...
- MacOS Mojave 安装sshpass
使用sshpass的场景 安装sshpass及各种常见小问题处理 测试 安全提示 使用sshpass的场景 在MacOS下使用ansible命令(inventory文件中使用了密码验证的方式)或者使用 ...
- 2019长安大学ACM校赛网络同步赛C LaTale (树上DP)
链接:https://ac.nowcoder.com/acm/contest/897/C来源:牛客网 LaTale 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 32768K,其他语 ...
- pycharm不支持svn,是需要svn命令行工具没有安装(for windows)
1. 安装svn命令行工具 Subversion for Windows下载https://sourceforge.net/projects/win32svn/?source=typ_redirect ...
- canvas合并两张图片
解析: 原理是一样的 画多张图需要一张一张画 也就是等图片onload成功后处理 这里代码写的比较随意 实际用的时候可以小粉转一下 也非常简单.我懒~~ 么么.. newImage(text) { / ...
- Apache+Mysql+PHP 套件
Apache+Mysql+PHP 套件 最近要装个Apache+Mysql+PHP的一个环境. google下后,发现现在的安装变得越来越简单了.不再需要麻烦的配置安装,只需简单执行个sh就搞定了 ...
- mysql CREATE TABLE语句 语法
mysql CREATE TABLE语句 语法 作用:创建数据库中的表. 大理石量具系列 语法:CREATE TABLE 表名称 (列名称1 数据类型,列名称2 数据类型,列名称3 数据类型,.... ...
- Codeforces 878A - Short Program(位运算)
原题链接:http://codeforces.com/problemset/problem/878/A 题意:给出n个位运算操作, 化简这些操作, 使化简后的操作次数不多于5步. 思路:我们可以对二进 ...