Текущее время: Пт, июл 18 2025, 23:37

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




Начать новую тему Ответить на тему  [ Сообщений: 51 ]  На страницу Пред.  1, 2, 3, 4
Автор Сообщение
 Заголовок сообщения: Это работает на автомате
СообщениеДобавлено: Ср, ноя 07 2007, 16:01 
Специалист
Специалист

Зарегистрирован:
Чт, июн 07 2007, 13:27
Сообщения: 136
Пол: Мужской
Code:
REPORT  ZD.
data:   person_info like PPROP occurs 0 WITH HEADER LINE,
        msg_result  like BAPIRETURN1,
        hr_return   like HRHRMM_MSG.

person_info-infty = '00298'.
person_info-fname = 'P0298-MASSG'.  "ïðè÷èíà ìåðîïðèÿòèÿ
person_info-fval  = '01'.
append person_info.

person_info-infty = '0298'.
person_info-fname = 'P0298-ORDNU'.  "íîìåð ïðèêàçà
person_info-fval  = 'Ô-12345678'.
append person_info.

person_info-infty = '0298'.
person_info-fname = 'P0298-ORDDT'.  "äàòà ïðèêàçà
person_info-fval  = '20070102'.
append person_info.

person_info-infty = '0298'.
person_info-fname = 'P0298-LOCAT'.  "ìåñòî õðàíåíèÿ ïðèêàçà
person_info-fval  = 'ÑÕÐÎÍ ÍÎÌÅÐ 1'.
append person_info.

person_info-infty = '0298'.
person_info-fname = 'P0298-REMAR'.  "îñîáûå îòìåòêè
person_info-fval  = 'ïåðåä ïðî÷òåíèåì ñúåñòü!'.
append person_info.

person_info-infty = '0298'.
person_info-fname = 'P0298-ORDST'.
person_info-fval  = ''.
append person_info.

person_info-infty = '0298'.
person_info-fname = 'P0298-ACQDT'.
person_info-fval  = '20071107'.
append person_info.

CALL FUNCTION 'HR_MAINTAIN_MASTERDATA'
EXPORTING
    PERNR                    = '00000012'
    MASSN                   = '01'
    ACTIO                    = 'MOD'
    TCLAS                    = 'A'
    BEGDA                   = '20050201'
    ENDDA                   = '20050201'
*   OBJPS                   =
*   SEQNR                   =
*   SPRPS                   =
    SUBTY                    = '0011'
    WERKS                   = 'UA01'        "ðàçäåë ïåðñîíàëà
*   PERSG                   =
*   PERSK                   =
*   PLANS                    =
    DIALOG_MODE        = '0'
    LUW_MODE             = '1'
*   NO_EXISTENCE_CHECK   = ' '
*   NO_ENQUEUE                  = ' '
IMPORTING
*   RETURN                 =
    RETURN1                = msg_result
    HR_RETURN            = HR_RETURN
TABLES
    PROPOSED_VALUES  = person_info
*   MODIFIED_KEYS      =
.
MESSAGE msg_result TYPE 'I'.
MESSAGE HR_RETURN  TYPE 'I'.
exit.

Это работает на автомате


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ФМ 'HR_MAINTAIN_MASTERDATA' для ведения ИТ 0298
СообщениеДобавлено: Ср, ноя 07 2007, 16:09 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, сен 07 2004, 17:47
Сообщения: 2988
Bully написал(а):
ИМХО имеет место попытка автоматизации процесса, который не понятен.
Ну не знаю. Тема создана "Сен 07, 2007". С тех пор как-то не видно прогресса в знании как предметной области, так и программирования. Не говоря уже про постановку вопросов и расстановку тегов CODE. Вот что смущает.

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


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Это работает на автомате
СообщениеДобавлено: Ср, ноя 07 2007, 16:47 
Старший специалист
Старший специалист

Зарегистрирован:
Чт, сен 13 2007, 09:44
Сообщения: 256
alex_dorin написал:
Code:
REPORT  ZD.
data:   person_info like PPROP occurs 0 WITH HEADER LINE,
        msg_result  like BAPIRETURN1,
        hr_return   like HRHRMM_MSG.

person_info-infty = '00298'.
person_info-fname = 'P0298-MASSG'.  "ïðè÷èíà ìåðîïðèÿòèÿ
person_info-fval  = '01'.
append person_info.

person_info-infty = '0298'.
person_info-fname = 'P0298-ORDNU'.  "íîìåð ïðèêàçà
person_info-fval  = 'Ô-12345678'.
append person_info.

