AA(A) – Creazione Cespiti

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

Tags: ,