‎2008 Apr 24 10:42 PM
Hi all,
I have a big problem, i have added the next code into a user exit.
TYPES: BEGIN OF ty_vbap.
INCLUDE STRUCTURE vbap.
TYPES: difer TYPE vbap-netwr,
END OF ty_vbap.
DATA: x_vbap TYPE STANDARD TABLE OF vbap WITH HEADER LINE, "cabecera
y_vbap TYPE STANDARD TABLE OF vbap WITH HEADER LINE, "posiciones
z_vbap TYPE STANDARD TABLE OF ty_vbap WITH HEADER LINE, "diferencia
w_vbap TYPE vbap.
DATA: lv_netwr LIKE vbap-netwr,
lv_resul(8) TYPE p DECIMALS 8,
lv_netwr_p LIKE vbap-netwr,
lv_netwr_c LIKE vbap-netwr,
lv_difer LIKE vbap-netwr.
*Agrupa tabla de header y posiciones
REFRESH : z_vbap, y_vbap, z_vbap.
CLEAR: z_vbap, y_vbap, z_vbap.
LOOP AT xvbap.
IF xvbap-uepos = 0 AND xvbap-pstyv = 'ZC4W'.
MOVE-CORRESPONDING xvbap TO w_vbap.
APPEND w_vbap TO x_vbap.
ELSE.
y_vbap-vbeln = xvbap-vbeln.
y_vbap-pstyv = xvbap-pstyv.
y_vbap-uepos = xvbap-uepos.
y_vbap-netwr = xvbap-netwr.
COLLECT y_vbap.
ENDIF.
ENDLOOP.
Calcula si existe diferencia entre las posiciones y cabecera
SORT x_vbap.
SORT y_vbap.
LOOP AT x_vbap.
READ TABLE y_vbap
WITH KEY vbeln = x_vbap-vbeln
uepos = x_vbap-posnr
BINARY SEARCH.
IF sy-subrc = 0.
IF y_vbap-netwr <> x_vbap-netwr.
MOVE-CORRESPONDING x_vbap TO z_vbap.
z_vbap-difer = x_vbap-netwr - y_vbap-netwr.
APPEND z_vbap.
ENDIF.
ENDIF.
ENDLOOP.
Calcula prorrateo entre posiciones pedido
SORT z_vbap.
DESCRIBE TABLE z_vbap LINES sy-tfill.
IF sy-tfill <> 0.
*
CLEAR: lv_netwr,
lv_netwr_p,
lv_netwr_c,
lv_difer,
lv_resul.
LOOP AT xvbap WHERE uepos NE '0'
AND pstyv EQ 'ZP4W'.
READ TABLE z_vbap WITH KEY vbeln = xvbap-vbeln
posnr = xvbap-uepos
BINARY SEARCH.
MOVE xvbap-netwr TO lv_netwr_p. "importe posiciones
MOVE z_vbap-netwr TO lv_netwr_c. "importe cabecera
MOVE z_vbap-difer TO lv_difer. "diferencia.
IF z_vbap-difer > 0.
Mueve a komp-kzwi3 si es positivo
lv_resul = ( xvbap-netwr / z_vbap-netwr ) * z_vbap-difer.
MOVE lv_resul TO komp-kzwi3.
ELSE.
Mueve a komp-kzwi4 si es negativo
lv_resul = ( xvbap-netwr / z_vbap-netwr ) * z_vbap-difer.
MOVE lv_resul TO komp-kzwi4.
ENDIF.
ENDLOOP.
The problem is in the arithmetic operation , variable lv_resul doesn't catch the value of the arithmetic operation , is empty. And I don´t know why if xvbap-netwr , z_vbap-netwr and z_vbap-difer have values. somebody could help me please???
thanks in advance.
regards
marisol.
‎2008 Apr 24 10:46 PM