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’.