没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
出口函数EXIT_SAPLCOBT_001最大的好处就是TABLES参数中对AFKO、AFPO、AFVV、AFVC、RESB等主要的订单相关表都有记录,并且基本都有带_OLD后缀的表,记录的是修改前的值,一新一旧,用于比较太合适了!另外,在新表中(不带OLD)都有一个字段VBKZ,通过它可以判断记录是否修改过,是哪种修改(U-修改、I-插入、D-删除)?
资源推荐
资源详情
资源评论
SAP 记录 CO02 生产订单修改日志的增强(非常详细)
1、增强出口:
Exit name: PPCO0001(开发应用程序: PP 订单)
Exit function:EXIT_SAPLCOBT_001
2、双击出口函数 EXIT_SAPLCOBT_001 中的 INCLUDE 程序名:ZXCO1U01,写入增强的代码,源码如下(记得都要激活哦):
*&---------------------------------------------------------------------*
*& 包括 ZXCO1U01 *
*&---------------------------------------------------------------------*
*++++++++++++++++++++++++++++++++++++++++++++++
* 增强1:记录修改生产订单中关键字段的日志
*++++++++++++++++++++++++++++++++++++++++++++++
*========================================
* 当为生产订单时才继续执行
*========================================
CHECK HEADER_TABLE-AUTYP = '10'. "订单类别:10-PP生产订单
*========================================
* 当不是创建时才继续执行
*========================================
CHECK HEADER_TABLE-VBKZ <> 'I'. "抬头更新标识:I-新增
*---------------
* 数据定义
*---------------
DATA: IT_LOG LIKE ZCO02_LOG_TABLE OCCURS 0 WITH HEADER LINE. "日志内表
DATA: IPX LIKE MSXXLIST-HOSTADR, "IP地址(16进制)
IP(15) TYPE C, "IP地址(10进制字符串)
HOST(20) TYPE C. "主机名
DATA: VI_OPNUM(5) TYPE N, "流水码变量
VS_STR TYPE STRING. "字符串变量
DATA: V_ARBPL_OLD LIKE CRHD-ARBPL, "工作中心(旧值)
V_ARBPL_NEW LIKE CRHD-ARBPL. "工作中心(新值)
*========================================
* 定义去除字符串中小数点后无用的0
*(只适用于带小数点的数字字符串)
*========================================
DEFINE DEL_ZERO_R.
SHIFT &1 RIGHT DELETING TRAILING '0 '. "去掉末尾0
SHIFT &1 RIGHT DELETING TRAILING '. '. "若小数位全是0,则去掉小数点,只保存整数位
CONDENSE &1 NO-GAPS.
END-OF-DEFINITION.
*========================================
* 定义记录修改的宏(对单行表)
*========================================
DEFINE ULOG_LINE.
* ---------------------------------------------------
* &1:记录新值的表名称
* &2:记录旧值的表名称与新表的差异部分(通常为OLD)
* &3:比较的字段名称
* &4:操作对象类型
* &5:操作对象描述
* ---------------------------------------------------
IF &1-&3 <> &1_&2-&3.
VI_OPNUM = VI_OPNUM + 1. "记录本次操作的流水编码(自增1)
IT_LOG-OPNUM = VI_OPNUM. "记录本次操作的流水编码
IT_LOG-OPTYP = 'U'. "操作类型:U-更新
IT_LOG-OBJTP = '&4'. "操作对象类型(抬头、组件、工艺等)
IT_LOG-OBJNM = '&5'. "操作对象描述
IT_LOG-VLOLD = &1_&2-&3. "操作对象的旧值
IT_LOG-VLNEW = &1-&3. "操作对象的新值
APPEND IT_LOG. "追加记录
CLEAR IT_LOG.
ENDIF.
END-OF-DEFINITION.
*===========================================
* 定义记录修改的宏(对多行表,需要记录行号)
*===========================================
DEFINE ULOG_ITAB.
* ---------------------------------------------------
* &1:记录新值的内表名称
* &2:记录旧值的内表名称与新表的差异部分(通常为OLD)
* &3:比较的字段名称
* &4:操作对象类型
* &5:操作对象描述
* &6:操作对象唯一行标记描述
* &7:操作对象唯一行标记字段名
* &8:操作对象辅助行标记描述
* &9:操作对象辅助行标记字段名
* ---------------------------------------------------
IF &1-&3 <> &1_&2-&3.
VI_OPNUM = VI_OPNUM + 1. "记录本次操作的流水编码(自增1)
IT_LOG-OPNUM = VI_OPNUM. "记录本次操作的流水编码
IT_LOG-OPTYP = 'U'. "操作类型:U-更新
IT_LOG-OBJTP = '&4'. "操作对象类型(抬头、组件、工艺等)
IT_LOG-OBJNM = '&5'. "操作对象描述
* -------------------------------------------
* 操作对象唯一行标记,例如:预留项目号(1)
* 唯一行标记一般前台不可见,但唯一且不可更改
* -------------------------------------------
IT_LOG-OBJLU = &1-&7. "操作对象唯一行标记的值(例如:0001)
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
EXPORTING
INPUT = IT_LOG-OBJLU
IMPORTING
OUTPUT = IT_LOG-OBJLU. "去除前置0
CONCATENATE '&6' '(' IT_LOG-OBJLU ')' INTO IT_LOG-OBJLU. "拼写描述
* -------------------------------------------
* 操作对象辅助行标记,例如:BOM项目号(0010)
* 辅助行标记一般不唯一或可修改,但最常用
* -------------------------------------------
IT_LOG-OBJLA = &1-&9. "操作对象辅助行标记的值(例如:0010)
CONCATENATE '&8' '(' IT_LOG-OBJLA ')' INTO IT_LOG-OBJLA. "拼写描述
IT_LOG-VLOLD = &1_&2-&3. "操作对象的旧值
IT_LOG-VLNEW = &1-&3. "操作对象的新值
APPEND IT_LOG. "追加记录
CLEAR IT_LOG.
ENDIF.
剩余23页未读,继续阅读
资源评论
- SAP顾问+ABAP开发2022-12-07#符合预期还是可以的,具有参考意义。
vigour
- 粉丝: 3
- 资源: 12
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功