SAP MM PO 指定数量的采购订单 不使用SAP建议的数量

155 篇文章 15 订阅
63 篇文章 5 订阅
本文档展示了如何通过SAP BAPI接口`BAPI_PO_CREATE1`创建采购订单,并详细说明了代码实现过程。代码中包含了采购订单抬头和行项目的赋值,以及关键参数的设置,如`NO_ROUNDING`,以避免使用SAP建议的采购数量。最后,调用`BAPI_PO_RELEASE`进行审批并提交事务。
摘要由CSDN通过智能技术生成

公司搞VMI,部分订单在SRM上输入,调用SAP的接口生成 PO 返回凭证。

接口操作

 前台操作

 原先想的是生成采购订单,更改这个数量需要增强里面去调整,但是在前台操作,推荐后 再次修改数量是可以保存的,那就是可以不使用推荐值,那么在标准的BAPI里面也是可以的,这里感谢SAP BAPI_PO_CREATE1创建指定数量的PO - 灰信网(软件开发博客聚合)

 分享

注意 GWA_ITEM-NO_ROUNDING / GWA_ITEMX-NO_ROUNDING  都要设置成 ‘X’才有效 

我自己的代码 

FUNCTION ZRFC_SRM_POCREATE.
*"----------------------------------------------------------------------
*"*"局部接口:
*"  IMPORTING
*"     VALUE(LIFNR) TYPE  LIFNR
*"     VALUE(BUKRS) TYPE  BUKRS
*"     VALUE(EKORG) TYPE  EKORG
*"     VALUE(EKGRP) TYPE  BKGRP
*"  EXPORTING
*"     VALUE(L_PO_NUMBER) TYPE  BAPIMEPOHEADER-PO_NUMBER
*"     VALUE(MESSAGE) TYPE  BAPI_MSG
*"     VALUE(L_ERRFLAG) TYPE  BAPI_CORU_RETURN-TYPE
*"  TABLES
*"      VMISTR STRUCTURE  ZVMISTR
*"      VMISTR1 STRUCTURE  ZVMISTR1
*"----------------------------------------------------------------------

  DATA:GS_POHEADER           TYPE                   BAPIMEPOHEADER,
       GS_POHEADERX          TYPE                   BAPIMEPOHEADERX,
       GT_RETURN             TYPE STANDARD TABLE OF BAPIRET2,
       GWA_RETURN            TYPE                   BAPIRET2,
       GT_ITEM               TYPE STANDARD TABLE OF BAPIMEPOITEM,
       GWA_ITEM              TYPE                   BAPIMEPOITEM,
       GT_ITEMX              TYPE STANDARD TABLE OF BAPIMEPOITEMX,
       GWA_ITEMX             TYPE                   BAPIMEPOITEMX,
       GT_POSCHEDULE         TYPE STANDARD TABLE OF BAPIMEPOSCHEDULE,
       GWA_POSCHEDULE        TYPE                   BAPIMEPOSCHEDULE,
       GT_POSCHEDULEX        TYPE STANDARD TABLE OF BAPIMEPOSCHEDULX,
       GWA_POSCHEDULEX       TYPE                   BAPIMEPOSCHEDULX,
       GT_POCOND             TYPE STANDARD TABLE OF BAPIMEPOCOND,
       GWA_POCOND            TYPE                   BAPIMEPOCOND,
       GT_POCONDX            TYPE STANDARD TABLE OF BAPIMEPOCONDX,
       GWA_POCONDX           TYPE                   BAPIMEPOCONDX,
       GT_POCOMPONENTS       TYPE STANDARD TABLE OF BAPIMEPOCOMPONENT,
       GWA_POCOMPONENTS      TYPE                   BAPIMEPOCOMPONENT,
       GWA_POCOMPONENTS_TEMP TYPE                   BAPIMEPOCOMPONENT,
       GT_POCOMPONENTSX      TYPE STANDARD TABLE OF BAPIMEPOCOMPONENTX,
       GWA_POCOMPONENTSX     TYPE                   BAPIMEPOCOMPONENTX.
  DATA:LV_NUM TYPE BAPIMEPOHEADER-PO_NUMBER.
*--------------------------------------------------------------------------------*
*                 抬头赋值
*--------------------------------------------------------------------------------*

  CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
    EXPORTING
      INPUT  = LIFNR
    IMPORTING
      OUTPUT = GS_POHEADER-VENDOR.     "供应商编号

  GS_POHEADER-DOC_TYPE = 'NB'.   "标准订单
