采购申请创建(BAPI_PR_CREATE/BAPI_REQUISITION_CREATE)

BAPI_PR_CREATE

复制代码
  "bapi BAPI_PR_CREATE
  DATA ls_return  TYPE bapiret2.
  DATA lt_return  TYPE TABLE OF bapiret2.
  DATA ls_pritem  TYPE bapimereqitemimp.
  DATA lt_PRITEM  TYPE TABLE OF bapimereqitemimp.
  DATA ls_PRITEMX TYPE bapimereqitemx.
  DATA lt_PRITEMX TYPE TABLE OF bapimereqitemx.
  DATA ls_head    TYPE bapimereqheader.
  DATA ls_headx   TYPE bapimereqheaderx.
  DATA ls_text    TYPE bapimereqitemtext.
  DATA lt_text    TYPE TABLE OF bapimereqitemtext.
  DATA ls_texth    TYPE bapimereqheadtext.
  DATA lt_texth   TYPE TABLE OF bapimereqheadtext.
  DATA ls_PRACCOUNT  TYPE bapimereqaccount.
  DATA lt_PRACCOUNT  TYPE TABLE OF bapimereqaccount.
  DATA ls_PRACCOUNTX TYPE bapimereqaccountx.
  DATA lt_PRACCOUNTX TYPE TABLE OF bapimereqaccountx.

 "PR_CREAT BAPI
      CLEAR ls_head.
      ls_head-pr_type  = lw_head_in-bsart."采购申请凭证类型
      ls_headx-pr_type = 'X'."采购申请凭证类型
      CLEAR: ls_pritem,ls_pritemx.
      ls_pritem-preq_item            = lv_bnfpo. "行项目
      ls_pritem-acctasscat           = lw_head_in-knttp. "科目分配类别
      ls_pritem-pur_group            = lw_head_in-ekgrp. "采购组
      ls_pritem-preq_name            = lw_head_in-afnam."申请人姓名
      ls_pritem-preq_date            = lw_head_in-badat."需求 (请求) 日期
      ls_pritem-short_text           = lw_head_in-txz01."短文本
      ls_pritem-material             = lw_head_in-matnr."物料编码
      ls_pritem-material_external    = lw_head_in-matnr."物料编码
      ls_pritem-plant                = lw_head_in-werks."工厂
      ls_pritem-store_loc            = lw_head_in-lgort."存储地点
      ls_pritem-matl_group           = lw_head_in-matkl."物料组
      ls_pritem-pur_group            = lw_head_in-ekgrp."采购组
      ls_pritem-quantity             = lw_head_in-menge."采购申请数量
      ls_pritem-unit                 = lw_head_in-meins."采购申请计量单位
      ls_pritem-deliv_date           = lw_head_in-lfdat."项目交货日期
      ls_pritem-des_vendor           = lw_head_in-lifnr."供应商
      ls_pritem-currency             = lw_head_in-waers."货币
      ls_pritem-preq_price           = lw_head_in-preis."采购需求中的价格
      ls_pritem-price_unit           = lw_head_in-peinh."价格单位
      ls_pritem-tax_code             = lw_head_in-mwskz."税码
      ls_pritem-gr_ind    = 'X'."收货标识
      ls_pritem-ir_ind    = 'X'."发票收据标识
      IF ls_pritem-acctasscat = 'ZNB1' ."资产类勾选
        ls_pritem-gr_non_val = 'X'.
      ENDIF.
      "is_item-created_by  = lw_head_in-ernam."负责创建对象的人员姓名
      APPEND ls_pritem TO lt_pritem.

      "项目文本
      CLEAR ls_text.
      ls_text-preq_item = lv_bnfpo.
      ls_text-text_id = 'B01'.
      ls_text-text_line = lw_head_in-itemtext."短文本
      APPEND ls_text TO lt_text.
      "抬头文本
      CLEAR ls_texth.
      ls_texth-preq_item = lv_bnfpo.
      ls_texth-text_id = 'B01'.
      ls_texth-text_line = lw_head_in-headertext."短文本
      APPEND ls_texth TO lt_texth.
      "科目分配
      CLEAR ls_PRACCOUNT.
      ls_PRACCOUNT-preq_item  = lv_bnfpo.
      ls_PRACCOUNT-gl_account = lw_head_in-sakto. "总帐科目
      ls_PRACCOUNT-costcenter = lw_head_in-kostl. "成本中心
      ls_PRACCOUNT-asset_no   = lw_head_in-anln1. "资产
      ls_PRACCOUNT-orderid    = lw_head_in-aufnr. "订单
      ls_PRACCOUNT-co_area  = 'BWUS'. "成本控制范围
      APPEND ls_PRACCOUNT TO lt_PRACCOUNT.

      CLEAR ls_PRACCOUNTx.
      ls_PRACCOUNTx-preq_item  = lv_bnfpo.
      ls_PRACCOUNTx-gl_account = 'X'. "总帐科目
      ls_PRACCOUNTx-costcenter = 'X'. "成本中心
      ls_PRACCOUNTx-asset_no   = 'X'. "资产
      ls_PRACCOUNTx-orderid    = 'X'. "订单
      ls_PRACCOUNTx-co_area    = 'X'. "成本控制范围
      APPEND ls_PRACCOUNTx TO lt_PRACCOUNTx.


      ls_pritemx-preq_item   = lv_bnfpo.
      ls_pritemx-acctasscat        = 'X'.
      ls_pritemx-pur_group         = 'X'.
      ls_pritemx-preq_name         = 'X'.
      ls_pritemx-preq_date         = 'X'.
      ls_pritemx-short_text        = 'X'.
      ls_pritemx-material          = 'X'.
      ls_pritemx-material_external = 'X'.
      ls_pritemx-plant             = 'X'.
      ls_pritemx-store_loc         = 'X'.
      ls_pritemx-matl_group        = 'X'.
      ls_pritemx-pur_group         = 'X'.
      ls_pritemx-quantity          = 'X'.
      ls_pritemx-unit              = 'X'.
      ls_pritemx-deliv_date        = 'X'.
      ls_pritemx-des_vendor        = 'X'.
      ls_pritemx-currency          = 'X'.
      ls_pritemx-preq_price        = 'X'.
      ls_pritemx-price_unit        = 'X'.
      ls_pritemx-tax_code          = 'X'.
      ls_pritemx-gr_ind            = 'X'.
      ls_pritemx-ir_ind            = 'X'.
      ls_pritemx-gr_non_val        = 'X'.
      ls_pritemx-tax_code          = 'X'.
      APPEND ls_pritemx TO lt_pritemx.

        CALL FUNCTION 'BAPI_PR_CREATE'
      EXPORTING
        prheader     = ls_head
        prheaderx    = ls_headx
