CO11N报工使用BAPI_PRODORDCONF_CREATE_TT时无法返回配置错误消息CK466

本文主要是介绍CO11N报工使用BAPI_PRODORDCONF_CREATE_TT时无法返回配置错误消息CK466,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前些天碰到一个问题,CO11N前台报工时,会触发一个配置E类型的消息CK466,但是在调用BAPI_PRODORDCONF_CREATE_TT时,该消息并不会返回,而是返回S类型消息。

错误重现:

1.kp26取消维护变动价格

2.SM30及SE16N将对应的错误消息类型更改为E

 视图:V_TCMF9

 表:TCMFA

 此时前台执行CO11N就会触发CK466的报错,经过代码追踪,发现问题所在:

Form det_conf_cost中,其实会捕获到配置的E类型消息,但是只会当以下三种情况时才会捕获错误消息且终止报工。

1.前台处理时:

2.后台处理时:

 3.当订单类型是网络订单时:

除此以外的情况,都不会打上取消标记并下入下面的错误处理逻辑:

所以问题就在于让BAPI调用时也能够将错误消息收集起来,经过对源码进一步分析,错误最终会返回在内表 t_cost_cmfnr 中,只需要找到合适的增强点,调用上述处理函数CM_F_MESSAGES_GET并触发异常no_costing,即可将配置出来的错误消息返回给BAPI的return参数。

解决方案:重写系统预留增强选项。

ENHANCEMENT 1  ZE_PRODCONF_CATCH_ERR.    "active version
* >>> Operation Account Assignment
* In the case of OLC PM/CS order need to initialize and then free
* a buffer for the order operations in the pmco_op update.
* This is due to performance issues when confirming mass operations
* especially during CAT9 transfer.IF cl_erp_co_olc_tools=>is_olc_relevant( caufvd-netzkont ) = abap_true ANDcaufvd-autyp = auftragstyp-inst.CALL FUNCTION 'PMCO_OPS_BUFFER_INIT'.PERFORM det_conf_cost USING caufvd.CALL FUNCTION 'PMCO_OPS_BUFFER_FREE'.ELSE.PERFORM det_conf_cost USING caufvd.ENDIF.*   Catch cost error for BAPI BAPI_PRODORDCONF_CREATE_TTIF flg_bapi = abap_true.READ TABLE t_cost_cmfnr INTO DATA(ls_cost_cmfnr)WITH KEY msgty = 'E'.IF sy-subrc = 0.ROLLBACK WORK.DATA lt_cmfmsg TYPE STANDARD TABLE OF cmfmsg.MOVE-CORRESPONDING t_cost_cmfnr[] TO lt_cmfmsg.*       Bei Storno Fehlermeldung aus CO anzeigenCALL FUNCTION 'CM_F_MESSAGES_GET'EXPORTINGaplid                  = aplid_ppruTABLESe_msgprot              = lt_cmfmsgEXCEPTIONSnot_active             = 1OTHERS                 = 2.IF sy-subrc IS INITIAL.
*         Erste Fehlermeldung ausgebenREAD TABLE lt_cmfmsg INTO DATA(ls_cmfmsg)WITH KEY msgty = message_type-error.MESSAGE ID ls_cmfmsg-arbgb TYPE message_type-errorNUMBER ls_cmfmsg-msgnr WITH ls_cmfmsg-msgv1ls_cmfmsg-msgv2 ls_cmfmsg-msgv3 ls_cmfmsg-msgv4RAISING no_costing.ENDIF.IF caufvd-autyp NE auftragstyp-netw.MESSAGE a085 WITH caufvd-aufnr RAISING no_costing.ELSE.MESSAGE a087 WITH caufvd-aufnr RAISING no_costing.ENDIF.ENDIF.ENDIF.
* <<< Operation Account Assignment
ENDENHANCEMENT.

 代码测试:

REPORT ztest_13065_co11n.DATA:ls_propose            TYPE bapi_pp_conf_prop,lt_timetickets        TYPE STANDARD TABLE OF bapi_pp_timeticket,ls_timetickets        TYPE bapi_pp_timeticket,lt_goodsmovements     TYPE STANDARD TABLE OF bapi2017_gm_item_create,ls_goodsmovements     TYPE bapi2017_gm_item_create,lt_link_conf_goodsmov TYPE STANDARD TABLE OF bapi_link_conf_goodsmov,lt_return             TYPE STANDARD TABLE OF bapi_coru_return,ls_return             TYPE bapiret1.ls_propose-quantity      = 'X'.
ls_propose-activity      = 'X'.
ls_propose-date_and_time = 'X'.
ls_propose-goodsmovement = 'X'.ls_timetickets-orderid   = '000001001322'.
ls_timetickets-operation = '0010'.
APPEND ls_timetickets TO lt_timetickets.ls_goodsmovements-orderid    = '000001001322'.
ls_goodsmovements-order_itno = '0010'.
APPEND ls_goodsmovements TO lt_goodsmovements.CALL FUNCTION 'BAPI_PRODORDCONF_GET_TT_PROP'EXPORTINGpropose            = ls_proposeIMPORTINGreturn             = ls_returnTABLEStimetickets        = lt_timeticketsgoodsmovements     = lt_goodsmovementslink_conf_goodsmov = lt_link_conf_goodsmov
*   DETAIL_RETURN      =
*   FSH_BUNDLES        =.CALL FUNCTION 'BAPI_PRODORDCONF_CREATE_TT'EXPORTINGpost_wrong_entries    = '2'
*   testrun               = 'X'
*    call_on_inbound_queue = 'A'IMPORTINGreturn                = ls_returnTABLEStimetickets           = lt_timeticketsgoodsmovements        = lt_goodsmovementslink_conf_goodsmov    = lt_link_conf_goodsmov
*   CHARACTERISTICS_WIPBATCH       =
*   LINK_CONF_CHAR_WIPBATCH        =detail_return         = lt_return
*   CHARACTERISTICS_BATCH =
*   LINK_GM_CHAR_BATCH    =.cl_demo_output=>new( )->begin_section( 'ls_return' )->write_data( ls_return)->begin_section( 'lt_return' )->write_data( lt_return)->display( ).

