ABAP с использованием метода в качестве параметра

Я хочу напрямую использовать возвращаемое значение методов. Например, в C++ мы можем использовать:

//Some codes
cout << obj1.get_foo() << endl;
int a = obj2->get_value() + 100 + obj2->get_value();

or

//...
obj1->set_color("BLUE");
cout << "Color is:" << obj1->get_color();
printf("Color is: %s", obj1->get_color()); // C Version

Когда я делаю это в ABAP, например:

OBJ1->SET_COLOR( 'BLUE' ). "That's OK.

WRITE:/ 'Color is:', OBJ1->GET_COLOR( ). "Error!

И я ожидал такого вывода:

Color is: BLUE

Изменить: я использовал слово параметра в заголовке не как ключевое слово ABAP, а как аргументы функции.


person Enes F.    schedule 09.07.2015    source источник
comment
Ваш вопрос не ясен: вы хотите использовать метод RESULT, а не передавать сам метод, верно?   -  person vwegert    schedule 09.07.2015
comment
Что такое подпись GET_COLOR? Какой выпуск SAP_BASIS вы используете?   -  person vwegert    schedule 09.07.2015
comment
Get_color возвращает атрибут ЦВЕТ. Его тип — ИМЯ. Сап 740, Р/3   -  person Enes F.    schedule 09.07.2015
comment
Какую именно ошибку вы получаете?   -  person mjturner    schedule 09.07.2015
comment
@Enes Мы используем SAP ECC 6.0 и SAP GUI 7.3 и не можем выполнять такие операции. Мы должны создать переменную для хранения этого значения, прежде чем использовать его в другой операции. Можете ли вы предоставить более подробную информацию о вашей версии SAP?   -  person Nelson Miranda    schedule 09.07.2015


Ответы (2)


Что вы можете сделать, так это.

* before 740
OBJ1->SET_COLOR( 'BLUE' ).
DATA COLOR TYPE NAME.
COLOR = OBJ1->GET_COLOR( ).
WRITE:/ 'Color is:', COLOR.

or

* since 740
OBJ1->SET_COLOR( 'BLUE' ).
DATA(COLOR) = OBJ1->GET_COLOR( ).
WRITE:/ 'Color is:', COLOR.

С уважением, Тапио

person Tapio Reisinger    schedule 09.07.2015
comment
Спасибо, я понял, как это сделать. Итак, мой путь невозможен в ABAP. - person Enes F.; 10.07.2015

Другое решение:

DATA : STRING TYPE STRING.


CONCATENATE 'Color is:' OBJ1->GET_COLOR( ) INTO STRING SEPARATED BY ' '.

WRITE :/ STRING .

если у вас есть многоязычное приложение, с помощью этого метода вы можете одновременно получить правильный язык для «Цвет:».

person inetphantom    schedule 14.08.2015