:::: МЕНЮ ::::

Форматирование ABAP кода

Большинство компаний имеют внутренний регламент форматирования ABAP кода. Не смотря на наличие регламента, оформление кода может сильно отличаться даже в приделах одной программы. Это связано со следующими фактами: многие программы разрабатывались до принятия регламентов; регламентируют в основном только наименования переменных и программных объектов.

Одни из самых сложных конструкций в ABAP — это SELECT и READ TABLE. Ниже предложены правила форматирования данных конструкций, а также средство автоматизированного форматирования для уже имеющегося кода.

READ TABLE — index

Последовательность операторов следующая:

Если INDEX указан совместно с оператором USING KEY, то INDEX переносится на новую строку с отступом в два пробела.

Если USING KEY не используется, то оператор пишется в одну строку.

READ TABLE — free_key

Последовательность операторов следующая:

  1. Первая строка – READ TABLE itab result
  2. Вторая и последующие строки — WITH KEY с условием выбора

При использовании BINARY SEARCH, оператор ставится на второй строке, строка с WITH KEY смещается ниже. Дополнения BINARY SEARCH и WITH KEY пишутся с отступом в два символа.

Первое условие в WITH KEY пишется на текущей строки, каждое новое условие с новой строки, при этом отступы таким образом, чтобы поля выбора были на одной позиции. Знак равно «=» выделяется таким образом, чтобы на всех условиях выбора он был на одном уровне.

READ TABLE — table_key

Если используется дополнение FROM без USING KEY, код пишется в одну строку.

При использовании дополнения FROM с USING KEY код пишется в две строки. Вторая строка с отступом в два пробела.

При использовании первичного ключа таблицы, дополнение WITH TABLE KEY пишется на новой строке с отступом в два пробела, при этом отступы таким образом, чтобы поля выбора были на одной позиции. Знак равно «=» выделяется таким образом, чтобы на всех условиях выбора он был на одном уровне.

При использовании вторичного ключа, на второй строке указывается WITH TABLE KEY с названием ключа, на третьей и следующих строках COMPONENTS и условия чтения. Выравнивание условий происходит аналогично предыдущему варианту.

SQL

Каждая ключевая конструкция пишется с новой строки с отступом в 2 символа. Исключение — «UP TO n ROWS» если в качестве выбора поля указана * либо одно поле с коротким названием без алиаса, в этом случае конструкция пишется на первой строке. Порядок ключевых конструкций следующий:

SQL — fields

Если число суммарная длина полей не превышает половину ширины экрана ни  у одного поля нет алиаса, то поля для выбора пишутся в одну строку. Иначе, каждое поле для выбора пишется на новой строке на одном уровне с первым полем. В случае перечисления полей через запятую, разделитель прижимается к полю справа без пробелов.

SQL — where

Условия выбора, разделённые оператором AND, должны быть записаны с новой строки и выровнены на одном уровне с оператором WHERE.

SQL — from

При выборе данных из нескольких таблиц, каждый JOIN пишется на новой строке, с отступов в 2 символа. Условия соединений таблиц должны быть выровнены на одном уровне с оператором ON, по аналогии с WHERE.

 


4 комментария

  • Ответить AZ |

    1 . READ TABLE

    READ TABLE lt_mseg ASSIGNING
    WITH KEY bukrs = lv_bukrs
    ps_psp_pnr = lv_sppnr.

    А теперь передумайте читать по bukrs. Чтобы его убрать нужно редактировать всю строку с WITH KEY.
    А теперь передумайте читать по PS_PSP_PNR — нужно переносить точку в строку выше.
    Писать нужно так
    READ TABLE lt_mseg ASSIGNING WITH KEY
    bukrs = lv_bukrs
    ps_psp_pnr = lv_sppnr
    .
    нужно убрать bukrs — только удалил строку с BUKRS (CTRL+SHIFT+L)
    нужно убрать PS_PSP_PNR — удалил только эту сроку
    кроме того имена полей идут с однократным отступом от READ взгляд не нужно сдвигать дальше.
    аналогично для COMPONENTS:
    READ TABLE lt_mseg ASSIGNING WITH TABLE KEY main COMPONENTS
    bukrs = lv_bukrs
    ps_psp_pnr = lv_sppnr
    .

    2. «Если число суммарная длина полей не превышает половину ширины экрана ни у одного поля нет алиаса, то поля для выбора пишутся в одну строку.»

    Нет. Поля пишутся по одному всегда в строке с одиночным выступом от SELECT
    SELECT
    matnr
    matkl
    FROM mara …
    Их так проще увидеть и удалять/комментировать, а также и добавлять новые

    3. «Условия соединений таблиц должны быть выровнены на одном уровне с оператором ON, по аналогии с WHERE»

    Да, но условие должно быть на новой строке
    вместо
    FROM mseg
    INNER JOIN mara ON mara~matnr EQ mseg~matnr
    INNER JOIN mkpf ON mkpf~mblnr EQ mseg~mblnr
    AND mkpf~mjahr EQ mseg~mjahr

    должно быть
    FROM mseg
    INNER JOIN mara
    ON mara~matnr EQ mseg~matnr
    INNER JOIN mkpf
    ON mkpf~mblnr EQ mseg~mblnr
    AND mkpf~mjahr EQ mseg~mjahr

    • Ответить admin |

      Экономить секунду на правки не целесообразно. Код читается в сотни, а то и в тысячи раз больше чем пишется. Поэтому он должен быть удобным для чтения, а не для правок.

  • Ответить Manul74 |

    Не хотите написать статью о рекомендуемом регламенте правил наименования переменных в ABAP. Я понимаю единого правила нет. Но как пример из какой либо фирмы занимающейся разработкой ABAP. У меня к сожалению нет регламента. Но знаю во многих фирмах есть. Какой либо информации в инете не нашел. Было бы неплохо почитать такую статью.
    Спасибо.

Присоединиться к обсуждению...