配置SAP 采购合同审批

发布时间:2017-3-23 10:22:41 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"配置SAP 采购合同审批 ",主要涉及到配置SAP 采购合同审批 方面的内容,对于配置SAP 采购合同审批 感兴趣的同学可以参考一下。

需求:

采购合同类型是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 '2'.      EXIT.    ENDIF.*- altes Änderungskennzeichen sichern falls neues ermittelt wird ------*    s_kzfae = t16fb-kzfae.  ENDIF.*- Klasse ermitteln ----------------------------------------------------  xclass = 'X'.  CLEAR t16fg.                               "1025079  SELECT * FROM t16fg WHERE frgot EQ '2'.    EXIT.  ENDSELECT.  IF sy-subrc NE 0 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 '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 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 '5' OR       s_kzfae EQ '6' 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.

上一篇:Linux 关闭及重启方式
下一篇:bash{} 方法总结

相关文章

相关评论

本站评论功能暂时取消,后续此功能例行通知。

一、不得利用本站危害国家安全、泄露国家秘密,不得侵犯国家社会集体的和公民的合法权益,不得利用本站制作、复制和传播不法有害信息!

二、互相尊重,对自己的言论和行为负责。

最近更新

好贷网好贷款