SAPфорум.RU
https://sapboard.ru/forum/

Как достать из профиля пользователя отдел?
https://sapboard.ru/forum/viewtopic.php?f=13&t=95577
Страница 1 из 2

Автор:  sonics [ Ср, окт 11 2017, 11:25 ]
Заголовок сообщения:  Как достать из профиля пользователя отдел?

Подскажите как забрать из профиля данные об отделе.
Имя sy-uname взял, дату создания sy-datum взял, теперь осталось только отдел этого пользователя?

Автор:  sonics [ Ср, окт 11 2017, 11:30 ]
Заголовок сообщения:  Re: Как достать из профиля пользователя отдел?

Code:
method GET_PARAM_FOR_USERNAME.
data: parameter1 type table of bapiparam1,
      parameter1_line like line of parameter1,
      return type bapiret2,
      i type i.

  call function 'BAPI_USER_GET_DETAIL'
    exporting
      username = username
    tables
      parameter1 = parameter1
      return = return2.
clear return.
i = 0.
loop at parameter1 into parameter1_line where parid = parid.
  parvalue = parameter1_line-parva.
  i = i + 1.
endloop.

if i = 0.
  return-type = 'E'.
  concatenate 'Отсутствует параметр ' parid ' для пользователя ' username into return-message.
  append return to return2.
endif.

endmethod.

использовал этот метод
далее посмотрел какие данные можно передавать через BAPI_USER_GET_DETAIL, но там не обнаружил именно отдела....

Автор:  Kuranov.Dmitry [ Ср, окт 11 2017, 11:32 ]
Заголовок сообщения:  Re: Как достать из профиля пользователя отдел?

sonics написал(а):
Подскажите как забрать из профиля данные об отделе.
Имя sy-uname взял, дату создания sy-datum взял, теперь осталось только отдел этого пользователя?


что-то типа такого

Code:
type-POOLs: SZADR.

  DATA:
    address   LIKE usaddress,
    logondata LIKE uslogond,
    defaults  LIKE usdefaults,
    ref_user  LIKE bapirefus,
    alias     LIKE bapialias.

  DATA:
    addr3_tab TYPE szadr_addr3_line,
    ADTEL_TAB type szadr_adtel_line.

  DATA:
    addr3_complete TYPE szadr_addr3_complete.


CALL FUNCTION 'SUSR_USER_READ'
    EXPORTING
      user_name            = sy-uname
      with_text            = 'X'
    IMPORTING
      user_logondata       = logondata
      user_defaults        = defaults
      ref_user             = ref_user
      alias                = alias
      user_address         = address
    EXCEPTIONS
      user_name_not_exists = 1
      internal_error       = 2
      thers                = 3.



  CALL FUNCTION 'ADDR_PERS_COMP_GET_COMPLETE'
    EXPORTING
      addrnumber                    = address-addrnumber
*     ADDRHANDLE                    =
      persnumber                    = address-persnumber
*     PERSHANDLE                    =
*     ARCHIVE_HANDLE                =
    IMPORTING
      addr3_complete                = addr3_complete
    EXCEPTIONS
      parameter_error               = 1
      address_not_exist             = 2
      person_not_exist              = 3
      internal_error                = 4
      wrong_access_to_archive       = 5
      OTHERS                        = 6.

  IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.

  LOOP AT addr3_complete-addr3_tab INTO addr3_tab.
    write addr3_tab-data-department.
  ENDLOOP.


Автор:  sonics [ Ср, окт 11 2017, 11:53 ]
Заголовок сообщения:  Re: Как достать из профиля пользователя отдел?

а через функцию BAPI_USER_GET_DETAIL ? возможно такое ?

Автор:  Kuranov.Dmitry [ Ср, окт 11 2017, 11:58 ]
Заголовок сообщения:  Re: Как достать из профиля пользователя отдел?

sonics написал(а):
а через функцию BAPI_USER_GET_DETAIL ? возможно такое ?

функцию SUSR_USER_READ можете заменить на BAPI_USER_GET_DETAIL для получения PERS_NO и ADDR_NO, если вам та функция больше нравится, но есть ли смысл ? BAPI_USER_GET_DETAIL вызывает SUSR_USER_READ внутри себя

Автор:  sonics [ Ср, окт 11 2017, 12:36 ]
Заголовок сообщения:  Re: Как достать из профиля пользователя отдел?

Kuranov.Dmitry написал(а):
sonics написал(а):
а через функцию BAPI_USER_GET_DETAIL ? возможно такое ?

функцию SUSR_USER_READ можете заменить на BAPI_USER_GET_DETAIL для получения PERS_NO и ADDR_NO, если вам та функция больше нравится, но есть ли смысл ? BAPI_USER_GET_DETAIL вызывает SUSR_USER_READ внутри себя

