Actualizar valores de TC de infotipo 0008

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • playa82
    Member
    • abr
    • 34

    #1

    Actualizar valores de TC de infotipo 0008

    Hola, tengo un problema con la actualización de los importes que aparecen en el table control del infotipo 0008:

    En la user exit de PA (tb lo he probado en la badi de PA), recupero sus valores mediante la función 'BAPI_BASICPAY_GETDETAIL' y en base al grado de ocupación del empleado, quiero modificar sus importes.
    Por debuguer he modificado los importes y los estoy intentando mostrar de nuevo en el TC usando field-symbols y el método pnnnn_to_prelp, ¡pero no hay manera!

    Pongo mi código:
    CALL FUNCTION 'BAPI_BASICPAY_GETDETAIL'
    EXPORTING
    employeenumber = le_0008-pernr
    subtype = le_0008-subty
    objectid = le_0008-objps
    lockindicator = le_0008-sprps
    validitybegin = le_0008-begda
    validityend = le_0008-endda
    recordnumber = le_0008-seqnr
    TABLES
    wagetypes = gt_q0008.
    IF sy-subrc EQ 0.

    LOOP AT gt_q0008 INTO ge_q0008.

    * Actualizar su importe en función del grado de ocupación
    ld_100 = ( ge_q0008-amount * 100 ) / le_0008-bsgrd.
    ge_q0008-amount = ( ld_100 * pe_0008-bsgrd ) / 100.

    * ACTUALIZAR PANTALLA
    ld_tabix = sy-tabix.
    * Con esto estaría informando los campos de pantalla --> pero no funciona
    CONCATENATE '(MP000800)P0008-BET' ld_tabix INTO ld_campo.
    ASSIGN (ld_campo) TO <fs_salary>.
    <fs_salary> = ge_q0008-amount.

    * Con esto la estructura ge_0008 que luego paso de nuevo a pantalla mediante un método.
    CONCATENATE 'PE_0008-BET' ld_tabix INTO ld_0008.
    ASSIGN (ld_0008) TO <fs_0008>.
    <fs_0008> = ge_q0008-amount.

    ENDLOOP.
    UNASSIGN <fs_salary>. UNASSIGN <fs_0008>.

    * Devolver información actualizada
    CALL METHOD cl_hr_pnnnn_type_cast=>pnnnn_to_prelp
    EXPORTING
    pnnnn = pe_0008
    IMPORTING
    prelp = innnn.

    Un saludo y gracias!!!
    Yo misma
  • stormshadow
    Senior Member
    • jun
    • 117

    #2
    mmm y para que asignas primero unos valores a <fs_salary> y luego lo igualas con otro valor? lo mismo haces con <fs_0008> :S y aparte los valores de tú field symbol no se los mandas a tú método verdad? le mandas otra tabla, ya te aseguraste que tenga valores???
    "Si quieres resultados distintos, no hagas siempre lo mismo" .... Einstein

    Comentario

    • playa82
      Member
      • abr
      • 34

      #3
      Es que se puede decir que he hecho dos cosas juntas, dos ideas que he leido por internet y como ninguna me ha funcionado por separado, pues he hecho las dos juntas al final y tampoco, jeje.
      - El primer field-symbol <fs_salary> lo uso para rellenar supuestamente el table control en pantalla, es decir, relleno los campos (MP000800)P0008-BETXX, que se supone que son las columnas de importe del table control --> no funciona
      - El segundo field-symbol <fs_0008> lo uso para rellenar la estructura PE_0008 de tipo P0008 que leo de pantalla y modifico (con el field-symbol modifico los campos PE_0008-BETXX) para luego devolverla de nuevo a la pantalla con el método pnnnn_to_prelp.
      Recupero bien toda la información y todas las estructuras están bien rellenas, vamos, q lo tengo superprobado, pero no sé pq la pantalla no se actualiza.
      Yo misma

      Comentario

      • playa82
        Member
        • abr
        • 34

        #4
        CONSEGUIDO!!!

        He visto que en el PBO del infotipo 0008 se maneja la tabla TBLGART y como es accesible desde mi código, apuntándola con un field-symbol puedo modificar su contenido!

        FIELD-SYMBOLS:
        <fs_tabla> TYPE table.

        * Apuntar al TC del infotipo 0008
        ld_nomtabla = '(MP000800)TBLGART[]'.
        ASSIGN (ld_nomtabla) TO <fs_tabla>.

        Gracias!
        Yo misma

        Comentario

        Trabajando...