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 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的更多相关文章
- 【Java每日一题】20170228
20170227问题解析请点击今日问题下方的“[Java每日一题]20170228”查看(问题解析在公众号首发,公众号ID:weknow619) package Feb2017; import jav ...
- 【2017-02-28】C# 冒泡排序
冒泡排序 重复地走访过要排序的数列,一次比较两个元素的大小,如果他们的顺序错误就把他们交换过来 通过两个For循环嵌套来实现 思路——以从小到大为例 第一个for循环抽取第一个数和第二个数进行比较,如 ...
- 20170228 交货单过账增强 MV50AFZ1
MV50AFZ1 这个程序里面找个FORM 用户出口, FORM USEREXIT_SAVE_DOCUMENT_PREPARE. 用户出口如下: 例:需求: 开发要求:制作交货单的人员,需要同 ...
- 20170228 ALV method中用E消息,会退出到初始界面;STOP 会dump;
再回车就处理界面了, 所以,Handel_data_change 做数据检查时,如果需要报错要用到, CALL METHOD er_data_changed->add_protocol_entr ...
- 20170228 METHOD handle_data_changed-
CALL METHOD er_data_changed->add_protocol_entry METHOD handle_data_changed. DATA: ls_modi TYPE ...
- R----lubridata包介绍学习
lubridate包,非常强大,能够识别各种类型的日期.字符型和时间型数据,都是格式比较特别的你数据,在处理时,比较麻烦,但是有了lubridate这个包之后,时间处理变得非常简单,这个包函数命名简单 ...
- NYOJ-301递推求值
递推求值 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 给你一个递推公式: f(x)=a*f(x-2)+b*f(x-1)+c 并给你f(1),f(2)的值,请求出f ...
- Could not find a transformer to transform "SimpleDataType{type=org.mule.transport.NullPayload
mule esb报错 com.isoftstone.esb.transformer.Json2RequestBusinessObject.transformMessage(Json2RequestBu ...
- 线上问题debug过程(cat,grep,tr,awk,sort,uniq,comm等工具的综合使用)
问题:发现线上到货单的数量,小于实际到货的数量. 怀疑一些隐藏的条件,将部分唯一码进行了过滤,导致数量变少. 开展了如下的跟踪流程: 1.找到其中一个明细的唯一码 grep 6180e-4b09f p ...
随机推荐
- BZOJ 3779 重组病毒 ——LCT 线段树
发现操作一很像一个LCT的access的操作. 然后答案就是路径上的虚边的数量. 然后考虑维护每一个点到根节点虚边的数量, 每次断开一条偏爱路径的时候,子树的值全部+1, 连接一条偏爱路径的时候,子树 ...
- BZOJ 3196 二逼平衡树 ——树套树
[题目分析] 全靠运气,卡空间. xjb试几次就过了. [代码] #include <cmath> #include <cstdio> #include <cstring ...
- BZOJ2245 [SDOI2011]工作安排 【费用流】
题目 你的公司接到了一批订单.订单要求你的公司提供n类产品,产品被编号为1~n,其中第i类产品共需要Ci件.公司共有m名员工,员工被编号为1~m员工能够制造的产品种类有所区别.一件产品必须完整地由一名 ...
- 刷题总结——bzoj1725(状压dp)
题目: 题目描述 Farmer John 新买了一块长方形的牧场,这块牧场被划分成 N 行 M 列(1<=M<=12; 1<=N<=12),每一格都是一块正方形的土地. FJ ...
- Hibernate get 和 load区别
Session.load/get方法均可以根据指定的实体类和id从数据库读取记录,并返回与之对应的实体对象.下边详细说一下get和load的不同,因为有些时候为了对比也会把find加进来. 1.从返回 ...
- 小Z的袜子(bzoj 2038)
Description 作为一个生活散漫的人,小Z每天早上都要耗费很久从一堆五颜六色的袜子中找出一双来穿.终于有一天,小Z再也无法忍受这恼人的找袜子过程,于是他决定听天由命……具体来说,小Z把这N只袜 ...
- 洛谷 P1756 最小花费
题目背景 题目描述 在n个人中,某些人的银行账号之间可以互相转账.这些人之间转账的手续费各不相同.给定这些人之间转账时需要从转账金额里扣除百分之几的手续费,请问A最少需要多少钱使得转账后B收到100元 ...
- 品酒大会 BZOJ 4199
品酒大会 [问题描述] [输入格式] [输出格式] [样例输入] 10ponoiiipoi 2 1 4 7 4 8 3 6 4 7 [样例输出] 45 56 10 56 3 32 0 0 0 0 0 ...
- CentOS 7 使用iptables 开放端口
CentOS 7.0默认使用的是firewall作为防火墙,这里改为iptables防火墙. 1.关闭firewall: systemctl stop firewalld.service system ...
- rman备份OBSOLETE和EXPIRED参数来历及区别
http://blog.itpub.net/30496894/viewspace-2096221/