创建po的bapi BAPI_PO_CREATE1 刚刚sophie提起搜索相关

*/--------- 採購單 表頭資訊
LOOP AT ITAB_PO_HEADER .

    POHEAD-COMP_CODE = ITAB_PO_HEADER-BUKRS .     " 公司
    POHEAD-DOC_TYPE   = ITAB_PO_HEADER-BSART .    " 單據類別
    POHEAD-CREAT_DATE = SY-DATUM   .              " 建立日期
    POHEAD-VENDOR = ITAB_PO_HEADER-LIFNR.         " 供應商
    POHEAD-PURCH_ORG = ITAB_PO_HEADER-EKORG .     " 採購組織
    POHEAD-PUR_GROUP = ITAB_PO_HEADER-EKGRP.      " 採購群組
    POHEAD-LANGU      = SY-LANGU   .
    POHEAD-DOC_DATE   = SY-DATUM.
    POHEADX-COMP_CODE  = C_X.
    POHEADX-DOC_TYPE   = C_X.
    POHEADX-CREAT_DATE = C_X.
    POHEADX-VENDOR     = C_X.
    POHEADX-PURCH_ORG  = C_X.
    POHEADX-PUR_GROUP  = C_X.
    POHEADX-LANGU      = C_X.
    POHEADX-DOC_DATE   = C_X.


*/------------ 物料數量 資訊
      ITAB_POITEM-PO_ITEM  = W_EBELP .             " 項次編號
      ITAB_POITEM-MATERIAL = ITAB_PO-MATNR .       " 料號
      ITAB_POITEM-PLANT    = ITAB_PO-WERKS .       " 工廠
      ITAB_POITEM-STGE_LOC = ITAB_PO-LGORT .       " 倉別
      ITAB_POITEM-QUANTITY = ITAB_PO-LABST .       " 數量
      ITAB_POITEM-PO_UNIT =  ITAB_PO-MEINS .       " 單位
      ITAB_POITEM-NET_PRICE = ITAB_PO-CURR_PR .    " 單價
      ITAB_POITEM-PRICE_UNIT = ITAB_PO-PEINH.      " 單價基數 ITAB_PO-PEINH ,
      ITAB_POITEM-PREQ_NAME = 'BAPI' .             " 申請人
      ITAB_POITEM-RET_ITEM = 'X' .                 " 退貨註記
      ITAB_POITEM-TRACKINGNO = ITAB_PO-EBELN .     " 上一筆採購單
      ITAB_POITEM-SHORT_TEXT = ITAB_PO-TXZ01 .     " 發票號碼資訊
      APPEND ITAB_POITEM.
      CLEAR ITAB_POITEM.

      ITAB_POITEMX-PO_ITEM    = W_EBELP .
      ITAB_POITEMX-PO_ITEMX   = C_X .
      ITAB_POITEMX-MATERIAL   = C_X .
      ITAB_POITEMX-PLANT      = C_X .
      ITAB_POITEMX-STGE_LOC   = C_X .
      ITAB_POITEMX-QUANTITY   = C_X .
      ITAB_POITEMX-PO_UNIT     = C_X .
      ITAB_POITEMX-NET_PRICE   = C_X .
      ITAB_POITEMX-PRICE_UNIT  = C_X .
      ITAB_POITEMX-PREQ_NAME   = C_X .
      ITAB_POITEMX-RET_ITEM    = C_X .
      ITAB_POITEMX-TRACKINGNO  = C_X .
      ITAB_POITEMX-SHORT_TEXT  = C_X .
      ITAB_POITEMX-TAX_CODE   = C_X .
      ITAB_POITEMX-ITEM_CAT   = C_X .
      ITAB_POITEMX-ACCTASSCAT = C_X .
      APPEND ITAB_POITEMX.
      CLEAR ITAB_POITEMX.


