Ver Mensaje Individual
  #3  
Viejo 29/12/08, 17:16:36
marianoboni marianoboni is offline
Member
 
Fecha de Ingreso: abr 2008
Mensajes: 75
Disculpen me comí el nombre de la bapi, todo funciona perfecto hasta que por ejemplo me salta alguna validación en el cuerpo de la BAPI, entonces por mas q la corrija es como que queda en un estado en q no me permite seguir y no me reinicia el estado interno de la transacción, acá va el procedimiento

FORM persistirMovimiento.

DATA:
posActual TYPE I,
e_Error like bapiret2,
mensage TYPE STRING,
loc_e_lineas LIKE e_LINEA_DOCU ,
loc_e_serials LIKE e_nrosDeSerie ,
sel_rows TYPE lvc_t_roid,
sel_row TYPE lvc_s_roid,
e_serial LIKE e_LINEA_SERIAL .

REFRESH sel_rows.
CLEAR sel_row.

IF e_LINEAS IS INITIAL.
MESSAGE ID 'ZMIGO_EXCEPCIONES' TYPE 'S' NUMBER '002'.
EXIT.
ENDIF.

posActual = 0.

CLEAR t_mensages.

CLEAR l_goodsmvt_header.

l_goodsmvt_header-pstng_date = FE_FECHACONT.
l_goodsmvt_header-doc_date = FE_DOCUMENTO .
l_goodsmvt_header-pr_uname = sy-uname.
l_goodsmvt_header-header_txt = TXT_TEXTOCAB.
l_goodsmvt_header-ref_doc_no = ''.

* Tipo de movimiento
l_goodsmvt_code = '01'.

* Posiciones
CLEAR i_goodsmvt_item.

* recorro cada linea del pedido
LOOP AT e_LINEAS INTO loc_e_lineas.

* verifico si se encuentra marcado como OK
IF loc_e_lineas-OK = 'X'.

CLEAR loc_e_serials.

posActual = posActual + 1.
cantRecepcionada = 0.
loc_e_serials = loc_e_lineas-NROS .
DESCRIBE TABLE loc_e_serials.
cantRecepcionada = SY-TFILL.


i_goodsmvt_item-plant = TXT_IDCENTRO .
i_goodsmvt_item-stge_loc = loc_e_lineas-ALMAC.
i_goodsmvt_item-VENDOR = loc_e_lineas-NROPRO.
i_goodsmvt_item-move_type = TXT_IDMOV .
i_goodsmvt_item-MVT_IND = 'B'.
i_goodsmvt_item-PO_NUMBER = loc_e_lineas-NROPO.
i_goodsmvt_item-po_item = loc_e_lineas-POSPO.
i_goodsmvt_item-ENTRY_QNT = cantRecepcionada .
APPEND i_goodsmvt_item.

* Numeros de serie
LOOP AT loc_e_serials INTO e_serial.
i_goodsmvt_serial-MATDOC_ITM = posActual.
i_goodsmvt_serial-SERIALNO = e_serial-NRO.
append i_goodsmvt_serial.
ENDLOOP.


ENDIF.

ENDLOOP.

IF posActual = 0.
MESSAGE ID 'ZMIGO_EXCEPCIONES' TYPE 'S' NUMBER '010'.
EXIT.
ENDIF.


CLEAR i_return.

* Persistencia del documento de ingreso

CALL FUNCTION 'BAPI_GOODSMVT_CREATE'
EXPORTING
goodsmvt_header = l_goodsmvt_header
goodsmvt_code = l_goodsmvt_code
testrun = ''
IMPORTING
goodsmvt_headret = l_goodsmvt_headret
materialdocument = l_materialdocument
matdocumentyear = l_matdocumentyear
TABLES
goodsmvt_item = i_goodsmvt_item
GOODSMVT_SERIALNUMBER = i_goodsmvt_serial
return = i_return .
break-point.

IF SY-SUBRC = 0.
describe table i_return lines sy-tfill.

append i_return to t_mensages.

IF i_return-TYPE <> 'E'.
if sy-tfill = 0.
COMMIT WORK.
MESSAGE ID 'ZMIGO_EXCEPCIONES' TYPE 'S' NUMBER '006' WITH
l_materialdocument.
PERFORM reiniciarMovimiento.
endif.
ELSE.
CALL SCREEN 001 starting at 15 10 ENDING AT 70 15 .

ENDIF.

ENDIF.

ENDFORM.
Responder Con Cita