Текущее время: Ср, июл 30 2025, 23:59

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 8 ] 
Автор Сообщение
 Заголовок сообщения: Динамическое создание perform
СообщениеДобавлено: Ср, авг 22 2007, 09:35 
Старший специалист
Старший специалист

Зарегистрирован:
Пт, фев 03 2006, 08:00
Сообщения: 344
всем привет.
каким бразом можно создать сабж?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, авг 22 2007, 09:46 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Пн, окт 11 2004, 20:32
Сообщения: 2470
Пол: Мужской
Если заранее неизвестно только имя подпрограммы, а набор параметров постоянный - то например так:
Code:
PERFORM (formname) IN PROGRAM (sy-repid) using x1.

_________________
- Может ли настоящий мастер кунг-фу получить по морде?
- Настоящий мастер может все!


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, авг 22 2007, 09:50 
Старший специалист
Старший специалист

Зарегистрирован:
Пт, фев 03 2006, 08:00
Сообщения: 344
:) хе, в общем, думал так будет понятнее, а на самом деле нужны form'ы, т.е. у меня создаются динамические внут.таблички для вывода в ALV и мне нужны для каждого ALV_BOX'а свои TOP_OF_PAGE, которые, как я представляю, также будут создаваться динамически...


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, авг 22 2007, 09:56 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Пн, окт 11 2004, 20:32
Сообщения: 2470
Пол: Мужской
аа, тогда GENERATE SUBROUTINE POOL

_________________
- Может ли настоящий мастер кунг-фу получить по морде?
- Настоящий мастер может все!


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, авг 22 2007, 10:57 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, сен 07 2004, 17:47
Сообщения: 2988
aht написал(а):
:) хе, в общем, думал так будет понятнее, а на самом деле нужны form'ы, т.е. у меня создаются динамические внут.таблички для вывода в ALV и мне нужны для каждого ALV_BOX'а свои TOP_OF_PAGE, которые, как я представляю, также будут создаваться динамически...

И по причинам ограниченного количества SUBROUTINE POOL таблицы и подпрограммы обработки лучше создавать внутри одного отчёта. Если конечно так уж необходимо генерить динамический код.

_________________
"После" - не значит "вследствие"


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, авг 22 2007, 22:30 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
aht написал(а):
:) хе, в общем, думал так будет понятнее, а на самом деле нужны form'ы, т.е. у меня создаются динамические внут.таблички для вывода в ALV и мне нужны для каждого ALV_BOX'а свои TOP_OF_PAGE, которые, как я представляю, также будут создаваться динамически...

Если получить структуру таблицы(или ее заголовочной записи), то зачем динамически создавать процедуры?
Одна процедура, и все :)
Например, так:
Code:
REPORT  z_print_struct_header                   .

TYPE-POOLS: abap.

TABLES: makt.

DATA: BEGIN OF gs_data,
       bukrs TYPE bsid-bukrs,
       gjahr TYPE bsid-gjahr,
       belnr TYPE bsid-belnr,
       kunnr TYPE bsid-kunnr,
       shkzg TYPE bsid-shkzg,
       dmbtr TYPE bsid-dmbtr,
      END OF gs_data,
      gt_data LIKE STANDARD TABLE OF gs_data.

END-OF-SELECTION.
  WRITE: / 'Internal strucrure'.
  PERFORM print_header USING gs_data.
  WRITE: / 'MAKT'.
  PERFORM print_header USING makt.

*&---------------------------------------------------------------------*
*&      Form  print_header
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_DATA - structure for output header
*----------------------------------------------------------------------*
FORM print_header USING p_data.

  DATA: g_struct TYPE REF TO cl_abap_structdescr,
        g_type TYPE REF TO cl_abap_typedescr,
        lt_fields TYPE ddfields,
        ls_fields TYPE dfies,
        len TYPE i,
        tmp_len TYPE i,
        ls_comp TYPE abap_compdescr.
  FIELD-SYMBOLS: <fs>.

  g_type = cl_abap_typedescr=>describe_by_data( p_data ).

  g_struct ?= g_type.
  CHECK NOT g_struct IS INITIAL.

  NEW-LINE.

  CALL METHOD g_struct->get_ddic_field_list
    RECEIVING
      p_field_list             = lt_fields
   EXCEPTIONS
      not_found                = 1
      no_ddic_type             = 2
      OTHERS                   = 3
          .
  IF sy-subrc = 0.
    LOOP AT lt_fields INTO ls_fields.
      IF ls_fields-outputlen < ls_fields-scrlen2.
        WRITE: AT (ls_fields-outputlen) ls_fields-scrtext_s, '|'.
      ELSEIF ls_fields-outputlen < ls_fields-scrlen3.
        WRITE: AT (ls_fields-outputlen) ls_fields-scrtext_m, '|'.
      ELSE.
        WRITE: AT (ls_fields-outputlen) ls_fields-scrtext_l, '|'.
      ENDIF.
    ENDLOOP.
  ELSE.
* Если на вход идет не структура из словаря данных, печатаем названия полей
    LOOP AT g_struct->components INTO ls_comp.
      ASSIGN COMPONENT sy-tabix OF STRUCTURE p_data TO <fs>.
      DESCRIBE FIELD <fs> OUTPUT-LENGTH tmp_len.
      len = STRLEN( ls_comp-name ).
      IF len < tmp_len.
        len = tmp_len.
      ENDIF.
      WRITE: AT (len) ls_comp-name, '|'.
    ENDLOOP.

  ENDIF.
  SKIP.

ENDFORM.                    "print_header

_________________
С уважением,
Удав.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, авг 23 2007, 07:37 
Старший специалист
Старший специалист

Зарегистрирован:
Пт, фев 03 2006, 08:00
Сообщения: 344
сделать форму через GENERATE SUBROUTINE POOL получилось, пасибо огромное, а как теперь "прикрутить" созданную форму "xxTOP_OF_PAGE" к конкретному xx-ALV_BLOCK'у? Общая идея была такая: на одном экране выводить несколько ALV'ов (заранее не известно их кол-во) с разбивкой на страницы и для каждого блока свой заголовок и подвал. :wink:


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, авг 24 2007, 07:25 
Старший специалист
Старший специалист

Зарегистрирован:
Пт, фев 03 2006, 08:00
Сообщения: 344
всем пасибо, все сделал, тормозил чего-то страшно... :D


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

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


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

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


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

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