SAP ABAP BAPI函数50连载之18-BAPI_PR_CREATE采购申请创建

天地不仁,以万物为刍狗。

人性的善恶真是很难区分。执着于技术,也是一种真诚。

今天我们来回顾一下MM模块采购申请创建的BAPI函数BAPI_PR_CREATE。

前台对应的事务代码TCODE是ME51或者ME51N。

 

导入参数如下:

参数名称 关联类型 可选的 说明
PRHEADER BAPIMEREQHEADER 可选 抬头
PRHEADERX BAPIMEREQHEADERX 可选 抬头
TESTRUN BAPIFLAG-BAPIFLAG 可选 测试指示器

 

  • PRHEADER与PRHEADERX常用字段:
    字段名 类型 简短描述
    PR_TYPE BSART 订单类型(采购)
    PREQ_NO BANFN 采购申请编号

    到处参数:

    参数名称 关联类型 说明
    NUMBER BAPIMEREQHEADER-PREQ_NO 采购申请编号
    PRHEADEREXP BAPIMEREQHEADER 抬头

    表参数如下:

    参数名称 关联类型 可选的 说明
    RETURN BAPIRET2 可选 返回信息
    PRITEM BAPIMEREQITEMIMP 必选 行项目
    PRITEMX BAPIMEREQITEMX 可选 行项目
    PRACCOUNT BAPIMEREQACCOUNT 可选 科目分配
    PRACCOUNTX BAPIMEREQACCOUNTX 可选 科目分配
    PRCOMPONENTS BAPIMEREQCOMPONENT 可选 组件的BAPI结构
    PRCOMPONENTSX BAPIMEREQCOMPONENTX 可选 组件的BAPI结构
    PRITEMEXP BAPIMEREQITEM 可选 行项目
    SERIALNUMBER BAPIMEREQSERIALNO 可选 请购单BAPI中的序列号
    SERIALNUMBERX BAPIMEREQSERIALNOX 可选 请购单BAPI中的序列号
    EXTENSIONIN BAPIPAREX 可选 增强,扩展字段

    PRITEM与PRITEMX常用字段

    字段名 类型 简短描述
    PREQ_ITEM BNFPO 采购申请的项目编号
    ACCTASSCAT KNTTP 科目分配类别
    ITEM_CAT PSTYP 采购凭证中的项目类别
    RESERV_NO RSNUM 预留/相关需求的编号
    MATERIAL MATNR18 物料编号(18个字符)
    SHORT_TEXT TXZ01 短文本
    QUANTITY BAMNG 采购申请数量
    UNIT BAMEI 采购申请计量单位
    DELIV_DATE EINDT 项目交货日期
    PLANT EWERK 工厂
    STORE_LOC LGORT_D 库存地点
    PREQ_NAME AFNAM 需求者/要求者名称
    MATL_GROUP MATKL 物料组
    PUR_GROUP EKGRP 采购组
    MRP_CTRLER DISPO 物料需求计划控制员
    PREQ_PRICE BAPICUREXT BAPIs 的货币金额(带有 9 个小数位)
    PREQ_DATE BADAT 需求 (请求) 日期

    PRACCOUNT与PRACCOUNTX常用字段:

    字段名 类型 简短描述
    PREQ_ITEM BNFPO 采购申请的项目编号
    SERIAL_NO DZEKKN 帐户分配的顺序编号
    GL_ACCOUNT SAKNR 总账科目编号
    COSTCENTER KOSTL 成本中心
    ASSET_NO ANLN1 主资产号

作者HOT583.com曾经也是SAP ABAP beginners ,开始学习会有些难度,到处去找Tutorial for Constant。

总结代码demo如下,希望能够给您一点启发~

 

DATA:PR_HEAD TYPE BAPIMEREQHEADER,
PR_HEADX TYPE BAPIMEREQHEADERX,
NUMBER TYPE BAPIMEREQHEADER-PREQ_NO,
PR_ITEM TYPE TABLE OF BAPIMEREQITEMIMP WITH HEADER LINE,
PR_ITEMX TYPE TABLE OF BAPIMEREQITEMX WITH HEADER LINE,
PR_ACCOUNT TYPE TABLE OF BAPIMEREQACCOUNT WITH HEADER LINE,
PR_ACCOUNTX TYPE TABLE OF BAPIMEREQACCOUNTX WITH HEADER LINE,
PR_COMPONENTS TYPE TABLE OF BAPIMEREQCOMPONENT WITH HEADER LINE,
PR_COMPONENTSX TYPE TABLE OF BAPIMEREQCOMPONENTX WITH HEADER LINE,
RETURN TYPE TABLE OF BAPIRET2 WITH HEADER LINE.

LOOP AT GDT_ITEMS WHERE ICON NE ICON_GREEN_LIGHT.
*–调用bapi检查,WWW.HOT583.COM
LS_DATA = GDT_ITEMS.
*行项目赋值
CLEAR:PR_ITEM,LS_ITEM_NO.
PR_ITEM-PREQ_ITEM = ‘00010’.
PR_ITEM-ACCTASSCAT = LS_DATA-KNTTP.
PR_ITEM-ITEM_CAT  = LS_DATA-PSTYP.
IF PR_ITEM-ITEM_CAT = ‘L’ AND LS_DATA-RMATN IS NOT INITIAL.
PR_ITEM-ITEM_CAT = ”.
ENDIF.
PR_ITEM-MATERIAL = LS_DATA-MATNR.
PR_ITEM-SHORT_TEXT = LS_DATA-TXZ01.
PR_ITEM-QUANTITY = LS_DATA-MENGE.

