Текущее время: Чт, апр 18 2024, 07:38

Часовой пояс: UTC + 3 часа


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 9 ] 
Автор Сообщение
 Заголовок сообщения: Динамическая внутренняя таблица
СообщениеДобавлено: Чт, сен 02 2004, 05:30 
Специалист
Специалист

Зарегистрирован:
Ср, авг 18 2004, 08:10
Сообщения: 238
Как можно определить внутреннюю таблицу во время выполнения программы, т.е. если изначально я не знаю точное число полей?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: А если попробовать генерацию отчета?..
СообщениеДобавлено: Чт, сен 02 2004, 05:46 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Чт, авг 26 2004, 05:04
Сообщения: 922
Откуда: Челябинск
Пол: Мужской
:)

_________________
Все будет хорошо...
http://sap-blog.ru/


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: А если попробовать генерацию отчета?..
СообщениеДобавлено: Чт, сен 02 2004, 06:56 
Специалист
Специалист

Зарегистрирован:
Ср, авг 18 2004, 08:10
Сообщения: 238
artyom написал:
:)

Чего смеешься.Ну вот надо именно так :D Есть же в абапе типа динамическое программирование (Кречмер, стр.256) И мне кажется я нечто подобное видел. Генерация отчета это хорошо, но не то..


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: ///
СообщениеДобавлено: Чт, сен 02 2004, 08:27 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Чт, авг 26 2004, 05:04
Сообщения: 922
Откуда: Челябинск
Пол: Мужской
Просто в этом форуме подобные вопросы возникают с завидным постоянством.

А нормального решения я еще не видел.

_________________
Все будет хорошо...
http://sap-blog.ru/


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, сен 02 2004, 09:31 
Гость
Тебе поможет вот этот метод
cl_alv_table_create=>create_dynamic_table


Принять этот ответ
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, сен 02 2004, 09:41 
Гость
Господа, ну в самом деле!
Этот вопрос действительно постоянно возникает на этом, и на прочих форумах. Есть отличное решение, проверенное на практике, и о нем постоянно пишут.

1) заполняете таблицу fieldcatalog (надеюсь, как - уж это объяснять не нужно).
можете руками, можете автоматически.
* structure for new LVC (ALV grid container) field catalog
ls_lvc_fieldcat TYPE lvc_s_fcat,
* internal table for old (standard) ALV field catalog
* (without header line - exactly as in function
* 'REUSE_ALV_FIELDCATALOG_MERGE')
lt_alv_fieldcatalog TYPE slis_t_fieldcat_alv.

CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_program_name = g_lvc_program_name
i_internal_tabname = c_outtab_structure_input
i_inclname = c_data_declar_include_name
CHANGING
ct_fieldcat = lt_alv_fieldcatalog
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.

REFRESH gt_lvc_fieldcatalog.

*** map old fieldcatalog fields on new:
LOOP AT lt_alv_fieldcatalog ASSIGNING <ls_alv_fieldcat>.
CLEAR ls_lvc_fieldcat.
MOVE-CORRESPONDING <ls_alv_fieldcat> TO ls_lvc_fieldcat.
* specific fieldnames caused by length restriction for basis objects
ls_lvc_fieldcat-ref_field = <ls_alv_fieldcat>-ref_fieldname.
ls_lvc_fieldcat-ref_table = <ls_alv_fieldcat>-ref_tabname.
ls_lvc_fieldcat-roundfield = <ls_alv_fieldcat>-roundfieldname.
ls_lvc_fieldcat-decmlfield = <ls_alv_fieldcat>-decimalsfieldname.
ls_lvc_fieldcat-decimals_o = <ls_alv_fieldcat>-decimals_out.
ls_lvc_fieldcat-dd_outlen = <ls_alv_fieldcat>-ddic_outputlen.
* for fields without reference to the Data Dictionary
IF ls_lvc_fieldcat-ref_table IS INITIAL.
ls_lvc_fieldcat-coltext = ls_lvc_fieldcat-fieldname.
ENDIF.
APPEND ls_lvc_fieldcat TO gt_lvc_fieldcatalog.
ENDLOOP.

2) а вот и самый фокус
DATA: lr_table TYPE REF TO data.
FIELD-SYMBOLS: <ls_lvc_outtab> TYPE ANY,
<l_field> TYPE ANY.

* create dynamic table (according to fieldcatalog)
CALL METHOD cl_alv_table_create=>create_dynamic_table
EXPORTING it_fieldcatalog = <gt_lvc_fieldcatalog>
IMPORTING ep_table = lr_table.
ASSIGN lr_table->* TO <gt_lvc_outtab>.
ASSIGN LOCAL COPY OF INITIAL LINE OF <gt_lvc_outtab>
TO <ls_lvc_outtab>.

...
assign component l_index of structure <ls_lvc_outtab>
to <l_field>.
<l_field> = l_value.
...
APPEND <ls_lvc_outtab> TO <gt_lvc_outtab>.
CLEAR <ls_lvc_outtab>.

3) надеюсь, вопрос закрыт наконец


Принять этот ответ
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, сен 02 2004, 09:44 
Специалист
Специалист

Зарегистрирован:
Вт, авг 24 2004, 16:49
Сообщения: 186
Откуда: SAP ERP60
Пол: Мужской
И еще примерчик для полноты ощущений :)

Code:
REPORT YTEST message-id 00.


data : t_field_catalog type lvc_t_fcat,
t_table type ref to data.

data : datavalue type ref to data.

data : wtype type c.
data : wcomponents type i.


field-symbols : type table.
field-symbols : type any.
field-symbols : type any.


parameters : p_table type dd02l-tabname.



start-of-selection.
perform validate_table_name.
perform build_field_catalog.
perform get_table_data.

form validate_table_name.
data : l_dd02l like dd02l.

select single * into l_dd02l from dd02l where tabname eq p_table.
check sy-subrc ne 0.
message s398 with text-001 text-002.
stop.


endform.

form build_field_catalog.
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
i_structure_name = p_table
CHANGING
ct_fieldcat = t_field_catalog.

endform.

form get_table_data.
call method cl_alv_table_create=>create_dynamic_table
exporting it_fieldcatalog = t_field_catalog
importing ep_table = t_table.

assign t_table->* to .

select * into corresponding fields of table
from (p_table) up to 10 rows.

if [] is initial.
message s398 with text-003 p_table.
stop.
endif.

create data datavalue type (p_table).
assign datavalue->* to .

describe field type wtype components wcomponents.

loop at
assigning .

do wcomponents times.
assign component syst-index of structure to .
write : / .
enddo.

endloop.
endform.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, сен 02 2004, 09:54 
Специалист
Специалист

Зарегистрирован:
Ср, авг 18 2004, 08:10
Сообщения: 238
Спасибо возмущенной общественности :D


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: А если попробовать генерацию отчета?..
СообщениеДобавлено: Чт, сен 02 2004, 10:06 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Вт, авг 31 2004, 14:57
Сообщения: 5257
Откуда: Ростов невеликий
Пол: Мужской
Trezeguet написал(а):
artyom написал:
:)

Чего смеешься.Ну вот надо именно так :D Есть же в абапе типа динамическое программирование (Кречмер, стр.256) И мне кажется я нечто подобное видел. Генерация отчета это хорошо, но не то..


Но нужно ещё получить благословение basis/security на такой случай :)


Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 9 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: Ahrefs [Bot], Mail.RU Bot


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB