采购申请创建(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 会缺少一部分字段,比如税号,表头文本。

相关推荐
XDHCOM21 小时前
ORA-32484重复列名错误,ORACLE数据库CYCLE子句故障修复与远程处理方案
数据库·oracle
云烟成雨TD21 小时前
Spring AI Alibaba 1.x 系列【6】ReactAgent 同步执行 & 流式执行
java·人工智能·spring
lwx91485221 小时前
Linux-Shell算术运算
linux·运维·服务器
于慨21 小时前
Lambda 表达式、方法引用(Method Reference)语法
java·前端·servlet
swg32132121 小时前
Spring Boot 3.X Oauth2 认证服务与资源服务
java·spring boot·后端
翻斗包菜21 小时前
PostgreSQL 日常维护完全指南:从基础操作到高级运维
运维·数据库·postgresql
gelald1 天前
SpringBoot - 自动配置原理
java·spring boot·后端
殷紫川1 天前
深入理解 AQS:从架构到实现,解锁 Java 并发编程的核心密钥
java
呆瑜nuage1 天前
MySQL表约束详解:8大核心约束实战指南
数据库·mysql
一轮弯弯的明月1 天前
贝尔数求集合划分方案总数
java·笔记·蓝桥杯·学习心得