HR Cargar infotipo 0105 con HR_MAINTAIN_MASTERDATA

sap-hr
sap-abap
Etiquetas: #<Tag:0x00007f7ebc903548> #<Tag:0x00007f7ebc9033b8>

#1

Hola gente,

que tal? soy nueva en el grupo y espero puedan ayudarme con un tema de HR.

Estamos creando empleados con la función HR_MAINTAIN_MASTERDATA, varios infotipos. Todos cargan sin problema excepto el 0105 Comunicación en el que necesitamos informar 3 subtipos: 0002, 0010 y 0011. El primero se informa correctamente, pero los otros 2 los ignora por completo. En modo errores la función se detiene en estas dynpros donde podemos ver que los valores que le estamos pasando no se informan.

Tienen alguna idea de como lo podría solucionar?
Les paso el trozo de código para que vean cómo estamos informando la tabla de valores que le pasamos a la función:

**********************************************************************
*** Dados Infotipo 0000
**********************************************************************
  wa_pprop-infty = '0000'.
  wa_pprop-fname = 'P0000-PERNR'.
  wa_pprop-fval  =  pspar-pernr.
  APPEND wa_pprop TO lt_pprop.

  wa_pprop-infty = '0000'.
  wa_pprop-fname = 'P0000-MASSN'.
  wa_pprop-fval  =  p0000-massn.
  APPEND wa_pprop TO lt_pprop.

  wa_pprop-infty = '0000'.
  wa_pprop-fname = 'P0000-MASSG'.
  wa_pprop-fval  = ''. "'w_massg'.
  APPEND wa_pprop TO lt_pprop.

  wa_pprop-infty = '0000'.
  wa_pprop-fname = 'PSPAR-PERSG'.
  wa_pprop-fval =  pspar-persg.
  APPEND wa_pprop TO lt_pprop.

  wa_pprop-infty = '0000'.
  wa_pprop-fname = 'PSPAR-PERSK'.
  wa_pprop-fval =  pspar-persk.
  APPEND wa_pprop TO lt_pprop.

**********************************************************************
*** Dados Infotipo 0001
**********************************************************************
  wa_pprop-infty = '0001'.
  wa_pprop-fname = 'P0001-PERNR'.
  wa_pprop-fval  =  pspar-pernr.
  APPEND wa_pprop TO lt_pprop.

  wa_pprop-infty = '0001'.
  wa_pprop-fname = 'P0001-BUKRS'.
  wa_pprop-fval  =  p0001-bukrs.
  APPEND wa_pprop TO lt_pprop.

  wa_pprop-infty = '0001'.
  wa_pprop-fname = 'P0001-WERKS'.
  wa_pprop-fval  =  p0001-werks.
  APPEND wa_pprop TO lt_pprop.

  wa_pprop-infty = '0001'.
  wa_pprop-fname = 'P0001-BTRTL'.
  wa_pprop-fval  =  p0001-btrtl.
  APPEND wa_pprop TO lt_pprop.

  wa_pprop-infty = '0001'.
  wa_pprop-fname = 'P0001-PERSG'.
  wa_pprop-fval  =  pspar-persg.
  APPEND wa_pprop TO lt_pprop.

  wa_pprop-infty = '0001'.
  wa_pprop-fname = 'P0001-PERSK'.
  wa_pprop-fval  =  pspar-persk.
  APPEND wa_pprop TO lt_pprop.

  wa_pprop-infty = '0001'.
  wa_pprop-fname = 'P0001-PLANS'.
  wa_pprop-fval  =  p0001-plans.
  APPEND wa_pprop TO lt_pprop.

  wa_pprop-infty = '0001'.
  wa_pprop-fname = 'P0001-PROZT'.
  wa_pprop-fval  = pprhpr-prozt.
  APPEND wa_pprop TO lt_pprop.