person_info-infty = '0298'.
person_info-fname = 'P0298-ORDDT'.  "äàòà ïðèêàçà
person_info-fval  = '20070102'.
append person_info.

person_info-infty = '0298'.
person_info-fname = 'P0298-LOCAT'.  "ìåñòî õðàíåíèÿ ïðèêàçà
person_info-fval  = 'ÑÕÐÎÍ ÍÎÌÅÐ 1'.
append person_info.

person_info-infty = '0298'.
person_info-fname = 'P0298-REMAR'.  "îñîáûå îòìåòêè
person_info-fval  = 'ïåðåä ïðî÷òåíèåì ñúåñòü!'.
append person_info.

person_info-infty = '0298'.
person_info-fname = 'P0298-ORDST'.
person_info-fval  = ''.
append person_info.

person_info-infty = '0298'.
person_info-fname = 'P0298-ACQDT'.
person_info-fval  = '20071107'.
append person_info.

CALL FUNCTION 'HR_MAINTAIN_MASTERDATA'
EXPORTING
    PERNR                    = '00000012'
    MASSN                   = '01'
    ACTIO                    = 'MOD'
    TCLAS                    = 'A'
    BEGDA                   = '20050201'
    ENDDA                   = '20050201'
*   OBJPS                   =
*   SEQNR                   =
*   SPRPS                   =
    SUBTY                    = '0011'
    WERKS                   = 'UA01'        "ðàçäåë ïåðñîíàëà
*   PERSG                   =
*   PERSK                   =
*   PLANS                    =
    DIALOG_MODE        = '0'
    LUW_MODE             = '1'
*   NO_EXISTENCE_CHECK   = ' '
*   NO_ENQUEUE                  = ' '
IMPORTING
*   RETURN                 =
    RETURN1                = msg_result
    HR_RETURN            = HR_RETURN
TABLES
    PROPOSED_VALUES  = person_info
*   MODIFIED_KEYS      =
.
MESSAGE msg_result TYPE 'I'.
MESSAGE HR_RETURN  TYPE 'I'.
exit.

     Это работает на автомате

Вполне вероятно. Ключевой добавленный параметр здесь ACTIO = ''MOD' (изменение) и по-видимому есть запись инфотипа 298 на 01.02.2005. Тогда должно работать.
Инфотип 298 можно изменять без мероприятия, а вот добавлять нет. Посмотрите код MODULE P0298 для mp029800. там стоит железная
проверка. А здесь при вызове фм еще и massn заполнен.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ФМ HR_INFOTYPE_OPERATION , HR_INFOTYPE_GETDETAIL подробнее о парметрах
СообщениеДобавлено: Пт, мар 13 2009, 17:00 
Младший специалист
Младший специалист

Зарегистрирован:
Пт, ноя 07 2008, 16:32
Сообщения: 76
Добрый день. Помогите пожалуйста.
Есть задача - модифицировать поля ИТ, использую HR_INFOTYPE_OPERATION
В ИТ9002 для т.н. записей может быть >=1

Code:
" ================ ИТ9002 ВЕДЕНИЕ ПАДЕЖЕЙ ================
" блокируем т.н
CALL FUNCTION 'BAPI_EMPLOYEE_ENQUEUE'
EXPORTING
        NUMBER = tabn
IMPORTING
        RETURN = return_struc_enq.
" читаем ИТ9002
CALL FUNCTION 'HR_READ_INFOTYPE'
EXPORTING
        PERNR = tabn
        INFTY = '9002'
        BEGDA = '18000101'
        ENDDA = '99991231'
IMPORTING
        SUBRC = return_read_it
TABLES
        INFTY_TAB = P9002
EXCEPTIONS
        INFTY_NOT_FOUND = 1
        OTHERS          = 2.

LOOP AT P9002.
  " модифицируем поля ИТ9002
      P9002-TEXT_FAM = 'Фамилия'.
      P9002-TEXT_IM = 'Имя'.
      P9002-TEXT_OT = 'Отчество'.
  " модифицируем ИТ9002
  CALL FUNCTION 'HR_INFOTYPE_OPERATION'
    EXPORTING
          INFTY         = '9002'
          NUMBER        = P9002-PERNR
          LOCKINDICATOR = P9002-SPRPS
          VALIDITYEND   = P9002-ENDDA
          VALIDITYBEGIN = P9002-BEGDA
          RECORDNUMBER  = P9002-SEQNR
          RECORD        = P9002
          OPERATION     = 'MOD'
          DIALOG_MODE   = '1'
   IMPORTING
          RETURN        = return_struc
          key           = record_key.

