ECN变更屏幕增强

相关事务码 cc01/cc02/cc03

 

增强内容:1,屏幕增加一些客制化字段,(填各个负责部门的邮箱地址)

                  2,创建时发邮件给相关负责人

 

工程变更的主表是AENR,表中有一个结构CI_AENR,客制化字段就加到这个结构中

屏幕增强smod【PCCD0001】

cmod实现上面增强:

///ZXCCATOP
DATA:gs_enhance TYPE ci_aenr,
     g_ctrl     TYPE cctsd01. "增H改V查A状态控制
///ZXCCAU01 上图EXIT_SAPMC29C_001
MOVE-CORRESPONDING userdata TO gs_enhance.
MOVE-CORRESPONDING ctrldata TO g_ctrl. 
///ZXCCAU02 上图EXIT_SAPMC29C_002
MOVE-CORRESPONDING gs_enhance TO userdata.  

双击上图屏幕出口,创建1000屏幕

PROCESS BEFORE OUTPUT.
  MODULE status_1000. ///屏幕编辑控制

PROCESS AFTER INPUT.
  CHAIN.
    FIELD:gs_enhance-zecnjh,
          gs_enhance-zecntx,
          gs_enhance-zecnyl2.
    MODULE mod_check ON CHAIN-INPUT. ///输入内容检查
  ENDCHAIN.

  MODULE user_command_1000. ///本例未实现
MODULE status_1000 OUTPUT.
  LOOP AT SCREEN.
    IF screen-group1 EQ 'Z1' AND g_ctrl-aktyp EQ 'A'.
      screen-input = 'X'.
      MODIFY SCREEN.
    ENDIF.
  ENDLOOP.
ENDMODULE.

MODULE mod_check INPUT.
  PERFORM frm_check_email USING gs_enhance-zecnjh '计划'.
  PERFORM frm_check_email USING gs_enhance-zecntx '预留1'.
  PERFORM frm_check_email USING gs_enhance-zecnyl2 '预留2'.
ENDMODULE.

FORM frm_check_email USING p_str p_msg.
  IF p_str IS INITIAL.
    RETURN.
  ENDIF.
  DATA matcher TYPE REF TO cl_abap_matcher.
  DATA match   TYPE   c   LENGTH 1.
  matcher = cl_abap_matcher=>create( pattern = '^[a-zA-Z0-9_-|\.]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$'
                 ignore_case = 'X'
                 text = p_str ).
  match   =  matcher->match( ) .
  IF match  IS INITIAL.           "返回X表示匹配
    MESSAGE |{ p_msg }邮箱地址不合规| TYPE 'E'.
  ENDIF.

ENDFORM.

 

第二部分,创建ECN保存时发邮件,注意更改时不发邮件

se18 BADI 【ECM_UPDATE】

change_at_save触发时编号还没生成

我们在change_before_update处做,(不知道change_in_update里面怎么样,调试没进去,也许是update模式的所以不进)

METHOD if_ex_ecm_update~change_before_update.
    READ TABLE delta_aenrb INTO DATA(l_row) INDEX 1.
    IF sy-subrc EQ 0 AND l_row-vbkz EQ 'I'  ///I创建,cc02好像是U
            AND l_row-aennr IS NOT INITIAL ///编号已经生成
            AND l_row-zecntx IS NOT INITIAL. ///邮箱已填
      DATA:lt_mailbody TYPE bcsy_text,
           lv_text     TYPE soli.
      DATA:l_addr TYPE ad_smtpadr.
      DATA:gv_title TYPE so_obj_des. "邮件抬头

      l_addr = l_row-zecntx.

      lv_text-line = |{ l_row-aennr } { l_row-aetxt } 已创建|.
      APPEND lv_text TO lt_mailbody.

      gv_title = |ECN变更创建邮件提醒|.
      
      ///发邮件需要commit,但此处上下文不能commit【在perform on commit中间】 只能另启一个线程
      CALL FUNCTION 'ZFM_ECN_MAIL' STARTING NEW TASK 'ZPRO_ECNMAIL'   
        EXPORTING
          iv_addr          = l_addr ///email地址
          iv_title         = gv_title ///标题
          lt_content       = lt_mailbody.  ///邮件正文

    ENDIF.
  ENDMETHOD.

 

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值