**********************************************************************
*** Dados Infotipo 0002
**********************************************************************
  wa_pprop-infty = '0002'.
  wa_pprop-fname = 'P0002-PERNR'.
  wa_pprop-fval  =  pspar-pernr.
  APPEND wa_pprop TO lt_pprop.

  wa_pprop-infty = '0002'.
  wa_pprop-fname = 'P0002-ANRED'.
  wa_pprop-fval  =  p0002-anred.
  APPEND wa_pprop TO lt_pprop.

  wa_pprop-infty = '0002'.
  wa_pprop-fname = 'P0002-NACHN'.
  wa_pprop-fval  =  p0002-nachn.
  APPEND wa_pprop TO lt_pprop.

  wa_pprop-infty = '0002'.
  wa_pprop-fname = 'P0002-NACH2'.
  wa_pprop-fval  =  p0002-nach2.
  APPEND wa_pprop TO lt_pprop.

  wa_pprop-infty = '0002'.
  wa_pprop-fname = 'P0002-VORNA'.
  wa_pprop-fval  =  p0002-vorna.
  APPEND wa_pprop TO lt_pprop.

  wa_pprop-infty = '0002'.
  wa_pprop-fname = 'P0002-ID_TYPE'.
  wa_pprop-fval  =  q0002-id_type.
  APPEND wa_pprop TO lt_pprop.

  wa_pprop-infty = '0002'.
  wa_pprop-fname = 'P0002-PERID'.
  wa_pprop-fval  =  p0002-perid.
  APPEND wa_pprop TO lt_pprop.

  wa_pprop-infty = '0002'.
  wa_pprop-fname = 'P0002-GBDAT'.
  wa_pprop-fval  =  p0002-gbdat.
  APPEND wa_pprop TO lt_pprop.

  wa_pprop-infty = '0002'.
  wa_pprop-fname = 'P0002-NATIO'.
  wa_pprop-fval  =  p0002-natio.
  APPEND wa_pprop TO lt_pprop.

  wa_pprop-infty = '0002'.
  wa_pprop-fname = 'P0002-SPRSL'.
  wa_pprop-fval  =  p0002-sprsl.
  APPEND wa_pprop TO lt_pprop.

**********************************************************************
*** Dados Infotipo 0006
**********************************************************************
  wa_pprop-infty = '0006'.
  wa_pprop-fname = 'P0006-PERNR'.
  wa_pprop-fval  =  pspar-pernr.
  APPEND wa_pprop TO lt_pprop.

  wa_pprop-infty = '0006'.
  wa_pprop-fname = 'P0006-ANSSA'.
  wa_pprop-fval  =  p0006-anssa.
  APPEND wa_pprop TO lt_pprop.

  wa_pprop-infty = '0006'.
  wa_pprop-fname = 'P0006-STRDS'.
  wa_pprop-fval  =  p0006-strds.
  APPEND wa_pprop TO lt_pprop.

  wa_pprop-infty = '0006'.
  wa_pprop-fname = 'P0006-STRAS'.
  wa_pprop-fval  =  p0006-stras.
  APPEND wa_pprop TO lt_pprop.

  wa_pprop-infty = '0006'.
  wa_pprop-fname = 'P0006-PSTLZ'.
  wa_pprop-fval  =  p0006-pstlz.
  APPEND wa_pprop TO lt_pprop.

  wa_pprop-infty = '0006'.
  wa_pprop-fname = 'P0006-ORT01'.
  wa_pprop-fval  =  p0006-ort01.
  APPEND wa_pprop TO lt_pprop.

  wa_pprop-infty = '0006'.
  wa_pprop-fname = 'P0006-STATE'.
  wa_pprop-fval  =  p0006-state.
  APPEND wa_pprop TO lt_pprop.

  wa_pprop-infty = '0006'.
  wa_pprop-fname = 'P0006-LAND1'.
  wa_pprop-fval  =  p0006-land1.
  APPEND wa_pprop TO lt_pprop.

