maker2k написал(а):
Подскажите, как сделать шахматку?..
необходимо добавлять вправо от 3 до 15 столбцов...
Посмотрите пример ZWWW_ALV_GRID. Это вывод динамической формы Excel из ALV Grid. Сам алгоритм не важен, главное смотрите содержимое внутренней таблицы IT_VALUES, передаваемой ФМ. Обратите внимание на строки с VAL_TYPE = 'R' (Row) или 'T' (Table). Это не единственный способ, но один из простых. Суть в том, что в поле VALUE кладется целиком строка с разделителями табуляции или целиком таблица с разделителями табуляции между полями и разделителями строк (LF) между записями. Это было сделано для ускорения вывода больших объемов данных, побочным эффектом получаем упрощение вывода динамических столбцов.
Для вывода строки 'R' указывается координата начала строки VAR_NAME, VAR_NUM, FIND_TEXT. Строка данных кладется в строку Excel, начиная с заданной, поля раскидываются дальше по ячейкам. Это делается стандартной функцией Excel, которую можно вызвать вручную через меню "Данные/Текст по столбцам" (Excel 2003).
Для таблицы 'T' координата левого верхнего угла VAR_NAME, FIND_TEXT. Соответственно данные раскидываются дальше по ячейкам вправо и вниз. Это тоже использование стандартной функции "Данные/Импорт внешних данных/Импортировать данные" (Excel 2003) для текстового файла с разделителями.
Для форматирования столбцов можно использовать VBA-макросы. В моём примере для раскраски столбцов используется макрос BeforeOutput, который копирует образец столбца в шаблоне. Также в специальную скрытую строку FormatMask выводится информация о типах полей (C,D,N...) и вызовом макроса AfterOutput устанавливается соответствующий формат столбцов.
Это только один из простых способов. Можно, например, выводить поячеечно VAR_NAME='A1','B2' и т.д. Или через VBA-макросы реализовать вообще любые фантазии.
