IW22 BADI:NOTIF_EVENT_SAVE 报Message的问题
来源:互联网 发布:cn域名需要备案吗 编辑:程序博客网 时间:2024/06/05 11:10
ProblemDescription
1. 我对BADI: NOTIF_EVENT_SAVE建了一个implementation Z_SAM_TEST.
2. 且看我的代码, 这里清楚看到, message 的类型是’E’.
3. 当我运行TCODE IW22时, 把Description填成 ’222222’ , 然后按save, 居然出了个information message.
Problem resolution
问题1:为什么会报成Information message?
1. 我们debug一下这个method, 在图中所示那行按F5.
2. Message 命令会跑SET_MSG_VARS_FOR_CLIKE这个method,在图中所示那行打个断点,按F8跑到该行, 然后按F5.
3. 在这一步还是按F5
4. 现在在screen 7200, 再按F5.
5. 程序走到了图中的那行, 图中的EXCEPTIONS是FM: IQS1_BADI_AT_SAVE, 当调用FM时列出EXCEPTIONS ERROR_MESSAGE(默认exception, 不定义也可以使用), 它里面的message就不会直接报出来, 而是当成EXCEPTIONS抛出来, 这时SY-SUBRC = 3.
6.在图中这一行, 程序把message 的类型改成 ’I’ 了
7. 最后message在这里报出, 且看abap stack的调用关系.
问题2: 关于EXCEPTIONS ERROR_MESSAGE的测试.
例1
1. 建了FM: Z_ZERO_CHAR, EXCEPTION里加一条ERROR_MESSAGE(后来发现不定义exception ERROR_MESSAGE也是可以使用的)
2. 在FM里报一条MESSAGE, 它不会把message 报出来, 而是RAISING EXCEPTION ERROR_MESSAGE.
3. 写个Report来Call 这个FM: Z_ZERO_CHAR.
4. 这样Message会报成’I’ 型
例2
1. 把例1的FM里面的代码改下
2. 在类Z_ZERO_TEST里报一条MESSAGE
3. 运行REPORT Z_ZERO_TEST_CLASS, ERROR MESSAGE还是没报出来,这里的message不是直接在FM里报的, 而是在更底层的一个类的方法里报的,类似IW22的BADI NOTIF_EVENT_SAVE的情况.
P.S
我尝试在类的method里定义EXCEPTION ERROR_MESSAGE, 报错了…
问题3: 怎么让BADI:NOTIF_EVENT_SAVE 报ERROR MESSAGE?
方法1
1. 我们可以看到, 这个method 有个exception WRONG_INPUT, 根据description,估计只要抛出这个exception就会报错
2. 把message修改下, 加上raising WRONG_INPUT.
3.我们测试下效果, 最终exception WRONG _INPUT 在FM IQS1_BADI_AT_SAVE被捕获, SY-SUBRC = 1.
4. 我们看看error handling的代码 , 这里直接把message类型保存起来, 所以message的类型是’E’.
5. 最后message在这里报出来
6. 我们看看报出message的效果
方法2(麻烦方法, 没必要用)
1. 在BADI里定义一个flag, 把flag传到memory id里.
2. 在program LIQS1F10 里的form MSG_STORE_WITH_4P里做个隐式增强, 当然还有其他增强点也可以实现.
3.看看效果, 先设个断点
4. 这里把message类型强制改成’E’.
- IW22 BADI:NOTIF_EVENT_SAVE 报Message的问题
- 在badi中按照正常的message x…
- Standard BADI definition的修改问题
- SAP BADI的实现1-构建BADI
- SAP BADI的实现2-实现BADI
- 解决JMail发送邮件报错The message was undeliverable. All servers failed to receive the message的问题
- SD相关的BADI
- SD相关的BADI
- SD相关的BADI
- BADI 的应用...
- 查找BADI的方法
- 查找BADI的方法
- BADI的实现步骤
- BADI的实现
- 关于BAdi的总结
- 查找BADI的方法
- jenkins使用publishover ssh插件连接应用机器时,报Message [Auth fail]的问题
- BAdI:ME_PROCESS_REQ_CUST弹出消息问题
- Linux下消息队列小例子
- 位图的光栅操作
- 画笔的光栅操作
- VC++之图形设备接口------基本概念
- PHP导出MySQL数据到Excel文件
- IW22 BADI:NOTIF_EVENT_SAVE 报Message的问题
- Oracle 11g 新特性之 Oracle Restart Database 的安装与配置完全详解
- Cloud Foundry Service Node源码分析及实现【附下载】
- 规划(2013.1。10)
- poj1125--Stockbroker Grapevine--Floyd算法
- 《卓有成效的管理者》笔记,第二章 掌握自己的时间
- 再论javaIO之拷贝MP3(read方法返回int的原因)
- Java--------数组
- Windows Embedded Compact 7中的内存管理(上)