SAP BAPI更改采购订单 BAPI_PO_CHANGE

lt_poitem-po_item = lw_ekpo-ebelp. "行项目
lt_poitem-acctasscat = lw_ekpo-knttp."科目类别

lt_poitem-short_text = lw_ekpo-txz01.
lt_poitem-plant = lw_ekpo-werks. "工厂
lt_poitem-matl_group = lw_ekpo-matkl.
lt_poitem-unlimited_dlv = lw_ekpo-uebtk.
lt_poitem-tax_code = lw_ekpo-mwskz. "税码
lt_poitem-po_unit = lw_ekpo-meins. "单位
lt_poitem-material = lw_ekpo-matnr. "

IF lw_ekko-bsart = ‘SH99’.
lt_poitem-item_cat = ‘D’."项目类别

lt_poitem-pckg_no    =  pckg_no."
lt_poitem-vend_mat   =  lw_ekpo-ebelp.

ELSE.

lt_poitem-item_cat = ''.
lt_poitem-quantity = lw_ekpo-menge.

ENDIF.

APPEND lt_poitem.

  • gt_ebelp-ebelnpssc = gt_ekpo-ebelp.
  • gt_ebelp-idnlf = gt_ekpo-ebelp.
  • APPEND gt_ebelp.
  • CLEAR gt_ebelp.

lt_poitemx-po_item = lt_poitem-po_item.
lt_poitemx-po_itemx = ‘X’.
lt_poitemx-acctasscat = ‘X’.
lt_poitemx-item_cat = ‘X’.

IF lw_ekko-bsart = ‘SH99’.
lt_poitemx-short_text = ‘X’.
ELSE.
lt_poitemx-short_text = ‘’.
ENDIF.
lt_poitemx-plant = ‘X’.
lt_poitemx-matl_group = ‘X’.
lt_poitemx-po_unit = ‘X’.
lt_poitemx-material = ‘X’.
lt_poitemx-unlimited_dlv = ‘X’.

  • lt_poitemx-preq_name = ‘X’.
  • lt_poitemx-preq_no = ‘X’.
  • lt_poitemx-preq_item = ‘X’.
    lt_poitemx-tax_code = ‘X’.

IF lw_ekko-bsart = ‘SH99’.
lt_poitemx-pckg_no = ‘X’.
lt_poitemx-vend_mat = ‘X’.
ELSE.
lt_poitemx-pckg_no = ‘’.
lt_poitemx-vend_mat = ‘’.
lt_poitemx-quantity = ‘X’.
ENDIF.

APPEND lt_poitemx.

"行服务软件包 概览包号
CLEAR:it_service.
pckg_no2 = pckg_no + 1.
it_service-pckg_no = pckg_no.
it_service-line_no   = line_no.
it_service-subpckg_no = pckg_no2.
it_service-outl_ind = 'X'.
APPEND it_service.
pckg_no = pckg_no + 2.
line_no2 = 1.
ext_line = 0.
zekkn = 0 .

  • ESLL

CLEAR:lt_pocond.

IF lw_ekko-bsart = ‘SH99’.

ext_line = lt_poitem-po_item.

line_no2 = line_no2 + 1.

zekkn  = zekkn  + 1.

CLEAR:it_service.
it_service-pckg_no     = pckg_no2.
it_service-line_no     = line_no2.
it_service-ext_line    = ext_line.


it_service-service     = lw_esll-srvpos.
it_service-short_text  = lw_esll-ktext1.
it_service-quantity    = lw_esll-menge.

it_service-base_uom    = lw_esll-meins.

it_service-gr_price    = lw_esll-tbtwr. "lw_esll-brtwr .
lt_pocond-cond_value   = lt_pocond-cond_value + it_service-gr_price.


it_service-hi_line_no  = line_no.
APPEND it_service.


lt_posrvaccessvalues-pckg_no   = pckg_no2.
lt_posrvaccessvalues-line_no   = line_no2.
lt_posrvaccessvalues-serial_no = zekkn .

APPEND lt_posrvaccessvalues.

ELSE.

lt_pocond-cond_value = lw_esll-tbtwr. "brtwr.

ENDIF.
zekkn = zekkn + 1.

lt_poaccount-po_item = lw_ekkn-ebelp.
lt_poaccount-serial_no = ‘1’ .
lt_poaccount-quantity = lw_ekpo-menge.

lt_poaccount-gl_account = lw_ekkn-sakto." 总账科目

  • lt_poaccount-wbs_element = lw_ekkn-ps_psp_pnr.

SELECT SINGLE posid INTO lt_poaccount-wbs_element FROM prps WHERE pspnr = lw_ekkn-ps_psp_pnr.

lt_poaccount-costcenter = lw_ekkn-kostl.

lt_poaccount-co_area = ‘SHGC’."成本控制域

IF lw_ekpo-knttp = ‘F’.

lt_poaccount-orderid = lw_ekkn-aufnr."订单号

