采购订单审批/取消审批程序(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.

时间: 2024-10-18 19:58:11

采购订单审批/取消审批程序(BAPI_PO_RESET_RELEASE、BAPI_PO_RELEASE)的相关文章

SAP采购订单审批记录增强

采购订单审核函数: BAPI_PO_RELEASE 结尾加上 ENHANCEMENT 1 ZME28_PO. "active version DATA:LS_EKKO TYPE EKKO. DATA:LS_ZEKKOADD TYPE ZEKKOADD. CLEAR:LS_EKKO,LS_ZEKKOADD. SELECT SINGLE * INTO LS_ZEKKOADD FROM ZEKKOADD WHERE EBELN = PURCHASEORDER. SELECT SINGLE * INTO

3.18 采购订单例外信息处理

3.18.1   业务方案描述 采购订单生成后,如果主生产计划发生了改变(提前.推后.取消),会导致以生成采购订单的相应改变,改变的类型同样包括:提前.托后.取消三种情况. 对于采购例外信息的处理及时.以及ERP系统如何支持业务流程的有效运作,将是对业务执行的一种快捷操作处理. 通过按照一定的规则驱动例外信息的生成,这些规则包括: 1)仅处理采购订单例外,其它例外(作业.采购申请.销售订单等)不必生成例外信息. 2)采购订单提前必须生成例外信息,采购订单托后一定天数内(按照Item设置)需要处理

采购单据审批研究

流程 采购模块允许你使用通用的流程审批很多不同单据类型. Oracle采购模块中的单据审批路径包括如下单据类型: 采购申请 内部申请 标准采购订单 计划采购订单 一揽子采购协议 全球采购协议 一揽子采购协议发放 计划发放 合同采购协议 全球合同采购协议 主要采购类型的审批路径被分解为以下两个工作流: 采购订单审批工作流(poxwfpoa.wft) 采购申请审批工作流(poxwfrqa.wft) 下面的项目类型在两个主要的工作流中都会讲到: poxwfpoa.wft - POAPPRV poxwf

Oracle EBS-SQL (MRP-3):检查例外信息查询_建议取消_采购订单.sql

select msi.segment1                                    编码 ,msi.description                                   描述 ,mr.old_order_quantity                        数量 ,mr.old_schedule_date             订单需求日期 ,mipo.po_number                             订单号

Oracle EBS-SQL (PO-5):采购订单控制信息查询.sql

select distinct pla.po_header_id, --pha.type_lookup_code, pha.segment1       采购订单号, appf.full_name            采购员, pla.line_num               订单行, msi.segment1          物料编码, pla.item_description 物料说明, case when pha.Authorization_Status='APPROVED' th

SAP采购申请审批记录增强

业务需要,开发就搞.... EBAN中增强结构:CI_EBANDB ANAME 1 类型 UNAME CHAR 12 0 用户名 ADATE 1 类型 AEDAT DATS 8 0 更改日期 ATIME 1 类型 UZEIT TIMS 6 0 时间 BNAME 1 类型 UNAME CHAR 12 0 用户名 BDATE 1 类型 AEDAT DATS 8 0 更改日期 BTIME 1 类型 UZEIT TIMS 6 0 时间 二级审批 ME54N的增强: LMEREQF06 在函数:ME_UP

3.11 手工创建采购订单价格控制

3.11.1   业务方案描述 对Oracle标准<采购订单>界面进行手工下达时进行价格控制. 对于手工创建采购的订单,不希望通过输入采购价格,而是需要从一揽子采购协议中直接获取价格.如果没有协议价格,需要取该物料的标准成本. 3.11.2   业务方案逻辑控制 1. 单价取值逻辑: 1) 按照订单上的供应商.供应商地点.物料编码自动查找一揽子采购协议,用创建日期与一揽子采购协议上的日期分段匹配价格. 2) 如果找不到,则取一揽子协议行上的价格. 3)如果取不到,取该物料编码标准成本. 4)如

MM--发票校验 及基于采购订单的MIRO发票校验过程(

一.介绍发票校验是物料管理(MM)系统的一部分.它提供物料管理部分和财务会计, 成本控制和资产管理部分的连接.物料管理模块的发票校验为以下目的服务:它完成物料采购的全过程 - 物料采购从采购申请开始,接下来是采购和收货, 并以收到发票而结束.它允许处理不基于物料采购的发票(例如,服务费, 其它花费,过程费用, 等等).它允许处理贷项凭证, 既可以是发票的取消, 也可以是打折扣. 发票校验不是对支付进行处理, 也不是对发票进行分析. 这些需要处理的信息被传递到其它部门. 发票校验的任务包括:输入接

3.12 批量创建采购订单

3.12.1   业务方案描述 在生成采购订单前,由采购员审核计划结果,根据供应商的供货状况调整供应商供货数量.供货日期. 所有合格供应商都能够通过下单平台批量下达采购订单,尽管供应商没有供货比例,或供货比例为0. 一个集成的界面,清晰的列出MRP/DRP结果,及相关辅助信息.以帮助仓管员调整计划时获得一些决策信息: 1)审核计划结果: 2)指定供应商: 3)调整计划结果: 4)批量生成采购订单: 3.12.2   业务方案逻辑控制(包含三部分) MRP建议补充程序: 1)将ASL中的该物料可供