Всем привет, возникла следующая проблемка.
Есть программа с выгрузкой в Excel, если запускать её из системы напрямую - всё ок. 
Также данная программа может быть запущена по RFC, под тех. пользователем с типом "сервис". Под ним возникает проблемка - excel не выгружается. Причём даже сообщение выдаётся, что мол " N байтов перенесено", но при этом ничего не происходит. Находил в этой теме что была похожая проблема с проставлением флага sy-oncom, но протестировать это не могу, т.к. у этого тех пользователя нет полномочий на отладку, а если пытаюсь работать с этой программой по трастовому соединению(под своим пользователем) - всё также выгружается корректно.
Есть подозрение что это связано с необходимостью запуска скрипта на машине пользователя, можете посоветовать, в каком направлении лучше копать?
При трассировке нашёл, что еще идет проверка следующего объекта полномочий, под трастовым проходит успешно, под сервисным - ошибка. Но почему объект S_develop, разве у пользователя должны быть полномочия на этот объект?
Code:
Знач. полномочий
OBJTYPE   : DEBUG
ACTVT     : 02
DEVCLASS  :
OBJNAME   :
P_GROUP   :
type      : RF
name      : Z*
reason3   : X
contextid : 00136000BBEC9FA19C091EDA91FADE15228D437A
Объект полномочий
Объект полномочий           : S_DEVELOP
SY-SUBRC                    : 4 ( Нет полномочий )
Программа                   : Z*
Строка                      : 2 662
Актуальная транзакция       :
Число ЗначПолном            : 9
UPDATE: Для теста создали диалогового пользователя с такими же полномочиями - всё работает... Т.е. проблема в типе пользователя.
UPDATE2: Пока поправил так, добавил проверку на версию гуи для сервисного пользователя в методе initparams, может кому-то тоже пригодится
Code:
  SELECT SINGLE ustyp
    INTO  l_ustyp
    FROM usr02
    WHERE bname = sy-uname.
  IF sy-subrc = 0 AND l_ustyp <> 'A'.
    "не диалог. пользователь в фоне
*    сервисный пользователь тоже может быть в gui
*    проверяем для сервисного, доступен ли нам gui
    IF l_ustyp = 'S'.
      DATA: VERSION_TABLE TYPE FILETABLE,
            RC            TYPE I.
      cl_gui_frontend_services=>get_gui_version( CHANGING version_table = version_table
                                                          rc = rc
                                                 EXCEPTIONS others = 7 ).
      IF rc is not initial or sy-subrc <> 0.
        close_form = 'X'. "не выдаем сообщение
      ENDIF.
    ELSE.
      close_form = 'X'. "не выдаем сообщение
    ENDIF.
  ENDIF.