BAPI返回结果:

同理应该可以解决类似情况的相同问题,以上。

这篇关于CO11N报工使用BAPI_PRODORDCONF_CREATE_TT时无法返回配置错误消息CK466的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/312169

相关文章

Zookeeper安装和配置说明

一、Zookeeper的搭建方式 Zookeeper安装方式有三种,单机模式和集群模式以及伪集群模式。 ■ 单机模式:Zookeeper只运行在一台服务器上,适合测试环境; ■ 伪集群模式:就是在一台物理机上运行多个Zookeeper 实例; ■ 集群模式:Zookeeper运行于一个集群上,适合生产环境,这个计算机集群被称为一个“集合体”(ensemble) Zookeeper通过复制来实现

CentOS7安装配置mysql5.7 tar免安装版

一、CentOS7.4系统自带mariadb # 查看系统自带的Mariadb[root@localhost~]# rpm -qa|grep mariadbmariadb-libs-5.5.44-2.el7.centos.x86_64# 卸载系统自带的Mariadb[root@localhost ~]# rpm -e --nodeps mariadb-libs-5.5.44-2.el7

中文分词jieba库的使用与实景应用(一)

知识星球:https://articles.zsxq.com/id_fxvgc803qmr2.html 目录 一.定义: 精确模式(默认模式): 全模式: 搜索引擎模式: paddle 模式(基于深度学习的分词模式): 二 自定义词典 三.文本解析   调整词出现的频率 四. 关键词提取 A. 基于TF-IDF算法的关键词提取 B. 基于TextRank算法的关键词提取

使用SecondaryNameNode恢复NameNode的数据

1)需求: NameNode进程挂了并且存储的数据也丢失了,如何恢复NameNode 此种方式恢复的数据可能存在小部分数据的丢失。 2)故障模拟 (1)kill -9 NameNode进程 [lytfly@hadoop102 current]$ kill -9 19886 (2)删除NameNode存储的数据(/opt/module/hadoop-3.1.4/data/tmp/dfs/na

hadoop开启回收站配置

开启回收站功能,可以将删除的文件在不超时的情况下,恢复原数据,起到防止误删除、备份等作用。 开启回收站功能参数说明 (1)默认值fs.trash.interval = 0,0表示禁用回收站;其他值表示设置文件的存活时间。 (2)默认值fs.trash.checkpoint.interval = 0,检查回收站的间隔时间。如果该值为0,则该值设置和fs.trash.interval的参数值相等。

NameNode内存生产配置

Hadoop2.x 系列,配置 NameNode 内存 NameNode 内存默认 2000m ,如果服务器内存 4G , NameNode 内存可以配置 3g 。在 hadoop-env.sh 文件中配置如下。 HADOOP_NAMENODE_OPTS=-Xmx3072m Hadoop3.x 系列,配置 Nam

Hadoop数据压缩使用介绍

一、压缩原则 (1)运算密集型的Job,少用压缩 (2)IO密集型的Job,多用压缩 二、压缩算法比较 三、压缩位置选择 四、压缩参数配置 1)为了支持多种压缩/解压缩算法,Hadoop引入了编码/解码器 2)要在Hadoop中启用压缩,可以配置如下参数

Makefile简明使用教程

文章目录 规则makefile文件的基本语法:加在命令前的特殊符号:.PHONY伪目标: Makefilev1 直观写法v2 加上中间过程v3 伪目标v4 变量 make 选项-f-n-C Make 是一种流行的构建工具,常用于将源代码转换成可执行文件或者其他形式的输出文件(如库文件、文档等)。Make 可以自动化地执行编译、链接等一系列操作。 规则 makefile文件

使用opencv优化图片(画面变清晰)

文章目录 需求影响照片清晰度的因素 实现降噪测试代码 锐化空间锐化Unsharp Masking频率域锐化对比测试 对比度增强常用算法对比测试 需求 对图像进行优化,使其看起来更清晰,同时保持尺寸不变,通常涉及到图像处理技术如锐化、降噪、对比度增强等 影响照片清晰度的因素 影响照片清晰度的因素有很多,主要可以从以下几个方面来分析 1. 拍摄设备 相机传感器:相机传

wolfSSL参数设置或配置项解释

1. wolfCrypt Only 解释:wolfCrypt是一个开源的、轻量级的、可移植的加密库,支持多种加密算法和协议。选择“wolfCrypt Only”意味着系统或应用将仅使用wolfCrypt库进行加密操作,而不依赖其他加密库。 2. DTLS Support 解释:DTLS(Datagram Transport Layer Security)是一种基于UDP的安全协议,提供类似于