**********************************************************************
*** Dados Infotipo 0007
**********************************************************************
  wa_pprop-infty = '0007'.
  wa_pprop-fname = 'P0007-PERNR'.
  wa_pprop-fval  =  pspar-pernr.
  APPEND wa_pprop TO lt_pprop.

  wa_pprop-infty = '0007'.
  wa_pprop-fname = 'P0007-SCHKZ'.
  wa_pprop-fval  =  p0007-schkz.
  APPEND wa_pprop TO lt_pprop.

  wa_pprop-infty = '0007'.
  wa_pprop-fname = 'P0007-ZTERF'.
  wa_pprop-fval  =  p0007-zterf.
  APPEND wa_pprop TO lt_pprop.

  wa_pprop-infty = '0007'.
  wa_pprop-fname = 'P0007-EMPCT'.
  wa_pprop-fval  =  p0007-empct.
  APPEND wa_pprop TO lt_pprop.

  wa_pprop-infty = '0007'.
  wa_pprop-fname = 'P0007-ARBST'.
  wa_pprop-fval  =  p0007-arbst.
  APPEND wa_pprop TO lt_pprop.

  wa_pprop-infty = '0007'.
  wa_pprop-fname = 'P0007-WOSTD'.
  wa_pprop-fval  =  p0007-wostd.
  APPEND wa_pprop TO lt_pprop.

  wa_pprop-infty = '0007'.
  wa_pprop-fname = 'P0007-MOSTD'.
  wa_pprop-fval  =  p0007-mostd.
  APPEND wa_pprop TO lt_pprop.

  wa_pprop-infty = '0007'.
  wa_pprop-fname = 'P0007-JRSTD'.
  wa_pprop-fval  =  p0007-jrstd.
  APPEND wa_pprop TO lt_pprop.

  wa_pprop-infty = '0007'.
  wa_pprop-fname = 'P0007-WKWDY'.
  wa_pprop-fval  =  p0007-wkwdy.
  APPEND wa_pprop TO lt_pprop.

**********************************************************************
*** Dados Infotipo 0009
**********************************************************************
  wa_pprop-infty = '0009'.
  wa_pprop-fname = 'P0009-PERNR'.
  wa_pprop-fval  =  pspar-pernr.
  APPEND wa_pprop TO lt_pprop.

  wa_pprop-infty = '0009'.
  wa_pprop-fname = 'P0009-BNKSA'.
  wa_pprop-fval  =  p0009-bnksa.
  APPEND wa_pprop TO lt_pprop.

  wa_pprop-infty = '0009'.
  wa_pprop-fname = 'Q0009-EMFTX'.
  wa_pprop-fval  =  q0009-emftx.
  APPEND wa_pprop TO lt_pprop.

  wa_pprop-infty = '0009'.
  wa_pprop-fname = 'Q0009-BKPLZ'.
  wa_pprop-fval  =  q0009-bkplz.
  APPEND wa_pprop TO lt_pprop.

  wa_pprop-infty = '0009'.
  wa_pprop-fname = 'Q0009-BKORT'.
  wa_pprop-fval  =  q0009-bkort.
  APPEND wa_pprop TO lt_pprop.

  wa_pprop-infty = '0009'.
  wa_pprop-fname = 'P0009-BANKS'.
  wa_pprop-fval  =  p0009-banks.
  APPEND wa_pprop TO lt_pprop.

  wa_pprop-infty = '0009'.
  wa_pprop-fname = 'P0009-ZLSCH'.
  wa_pprop-fval  =  p0009-zlsch.
  APPEND wa_pprop TO lt_pprop.

  wa_pprop-infty = '0009'.
  wa_pprop-fname = 'P0009-WAERS'.
  wa_pprop-fval  =  p0009-waers.
  APPEND wa_pprop TO lt_pprop.

  wa_pprop-infty = '0009'.
  wa_pprop-fname = 'P0009-BANKL'.
  wa_pprop-fval  =  p0009-bankl.
  APPEND wa_pprop TO lt_pprop.

  wa_pprop-infty = '0009'.
  wa_pprop-fname = 'P0009-BANKN'.
  wa_pprop-fval  =  p0009-bankn.
  APPEND wa_pprop TO lt_pprop.

  wa_pprop-infty = '0009'.
  wa_pprop-fname = 'P0009-BKONT'.
  wa_pprop-fval  =  p0009-bkont.
  APPEND wa_pprop TO lt_pprop.

  wa_pprop-infty = '0009'.
  wa_pprop-fname = 'Q0009-IBAN00'.
  wa_pprop-fval  =  q0009-iban00.
  APPEND wa_pprop TO lt_pprop.