мне не то, чтобы нравится или нет.
все что выходит за рамки шаблонных решений вызывает некоторую сложность.
поэтому хотелось бы для начала с шаблонными решениями разобраться.
сейчас попробую, спасибо!

Автор:  Skif [ Ср, окт 11 2017, 14:09 ]
Заголовок сообщения:  Re: Как достать из профиля пользователя отдел?

Kuranov.Dmitry написал(а):
функцию SUSR_USER_READ можете заменить на BAPI_USER_GET_DETAIL для получения PERS_NO и ADDR_NO, если вам та функция больше нравится, но есть ли смысл ? BAPI_USER_GET_DETAIL вызывает SUSR_USER_READ внутри себя

уточните хотя бы что это всё только для ERP-систем

Автор:  sonics [ Ср, окт 11 2017, 14:51 ]
Заголовок сообщения:  Re: Как достать из профиля пользователя отдел?

я где-то туплю.
через команду write выводит на экран
но в таблицу не вставляет

Code:
LOOP AT gt_outtab ASSIGNING <fs_outtab>.
        MOVE-CORRESPONDING <fs_outtab> TO ls_zmmgyptable_temp.
        APPEND ls_zmmgyptable_temp TO it_zmmgyptable_temp.
      ENDLOOP.
      SELECT MAX( id ) INTO zid FROM zmmgyptable.  " забирает максимальное число из id и копирует его в zid
      LOOP AT it_zmmgyptable_temp ASSIGNING <fs_zmmgyptable> WHERE id IS INITIAL.
        zid = zid + 1.
        <fs_zmmgyptable>-id = zid.
        <fs_zmmgyptable>-whocreate = sy-uname.
        <fs_zmmgyptable>-datecreate = sy-datum.
        <fs_zmmgyptable>-whotechange = sy-uname.
        <fs_zmmgyptable>-datechange = sy-datum.
*        <fs_zmmgyptable>-PODRAZD = param.
        <fs_zmmgyptable>-PODRAZD = addr3_tab-data-department.
      ENDLOOP.

Автор:  Kuranov.Dmitry [ Ср, окт 11 2017, 15:14 ]
Заголовок сообщения:  Re: Как достать из профиля пользователя отдел?  Тема решена

внутрь каждого цикла заходит?
<fs_zmmgyptable>-PODRAZD и addr3_tab-data-department одного типа?

Автор:  Yozhhhhh [ Ср, окт 11 2017, 16:05 ]
Заголовок сообщения:  Re: Как достать из профиля пользователя отдел?

Да напрямую забрать уже)))
PERSNUMBER и ADDRNUMBER из USR21, а потом по этим значениям достать DEPARTMENT из ADCP.

Автор:  sonics [ Чт, окт 12 2017, 13:06 ]
Заголовок сообщения:  Re: Как достать из профиля пользователя отдел?

Несколько не так я понял задачу.
В профиле Параметры
я внес новый параметр и внес название подразделения.
Назвал параметр PODR.
и выдавать доступ отталкиваясь от содержимого этого параметра.

Автор:  Yozhhhhh [ Чт, окт 12 2017, 13:59 ]
Заголовок сообщения:  Re: Как достать из профиля пользователя отдел?

sonics написал(а):
Несколько не так я понял задачу.
В профиле Параметры
я внес новый параметр и внес название подразделения.
Назвал параметр PODR.
и выдавать доступ отталкиваясь от содержимого этого параметра.


Это концовка темы или продолжение вопроса?
Если как достать, то
GET PARAMETER ID 'PODR' field <имя>

Автор:  sonics [ Чт, окт 12 2017, 14:03 ]
Заголовок сообщения:  Re: Как достать из профиля пользователя отдел?

получается что продолжение, все равно с профилем работаем только в параметры лезем! :)

Автор:  sonics [ Пт, окт 20 2017, 08:52 ]
Заголовок сообщения:  Re: Как достать из профиля пользователя отдел?

Из профиля, достал подразделение из параметра и вставил в таблицу, теперь хотелось бы сделать сравнение по ключу.
К сожалению, [s]мой кривой[/s] поиск никаких результатов не дал мне...
Как я могу сравнить внутренности параметра, типа:
Code:
if podrazdelenie = 'ДРП'.
CALL SCREEN 1009.
else
message 'Ошибка: Неверные параметры: подразделения у пользователя!' type 'E' display like 'E'.
*            leave program.

Автор:  Kuranov.Dmitry [ Пт, окт 20 2017, 09:14 ]
Заголовок сообщения:  Re: Как достать из профиля пользователя отдел?

sonics написал(а):
Из профиля, достал подразделение из параметра и вставил в таблицу, теперь хотелось бы сделать сравнение по ключу.

Если таблица внутренняя:
READ TABLE<tabname> WITH TABLE KEY
если прозрачная:
SELECT SINGLE ... FROM .... WHERE...

Страница 1 из 2 Часовой пояс: UTC + 3 часа
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/