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 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 .
v_index = v_index + .
v_olddc = old_ekko-frgzu+v_offst().
v_newwc = new_ekko-frgzu+v_offst().
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 .
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 + .
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 .
perform ready_po_send_email using new_ekko im_status w_code1 w_code2.
endif.
endif.
endif.
v_level = v_level - .
v_offst = v_offst + .
endwhile.
endif.
endfunction.
*&这个代码还会调很多方法的

20170228 Z_po_send_email的更多相关文章

  1. 【Java每日一题】20170228

    20170227问题解析请点击今日问题下方的“[Java每日一题]20170228”查看(问题解析在公众号首发,公众号ID:weknow619) package Feb2017; import jav ...

  2. 【2017-02-28】C# 冒泡排序

    冒泡排序 重复地走访过要排序的数列,一次比较两个元素的大小,如果他们的顺序错误就把他们交换过来 通过两个For循环嵌套来实现 思路——以从小到大为例 第一个for循环抽取第一个数和第二个数进行比较,如 ...

  3. 20170228 交货单过账增强 MV50AFZ1

    MV50AFZ1   这个程序里面找个FORM 用户出口, FORM USEREXIT_SAVE_DOCUMENT_PREPARE.   用户出口如下: 例:需求: 开发要求:制作交货单的人员,需要同 ...

  4. 20170228 ALV method中用E消息,会退出到初始界面;STOP 会dump;

    再回车就处理界面了, 所以,Handel_data_change 做数据检查时,如果需要报错要用到, CALL METHOD er_data_changed->add_protocol_entr ...

  5. 20170228 METHOD handle_data_changed-

    CALL METHOD er_data_changed->add_protocol_entry   METHOD handle_data_changed. DATA: ls_modi TYPE  ...

  6. R----lubridata包介绍学习

    lubridate包,非常强大,能够识别各种类型的日期.字符型和时间型数据,都是格式比较特别的你数据,在处理时,比较麻烦,但是有了lubridate这个包之后,时间处理变得非常简单,这个包函数命名简单 ...

  7. NYOJ-301递推求值

    递推求值 时间限制:1000 ms  |  内存限制:65535 KB 难度:4   描述 给你一个递推公式: f(x)=a*f(x-2)+b*f(x-1)+c 并给你f(1),f(2)的值,请求出f ...

  8. Could not find a transformer to transform "SimpleDataType{type=org.mule.transport.NullPayload

    mule esb报错 com.isoftstone.esb.transformer.Json2RequestBusinessObject.transformMessage(Json2RequestBu ...

  9. 线上问题debug过程(cat,grep,tr,awk,sort,uniq,comm等工具的综合使用)

    问题:发现线上到货单的数量,小于实际到货的数量. 怀疑一些隐藏的条件,将部分唯一码进行了过滤,导致数量变少. 开展了如下的跟踪流程: 1.找到其中一个明细的唯一码 grep 6180e-4b09f p ...

随机推荐

  1. 【bzoj3696】化合物 树形dp

    题目描述 首长NOI惨跪,于是去念文化课了.现在,他面对一道化学题.这题的来源是因为在一个奇怪的学校两个化竞党在玩一个奇怪的博弈论游戏.这个游戏很蛋疼,我相信你们也没有兴趣听.由于这个游戏涉及博弈论, ...

  2. 有大神告诉我为什么pymysql导入失败

    import json import requests import pymysql url = 'https://xueqiu.com/v4/statuses/public_timeline_by_ ...

  3. PHP简单留言板

    <?php header("Content-Type:text/html;charset=utf8"); $filename = "message.txt" ...

  4. 【HDOJ6354】Everything Has Changed(计算几何)

    题意: 给定一个平面和一个(0,0)为中心的大圆,有n个小圆保证没有两两之间相交与覆盖整个大圆的情况,求小圆覆盖后大圆的周长并 1≤m≤100, -1e3<=x[i],y[i]<=1e3, ...

  5. Android 网络通信之Socket

    Android 网络通信之Socket 应用软件的网络通信无非就是Socket和HTTP,其中Socket又可以用TCP和UDP,HTTP的话就衍生出很多方式,基础的HTTP GET和POST请求,然 ...

  6. msp430项目编程35

    msp430中项目---nand接口编程35 1.电路工作原理 2.代码(显示部分) 3.代码(功能实现) 4.项目总结

  7. android studio AndroidManifest

    一.目录结构 1. AndroidManifest.xml 它是一个清单文件,提供应用的基本信息 <?xml version="1.0" encoding="utf ...

  8. BZOJ 3675 [Apio2014]序列分割 (斜率优化DP)

    题目链接 BZOJ 3675 首先最后的答案和分割的顺序是无关的, 那么就可以考虑DP了. 设$f[i][j]$为做了$i$次分割,考虑前$j$个数之后的最优答案. 那么$f[i][j] = max( ...

  9. Centos7 下安装 RabbitMQ

    安装 erlang 1.下载erlang 官网地址 http://www.erlang.org/download 挑选合适的版本 然后 wget 比如目前最新版本 19.3 运行命令 wget htt ...

  10. MFC中的双缓冲技术(解决绘图闪烁问题)

    转自 MFC绘图不闪烁——双缓冲技术[转] 在VC/MFC用CDC绘图时,频繁的刷新,屏幕会出现闪烁的现象,CPU时间占用率相当高,绘图效率极低,很容易出现程序崩溃. 所谓双缓冲技术,下面是百度百科的 ...