Текущее время: Вс, авг 03 2025, 07:26

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 18 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Узнать откуда был вызван SubDynpro
СообщениеДобавлено: Вт, дек 09 2008, 03:24 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Ср, ноя 01 2006, 22:58
Сообщения: 794
Откуда: Заарбрюкен
Пол: Мужской
Подскажите, как можно узнать, откуда (Dynpro, Report и т.д.) был вызван текущий subdynpro. И можно ли это сделать?
Нужно найти "цепочку вызовов до самого верха".


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, дек 09 2008, 09:30 
Младший специалист
Младший специалист
Аватара пользователя

Зарегистрирован:
Пн, дек 08 2008, 19:17
Сообщения: 92
Откуда: Москва
Пол: Мужской
Можно поставить брейк-поинт в логике обработке субэкрана. При вызове новго отладчика на закладке "стандарт" есть последователность вызова программ. Там можно все глянуть.

_________________
В смысле осмысления бессмысленности, смысл тоже имеет определенную осмысленность.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Узнать откуда был вызван SubDynpro
СообщениеДобавлено: Вт, дек 09 2008, 10:30 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, сен 07 2004, 17:47
Сообщения: 2988
Konstantin Anikeev написал:
Подскажите, как можно узнать, откуда (Dynpro, Report и т.д.) был вызван текущий subdynpro. И можно ли это сделать?
Нужно найти "цепочку вызовов до самого верха".
Через поиск можно найти неоднократное упоминание ФМ, возвращающего стек вызовов.
Вот только непонятно - что имеется ввиду под subdynpro? Если это подэкран и хочется полуить текущую вложенность подэкранов, то это, боюсь, невозможно.

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


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

Зарегистрирован:
Ср, ноя 01 2006, 22:58
Сообщения: 794
Откуда: Заарбрюкен
Пол: Мужской
Дело в том, что одни "молодцы" из очень крупной и уважаемой конторы. Сделали концепт клиентских полей так, что невозможно определить из какого экрана "тебя вызывают". Т.е. один и тот же подэкран показывается в основных данных позиции и в данных контировки (не знаю как по-русски, там где кост, контракт и прочие данные задаются).
А некоторые поля должны показываться только на одном экране, ну и соответственно не показываться на другом...

К сожалению концепт изменить не могу, вот и приходится вертеться как уж на сковородке...


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

Зарегистрирован:
Сб, сен 25 2004, 16:30
Сообщения: 1368
Откуда: Москва
Пол: Мужской
Konstantin Anikeev написал:
Т.е. один и тот же подэкран показывается в основных данных позиции и в данных контировки (не знаю как по-русски, там где кост, контракт и прочие данные задаются).

Стек экранов, боюсь, никак не получить. Но ведь скорее всего эти подэкраны показываются на каких-нибудь закладках? Может быть через динамический assign к TABSTRIP'у обратиться?

_________________
С уважением, Сергей Королев


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

Зарегистрирован:
Ср, ноя 01 2006, 22:58
Сообщения: 794
Откуда: Заарбрюкен
Пол: Мужской
Сергей Королев написал:
Konstantin Anikeev написал:
Т.е. один и тот же подэкран показывается в основных данных позиции и в данных контировки (не знаю как по-русски, там где кост, контракт и прочие данные задаются).

Стек экранов, боюсь, никак не получить. Но ведь скорее всего эти подэкраны показываются на каких-нибудь закладках? Может быть через динамический assign к TABSTRIP'у обратиться?


Не-а... не тот модуль... Дикая вложенность экранов - ступеней на 6...
Придется делать модификацию... :(


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

Зарегистрирован:
Ср, ноя 01 2006, 22:58
Сообщения: 794
Откуда: Заарбрюкен
Пол: Мужской
Вопрос вдогонку...

Можно ли при вызове формы из функции

Code:
PERFORM (lv_formdynfieldcond) IN PROGRAM (lv_dynprog) IF FOUND.


получить внутри этой формы ловальные переменные этой функции?


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

Зарегистрирован:
Сб, сен 25 2004, 16:30
Сообщения: 1368
Откуда: Москва
Пол: Мужской
Konstantin Anikeev написал:
получить внутри этой формы ловальные переменные этой функции?

локальные нельзя

_________________
С уважением, Сергей Королев


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, дек 10 2008, 09:56 
Менеджер
Менеджер

Зарегистрирован:
Чт, янв 20 2005, 08:34
Сообщения: 573
Пол: Мужской
Сергей Королев написал:
локальные нельзя


А что, волшебный assign уже отменили? Он на глобальные только?

_________________
Волю в кулак, мышцы в узду, работай себе и не ахай!


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

Зарегистрирован:
Сб, сен 25 2004, 16:30
Сообщения: 1368
Откуда: Москва
Пол: Мужской
Sergo написал:
А что, волшебный assign уже отменили? Он на глобальные только?

Дык попробуйте :)