*/---------------- 排程資訊
      ITAB_POSCHED-PO_ITEM        = W_EBELP .
      ITAB_POSCHED-SCHED_LINE     = W_EBELP .
      ITAB_POSCHED-DEL_DATCAT_EXT = 'D'.
      DEL_DATE = SY-DATUM + 1.
      WRITE DEL_DATE TO ITAB_POSCHED-DELIVERY_DATE.
      ITAB_POSCHED-DELIV_TIME     = '000001'.
      ITAB_POSCHED-QUANTITY       = ITAB_PO-LABST.
      APPEND ITAB_POSCHED.
      CLEAR ITAB_POSCHED.

      ITAB_POSCHEDX-PO_ITEM        = W_EBELP.
      ITAB_POSCHEDX-SCHED_LINE     = W_EBELP.
      ITAB_POSCHEDX-PO_ITEMX       = C_X.
      ITAB_POSCHEDX-SCHED_LINEX    = C_X.
      ITAB_POSCHEDX-DEL_DATCAT_EXT = C_X.
      ITAB_POSCHEDX-DELIVERY_DATE  = C_X.
      ITAB_POSCHEDX-QUANTITY       = C_X.
      APPEND ITAB_POSCHEDX.
      CLEAR ITAB_POSCHEDX.


*/----CALL BAPI FUNCTION ----------------------------
  CALL FUNCTION 'BAPI_PO_CREATE1'
       EXPORTING
            POHEADER         = POHEAD
            POHEADERX        = POHEADX
            TESTRUN          = ' '
            NO_PRICE_FROM_PO = 'X'
       IMPORTING
            EXPPURCHASEORDER = EX_PO_NUMBER
            EXPHEADER        = EXP_HEAD
       TABLES
            RETURN           = RETURN
            POITEM           = ITAB_POITEM
            POITEMX          = ITAB_POITEMX
            POSCHEDULE       = ITAB_POSCHED
            POSCHEDULEX      = ITAB_POSCHEDX .


  CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
       EXPORTING
            WAIT = 'X' .
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
BAPI_PO_CREATE1是一个针对事务码ME21N的函数模块,用于创建采购订单。它接受抬头和行项目作为输入参数,并根据这些参数创建采购订单[^2]。 在使用BAPI_PO_CREATE1时,需要注意以下几点: 1. 抬头数据:需要提供采购订单的抬头信息,例如供应商、采购组织、采购组等。 2. 行项目数据:需要提供采购订单的行项目信息,例如物料号、数量、价格等。 3. lt_poitem-ematerial字段:在同一个BAPI COMMIT中多次调用BAPI_PO_CREATE1时,需要赋值该字段。如果不赋值,系统会自动将其值设置为lt_poitem-material的值,并在后续调用中记忆该值。如果不正确地赋值该字段,可能会导致后续的BAPI调用报错[^1]。 下面是一个使用BAPI_PO_CREATE1创建采购订单的示例代码: ```python import pyrfc # 创建RFC连接 conn = pyrfc.Connection(user='username', passwd='password', ashost='host', sysnr='00', client='client') # 准备抬头数据 header_data = { 'COMP_CODE': '0001', 'DOC_TYPE': 'NB', 'VENDOR': '10000001', # 其他抬头字段... } # 准备行项目数据 item_data = [ { 'PO_ITEM': '00010', 'MATERIAL': 'MATERIAL1', 'QUANTITY': 10, # 其他行项目字段... }, { 'PO_ITEM': '00020', 'MATERIAL': 'MATERIAL2', 'QUANTITY': 20, # 其他行项目字段... }, # 其他行项目... ] # 调用BAPI_PO_CREATE1创建采购订单 result = conn.call('BAPI_PO_CREATE1', POHEADER=header_data, POITEM=item_data) # 检查返回结果 if result['RETURN'][0]['TYPE'] == 'E': print('创建采购订单失败:', result['RETURN'][0]['MESSAGE']) else: print('创建采购订单成功:', result['RETURN'][0]['MESSAGE']) # 关闭RFC连接 conn.close() ``` 请注意,上述示例代码中的参数值需要根据实际情况进行替换。另外,还需要安装pyrfc库来进行RFC连接的操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值