METHOD zii_si_fii006_s4_ib_syn~si_fii006_s4_ib_syn.
*** **** INSERT IMPLEMENTATION HERE **** ***
DATA: lt_item_req TYPE zdt_fii006_s4_req_item_tab,
ls_item_req LIKE LINE OF lt_item_req,
lt_return_res TYPE zdt_fii006_s4_res_return_tab,
ls_return_res LIKE LINE OF lt_return_res.
DATA:
lv_longtext_flag TYPE char1,
lv_createsubnumber TYPE bapi1022_misc-xsubno, "Create Asset Subnumber?
ls_key TYPE bapi1022_key, "Key of Asset Being Created
ls_reference TYPE bapi1022_reference, "Reference for Creating Using Reference
ls_createsubnumber TYPE bapi1022_misc-xsubno, "Create Asset Subnumber?
ls_creategroupasset TYPE bapi1022_misc-xanlgr, "Indicator: Asset is a group asset
ls_testrun TYPE bapi1022_misc-testrun, "Test Run
ls_generaldata TYPE bapi1022_feglg001, "General Data
ls_generaldatax TYPE bapi1022_feglg001x, "Change Parameters for General Data
ls_inventory TYPE bapi1022_feglg011, "Inventory
ls_inventoryx TYPE bapi1022_feglg011x, "Change Parameters for Inventory
ls_postinginformation TYPE bapi1022_feglg002, "Posting Information
ls_postinginformationx TYPE bapi1022_feglg002x, "Change Parameters for Posting Information
ls_timedependentdata TYPE bapi1022_feglg003, "Time-Dependent Data
ls_timedependentdatax TYPE bapi1022_feglg003x, "Change Parameters for Time-Dependent Data
ls_allocations TYPE bapi1022_feglg004, "Allocations
ls_allocationsx TYPE bapi1022_feglg004x, "Change Parameters for Allocations
ls_origin TYPE bapi1022_feglg009, "Origin
ls_originx TYPE bapi1022_feglg009x, "Change Parameters for Origin
ls_investacctassignmnt TYPE bapi1022_feglg010, "Account Assignment for Investment
ls_investacctassignmntx TYPE bapi1022_feglg010x, "Change Parameters for Investment Account Assignments
ls_networthvaluation TYPE bapi1022_feglg006, "Net worth valuation
ls_networthvaluationx TYPE bapi1022_feglg006x, "Change Parameters for Net Worth Valuation
ls_realestate TYPE bapi1022_feglg007, "Real Estate and Similar Rights
ls_realestatex TYPE bapi1022_feglg007x, "Change Parameters for Real Estate
ls_insurance TYPE bapi1022_feglg008, "Insurance
ls_insurancex TYPE bapi1022_feglg008x, "Change Parameters for Insurance
ls_leasing TYPE bapi1022_feglg005, "Leasing
ls_leasingx TYPE bapi1022_feglg005x. "Change Parameters for Leasing
DATA:
lt_depreciationareas TYPE TABLE OF bapi1022_dep_areas, "Depreciation Areas
lt_depreciationareasx TYPE TABLE OF bapi1022_dep_areasx, "Change Parameters for Depreciation Areas
lt_investment_support TYPE TABLE OF bapi1022_inv_support, "Investment Support Key
lt_extensionin TYPE TABLE OF bapiparex, "Customer Enhancements
lt_cumulatedvalues TYPE TABLE OF bapi1022_cumval, "Cumulative Values
lt_postedvalues TYPE TABLE OF bapi1022_postval, "Posted values
lt_transactions TYPE TABLE OF bapi1022_trtype, "Transactions for Transfer during Fiscal Year
lt_proportionalvalues TYPE TABLE OF bapi1022_propval, "Proportional Values on Transactions
ls_header TYPE thead,
lt_return TYPE TABLE OF bapiret2, "BAPI Return Table
lt_return2 TYPE TABLE OF bapiret2. "BAPI Return Table
-
lt_postingheaders type table of bapi1022_postingheader." marked by ccf 20160808DATA:
ls_depreciationareas TYPE bapi1022_dep_areas, "Depreciation Areas
ls_depreciationareasx TYPE bapi1022_dep_areasx, "Change Parameters for Depreciation Areas
ls_investment_support TYPE bapi1022_inv_support, "Investment Support Key
ls_extensionin TYPE bapiparex, "Customer Enhancements
ls_cumulatedvalues TYPE bapi1022_cumval, "Cumulative Values
ls_postedvalues TYPE bapi1022_postval, "Posted values
ls_transactions TYPE bapi1022_trtype, "Transactions for Transfer during Fiscal Year
ls_proportionalvalues TYPE bapi1022_propval, "Proportional Values on Transactions
ls_return TYPE bapiret2. "BAPI Return Table -
ls_postingheaders type bapi1022_postingheader." marked by ccf 20160808DATA msg_txt TYPE string .
DATA : l_offacc TYPE saknr VALUE ‘0069999999’.DATA: l_bukrs TYPE bukrs,
l_anln1 TYPE bf_anln1,
l_anln2 TYPE bf_anln2.lt_item_req[] = input-mt_fii006_s4_req-item[].
LOOP AT lt_item_req INTO ls_item_req.
IF ls_item_req-anlkl = ''. CLEAR: ls_return_res. ls_return_res-anln1 = ''. ls_return_res-bukrs = ls_item_req-bukrs. ls_return_res-type = 'E'. ls_return_res-mess = '资产分类必填'. APPEND ls_return_res TO lt_return_res. CONTINUE. ENDIF. IF ls_item_req-bukrs = ''. CLEAR: ls_return_res. ls_return_res-anln1 = ''. ls_return_res-bukrs = ls_item_req-bukrs. ls_return_res-type = 'E'. ls_return_res-mess = '公司代码必填'. APPEND ls_return_res TO lt_return_res. CONTINUE. ENDIF. IF ls_item_req-txt50 = ''. CLEAR: ls_return_res. ls_return_res-anln1 = ''. ls_return_res-bukrs = ls_item_req-bukrs. ls_return_res-type = 'E'. ls_return_res-mess = '资产描述必填'. APPEND ls_return_res TO lt_return_res. CONTINUE. ENDIF. IF ls_item_req-anlhtxt = ''. CLEAR: ls_return_res. ls_return_res-anln1 = ''. ls_return_res-bukrs = ls_item_req-bukrs. ls_return_res-type = 'E'. ls_return_res-mess = '资产主号文本必填'. APPEND ls_return_res TO lt_return_res. CONTINUE. ENDIF. -
IF ls_item_req-menge = ''. -
CLEAR: ls_return_res. -
ls_return_res-anln1 = ''. -
ls_return_res-bukrs = ls_item_req-bukrs. -
ls_return_res-type = 'E'. -
ls_return_res-mess = '数量必填'. -
APPEND ls_return_res TO lt_return_res. -
CONTINUE. -
ENDIF. -
IF ls_item_req-meins = ''. -
CLEAR: ls_return_res. -
ls_return_res-anln1 = ''. -
ls_return_res-bukrs = ls_item_req-bukrs. -
ls_return_res-type = 'E'. -
ls_return_res-mess = '单位必填'. -
APPEND ls_return_res TO lt_return_res. -
CONTINUE. -
ENDIF. IF ls_item_req-kostl = ''. CLEAR: ls_return_res. ls_return_res-anln1 = ''. ls_return_res-bukrs = ls_item_req-bukrs. ls_return_res-type = 'E'. ls_return_res-mess = '成本中心必填'. APPEND ls_return_res TO lt_return_res. CONTINUE. ENDIF. IF ls_item_req-gsber = ''. CLEAR: ls_return_res. ls_return_res-anln1 = ''. ls_return_res-bukrs = ls_item_req-bukrs. ls_return_res-type = 'E'. ls_return_res-mess = '业务范围必填'. APPEND ls_return_res TO lt_return_res. CONTINUE. ENDIF. IF ls_item_req-ord42 = ''. CLEAR: ls_return_res. ls_return_res-anln1 = ''. ls_return_res-bukrs = ls_item_req-bukrs. ls_return_res-type = 'E'. ls_return_res-mess = '资产使用人必填'. APPEND ls_return_res TO lt_return_res. CONTINUE. ENDIF. IF ls_item_req-kostlv = ''. CLEAR: ls_return_res. ls_return_res-anln1 = ''. ls_return_res-bukrs = ls_item_req-bukrs. ls_return_res-type = 'E'. ls_return_res-mess = '资产管理部门必填'. APPEND ls_return_res TO lt_return_res. CONTINUE. ENDIF. -
IF ls_item_req-ord41 = ''."固定资产创建的接口,不需要则个使用状态的字段,资产还没买回来,没有状态 -
CLEAR: ls_return_res. -
ls_return_res-anln1 = ''. -
ls_return_res-bukrs = ls_item_req-bukrs. -
ls_return_res-type = 'E'. -
ls_return_res-mess = '使用状态必填'. -
APPEND ls_return_res TO lt_return_res. -
CONTINUE. -
ENDIF. CLEAR lt_depreciationareas[]. CLEAR lt_depreciationareasx[]. CLEAR lt_cumulatedvalues[]. CLEAR lt_postedvalues[]. CLEAR lt_transactions[]. CLEAR lt_return[]. CLEAR lv_longtext_flag. CLEAR lv_createsubnumber. CLEAR ls_key. CLEAR: ls_generaldata,ls_generaldatax. CLEAR: ls_allocations,ls_allocationsx. CLEAR: ls_origin,ls_originx. CLEAR: ls_investacctassignmnt, ls_investacctassignmntx. CLEAR ls_postinginformation. CLEAR ls_postinginformationx. CLEAR ls_timedependentdata. CLEAR ls_timedependentdatax. CLEAR: l_bukrs, l_anln1, l_anln2. ls_key-companycode = ls_item_req-bukrs. -
ls_key-asset = ls_item_req-anln1. -
ls_key-subnumber = ls_item_req-anln2. CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' EXPORTING input = ls_item_req-anlkl IMPORTING output = ls_generaldata-assetclass. ls_generaldatax-assetclass = 'X'. -
ls_generaldata-serial_no = ls_item_req-sernr. -
ls_generaldatax-serial_no = 'X'. ls_generaldata-descript = ls_item_req-txt50. ls_generaldatax-descript = 'X'. -
ls_generaldata-descript2 = ls_item_req-txa50. -
ls_generaldatax-descript2 = 'X'. ls_generaldata-main_descript = ls_item_req-anlhtxt. ls_generaldatax-main_descript = 'X'. -
ls_generaldata-quantity = ls_item_req-menge. -
ls_generaldatax-quantity = 'X'. -
ls_generaldata-invent_no = ls_item_req-invnr. -
ls_generaldatax-invent_no = 'X'. -
CALL FUNCTION 'CONVERSION_EXIT_CUNIT_INPUT' -
EXPORTING -
input = ls_item_req-meins -
language = sy-langu -
IMPORTING -
output = ls_generaldata-base_uom -
EXCEPTIONS -
unit_not_found = 1 -
OTHERS = 2. -
ls_generaldatax-base_uom = 'X'. -
ls_postinginformation-cap_date = sy-datum. -
ls_postinginformationx-cap_date = 'X'. -
ls_timedependentdata-intern_ord = ls_item_req-caufn.
-
ls_timedependentdatax-intern_ord = ‘X’.
CALL FUNCTION ‘CONVERSION_EXIT_ALPHA_INPUT’
EXPORTING
input = ls_item_req-kostl
IMPORTING
output = ls_timedependentdata-costcenter.
ls_timedependentdatax-costcenter = ‘X’.CALL FUNCTION ‘CONVERSION_EXIT_ALPHA_INPUT’
EXPORTING
input = ls_item_req-kostlv
IMPORTING
output = ls_timedependentdata-resp_cctr.
ls_timedependentdatax-resp_cctr = ‘X’.ls_timedependentdata-bus_area = ls_item_req-gsber.
ls_timedependentdatax-bus_area = ‘X’. -
ls_origin-type_name = ls_item_req-typbz. -
IF ls_origin-type_name <> ''. -
ls_originx-type_name = 'X'. -
ENDIF. -
IF ls_item_req-caufn IS NOT INITIAL. -
ls_investacctassignmnt-invest_ord = ls_item_req-caufn. -
ls_investacctassignmntx-invest_ord = 'X'. -
ENDIF. -
ls_allocations-evalgroup1 = ls_item_req-ord41. -
ls_allocationsx-evalgroup1 = 'X'. ls_allocations-evalgroup2 = ls_item_req-ord42+2(4). ls_allocationsx-evalgroup2 = 'X'. ls_allocations-evalgroup5 = ls_item_req-gdlgrp. ls_allocationsx-evalgroup5 = 'X'. -
CLEAR:ls_depreciationareasx,ls_depreciationareas. -
ls_depreciationareas-area = '01'. -
ls_depreciationareasx-area = '01'. -
ls_depreciationareas-dep_key = ls_item_req-afasl. -
ls_depreciationareasx-dep_key = 'X'. -
ls_depreciationareas-ulife_yrs = ls_item_req-ndjar. -
ls_depreciationareasx-ulife_yrs = 'X'. -
ls_depreciationareas-ulife_prds = ls_item_req-ndper. -
ls_depreciationareasx-ulife_prds = 'X'. -
"取资产化日期下一期间的20日作为折旧开始日期 -
CLEAR: lv_gjahr, lv_poper. -
CALL FUNCTION 'DATE_TO_PERIOD_CONVERT' -
EXPORTING -
i_date = ls_item_req-aktiv
** I_MONMIT = 00
-
i_periv = 'Z4' -
IMPORTING -
e_buper = lv_poper -
e_gjahr = lv_gjahr -
EXCEPTIONS -
input_false = 1 -
t009_notfound = 2 -
t009b_notfound = 3 -
OTHERS = 4. -
IF sy-subrc <> 0.
** Implement suitable error handling here
-
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno -
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4 INTO ls_item_req-msg. -
ls_item_req-mtype = 'E'. -
MODIFY lt_zfit002 FROM ls_item_req. -
CONTINUE. -
ENDIF. -
IF lv_poper = '012'. -
lv_gjahr = lv_gjahr + 1. -
lv_poper = '001'. -
ELSEIF lv_poper IS NOT INITIAL. -
lv_poper = lv_poper + 1. -
ENDIF. -
ls_depreciationareas-odep_start_date = lv_gjahr && lv_poper+1(2) && '20'. -
IF ls_depreciationareas-odep_start_date IS NOT INITIAL. -
ls_depreciationareasx-odep_start_date = 'X'. -
ENDIF.
** ls_depreciationareas-exp_ulife_yrs = ls_item_req-ndabj.
** ls_depreciationareasx-exp_ulife_yrs = ‘X’.
**
** ls_depreciationareas-exp_ulife_prds = ls_item_req-ndabp.
** ls_depreciationareasx-exp_ulife_prds = ‘X’.
*
-
APPEND ls_depreciationareas TO lt_depreciationareas. -
APPEND ls_depreciationareasx TO lt_depreciationareasx. -
IF ls_item_req-longtext IS NOT INITIAL."标识在CMOD ZCO01 EXIT_SAPLAIST_002 -
lv_longtext_flag = 'X'. -
EXPORT lv_longtext_flag TO MEMORY ID 'AS01_LONGTEXT'. -
ENDIF. -
IF ls_item_req-anln2 IS NOT INITIAL. -
lv_createsubnumber = 'X'. -
ENDIF. -
IF ls_item_req-kansw01 > 0 OR ls_item_req-knafa01 <> 0. -
CLEAR:ls_cumulatedvalues. -
ls_cumulatedvalues-fisc_year = sy-datum(4). -
ls_cumulatedvalues-area = ls_item_req-afabe01. -
ls_cumulatedvalues-acq_value = ls_item_req-kansw01. -
ls_cumulatedvalues-ord_dep = ls_item_req-knafa01 * -1. -
APPEND ls_cumulatedvalues TO lt_cumulatedvalues. -
ENDIF. -
IF ls_item_req-kansw30 > 0 OR ls_item_req-knafa30 <> 0. -
CLEAR:ls_cumulatedvalues. -
ls_cumulatedvalues-fisc_year = sy-datum(4). -
ls_cumulatedvalues-area = ls_item_req-afabe30. -
ls_cumulatedvalues-acq_value = ls_item_req-kansw30. -
ls_cumulatedvalues-ord_dep = ls_item_req-knafa30 * -1. -
APPEND ls_cumulatedvalues TO lt_cumulatedvalues. -
ENDIF. -
IF ls_item_req-nafag01 <> 0. -
CLEAR: ls_postedvalues. -
ls_postedvalues-fisc_year = sy-datum(4). -
ls_postedvalues-area = ls_item_req-afabe01. -
ls_postedvalues-ord_dep = ls_item_req-nafag01 * -1. -
APPEND ls_postedvalues TO lt_postedvalues. -
ENDIF. -
IF ls_item_req-nafag30 <> 0. -
CLEAR: ls_postedvalues. -
ls_postedvalues-fisc_year = sy-datum(4). -
ls_postedvalues-area = ls_item_req-afabe30. -
ls_postedvalues-ord_dep = ls_item_req-nafag30 * -1. -
APPEND ls_postedvalues TO lt_postedvalues. -
ENDIF. -
"本年资产购置价值 -
IF ls_item_req-anbtr <> 0. -
CLEAR: ls_transactions. -
ls_transactions-fisc_year = sy-datum(4). -
ls_transactions-current_no = 1. -
ls_transactions-area = '01'. -
ls_transactions-valuedate = ls_item_req-aktiv. -
ls_transactions-assettrtyp = ls_item_req-bwasl. -
ls_transactions-amount = ls_item_req-anbtr. -
APPEND ls_transactions TO lt_transactions. -
ENDIF. -
IF ls_item_req-anbtr30 <> 0. -
CLEAR: ls_transactions. -
ls_transactions-fisc_year = sy-datum(4). -
ls_transactions-current_no = 1. -
ls_transactions-area = '30'. -
ls_transactions-valuedate = ls_item_req-aktiv. -
ls_transactions-assettrtyp = ls_item_req-bwasl. -
ls_transactions-amount = ls_item_req-anbtr30. -
APPEND ls_transactions TO lt_transactions. -
ENDIF. CALL FUNCTION 'BAPI_FIXEDASSET_CREATE1' EXPORTING key = ls_key -
REFERENCE = -
CREATESUBNUMBER = -
POSTCAP = -
CREATEGROUPASSET = -
TESTRUN = generaldata = ls_generaldata generaldatax = ls_generaldatax -
INVENTORY = -
INVENTORYX = -
POSTINGINFORMATION = -
POSTINGINFORMATIONX = timedependentdata = ls_timedependentdata timedependentdatax = ls_timedependentdatax allocations = ls_allocations allocationsx = ls_allocationsx -
ORIGIN = -
ORIGINX = -
INVESTACCTASSIGNMNT = -
INVESTACCTASSIGNMNTX = -
NETWORTHVALUATION = -
NETWORTHVALUATIONX = -
REALESTATE = -
REALESTATEX = -
INSURANCE = -
INSURANCEX = -
LEASING = -
LEASINGX = -
GLO_RUS_GEN = -
GLO_RUS_GENX = -
GLO_RUS_PTX = -
GLO_RUS_PTXX = -
GLO_RUS_TTX = -
GLO_RUS_TTXX = -
GLO_RUS_LTX = -
GLO_RUS_LTXX = -
GLO_IN_GEN = -
GLO_IN_GENX = -
GLO_JP_ANN16 = -
GLO_JP_ANN16X = -
GLO_JP_PTX = -
GLO_JP_PTXX = -
GLO_TIME_DEP = -
GLO_RUS_GENTD = -
GLO_RUS_GENTDX = -
GLO_RUS_PTXTD = -
GLO_RUS_PTXTDX = -
GLO_RUS_TTXTD = -
GLO_RUS_TTXTDX = -
GLO_RUS_LTXTD = -
GLO_RUS_LTXTDX = -
GLO_JP_IMPTD = -
GLO_JP_IMPTDX = -
GLO_KR_BUS_PLACE = -
GLO_KR_BUS_PLACEX = -
GLO_NATL_CLFN_CODE = -
GLO_NATL_CLFN_CODEX = -
GLO_PT_FSCL_MAPS = -
GLO_PT_FSCL_MAPSX = IMPORTING companycode = l_bukrs asset = l_anln1 subnumber = l_anln2 -
ASSETCREATED = return = ls_return -
TABLES
-
DEPRECIATIONAREAS = -
DEPRECIATIONAREASX = -
INVESTMENT_SUPPORT = -
EXTENSIONIN = . IF l_anln1 <> '' . CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' EXPORTING wait = 'X'. CLEAR: ls_return_res. ls_return_res-anln1 = |{ l_anln1 ALPHA = OUT }|. CONDENSE ls_return_res-anln1 NO-GAPS. ls_return_res-bukrs = l_bukrs. ls_return_res-type = 'S'. ls_return_res-mess = '资产主数据创建成功'. APPEND ls_return_res TO lt_return_res. ELSE. CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'. CLEAR: ls_return_res. ls_return_res-anln1 = ''. ls_return_res-bukrs = l_bukrs. ls_return_res-type = 'E'. ls_return_res-mess = ls_return-message. APPEND ls_return_res TO lt_return_res. ENDIF.ENDLOOP.
output-mt_fii006_s4_res-return = lt_return_res[].
ENDMETHOD.

该段代码是用于在SAP系统中创建资产主数据的一个接口实现,首先检查输入参数的完整性,如公司代码、资产分类、描述等,然后调用BAPI_FIXEDASSET_CREATE1函数来创建资产,同时处理折旧区域、累积值和已过账值等信息。如果资产创建成功,则提交事务,否则回滚事务。
2405

被折叠的 条评论
为什么被折叠?



