das hat eigentlich nicht viel mit ranges zu tun, als mehr mit Feldsymbolen.
Das Coding arbeitet in etwa so (mit zu veranschaulichung ausgedachten Beispiel-Werten und Erklärungen in rot):
LOOP AT me->ta_rsparams INTO wa_rsparams LOOP - ist logisch, da musst du ja nur im Debugger schauen, was in der Tabelle für Einträge stehen...
WHERE kind = 'S'
AND sign <> space.
MOVE wa_rsparams-selname TO fieldname.Fieldname wird wohl vermutlich eine Variable vom Typ "String" oder sowas sein. In "Fieldname" wird ein Variablenname als String zusammengebaut, auf welche das FS dann zeigen soll. Als Bsp-Wert von "WA_RSPARAMS-SELNAME" dient jetzt einfach mal "LS_BSP".
MOVE 'R' TO fieldname+0(1).Die erste Stelle der String-Var wird durch ein R ersetzt: LS_BSP wird zu RS_BSP.
ASSIGN (fieldname) TO <fs_table>.Das Feldsymbol zeigt auf die Variable RS_BSP. D.h. über das FS kann auf diese Variable zugegriffen werden
MOVE 'WA_' TO fieldname.Das gleiche, wie oben in grün. In Fieldname stehe jetzt "WA_"
MOVE wa_rsparams-selname+2 TO fieldname+3.Hier wird der Rest von selname (Stellen 3-x) an das WA_ in FIELDNAME angehängt, also in diesem Bsp. kommt dann folgendes raus: WA_BSP
ASSIGN (fieldname) TO <fs_range>.Das Feldsymbol zeigt auf WA_BSP.
MOVE-CORRESPONDING wa_rsparams TO <fs_range>.Übertragen der entsprechenden Werte aus der wa_rsparams in den Arbeitsbereich WA_BSP.
APPEND <fs_range> TO <fs_table>. Anhängen des Arbeitsbereiches an die entsprechende Tabelle RS_BSP (über das entsprechende FS, welches oben zugewiesen wurde
ENDLOOP.
Ich hoffe ich konnte es einigermaßen verständlich erklären. Um das Coding zu verstehen schau dir am besten mal Feldsymbole an.
Gruß
Pyro
//EDIT: Besser wäre natürlich als Beispielwert in RSPARAMS-SELNAME LT_BSP anstatt LS_BSP zu nehmen, da es ja wie es aussieht eine Tabelle sein soll. Aber ich bessere es jetzt lieber nicht aus, am ende Vergess ich noch eine Stelle und dann wirds verwirrend;)
Folgende Benutzer bedankten sich beim Autor Pyro für den Beitrag: dyv