Текущее время: Пт, апр 26 2024, 18:51

Часовой пояс: 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 часа


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

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