需求:

采购合同类型是MK,采购组织是POSC,采购组PGC,标识:估计价格是空,总价有值0.00 - 9999999999.00 RMB

满足以上条件的时候需要审批该合同。

配置:

  spro->物料管理->采购->合同->合同下达的过程:

1.配置特性值:

基本数据页签:
状态:已发布
格式:数据类型
字符数:
值分配:
附加数据页签:
表名:CEKKO 字段名:BSART 合同类型
备注:如果没有字段,需要在结构CEKKO中增强

2.配置类:

基本数据页签:
状态:
相同分类:不要检查
特性:把设置的特性都填写进来

3.定义合同审批过程:

3.1:批准组 第一列填写批准组,第2列采购订单类将被批准的对象的类别
都是2,第三列填写设置的类名称,第四列名称

3.2:批准代码设置

3.3:发布标识:备注:第二列核发勾上说明审核完,可变性是6的话变化会再次触发审批,具体看帮助,第三列%值的更改变化范围

3.4:审批策略:

维护审批分类的条件值可用CL20N事物代码进去维护

审批种类是032

增强:审批有个增强点 smod 进去M06E0004

如果涉及到行项目的要计算一下赋值给增强的CEKKO.

备注:对于采购合同来说,SAP标准的策略是价格往高的改才会再次触发审批,而且新加时间区间的价格条件价格是不会再次触发审批的,但是我们可以做一个增强:

在函数:ME_REL_STRATEGIE_EKKO做一个隐士增强:

