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.