Assegnazione dinamica dei campi

Ecco un metodo carino per assegnare in maniera dinamica i valori di campi senza dover ricopiare la logica N volta.

Ipotizziamo che abbiamo una tabella interna, chiamata I_FIELD , dove i record hanno come valore i NOMI dei parametri di input.

Volendo fare un check di ogni campo avremmo dovuto fare :

IF campo IS INITIAL.
  WRITE 'Errore Valorizzazione'.
ENDIF.

ripetuto per i vari campi da controllare.

Invece Avendo la tabella interna con i nomi dei campi basterebbe fare:

FIELD-SYMBOLS:
              <fs_field> LIKE LINE OF i_field,
              <fs_any>   TYPE ANY.

*Loop sulla tabella contenente il nomi dei Parametri/Campi 
UNASSIGN <fs_field>.
LOOP AT I_FIELD ASSIGNING <fs_field>.

*Assegno il valore del record ad un puntatore di tipo ANY
UNASSIGN <fs_any>.
ASSIGN (<fs_field>-nome_field) TO <fs_any>.

*L'assegnazione permette il puntamento al Parametro/Campo e quindi lettura del suo contenuto

*Se il puntatore non è assegnato il Parametro/Campo indicato nella tabella I_FILED non esiste nel codice
  IF <fs_any> IS INITIAL.
    WRITE 'Errore Valorizzazione'.
  ENDIF.

ENDLOOP.

 

cosi facendo si assegna il valore del valore del FS_FIELD al puntatore di tipo any.

Concetto Pratico:

  • <fs_field>-nome_field = ‘PIPPO’ ” Campo presente a video
  • PIPPO = ‘Prova valore Input’. “Ha il seguente valore in input
  • <fs_any> = ‘Prova valore Input’.

Potrebbero interessarti anche...