Action framework BAdI Definition TRIGGER_EXECUTED
Created by Jerry Wang, last modified on May 28, 2014
可以基于该BAdI definition创建implementation来实现一些自定义逻辑:
指定filter的application name为CRM_ORDER, 激活BAdI implementation:
在BAdI implementation的实现里会记录当前action framework处理的transaction ID和type,新建如下的message class并维护下列message 信息:
在UI上修改order status触发action framework 操作之后,使用tcode SLG1查看 BAdI implementation里记录的application log是否成功保存:
CLASS zcl_im__order_action_log DEFINITION
PUBLIC
FINAL
CREATE PUBLIC .
PUBLIC SECTION.
INTERFACES if_ex_trigger_executed .
PROTECTED SECTION.
PRIVATE SECTION.
DATA mv_log_handle TYPE balloghndl .
METHODS init_log .
METHODS add_log
IMPORTING
!iv_object_id TYPE crmd_orderadm_h-object_id
!iv_obj_type TYPE swo_objtyp .
METHODS save_log .
ENDCLASS.
CLASS ZCL_IM__ORDER_ACTION_LOG IMPLEMENTATION.
* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Instance Private Method ZCL_IM__ORDER_ACTION_LOG->ADD_LOG
* +-------------------------------------------------------------------------------------------------+
* | [--->] IV_OBJECT_ID TYPE CRMD_ORDERADM_H-OBJECT_ID
* | [--->] IV_OBJ_TYPE TYPE SWO_OBJTYP
* +--------------------------------------------------------------------------------------</SIGNATURE>
METHOD add_log.
DATA:
lv_log TYPE bal_s_msg,
lv_timestamp TYPE timestampl.
lv_log-msgid = 'ZCM_JERRY_TEST'.
lv_log-msgno = '002'.
lv_log-msgty = 'I'.
lv_log-msgv1 = iv_object_id.
lv_log-msgv2 = iv_obj_type.
GET TIME STAMP FIELD lv_timestamp.
lv_log-time_stmp = lv_timestamp.
CALL FUNCTION 'BAL_LOG_MSG_ADD'
EXPORTING
i_log_handle = mv_log_handle
i_s_msg = lv_log
EXCEPTIONS
log_not_found = 1
OTHERS = 2.
IF sy-subrc <> 0.
RAISE EXCEPTION TYPE cx_fatal_exception.
ENDIF.
ENDMETHOD.
* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Instance Public Method ZCL_IM__ORDER_ACTION_LOG->IF_EX_TRIGGER_EXECUTED~TRIGGER_EXECUTED
* +-------------------------------------------------------------------------------------------------+
* | [--->] FLT_VAL TYPE PPFDAPPL
* | [--->] IO_TRIGGER TYPE REF TO CL_TRIGGER_PPF
* +--------------------------------------------------------------------------------------</SIGNATURE>
METHOD if_ex_trigger_executed~trigger_executed.
DATA:
lv_ppfdtt TYPE ppfdtt,
lv_object TYPE REF TO object,
lv_context TYPE REF TO cl_doc_context_crm_order,
lv_object_guid TYPE crmt_object_guid,
lv_header_guid TYPE crmt_object_guid,
lv_object_kind TYPE crmt_object_kind,
lv_appl_object TYPE REF TO cl_doc_crm_order,
lv_object_id TYPE crmd_orderadm_h-object_id,
lv_header_object_type TYPE swo_objtyp.
CONSTANTS:
lc_ppfdappl TYPE ppfdappl VALUE 'CRM_ORDER'.
INCLUDE crm_object_types_con.
INCLUDE crm_object_kinds_con.
INCLUDE crm_objectservices_con.
CHECK sy-uname = 'WANGJER'.
CHECK flt_val EQ lc_ppfdappl .
CALL METHOD io_trigger->get_appl
RECEIVING
result = lv_object.
lv_appl_object ?= lv_object .
CALL METHOD lv_appl_object->get_crm_obj_guid
RECEIVING
result = lv_object_guid.
CALL METHOD lv_appl_object->get_crm_obj_kind
RECEIVING
result = lv_object_kind.
IF lv_object_kind EQ gc_object_kind-orderadm_h .
MOVE lv_object_guid TO lv_header_guid .
ELSE.
CALL FUNCTION 'CRM_ORDERADM_I_READ_OW'
EXPORTING
iv_guid = lv_object_guid
IMPORTING
ev_header_guid = lv_header_guid
EXCEPTIONS
item_not_found = 1
OTHERS = 2.
IF sy-subrc <> 0.
EXIT.
ENDIF.
ENDIF.
CALL FUNCTION 'CRM_ORDERADM_H_READ_OW'
EXPORTING
iv_orderadm_h_guid = lv_header_guid
IMPORTING
ev_object_type = lv_header_object_type
EXCEPTIONS
admin_header_not_found = 1
OTHERS = 2.
IF sy-subrc <> 0.
EXIT.
ENDIF.
SELECT SINGLE object_id FROM crmd_orderadm_h INTO lv_object_id WHERE guid = lv_header_guid.
init_log( ).
add_log( iv_object_id = lv_object_id iv_obj_type = lv_header_object_type ).
save_log( ).
ENDMETHOD.
* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Instance Public Method ZCL_IM__ORDER_ACTION_LOG->IF_EX_TRIGGER_EXECUTED~TRIGGER_EXECUTED_IN_REPORT
* +-------------------------------------------------------------------------------------------------+
* | [--->] FLT_VAL TYPE PPFDAPPL
* | [--->] IO_TRIGGER TYPE REF TO CL_TRIGGER_PPF
* +--------------------------------------------------------------------------------------</SIGNATURE>
METHOD if_ex_trigger_executed~trigger_executed_in_report.
ENDMETHOD.
* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Instance Private Method ZCL_IM__ORDER_ACTION_LOG->INIT_LOG
* +-------------------------------------------------------------------------------------------------+
* +--------------------------------------------------------------------------------------</SIGNATURE>
METHOD init_log.
DATA: ls_log_header TYPE bal_s_log.
ls_log_header-object = 'PPF'.
ls_log_header-subobject = 'PROCESSING'.
CALL FUNCTION 'BAL_LOG_CREATE'
EXPORTING
i_s_log = ls_log_header
IMPORTING
e_log_handle = mv_log_handle
EXCEPTIONS
log_header_inconsistent = 1
OTHERS = 2.
IF sy-subrc <> 0.
RAISE EXCEPTION TYPE cx_fatal_exception.
ENDIF.
ENDMETHOD.
* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Instance Private Method ZCL_IM__ORDER_ACTION_LOG->SAVE_LOG
* +-------------------------------------------------------------------------------------------------+
* +--------------------------------------------------------------------------------------</SIGNATURE>
METHOD save_log.
DATA: lt_log_handle TYPE bal_t_logh.
APPEND mv_log_handle TO lt_log_handle.
CLEAR mv_log_handle.
CALL FUNCTION 'BAL_DB_SAVE'
EXPORTING
i_t_log_handle = lt_log_handle
EXCEPTIONS
log_not_found = 1
save_not_allowed = 2
numbering_error = 3
OTHERS = 4.
IF sy-subrc <> 0.
RAISE EXCEPTION TYPE cx_fatal_exception.
ENDIF.
ENDMETHOD.
ENDCLASS.
Action framework BAdI Definition TRIGGER_EXECUTED相关推荐
- 根据ABAP BAdI definition名称找到SPRO里配置路径的办法
假设BAdI名称为CRM_PRODIL_ADD_DATA,我想知道SPRO里什么路径可以基于该BAdI实现增强. SE18里BAdI definition的Where-Used List不支持搜索Cu ...
- 在BAdI definition PRODUCT_R3_ADAPTER的implementation里获得download type
Created by Jerry Wang, last modified on Apr 25, 2014 CRM端download type I( Initial download ), D ( de ...
- Action framework - Table PPFTTRIGG
Created by Jerry Wang, last modified on May 01, 2014 每次在UI上修改并保存order从而 trigger 了action framework的某个 ...
- JVAV组件--系统框架--JIDE Action Framework
产品介绍 [ ] 几乎所有的应用都需要工具条和菜单栏.JIDE Action Framework和这些组件都是有关的.它提供了一个更加完善的组件,即CommandBar,它可以代替JToolBar和J ...
- 使用action framework 实现order change时自动发送邮件
Created by Jerry Wang, last modified on May 01, 2014 具体说明可以参考这个blog SPRO: CRM->Transaction->Ba ...
- Action Framework Medium attribute 初始化逻辑
Created by Jerry Wang, last modified on May 05, 2014 在debugger里观察trigger instance里的attribute MEDIUM类 ...
- Action Framework- Table PPFSFMLRU
Created by Jerry Wang, last modified on Apr 30, 2014 每次成功通过action framework往指定的邮箱发送了包含smart form生成的P ...
- Action profile: ZAVADDR和ZAVPERS
Created by Jerry Wang, last modified on Apr 30, 2014 在table PPFTSFMLRU里除了email address外,还有两个field ZA ...
- SAP ABAP实用技巧介绍系列之could not create BAdI implementation
Created by Jerry Wang, last modified on Apr 03, 2014 当试图为一个mark成SAP internal use的BAdI definition创建一个 ...
最新文章
- SQLite中的SELECT子句使用别名
- volatile怎么实现的内存可见?附面试题答案
- 转:jQ函数after、append、appendTo的区别
- OpenSceneGraph学习笔记
- [javaweb] servlet 服务器端转发和客户端重定向 (四)
- python实现排序算法_python实现各种排序算法
- 一招上手!这样设计扛住亿级流量活动系统
- Flexsim在固定资源类中没有分拣传送带?
- laravel 框架使用hdjs 实现多图上传功能
- pacman+s+java_ArchLinux pacman安装openjdk
- 花一样的数据可视化分析工具汇总,你选谁
- 在linux中使用vi 打开文件时,能显示行号
- GB2312转UTF8编码表
- leetcode 1737. 满足三条件之一需改变的最少字符数
- [教学管理] 学生作业及日志查收的纯MySQL解决方案
- 如何使用Jmail收发邮件
- linux neo4j 教程,Neo4j 入门教程 - 安装
- java浮动广告_[Java教程]JavaScript制作浮动广告_星空网
- task host window任务宿主阻止关机解决方法
- ZZULIOJ 1675 E:YJJ的福利
热门文章
- js 的 math 函数
- Sonar 质量扫描的输出日志--对应源码的跟踪(二){sonar engine源码}
- 文献记录(part83)--Building outlier detection ensembles by selective parameterization of ...
- sklearn自学指南(part43)--数据加载工具
- 《犯罪心理学》读书笔记(part7)--犯罪心理的主观差异(中上)
- 《计量经济学》学习笔记之放宽基本假定的模型
- 电离辐射防护与辐射源安全基本标准_漳武南靖段A1项目成功举办桥面系 安全防护标准化观摩会...
- 实战分享|数据驱动「付费转化」的3个思路
- 如何自行找出 SAP Spartacus 查询用户信息的 API Service 类
- Flex布局里的align-self属性