abap ссылочные переменные и динамические типы - PullRequest
0 голосов
/ 30 ноября 2018

Я свободно владею ABAP и хорошо разбираюсь в ОО и легких ссылочных переменных, но, похоже, не могу лучше понять ссылочные переменные, динамические типы и т. Д. Я немного читал, но могу 'Кажется, я не понимаю, что мне нужно.
Кто-нибудь знает какие-нибудь замечательные учебники или веб-сайты, которые могут дать четкие и краткие сведения?Спасибо!

1 Ответ

0 голосов
/ 01 декабря 2018

Во-первых, просто погуглите заголовок этого поста, и Вы - золотой.

Во-вторых: Я не уверен, правильно ли я вас понимаю, Вы хотите знать о таких конструкциях как:

DATA lo_ref_var TYPE REF TO zcl_my_class.

А под динамическими типами Вы подразумеваете в ABAP 7.4 / 7.5 (например, DATA (lv_var) = 123)?

Если да, я постараюсь дать Вам общее представление: переменная-ссылкаэто просто переменная, которая «готова стать» объектом.Например, если вы возьмете это:

DATA lo_ref_var TYPE REF TO zcl_my_class.
CREATE OBJECT lo_ref_var.

. Если предположить, что конструктору не нужны переменные, вы получите экземпляр класса zcl_my_class со всеми его атрибутами и методами.Также, если у вас есть абстрактный класс zcl_abs_class в качестве суперкласса, а zcl_sub_class1 и zcl_sub_class2 в качестве его неабстрактного подкласса, чем:ссылочная переменная суперкласса, поскольку подкласс 'наследуется от zcl_abs_class.Более того, покопайтесь.

Динамические типы: На самом деле это очень просто, все, что вам нужно запомнить, это то, что переменная должна иметь тип при динамическом создании.Так, например:

DATA(lv_text) = text-000.
DATA(lv_int) = 1.

Строка с lv_text не будет работать (не будет компилироваться), поскольку text-000 не имеет точного типа.Вторая строка с другой стороны будет принимать тип I. Если вы хотите решить, какой тип выбрать, вы можете сделать это, написав:

DATA(lv_bukrs) = CONV bukrs( '1234' ).

Вы даже можете использовать тип, который уже существующая переменнаяимеет:

DATA(lv_bukrs2) = CONV #( lv_bukrs ).

, так как "#" означает "использовать переменную внутри скобок".

Надеюсь, это поможет Вам начать:)

...