导语:最近在做OA到SAP固定资产创建的接口,使用到BAPI:【BAPI_FIXEDASSET_CREATE1 】,记录一下。
BAPI名称:BAPI_FIXEDASSET_CREATE1
BAPI描述:固定资产创建
DATA: lw_return TYPE bapiret2.
DATA: BEGIN OF lw_result.
DATA: posnr TYPE posnr_d.
INCLUDE STRUCTURE zsfi002.
DATA: END OF lw_result.
DATA: l_asset TYPE bapi1022_1-assetmaino,
l_subnumber TYPE bapi1022_1-assetsubno,
lw_key TYPE bapi1022_key,
lw_generaldata TYPE bapi1022_feglg001,
lw_inventory TYPE bapi1022_feglg011,
lw_inventoryx TYPE bapi1022_feglg011x,
lw_generaldatax TYPE bapi1022_feglg001x,
lw_timedependentdata TYPE bapi1022_feglg003,
lw_timedependentdatax TYPE bapi1022_feglg003x,
lw_allocations TYPE bapi1022_feglg004,
lw_allocationsx TYPE bapi1022_feglg004x,
lw_original_copy TYPE bapi1022_feglg009,
lw_original_copyx TYPE bapi1022_feglg009x,
lw_depreciationareas TYPE bapi1022_dep_areas, "折旧范围数据
lw_depreciationareasx TYPE bapi1022_dep_areasx,
lt_depreciationareas TYPE STANDARD TABLE OF bapi1022_dep_areas,
lt_depreciationareasx TYPE STANDARD TABLE OF bapi1022_dep_areasx.
DATA: m_lifnr TYPE lifnr,
m_name1 TYPE name1_gp.
DATA: lt_extensionin TYPE STANDARD TABLE OF bapiparex,
ls_extensionin TYPE bapiparex.
DATA: ls_te_anlu TYPE bapi_te_anlu.
* FIELD-SYMBOLS: <FS_RESULT> TYPE ZFIXED_ASSETS.
LOOP AT lt_result INTO lw_result.
CHECK lw_result-anln1 IS INITIAL.
CLEAR: l_asset,
l_subnumber,
lw_key,
lw_generaldata,
lw_generaldatax,
lw_inventory,
lw_inventoryx,
lw_timedependentdata,
lw_timedependentdatax,
lw_allocations,
lw_allocationsx,
lw_depreciationareas,
lw_depreciationareasx,
lt_depreciationareas,
lt_depreciationareasx,lt_extensionin.
*基本视图
lw_key-companycode = lw_result-bukrs. "公司代码
lw_generaldata-assetclass = lw_result-anlkl. "资产分类
lw_generaldata-descript = lw_result-txt50. "资产描述
lw_generaldata-descript2 = lw_result-txa50. "附加资产描述
lw_generaldata-serial_no = lw_result-sernr. "序列号
lw_generaldata-quantity = lw_result-menge. "数量
lw_generaldata-base_uom = lw_result-meins. "单位
lw_generaldata-invent_no = lw_result-invnr. "存货号
lw_generaldata-main_descript = lw_result-anlhtxt."资产主号文本
lw_generaldatax-assetclass = 'X'.
lw_generaldatax-descript = 'X'.
lw_generaldatax-descript2 = 'X'.
lw_generaldatax-serial_no = 'X'.
lw_generaldatax-quantity = 'X'.
lw_generaldatax-base_uom = 'X'.
lw_generaldatax-invent_no = 'X'.
*时间相关
lw_timedependentdata-costcenter = lw_result-kostl. "成本中心
lw_timedependentdata-resp_cctr = lw_result-kostlv."责任成本中心
lw_timedependentdata-maint_ord = lw_result-iaufn. "维护订单
lw_timedependentdata-room = lw_result-raumn. "房间
lw_timedependentdatax-costcenter = 'X'.
lw_timedependentdatax-resp_cctr = 'X' .
lw_timedependentdatax-maint_ord = 'X'.
lw_timedependentdatax-room = 'X' .
*分配ALLOCATIONS
m_lifnr = lw_result-liefe.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = m_lifnr
IMPORTING
output = m_lifnr.
SELECT SINGLE name1 INTO m_name1 FROM lfa1 WHERE lifnr = m_lifnr.
lw_original_copy-vendor_no = m_lifnr.
lw_original_copy-vendor = m_name1.
lw_original_copyx-vendor_no = 'X'.
lw_original_copyx-vendor = 'X'.
lw_allocations-evalgroup1 = lw_result-ord41. "自用或投放
lw_allocations-evalgroup2 = lw_result-ord42. "购入方式
lw_allocationsx-evalgroup1 = 'X'. "自用或投放
lw_allocationsx-evalgroup2 = 'X'. "购入方式
lw_depreciationareas-area = '01'.
lw_depreciationareas-ulife_yrs = lw_result-ndjar ."计划使用年
lw_depreciationareas-ulife_prds = lw_result-ndper ."计划使用月
IF lw_result-dep_key <> '' .
lw_depreciationareas-dep_key = lw_result-dep_key ."折旧码
ENDIF.
lw_depreciationareasx-area = '01' .
IF lw_result-ndjar <> 0 OR lw_result-ndper <> 0 .
lw_depreciationareasx-ulife_yrs = 'X' .
lw_depreciationareasx-ulife_prds = 'X' .
ENDIF.
IF lw_result-dep_key <> '' .
lw_depreciationareasx-dep_key = 'X' .
ENDIF.
APPEND lw_depreciationareas TO lt_depreciationareas.
APPEND lw_depreciationareasx TO lt_depreciationareasx.
ls_te_anlu-comp_code = lw_result-bukrs.
ls_te_anlu-assetmaino = lw_result-anln1.
ls_te_anlu-assetsubno = '0000'.
ls_te_anlu-zccwz = lw_result-zccwz. "增强字段
ls_extensionin-structure = 'BAPI_TE_ANLU'.
ls_extensionin-valuepart1 = ls_te_anlu.
APPEND ls_extensionin TO lt_extensionin.
CALL FUNCTION 'BAPI_FIXEDASSET_CREATE1'
EXPORTING
key = lw_key
generaldata = lw_generaldata
generaldatax = lw_generaldatax
inventory = lw_inventory
inventoryx = lw_inventoryx
timedependentdata = lw_timedependentdata
timedependentdatax = lw_timedependentdatax
allocations = lw_allocations
allocationsx = lw_allocationsx
origin = lw_original_copy
originx = lw_original_copyx
IMPORTING
asset = l_asset
return = lw_return
TABLES
depreciationareas = lt_depreciationareas
depreciationareasx = lt_depreciationareasx
extensionin = lt_extensionin.
lw_result-type = lw_return-type.
IF lw_return-type NE 'E'.
lw_result-anln1 = l_asset.
lw_result-anln2 = l_subnumber.
IF lw_return-type = 'W'.
lw_result-icon = icon_led_yellow.
ELSE.
lw_result-icon = icon_led_green.
ENDIF.
lw_result-message = '资产创建成功'.
* CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' EXPORTING wait = 'X'.
ELSE.
lw_result-icon = icon_led_red .
lw_result-message = lw_result-message && lw_return-message.
gv_error = 'X'.
* CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
ENDIF.
MODIFY lt_result FROM lw_result.
CLEAR: lw_result,lw_return.
ENDLOOP.
IF gv_error = ''.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' EXPORTING wait = 'X'.
es_return-type = 'S'.
es_return-message = '创建成功!'.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
es_return-type = 'E'.
es_return-message = '存在失败数据!'.
ENDIF.
补充:如果需要创建子资产需要再KEY里边填写好父资产,然后在【CREATESUBNUMBER】打上’X’
作者:小飞猪猪猪猪猪猪猪–CSDN