Формат ALV определяет: сортировки, группировки, внешний вид, настройку оптимизации колонок и т.п. Для выбора форматов служит класс cl_salv_layout_service. Для настройки сохранения и привязки к ALV объекту класс cl_salv_layout. Первое что необходимо при работе с форматами дать пользователю возможность его выбрать на экране выбора.
Для выбора формата необходимо использовать статический метод f4_layouts класса cl_salv_layout_service. На вход необходимо подать структуру отвечающую за идентификацию объекта ALV к которому необходимо получить формат, структура S_KEY имеет тип SALV_S_LAYOUT_KEY. Основное что необходимо заполнить в этой структуре это id отчёта (report). Остальные параметры необходимы когда вы используете несколько ALV объектов в программе и для каждого необходимо выбирать свои форматы. Еще один параметр метода — restrict, он определяет какие форматы будут показаны пользователю. Может принимать следующие значения: if_salv_c_layout=>restrict_none — без ограничений, if_salv_c_layout=>restrict_user_dependant — только форматы своего пользователя, if_salv_c_layout=>restrict_user_independant — только общие форматы.
Для того чтобы пользователь смог сохранять (создавать) форматы, необходимо указать ALV объекту идентификатор формата (тот самый s_key), формат по умолчанию и ограничение при сохранении. Указанные параметры задаются с помощью класса: cl_salv_layout. Пример программы ниже продемонстрирует каким образом с ним работать:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 | REPORT ZALV_SIMPLE. PARAMETERS: p_format TYPE disvariant-variant. DATA:       gt_data      TYPE spfli_tab,  " Таблица с данными       go_alv       TYPE REF TO cl_salv_table. AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_format.   PERFORM get_format. START-OF-SELECTION.   SELECT * FROM spfli INTO CORRESPONDING FIELDS OF TABLE gt_data.   " Фабричный метод возвращяет экзмепляр ALV объекта   TRY.       cl_salv_table=>factory(          IMPORTING            r_salv_table = go_alv          CHANGING            t_table = gt_data ).     CATCH cx_salv_msg .       MESSAGE 'Ошибка при создании ALV' TYPE 'E'.   ENDTRY.   go_alv->set_screen_status( EXPORTING                               REPORT = 'SAPLSALV_METADATA_STATUS'                               pfstatus = 'SALV_TABLE_STANDARD'                               set_functions = CL_SALV_MODEL_BASE=>C_FUNCTIONS_ALL ).   PERFORM setup_layout.   " Отобразить ALV представление   go_alv->display( ). " Выбор формата  FORM get_format.   DATA:     ls_key         TYPE salv_s_layout_key,     ls_layout_info TYPE salv_s_layout_info.   ls_key-REPORT = sy-repid.   ls_layout_info = cl_salv_layout_service=>f4_layouts(         s_key = ls_key         restrict = if_salv_c_layout=>restrict_user_independant ).   p_format = ls_layout_info-LAYOUT.  ENDFORM. " Настройка ALV объекта   FORM setup_layout.   DATA:     ls_key    TYPE salv_s_layout_key,     lo_layout TYPE REF TO cl_salv_layout.   TRY.       lo_layout = go_alv->get_layout( ).       ls_key-REPORT = sy-repid.       lo_layout->set_key( ls_key ).       lo_layout->set_save_restriction( cl_salv_layout=>restrict_none ).       lo_layout->set_initial_layout( p_format ).     CATCH cx_salv_msg.   ENDTRY.  ENDFORM. | 
Для определения прав пользователей относительно форматов, можно воспользоваться объектом полномочий: F_IT_ALV. Следует так же отметить что:
- Имена общих форматов начинаются на /
- Имена пользовательских форматов начинаются с A-Z (А-Я)
- Имена стандартных форматов SAP начинаются с 0-9