ENDIF.

APPEND lt_poaccount.

lt_poaccountx-po_item = lt_poaccount-po_item.
lt_poaccountx-po_itemx = ‘X’.
lt_poaccountx-serial_no = lt_poaccount-serial_no.

  • lt_poaccountx-serial_nox = ‘X’.
    lt_poaccountx-quantity = ‘X’.
    lt_poaccountx-gl_account = ‘X’. "总账科目
    lt_poaccountx-wbs_element = ‘X’.
  • LT_POACCOUNTX-NETWORK = 'X'.
    
  • lt_poaccountx-costcenter = ‘X’.
    lt_poaccountx-co_area = ‘X’."成本控制域

IF lw_ekpo-knttp = ‘F’.

lt_poaccountx-orderid = 'X'."订单号

ENDIF.

IF lw_ekko-bsart = ‘SH99’.

lt_poaccount-gl_account = 'X'.

ELSE.

lt_poaccount-gl_account = ''.

ENDIF.

APPEND lt_poaccountx.

lt_pocond-itm_number = lw_ekpo-ebelp.
lt_pocond-cond_type = ‘PBXX’.
lt_pocond-cond_value = lt_pocond-cond_value / 10."价格

  • if it_body-peinh is INITIAL or it_body-peinh = 0 or it_body-peinh = ‘’.
    lt_pocond-cond_p_unt = ‘1’.
  • ENDIF.
    lt_pocond-change_id = ‘U’.

APPEND lt_pocond.

CLEAR:lt_pocondx.
lt_pocondx-itm_number = lw_ekpo-ebelp.
lt_pocondx-itm_numberx = ‘X’.
lt_pocondx-cond_type = ‘X’.
lt_pocondx-cond_value = ‘X’. "价格
lt_pocondx-cond_p_unt = ‘X’.
lt_pocondx-change_id = ‘X’.

APPEND lt_pocondx.
CALL FUNCTION ‘BAPI_PO_CHANGE’
EXPORTING
purchaseorder = lw_ekko-ebeln
TABLES
poitem = lt_poitem
poitemx = lt_poitemx
poschedule = lt_poschedule
poschedulex = lt_poschedulex
poaccount = lt_poaccount
poaccountx = lt_poaccountx
poservices = it_service
posrvaccessvalues = lt_posrvaccessvalues
pocond = lt_pocond
pocondx = lt_pocondx
return = gt_return.

CLEAR gs_resp.
LOOP AT gt_return WHERE type = ‘E’ OR type = ‘A’ OR type = ‘X’.
CONCATENATE gs_resp-rcmsg gt_return-message ‘;’ INTO gs_resp-rcmsg.
ENDLOOP.
IF sy-subrc NE 0.
CALL FUNCTION ‘BAPI_TRANSACTION_COMMIT’
EXPORTING
wait = ‘X’.

CLEAR gs_resp.

gs_resp-rcid = '0'.
LOOP AT gt_return WHERE type = 'S' OR type = 'I'.
  CONCATENATE gs_resp-rcmsg gt_return-message ';' INTO gs_resp-rcmsg.
ENDLOOP.

ELSE.
CALL FUNCTION ‘BAPI_TRANSACTION_ROLLBACK’.

gs_resp-rcid = '1'.

ENDIF.

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SAP BAPI_PO_CREATE1是一个SAP系统中的功能模块,用于创建采购订单(Purchase Order)。通过该功能模块,我们可以使用SAP系统来快速创建和维护采购订单的相关数据。 使用BAPI_PO_CREATE1,我们可以通过调用该功能模块来向SAP系统中创建新的采购订单。在调用该功能模块时,我们需要提供一些必要的输入参数,如采购订单的相关信息、采购组织和公司代码等。 这个功能模块可以帮助我们在SAP系统中自动化采购订单的创建流程。它可以根据输入的参数,自动生成采购订单,并将相关的物料、供应商和价格等信息添加到订单中。 通过使用BAPI_PO_CREATE1,我们可以实现以下功能: 1. 创建采购订单:我们可以通过调用该功能模块来创建新的采购订单。在调用时,我们需要提供订单的相关信息,如供应商、物料、数量、交货日期等。系统会根据提供的信息自动创建采购订单。 2. 修改采购订单:除了创建新的采购订单,我们还可以使用BAPI_PO_CREATE1来修改现有的采购订单。在调用时,我们需要提供订单的标识符和要修改的字段及对应的值。系统将根据提供的信息来更新采购订单的数据。 3. 检查采购订单:在调用BAPI_PO_CREATE1之前,我们可以先使用BAPI_PO_EXISTENCE_CHECK来检查采购订单是否存在。这可以帮助我们避免重复创建订单或更新不存在的订单。 总而言之,SAP BAPI_PO_CREATE1是一个用于创建和维护采购订单的功能模块。它可以帮助我们在SAP系统中实现自动化的采购订单处理,并提高采购过程的效率和准确性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值