_________________
С уважением, Сергей Королев


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, дек 10 2008, 10:17 
Менеджер
Менеджер

Зарегистрирован:
Чт, янв 20 2005, 08:34
Сообщения: 573
Пол: Мужской
Сергей Королев написал:
Дык попробуйте :)

:) Дык лень. Хотел по быстрому :)

_________________
Волю в кулак, мышцы в узду, работай себе и не ахай!


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

Зарегистрирован:
Сб, сен 25 2004, 16:30
Сообщения: 1368
Откуда: Москва
Пол: Мужской
Sergo написал:
:) Дык лень. Хотел по быстрому :)

А-а, тогда канешна. В общем, тока глобальные можно через assign, т.е. те, которые глобально описаны в программе (или группе функций). Для локальных переменных такое не получится.

_________________
С уважением, Сергей Королев


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, дек 10 2008, 10:43 
Ассистент
Ассистент
Аватара пользователя

Зарегистрирован:
Пт, ноя 21 2008, 05:13
Сообщения: 34
выдержка из saphelp'а
Цитата:
If the name of the field to be assigned is in the form (program_name)feld_name, the system searches for the field field_name in the global fields of program_name.


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

Зарегистрирован:
Ср, ноя 01 2006, 22:58
Сообщения: 794
Откуда: Заарбрюкен
Пол: Мужской
Жаль... Однако на "утреннем посту" пришла в голову другая мысль... Благо модуль SRM - т.е. с Web-оболочкой... Сделаем все через JavaScript :)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, дек 10 2008, 11:26 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Ср, ноя 03 2004, 14:51
Сообщения: 1912
Откуда: КраснАдар
Пол: Мужской
И еще одна "дурная" идея - попробовать использовать DYNP_VALUES_READ для определения вызывающего экрана/подэкрана. Что-нибудь типа этого:
Code:
DATA: g_dynnr TYPE sy-dynnr.
CONSTANTS: cs_dynnr100 TYPE sy-dynnr VALUE '0100',
           cs_dynnr200 TYPE sy-dynnr VALUE '0200'.

START-OF-SELECTION.
  g_dynnr = cs_dynnr100.
  CALL SCREEN cs_dynnr100.

*&---------------------------------------------------------------------*
*&      Module  SET_STATUS  OUTPUT
*&---------------------------------------------------------------------*
*       PBO модуль экранов 100 и 200
*       В логике экранов стоит вызов подэкрана 050
*----------------------------------------------------------------------*
MODULE set_status OUTPUT.
  SET PF-STATUS 'MAIN'.
ENDMODULE.                 " SET_STATUS  OUTPUT

*&---------------------------------------------------------------------*
*&      Module  LEAVE_PROGRAM  INPUT
*&---------------------------------------------------------------------*
*       PAI модуль экранов 100 и 200
*----------------------------------------------------------------------*
MODULE user_command INPUT.
  CASE sy-ucomm.
    WHEN 'BACK'.
      LEAVE PROGRAM.
    WHEN 'CHANGE'.
      IF g_dynnr EQ cs_dynnr100.
        LEAVE TO SCREEN cs_dynnr200.
      ELSE.
        LEAVE TO SCREEN cs_dynnr100.
      ENDIF.
  ENDCASE.
ENDMODULE.                 " LEAVE_PROGRAM  INPUT

*&---------------------------------------------------------------------*
*&      Module  READ_CALLED_DYNNR  OUTPUT
*&---------------------------------------------------------------------*
*       PBO модуль подэкрана 050
*----------------------------------------------------------------------*
MODULE read_called_dynnr OUTPUT.
  DATA: t_dynpfields TYPE TABLE OF dynpread.
  DATA: v_dyname TYPE progname.

  v_dyname = sy-cprog.
  CALL FUNCTION 'DYNP_VALUES_READ'
    EXPORTING
      dyname               = v_dyname
      dynumb               = cs_dynnr100
    TABLES
      dynpfields           = t_dynpfields
    EXCEPTIONS
      invalid_abapworkarea = 1
      invalid_dynprofield  = 2
      invalid_dynproname   = 3
      invalid_dynpronummer = 4
      invalid_request      = 5
      no_fielddescription  = 6
      invalid_parameter    = 7
      undefind_error       = 8
      double_conversion    = 9
      stepl_not_found      = 10
      OTHERS               = 11.
  IF sy-subrc <> 0.
    g_dynnr = cs_dynnr200.
  ELSE.
    g_dynnr = cs_dynnr100.
  ENDIF.

На вызываемом подэкране в примере есть только одно поле g_dynnr, которое показывает с какого экрана был вызов. Думаю, что решение корявое, но на безрыбье...


Последний раз редактировалось John Doe Ср, дек 10 2008, 14:40, всего редактировалось 1 раз.

Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 18 ]  На страницу 1, 2  След.

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


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

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


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

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