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

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


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

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


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

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