Age: 46 Joined: 05 Nov 2007 Posts: 725 Location: КраснАдар
Posted: Fri Dec 14, 2007 7:40 pm Post subject:
Вопрос не тривиальный, ответ такой же будет.
В общем виде нужно сделать так:
1. Из данных таблицы сформировать три: таблицу строк, таблицу столбцов и таблицу данных, в которой будут лежать значения на стыке строк и столбцов. Пример
Code:
Таблица строк
ROW ID NAME
1 001 Имя 1
2 002 Имя 2
3 003 Имя 3
4 004 Имя 4
2. Далее динамически создаем нужную структурку и внутреннюю табличку, которую будем выводить в грид.
3. Делаем цикл по таблице строк. Внутри него циклимся по таблице столбцов. Внутри него читаем таблицу данных и заполняем значениями структурку. Аппендим ее в табличку.
4. После формирования - показываем ее пользователю. Он радуется и благодарит нас - мы чувствуем себя отлично!!!
Age: 46 Joined: 05 Nov 2007 Posts: 725 Location: КраснАдар
Posted: Sat Dec 15, 2007 12:27 am Post subject:
admin wrote:
Тема весьма интересная, Garik, если выложите код, перенесем в Готовые решения.
Реализовал неделю назад. Но требует адаптации - у меня динамически заполняются столбцы статического Table control с очень длинной структурой (расчет на 50 лет - в текущих и базовых ценах). К середине следующей недели будет свободная минутка - сделаю пример.
ЗЫ Эту технологию я честно украл из папок планирования BW. Можно подсмотреть в группах функций UPB_*. За вывод этого "нечто" отвечает группа функций UPB_PM_ALV или что-то в этом роде...
ЗЗЫ Странно, что у Garikа попросили месяцы перед суммой выводить - у меня затребовали в шапку вынести. Мне кажется, что требование моего консультанта несколько логичнее.
ЗЗЫ Странно, что у Garikа попросили месяцы перед суммой выводить - у меня затребовали в шапку вынести. Мне кажется, что требование моего консультанта несколько логичнее.
Да, я бы тоже Месяцы (Периоды) в Шапке отобразил, а для универсальности алгоритма Год отдельным столбцом вынес.
Отчет то довольно стандартный - оборотка по месяцам, начального/конечного баланса не хватает.
Age: 46 Joined: 05 Nov 2007 Posts: 725 Location: КраснАдар
Posted: Wed Dec 19, 2007 5:56 pm Post subject:
Как и обещал:
Code:
*************** Set test data ******************
INITIALIZATION.
DATA: BEGIN OF WA,
ID(3) TYPE N,
IDTEXT(20),
MONTH(2) TYPE N,
VALUE TYPE I,
END OF WA,
ITAB LIKE WA OCCURS 0 WITH HEADER LINE,
N TYPE I, M TYPE I.
* Prepare data table
DO 10 TIMES.
N = N + 1.
WA-ID = N.
CONCATENATE 'Product ¹' WA-ID INTO WA-IDTEXT.
CLEAR M.
DO 12 TIMES.
M = M + 1.
WA-MONTH = M.
CALL FUNCTION 'BKK_RANDOM'
EXPORTING
I_MODULO = 100
IMPORTING
E_RANDOM_NUMBER = WA-VALUE.
APPEND WA TO ITAB.
ENDDO.
ENDDO.
CLEAR: N, M.
***************** Program *************************
START-OF-SELECTION.
DATA: BEGIN OF ROW_TAB OCCURS 0,
ROW(3) TYPE N,
ID(3) TYPE N,
IDTEXT(20),
END OF ROW_TAB,
BEGIN OF COL_TAB OCCURS 0,
COL(3) TYPE N,
MONTH(2) TYPE N,
END OF COL_TAB,
BEGIN OF VALUE_TAB OCCURS 0,
ROW(3) TYPE N,
COL(3) TYPE N,
VALUE TYPE I,
END OF VALUE_TAB.
DATA: BUFFER_TAB LIKE ITAB OCCURS 0 WITH HEADER LINE.
DATA: FCAT TYPE LVC_T_FCAT, HCAT TYPE LVC_S_FCAT,
LAYOUT TYPE LVC_S_LAYO.
DATA: DREFTAB TYPE REF TO DATA,
DREFHEAD TYPE REF TO DATA,
FIELDNAME TYPE STRING.
FIELD-SYMBOLS: <OUTTAB> TYPE TABLE,
<HEADER> TYPE ANY,
<FIELD> TYPE ANY,
<SUM> TYPE ANY.
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum You cannot attach files in this forum You can download files in this forum
All product names are trademarks of their respective companies. SAPNET.RU websites are in no way affiliated with SAP AG. SAP, SAP R/3, R/3 software, mySAP, ABAP, BAPI, xApps, SAP NetWeaver and any other are registered trademarks of SAP AG. Every effort is made to ensure content integrity. Use information on this site at your own risk.