Cerca nel blog

mercoledì 29 novembre 2017

ABAP: BDT (Business Data Toolset) Aggiunta campi custom a RECN

BDT (Business Data Toolset) Aggiunta campi custom a RECN

Per aggiungere dei campi custom alla transazione RECN (gestione contratti di Real Estate), dato che non sono disponibili BADI o EXIT appropriate per soddisfare il requisito, l'approccio di Business Data Toolset (BDT) viene adottato per ottenere lo stesso risultato. Di seguito sono riportati i passaggi che potrebbero contribuire all'aggiunta dei campi personalizzati:

Supponiamo di voler aggiungere il campo custom “documento di acquisto” alla transazione RECN.
Richiamare la transazione SE11 e inserire nel campo tabella: VICNCN (tabella contratti di RE), ricercare la struttura CI_VICNCN, e fare doppio click sulla struttura. Se non è stata mai creata vi verrà richiesto di crearla.


Inserire la descrizione, il campo da aggiungere il tipo, poi salvare e attivare.


Richiamare la transazione SE80, selezionare la voce Function Group e inserire il nome REGC_EXT_EXAMPLE, copiarlo in un nuovo Function group chiamato ZZZZ_REGC_EXT.


Rinominare i vecchi moduli di funzione in nuovi moduli di funzione (iniziando con 'Z') come segue:
  

Salvare e attivare. 
Pubblica la tua applicazione. Per la pubblicazione chiama le seguenti transazioni per ciascun oggetto applicazione.

Transaction
          Object
REBDAO0001
Architectural object
REBDBE0001
Business entity
REBDBU0001
Building
REAJCG0001
Comparative group of apartments
REGC0001
RE contract
RESCPG0001
Participation group
REBDPR0001
Property
REBDRO0001
Rental object
RESCSU0001
Settlement unit

Nel nostro caso consideriamo la transazione REGC0001, richamandola compare la seguente schermata:
   
Inserire una nuova Entry, e salvare
  
Pubblichiamo la nostra schermata, per farlo seguiamo i seguenti passaggi:
(Tutte le impostazioni sono specifiche del client e quindi da trasportare in tutti i client dove richiesto)
Richiamare la transazione SPRO.
Selezionare IMG activity ‘Dialog -> Screen Layout -> Field Groups -> Field Groups’.


Creare un nuovo FIELD GROUP.
Scegliere un numero che inizia con ‘7’, ad esempio 701.
Nell'area "Dati generali", inserisci una Descrizione nel campo "Descrizione" per i tuoi nuovi campi.
Inserire anche il nome del FUNCTION GROUP creato in precedenza (ZZZZ_REGC_EVENT_FMOD2) nel campo "FM per il raggruppamento fld". SALVARE.


Fare doppio click su Field Group-> Fields, per aggiungere il nuovo campo custom.



Creare una nuova VIEW.
Richiamare la transazione SPRO.
Selezionare IMG activity ‘Dialog -> Screen Layout -> Views’.


Per il nostro scopo copiamo l’entry REGC02. E creiamo l’entry ZZZZ01


Premere invio e nella pop-up successiva selezionare “Only copy entry”.
Successivamente selezionare la nostra entry ZZZZ01 e fare doppio click su “View -> Field Groups” ed inserire il field group 701 creato in precedenza.


Sotto la cartella “Further checks” non ci sono entry.

Successivamente creaimo una Sections. Scegliere ‘Dialog -> Screen Layout -> Stages’. Il nome della sezione deve inziare con ‘ZZZZ’ con descrizione, ad esempio ZZZZ01 descrizione Customer Tab.


Successivamente fare doppio click su “Screen -> Views”
Nel campo ITE inserire un numero (le ultime 2 cifre non devono essere 00) inseriamo ad esempio 9000050


Scegliere ‘Dialog -> Screen Layout -> Screens’ e definire lo screen su cui visualizzare il nuovo campo.
Nel caso nostro, che vogliamo inserire il campo custom del tab “Dati Generali”, selezioniamo la riga REGC02 e facciamo doppio click su (Screen -> Sections)
Il numero da inserire deve essere compreso nell’intervallo ma non deve terminare con “00”.
Ad esempio se si deve inserire il campo custom dopo il contratto, selezionare un numero da 300000  e 400000


Modificare il nostro FM ZZZZ_REGC_PAI_Z901, commentando le seguenti linee:
* Get Data of Customer-Include
  
IF lo_busobj IS BOUND.
*    CALL FUNCTION 'API_RE_CN_GET_DETAIL'
*      EXPORTING
*        io_object  = lo_busobj
*      IMPORTING
*        es_ci_data = recn_contract_ci
*      EXCEPTIONS
*        error      = 1
*        OTHERS     = 2.
*    IF sy-subrc <> 0.
*      MESSAGE ID sy-msgid TYPE 'S' NUMBER sy-msgno
*              DISPLAY LIKE sy-msgty
*              WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
*    ENDIF.
  
ENDIF.

Aggiungere nell’include LZZZZ_REGC_EXTTOP la dichiarazione della variabile
DATA  GV_ZZEBELN TYPE RECN_CONTRACT_CI-ZZEBELN.

Andare nel Function Group ZZZZ_REGC_EXT, e modificare il PBO Modules nel seguente modo:
MODULE pbo OUTPUT.

  
FIELD-SYMBOLS <fs_mix> TYPE ANY.

  
DATA lv_recnnr TYPE recnnumber.

  
ASSIGN ('(SAPLRECA_BDT_APPL_TOOL)GS_OBJECT_INFO-OBJIDENT'TO <fs_mix>.

  
IF recn_contract_ci-zzebeln gv_zzebeln AND
     recn_contract_ci
-zzebeln IS INITIAL.

    gv_zzebeln 
recn_contract_ci-zzebeln .
    lv_recnnr 
<fs_mix>+5(6).

    
CALL FUNCTION 'conversion_exit_alpha_input'
      
EXPORTING
        
input  lv_recnnr
      
IMPORTING
        
output lv_recnnr.


    
SELECT SINGLE zzebeln
                  
FROM vicncn
                  
INTO recn_contract_ci-zzebeln
                  
WHERE bukrs <fs_mix>+0(4)
                  
AND recnnr lv_recnnr.
  
ENDIF.

ENDMODULE.                    "pbo OUTPUT