zoukankan      html  css  js  c++  java
  • 20170228 Z_po_send_email

    FUNCTION zmm_po_send_email.

    function zmm_po_send_email.
    *"----------------------------------------------------------------------
    *"*"區域介面:
    *"  IMPORTING
    *"     VALUE(OLD_EKKO) TYPE  EKKO
    *"     VALUE(NEW_EKKO) TYPE  EKKO
    *"     VALUE(IM_STATUS) TYPE  MEREP_TSALEORDER-STATUS
    *"----------------------------------------------------------------------
    
    *如果是取消核發,則不觸發郵件功能
    data:v_level      type i,    "核發級別,如四級審批
         v_offst      type i,    "偏移量
         v_index      type i,    "索引號
         v_tabix      type i,    "內表行
         v_olddc      type c,    "核發前狀態
         v_newwc      type c.    "核發后狀態
    data:i_codes      like table of merel_s_grid1 with header line,
         i_codesall   like table of merel_s_grid1 with header line,
         i_codesno    like table of merel_s_grid1 with header line,
         w_code1      like merel_s_grid1,
         w_code2      like merel_s_grid1.
    
    *等待3秒鐘,其目的是讓PO核發處理完畢,再執行下面的,因為執行太快了,下面讀取核發代碼很有可能不全面
    *該FM必須異步調用才能有效處理
    *WAIT UP TO 10 SECONDS.         "DEVK908804
    break-point id zmm_email.
    *FRGKE   核發指示碼A表示已完成核發,
    *FRGZU   核發狀態,X表示級別上已核發
    *V_LEVEL = STRLEN( NEW_EKKO-FRGZU ).
    *BREAK CP900.
    call function 'ZMM_PO_RELEASE_STRATEGY_DATA'
      exporting
        ebeln             = new_ekko-ebeln
      importing
        e_level           = v_level
      tables
        t_relcodes        = i_codes
        t_relcodesall     = i_codesall
        t_relcodesno      = i_codesno.
    
    *DESCRIBE TABLE I_CODES LINES V_LEVEL.
    perform set_rel_info(saplzxwms_mast) if found tables i_codesno.
    
    condense old_ekko-frgzu no-gaps.
    condense new_ekko-frgzu no-gaps.
    
    if im_status = 'CRT'.             "從建立或更新觸發
    
    elseif im_status = 'REL'.         "核發時觸發
      while v_level gt 0.
        v_index = v_index + 1.
        v_olddc = old_ekko-frgzu+v_offst(1).
        v_newwc = new_ekko-frgzu+v_offst(1).
        if v_olddc eq '' and v_newwc = 'X'.             "核發情況
          clear:w_code1,w_code2.
          read table i_codesall into w_code1 index v_index.
          if new_ekko-frgke = 'A'.                      "表明核發已完成,發送郵件通知采購群組
            w_code2-description = new_ekko-ekgrp.
            perform check_po_recipient_address using new_ekko-ekorg new_ekko-frggr w_code2 'COM' changing sy-subrc.
            if sy-subrc eq 0.
              perform ready_po_send_email using new_ekko 'COM' w_code1 w_code2.
            endif.
              perform send_po_to_vendor using new_ekko.
    
          else.                                                           "表明部分核發,發送郵件通知下一位核發者
            v_tabix = v_index + 1.
            read table i_codesall into w_code2 index v_tabix.
            perform check_po_recipient_address using new_ekko-ekorg new_ekko-frggr w_code2 im_status changing sy-subrc.
            if sy-subrc eq 0.
              perform ready_po_send_email using new_ekko im_status w_code1 w_code2.
            endif.
          endif.
        endif.
        v_level = v_level - 1.
        v_offst = v_offst + 1.
      endwhile.
    endif.
    endfunction.
    *&这个代码还会调很多方法的
  • 相关阅读:
    在登陆脚本中设置自动打开某个网页
    修改2k自动登陆的脚本
    COM组件和NT服务
    HRMS提示"HRMS服务器未注册或注册不正确"问题
    登录脚本
    vb的GUID生成算法
    WIN2000管理员密码的解密
    注册表中相等的项
    统一管理Windows 2000域中的服务
    深入挖掘Windows脚本技术
  • 原文地址:https://www.cnblogs.com/rainysblog/p/6477706.html
Copyright © 2011-2022 走看看