Текущее время: Сб, авг 02 2025, 20:10

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


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

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


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

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