FUNCTION me_rel_strategie_ekko.
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""$"$\SE:(1) Function Module ME_REL_STRATEGIE_EKKO, Start A
*$*$-Start: (1)---------------------------------------------------------------------------------$*$*
ENHANCEMENT 1 ZCONTRACTOR_TRAIL_ENHANCEMENT. "active version
I_CHECK_ALWAYS = 'X'.
ENDENHANCEMENT.
*$*$-End: (1)---------------------------------------------------------------------------------$*$*
*"----------------------------------------------------------------------
*"*"Lokale Schnittstelle:
*" IMPORTING
*" VALUE(I_CEKKO_NEW) LIKE CEKKO STRUCTURE CEKKO
*" VALUE(I_CEKKO_OLD) LIKE CEKKO STRUCTURE CEKKO OPTIONAL
*" VALUE(I_FRGGR) LIKE EKKO-FRGGR OPTIONAL
*" VALUE(I_FRGST) LIKE EKKO-FRGSX OPTIONAL
*" VALUE(I_FRGZU) LIKE EKKO-FRGZU OPTIONAL
*" VALUE(I_FRGKZ) LIKE EKKO-FRGKE OPTIONAL
*" VALUE(I_FRGRL) LIKE EKKO-FRGRL OPTIONAL
*" VALUE(I_OUTPUT) OPTIONAL
*" VALUE(I_WKURS) LIKE EKKO-WKURS OPTIONAL
*" VALUE(I_WKURS_OLD) LIKE EKKO-WKURS OPTIONAL
*" VALUE(I_LPOT) OPTIONAL
*" VALUE(I_CHECK_ALWAYS) TYPE CHAR1 OPTIONAL
*" EXPORTING
*" VALUE(E_FRGGR) LIKE EKKO-FRGGR
*" VALUE(E_FRGST) LIKE EKKO-FRGSX
*" VALUE(E_FRGZU) LIKE EKKO-FRGZU
*" VALUE(E_FRGKZ) LIKE EKKO-FRGKE
*" VALUE(E_FRGRL) LIKE EKKO-FRGRL
*" VALUE(E_RESET)
*" CHANGING
*" REFERENCE(CH_RLWRT) TYPE RLWRT OPTIONAL
*" EXCEPTIONS
*" ERROR_MESSAGE
*"---------------------------------------------------------------------- MOVE i_cekko_new TO cekko.
MOVE i_cekko_old TO *cekko.
MOVE i_wkurs TO bwkurs.
MOVE i_wkurs_old TO bwkurs_old.
MOVE cekko-bedat TO bbedat.
CLEAR s_kzfae.
*- Falls alle Positionen gelöscht sind, ist Eink.Beleg nicht relevant -*
IF i_lpot NE space.
e_frgrl = space.
EXIT.
ENDIF.
*- Prüfen Reset --------------------------------------------------------
CLEAR xchange.
IF NOT *cekko IS INITIAL.
e_frgst = i_frgst.
e_frggr = i_frggr.
e_frgkz = i_frgkz.
e_frgrl = i_frgrl.
e_frgzu = i_frgzu.
IF i_frgzu NE space.
xchange = 'X'.
ENDIF.
ENDIF. *- Prüfen, ob neue Ermittlung beim Ändern ------------------------------
IF xchange NE space.
IF t16fb-frgke NE i_frgkz.
CLEAR t16fb.
SELECT SINGLE * FROM t16fb WHERE frgke EQ i_frgkz.
ENDIF.
IF t16fb-kzfae EQ ''.
EXIT.
ENDIF.
*- altes Änderungskennzeichen sichern falls neues ermittelt wird ------*
s_kzfae = t16fb-kzfae.
ENDIF. *- Klasse ermitteln ----------------------------------------------------
xclass = 'X'.
CLEAR t16fg. "
SELECT * FROM t16fg WHERE frgot EQ ''.
EXIT.
ENDSELECT.
IF sy-subrc NE OR
t16fg-frgkl EQ space.
EXIT.
ENDIF.
*- Hauswährung ermitteln -----------------------------------------------
fwaers = cekko-waers.
IF cekko-bukrs NE t001-bukrs.
SELECT SINGLE * FROM t001 WHERE bukrs EQ cekko-bukrs.
ENDIF.
hwaers = t001-waers. *- Prüfen Änderung ----------------------------------------------------*
IF cekko EQ *cekko AND
bwkurs EQ bwkurs_old AND i_check_always EQ space.
EXIT.
ENDIF. comm = 'CEKKO'.
PERFORM strategie_neu USING e_frggr e_frgst. *- Änderung bei laufender Freigabe prüfen ------------------------------
IF xchange NE space.
*- Strategie geändert --------------------------------------------------
IF e_frgst NE i_frgst OR
e_frggr NE i_frggr.
PERFORM reset
USING e_frgst e_frggr
e_frgzu e_frgkz e_frgrl.
e_reset = 'X'.
*- Wertänderung prüfen -------------------------------------------------
ELSE.
IF t16fb-kzfae EQ '' OR
t16fb-kzfae EQ '' .
PERFORM currency_conversion USING *cekko-waers
bwkurs_old
hwaers
fwaers
bwkurs
CHANGING *cekko-gnetw.
f1 = *cekko-gnetw * t16fb-tlfae / .
f1 = f1 + *cekko-gnetw.
IF cekko-gnetw GT f1.
PERFORM reset
USING e_frgst e_frggr
e_frgzu e_frgkz e_frgrl.
e_reset = 'X'.
ENDIF.
ENDIF.
ENDIF.
ELSE.
PERFORM reset
USING e_frgst e_frggr
e_frgzu e_frgkz e_frgrl.
ENDIF.
*- Prüfen, ob Beleg bereits ausgegeben wurde ---------------------------
IF i_output NE space AND xchange NE space.
*- Neue Freigabestrategie trotz erfolgter Ausgabe erlaubt -------------*
IF NOT ( s_kzfae EQ '' OR
s_kzfae EQ '' OR i_frgst EQ space ).
*---- keine neue Freigabestrategie bei erfolgter Ausgabe --------------*
SELECT SINGLE * FROM t16fb WHERE frgke EQ e_frgkz.
IF t16fb-kzfre EQ space.
e_frgst = i_frgst.
e_frggr = i_frggr.
e_frgkz = i_frgkz.
e_frgrl = i_frgrl.
e_frgzu = i_frgzu.
e_reset = 'Y'.
ENDIF.
ENDIF.
ENDIF. """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""$"$\SE:(2) Function Module ME_REL_STRATEGIE_EKKO, End A
*$*$-Start: (2)---------------------------------------------------------------------------------$*$*
ENHANCEMENT 2 ZCONTRACTOR_TRAIL_ENHANCEMENT. "active version IF xchange NE space.
IF e_frgst NE i_frgst OR
e_frggr NE i_frggr.
EXIT.
ELSE.
PERFORM reset
USING e_frgst e_frggr
e_frgzu e_frgkz e_frgrl.
e_reset = 'X'.
EXIT.
IF t16fb-kzfae EQ '4' OR t16fb-kzfae EQ '6'.
PERFORM currency_conversion USING *cekko-waers
bwkurs_old
hwaers
fwaers
bwkurs
CHANGING *cekko-gnetw.
f1 = *cekko-gnetw * t16fb-tlfae / 1000.
f1 = f1 + *cekko-gnetw.
IF cekko-gnetw <> f1.
PERFORM reset
USING e_frgst e_frggr
e_frgzu e_frgkz e_frgrl.
e_reset = 'X'.
ENDIF.
ENDIF.
ENDIF.
ELSE.
EXIT.
ENDIF. ENDENHANCEMENT.
*$*$-End: (2)---------------------------------------------------------------------------------$*$*
ENDFUNCTION.

配置SAP 采购合同审批的更多相关文章

  1. 【MM系列】SAP 采购订单的批量修改

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[MM系列]SAP 采购订单的批量修改   前言 ...

  2. SAP 采购订单收货时报错:对于采购订单xxxx无收货可能

    因为这个问题查了挺长时间,所以写在博客里记录下. 报错详细: 每个公司的配置不同,我公司遇到的这个问题原因是这里的确认控制是从信息记录带过来的,问题解决方法是,修改下确认控制的选项: 修改确认控制的后 ...

  3. 配置SAP GUI FOR HTML(通过WEB方式登录)

    配置SAP GUI FOR HTML(通过WEB方式登录) SAP系统可以通过安装 SAP GUI.SAP GUI FOR JAVA.SAP GUI WEB FOR JAVA.SAP GUI FOR ...

  4. 【MM系列】SAP 采购订单收货后不能修改价格的增强

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[MM系列]SAP 采购订单收货后不能修改价格的 ...

  5. SAP采购订单入库后不允许修改单价增强

    需求:在根据采购订单做了入库凭证之后,如果用户反审批采购订单去修改单价,系统提示‘已收货,不允许修改单价’. 判断流程:是否有入库凭证 如果采购订单条件按采购信息记录定价,这个价格本来就不能修改,只能 ...

  6. SAP采购订单历史明细报表源代码(自己收藏)

    SPAN { font-family: "Courier New"; font-size: 10pt; color: #000000; background: #FFFFFF } ...

  7. SAP采购订单审批记录增强

    采购订单审核函数: BAPI_PO_RELEASE 结尾加上 ENHANCEMENT ZME28_PO. "active version DATA:LS_EKKO TYPE EKKO. DA ...

  8. SAP采购申请审批记录增强

    业务需要,开发就搞.... EBAN中增强结构:CI_EBANDB ANAME 类型 UNAME 用户名 ADATE 类型 AEDAT DATS 更改日期 ATIME 类型 UZEIT TIMS 时间 ...

  9. SAP采购订单屏幕增强

    转自<http://blog.csdn.net/heng0757/article/details/8073875> 为采购订单增加一个页标签,在其中放入客户自定义字段, 1. CMOD 增 ...

随机推荐

  1. HTML5 画布参考

    描述 HTML5 <canvas> 标签用于绘制图像(通过脚本,通常是 JavaScript). 不过,<canvas> 元素本身并没有绘制能力(它仅仅是图形的容器) - 您必 ...

  2. iOS SDK:预览和打开文档

    iOS中的沙盒可以让平台更加的安全,这也是沙盒给用户带来的最主要好处.不过由于沙盒的严格限制,导致程序之间共享数据比较麻烦.一般在程序间共享文档可以通过UIDocumentInteractionCon ...

  3. spring mvc 分页

    spring mvc 分页

  4. 基于visual Studio2013解决C语言竞赛题之0409 100以内素数

       题目 解决代码及点评 在已经知道素数是怎么判断的基础上,增加循环,可以判断出100以内的素数 /******************************************* ...

  5. BZOJ 1613: [Usaco2007 Jan]Running贝茜的晨练计划

    题目 1613: [Usaco2007 Jan]Running贝茜的晨练计划 Time Limit: 5 Sec  Memory Limit: 64 MB Description 奶牛们打算通过锻炼来 ...

  6. Java学习之开篇—个人随想

    现在大三上学期了,家里希望考研,不然觉得我这学校不好找工作,我自己觉得工作还是靠自己,学校就像给人第一眼感觉那样,虽然重要但也只会吸引HR多看两眼,真正留得住HR的还是要有拿的出手的技能. 当初凭着对 ...

  7. 一入python深似海--浅拷贝与深拷贝

    python中有一个模块copy,deepcopy函数用于深拷贝,copy函数用于浅拷贝. 要理解浅拷贝,必须先弄清楚python中的引用. 引用 Python中一切都是对象,变量中存放的是对象的引用 ...

  8. JavaScript 高级程序设计(第3版)笔记——chapter3:基本概念(函数部分)

    3.7函数 3.7.1 理解参数 ECMAScript 函数不介意传递进来多个参数,也不在乎传递进来的参数是什么数据类型.因为在 ECMAScript 中的参数在内部是用一个数组来表示的.在函数体内可 ...

  9. JavaScript 高级程序设计(第3版)笔记——chapter4:变量、作用域和内存问题

    Chapter4 变量.作用域和内存问题 l  理解基本类型和引用类型的值 l  理解执行环境 l  理解垃圾收集 4.1基本类型和引用类型的值 l  ECMAScript变量包含两种不同数据类型的值 ...

  10. UVa401 Palindromes

    #include <stdio.h>#include <string.h> char mirror(char c){    static const char m[] = &q ...