Ayuda SAP

Funcion HR PYXX_READ_PAYROLL_RESULT

Hola !!! estoy necesitando tomar los valores de un programa de hr: H99CWTR0
Los campos que necesito son:
Lgart, anzhl, betrg que veo que luego que pasa por la funcion PYXX_READ_PAYROLL_RESULT, en el resultado de dicha funcion: ls_result noto que esa info esta en LS_RESULT-INTER-VERSC como hago para capturarla y desplegarla y asociarla al codigo de empleado que tengo.

Muchas Gracias

Ana

Estimada @aalvarez2605 por ahi tienes varios temas relacionado con este abierto, por favor marca una respuesta de los que ya has podido cerra.

En otro post te comente que a esta funcion se la pasa el numero de personal, por ejemplo:

CALL FUNCTION 'PYXX_READ_PAYROLL_RESULT'
    EXPORTING
     clusterid                          = 'CL'
      employeenumber                     = p_pernr
      sequencenumber                     = p_seqnr
*   READ_ONLY_BUFFER                   = ' '
*   READ_ONLY_INTERNATIONAL            = ' '
*   ARC_GROUP                          = ' '
*   CHECK_READ_AUTHORITY               = 'X'
*   FILTER_CUMULATIONS                 = 'X'
*   CLIENT                             =
* IMPORTING
*   VERSION_NUMBER_PAYVN               =
*   VERSION_NUMBER_PCL2                =
    CHANGING
      payroll_result                     = lt_payres
   EXCEPTIONS
     illegal_isocode_or_clusterid       = 1
     error_generating_import            = 2
     import_mismatch_error              = 3
     subpool_dir_full                   = 4
     no_read_authority                  = 5
     no_record_found                    = 6
     versions_do_not_match              = 7
     error_reading_archive              = 8
     error_reading_relid                = 9
     OTHERS                             = 10.

donde el parametro EMPLOYEENUMBER de la misma funcion, tiene el numero de personal.

1 me gusta

Buen dia amigo, si yo vi la respuesta pero como no veo como enlazo la info que necesito:

Lo que no entiendo es como relacionar la info que trae esa funcion en las diferentes estructuras, por ejemplo necesito desplegar en mi salida:
codigo empleado, lgart, betrg, paydt, fpper, juper, waers, abkrs, molga,

Unos estan en la estructura rt, otros en la inter- versc no estan todas en la misma estructura como seria el procedimiento para unirlas asocaidas al codigo de empelado.

Muchas Gracias

Ana

Esto ya es logica del programa, la cual se la tienes que dar tu.

Asi por encima te diria que crees un estructura local en tu programa donde tengas los campos que necesitas, luego vas guardando todo eso en una estructura y luego lo insertes en una tabla interna.

1 me gusta

Para definir una tabla local de mi estructura ls_result_inter-versc, esta correcto hacerlo asi:

DATA:           BEGIN OF t_inter OCCURS 10,
                  molga         TYPE molga,
                  abkrs         LIKE pc261-iabkrs,
                  juper         LIKE p0001-juper,
                  waers         TYPE waers,
                  paydt         LIKE pc261-paydt,
                  fpper         LIKE pc261-fpper,
                END OF t_inter.

Y luego que se ejecute la funcion PYXX_READ_PAYROLL_RESULT el loop como quedaria:

pero como manipulo el resultado ls_result de la funcion???
como hago ese loop at ls_resul???

No tengo muy claro cual tu duda si el problema es como leer una ‘deep structure’ o cual exactamente.
tienes que hacer un programa basandote en el H99CWTR0?
la tabla t_inter para que es ? porque parece una tabla con algunos de los campos de la versc .
deberás tener una tabla interna que quieres rellenar con datos como numero de personal (si no he entendido mal en los mensajes anteriores) molga, abkrs , juper …
tuestructura-molga = ls_result-versc-molga

o move-corresponding ls_result-versc to tuestructura …

Detalla un poco mas lo que necesitas para poder ayudarte :slight_smile:

Hola amigo, luego que lee la funcion PYXX_READ_PAYROLL_RESULT, yo quiero capturar los valores de varios campos de dos cluster, por ejemplo del cluster RT necesito lgart,anzhl y betrg y del cluster versc necesito molga, abkrs, juper, waers, paydt, fpper y iabkrs de cada uno de los empleados.

Hola,

Revisa este link

ht_ps://luislokox.wordpress.com/2016/04/06/crear-y-usar-una-tabla-interna-dentro-de-otra-abap/

Entiendo que te puede servir.

Saludos,
Sebastián

Yo tengo la funcion:

call function 'PYXX_READ_PAYROLL_RESULT'
         exporting
              clusterid                    = iv_relid
              employeenumber               = iv_pernr
              sequencenumber               = ls_evp-seqnr
*             READ_ONLY_BUFFER             = ' '
              read_only_international      = 'X'
         changing
              payroll_result               = ls_result
         exceptions
              illegal_isocode_or_clusterid = 1
              error_generating_import      = 2
              import_mismatch_error        = 3
              subpool_dir_full             = 4
              no_read_authority            = 5
              no_record_found              = 6
              versions_do_not_match        = 7
              others                       = 8.

Y quiero sacar de los diferentes cluster algunos campos para cada uno de los codigos empleados. Coloque wa_rt para obtener del cluster RT los campos que aparecen ahi (lgart, anzhl y betrg) ahora quiero hacer lo mismo de ls_result-inter-versc pero me dice que versc no es una tabla interna? como hago para obtener de esa estructura molga, waers, juepr, fpper, iabkrs y paydt??

    loop at ls_result-inter-rt into wa_rt.
       alv_out-lgart = wa_rt-lgart.
       alv_out-anzhl = wa_rt-anzhl.
       alv_out-betrg = wa_rt-betrg.
       append alv_out.
    endloop.

y nos mostrarias como tienes declarado LS_RESULT (junto a todos sus types, etc) ?

Lo tengo definido asi: data ls_result type pay99_result. que es como estaba original.

Ahhh, creo que viene por acá la cosa:

Pudiste hacerle un loop a RT, porque justamente es una tabla, pero VERSC, es una estructura, por lo que si no me equivoco deberias leer el valor directamente.

 loop at ls_result-inter-rt into wa_rt.
       alv_out-lgart = wa_rt-lgart.
       alv_out-anzhl = wa_rt-anzhl.
       alv_out-betrg = wa_rt-betrg.

       ESTRUCTURA_VERSC = wa_rt-VERSC

       append alv_out.
    endloop.

Por favor prueba con eso.

Saludos,
Sebastián