**********************************************************************
*** Dados Infotipo 0017
**********************************************************************
  wa_pprop-infty = '0017'.
  wa_pprop-fname = 'P0017-PERNR'.
  wa_pprop-fval  =  pspar-pernr.
  APPEND wa_pprop TO lt_pprop.

  wa_pprop-infty = '0017'.
  wa_pprop-fname = 'P0017-SPEBE'.
  wa_pprop-fval  =  p0017-spebe.
  APPEND wa_pprop TO lt_pprop.

**********************************************************************
*** Dados Infotipo 0014
**********************************************************************
  wa_pprop-infty = '0014'.
  wa_pprop-fname = 'P0014-PERNR'.
  wa_pprop-fval  =  pspar-pernr.
  APPEND wa_pprop TO lt_pprop.

  wa_pprop-infty = '0014'.
  wa_pprop-fname = 'P0014-BETRG'.
  wa_pprop-fval  =  1.
  APPEND wa_pprop TO lt_pprop.

  "Q0014-BETRG

*********************************************************************
** Dados Infotipo 0105
*********************************************************************
  wa_pprop-infty = '0105'.
  wa_pprop-fname = 'P0105-PERNR'.
  wa_pprop-fval  =  pspar-pernr.
  wa_pprop-seqnr = '00'.
  APPEND wa_pprop TO lt_pprop.

  wa_pprop-infty = '0105'.
  wa_pprop-fname = 'P0105-SUBTY'.
  wa_pprop-fval  =  '0002'.
  wa_pprop-seqnr = '00'.
  APPEND wa_pprop TO lt_pprop.

  wa_pprop-infty = '0105'.
  wa_pprop-fname = 'P0105-USRID'.
  wa_pprop-fval  =  gv_usrid02.
  wa_pprop-seqnr = '00'.
  APPEND wa_pprop TO lt_pprop.

  wa_pprop-infty = '0105'.
  wa_pprop-fname = 'P0105-PERNR'.
  wa_pprop-fval  =  pspar-pernr.
  wa_pprop-seqnr = '00'.
  APPEND wa_pprop TO lt_pprop.

  wa_pprop-infty = '0105'.
  wa_pprop-fname = 'P0105-SUBTY'.
  wa_pprop-fval  =  '0010'.
  wa_pprop-seqnr = '00'.
  APPEND wa_pprop TO lt_pprop.

  wa_pprop-infty = '0105'.
  wa_pprop-fname = 'P0105-USRID'.
  wa_pprop-fval  =  gv_usrid10.
  wa_pprop-seqnr = '00'.
  APPEND wa_pprop TO lt_pprop.

  wa_pprop-infty = '0105'.
  wa_pprop-fname = 'P0105-PERNR'.
  wa_pprop-fval  =  pspar-pernr.
  wa_pprop-seqnr = '00'.
  APPEND wa_pprop TO lt_pprop.

  wa_pprop-infty = '0105'.
  wa_pprop-fname = 'P0105-SUBTY'.
  wa_pprop-fval  =  '0011'.
  wa_pprop-seqnr = '00'.
  APPEND wa_pprop TO lt_pprop.

  wa_pprop-infty = '0105'.
  wa_pprop-fname = 'P0105-USRID'.
  wa_pprop-fval  =  gv_usrid02.
  wa_pprop-seqnr = '00'.
  APPEND wa_pprop TO lt_pprop.

**********************************************************************
*** Función HR_MAINTAIN_MASTERDATA
**********************************************************************

  CALL FUNCTION 'HR_MAINTAIN_MASTERDATA'
    EXPORTING
      pernr              = pspar-pernr
      massn              = 'A1'
      actio              = 'INS'
      tclas              = 'A'
      begda              = p0000-begda
      endda              = p0000-endda
      werks              = p0001-werks
      persg              = p0001-persg
      persk              = p0001-persk
      plans              = p0001-plans
      dialog_mode        = '1'
      no_existence_check = 'X'
      no_enqueue         = 'X'
    IMPORTING
      return             = lt_return
      return1            = lt_return1
    TABLES
      proposed_values    = lt_pprop
    EXCEPTIONS
      OTHERS             = 0.

