ich habe es noch nicht probiert, es müsste aber eigentlich reichen beim Aufruf von RS_CHANGE_CREATED_VARIANT den CURR_REPORT zu ändern...Wenn man nur den Inhalt einiger kurzer Felder mit dieser Kombination ändern will, die längeren Felder ( > 45 Zeichen ) dabei unverändert bleiben sollen, hat man den folgenden Workaround:
1) Rufen Sie den FB RS_VARIANT_CONTENTS oder RS_VARIANT_CONTENTS_RFC mit dem Parameter EXECUTE_DIRECT = 'X' (siehe Hinweis 723266).
2) Danach löschen Sie die Felder mit einer Länger > 45 in der Tabelle VALUTAB.
3) Übergeben Sie diese Tabelle VALUTAB weiter an den FB RS_CHANGE_CREATED_VARIANT. Es werden dann nur die Felder geändert, die in der Tabelle vorhanden sind.
Hier ist ein Beispiel mit den Funktionen RS_VARIANT_CONTENTS_RFC und RS_CHANGE_CREATED_VARIANT_RFC:
...
CALL FUNCTION 'RS_VARIANT_CONTENTS_RFC'
DESTINATION 'NONE'
EXPORTING
REPORT = 'SAPFKPY3'
VARIANT = '1'
MOVE_OR_WRITE = 'M'
EXECUTE_DIRECT = 'X'
TABLES
VALUTAB = RSPARAMS_TAB
OBJECTS = OBJECTS
EXCEPTIONS
VARIANT_NON_EXISTENT = 1
VARIANT_OBSOLETE = 2
OTHERS = 3 .
loop at objects.
if objects-OLEN = 0 or objects-OLEN > 45 .
delete RSPARAMS_TAB where SELNAME = objects-name.
endif.
endloop.
CALL FUNCTION 'RS_CHANGE_CREATED_VARIANT_RFC'
DESTINATION 'NONE'
EXPORTING
CURR_REPORT = 'SAPFKPY3'
CURR_VARIANT = '1'
VARI_DESC = varid_tab
TABLES
VARI_CONTENTS = RSPARAMS_TAB
EXCEPTIONS
OTHERS = 1 .
....
Achtung:
1) Wenn es sich um die RFC-Funktionsbausteine handelt, bitte dieselbe DESTINATION benutzen.
2) Es ist leider nicht möglich, mit dieser Kombination den Inhalt eines langen Feldes ( > 45 Zeichen ) zu ändern.