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 ...
随机推荐
- [luoguP2051] [AHOI2009]中国象棋(DP)
传送门 注释写明了一切 #include <cstdio> #define N 111 #define p 9999973 #define LL long long int n, m; L ...
- P1736 创意吃鱼法 (动态规划)
题目描述 回到家中的猫猫把三桶鱼全部转移到了她那长方形大池子中,然后开始思考:到底要以何种方法吃鱼呢(猫猫就是这么可爱,吃鱼也要想好吃法 ^_*).她发现,把大池子视为01矩阵(0表示对应位置无鱼,1 ...
- java面试题之能创建volatile数组吗?
答:能,只不过只是一个指向数组的引用,而不是整个数组,如果改变了引用指向的数组,将会受到volatile的保护,但是如果多个线程同时改变数组的元素,volatile关键字就不能起到保护的作用.
- testng自定义html报告,根据freemaker生成
[转] https://testerhome.com/topics/3487 [参考]https://www.cnblogs.com/cheese320/p/8890929.html 做了些修改,换 ...
- PatentTips - GPU Support for Blending
Graphics processing units (GPUs) are specialized hardware units used to render 2-dimensional (2-D) a ...
- 一个iOS开发者的Flutter“历险记”
1. 官方简介 Flutter是谷歌的移动UI框架,可以快速在iOS和Android上构建高质量的原生用户界面. 官方介绍: 快速开发: 毫秒级的热重载,修改后,您的应用界面会立即更新.使用丰富的.完 ...
- nodejs启动前端项目步骤
在.nuxt目录下打开命令行: 一:npm rm node-sass 二:npm install node-sass 三:npm install 四:npm run dev
- Mac安装IntelliJ IDEA时快捷键冲突设置
Mac有专门的快捷键,和Linux/Windows的不一样. 下面是发现的一些需要屏蔽的快捷键: 一.搜狗输入法: 暂时没发现有冲突. 二.系统 代码提示:Ctrl+空格(输入法开关) 三.其它 暂无 ...
- BroadcastReceiver详解(一)
今天我们来讲一下Android中BroadcastReceiver的相关知识. BroadcastReceiver也就是“广播接收者”的意思,顾名思义,它就是用来接收来自系统和应用中的广播. 在And ...
- docker nginx镜像+phpfpm 镜像 组合配置 搭建 PHP+nginx 环境
前言 在以往的容器环境部署中 运行环境 我们通常把 类似 apache nginx php 等 打包在一个镜像中 起一个容器. 这样做的好处是 方便 简单. 不便的地方是 如果PHP 需要扩展新的 相 ...