Сейчас я работаю над одним отчетом ABAP, в котором пользователь помещает имя своего отчета ABAP, и мой отчет должен проверить соглашение об именах.
По сути, это проверка рекомендаций по кодированию.
В моем В команде существует соглашение об именах, которое говорит, например, что DATA: table TYPE STANDARD TABLE OF spfli
неверно, правильная форма должна быть DATA: lt_table TYPE STANDARD TABLE OF spfli
.
Я знаю, что в этом конкретном c случае я могу поставить lt_
перед именем переменной, потому что есть TYPE STANDARD TABLE
.
Вот краткий код, как я это решаю.
Что я ' Я делаю так, что я читаю исходный код в таблицу строк, затем я зацикливаюсь в этой таблице с исходным кодом, и у меня есть условие, что если строка содержит строку DATA TEXT_TAB TYPE STANDARD TABLE OF
или LIKE TABLE OF
et c. затем разделите эту строку на 3 переменные; первый будет содержать DATA
, второй будет содержать TEXT_TAB
(в основном имя переменной), а третий будет содержать остальную часть объявления данных LIKE TABLE OF
. Затем я добавляю префикс и строку таблицы и объединяю все вместе DATA LT_TEXT_TABLE LIKE TABLE OF TEXT
. «Это не глупо, если это работает»: D
Теперь у меня проблема, когда дело доходит до переменных. Например:
DATA: variable01 TYPE string,
variable02 TYPE spfli.
Они выглядят одинаково, но один является переменной, а другой является структурой / рабочей областью.
Мой вопрос ... Как узнать, является ли следующая переменная структурой или переменной? ?
Я знаю, что есть класс cl_abap_typedescr
с методом, но он не работает с READ REPORT
.
Подробнее ... У меня есть отчет о тестировании
REPORT ZMH_TEST_SOURCE_CODE.
DATA string01 TYPE string.
DATA: string02 TYPE string,
string03 TYPE string.
data class04 TYPE REF TO ZMH_CR_CL_SPPM.
data class05 LIKE class04.
DATA: class06 TYPE REF TO ZMH_CR_CL_SPPM.
DATA: table07 TYPE STANDARD TABLE OF spfli,
table08 TYPE STANDARD TABLE OF spfli,
table09 TYPE STANDARD TABLE OF spfli,
table10 TYPE STANDARD TABLE OF spfli.
DATA: lt_table11 TYPE STANDARD TABLE OF spfli,
lt_table12 TYPE STANDARD TABLE OF spfli.
DATA structure13 LIKE LINE OF table07.
data structure14 LIKE REF TO class05.
CONSTANTS constant15 TYPE i VALUE '13'.
CONSTANTS: constant16 TYPE i VALUE '14'.
DATA text(10) TYPE c.
DATA text_tab LIKE TABLE OF text.
И пока мой вывод отчета по соглашению об именах
Row:30 DATA LT_TEXT_TAB LIKE TABLE OF TEXT.
Row:17 DATA: LT_TABLE07 TYPE STANDARD TABLE OF SPFLI,
Row:18 LT_TABLE08 TYPE STANDARD TABLE OF SPFLI,
Row:19 LT_TABLE09 TYPE STANDARD TABLE OF SPFLI,
Row:20 LT_TABLE10 TYPE STANDARD TABLE OF SPFLI.
Row:24 DATA LO_STRUCTURE14 LIKE REF TO CLASS05.
Row:14 DATA LO_CLASS04 TYPE REF TO ZMH_CR_CL_SPPM.
Row:16 DATA: LO_CLASS06 TYPE REF TO ZMH_CR_CL_SPPM.
Row:27 CONSTANTS LC_CONSTANT15 TYPE I VALUE '13'.
Row:28 CONSTANTS: LC_CONSTANT16 TYPE I VALUE '14'.
Row:23 DATA WA_STRUCTURE13 LIKE LINE OF TABLE07.
Спасибо.