#2

Estás utilizando el return1? se supone que ahí muestra los errores

IMPORTING
        return1 =  return

#3

Buena tarde,

No te compliques y usa un LSMW con grabación a ese infotipo.

Saludos


#4

hola,
gracias por responder.
Si lo estoy usando, de todas formas estoy lanzando la función en modo error por lo que salta a la vista que faltan informar campos que sí estoy informando, simplemente no los tiene en cuenta.

Sds
Marcela


#5

Lamentablemente no es una opción…
El programa que crea los empleados es una transacción tipo Modul Pool y la carga la harán los usuarios de forma online.


#6

Hola @mchanampa, por favor lee Cómo usar el foro de Consultoria-SAP

Especialmente la parte de formatear código, así pegas correctamente el código en tus temas. Hoy he editado yo tu mensaje para que salga bien el código, pero en el futuro, si no lo haces bien, el tema completo podría quedar invisible para que tú lo edites y lo dejes correctamente expuesto :+1:

También lee sobre responder a cada usuario, en vez de responder a dos respuestas seguidas como lo has hecho ahora, puedes responder a una y en un mismo mensaje, mencionas al 2do usuario como lo haces por ejemplo en twitter, o si no estás familiarizado con las menciones, usa el arroba (@) y a continuación el nick del usuario a quien quieres responder, como yo he hecho en esta respuesta.

Ayudanos a todos a mantener la comunidad organizada.


#7

ok @SidV, la proxima no pasa! sorry por la novatada


#8

Creo que sería mejor si nos pasas el código donde llenas los datos para enviar a los subtipos que te dan el problema, sino difícilmente podremos ayudarte.


#9

Buen día,

Los subtipos que mencionas 0002 te refieres al usuario de SAP? 0010 al correo electrónico? y 0011 al No. Tarjeta de crédito? todos estos vienen en el estándar.

Si es así considera que cada Subtipo tiene diferente campo y longitud donde se guarda la información.

El Subtipo 0002 de Usuario SAP usa el campo P0105-USRID y este es un CHAR de 30.
El Subtipo 0010 de Correo electrónico usa el campo P0105-USRID_LONG y este es un CHAR de 241.
El Subtipo 0011 de No. Tarjeta de crédito usa el campo P0105-USRID y este es un CHAR de 30.

Según observo el extracto de tu código, estas usando el campo USRID en el correo electrónico y debes usar el USRID_LONG.

Espero te sea de ayuda.


#10

@ponxo123, he copiado todo el código.
Están todos los infotipos que queremos crear.
El único que da problemas es el 105.
A pesar de informar los 3 subtipos con sus valores, no los reconoce, es como si no cambiara de pantalla. La función HR_MANTAIN_DATA internamente hace un Call Dialog. Yo nunca los he utilizado pero se parecen mucho al Call Transaction, y la sensación que tengo es que no cambia de dynpro.

@edgarvgiron1 si son esos los subtipos que quiero cargar.
He probado informar el subtipo 0010 en el campo USRID_LONG pero lo que consigo es que me quede informado en el subtipo 002 de la siguiente forma en la tabla:

Como le decía a @ponxo123, es como si no cambiara de dynpro y toda la info la quisiera subir al subtipo 0002 que es el primero.
En la imagen se ven los otros 2 subtipos informados pero es porque yo los he cargado manualmente…

Mil gracias desde ya por toda la ayuda que me puedan dar!
Sds
Marcela


#11

He investigado un poco tu problema y por lo que he visto hasta ahora, no es recomendable utilizar ese FM, debido a casos como el que presentas, pues parece que es un FM obsoleto diseñado para versiones anteriores, por ende, dynpros distintos. Lo que aconsejan es utilizar un BDC:

h_tps://archive.sap.com/discussions/message/5488772#5488772
h_tps://archive.sap.com/discussions/thread/837113


#12

@ponxo123 Te he hecho caso y terminé haciendo un Call Transaction… no es lo que mas me gusta pero al menos funciona de una.
Mil gracias!