Lo tuyo kedaría:
no lo puedo probar porque hay cosas q no tengo.
* Tipo línea para crear estructuras
TYPES: BEGIN OF ty_tyl_resimp,
keycto TYPE char6,
textcto TYPE char50,
impuesto LIKE ZPSCD_VLRSATRIB-VALOR,
restaimp LIKE ZPSCD_VLRSATRIB-VALOR,
indcto TYPE char1,
END OF ty_tyl_resimp.
* Tipo línea para crear tablas
TYPES: ty_tab_resimp TYPE STANDARD TABLE OF ty_tyl_resimp.
* Tabla
DATA: t_resimp TYPE ty_tab_resimp.
* Estructura
DATA: w_resimp TYPE ty_tyl_resimp.
* Field-Symbols
FIELD-SYMBOLS: <fs_resimp> TYPE ty_tyl_resimp.
*---------------------------------------------------------------------*
* Calcula valores a mostrar en resumen
*---------------------------------------------------------------------*
FORM calcula-valores.
READ TABLE t_resimp ASSIGNING <fs_resimp> WITH KEY keycto = topera.
IF sy-subrc = 0.
IF sumres = '+'.
wvalor = t_resimp-impuesto + t_detimp-valor.
<fs_resimp>-impuesto = wvalor.
* Ya no hace falta el modify
* porque el field-symbol lo modifuca solo
* MODIFY t_resimp TRANSPORTING IMPUESTO WHERE KEYCTO = TOPERA.
ELSE.
wvalor = t_resimp-restaimp + t_detimp-valor.
<fs_resimp>-restaimp = wvalor.
* MODIFY t_resimp TRANSPORTING RESTAIMP WHERE KEYCTO = TOPERA.
ENDIF.
ELSE.
<fs_resimp>-keycto = topera.
<fs_resimp>-textcto = dopera.
<fs_resimp>-indcto = sumres.
CLEAR <fs_resimp>-impuesto.
CLEAR <fs_resimp>-restaimp.
IF sumres = '+'.
<fs_resimp>-impuesto = t_detimp-valor.
ELSE.
<fs_resimp>-restaimp = t_detimp-valor.
ENDIF.
APPEND <fs_resimp> TO t_resimp.
ENDIF.
ENDFORM. "CALCULA-VALORES
|