Ci troviamo nel fantastico mondo dei cespiti (detti anche fixed assets) e vorremmo procedere alla creazione da report, sentendoci superiori agli inaffidabili batch input.
Ecco qui uno schema pratico tramite bapi:
-Qualche dichiarazione:
DATA: ls_general_data TYPE bapi1022_feglg001,
ls_key TYPE bapi1022_key,
ls_general_data_x TYPE bapi1022_feglg001x,
ls_inventory TYPE bapi1022_feglg011,
ls_inventory_x TYPE bapi1022_feglg011x,
ls_posting_information TYPE bapi1022_feglg002,
ls_posting_information_x TYPE bapi1022_feglg002x,
ls_time_dependent_data TYPE bapi1022_feglg003,
ls_time_dependent_data_x TYPE bapi1022_feglg003x,
ls_allocations TYPE bapi1022_feglg004,
ls_allocations_x TYPE bapi1022_feglg004x,
ls_origin TYPE bapi1022_feglg009,
ls_origin_x TYPE bapi1022_feglg009x,
ls_invest_acct_assignmnt TYPE bapi1022_feglg010,
ls_invest_acct_assignmnt_x TYPE bapi1022_feglg010x,
ls_real_estate TYPE bapi1022_feglg007,
ls_real_estate_x TYPE bapi1022_feglg007x,
ls_return TYPE bapiret2.
Fondamentalmente è sufficiente compilare nel modo giusto le strutture sopracitate con i dati giusti al posto giusto, e poi richiamare la seguente bapi (ricordarsi di riempire sia le strutture con i dati, che le rispettive strutture flag con gli ‘X’ corrispondenti..)
CALL FUNCTION 'BAPI_FIXEDASSET_CREATE1' EXPORTING key = ls_key createsubnumber = createsub postcap = postcap * testrun = 'X' "TEST generaldata = ls_general_data generaldatax = ls_general_data_x * inventory = ls_inventory * inventoryx = ls_inventory_x postinginformation = ls_posting_information postinginformationx = ls_posting_information_x timedependentdata = ls_time_dependent_data timedependentdatax = ls_time_dependent_data_x allocations = ls_allocations allocationsx = ls_allocations_x origin = ls_origin originx = ls_origin_x * investacctassignmnt = ls_invest_acct_assignmnt * investacctassignmntx = ls_invest_acct_assignmnt_x * realestate = ls_real_estate * realestatex = ls_real_estate_x IMPORTING assetcreated = ps_ls_asset_created return = ls_return. IF ls_return-type = 'S'. COMMIT WORK AND WAIT. ELSE. CLEAR: ps_ls_asset_created. ps_ws_error = ls_return-message. ENDIF.
A seconda del customizing e della classe cespiti possono accadere diverse cose.
Sicuramente i campi ls_key-companycode (società/BUKRS) e ls_general_data-assetclass (classe cespiti/ANKL) sono obbligatori.
A seconda del customizing, per ogni classe cespiti abbiamo range di numerazione diversi:
- Se il range è esterno, sarà necessario compilare anche il campo Numero Cespite ( ls_key-ASSET ) e il campo Numero Cespite Secondario ( ls_key-SUBNUMBER)
- Altrimenti se c’è numerazione interna, è necessario pescare sull’ANLA l’ultimo numero generato per la classe cespite desiderata.
Comunque ricordiamoci che se vogliamo generare un cespite secondario, è necessario flaggare il parametro CREATESUBNUMBER.
Se vogliamo creare un cespite a partire da oggetti già esistenti, possono essere utili le funzioni *MAP* del gruppo funzioni 1022, pescando i dati dalle anagrafiche ANLA e ANLZ e mapparli nelle strutture ad hoc della bapi.
Buon divertimento!
Posted under AA - cespiti, ABAP, BAPI
This post was written by Alberto on luglio 27, 2009