PR_ITEM-UNIT = LS_DATA-MEINS.

PR_ITEM-DELIV_DATE = LS_DATA-LFDAT.
PR_ITEM-PLANT = LS_DATA-WERKS.
PR_ITEM-STORE_LOC = LS_DATA-LGORT.
PR_ITEM-PREQ_NAME = LS_DATA-AFNAM.
PR_ITEM-MATL_GROUP = LS_DATA-MATKL.
PR_ITEM-PUR_GROUP = LS_DATA-EKGRP.
PR_ITEM-MRP_CTRLER = LS_DATA-DISPO.
PR_ITEM-PREQ_PRICE = LS_DATA-PREIS.

PR_ITEM-PREQ_DATE = SY-DATUM.
APPEND PR_ITEM TO PR_ITEM[].

CLEAR:PR_ITEMX.
PR_ITEMX-PREQ_ITEM = ‘00010’.
PR_ITEMX-ACCTASSCAT = ‘X’.
PR_ITEMX-ITEM_CAT  = ‘X’.
PR_ITEMX-MATERIAL = ‘X’.
PR_ITEMX-SHORT_TEXT = ‘X’.
PR_ITEMX-QUANTITY = ‘X’.
PR_ITEMX-UNIT = ‘X’.
PR_ITEMX-DELIV_DATE = ‘X’.
PR_ITEMX-PLANT = ‘X’.
PR_ITEMX-STORE_LOC = ‘X’.
PR_ITEMX-PREQ_NAME = ‘X’.
PR_ITEMX-MATL_GROUP = ‘X’.
PR_ITEMX-PUR_GROUP = ‘X’.
PR_ITEMX-MRP_CTRLER = ‘X’.
PR_ITEMX-PURCH_ORG = ‘X’.
PR_ITEMX-PREQ_PRICE = ‘X’.
APPEND PR_ITEMX TO PR_ITEMX[].
*科目分配
CLEAR:PR_ACCOUNT.
PR_ACCOUNT-PREQ_ITEM = ‘00010’.
PR_ACCOUNT-SERIAL_NO = ’01’.
PR_ACCOUNT-GL_ACCOUNT = LS_DATA-SAKTO.
PR_ACCOUNT-COSTCENTER = LS_DATA-KOSTL.
PR_ACCOUNT-ASSET_NO   = LS_DATA-ANLN1.
APPEND PR_ACCOUNT TO PR_ACCOUNT[].

CLEAR:PR_ACCOUNTX.
PR_ACCOUNTX-PREQ_ITEM = ‘00010’.
PR_ACCOUNTX-SERIAL_NO = ’01’.
PR_ACCOUNTX-GL_ACCOUNT = ‘X’.
PR_ACCOUNTX-COSTCENTER = ‘X’.
PR_ACCOUNTX-ASSET_NO   = ‘X’.
APPEND PR_ACCOUNTX TO PR_ACCOUNTX[].
*抬头
PR_HEAD-PR_TYPE = LS_DATA-BSART.
PR_HEAD-PREQ_NO = LS_BANFN.
PR_HEADX-PR_TYPE = ‘X’.
PR_HEADX-PREQ_NO = ‘X’.
CLEAR:NUMBER.
CALL FUNCTION ‘BAPI_PR_CREATE’
EXPORTING
PRHEADER                     = PR_HEAD
PRHEADERX                    = PR_HEADX
IMPORTING
NUMBER                       = NUMBER
TABLES
RETURN                       = RETURN[]
PRITEM                       = PR_ITEM[]
PRITEMX                      = PR_ITEMX[]
PRACCOUNT                    = PR_ACCOUNT[]
*             PRACCOUNTPROITSEGMENT        =
PRACCOUNTX                   = PR_ACCOUNTX[]
*             PRADDRDELIVERY               =
*             PRITEMTEXT                   =
*             PRHEADERTEXT                 =
*             EXTENSIONIN                  =
*             EXTENSIONOUT                 =
*             PRVERSION                    =
*             PRVERSIONX                   =
*             ALLVERSIONS                  =
PRCOMPONENTS                 = PR_COMPONENTS[]
PRCOMPONENTSX                = PR_COMPONENTSX[].

LOOP AT RETURN.
IF RETURN-TYPE EQ ‘E’ OR RETURN-TYPE EQ ‘A’.
LS_DATA-ICON = ICON_RED_LIGHT.
CONCATENATE LS_DATA-MSG RETURN-MESSAGE INTO LS_DATA-MSG.
ELSEIF RETURN-TYPE EQ ‘S’.
LS_DATA-ICON = ICON_GREEN_LIGHT.
LS_DATA-MSG = ‘数据检验成功!WWW.HOT583.COM‘.
ENDIF.
ENDLOOP.

CALL FUNCTION ‘BAPI_TRANSACTION_ROLLBACK’.

ENDLOOP.

 

本文链接 http://www.hot583.com/2022/04/18/bapi_pr_create/

本文为作者原创,如果这篇文章对您有用,欢迎转载,

转载请务必注明来源《今日热点在看》http://www.hot583.com/

我的微信公众号【 hot583 】 或者在这个链接联系我

微信原文《全文完》

今日热点在看SAP HOT583