采购订单审批/取消审批程序(BAPI_PO_RESET_RELEASE、BAPI_PO_RELEASE)
data: gt_t16fs TYPE STANDARD TABLE OF t16fs, "批准策略
"定义采购订单对应的审批信息
BEGIN OF gt_ekko OCCURS 0,
ebeln LIKE ekko-ebeln, "采购订单编号
frggr LIKE ekko-frggr, "审批组
frgsx LIKE ekko-frgsx, "审批策略
frgzu LIKE ekko-frgzu, "版本状态
bsart LIKE ekko-bsart, "采购凭证类型
ekorg LIKE ekko-ekorg, "采购组织
END OF gt_ekko.
*&———————————————————————*
*& Form get_Approval_strategy
*&———————————————————————*
* 取采购订单对应的审批组和审批策略
* 再根据审批组和审批管理取每级对应的审批组
*———————————————————————-*
FORM get_approval_strategy.
"取采购订单对应审批组
SELECT ebeln "采购订单
frggr "审批组
frgsx "审批策略
frgzu "版本状态
bsart "采购凭证类型
ekorg "采购组织
INTO TABLE gt_ekko
FROM ekko
WHERE ebeln = l_ebeln.
"根据审批组取对应批准策略
SELECT *
INTO TABLE gt_t16fs
FROM t16fs
FOR ALL ENTRIES IN gt_ekko
WHERE frggr = gt_ekko-frggr "审批组
AND frgsx = gt_ekko-frgsx. "审批策略
ENDFORM. "get_Approval_strategy
*&———————————————————————*
*& Form PROCESS_po
*&———————————————————————*
* 处理采购订单,包括取消审批和审批
*———————————————————————-*
* –>VALUE(FV_APPROVE) 处理标识,N:表示取消审批, Y:表示审批通过
*———————————————————————-*
FORM process_po USING value(fv_approve).
DATA: l_level TYPE n, "当前订单已审批通过级别数
l_last_char TYPE n, "当前订单最后审批通过级别
l_pre_field TYPE string VALUE 'FRGC', "所有审批组对应字段相同部分
l_fieldname TYPE string. "由l_pre_field + l_last_char组成对应审批组字段
FIELD-SYMBOLS: <fs_field> TYPE t16fs-frgc1. "当前审批组值
CLEAR: l_level,
l_last_char,
l_fieldname.
READ TABLE gt_ekko ASSIGNING <fs_ekko> WITH KEY ebeln = w_poheader-po_number.
IF sy-subrc EQ 0 AND <fs_ekko>-frgzu IS NOT INITIAL.
"根据采购订单的审批组、审批策略取对应的审批组
READ TABLE gt_t16fs ASSIGNING <fs_t16fs> WITH KEY frggr = <fs_ekko>-frggr
frgsx = <fs_ekko>-frgsx.
"计算审批通过级数
l_level = STRLEN( <fs_ekko>-frgzu ).
"取消采购订单,只取消第一级审批就可以,不需要逐级取消审批,如果逐级取消审批后造成采购订单被锁定错误
IF fv_approve = 'N'.
"组成字段名
CONCATENATE l_pre_field '1' INTO l_fieldname.
"通过指针获取批准代码
ASSIGN COMPONENT l_fieldname OF STRUCTURE <fs_t16fs> TO <fs_field>.
PERFORM approve_po USING <fs_ekko>-ebeln 'N' <fs_field>.
ENDIF.
"批准采购订单,由前往后逐级审批
IF fv_approve = 'Y'.
DO l_level TIMES.
l_last_char = sy-index.
CONCATENATE l_pre_field l_last_char INTO l_fieldname.
ASSIGN COMPONENT l_fieldname OF STRUCTURE <fs_t16fs> TO <fs_field>.
PERFORM approve_po USING <fs_ekko>-ebeln 'Y' <fs_field>.
ENDDO.
ENDIF.
ENDIF.
ENDFORM. "PROCESS_po
*&———————————————————————*
*& Form approve_po
*&———————————————————————*
* 审批或取消采购订单审批
*———————————————————————-*
* –>VALUE(FV_EBELN) 采购订单编号
* –>VALUE(FV_APPROVE) 审批状态
* –>VALUE(FV_REL_COD) 审批代码
*———————————————————————-*
FORM approve_po USING value(fv_ebeln)
value(fv_approve)
value(fv_rel_cod).
CALL FUNCTION 'Z_MM_APPROVE_PO'
EXPORTING
purchaseorder = fv_ebeln
approve = fv_approve
rel_cod = fv_rel_cod.
IF sy-subrc EQ 0.
WAIT UP TO 1 SECONDS.
ENDIF.
ENDFORM. "approve_po
FUNCTION z_mm_approve_po.
*"———————————————————————-
*"*"Update function module:
*"
*"*"Local interface:
*" IMPORTING
*" VALUE(PURCHASEORDER) TYPE BAPIMMPARA-PO_NUMBER
*" VALUE(APPROVE) TYPE CHAR1
*" VALUE(REL_COD) TYPE BAPIMMPARA-PO_REL_COD
*"———————————————————————-
IF approve = 'Y'.
CALL FUNCTION 'BAPI_PO_RELEASE'
EXPORTING
purchaseorder = purchaseorder
po_rel_code = rel_cod
* USE_EXCEPTIONS = 'X'
* NO_COMMIT = ' '
* IMPORTING
* REL_STATUS_NEW =
* REL_INDICATOR_NEW =
* RET_CODE =
* TABLES
* RETURN = return
EXCEPTIONS
authority_check_fail = 1
document_not_found = 2
enqueue_fail = 3
prerequisite_fail = 4
release_already_posted = 5
responsibility_fail = 6
OTHERS = 7
.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ELSEIF approve = 'N'.
CALL FUNCTION 'BAPI_PO_RESET_RELEASE'
EXPORTING
purchaseorder = purchaseorder
po_rel_code = rel_cod
* USE_EXCEPTIONS = 'X'
* IMPORTING
* REL_STATUS_NEW =
* REL_INDICATOR_NEW =
* TABLES
* RETURN = return
EXCEPTIONS
authority_check_fail = 1
document_not_found = 2
enqueue_fail = 3
prerequisite_fail = 4
release_already_posted = 5
responsibility_fail = 6
no_release_already = 7
no_new_release_indicator = 8
OTHERS = 9
.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDIF.
ENDFUNCTION.
采购订单审批/取消审批程序(BAPI_PO_RESET_RELEASE、BAPI_PO_RELEASE)相关推荐
- SAP采购订单审批时可以拒绝吗?
先说答案:采购订单可以拒绝.且不审批和拒绝是两回事.区别嘛,采购订单在没有审批情况下,会出现在待审批列表中,但采购订单拒绝后,就不会再出现在待审批列表中了.这个有兴趣的读者可以自行通过ME28和ME2 ...
- 37 MM配置-采购-采购订单-采购订单审批-编辑类
业务背景:定义采购订单审批类 事务码:CL02 SPRO路径:物料管理->采购->采购订单->采购订单的下达过程->编辑类 第1步,SPRO进入 第2步,创建审批类 配置完成! ...
- 36 MM配置-采购-采购订单-采购订单审批-编辑特性
业务背景:定义采购订单审批特性 事务码:CT04 SPRO路径:物料管理->采购->采购订单->采购订单的下达过程->编辑特性 第1步,SPRO进入 第2步,创建 采购申请 审 ...
- 维护采购订单审批的特性Characteristic和类Class
SAP的采购审批过程(Release Procedure for Purchase Orders)配置包括两大部分,一部分是后台配置的审批策略(Release Strategy),另一部分是类(Cla ...
- SAP S/4 采购订单审批策略无效问题
1.问题:采购审批策略无效.根据SAP ECC模式定义采购订单审批策略后.创建采购订单,通过ME29N审批,提示无有效的审批策略.检查相关设置没有错误,在同行提示下,是因为S/4增加了参数引起的. 2 ...
- 采购订单审批与采购申请审批
1 采购申请可以有项目审批,采购订单只有抬头审批.意义:申请可能只同意部分行:申请可以同意部分数量,这个在申请转订单时实现. 2 无分类审批,只能做抬头审批,并且只有帐户类别,物料组,工厂,值4个选项 ...
- 38 MM配置-采购-采购订单-采购订单审批-定义采购订单审批过程
业务背景:定义采购订单审批过程 事务码:SPRO SPRO路径:物料管理->采购->采购订单->采购订单的下达过程->定义采购订单审批过程 第1步,SPRO进入 第2步,选择& ...
- SAP 采购申请、采购订单的审批策略
采购申请.采购订单的审批策略 采购申请审批 PR审批可以分为:含分类.无分类 1.无分类PR审批: A.后台配置: 设置批准代码(批准代码可以设置多级审批): ...
- SAP中如何查询未审批采购订单
在MM采购订单审批应用中,作为申请部门或采购部门需要能主动的进行待审批订单的状态查询,以便及时跟进业务.因此,如何查询未审批采购订单是一个很基础很实用的功能.下面一起来看看吧. 在事务ME2N中先按下 ...
最新文章
- VMWare中CentOS7 设置固定IP且能够访问外网
- c++获取当前目录_如何在 Linux 下利用 Vim 搭建 C/C++ 开发环境?
- 使用keepalived监控tomcat 达到双机热备
- Eclipse中实现SpringBoot与Mybatis整合(图文教程带源码)
- ESFramework介绍之(30)―― 消息侦察者 INetMessageSpy
- java_object的具体使用--上帝
- Linux裸设备管理详解--
- Python基础之完数输出
- Markdown编辑器简单总结
- exoplayer和mediaplayer的封装
- 一批恶意Google Play应用窃取用户银行信息
- [Ubuntu] 解决Win10+Ubuntu双系统时间不一致问题
- 如何把手机证件照压缩到15KB?手机压缩图片方法
- ubuntu 装机必备软件
- 整型和bcd的对应关系_微信与多闪之争背后,好友关系链到底是如何窃取的?
- 限制性立方样条(Restricted Cubic Spline)
- WAITED TOO LONG FOR A ROW CACHE ENQUEUE LOCK!
- android xml文件中进行上传图片以及获取图片
- SmartNIC — Overview
- 30s快速开通微商城,零售+分销结合,支持直播美颜