может случиться что Вы находитесь в USER-EXIT и есть доступ к какому то классу вызывающей прграммы (SAP-программы которую естественно изменять нельзя) посредством ASSIGN, но к тому же может случиться что класс определён не в DDIC а в программе...
На первый взгляд кажется, что можно определить в ФМ такой же класс и создать ещё один объект и передать в него значения....
но это тоже не очень хорошо.... может быть например класс ORDER или PURCHASE.... и при создании нового объекта в системе будет заложен второй ORDER -копия первого....
Я попробовал сделать как вы рекомендуете, но не через DDIC.
В TOP-Include был определён класс как и в программе:
Code:
FUNCTION-POOL ZOOPSTACKKLASSE. "MESSAGE-ID ..
*----------------------------------------------------------------------*
* CLASS auto DEFINITION
*----------------------------------------------------------------------*
CLASS auto DEFINITION.
PUBLIC SECTION.
METHODS: get_color EXPORTING ecolor TYPE char10.
METHODS: set_color IMPORTING icolor TYPE char10.
PRIVATE SECTION.
DATA: color TYPE char10.
ENDCLASS. "auto DEFINITION
*----------------------------------------------------------------------*
* CLASS auto IMPLEMENTATION
*----------------------------------------------------------------------*
CLASS auto IMPLEMENTATION.
METHOD get_color.
ecolor = color.
ENDMETHOD. "get_color
METHOD set_color.
color = icolor.
ENDMETHOD. "set_color
ENDCLASS. "auto IMPLEMENTATION
и изменил ФМ:
FUNCTION zoopstackklasse1.
*"----------------------------------------------------------------------
*"*"Lokale Schnittstelle:
*"----------------------------------------------------------------------
* FIELD-SYMBOLS: <fs> TYPE ANY.
FIELD-SYMBOLS: <fs> TYPE REF TO auto.
DATA: method(10).
method = 'GET_COLOR'.
DATA: fsname(30).
fsname = '(ZSTACKKLASSE2)A'.
ASSIGN (fsname) TO <fs>.
* <fs> value =
* {O:3*\PROGRAM=ZSTACKKLASSE2\CLASS=AUTO}
BREAK-POINT.
DATA: c TYPE char10.
* CALL METHOD <fs>->get_color "ERROR
* IMPORTING "ERROR
* ecolor = c. "ERROR
CALL METHOD <fs>->get_color
IMPORTING
ecolor = c.
CALL METHOD <fs>->(method)
IMPORTING
ecolor = c.
BREAK-POINT.
ENDFUNCTION.
в этом случае происходит Runtime Error в момент
ASSIGN (fsname) TO <fs>.
>>> You attampted to assign a field to a typed field symbol, but the field does not have the required type.....
заранее спасибо
Юрий
www.1SAP1.de