ABAP - 创建采购订单BAPI:BAPI_PO_CREATE1

**创建公司内调拨单变量
  "必要参数
  DATA: ls_poheader    TYPE bapimepoheader,               "PO抬头数据
        ls_poheaderx   TYPE bapimepoheaderx,
        lt_poitem      TYPE TABLE OF bapimepoitem,        "PO行项目
        lt_poitemx     TYPE TABLE OF bapimepoitemx,
        lt_poschedule  TYPE TABLE OF bapimeposchedule,    "PO计划行
        lt_poschedulex TYPE TABLE OF bapimeposchedulx,
        lw_poitem      TYPE bapimepoitem,                 "PO行项目
        lw_poitemx     TYPE bapimepoitemx,
        lw_poschedule  TYPE bapimeposchedule,             "PO计划行
        lw_poschedulex TYPE bapimeposchedulx,
        lt_return      TYPE TABLE OF bapiret2  WITH HEADER LINE,  "返回消息
        lv_message     TYPE bapiret2-message.

  DATA: lv_error TYPE c,            " 出错标识
        lv_ebeln TYPE ekpo-ebeln,   " 采购单号
        ebeln TYPE ekpo-ebeln,      " 采购单号
        etenr TYPE eket-etenr,      " 采购计划行计数器
        ebelp TYPE ekpo-ebelp.      " 采购行号
            
" 1、PO抬头数据
  ls_poheader-po_number    = ebeln.       " 自定义格式的采购凭证
  ls_poheader-doc_date     = sy-datum.    " 采购凭证日期,sy-datum
  ls_poheader-doc_type     = ''.          " 采购凭证类型 bsart

  ls_poheaderx-po_number   = 'X'.
  ls_poheaderx-doc_date    = 'X'.
  ls_poheaderx-doc_type    = 'X'.

  "当公司采购时
  ls_poheader-suppl_plnt   = ''.         " 供应工厂  RESWK
  ls_poheader-comp_code    = ''.         " 公司代码  BURKS
  ls_poheader-purch_org    = '8000'.     " 采购组织  
  ls_poheader-pur_group    = '023'.      " 采购组

  ls_poheaderx-suppl_plnt  = 'X'.
  ls_poheaderx-comp_code   = 'X'.
  ls_poheaderx-purch_org   = 'X'.
  ls_poheaderx-pur_group   = 'X'.

  LOOP AT lt_data INTO lw_data.
    " 2、PO行项目数据
    ebelp = ebelp + '10'.
    lw_poitem-po_item     = ebelp.                " 采购凭证的行项目编号
    lw_poitem-material    = lw_data-matnr.        " 物料代码
    lw_poitem-plant       = lw_data-reswk.        " 接收工厂
    lw_poitem-quantity    = lw_data-menge.        " 数量
    lw_poitem-stge_loc    = lw_data_lgort.        " 接收库存地点     
    lw_poitem-suppl_stloc = lw_data-reslo.        " 发货存储地点 
    lw_poitem-po_unit     = lw_data-meins.        " 采购单位
    APPEND lw_poitem TO lt_poitem.
    CLEAR  lw_poitem.

    lw_poitemx-po_item     = ebelp.
    lw_poitemx-material    = 'X'.
    lw_poitemx-plant       = 'X'.
    lw_poitemx-stge_loc    = 'X'.
    lw_poitemx-suppl_stloc = 'X'.
    lw_poitemx-quantity    = 'X'.
    lw_poitemx-po_unit     = 'X'.
    APPEND lw_poitemx TO lt_poitemx.
    CLEAR  lw_poitemx.

    " 3、计划行数据
    etenr = 1.
    lw_poschedule-po_item        = ebelp.         " 采购凭证的项目编号
    lw_poschedule-sched_line     = etenr.         " 交货计划行计数器
    lw_poschedule-delivery_date  = sy-datum.      " 交货日期
    lw_poschedule-quantity       = lw_DATA-menge. " 已计划数量
    lw_poschedule-com_qty        = lw_DATA-menge. " 承诺数量
    APPEND lw_poschedule TO lt_poschedule.
    CLEAR  lw_poschedule.

    lw_poschedulex-po_item        = ebelp.
    lw_poschedulex-sched_line     = etenr.
    lw_poschedulex-del_datcat_ext = 'X'.
    lw_poschedulex-delivery_date  = 'X'.
    lw_poschedulex-quantity       = 'X'.
    lw_poschedulex-com_qty        = 'X'.
    APPEND lw_poschedulex TO lt_poschedulex.
    CLEAR  lw_poschedulex.
  ENDLOOP.

  " 4、调用BAPI生成采购订单
  CALL FUNCTION 'BAPI_PO_CREATE1'
    EXPORTING
      poheader         = ls_poheader      " 必须参数,接收抬头数据的结构
      poheaderx        = ls_poheaderx     " 必要参数,指定poheader更新字段
    IMPORTING
      exppurchaseorder = lv_ebeln         " 建议参数,采购订单创建成功会返回一个采购订单号
    TABLES
      return           = lt_return        " 建议参数,返回报错信息
      poitem           = lt_poitem        " 必要参数,接收行项目数据的表
      poitemx          = lt_poitemx       " 必要参数,PO行项目更新字段
      poschedule       = lt_poschedule    " 必要参数,接收计划行数据的表
      poschedulex      = lt_poschedulex.  " 必要参数,PO计划行更新字段
  IF LV_EBELN NE SPACE.
    LV_MESSAGE = |生成的采购订单号为:{ LV_EBELN }|.
  ELSE.
    LOOP AT LT_RETURN WHERE TYPE = 'E'.
      LV_MESSAGE = |{ LV_MESSAGE } { LT_RETURN-MESSAGE }|.
    ENDLOOP.
  ENDIF.

  • 9
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值