*       TESTRUN      =
      IMPORTING
        number       = lw_data_out-banfn
        prheaderexp  = ls_prheaderexp
      TABLES
        return       = lt_return
        pritem       = lt_pritem
        pritemx      = lt_pritemx
*       PRITEMEXP    =
*       PRITEMSOURCE =
        praccount    = lt_praccount
*       PRACCOUNTPROITSEGMENT        =
        praccountx   = lt_praccountx
*       PRADDRDELIVERY                =
        pritemtext   = lt_text
        prheadertext = lt_texth
*       EXTENSIONIN  =
*       EXTENSIONOUT =
*       PRVERSION    =
*       PRVERSIONX   =
*       ALLVERSIONS  =
*       prcomponents = lt_PRACCOUNT
*       prcomponentsx = lt_PRACCOUNTx
*       SERVICEOUTLINE               =
*       SERVICEOUTLINEX              =
*       SERVICELINES =
*       SERVICELINESX =
*       SERVICELIMIT =
*       SERVICELIMITX =
*       SERVICECONTRACTLIMITS        =
*       SERVICECONTRACTLIMITSX       =
*       SERVICEACCOUNT               =
*       SERVICEACCOUNTX              =
*       SERVICELONGTEXTS             =
*       SERIALNUMBER =
*       SERIALNUMBERX =
      .

BAPI_REQUISITION_CREATE