* GS_POHEADER-VENDOR = LIFNR.
  GS_POHEADER-PURCH_ORG = EKORG.  "采购组织
  GS_POHEADER-PUR_GROUP = EKGRP.  "采购组
  GS_POHEADER-COMP_CODE = BUKRS.  "公司代码
  GS_POHEADER-CURRENCY = 'RMB'."货币
  GS_POHEADER-DOC_DATE = SY-DATUM.  "采购凭证日期
  GS_POHEADER-LANGU = SY-LANGU.   "语言代码
  GS_POHEADER-STATUS = 'I'.
*      GS_POHEADER-INFO_UPD = 'I'.
*      GS_POHEADER-ITEM_INTVL = ''.
*      GS_POHEADER-ITEM_INTVL = ''.

  GS_POHEADERX-DOC_TYPE = 'X'.
  GS_POHEADERX-VENDOR = 'X'.
  GS_POHEADERX-PURCH_ORG = 'X'.
  GS_POHEADERX-PUR_GROUP = 'X'.
  GS_POHEADERX-COMP_CODE = 'X'.
  GS_POHEADERX-DOC_DATE = 'X'.
  GS_POHEADERX-LANGU = 'X'.       "语言代码
  GS_POHEADERX-CURRENCY = 'X'.    "货币
  GS_POHEADERX-STATUS = 'X'.      "采购凭证状态
* GS_POHEADERX-ITEM_INTVL = 'X'.

*--------------------------------------------------------------------------------*
*                 PO_ITEM1  行项目赋值
*--------------------------------------------------------------------------------*

  LOOP AT VMISTR.
    CLEAR GWA_ITEM.
    CLEAR GWA_ITEMX.
    CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
      EXPORTING
        INPUT  = VMISTR-MATNR
      IMPORTING
        OUTPUT = GWA_ITEM-MATERIAL.    "物料号

    CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
      EXPORTING
        INPUT  = VMISTR-EBELP
      IMPORTING
        OUTPUT = GWA_ITEM-PO_ITEM.     "行项目编号

*    GWA_ITEM-PO_ITEM = '00010'. "采购凭证的项目编号
*    GWA_ITEM-MATERIAL = '000000000018007349'.
*    GWA_ITEM-ITEM_CAT = 'L'.
*    GWA_ITEM-SHORT_TEXT = 'SHORT'."短文本
    GWA_ITEM-QUANTITY = VMISTR-MENGE.
*    GWA_ITEM-PO_UNIT = MEINS ."采购订单的计量单位
    GWA_ITEM-PLANT = VMISTR-WERKS.
    GWA_ITEM-STGE_LOC = VMISTR-LGORT.
*    GWA_ITEM-TAX_CODE = MWSKZ.  "税码
*    GWA_ITEM-DATE_QTY_FIXED = 'X'.      "交货日期和数量己确定
    GWA_ITEM-NO_ROUNDING = 'X'.    "不使用SAP建议采购的数量
    APPEND GWA_ITEM TO GT_ITEM.

    "行项目更新标识赋值
    CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
      EXPORTING
        INPUT  = VMISTR-EBELP
      IMPORTING
        OUTPUT = GWA_ITEMX-PO_ITEM.     "行项目编号

    GWA_ITEMX-PO_ITEMX = 'X'. "采购凭证的项目编号 (行项目 更新标识)
    GWA_ITEMX-MATERIAL = 'X'.
*    GWA_ITEMX-SHORT_TEXT = 'X'."短文本
    GWA_ITEMX-QUANTITY = 'X'."采购订单数量
*    GWA_ITEMX-PO_UNIT = 'X' ."采购订单的计量单位
    GWA_ITEMX-PLANT = 'X'."工厂
    GWA_ITEMX-STGE_LOC = 'X'. "库存地点
*    GWA_ITEMX-ITEM_CAT = 'X'.
*    GWA_ITEMX-TAX_CODE = 'X'.  "税码
*    GWA_ITEMX-DATE_QTY_FIXED = 'X'.
    GWA_ITEMX-NO_ROUNDING = 'X'.    "不使用SAP建议采购的数量
    APPEND GWA_ITEMX TO GT_ITEMX.
  ENDLOOP.

  CALL FUNCTION 'BAPI_PO_CREATE1'
    EXPORTING
      POHEADER               = GS_POHEADER
      POHEADERX              = GS_POHEADERX