IF return_struc-type = 'E'.
write: 'Данных для 9002 (в выбранном периоде) не существует'.
ENDIF.

ENDLOOP.

" разблокируем т.н
CALL FUNCTION 'BAPI_EMPLOYEE_DEQUEUE'
EXPORTING
        NUMBER = tabn
IMPORTING
        RETURN = return_struc_enq.


В результате срабатывает ветка условия, т.е. "Данных для 9002 (в выбранном периоде) не существует", период выбранных записей '18000101' '99991231'
Через pa30 смотрю ИТ9002 в этом же периоде - все вижу.
Подскажите, в чем может быть причина?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ФМ HR_INFOTYPE_OPERATION , HR_INFOTYPE_GETDETAIL подробнее о парметрах
СообщениеДобавлено: Пт, мар 13 2009, 17:57 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, сен 07 2004, 17:47
Сообщения: 2988
ZOND написал(а):
Добрый день. Помогите пожалуйста.
Есть задача - модифицировать поля ИТ, использую HR_INFOTYPE_OPERATION
В ИТ9002 для т.н. записей может быть >=1

...
В результате срабатывает ветка условия, т.е. "Данных для 9002 (в выбранном периоде) не существует", период выбранных записей '18000101' '99991231'
Через pa30 смотрю ИТ9002 в этом же периоде - все вижу.
Подскажите, в чем может быть причина?

А подтипы у ИТ9002 есть?

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


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ФМ HR_INFOTYPE_OPERATION , HR_INFOTYPE_GETDETAIL подробнее о парметрах
СообщениеДобавлено: Пн, мар 16 2009, 08:51 
Младший специалист
Младший специалист

Зарегистрирован:
Пт, ноя 07 2008, 16:32
Сообщения: 76
Всем спасибо! Разобрался.
Получилось вот как
Code:
" ================ ИТ9002 ВЕДЕНИЕ ПАДЕЖЕЙ ================
" блокируем т.н
CALL FUNCTION 'BAPI_EMPLOYEE_ENQUEUE'
EXPORTING
        NUMBER = tabn
IMPORTING
        RETURN = return_struc_enq.
" читаем ИТ9002
CALL FUNCTION 'HR_READ_INFOTYPE'
EXPORTING
        PERNR = tabn
        INFTY = '9002'
        BEGDA = '18000101'
        ENDDA = '99991231'
IMPORTING
        SUBRC = return_read_it
TABLES
        INFTY_TAB = P9002
EXCEPTIONS
        INFTY_NOT_FOUND = 1
        OTHERS          = 2.

LOOP AT P9002  WHERE SUBTY = '1'.
  " модифицируем поля ИТ9002
      P9002-TEXT_FAM = 'Фамилия'.
      P9002-TEXT_IM = 'Имя'.
      P9002-TEXT_OT = 'Отчество'.
  " модифицируем ИТ9002 подтип 1
  CALL FUNCTION 'HR_INFOTYPE_OPERATION'
    EXPORTING
          INFTY         = '9002'
          SUBTYPE       = '1'
          NUMBER        = P9002-PERNR
          LOCKINDICATOR = P9002-SPRPS
          VALIDITYEND   = P9002-ENDDA
          VALIDITYBEGIN = P9002-BEGDA
          RECORDNUMBER  = P9002-SEQNR
          RECORD        = P9002
          OPERATION     = 'MOD'
          DIALOG_MODE   = '1'
   IMPORTING
          RETURN        = return_struc
          key           = record_key.
WRITE 'SUBTYPE 1'.
ENDLOOP.



LOOP AT P9002  WHERE SUBTY = '2'.
P9002-TEXT_FAM = 'Фамилия'.
      P9002-TEXT_IM = 'Имя'.
      P9002-TEXT_OT = 'Отчество'.

" модифицируем ИТ9002 подтип 2
  CALL FUNCTION 'HR_INFOTYPE_OPERATION'
    EXPORTING
          INFTY         = '9002'
          SUBTYPE       = '2'
          NUMBER        = P9002-PERNR
          LOCKINDICATOR = P9002-SPRPS
          VALIDITYEND   = P9002-ENDDA
          VALIDITYBEGIN = P9002-BEGDA
          RECORDNUMBER  = P9002-SEQNR
          RECORD        = P9002
          OPERATION     = 'MOD'
          DIALOG_MODE   = '1'
   IMPORTING
          RETURN        = return_struc
          key           = record_key.
WRITE 'SUBTYPE 2'.
ENDLOOP.


Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 51 ]  На страницу Пред.  1, 2, 3, 4

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


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

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


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

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