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

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


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

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


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

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