SAP CRM OneOrder Badi 汇总(持续更新)
来源:互联网 发布:网络测线器 编辑:程序博客网 时间:2024/06/02 07:10
CRM_BADI_RF_Q1O_SEARCH
增强OneOrder标准搜索界面,增加搜索条件自定义字段,自定义搜索逻辑,搜索结果内容等。
过滤器:搜索对象 例如OBJ_IL = BTQSLSORD (销售订单)
代码示例: 在搜索销售订单界面增加“创建日期”的搜索METHOD if_crm_rf_q1o_search~search.DATA(lt_multivalues) = it_multivalues.READ TABLE lt_multivalues INTO DATA(lw_multivalues) WITH KEY fieldname = 'ZZCREATE_DATE_S'.IF sy-subrc EQ 0. DELETE TABLE lt_multivalues FROM lw_multivalues. lw_multivalues-fieldname = 'CREATED_AT_RANGE'. INSERT lw_multivalues INTO TABLE lt_multivalues.ENDIF.CALL FUNCTION 'CRM_BSP_OIC_1O_SEARCH_FROM_RF' EXPORTING it_search_tab = it_search_tab iv_number = iv_number iv_archive = iv_archive it_multivalues = lt_multivalues iv_items = iv_item iv_select_for_headerlevel = iv_select_for_headerlevel iv_call_authority_badi = iv_call_authority_badi iv_select_for_itemlevel = iv_select_for_itemlevel iv_obj_il = iv_obj_il iv_report_area = iv_report_area IMPORTING et_guidlist = et_guidlist et_return = et_return EXCEPTIONS date_not_correct = 1 no_card_type = 2 no_card_no = 3 no_program_id = 4 OTHERS = 5.ENDMETHOD.
注意,该Badi中只包含了搜索的具体逻辑。自定义字段需要通过AET实现,而搜索选项和样式则可以去对应的组件进行修改。
CRM_ORDER_FIELDCHECK
修改订单抬头、行项目中的字段是否可编辑。当我们需要修改系统标准逻辑时,可以采用这个Badi。
过滤器:无
代码示例:使标准订单行项目上的“批次号”可编辑(在ERP不启用批次管理的情况下)METHOD if_ex_crm_order_fieldcheck~fieldcheck.FIELD-SYMBOLS <field_batchid> LIKE LINE OF ct_input_field_names.IF iv_object_name = 'PRODUCT_I' AND is_fieldcheck_com-ref_kind = 'B'. LOOP AT ct_input_field_names ASSIGNING <field_batchid>. IF <field_batchid>-fieldname = 'BATCH_ID'. <field_batchid>-changeable = ''. ENDIF. ENDLOOP.ENDIF.ENDMETHOD.
批次号可以成功同步到ERP,该功能可参考Note: 2472483
CRM_ORDER_AUTH_CHECK
Order权限检查。
过滤器:无
代码示例:基于某些特定逻辑,让用户无法编辑(删除)该订单,并抛出消息。METHOD if_ex_crm_order_auth_check~crm_order_add_auth_check.CHECK iv_process_type = 'ZA15' AND iv_header_guid IS NOT INITIAL AND ( IV_MODE = 'B' or IV_MODE = 'D' ). CALL FUNCTION 'CRM_MESSAGE_COLLECT' EXPORTING iv_ref_object = iv_header_guid iv_ref_kind = 'A' iv_caller_name = 'ORDERADM_H' iv_msgno = '043' iv_msgid = 'ZSECCO_CRM' iv_msgty = 'E'. RAISE no_authority.ENDMETHOD.
ORDER_SAVE
Order中最常用的Badi之一,但是很多人却用得不好。
过滤器:无
示例代码:无-该Badi中有三个Method,起到不同的作用,并不是可以随便乱用的。按调用顺序应该为:
CHECK_BEFORE_SAVE 用于订单的保存校验,可以在该方法中抛出消息并阻止保存。
PREPARE 用于处理一些在订单commit之前的一些额外逻辑,例如通过order maintain修改订单本身的一些内容,注意,该方法无法阻止订单保存。
CHANGE_BEFORE_UPDATE 用于处理一些与订单本身没有太大关联的逻辑,例如发送邮件,触发中间件,更新自建表等。
-该Badi为多次调用的Badi类型,这代表所有的implementation都会被调用到,但是他们被调用的顺序,是无法预知的。因此每一个实施中的内容都要相对独立,不能有所牵连。
-由于Order Save本身是在函数CRM_ORDER_SAVE中被调用到,因此我们应该极力避免在该Badi中使用BOL,或者其他Commit,锁对象等,否则可能会造成单据的未知错误。
-作为Order中最关键的Badi,我们应尽量考虑到程序执行的效率问题,尽可能的将类似需求放置在一个implementation中,尽量避免直接使用CRM_ORDER_READ函数,而是去针对不同的对象调用对应的OW函数。尽量约束各种条件等。CRM_COND_COM_BADI
Condition中增加通讯结构与数据。例如通过实施该Badi,向IPC Java中传入更多的自定义参数。
- SAP CRM OneOrder Badi 汇总(持续更新)
- CRM Badi
- CRM Badi
- 问题汇总(持续更新)
- SAP BADI应用(转载)
- SAP 表 [持续更新...]
- SAP BADI
- SAP BADI
- Linux常用命令汇总(持续更新中)
- jobing:资料汇总(持续更新)
- android FragMent 错误汇总 (持续更新)
- adb命令使用汇总(持续更新)
- 平时问题汇总(持续更新)
- 开发小细节汇总(持续更新)
- 设计模式汇总(持续更新中)
- iOS经验汇总帖(持续更新)
- 升级xcode7问题汇总(持续更新)
- SQL语句汇总(持续更新)
- linux sed命令详解
- 安卓蓝牙搜索发出的广播是刚开始就结束
- IOS 调用WebService 实现图片上传处理的解决办法
- 前端网页禁止选中文字的方法
- 分分钟用上C#中的委托和事件
- SAP CRM OneOrder Badi 汇总(持续更新)
- idea可运行的jar包
- Qt自定义控件
- Python Scipy Tutorials:Matplot
- 敏捷开发代码管理规则:为什么要采用单一主干代码管理?如何做到单一主干代码管理?
- C#中保留N位小数的几种方法(转)
- RabbitMQ
- Osg/OsgEarth—— 无法打开文件osgGA/MatrixManipulator错误
- 欢迎使用CSDN-markdown编辑器