复制代码
  "修改BAPI
  DATA lv_number TYPE bapieban-preq_no.
  DATA is_ebano TYPE bapiebanv.
  DATA it_ebano TYPE TABLE OF bapiebanv.
  DATA is_ebann TYPE bapiebanv.
  DATA it_ebann TYPE TABLE OF bapiebanv.
  DATA is_ebkno TYPE bapiebknv.
  DATA it_ebkno TYPE TABLE OF bapiebknv.
  DATA is_ebknn TYPE bapiebknv.
  DATA it_ebknn TYPE TABLE OF bapiebknv.
  DATA is_ebantxo TYPE bapiebantx.
  DATA it_ebantxo TYPE TABLE OF bapiebantx.
  DATA is_ebantxn TYPE bapiebantx.
  DATA it_ebantxn TYPE TABLE OF bapiebantx.
  DATA is_returnc TYPE bapireturn.
  DATA it_returnc TYPE TABLE OF bapireturn.
  "获取
  DATA:it_itemg TYPE TABLE OF bapieban.
  DATA:is_itemg TYPE bapieban.

 CLEAR is_item.
      is_item-preq_item   = lv_bnfpo."行项目
      is_item-doc_type    = lw_head_in-bsart."采购申请凭证类型
      is_item-acctasscat  = lw_head_in-knttp."科目分配类别
      is_item-pur_group   = lw_head_in-ekgrp."采购组
      is_item-created_by  = lw_head_in-ernam."负责创建对象的人员姓名
      is_item-preq_name   = lw_head_in-afnam."申请人姓名
      is_item-preq_date   = lw_head_in-badat."需求 (请求) 日期
      is_item-short_text  = lw_head_in-txz01."短文本
      is_item-material    = lw_head_in-matnr."物料编码
      is_item-plant       = lw_head_in-werks."工厂
      is_item-store_loc   = lw_head_in-lgort."存储地点
      is_item-mat_grp     = lw_head_in-matkl."物料组
      is_item-pur_group   = lw_head_in-ekgrp."采购组
      is_item-quantity    = lw_head_in-menge."采购申请数量
      is_item-unit        = lw_head_in-meins."采购申请计量单位
      is_item-deliv_date  = lw_head_in-lfdat."项目交货日期
      is_item-des_vendor  = lw_head_in-lifnr."供应商
      is_item-des_vendor  = lw_head_in-lifnr."所需供应商
      is_item-currency  = lw_head_in-waers."货币
      is_item-c_amt_bapi  = lw_head_in-preis."采购需求中的价格
      is_item-price_unit  = lw_head_in-peinh."价格单位
      "收货标识
      is_item-gr_ind = 'X'.
      "发票收据标识
      is_item-ir_ind = 'X'.
      "收货,未评估
      IF is_item-doc_type = 'ZNB1' ."资产类勾选
        is_item-gr_non_val = 'X'.
      ENDIF.

      APPEND is_item TO it_item.
      CLEAR is_account.
      is_account-preq_item = lv_bnfpo.
      is_account-g_l_acct = lw_head_in-sakto. "总帐科目
      is_account-cost_ctr = lw_head_in-kostl. "成本中心
      is_account-asset_no = lw_head_in-anln1. "资产
      is_account-order_no = lw_head_in-aufnr. "订单
      is_account-co_area  = 'BWUS'. "成本控制范围
      APPEND is_account TO it_account.
      CLEAR is_ebantx.
      is_ebantx-preq_item = lv_bnfpo.
      is_ebantx-text_id = 'B01'.
      is_ebantx-text_line = lw_head_in-Itemtext.
      APPEND is_ebantx TO it_ebantx.

      CALL FUNCTION 'BAPI_REQUISITION_CREATE'
      IMPORTING
        number                         = lw_data_out-banfn
      TABLES
        requisition_items              = it_item
        requisition_account_assignment = it_account
        requisition_item_text          = it_ebantx
        return                         = it_return
        extensionin                    = it_extension.

俩个抖能创建采购申请。

区别在于BAPI_PR_CREATE字段较全

BAPI_REQUISITION_CREATE 会缺少一部分字段,比如税号,表头文本。

相关推荐
罗超驿7 分钟前
独立实现双向链表_LinkedList
java·数据结构·链表·linkedlist
爱吃土豆的马铃薯ㅤㅤㅤㅤㅤㅤㅤㅤㅤ1 小时前
Linux 查询某进程文件所在路径 命令
linux·运维·服务器
盐水冰1 小时前
【烘焙坊项目】后端搭建(12) - 订单状态定时处理,来单提醒和顾客催单
java·后端·学习
凸头1 小时前
CompletableFuture 与 Future 对比与实战示例
java·开发语言
wuqingshun3141591 小时前
线程安全需要保证几个基本特征
java·开发语言·jvm
Maverick061 小时前
Oracle Redo 日志操作手册
数据库·oracle
努力也学不会java1 小时前
【缓存算法】一篇文章带你彻底搞懂面试高频题LRU/LFU
java·数据结构·人工智能·算法·缓存·面试
攒了一袋星辰2 小时前
高并发强一致性顺序号生成系统 -- SequenceGenerator
java·数据库·mysql
小涛不学习2 小时前
Spring Boot 详解(从入门到原理)
java·spring boot·后端
W.D.小糊涂2 小时前
gpu服务器安装windows+ubuntu24.04双系统
c语言·开发语言·数据库