*     POADDRVENDOR           =
*     TESTRUN                =
*     MEMORY_UNCOMPLETE      =
*     MEMORY_COMPLETE        =
*     POEXPIMPHEADER         =
*     POEXPIMPHEADERX        =
*     VERSIONS               =
*     NO_MESSAGING           =
*     NO_MESSAGE_REQ         =
*     NO_AUTHORITY           =
*     NO_PRICE_FROM_PO       = 'X'
*     PARK_COMPLETE          =
*     PARK_UNCOMPLETE        =
    IMPORTING
      EXPPURCHASEORDER       = L_PO_NUMBER
*     EXPHEADER              =
*     EXPPOEXPIMPHEADER      =
    TABLES
      RETURN                 = GT_RETURN
      POITEM                 = GT_ITEM
      POITEMX                = GT_ITEMX
*     POADDRDELIVERY         =
*     POSCHEDULE             = GT_POSCHEDULE
*     POSCHEDULEX            = GT_POSCHEDULEX
*     POACCOUNT              =
*     POACCOUNTPROFITSEGMENT =
*     POACCOUNTX             =
*     POCONDHEADER           =
*     POCONDHEADERX          =
*     POCOND                 = GT_POCOND
*     POCONDX                = GT_POCONDX
*     POLIMITS               =
*     POCONTRACTLIMITS       =
*     POSERVICES             =
*     POSRVACCESSVALUES      =
*     POSERVICESTEXT         =
*     EXTENSIONIN            =
*     EXTENSIONOUT           =
*     POEXPIMPITEM           =
*     POEXPIMPITEMX          =
*     POTEXTHEADER           =
*     POTEXTITEM             =
*     ALLVERSIONS            =
*     POPARTNER              =
*     POCOMPONENTS           = GT_POCOMPONENTS
*     POCOMPONENTSX          =       GT_POCOMPONENTSX
    .
  CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
    EXPORTING
      WAIT = 'X'.


  DATA:PO_REL_CODE TYPE BAPIMMPARA-PO_REL_COD.    "审批代码

  SELECT SINGLE FRGC1 INTO PO_REL_CODE
     FROM EKKO
     JOIN T16FS ON T16FS~FRGGR = EKKO~FRGGR AND T16FS~FRGSX = EKKO~FRGSX
     WHERE EBELN = L_PO_NUMBER.

  CALL FUNCTION 'BAPI_PO_RELEASE'
    EXPORTING
      PURCHASEORDER                =  L_PO_NUMBER
      PO_REL_CODE                  =  PO_REL_CODE
*   USE_EXCEPTIONS               = 'X'
*   NO_COMMIT                    = ' '
* IMPORTING
*   REL_STATUS_NEW               =
*   REL_INDICATOR_NEW            =
*   RET_CODE                     =
* TABLES
*   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.
** IMPLEMENT SUITABLE ERROR HANDLING HERE
*ENDIF.

  CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
    EXPORTING
      WAIT = 'X'.

  READ TABLE GT_RETURN INTO GWA_RETURN INDEX 1.
  CLEAR L_ERRFLAG.
  L_ERRFLAG = GWA_RETURN-TYPE.
  IF L_ERRFLAG = 'S'.
    CONCATENATE '创建采购凭证成功,' '凭证号:' L_PO_NUMBER INTO MESSAGE.
  ELSE.
    CONCATENATE '创建采购凭证失败,' '原因:请确认物料和供应商是否匹配!'    GWA_RETURN-MESSAGE INTO MESSAGE.

  ENDIF.

  SELECT  MATNR NETPR  MWSKZ  PEINH INTO TABLE VMISTR1 FROM EKPO WHERE  EBELN = L_PO_NUMBER.
  FIELD-SYMBOLS <FS> TYPE ZVMISTR1.
  LOOP AT VMISTR1 ASSIGNING <FS>.

    DATA: T_FTAXP LIKE TABLE OF FTAXP WITH HEADER LINE.
    DATA:taxrate LIKE FTAXP-KBETR.
    CALL FUNCTION 'GET_TAX_PERCENTAGE'
      EXPORTING
        ALAND   = 'CN'      "国家语言
        DATAB   = SY-DATUM  "当前时间
        MWSKZ   = <FS>-MWSKZ  "税码
        TXJCD   = ' '
      TABLES
        T_FTAXP = T_FTAXP.

    "读取获取出来的数据
    READ TABLE T_FTAXP INTO T_FTAXP  WITH KEY KSCHL = 'MWVS'.
    IF SY-SUBRC EQ 0.
      taxrate = T_FTAXP-KBETR / 1000."税率
    ENDIF.
    <FS>-NETPR = <FS>-NETPR / <FS>-PEINH * ( 1 + taxrate ) .


  ENDLOOP.
ENDFUNCTION.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

gavin_gxh

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值