Il listato ottenuto da un report ABAP/4 può essere ulteriormente trattato anche dopo il suo ottenimento, tramite la pressione di un tasto funzionale o facendo clic in un particolare punto del tabulato stesso. Ad esempio, è possibile aprire un’altra finestra facendo semplicemente clic in un qualsiasi punto oppure richiamare un’altra transazione. In questi casi l’istruzione da inserire nel programma è:
AT LINE-SELECTION.
Facendola seguire da tutte le istruzioni che si vuole eseguire in caso di pressione del clic su una qualsiasi riga del listato che, in questo caso, è chiamato listato iterativo. Ad esempio:

Con tali istruzioni si ottiene una finestra avente come vertice superiore sinistro la colonna 02 e la riga 10 e come vertice inferiore destro la colonna 35 e la riga 15.
Si noti che le istruzioni dopo la AT LINE-SELECTION sono attivate ogni volta che l’utente fa clic in una riga ottenuta tramite una istruzione WRITE, quindi anche quando si preme clic in una delle righe interne alla finestra stessa e non solo in relazione al listato principale. E’ compito del programmatore operare le opportune differenziazioni a seconda che il clic sia operato sul listato principale o su una finestra. Per verificare in quale listato è stato effettuato il clic è sufficiente testare il valore del campo di sistema SY-LSIND che assume il valore 1 se ci troviamo nel listato principale, 2 se è attiva la prima finestra, 3 se è attiva una seconda finestra aperta sulla prima, … Nell’esempio precedente, se si volesse aprire una nuova finestra da attivare premendo clic nella prima finestra, si potrebbe operare come segue:

E’ possibile, inoltre, memorizzare il valore che un campo della riga di stampa aveva al momento dell’emissione della riga (nell’istruzione WRITE) per poi riprenderlo successivamente nell’evento AT LINE-SELECTION. Questo è realizzabile con l’istruzione HIDE seguita dal nome del campo che si intende memorizzare. Tale istruzione è efficace solo se è eseguita immediatamente dopo la WRITE. Ad esempio:

Nella fase di START OF SELECTION è effettuato uno scorrimento della tabella MARA che contiene tutti i materiali presenti nel sistema stampando per ognuno una riga che prevede il codice (MATNR) e l’unità di misura (MEINS) del materiale, memorizzando per ogni riga stampata il corrispondente valore MARA-MATNR (tramite l’istruzione HIDE), per poi riprenderlo in fase AT LINE-SELECTION aprendo una finestra che contiene una riga per ogni descrizione esistente per il materiale prescelto, corredata dall’indicazione della lingua in cui è espressa la descrizione del materiale.
Facendo clic in una riga del listato è possibile attivare una transazione SAP tramite l’istruzione: CALL TRANSACTION, oppure eseguire un altro programma utilizzando l’istruzione SUBMIT. Si rimanda all’help per la sintassi precisa.
Può essere, inoltre, necessario effettuare operazioni diverse a seconda del campo della riga sul quale è stato operato il clic. Nel caso precedente, ad esempio, si potrebbe emettere una lista di tutte le unità di misura presenti nel sistema, qualora venisse effettuato il clic sul campo MARA-MEINS, mentre, in caso si clic sul campo MARA-MATNR si può emettere la finestra delle descrizioni del materiale indicata precedentemente. Per conoscere su quale campo della riga è stato effettuato il clic si utilizza l’istruzione:
GET CURSOR FIELD nomecampo.
Al termine di questa istruzione il campo nomecampo (che ovviamente deve essere definito) contiene il nome del campo sul quale l’utente ha effettuato il clic.
Per ulteriori approfondimenti si rimanda all’uso dell’help in linea fornito da SAP. |