Текущее время: Пн, авг 04 2025, 04:55

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 8 ] 
Автор Сообщение
 Заголовок сообщения: Submit <репорт> and return.
СообщениеДобавлено: Ср, дек 12 2007, 07:42 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Вт, янв 30 2007, 17:10
Сообщения: 488
Здравствуйте.
Описание проблемки: есть определенное приложение (приложение 1), в нем есть кнопка, по нажатии которой происходит переход в другое приложение (приложение2), используя сабжевую конструкцию. Теперь хитрый ход: из приложения 2 мы вызываем третье приложение (приложение 3) аналогичным способом. Но весь косяк заключается в том, что из приложения 3 я возвращаюсь не в приложение 2, а в приложение 1 :(

Код достался по наследству (как обычно...), да и не абапер я :(
Подскажите советом, что можно сделать в такой ситуации???

_________________
Карма - это суперпозиция граблей, на которые мы уже успели наступить, но которые еще не долетели...


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Submit <репорт> and return.
СообщениеДобавлено: Ср, дек 12 2007, 09:28 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, сен 07 2004, 17:47
Сообщения: 2988
Soulsurfer написал(а):
Здравствуйте.
Описание проблемки: есть определенное приложение (приложение 1), в нем есть кнопка, по нажатии которой происходит переход в другое приложение (приложение2), используя сабжевую конструкцию. Теперь хитрый ход: из приложения 2 мы вызываем третье приложение (приложение 3) аналогичным способом. Но весь косяк заключается в том, что из приложения 3 я возвращаюсь не в приложение 2, а в приложение 1 :(

Код достался по наследству (как обычно...), да и не абапер я :(
Подскажите советом, что можно сделать в такой ситуации???

А Что тут можно делать?
1) Найти автора и потребовать объяснений - вдруг так и было задумано;
2) Исследовать код приложений 2 и 3;

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


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

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
Ну что сказать...
Видимо приложение 3 вызывается из приложения 2 простым submit, без AND RETURN :?

upd.
Вот работающий код:
Code:
REPORT  z_test_submit1 NO STANDARD PAGE HEADING.

PARAMETERS: p_num(2) TYPE n NO-DISPLAY.

DATA: it_list TYPE STANDARD TABLE OF abaplist WITH HEADER LINE.

END-OF-SELECTION.
  ADD 1 TO p_num.

  CHECK p_num < 4.
  WRITE: / 'Application',p_num, 'begin'.
  SUBMIT z_test_submit1 WITH p_num = p_num AND RETURN EXPORTING LIST TO MEMORY .

  CALL FUNCTION 'LIST_FROM_MEMORY'
    TABLES
      listobject = it_list
    EXCEPTIONS
      not_found  = 1
      OTHERS     = 2.
  IF sy-subrc = 0.
    CALL FUNCTION 'WRITE_LIST'
*   EXPORTING
*     WRITE_ONLY       = 'X'
      TABLES
        listobject       = it_list
     EXCEPTIONS
       empty_list       = 1
       OTHERS           = 2.
  ENDIF.
  CALL FUNCTION 'LIST_FREE_MEMORY'
    TABLES
      listobject = it_list.

  WRITE: / 'Application',p_num, 'end'.


Запустив его, будет видно, что AND RETURN нормально возвращает управление вызвавшей программе.

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


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

Зарегистрирован:
Вт, янв 30 2007, 17:10
Сообщения: 488
Вызывающий код из приложения 1:
Code:
DATA: key_id(23) TYPE c VALUE 'PF_RECALL_'.
DATA: planfold   TYPE upb_cust_name.

CONCATENATE key_id sy-uname INTO key_id.

planfold = wa_exitp-chavl.
EXPORT planfold TO MEMORY ID key_id.
SUBMIT z_start_pf and RETURN.

FREE MEMORY ID key_id.

Не вдаваясь в подробности, wa_exitp-chavl получаем при вызове FM'a - является техническим именем папки планирования, которую необходимо вызвать.

Код репорта z_start_pf
Code:
DATA: key_id(23) TYPE c VALUE 'PF_RECALL_'.
DATA: planfold   TYPE upb_cust_name.

CONCATENATE key_id sy-uname INTO key_id.

IMPORT planfold FROM MEMORY ID key_id.

  CALL FUNCTION 'UPB_PM_XL_START'
       EXPORTING
            i_applc        = 'UPS'     
            i_pm           = planfold 
            i_display_only = ' '.


А вот во второй отрабатывает идентичный код для вызова последующей папки планирования и также вызывается репорт z_start_pf для вызова другой папки планирования.
Понимаю, что второй вызов должен отличаться от первого, только не пойму чем :(

_________________
Карма - это суперпозиция граблей, на которые мы уже успели наступить, но которые еще не долетели...


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

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
Да уж...
Тогда давайте определимся:
Отчет 1. Вызов 1-ой папки планирования
Отчет 2. Вызов 2-ой папки планирования
Отчет 3. z_start_pf. Вызывается и из Отчета 1, и из Отчета 2.

Я правильно понимаю?
Тогда непонятен начальный вопрос, т.к. Отчет 1 в приведенном коде не связан с Отчетом 2 :roll:

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


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, дек 13 2007, 06:18 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Вт, янв 30 2007, 17:10
Сообщения: 488
Нет, не так: есть папка планирования (приложение 1), в ней есть кнопка, которая выполняет ФМ, который в свою очередь вызывает репорт z_start_pf, т.е. запускает новую папку планирования (приложение 2). Во второй папке планирования есть своя кнопка, которая имеет свой ФМ с тем же кодом, и соответственно вызывает еще раз репорт z_start_pf, т.е. вызывается третья папка планирования, по выходе из которой мы возвращаемся не в папку 2, как хотелось бы, а в папку 1.

ЗЫ Понимаю, что бредово - а что делать :(

_________________
Карма - это суперпозиция граблей, на которые мы уже успели наступить, но которые еще не долетели...


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

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
1.Для передачи параметров используется одна и та же область ABAP-памяти. Поэтому при выходе из приложения 3.
Предлагаю изменить код программ, как это сделано в моем примере, с использованием параметра:
Code:
DATA: key_id(23) TYPE c VALUE 'PF_RECALL_'.
DATA: planfold   TYPE upb_cust_name.

CONCATENATE key_id sy-uname INTO key_id.

planfold = wa_exitp-chavl.
* EXPORT planfold TO MEMORY ID key_id.
SUBMIT z_start_pf WITH p_fold = wa_exitp-chavl and RETURN.

* FREE MEMORY ID key_id.

Код репорта z_start_pf Код:
Code:
*DATA: key_id(23) TYPE c VALUE 'PF_RECALL_'.
*DATA: planfold   TYPE upb_cust_name.

*CONCATENATE key_id sy-uname INTO key_id.

*IMPORT planfold FROM MEMORY ID key_id.
PARAMETERS: p_fold TYPE upb_cust_name.

END-OF-SELECTION.
  CALL FUNCTION 'UPB_PM_XL_START'
       EXPORTING
            i_applc        = 'UPS'     
            i_pm           = p_fold 
            i_display_only = ' '.

2.Сам ФМ UPB_PM_XL_START работает со статическими атрибутами класса CL_UPB_PM_XL. Поэтому еще здесь может быть засада.

upd: Исправил z_start_pf

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


Последний раз редактировалось Удав Чт, дек 13 2007, 16:39, всего редактировалось 2 раз(а).

Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, дек 13 2007, 10:21 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Вт, янв 30 2007, 17:10
Сообщения: 488
Спасибо, буду пробовать

_________________
Карма - это суперпозиция граблей, на которые мы уже успели наступить, но которые еще не долетели...


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

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


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

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


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

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