|
#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!!! |
#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 |
#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 |
#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 |
Herramientas | Buscar en Tema |
Desplegado | |
|
|