Смотрите, в XLWB разбор дерева реализован элементарно:
получаем из ALV таблицу филдкаталога (вызов метода get_frontend_fieldcatalog) и сортируем по полю COL_POS,
удалив "скрытые" столбцы (т.е. у которых NO_OUT = X или TECH = X ) - вот это и будет тот порядок полей, который вы увидите в Excel.
Серега Panda написал(а):
делаю примерный тест такой, что остается столбец иерархии и мой столбец... в результате...столбец на 2 позиции, вместо 8 как указано в филдкаталоге
То есть имеем в ALV один столбец (остальные скрыли) , у которого COL_POS = 8. Но он не окажется на 8 позиции, если перед ним нет других видимых полей. Чтобы он оказался на 8 позиции, необходимо иметь 7 других
видимых полей, у которых COL_POS < 8 . И они, наверное, у вас есть (иначе, с чего бы возникла цифра 8 ), просто они скрыты у них NO_OUT = 'X'. В общем, там где редактируете COL_POS сделайте ещё очистку NO_OUT:
Code:
LOOP AT lt_fcat ASSIGNING <ls_fcat> .
CASE <ls_fcat>-fieldname .
WHEN 'BUKRS' . <ls_fcat>-col_pos = 1 . CLEAR <ls_fcat>-no_out .
WHEN 'BELNR' . <ls_fcat>-col_pos = 2 . CLEAR <ls_fcat>-no_out .
WHEN 'GJAHR' . <ls_fcat>-col_pos = 3 . CLEAR <ls_fcat>-no_out .
ENDCASE .
ENDLOOP .