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相关推荐

  1. 根据ABAP BAdI definition名称找到SPRO里配置路径的办法

    假设BAdI名称为CRM_PRODIL_ADD_DATA,我想知道SPRO里什么路径可以基于该BAdI实现增强. SE18里BAdI definition的Where-Used List不支持搜索Cu ...

  2. 在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 ...

  3. Action framework - Table PPFTTRIGG

    Created by Jerry Wang, last modified on May 01, 2014 每次在UI上修改并保存order从而 trigger 了action framework的某个 ...

  4. JVAV组件--系统框架--JIDE Action Framework

    产品介绍 [ ] 几乎所有的应用都需要工具条和菜单栏.JIDE Action Framework和这些组件都是有关的.它提供了一个更加完善的组件,即CommandBar,它可以代替JToolBar和J ...

  5. 使用action framework 实现order change时自动发送邮件

    Created by Jerry Wang, last modified on May 01, 2014 具体说明可以参考这个blog SPRO: CRM->Transaction->Ba ...

  6. Action Framework Medium attribute 初始化逻辑

    Created by Jerry Wang, last modified on May 05, 2014 在debugger里观察trigger instance里的attribute MEDIUM类 ...

  7. Action Framework- Table PPFSFMLRU

    Created by Jerry Wang, last modified on Apr 30, 2014 每次成功通过action framework往指定的邮箱发送了包含smart form生成的P ...

  8. Action profile: ZAVADDR和ZAVPERS

    Created by Jerry Wang, last modified on Apr 30, 2014 在table PPFTSFMLRU里除了email address外,还有两个field ZA ...

  9. SAP ABAP实用技巧介绍系列之could not create BAdI implementation

    Created by Jerry Wang, last modified on Apr 03, 2014 当试图为一个mark成SAP internal use的BAdI definition创建一个 ...

最新文章

  1. SQLite中的SELECT子句使用别名
  2. volatile怎么实现的内存可见?附面试题答案
  3. 转:jQ函数after、append、appendTo的区别
  4. OpenSceneGraph学习笔记
  5. [javaweb] servlet 服务器端转发和客户端重定向 (四)
  6. python实现排序算法_python实现各种排序算法
  7. 一招上手!这样设计扛住亿级流量活动系统
  8. Flexsim在固定资源类中没有分拣传送带?
  9. laravel 框架使用hdjs 实现多图上传功能
  10. pacman+s+java_ArchLinux pacman安装openjdk
  11. 花一样的数据可视化分析工具汇总,你选谁
  12. 在linux中使用vi 打开文件时,能显示行号
  13. GB2312转UTF8编码表
  14. leetcode 1737. 满足三条件之一需改变的最少字符数
  15. [教学管理] 学生作业及日志查收的纯MySQL解决方案
  16. 如何使用Jmail收发邮件
  17. linux neo4j 教程,Neo4j 入门教程 - 安装
  18. java浮动广告_[Java教程]JavaScript制作浮动广告_星空网
  19. task host window任务宿主阻止关机解决方法
  20. ZZULIOJ 1675 E:YJJ的福利

热门文章

  1. js 的 math 函数
  2. Sonar 质量扫描的输出日志--对应源码的跟踪(二){sonar engine源码}
  3. 文献记录(part83)--Building outlier detection ensembles by selective parameterization of ...
  4. sklearn自学指南(part43)--数据加载工具
  5. 《犯罪心理学》读书笔记(part7)--犯罪心理的主观差异(中上)
  6. 《计量经济学》学习笔记之放宽基本假定的模型
  7. 电离辐射防护与辐射源安全基本标准_漳武南靖段A1项目成功举办桥面系 安全防护标准化观摩会...
  8. 实战分享|数据驱动「付费转化」的3个思路
  9. 如何自行找出 SAP Spartacus 查询用户信息的 API Service 类
  10. Flex布局里的align-self属性