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

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


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

Сейчас этот форум просматривают: Google [Bot]


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

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