Ver Mensaje Individual
  #4  
Viejo 11/08/09, 15:00:47
marva300 marva300 is offline
Junior Member
 
Fecha de Ingreso: jun 2009
Mensajes: 6
Descuadre en Stock de Materiales

Tengo este codigo que me obtiene el Stock de Materiales en un rango de fechas y cuando lo comparo con la MB5B en algunos casos falla y esto solo en Productivo en desarrollo nunca falla, escribo porque soy nuevo y es una de mis primeras tareas a cargo espero sus prontas respuestas de ayuda en donde creen que puede estar la falla


FORM organizar_datos .

DATA: l_st_lu TYPE mard-labst,
l_st_cc TYPE mard-labst,
l_st_bl TYPE mard-labst,
l_erfme TYPE mseg-erfme.


LOOP AT it_stock INTO w_stock WHERE flag_conv EQ 'X'.
CLEAR w_rep.

CLEAR w_mat.
READ TABLE it_mat INTO w_mat WITH KEY matnr = w_stock-matnr.

* IF NOT p_matkl IS INITIAL AND w_mat-matkl NE p_matkl.
IF NOT w_mat-matkl IN s_matkl.
CONTINUE.
ENDIF.

w_rep-werks = w_stock-werks.
w_rep-lgort = w_stock-lgort.

CLEAR w_cli.
READ TABLE it_cli INTO w_cli WITH KEY kunnr = w_mat-zzcodclient.

w_rep-matkl = w_mat-matkl.
w_rep-sortl = w_cli-sortl.

CALL FUNCTION 'CONVERSION_EXIT_MATN1_OUTPUT'
EXPORTING
input = w_stock-matnr
IMPORTING
output = w_rep-matnr.

w_rep-maktx = w_mat-maktx.

l_erfme = p_erfme.

IF l_erfme IS INITIAL.
l_erfme = w_mat-meins.
ENDIF.

* { Begin of Delete PDA14072008
* CALL FUNCTION 'CONVERSION_EXIT_CUNIT_OUTPUT'
* EXPORTING
* input = l_erfme
* IMPORTING
* output = w_rep-meins.
* End of Delete PDA14072008 }

WRITE l_erfme TO w_rep-meins. "I-PDA14072008

CLEAR w_uni.
READ TABLE it_uni INTO w_uni WITH KEY matnr = w_stock-matnr
meinh = l_erfme.
IF sy-subrc EQ 0.
w_rep-factor = w_uni-umrez / w_uni-umren.
ENDIF.

IF p_vislot EQ 'X'.
w_rep-charg = w_stock-charg.
ENDIF.

IF p_datum LT sy-datum.
CLEAR: l_st_lu, l_st_cc, l_st_bl.
* Buscamos los movimientos de mercancias
IF p_vislot EQ 'X'.
LOOP AT it_movcon INTO w_movcon WHERE matnr EQ w_stock-matnr AND
werks EQ w_stock-werks AND
lgort EQ w_stock-lgort AND
charg EQ w_stock-charg AND
flag_conv EQ 'X'.
CASE w_movcon-insmk.
WHEN 'X' OR '2'.
* l_st_cc = l_st_cc + w_movcon-erfmg.
l_st_cc = l_st_cc + w_movcon-menge.
WHEN 'S' OR '3'.
* l_st_bl = l_st_bl + w_movcon-erfmg.
l_st_bl = l_st_bl + w_movcon-menge.
WHEN ' ' OR 'F'.
* l_st_lu = l_st_lu + w_movcon-erfmg.
l_st_lu = l_st_lu + w_movcon-menge.
ENDCASE.
ENDLOOP.

ELSE.
LOOP AT it_movcon INTO w_movcon WHERE matnr EQ w_stock-matnr AND
werks EQ w_stock-werks AND
lgort EQ w_stock-lgort AND
flag_conv EQ 'X'.
CASE w_movcon-insmk.
WHEN 'X' OR '2'.
* l_st_cc = l_st_cc + w_movcon-erfmg.
l_st_cc = l_st_cc + w_movcon-menge.
WHEN 'S' OR '3'.
* l_st_bl = l_st_bl + w_movcon-erfmg.
l_st_bl = l_st_bl + w_movcon-menge.
WHEN ' ' OR 'F'.
* l_st_lu = l_st_lu + w_movcon-erfmg.
l_st_lu = l_st_lu + w_movcon-menge.
ENDCASE.
ENDLOOP.

ENDIF.

IF w_stock-st_lu > 0.

w_rep-st_lu = w_stock-st_lu - l_st_lu.

ENDIF.

IF w_stock-st_cc > 0.

w_rep-st_cc = w_stock-st_cc - l_st_cc.

ENDIF.

IF w_stock-st_bl > 0.

w_rep-st_bl = w_stock-st_bl - l_st_bl.

ENDIF.

w_rep-total = w_rep-st_lu + w_rep-st_cc + w_rep-st_bl.

ELSE.
w_rep-st_lu = w_stock-st_lu.
w_rep-st_cc = w_stock-st_cc.
w_rep-st_bl = w_stock-st_bl.
w_rep-total = w_rep-st_lu + w_rep-st_cc + w_rep-st_bl.
ENDIF.

APPEND w_rep TO it_rep.

ENDLOOP.

IF p_nozero EQ 'X'.
DELETE it_rep WHERE total EQ 0.
ENDIF.
ENDFORM.
Responder Con Cita