ZISU_MANEJA_CAPSULA

download ZISU_MANEJA_CAPSULA

If you can't read please download the document

Transcript of ZISU_MANEJA_CAPSULA

*&---------------------------------------------------------------------**& Report ZISU_MANEJA_CAPSULA*&*&---------------------------------------------------------------------**& Felix Cid Vera - 24.07.2008 - Metrogas*& Descripcin: Permitir el manejo de las cpsulas en procesos de*& desconexin y reposicin.*&---------------------------------------------------------------------**& Marcelo Hughes G - 04..12.2008 - DCOS Consultoria*& Descripcin: Manejar ENQUEUE-DEQUEUE para bloqueo de registro*&---------------------------------------------------------------------**&---------------------------------------------------------------------**& Marcelo Hughes G - 22..12.2008 - DCOS Consultoria*& Descripcin: Validacion de errores en Serie Medidor al efectuar*& Montaje.*&------------------------------------------------------------------*& Marcelo Hughes G - 18.02.2009 - DCOS Consultoria*& Descripcin: Incorporar Mensajes de Error en FLujo del programa*&------------------------------------------------------------------REPORT zisu_maneja_capsula* Inicio Modificacion DCOS 18.02.2009. LINE-SIZE 255.* Fin Modificacion DCOS 18.02.2009.TABLES : ediscobj, egerh, equi, eastl, ediscdoc, zmm_lectorbod.DATA: v_matnrmed LIKE equi-matnr.* Modificacion DCOS 04.02.2009 - Se incorpora TipoTYPE-POOLS: isu07.DATA : wa_datec(08).DATA : wa_timec(04).DATA : wa_v_eger LIKE v_eger.*-------------------------------------------------DEFINE dynpro. perform bdc_dynpro using &1 &2.END-OF-DEFINITION.DEFINE field. perform bdc_field using &1 &2.END-OF-DEFINITION.DATA: BEGIN OF opt. INCLUDE STRUCTURE ctu_params.DATA: END OF opt.DATA BEGIN OF itab_msge OCCURS 0. INCLUDE STRUCTURE bdcmsgcoll.DATA END OF itab_msge.DATA: t_bdcmsgcoll TYPE STANDARD TABLE OF bdcmsgcoll WITH HEADER LINE.DATA: BEGIN OF bdcdata OCCURS 0. INCLUDE STRUCTURE bdcdata.DATA: END OF bdcdata.DATA: wa_bdcdata TYPE bdcdata, v_largo TYPE i.* Inicio Modificacion DCOS 18.02.2009DATA: BEGIN OF t_log OCCURS 0, discno(12), glosa(480) TYPE c, proc TYPE string, END OF t_log.* Fin Modificacion DCOS 18.02.2009* Archivo plano para desconexionTYPES : BEGIN OF t_tab, discno(000012), "Doc.desconexin aufnr(000012), "ORDEN DE SERVICIO ordstate(000002), "Status de orden actdate(000010), "Fe.accin desc. acttime(000008), "HoraAccinDesc disctype(00004), "CLASE DE CORTE zwstand(000010), "LECTURA ableser(000003), "LECTOR sello(000020), "NUMERO DE SELLO DE CORTE zeile(000040), "TEXTO DE CORTE seriecap(18), " Nmero de serie cpsula seriemed(18), " Nmero de serie medidor concapsula(1), " Flag para determinanr montaje de cpsula vornr2(000004), "Nmero de operacin statu2(000004), "status de orden texto2(000040), "Texto de corte. vornr3(000004), "Nmero de operacin statu3(000004), "status de orden texto3(000040), "Texto de corte. END OF t_tab.* Archivo plano para ReposicinTYPES: BEGIN OF t_repo, nro_doc(12), fecha(10), hora(6), lectura(5), esquema(2), sello(20) TYPE c, reponedor(3), glosa(40) TYPE c, nroserie(18), concapsula(1),* Campos slo para NOTIFICACION nrorden(12), nroperacion1(4), motivodesv1(4), texto1(40), nroperacion2(4), motivodesv2(4), texto2(40), END OF t_repo.DATA: rc(10), v_error(2) TYPE c, num_doc LIKE ediscdoc-discno, temp_stat LIKE ediscdoc-status, v_ord LIKE ediscact-ordernum, v_canc LIKE ediscact-disccanceld, v_ord_stat LIKE ediscact-ordstate, v_stat_1 LIKE jest-stat, cont TYPE i, v_ordstate(2).DATA: flag_obj(1), ordisu(4), neworder(1), fec_ini LIKE afko-ftrmi, hora_ini LIKE afko-gsuzs, mot_desv(4), cl_activ(6), ptotrab(8), cant_trab(1), fec_cont(10), st_pago(1), hay_error(1).DATA: keep(1) VALUE 'X', holddate LIKE sy-datum, n_orden LIKE afko-aufnr, fecha_cl LIKE bapi1003_key-keydate, cierra_doc LIKE ztbsm007-doc_complete, v_stat LIKE ediscdoc-status, fecha_fun(8).DATA: v_errorproc(1), v_notif(1).DATA mensaje(100) TYPE c.DATA: t_out_mensaje LIKE bapiret2 OCCURS 0, itab LIKE bdcmsgcoll OCCURS 0 WITH HEADER LINE, mess LIKE bapiret2 OCCURS 0 WITH HEADER LINE, msg LIKE zodsstr11-text, msg1 LIKE zodsstr11-text, msg2 LIKE zodsstr11-text, msg3 LIKE zodsstr11-text.DATA : i_ediscobj LIKE ediscobj OCCURS 0 WITH HEADER LINE, i_egerh LIKE egerh OCCURS 0 WITH HEADER LINE, i_fecha1 TYPE char8, i_equnr LIKE egerh-equnr, i_classtype TYPE char3, i_objectkey TYPE char50, i_objecttable TYPE char30, i_classnum TYPE char18, i_partnr TYPE char10, i_nobj LIKE aufk-objnr, opcion(1) TYPE n, var_subrc(3).DATA: t_registros LIKE alsmex_tabline OCCURS 6000 WITH HEADER LINE, wa_tab TYPE t_tab, it_tab TYPE STANDARD TABLE OF t_tab INITIAL SIZE 0, wa_repo TYPE t_repo, it_repo TYPE STANDARD TABLE OF t_repo INITIAL SIZE 0, fila TYPE i, tot_reg_leidos TYPE i.DATA: w_fecha LIKE sy-datum.DATA: nota(132) TYPE c, fecha(8) TYPE c, fecha2(8).DATA: BEGIN OF t_text OCCURS 0, nro_doc(12) TYPE c, mensaje(80), END OF t_text.DATA: BEGIN OF t_paso OCCURS 0. INCLUDE STRUCTURE bapi_alm_timeconfirmation.DATA: END OF t_paso.DATA: BEGIN OF t_return OCCURS 0. INCLUDE STRUCTURE bapiret2.DATA: END OF t_return.DATA: BEGIN OF t_dreturn OCCURS 0. INCLUDE STRUCTURE bapi_alm_return.DATA: END OF t_dreturn.DATA: BEGIN OF tmp_value_num OCCURS 0. INCLUDE STRUCTURE bapi1003_alloc_values_num.DATA: END OF tmp_value_num.DATA: BEGIN OF tmp_value_char OCCURS 0. INCLUDE STRUCTURE bapi1003_alloc_values_char.DATA: END OF tmp_value_char.DATA: BEGIN OF tmp_value_curr OCCURS 0. INCLUDE STRUCTURE bapi1003_alloc_values_curr.DATA: END OF tmp_value_curr.DATA: wa_orden_notificada.* Modificacion 04.12.2008 - DCOS- Aplicacion ENQUEUE-DEQUEUE* Definicion de variables-----------------------------------TYPE-POOLS: isu05. "cust serviceDATA : ti_xx_obj TYPE isu05_discdoc_internal, wa_bloqueado(2).*-----------------------------------------------------------* Inicio Modificacion DCOS 22.12.2008 .DATA : wa_montaje_error(1).* Fin Modificacion DCOS 22.12.2008*.................Inicio Modificacion DCOS 04.02.2009* Definiciones de Estructuras y VariablesDATA : v_fecdes LIKE sy-datum.DATA : BEGIN OF t_lectura OCCURS 0. INCLUDE STRUCTURE bapieablu.DATA : END OF t_lectura.DATA : BEGIN OF t_retorno OCCURS 0. INCLUDE STRUCTURE bapireturn1.DATA : END OF t_retorno.DATA : v_fecha1 LIKE sy-datum.DATA : ti_t_ger TYPE isu07_twd_gertab_t.DATA : wa_refobjkey LIKE ediscdoc-refobjkey.DATA : wa_anlage TYPE anlage.TYPES: t_auto TYPE isu05_discdoc_auto.DATA : t_auto TYPE t_auto.TYPES: t_discpos TYPE isu05_discdoc_discpos.DATA : t_discpos TYPE t_discpos OCCURS 10 WITH HEADER LINE.DATA : w_discpos TYPE isu05_discdoc_discpos.*.................Fin Modificacion DCOS 04.02.2009*************************************************************************** Definicin de pantalla**************************************************************************PARAMETERS: p_vmode(1) DEFAULT 'N'.**************************************************************************SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-c01.SELECTION-SCREEN SKIP.PARAMETERS: filename LIKE rlgrap-filename DEFAULT 'd:\Mis Documentos\corte.txt'.PARAMETERS: unix LIKE rlgrap-filename.SELECTION-SCREEN BEGIN OF LINE.SELECTION-SCREEN POSITION 01.PARAMETERS: p_local LIKE pmxcxxxx-iperi RADIOBUTTON GROUP radi DEFAULT 'X' USER-COMMAND dismod.SELECTION-SCREEN COMMENT: 04(37) text-t01.PARAMETERS: p_unix LIKE pmxcxxxx-iperi RADIOBUTTON GROUP radi.SELECTION-SCREEN COMMENT 45(39) text-t02.SELECTION-SCREEN END OF LINE.SELECTION-SCREEN END OF BLOCK b1.**************************************************************************SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text-c02.SELECTION-SCREEN BEGIN OF LINE.SELECTION-SCREEN POSITION 01.PARAMETERS: p_desc LIKE pmxcxxxx-iperi RADIOBUTTON GROUP r1 DEFAULT 'X' USER-COMMAND dismod.SELECTION-SCREEN COMMENT: 04(37) text-t03.PARAMETERS: p_repo LIKE pmxcxxxx-iperi RADIOBUTTON GROUP r1.SELECTION-SCREEN COMMENT 45(39) text-t04.SELECTION-SCREEN END OF LINE.SELECTION-SCREEN END OF BLOCK b2.**************************************************************************AT SELECTION-SCREEN ON VALUE-REQUEST FOR filename. CALL FUNCTION 'WS_FILENAME_GET' EXPORTING def_filename = filename def_path = '\' mask = ',*.*,*.*.' mode = 'O' title = 'Seleccin de Archivo' IMPORTING filename = filename EXCEPTIONS inv_winsys = 01 no_batch = 02 selection_cancel = 03 selection_error = 04.AT SELECTION-SCREEN. SELECT SINGLE path INTO unix FROM ztinterfaz WHERE intid = 'CORT_E' AND programa = sy-repid.AT SELECTION-SCREEN OUTPUT. LOOP AT SCREEN. IF screen-name = 'FILENAME'. IF p_unix = 'X'. screen-input = 0. MODIFY SCREEN. ENDIF. ENDIF. IF screen-name = 'UNIX'. IF p_local = 'X'. CLEAR unix. screen-input = 0. MODIFY SCREEN. ELSE. screen-input = 0. MODIFY SCREEN. ENDIF. ENDIF. ENDLOOP.START-OF-SELECTION. opt-dismode = 'N'. opt-cattmode = ' '. opt-defsize = 'X'.* FCV - 24.11.2008 - Metrogas* opt-racommit = 'X'. opt-updmode = 'S'.* fin FCV - 24.11.2008 - Metrogas opt-nobinpt = 'X'. opt-nobiend = 'X'. IF p_local = 'X'. IF p_desc = 'X'. opcion = 1. PERFORM carga_archivo USING opcion. PERFORM procesa_desc. PERFORM emite_log. ELSE. opcion = 2. PERFORM carga_archivo USING opcion. PERFORM procesa_repo. PERFORM emite_log. ENDIF. ELSE. PERFORM carga_unix. ENDIF.******************************************************************************************************* PROCESO DE DESCONEXION*******************************************************************************************************---------------------------------------------------------------------** FORM procesa_desc **---------------------------------------------------------------------*FORM procesa_desc. CLEAR v_error. LOOP AT it_tab INTO wa_tab.* Variable clave de la tabla para evitar que pasen datos nulos IF NOT wa_tab-discno IS INITIAL. UNPACK wa_tab-discno TO num_doc.* Validaciones para registros correctos SELECT SINGLE status INTO temp_stat FROM ediscdoc WHERE discno = num_doc.* Documento existe. IF sy-subrc NE 0. PERFORM append_log USING wa_tab-discno 'No Existe documento desconexin' ' ' ' ' ' '. CONTINUE. ENDIF.* Documento tiene estado vlido para el corte IF temp_stat NE 10 AND temp_stat NE 20. PERFORM append_log USING wa_tab-discno 'Documento no tiene estado 10 o 20' ' ' ' ' ' '. CONTINUE. ENDIF.* Modificacion 04.12.2008 - DCOS- Aplicacion ENQUEUE-DEQUEUE* ----- Verifica Bloqueo de Documento Desconexion antes de procesar CALL FUNCTION 'ISU_O_DISCDOC_OPEN_INTERNAL' EXPORTING x_discno = num_doc x_wmode = '2' IMPORTING y_obj = ti_xx_obj EXCEPTIONS not_found = 1 not_authorized = 2 existing = 3 foreign_lock = 4 invalid_key = 5 number_error = 6 input_error = 7 system_error = 8 OTHERS = 9. IF sy-subrc 0. PERFORM append_log USING wa_tab-discno 'Documento bloqueado.' 'No puede procesar' ' ' ' '. CONTINUE. ELSE.* Modificacion 04.12.2008 - DCOS- Aplicacion ENQUEUE-DEQUEUE* ----- Desbloqueo de documento de desconexion para poder procesar CALL FUNCTION 'ISU_DISCDOC_DEQUEUE' CHANGING xy_obj = ti_xx_obj EXCEPTIONS error_occured = 1 OTHERS = 2. ENDIF.*-----------------------------------------------------------* Orden de servicio corresponde a documento de desconexin IF wa_tab-aufnr(1) NE '0'. CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' EXPORTING input = wa_tab-aufnr IMPORTING output = wa_tab-aufnr. ENDIF. IF wa_tab-discno(1) NE '0'. CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' EXPORTING input = wa_tab-discno IMPORTING output = wa_tab-discno. ENDIF. SELECT SINGLE ordernum disccanceld ordstate INTO (v_ord, v_canc, v_ord_stat ) FROM ediscact WHERE ordernum = wa_tab-aufnr AND discno = wa_tab-discno. IF sy-subrc NE 0. PERFORM append_log USING wa_tab-discno 'No existe relacin con orden ' wa_tab-aufnr ' ' ' '. ELSE. IF v_ord_stat NE '00'. PERFORM append_log USING wa_tab-discno 'Documento en status ' v_ord_stat ' ' ' '. ENDIF. IF v_canc = 'X'. PERFORM append_log USING wa_tab-discno 'Documento en status anulado para desconexion ' ' ' ' ' ' '. ENDIF. ENDIF. CLEAR wa_orden_notificada.* Orden de servicio est liberada a menos que tenga estado "Cancelado* antes de enviar a corte" SELECT jest~stat INTO v_stat_1 FROM jest JOIN aufk ON aufk~objnr = jest~objnr WHERE inact = ' ' AND aufk~aufnr = wa_tab-aufnr.* Orden ABIERTA IF v_stat_1 = 'I0001'. PERFORM append_log USING wa_tab-discno 'Documento con orden' wa_tab-aufnr ' abierta.' ' '. CONTINUE. ENDIF.* Orden ya notificada IF v_stat_1 = 'I0009'. PERFORM append_log USING wa_tab-discno 'Documento con orden' wa_tab-aufnr ' ya notificada' ' '. wa_orden_notificada = 'X'. CONTINUE. ENDIF. ENDSELECT.* Fin validaciones CLEAR: mot_desv, fec_ini, hora_ini, cl_activ, neworder, ordisu, ptotrab, st_pago, cierra_doc. FREE t_bdcmsgcoll. SELECT SINGLE objallow INTO flag_obj FROM ediscordstate WHERE ordstate = wa_tab-ordstate AND reconflag = ' '.* SE DEFINE QUE EN LA TABLA DE PARAMETROS LA RELACION ENTRE* RAZON DE DESVIO Y ESTADO DE LA ORDEN DE DESCONEXIN ES 1:1 SELECT SINGLE mt_desvi ordenisu doc_complete st_pago INTO (mot_desv, ordisu, cierra_doc, st_pago ) FROM ztbsm007 WHERE st_odesc = wa_tab-ordstate.****************************************************************************** NOTIFICACION***************************************************************************** CLEAR v_errorproc. IF wa_tab-ableser+1(2) = ''. ptotrab = 'CORTE'. ELSE. CONCATENATE 'CORTE_' wa_tab-ableser+1(2) INTO ptotrab. ENDIF. IF wa_orden_notificada IS INITIAL. PERFORM notifica. ENDIF.*BHR 13.08.2008 COMMIT WORK AND WAIT. ENDIF. IF v_errorproc IS INITIAL. " No encontro errores en el proceso notificacion IF flag_obj = 'X'.* BI DE CORTE EFECTIVO ---**********************************************************************************************BHR 12.02.2009 IF wa_tab-concapsula = 'X'. CLEAR: v_errorproc. PERFORM montaje_capsula. IF v_errorproc IS INITIAL. PERFORM relaciona_capsula_orden. ENDIF. ENDIF. IF v_errorproc ' '. PERFORM append_log USING wa_tab-discno 'Error en Montaje Cpsula. Revisar' ' ' ' ' ' '. ENDIF. IF v_errorproc IS INITIAL.***************************************************************************************************** PERFORM relaciona_capsula_orden. PERFORM corte_ok. cant_trab = '1'. PERFORM clase_medidor. ENDIF.* IF wa_tab-concapsula = 'X'.* PERFORM montaje_capsula.* ENDIF. ELSE. IF NOT sy-subrc NE 0. IF st_pago = 'X'. cant_trab = '1'. ELSE. cant_trab = '0'. cl_activ = ''. IF NOT ordisu IS INITIAL. neworder = 'X'. ENDIF. ENDIF. ENDIF.* BI DE CORTE NO EFECTIVO PERFORM corte_no_ok. IF NOT cierra_doc IS INITIAL. PERFORM cierra_doc. ENDIF. ENDIF.*********************************************************************************BHR 13.08.2008 DATA: monto_deuda(15) TYPE p, order(4) TYPE c. CLEAR: monto_deuda, order. PERFORM encuentra_monto USING wa_tab-aufnr CHANGING monto_deuda. PERFORM establece_tipo_orden USING num_doc monto_deuda wa_tab-aufnr CHANGING order.********************************************************************************* Se valida que el status del documento de desconexin sea distinto de 21, 20 y 99 ********************************************************************************* SELECT SINGLE status INTO ediscdoc-status FROM ediscdoc WHERE discno = num_doc. IF ediscdoc-status = '21' OR ediscdoc-status = '99' OR ediscdoc-status = '20'. ELSE. CALL FUNCTION 'Z_RECLAMACION_DISCONNECT' EXPORTING ctu = 'X' mode = p_vmode UPDATE = 'L' discno_001 = num_doc TABLES messtab = t_bdcmsgcoll CHANGING ordercode_002 = order " CCV19052008 actdate_004 = sy-datum acttime_005 = sy-datum. ENDIF.*BHR 13.08.2008********************************************************************************* Inicio Modificacion DCOS 20.02.2009 - Inicializacion Tabla de Mensajes REFRESH mess.* Fin Modificacion DCOS 20.02.2009 - CALL FUNCTION 'CONVERT_BDCMSGCOLL_TO_BAPIRET2' TABLES imt_bdcmsgcoll = t_bdcmsgcoll ext_return = mess. LOOP AT mess. IF mess-type = 'E'. v_error = 'SI'. ENDIF. PERFORM append_log USING wa_tab-discno mess-message ' ' ' ' ' '. ENDLOOP.*-----------------------------------------------------------------* DCOS 22.12.2008 - Commit Work para solucion problema de visualizacion COMMIT WORK AND WAIT.*----------------------------------------------------------------- ENDIF. ENDLOOP.ENDFORM. "procesa_desc*&---------------------------------------------------------------------**& Form corte_ok*&---------------------------------------------------------------------*FORM corte_ok.*-----------------------------------------------------------* Inicio Modificacion DCOS - 04.02.2009 - Cambio Batch por BAPIs*-----------------------------------------------------------* REFRESH bdcdata.**Cambio Pantalla* dynpro: 'SAPLEC85' '0100'.* field:'BDC_OKCODE' '/00', 'EDISCD-DISCNO' wa_tab-discno.***Cambio Pantalla* dynpro: 'SAPLES34' '0200'.* field: 'BDC_OKCODE' '=DCED'.***Cambio Pantalla* dynpro: 'SAPLES34' '0102'.* field: 'BDC_OKCODE' '=OKAY','S0102-ORDERYES' 'X'.***Cambio Pantalla* dynpro: 'SAPLES34' '0310'.* field: 'EDISCDOCS-BILLREL' 'X',* 'EDISCACTS-ORDSTATE' wa_tab-ordstate,* 'BDC_OKCODE' '=TAB_DOBJ'.***Cambio Pantalla* dynpro: 'SAPLES34' '0310'.* field: 'EDISCACTS-ACTDATE' wa_tab-actdate,* 'EDISCACTS-ACTTIME' wa_tab-acttime,* 'EDISCPOSS-ACTDATE(1)' wa_tab-actdate,* 'EDISCPOSS-ACTTIME(1)' wa_tab-acttime,* 'EDISCPOSS-DISCTYPE(01)' wa_tab-disctype,* 'EDISCDOCS-BILLREL' 'X',* 'BDC_OKCODE' '=TAB_READ'.***Cambio Pantalla* dynpro: 'SAPLES34' '0310'.* field: 'REL28D-ISTABLART' '01',* 'REABLD-ZWSTAND(01)' wa_tab-zwstand,* 'REABLD-ABLESER(01)' wa_tab-ableser,* 'BDC_OKCODE' '=OKAY',* 'BDC_OKCODE' '/00'.***Cambio Pantalla* dynpro: 'SAPLES34' '0310'.* field: 'BDC_OKCODE' '=SAVE'.***ejecuta transaccin* IF p_vmode = 'A'.* CALL TRANSACTION 'EC86'* USING bdcdata* MODE p_vmode* UPDATE 'S'* MESSAGES INTO t_bdcmsgcoll.* ELSE.* CALL TRANSACTION 'EC86'* USING bdcdata* OPTIONS FROM opt* MESSAGES INTO t_bdcmsgcoll.* ENDIF.**------------------ reejecuta transaccin**------------------* REFRESH bdcdata.**Cambio Pantalla* PERFORM bdc_dynpro USING 'SAPLEC85' '0100'.* PERFORM bdc_field USING 'BDC_OKCODE'* '/00'.* PERFORM bdc_field USING 'EDISCD-DISCNO'* wa_tab-discno.** PERFORM bdc_dynpro USING 'SAPLES34' '0200'.* PERFORM bdc_field USING 'BDC_OKCODE'* '=000E'.* PERFORM bdc_field USING 'BDC_CURSOR'* 'EENO_DYNP-ZEILE(02)'.** PERFORM bdc_dynpro USING 'SAPLSTXX' '1100'.* PERFORM bdc_field USING 'BDC_CURSOR'* 'RSTXT-TXLINE(02)'.* PERFORM bdc_field USING 'BDC_OKCODE'* '=EDNP'.** PERFORM bdc_dynpro USING 'SAPLSTXX' '1100'.* PERFORM bdc_field USING 'BDC_CURSOR'* 'RSTXT-TXLINE(02)'.* PERFORM bdc_field USING 'BDC_OKCODE'* '=TXBA'.* PERFORM bdc_field USING 'RSTXT-TXLINE(02)'* wa_tab-zeile.** PERFORM bdc_dynpro USING 'SAPLES34' '0200'.* PERFORM bdc_field USING 'BDC_OKCODE'* '=SAVE'.********************************************************************* CALL TRANSACTION 'EC86'* USING bdcdata* MODE p_vmode* UPDATE 'S'* MESSAGES INTO t_bdcmsgcoll.** CLEAR v_stat.* IF v_stat NE 21.* CLEAR msg.* CONCATENATE 'Errores al actualizar Documento ' wa_tab-discno INTO msg* SEPARATED BY space.* ELSE.* CLEAR msg.* CONCATENATE 'Documento ' wa_tab-discno 'actualizado con xito ' INTO msg* SEPARATED BY space.* ENDIF.************************************************** CLEAR : wa_datec, wa_timec. CONCATENATE wa_tab-actdate+6(4) wa_tab-actdate+3(2) wa_tab-actdate+0(2) INTO wa_datec. CONCATENATE wa_tab-acttime+0(2) wa_tab-acttime+3(2) INTO wa_timec.* Verifica que venga informacion de Numero Serie Medidor IF wa_tab-seriemed IS INITIAL. SELECT SINGLE refobjkey INTO wa_refobjkey FROM ediscdoc WHERE discno = wa_tab-discno. IF sy-subrc = 0.* Busca Medidor Asociado a la instalacion SELECT SINGLE anlage INTO wa_anlage FROM ever WHERE vkonto = wa_refobjkey+0(12). IF sy-subrc = 0. DATA : wa_keydate LIKE sy-datum. wa_keydate = '99991231'. REFRESH ti_t_ger. CALL FUNCTION 'ISU_DET_DEVICE_FROM_INST' EXPORTING x_anlage = wa_anlage x_keydate = wa_keydate CHANGING xy_t_ger = ti_t_ger EXCEPTIONS not_found = 1 internal_error = 2 system_error = 3 OTHERS = 4. IF sy-subrc = 0.* LOOP AT ti_t_ger INTO wa_v_eger WHERE kombinat = 'Z'. "Busca Medidor wa_tab-seriemed = wa_v_eger-geraet. v_matnrmed = wa_v_eger-MATNR. ENDLOOP. ENDIF. ENDIF. ENDIF. ELSE. wa_tab-seriemed = wa_tab-seriemed. ENDIF.* Se registra la lectura REFRESH: t_lectura, t_retorno. CLEAR: t_lectura, t_retorno. t_lectura-material = v_matnrmed. t_lectura-serialno = wa_tab-seriemed. t_lectura-register = '001'. t_lectura-mrreason = '13'. t_lectura-readingresult = wa_tab-zwstand.* t_lectura-METERREADINGNOTE = 'LN'. t_lectura-mrdateforbilling = wa_datec. t_lectura-mrtimeforbilling = wa_timec. t_lectura-meterreader = wa_tab-ableser. APPEND t_lectura. CALL FUNCTION 'BAPI_MTRREADDOC_UPLOAD' TABLES meterreadingresults = t_lectura return = t_retorno. DATA : wa_message TYPE bapi_msg. READ TABLE t_retorno WITH KEY type = 'E'. IF sy-subrc EQ 0. LOOP AT t_retorno WHERE type = 'E'. wa_message = t_retorno-message. ENDLOOP. PERFORM append_log USING wa_tab-discno wa_message ' ' ' ' ' '. ROLLBACK WORK. ELSE. PERFORM append_log USING wa_tab-discno 'Lectura Registrada' ' ' ' ' ' '. CLEAR t_auto. t_auto-contr-use-okcode = 'X'. t_auto-contr-okcode = 'DARKDCED'. SELECT SINGLE discact INTO t_auto-interface-x_discact FROM ediscact WHERE discno = wa_tab-discno AND ordernum = wa_tab-aufnr.* t_auto-interface-X_DISCACT = '0002'. t_auto-interface-y_new_ordernum = wa_tab-aufnr. t_auto-interface-y_ordstate = wa_tab-ordstate.* t_auto-interface-darkdced-x_ordact = '0002'. t_auto-interface-darkdced-x_ordact = t_auto-interface-x_discact. t_auto-interface-darkdced-x_ordstat = wa_tab-ordstate. t_auto-interface-darkdced-x_discdate = wa_datec. t_auto-interface-darkdced-x_disctime = wa_timec.* t_auto-interface-darkdced-x_bbpchanged = 'X'. CLEAR w_discpos. w_discpos-x_discobj = '0001'. w_discpos-x_discposdate = wa_datec. w_discpos-x_discpostime = wa_timec. w_discpos-x_disctype = wa_tab-disctype. APPEND w_discpos TO t_auto-interface-darkdced-xt_discpos. CALL FUNCTION 'ISU_S_DISCDOC_CHANGE' EXPORTING x_discno = wa_tab-discno x_upd_online = 'X' x_no_dialog = 'X' x_auto = t_auto EXCEPTIONS not_found = 1 foreign_lock = 2 not_authorized = 3 input_error = 4 general_fault = 5 object_inv_discdoc = 6 OTHERS = 7. IF sy-subrc EQ 0. COMMIT WORK AND WAIT.*------------------ Modificar Textos REFRESH bdcdata.*Cambio Pantalla PERFORM bdc_dynpro USING 'SAPLEC85' '0100'. PERFORM bdc_field USING 'BDC_OKCODE' '/00'. PERFORM bdc_field USING 'EDISCD-DISCNO' wa_tab-discno. PERFORM bdc_dynpro USING 'SAPLES34' '0200'. PERFORM bdc_field USING 'BDC_OKCODE' '=000E'. PERFORM bdc_field USING 'BDC_CURSOR' 'EENO_DYNP-ZEILE(02)'. PERFORM bdc_dynpro USING 'SAPLSTXX' '1100'. PERFORM bdc_field USING 'BDC_CURSOR' 'RSTXT-TXLINE(02)'. PERFORM bdc_field USING 'BDC_OKCODE' '=EDNP'. PERFORM bdc_dynpro USING 'SAPLSTXX' '1100'. PERFORM bdc_field USING 'BDC_CURSOR' 'RSTXT-TXLINE(02)'. PERFORM bdc_field USING 'BDC_OKCODE' '=TXBA'. PERFORM bdc_field USING 'RSTXT-TXLINE(02)' wa_tab-zeile. PERFORM bdc_dynpro USING 'SAPLES34' '0200'. PERFORM bdc_field USING 'BDC_OKCODE' '=SAVE'. CALL TRANSACTION 'EC86' USING bdcdata MODE p_vmode UPDATE 'S' MESSAGES INTO t_bdcmsgcoll. CALL FUNCTION 'CONVERT_BDCMSGCOLL_TO_BAPIRET2' TABLES imt_bdcmsgcoll = t_bdcmsgcoll ext_return = t_return. READ TABLE t_return WITH KEY type = 'E'. IF sy-subrc = 0. PERFORM append_log USING wa_tab-discno 'Errores al actualizar Documento' ' ' ' ' 'EC86 '. ELSE. CLEAR msg. PERFORM append_log USING wa_tab-discno 'Actualizado con Exito' ' ' ' ' 'EC86 '. ENDIF. ELSE. PERFORM append_log USING wa_tab-discno 'Error en Notificacion' ' ' ' ' 'EC86 '. ROLLBACK WORK. ENDIF. ENDIF.*-----------------------------------------------------------* Fin Modificacion DCOS - 04.02.2009 - Cambio Batch por BAPIs*-----------------------------------------------------------**************************************************ENDFORM. "FIN CORTE_OK*&---------------------------------------------------------------------**& Form corte_no_ok*&---------------------------------------------------------------------*FORM corte_no_ok.*-----------------------------------------------------------* Inicio Modificacion DCOS - 04.02.2009 - Cambio Batch por BAPIs*-----------------------------------------------------------* REFRESH bdcdata.*Cambio Pantalla* dynpro:* 'SAPLEC85' '0100'.* field:* 'BDC_OKCODE' '/00',* 'EDISCD-DISCNO' wa_tab-discno.**Cambio Pantalla* dynpro:* 'SAPLES34' '0200'.* field:* 'BDC_OKCODE' '=DCED',* 'EDISCDOCS-BILLREL' 'X'.**Cambio Pantalla* dynpro:* 'SAPLES34' '0102'.* field:* 'BDC_OKCODE' '=OKAY',* 'S0102-ORDERYES' 'X'.**Cambio Pantalla* dynpro:* 'SAPLES34' '0310'.* field:* 'EDISCDOCS-BILLREL' 'X',* 'BDC_CURSOR' 'EDISCACTS-NEWORDER',* 'EDISCACTS-ORDSTATE' wa_tab-ordstate,* 'EDISCACTS-NEWORDER' neworder,* 'BDC_OKCODE' '=OKAY'.** field:* 'EDISCDOCS-BILLREL' 'X',* 'BDC_CURSOR' 'EDISCACTS-NEWORDER',* 'EDISCACTS-ORDSTATE' wa_tab-ordstate,* 'EDISCACTS-NEWORDER' neworder,* 'BDC_OKCODE' '=OKAY'.** dynpro:* 'SAPLES34' '0310'.* field:* 'BDC_OKCODE' '=SAVE'.** CLEAR t_bdcmsgcoll.* CLEAR hay_error.* IF p_vmode = 'A'.* CALL TRANSACTION 'EC86'* USING bdcdata* MODE p_vmode* UPDATE 'S'* MESSAGES INTO t_bdcmsgcoll.* ELSE.* CALL TRANSACTION 'EC86'* USING bdcdata* OPTIONS FROM opt* MESSAGES INTO t_bdcmsgcoll.* ENDIF.** IF hay_error IS INITIAL.* CLEAR msg.* WRITE:/ text-i01, wa_tab-discno.* ELSEIF hay_error = 'E'.* WRITE:/ text-e01, wa_tab-discno.* ELSE.* CLEAR msg.* CONCATENATE 'Documento' wa_tab-discno 'contiene advertencias' INTO msg* SEPARATED BY space.* ENDIF.* REFRESH bdcdata.**Cambio Pantalla* PERFORM bdc_dynpro USING 'SAPLEC85' '0100'.* PERFORM bdc_field USING 'BDC_OKCODE'* '/00'.* PERFORM bdc_field USING 'EDISCD-DISCNO'* wa_tab-discno.**************************************************************************Cambio Pantalla** PERFORM bdc_dynpro USING 'SAPLES34' '0200'.* PERFORM bdc_field USING 'BDC_OKCODE'* '=000E'.* PERFORM bdc_field USING 'BDC_CURSOR'* 'EENO_DYNP-ZEILE(02)'.** PERFORM bdc_dynpro USING 'SAPLSTXX' '1100'.* PERFORM bdc_field USING 'BDC_CURSOR'* 'RSTXT-TXLINE(02)'.* PERFORM bdc_field USING 'BDC_OKCODE'* '=EDNP'.** PERFORM bdc_dynpro USING 'SAPLSTXX' '1100'.* PERFORM bdc_field USING 'BDC_CURSOR'* 'RSTXT-TXLINE(02)'.* PERFORM bdc_field USING 'BDC_OKCODE'* '=TXBA'.* PERFORM bdc_field USING 'RSTXT-TXLINE(02)'* wa_tab-zeile.** PERFORM bdc_dynpro USING 'SAPLES34' '0200'.* PERFORM bdc_field USING 'BDC_OKCODE'* '=SAVE'.* IF p_vmode = 'A'.* CALL TRANSACTION 'EC86'* USING bdcdata* MODE p_vmode* UPDATE 'S'* MESSAGES INTO t_bdcmsgcoll.* ELSE.* CALL TRANSACTION 'EC86'* USING bdcdata* MODE p_vmode* UPDATE 'S'* MESSAGES INTO t_bdcmsgcoll.* ENDIF.***----------------------------------------------* CLEAR : wa_datec, wa_timec. CONCATENATE wa_tab-actdate+6(4) wa_tab-actdate+3(2) wa_tab-actdate+0(2) INTO wa_datec. CONCATENATE wa_tab-acttime+0(2) wa_tab-acttime+3(2) INTO wa_timec. CLEAR t_auto. t_auto-contr-use-okcode = 'X'. t_auto-contr-okcode = 'DARKDCED'. SELECT SINGLE discact INTO t_auto-interface-x_discact FROM ediscact WHERE discno = wa_tab-discno AND ordernum = wa_tab-aufnr.* t_auto-interface-X_DISCACT = '0002'. t_auto-interface-y_new_ordernum = wa_tab-aufnr. t_auto-interface-y_ordstate = wa_tab-ordstate.* t_auto-interface-darkdced-x_ordact = '0002'. t_auto-interface-darkdced-x_ordact = t_auto-interface-x_discact. t_auto-interface-darkdced-x_ordstat = wa_tab-ordstate. t_auto-interface-darkdced-x_discdate = wa_datec. t_auto-interface-darkdced-x_disctime = wa_timec.* t_auto-interface-darkdced-x_bbpchanged = 'X'. CALL FUNCTION 'ISU_S_DISCDOC_CHANGE' EXPORTING x_discno = wa_tab-discno x_upd_online = 'X' x_no_dialog = 'X' x_auto = t_auto* X_OBJ =* X_NO_OTHER =* X_DISCACT =* X_SET_COMMIT_WORK =* X_DISCACTTIME =* IMPORTING* Y_DB_UPDATE =* Y_EXIT_TYPE =* Y_NEW_EDISCDOC =* Y_INTERFACE =EXCEPTIONS not_found = 1 foreign_lock = 2 not_authorized = 3 input_error = 4 general_fault = 5 object_inv_discdoc = 6 OTHERS = 7. IF sy-subrc EQ 0. COMMIT WORK AND WAIT.*------------------ Modificar Textos REFRESH bdcdata.*Cambio Pantalla PERFORM bdc_dynpro USING 'SAPLEC85' '0100'. PERFORM bdc_field USING 'BDC_OKCODE' '/00'. PERFORM bdc_field USING 'EDISCD-DISCNO' wa_tab-discno. PERFORM bdc_dynpro USING 'SAPLES34' '0200'. PERFORM bdc_field USING 'BDC_OKCODE' '=000E'. PERFORM bdc_field USING 'BDC_CURSOR' 'EENO_DYNP-ZEILE(02)'. PERFORM bdc_dynpro USING 'SAPLSTXX' '1100'. PERFORM bdc_field USING 'BDC_CURSOR' 'RSTXT-TXLINE(02)'. PERFORM bdc_field USING 'BDC_OKCODE' '=EDNP'. PERFORM bdc_dynpro USING 'SAPLSTXX' '1100'. PERFORM bdc_field USING 'BDC_CURSOR' 'RSTXT-TXLINE(02)'. PERFORM bdc_field USING 'BDC_OKCODE' '=TXBA'. PERFORM bdc_field USING 'RSTXT-TXLINE(02)' wa_tab-zeile. PERFORM bdc_dynpro USING 'SAPLES34' '0200'. PERFORM bdc_field USING 'BDC_OKCODE' '=SAVE'. CALL TRANSACTION 'EC86' USING bdcdata MODE p_vmode UPDATE 'S' MESSAGES INTO t_bdcmsgcoll. CALL FUNCTION 'CONVERT_BDCMSGCOLL_TO_BAPIRET2' TABLES imt_bdcmsgcoll = t_bdcmsgcoll ext_return = t_return. READ TABLE t_return WITH KEY type = 'E'. IF sy-subrc = 0. PERFORM append_log USING wa_tab-discno 'Errores al actualizar Documento' ' ' ' ' ' '. ELSE. CLEAR msg. PERFORM append_log USING wa_tab-discno 'Actualizado con Exito' ' ' ' ' ' '. ENDIF. ELSE. PERFORM append_log USING wa_tab-discno 'Error en Notificacion' ' ' ' ' ' '. ROLLBACK WORK. ENDIF.*-----------------------------------------------------------* Fin Modificacion DCOS - 04.02.2009 - Cambio Batch por BAPIs*-----------------------------------------------------------ENDFORM. "FIN CORTE NO OK*&---------------------------------------------------------------------**& Form cierra_doc*&---------------------------------------------------------------------*FORM cierra_doc. REFRESH bdcdata. dynpro: 'SAPLEC85' '0100'. field: 'BDC_OKCODE' '/00', 'EDISCD-DISCNO' wa_tab-discno. dynpro: 'SAPLES34' '0200'. field: 'BDC_OKCODE' '=COMPL'. dynpro: 'SAPLES34' '0200'. field: 'BDC_OKCODE' '=SAVE'. CALL TRANSACTION 'EC86' USING bdcdata MODE p_vmode UPDATE 'S' MESSAGES INTO t_bdcmsgcoll.ENDFORM. "cierra_doc*---------------------------------------------------------------------** FORM CLASE_MEDIDOR **---------------------------------------------------------------------*FORM clase_medidor. SELECT * INTO CORRESPONDING FIELDS OF TABLE i_ediscobj FROM ediscobj WHERE discno = wa_tab-discno. IF sy-subrc = 0. READ TABLE i_ediscobj INDEX 1. SELECT * FROM egerh INTO CORRESPONDING FIELDS OF TABLE i_egerh FOR ALL ENTRIES IN i_ediscobj WHERE logiknr = i_ediscobj-logiknr AND bis = '99991231'. CLEAR fecha_cl.* Se prepara la fecha para usar en funcin estndar (AAAAMMDD). CONCATENATE wa_tab-actdate+6(4) wa_tab-actdate+3(2) wa_tab-actdate+0(2) INTO fecha_fun. fecha_cl = fecha_fun. IF sy-subrc = 0. READ TABLE i_egerh INDEX 1. REFRESH tmp_value_num. CLEAR tmp_value_num. tmp_value_num-charact = 'NUM_SELLO'. tmp_value_num-value_from = wa_tab-sello. APPEND tmp_value_num. tmp_value_num-charact = 'FECHA_INST_SELLO'. tmp_value_num-value_from = fecha_fun. APPEND tmp_value_num. REFRESH tmp_value_char. CLEAR tmp_value_char. tmp_value_char-charact = 'TIPO_SELLO'. tmp_value_char-value_char = 'SELLO_SEGUR'. APPEND tmp_value_char. tmp_value_char-charact = 'COLOR_SELLO'. tmp_value_char-value_char = 'AMARILLO'. APPEND tmp_value_char. i_objectkey = i_egerh-equnr. CALL FUNCTION 'BAPI_OBJCL_CHANGE' EXPORTING objectkey = i_objectkey objecttable = 'EQUI' classnum = 'MED_RES' classtype = 'ZME' keydate = fecha_cl TABLES allocvaluesnumnew = tmp_value_num allocvaluescharnew = tmp_value_char allocvaluescurrnew = tmp_value_curr return = mess. READ TABLE mess WITH KEY type = 'E'. IF sy-subrc NE 0. COMMIT WORK AND WAIT. ENDIF. ENDIF. ENDIF.ENDFORM. "clase_medidor*&---------------------------------------------------------------------**& Form montaje_capsula*&---------------------------------------------------------------------*FORM montaje_capsula . DATA s_auto_ger TYPE isu07_auto_ger. DATA t_auto_ger TYPE isu07_auto_gert. DATA xy_auto TYPE isu07_install_auto. DATA: y_db_update LIKE regen-db_update, v_equnr LIKE equi-equnr, v_matnr LIKE equi-matnr. DATA: v_mblnr LIKE mkpf-mblnr, v_mjahr LIKE mkpf-mjahr, v_subrc LIKE sy-subrc, v_date LIKE sy-datum.*BHETZ cambio ha montaje tcnico. DATA: t_obj TYPE isu01_instln, t_auto TYPE isu01_instln_auto, v_anlage LIKE eanl-anlage, v_haus LIKE evbs-haus, v_vstelle LIKE evbs-vstelle.********************************************* DCOS 22.12.2008 - Validacion de Numero Serie Medidor aborta proceso si no existe CLEAR : equi, wa_montaje_error, v_errorproc.* Fin Modificacion DCOS 22.12.2008 .* REFRESH bdcdata.* Inicio Modificacion DCOS 17.03.2010** Se rescata el N del equipo a partir del N de serie del medidor* SELECT SINGLE equnr matnr INTO (equi-equnr , equi-matnr)* FROM equi* WHERE sernr = wa_tab-seriemed.** IF sy-subrc EQ 0.* SELECT SINGLE logiknr devloc* INTO (egerh-logiknr, egerh-devloc)* FROM egerh* WHERE equnr = equi-equnr* AND bis = '99991231'.** Se rescata el N de instalacin* IF sy-subrc EQ 0.* SELECT SINGLE anlage INTO v_anlage* FROM eastl* WHERE logiknr = egerh-logiknr* AND bis = '99991231'.** ELSE.** Inicio Modificacion DCOS 18.02.2009* MOVE 'X' TO wa_montaje_error.* PERFORM append_log USING wa_tab-discno 'Error. No existe instalacin asociado a Numero Serie Medidor' wa_tab-seriemed ' ' ' '.*** Fin Modificacion DCOS 18.02.2009* ENDIF.* ELSE.** Inicio Modificacion DCOS 18.02.2009* MOVE 'X' TO wa_montaje_error.* PERFORM append_log USING wa_tab-discno 'Error. No existe numero logico de equipo asociado a Equipo Medidor' equi-equnr ' ' ' '.*** Fin Modificacion DCOS 18.02.2009* ENDIF.* SELECT SINGLE refobjkey INTO wa_refobjkey FROM ediscdoc WHERE discno = wa_tab-discno. IF sy-subrc = 0.* Busca Medidor Asociado a la instalacion SELECT SINGLE anlage INTO wa_anlage FROM ever WHERE vkonto = wa_refobjkey+0(12) and AUSZDAT = '99991231'. IF sy-subrc = 0. DATA : wa_keydate LIKE sy-datum. wa_keydate = '99991231'. REFRESH ti_t_ger. CALL FUNCTION 'ISU_DET_DEVICE_FROM_INST' EXPORTING x_anlage = wa_anlage x_keydate = wa_keydate CHANGING xy_t_ger = ti_t_ger EXCEPTIONS not_found = 1 internal_error = 2 system_error = 3 OTHERS = 4. IF sy-subrc = 0.* LOOP AT ti_t_ger INTO wa_v_eger WHERE kombinat = 'Z'. "Busca Medidor egerh-devloc = wa_v_eger-devloc. v_matnrmed = wa_v_eger-MATNR. ENDLOOP. ENDIF. ENDIF. else. MOVE 'X' TO wa_montaje_error. PERFORM append_log USING wa_tab-discno 'Error. No existen datos de documento desconexion' wa_tab-discno ' ' ' '. endif.* FIn Modificacion DCOS 17.03.2010*BHETZ cambio ha montaje tcnico.*********************** Se rescata el N de objeto de conexin IF wa_montaje_error IS INITIAL. CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' EXPORTING input = wa_anlage IMPORTING output = v_anlage. CLEAR: t_obj, t_auto. CALL FUNCTION 'ISU_S_INSTLN_PROVIDE' EXPORTING x_anlage = v_anlage x_keydate = sy-datum x_wmode = '2' x_prorate = 'X' x_no_dialog = 'X' IMPORTING y_obj = t_obj y_auto = t_auto EXCEPTIONS not_found = 1 invalid_keydate = 2 foreign_lock = 3 not_authorized = 4 invalid_wmode = 5 general_fault = 6 OTHERS = 7. IF sy-subrc EQ 0. ELSE.* Inicio Modificacion DCOS 18.02.2009 MOVE 'X' TO wa_montaje_error. PERFORM append_log USING wa_tab-discno 'Error. No existen datos relacionados con la Instalacin' v_anlage ' ' ' '.* Fin Modificacion DCOS 18.02.2009 ENDIF. MOVE t_auto-data-vstelle TO v_vstelle. SELECT SINGLE haus INTO v_haus FROM evbs WHERE vstelle = v_vstelle. ENDIF. IF wa_montaje_error IS INITIAL.* Fin Modificacion DCOS 22.12.2008* Se rescata el N del equipo a partir del N de serie de la cpsula SELECT SINGLE equnr matnr INTO (v_equnr , v_matnr) FROM equi WHERE sernr = wa_tab-seriecap.* Inicio Modificacion DCOS 22.12.2008 . IF sy-subrc = 0.* Fin Modificacion DCOS 22.12.2008******************************************************************************************************** Se hace movimiento de bodega para pasar de status ALMA a DISP, de tal manera poder hacer el montaje ******************************************************************************************************** CLEAR v_date. CONCATENATE wa_tab-actdate+6(4) wa_tab-actdate+3(2) wa_tab-actdate+0(2) INTO v_date.* FCV - 28.10.2008 - Metrogas* Se determina bodega para realizar movimiento SELECT SINGLE * FROM zmm_lectorbod WHERE lector = wa_tab-ableser.* fin FCV - 28.10.2004* Inicio Modificacion DCOS 18.02.2009. REFRESH t_return.* Fin Modificacion DCOS 18.02.2009 CALL FUNCTION 'ZISU_MOVIMIENTO_CAPSULA' EXPORTING fecha = v_date movimiento = '962' material = v_matnr centro = 'CE01' almacen = zmm_lectorbod-bodega cantidad = '1' nroserie = wa_tab-seriecap* centrocosto = '212100' codigo = '06' IMPORTING nrodocto = v_mblnr anodocto = v_mjahr resultado = v_subrc TABLES tab_return = t_return. IF v_subrc 0. v_errorproc = 'X'.* Inicio Modificacion DCOS 18.02.2009 READ TABLE t_return WITH KEY type = 'E'.* Fin Modificacion DCOS 18.02.2009 PERFORM append_log USING wa_tab-discno 'Error en Movimiento Capsula' t_return-message ' ' 'ZISU_MOVIMIENTO_CAPSULA'.* Fin Modificacion DCOS 18.02.2009 ELSE. IF v_subrc = 0.******************************************************************** Si est OK el movimiento desde ALMA a DISP ==> hacer MONTAJE********************************************************************BHETZ cambio ha montaje tcnico. s_auto_ger-matnr = v_matnr. s_auto_ger-geraetneu = wa_tab-seriecap. s_auto_ger-gerwechs = '04'. s_auto_ger-devloc = egerh-devloc. APPEND s_auto_ger TO t_auto_ger. xy_auto-okcode = 'SAVE'. xy_auto-zwstand = 'X'. xy_auto-auto_ger = t_auto_ger. CALL FUNCTION 'ISU_S_WORKLIST_INSTALL' EXPORTING x_haus = v_haus x_devloc = egerh-devloc x_eadat = v_date x_geraetneu = wa_tab-seriecap x_action = '06' "Montaje Tcnico x_upd_online = 'X' x_no_dialog = 'X' IMPORTING y_db_update = y_db_update CHANGING xy_auto = xy_auto EXCEPTIONS not_found = 1 foreign_lock = 2 invalid = 3 internal_error = 4 not_qualified = 5 input_error = 6 system_error = 7 not_customized = 8 OTHERS = 9. IF sy-subrc 0. v_errorproc = 'X'.*************************************************************** Inicio Modificacion DCOS 18.02.2009 var_subrc = sy-subrc. CONDENSE var_subrc NO-GAPS. PERFORM append_log USING wa_tab-discno 'Error en Montaje (ISU_S_WORKLIST_INSTALL). Codigo' var_subrc ' ' 'ISU_S_WORKLIST_INSTALL'.* Fin Modificacion DCOS 18.02.2009* Si el montaje resulta con errores, se reversa el movimiento y se devuelve a status ALMA CALL FUNCTION 'ZISU_MOVIMIENTO_CAPSULA' EXPORTING fecha = v_date movimiento = '961' material = v_matnr centro = 'CE01' almacen = zmm_lectorbod-bodega cantidad = '1' nroserie = wa_tab-seriecap codigo = '05' IMPORTING nrodocto = v_mblnr anodocto = v_mjahr resultado = v_subrc. ELSE. PERFORM append_log USING wa_tab-discno 'Se Realizo montaje de Capsula' wa_tab-seriecap ' ' ' '. ENDIF. ENDIF. ENDIF.* Inicio Modificacion DCOS 22.12.2008 . ENDIF.*BHETZ cambio ha montaje tcnico. ELSE. v_errorproc = 'X'. ENDIF.*********************************************** Fin Modificacion DCOS 22.12.2008ENDFORM. " montaje_capsula*&---------------------------------------------------------------------**& Form notifica*&---------------------------------------------------------------------*FORM notifica.* DATA : l_mot_desv TYPE co_agrnd. REFRESH bdcdata. CLEAR: fec_ini, hora_ini, n_orden. UNPACK wa_tab-aufnr TO n_orden. SELECT SINGLE afko~ftrmi aufk~objnr INTO (fec_ini, i_nobj ) FROM afko INNER JOIN aufk ON aufk~aufnr = afko~aufnr WHERE afko~aufnr = n_orden. SELECT SINGLE utime INTO hora_ini FROM jcds WHERE stat = 'I0002' AND objnr = i_nobj AND chind = 'I'. REFRESH: t_paso, t_return, t_dreturn. CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' EXPORTING input = wa_tab-aufnr IMPORTING output = wa_tab-aufnr.* BHR 09.09.2008 Cantidad de trabajo IF flag_obj = 'X'. cant_trab = '1'. ELSE. IF NOT sy-subrc NE 0. IF st_pago = 'X'. cant_trab = '1'. ELSE. cant_trab = '0'. cl_activ = ''. IF NOT ordisu IS INITIAL. neworder = 'X'. ENDIF. ENDIF. ENDIF. ENDIF.****************************************************** 1 Notificacin REFRESH: t_paso, t_return, t_dreturn. CLEAR t_paso. t_paso-orderid = wa_tab-aufnr. t_paso-operation = '0010'. t_paso-work_cntr = ptotrab. t_paso-plant = 'CE01'. t_paso-act_work = cant_trab. t_paso-un_work = 'H'. t_paso-act_type = 'COEX01'. t_paso-postg_date = sy-datum. t_paso-fin_conf = 'X'. t_paso-exec_start_date = fec_ini. t_paso-exec_start_time = hora_ini. t_paso-un_act_dur = 'H'. t_paso-exec_fin_date = fec_ini. t_paso-exec_fin_time = hora_ini. t_paso-dev_reason = mot_desv. t_paso-conf_text = wa_tab-zeile. APPEND t_paso. IF NOT wa_tab-vornr2 IS INITIAL.* 2da. Notificacin CLEAR t_paso. t_paso-orderid = wa_tab-aufnr. CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' EXPORTING input = wa_tab-vornr2 IMPORTING output = wa_tab-vornr2. t_paso-operation = wa_tab-vornr2. t_paso-work_cntr = ptotrab. t_paso-plant = 'CE01'. t_paso-act_work = cant_trab. t_paso-un_work = 'H'. t_paso-act_type = 'COEX01'. t_paso-postg_date = sy-datum. t_paso-fin_conf = 'X'. t_paso-exec_start_date = fec_ini. t_paso-exec_start_time = hora_ini. t_paso-un_act_dur = 'H'. t_paso-exec_fin_date = fec_ini. t_paso-exec_fin_time = hora_ini.* Recupera motivo de desviacin PERFORM get_motivo_desviacion USING wa_tab-statu2 CHANGING l_mot_desv. t_paso-dev_reason = l_mot_desv. t_paso-conf_text = wa_tab-texto2. APPEND t_paso. ENDIF.* 3era. Notificacin IF NOT wa_tab-vornr3 IS INITIAL. CLEAR t_paso. t_paso-orderid = wa_tab-aufnr. CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' EXPORTING input = wa_tab-vornr3 IMPORTING output = wa_tab-vornr3. t_paso-operation = wa_tab-vornr3. t_paso-work_cntr = ptotrab. t_paso-plant = 'CE01'. t_paso-act_work = cant_trab. t_paso-un_work = 'H'. t_paso-act_type = 'COEX01'. t_paso-postg_date = sy-datum. t_paso-fin_conf = 'X'. t_paso-exec_start_date = fec_ini. t_paso-exec_start_time = hora_ini. t_paso-un_act_dur = 'H'. t_paso-exec_fin_date = fec_ini. t_paso-exec_fin_time = hora_ini. PERFORM get_motivo_desviacion USING wa_tab-statu3 CHANGING l_mot_desv. t_paso-dev_reason = l_mot_desv. t_paso-conf_text = wa_tab-texto3. APPEND t_paso. ENDIF. CALL FUNCTION 'BAPI_ALM_CONF_CREATE' EXPORTING post_wrong_entries = '0' IMPORTING return = t_return TABLES timetickets = t_paso detail_return = t_dreturn.* Inicio Modificacion DCOS 18.02.2009 READ TABLE t_dreturn WITH KEY type = 'E'. IF sy-subrc NE 0. READ TABLE t_dreturn INDEX 1. PERFORM append_log USING wa_tab-discno t_dreturn-message ' ' ' ' 'BAPI_ALM_CONF_CREATE'. ELSE. v_errorproc = 'X'.* MOVE num_doc TO t_text-nro_doc.* t_text-mensaje = 'Error en el proceso de Notificacin. Revisar.'.* APPEND t_text. PERFORM append_log USING wa_tab-discno 'Error.' t_dreturn-message ' ' 'BAPI_ALM_CONF_CREATE'. ENDIF.* Fin Modificacion DCOS 18.02.2009ENDFORM. "FIN NOTIFICACION*&---------------------------------------------------------------------**& Form encuentra_monto*&---------------------------------------------------------------------*FORM encuentra_monto USING num_serv CHANGING deuda. TABLES: afih. DATA: t_sal LIKE but000 OCCURS 0 WITH HEADER LINE. DATA: t_retorno LIKE sfkkop OCCURS 0 WITH HEADER LINE. DATA: v_kont LIKE fkkop-vkont. CLEAR afih. SELECT SINGLE kunum INTO afih-kunum FROM afih WHERE aufnr EQ num_serv. IF sy-subrc EQ 0. SELECT * INTO TABLE t_sal FROM but000 WHERE partner EQ afih-kunum. LOOP AT t_sal. REFRESH t_retorno. CLEAR t_retorno. UNPACK t_sal-partner TO t_sal-partner. v_kont = t_sal-partner. UNPACK v_kont TO v_kont. CALL FUNCTION 'FKK_COMPLETE_ACCOUNT_READ' EXPORTING i_gpart = t_sal-partner i_vkont = v_kont i_only_open = 'X' TABLES t_fkkop = t_retorno EXCEPTIONS no_items_found = 1 partner_not_specified = 2 OTHERS = 3. SORT t_retorno BY faedn ASCENDING. LOOP AT t_retorno WHERE faedn LT sy-datum AND abwtp IS INITIAL. deuda = deuda + ( t_retorno-betrw * 100 ). ENDLOOP. ENDLOOP. ENDIF.ENDFORM. " encuentra_monto*&---------------------------------------------------------------------**& Form establece_tipo_orden*&---------------------------------------------------------------------*FORM establece_tipo_orden USING num_doc deuda num_serv CHANGING order. TABLES: evbs. DATA: num_simp TYPE i, num_cier TYPE i. DATA: t_ediscact LIKE ediscact OCCURS 0 WITH HEADER LINE. DATA: betrw LIKE zreg_desconexion-betrw, v_actdate LIKE ediscact-actdate.* FCV - 11.06.2008 - Metrogas CLEAR v_actdate. SELECT MAX( actdate ) INTO v_actdate FROM ediscact WHERE discno EQ num_doc AND orderact IN ('0001', '0002').* fin FCV - 11.06.2008 - Metrogas CLEAR: t_ediscact[], num_simp, num_cier. SELECT * INTO TABLE t_ediscact FROM ediscact WHERE discno EQ num_doc AND disccanceld NE 'X' AND NOT ordstate IN (59, 18)* FCV - 11.06.2008 - Metrogas AND actdate GE v_actdate.* fin FCV - 11.06.2008 - Metrogas LOOP AT t_ediscact. SELECT SINGLE ilart INTO afih-ilart FROM afih WHERE aufnr EQ t_ediscact-ordernum. IF afih-ilart EQ 'DES' OR afih-ilart EQ 'DIN' OR afih-ilart EQ 'DS2'. ADD 1 TO num_simp. ELSEIF afih-ilart EQ 'RMD'. ADD 1 TO num_cier. ENDIF. ENDLOOP. MOVE 'ZC21' TO order. IF num_simp GE 2 AND num_cier GE 3. SELECT SINGLE betrw INTO betrw FROM zreg_desconexion WHERE codigo EQ 'RMD'. IF deuda GE betrw.* order = 'ZCIV'. order = 'ZC21'. ENDIF. ELSEIF num_simp GE 2 AND num_cier LT 3. SELECT SINGLE betrw INTO betrw FROM zreg_desconexion WHERE codigo EQ 'SIM'. IF deuda GE betrw.* order = 'ZCRM'. order = 'ZC21'. ENDIF. ELSE. order = 'ZC21'. ENDIF.* ponemos la validacion de corte de valvula para departamentos IF order EQ 'ZCIV'. CLEAR afih. SELECT SINGLE kunum INTO afih-kunum FROM afih WHERE aufnr EQ num_serv. CLEAR evbs. SELECT SINGLE vbsart INTO evbs-vbsart FROM evbs WHERE eigent EQ afih-kunum. IF evbs-vbsart(4) EQ 'DEPT'.* MOVE 'ZCRM' TO order. MOVE 'ZC21' TO order. ENDIF. ENDIF.* FCV - 04.12.2008 - Metrogas IF order EQ 'ZCRM'. CLEAR afih. SELECT SINGLE kunum INTO afih-kunum FROM afih WHERE aufnr EQ num_serv. CLEAR evbs. SELECT SINGLE vbsart INTO evbs-vbsart FROM evbs WHERE eigent EQ afih-kunum. IF evbs-vbsart(4) NE 'DEPT'. MOVE 'ZC21' TO order. ENDIF. ENDIF.* fin FCV - 04.12.2008 - MetrogasENDFORM. "establece_tipo_orden" establece_tipo_orden*&---------------------------------------------------------------------**& Form get_motivo_desviacion*&---------------------------------------------------------------------*FORM get_motivo_desviacion USING p_status CHANGING p_mot_desv. SELECT SINGLE mt_desvi INTO p_mot_desv FROM ztbsm007 WHERE st_odesc = p_status. IF sy-subrc 0. CLEAR p_mot_desv. ENDIF.ENDFORM. " get_motivo_desviacion*---------------------------------------------------------------------** FORM BDC_DYNPRO **---------------------------------------------------------------------*FORM bdc_dynpro USING program dynpro. CLEAR bdcdata. bdcdata-program = program. bdcdata-dynpro = dynpro. bdcdata-dynbegin = 'X'. APPEND bdcdata.ENDFORM. "bdc_dynpro*---------------------------------------------------------------------** FORM BDC_FIELD **---------------------------------------------------------------------*FORM bdc_field USING fnam fval. CLEAR bdcdata. bdcdata-fnam = fnam. bdcdata-fval = fval. APPEND bdcdata.ENDFORM. "bdc_field*&---------------------------------------------------------------------**& Form close_group*&---------------------------------------------------------------------*FORM close_group. CALL FUNCTION 'BDC_CLOSE_GROUP'. WRITE: /(30) 'BDC_CLOSE_GROUP'(i04), (12) 'returncode:'(i05), sy-subrc.ENDFORM. "close_group*&---------------------------------------------------------------------**& Form carga_unix*&---------------------------------------------------------------------*FORM carga_unix.ENDFORM. "carga_unix******************************************************************************************************* PROCESO DE REPOSICION*******************************************************************************************************---------------------------------------------------------------------** FORM procesa_repo **---------------------------------------------------------------------*FORM procesa_repo. DATA: v_nrorden(12) TYPE n. CLEAR v_errorproc. LOOP AT it_repo INTO wa_repo.*BHETZ 22.09.2009***************** CLEAR v_errorproc.********************************** CLEAR v_nrorden. v_nrorden = wa_repo-nrorden.* Lo primero que hace es revisar el tipo de notificacin con el motivo de desviacin IF wa_repo-motivodesv1 = 'ZR20' OR wa_repo-motivodesv1 = 'ZR27' OR wa_repo-motivodesv1 = 'ZR29'. " Notificacin Final CLEAR v_ordstate. CASE wa_repo-motivodesv1. WHEN 'ZR20'. v_ordstate = '20'. WHEN 'ZR27'. v_ordstate = '27'. WHEN 'ZR29'. v_ordstate = '29'. ENDCASE.* Se revisa si la orden ya est notificada CLEAR wa_orden_notificada.* Orden de servicio est liberada a menos que tenga estado "Cancelado* antes de enviar a corte" SELECT jest~stat INTO v_stat_1 FROM jest JOIN aufk ON aufk~objnr = jest~objnr WHERE inact = ' ' AND aufk~aufnr = v_nrorden.* Orden ABIERTA IF v_stat_1 = 'I0001'. PERFORM append_log USING wa_repo-nro_doc 'Documento con orden' wa_repo-nrorden ' abierta.' ' '. CONTINUE. ENDIF.* Orden ya notificada IF v_stat_1 = 'I0009'. PERFORM append_log USING wa_repo-nro_doc 'Documento con orden' wa_repo-nrorden ' ya notificada' ' '. wa_orden_notificada = 'X'. CONTINUE. ENDIF. ENDSELECT.* Fin validaciones IF wa_orden_notificada IS INITIAL. CLEAR v_notif. v_notif = 'X'. PERFORM notifica_orden. ENDIF. IF v_errorproc IS INITIAL. IF wa_repo-concapsula = 'X'. PERFORM desmonta_capsula. IF v_errorproc IS INITIAL. PERFORM relaciona_capsula_orden1. ENDIF. ENDIF. IF v_errorproc IS INITIAL. CONCATENATE wa_repo-fecha wa_repo-glosa INTO nota SEPARATED BY space. PERFORM ingreso_observacion USING wa_repo-nro_doc nota. CONCATENATE wa_repo-fecha(2) wa_repo-fecha+3(2) wa_repo-fecha+6(4) INTO fecha. REFRESH bdcdata. CLEAR wa_bdcdata. wa_bdcdata-program = 'SAPLEC85'. wa_bdcdata-dynpro = '0100'. wa_bdcdata-dynbegin = 'X'. APPEND wa_bdcdata TO bdcdata. CLEAR wa_bdcdata. wa_bdcdata-fnam = 'BDC_CURSOR'. wa_bdcdata-fval = 'EDISCD-DISCNO'. APPEND wa_bdcdata TO bdcdata. CLEAR wa_bdcdata. wa_bdcdata-fnam = 'BDC_OKCODE'. wa_bdcdata-fval = '/00'. APPEND wa_bdcdata TO bdcdata. CLEAR wa_bdcdata. wa_bdcdata-fnam = 'EDISCD-DISCNO'. wa_bdcdata-fval = wa_repo-nro_doc. APPEND wa_bdcdata TO bdcdata. CLEAR wa_bdcdata. wa_bdcdata-program = 'SAPLES34'. wa_bdcdata-dynpro = '0200'. wa_bdcdata-dynbegin = 'X'. APPEND wa_bdcdata TO bdcdata. CLEAR wa_bdcdata. wa_bdcdata-fnam = 'BDC_OKCODE'. wa_bdcdata-fval = '=RCED'. APPEND wa_bdcdata TO bdcdata. CLEAR wa_bdcdata. wa_bdcdata-fnam = 'BDC_CURSOR'. wa_bdcdata-fval = 'EENO_DYNP-ZEILE(01)'. APPEND wa_bdcdata TO bdcdata. CLEAR wa_bdcdata. wa_bdcdata-program = 'SAPLES34'. wa_bdcdata-dynpro = '0103'. wa_bdcdata-dynbegin = 'X'. APPEND wa_bdcdata TO bdcdata. CLEAR wa_bdcdata. wa_bdcdata-fnam = 'BDC_OKCODE'. wa_bdcdata-fval = '=OKAY'. APPEND wa_bdcdata TO bdcdata. CLEAR wa_bdcdata. wa_bdcdata-fnam = 'S0102-ORDERYES'. wa_bdcdata-fval = 'X'. APPEND wa_bdcdata TO bdcdata. CLEAR wa_bdcdata. wa_bdcdata-program = 'SAPLES34'. wa_bdcdata-dynpro = '0330'. wa_bdcdata-dynbegin = 'X'. APPEND wa_bdcdata TO bdcdata. CLEAR wa_bdcdata. wa_bdcdata-fnam = 'BDC_OKCODE'. wa_bdcdata-fval = '=TAB_DOBJ'. APPEND wa_bdcdata TO bdcdata.* FCV - 06.11.2008 - Se agrega el tipo de corte CLEAR wa_bdcdata. wa_bdcdata-fnam = 'EDISCACTS-ORDSTATE'. wa_bdcdata-fval = v_ordstate. APPEND wa_bdcdata TO bdcdata.* fin FCV - 06.11.2008 - Se agrega el tipo de corte CLEAR wa_bdcdata. wa_bdcdata-program = 'SAPLES34'. wa_bdcdata-dynpro = '0330'. wa_bdcdata-dynbegin = 'X'. APPEND wa_bdcdata TO bdcdata. CLEAR wa_bdcdata. wa_bdcdata-fnam = 'BDC_OKCODE'. wa_bdcdata-fval = '=TAB_READ'. APPEND wa_bdcdata TO bdcdata. CLEAR wa_bdcdata. wa_bdcdata-fnam = 'BDC_CURSOR'. wa_bdcdata-fval = 'EDISCACTS-ACTTIME'. APPEND wa_bdcdata TO bdcdata. CLEAR wa_bdcdata. wa_bdcdata-fnam = 'EDISCACTS-ACTDATE'. wa_bdcdata-fval = fecha. APPEND wa_bdcdata TO bdcdata. CLEAR wa_bdcdata. wa_bdcdata-fnam = 'EDISCACTS-ACTTIME'. wa_bdcdata-fval = wa_repo-hora. APPEND wa_bdcdata TO bdcdata. CONCATENATE sy-datum+6(2) sy-datum+4(2) sy-datum+0(4) INTO fecha2. CLEAR wa_bdcdata. wa_bdcdata-fnam = 'EDISCPOSS-ACTDATE(01)'. wa_bdcdata-fval = fecha2. APPEND wa_bdcdata TO bdcdata. CLEAR wa_bdcdata. wa_bdcdata-fnam = 'EDISCPOSS-ACTTIME(01)'. wa_bdcdata-fval = sy-uzeit. APPEND wa_bdcdata TO bdcdata. CLEAR wa_bdcdata. wa_bdcdata-program = 'SAPLES34'. wa_bdcdata-dynpro = '0330'. wa_bdcdata-dynbegin = 'X'. APPEND wa_bdcdata TO bdcdata. CLEAR wa_bdcdata. wa_bdcdata-fnam = 'BDC_OKCODE'. wa_bdcdata-fval = '=TAB_DISC'. APPEND wa_bdcdata TO bdcdata.*i-sap vv 15.07.2005 CLEAR wa_bdcdata. wa_bdcdata-fnam = 'REL28D-ABLESER'. wa_bdcdata-fval = wa_repo-reponedor. APPEND wa_bdcdata TO bdcdata.*i-sap vv 19.07.2005 IF wa_repo-reponedor IS INITIAL. CLEAR wa_bdcdata. wa_bdcdata-fnam = 'REABLD-ABLESER(01)'. wa_bdcdata-fval = ' '. APPEND wa_bdcdata TO bdcdata. ENDIF.*i-sap vv 19.07.2005* CLEAR wa_bdcdata. wa_bdcdata-fnam = 'BDC_CURSOR'. wa_bdcdata-fval = 'REABLD-ZWSTAND(01)'. APPEND wa_bdcdata TO bdcdata. CLEAR wa_bdcdata. wa_bdcdata-fnam = 'REABLD-ZWSTAND(01)'. wa_bdcdata-fval = wa_repo-lectura. APPEND wa_bdcdata TO bdcdata.* Este cdigo es para saltar mensaje CLEAR wa_bdcdata. wa_bdcdata-program = 'SAPLES34'. wa_bdcdata-dynpro = '0330'. wa_bdcdata-dynbegin = 'X'. APPEND wa_bdcdata TO bdcdata. CLEAR wa_bdcdata. wa_bdcdata-fnam = 'BDC_OKCODE'. wa_bdcdata-fval = '/00'. APPEND wa_bdcdata TO bdcdata. CLEAR wa_bdcdata. wa_bdcdata-program = 'SAPLES34'. wa_bdcdata-dynpro = '0330'. wa_bdcdata-dynbegin = 'X'. APPEND wa_bdcdata TO bdcdata. CLEAR wa_bdcdata. wa_bdcdata-fnam = 'BDC_OKCODE'. wa_bdcdata-fval = '=TAB_DISC'. APPEND wa_bdcdata TO bdcdata.* Este cdigo es para saltar mensaje CLEAR wa_bdcdata. wa_bdcdata-program = 'SAPLES34'. wa_bdcdata-dynpro = '0330'. wa_bdcdata-dynbegin = 'X'. APPEND wa_bdcdata TO bdcdata. CLEAR wa_bdcdata. wa_bdcdata-fnam = 'BDC_OKCODE'. wa_bdcdata-fval = '=SAVE'. APPEND wa_bdcdata TO bdcdata. CLEAR wa_bdcdata. wa_bdcdata-fnam = 'BDC_CURSOR'. wa_bdcdata-fval = 'EDISCACTS-RC_CHARGE'. APPEND wa_bdcdata TO bdcdata. CLEAR wa_bdcdata. wa_bdcdata-fnam = 'EDISCACTS-RC_CHARGE'. wa_bdcdata-fval = wa_repo-esquema. APPEND wa_bdcdata TO bdcdata. REFRESH itab_msge. CALL TRANSACTION 'EC86' USING bdcdata MODE p_vmode MESSAGES INTO itab_msge. PERFORM llama_bapi. LOOP AT itab_msge. MESSAGE ID itab_msge-msgid TYPE itab_msge-msgtyp NUMBER itab_msge-msgnr WITH itab_msge-msgv1 itab_msge-msgv2 itab_msge-msgv3 itab_msge-msgv4 INTO t_text-mensaje. PERFORM append_log USING wa_repo-nro_doc t_text-mensaje ' ' ' ' 'EC86'. ENDLOOP. ENDIF. ENDIF. ELSE. CLEAR v_notif. PERFORM notifica_orden. ENDIF. ENDLOOP.* LOOP AT t_text.* CONCATENATE t_text-nro_doc t_text-mensaje INTO mensaje SEPARATED BY* space.* WRITE / mensaje.* ENDLOOP.ENDFORM. "procesa_repo*&---------------------------------------------------------------------**& Form desmonta_capsula*&---------------------------------------------------------------------*FORM desmonta_capsula . DATA s_auto_ger TYPE isu07_auto_ger. DATA t_auto_ger TYPE isu07_auto_gert. DATA xy_auto TYPE isu07_install_auto. DATA: y_db_update LIKE regen-db_update, v_equnr LIKE equi-equnr, v_matnr LIKE equi-matnr. DATA: v_mblnr LIKE mkpf-mblnr, v_mjahr LIKE mkpf-mjahr, v_subrc LIKE sy-subrc, v_date LIKE sy-datum, v_fechacomp LIKE sy-datum.*BHETZ cambio ha montaje tcnico. DATA: t_obj TYPE isu01_instln, t_auto TYPE isu01_instln_auto, v_anlage LIKE eanl-anlage, v_haus LIKE evbs-haus, v_vstelle LIKE evbs-vstelle, v_nro_doc LIKE ediscdoc-discno.******************************************** DATA: t_xy_gmvt_e_s TYPE reg35_gmvt_e_s.* FCV - 28.10.2008 - Metrogas* Se determina bodega para realizar movimiento SELECT SINGLE * FROM zmm_lectorbod WHERE lector = wa_repo-reponedor.* fin FCV - 28.10.2004* Se rescata el N del equipo a partir del N de serie de la cpsula SELECT SINGLE equnr matnr INTO (equi-equnr, equi-matnr) FROM equi WHERE sernr = wa_repo-nroserie. IF sy-subrc EQ 0. SELECT SINGLE logiknr devloc einbdat INTO (egerh-logiknr, egerh-devloc, egerh-einbdat) FROM egerh WHERE equnr = equi-equnr AND bis = '99991231'.* Se rescata el N de instalacin IF sy-subrc EQ 0. CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' EXPORTING input = wa_repo-nro_doc IMPORTING output = v_nro_doc. SELECT SINGLE refobjkey INTO ediscdoc-refobjkey FROM ediscdoc WHERE discno = v_nro_doc. DATA: v_vkonto LIKE fkkvkp-vkont. CLEAR v_vkonto. v_vkonto = ediscdoc-refobjkey+0(12). SELECT SINGLE anlage INTO v_anlage FROM ever WHERE vkonto = v_vkonto AND auszdat = '99991231'. ENDIF. ENDIF. CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' EXPORTING input = v_anlage IMPORTING output = v_anlage. CLEAR: t_obj, t_auto. CALL FUNCTION 'ISU_S_INSTLN_PROVIDE' EXPORTING x_anlage = v_anlage x_keydate = sy-datum x_wmode = '2' x_prorate = 'X' x_no_dialog = 'X' IMPORTING y_obj = t_obj y_auto = t_auto EXCEPTIONS not_found = 1 invalid_keydate = 2 foreign_lock = 3 not_authorized = 4 invalid_wmode = 5 general_fault = 6 OTHERS = 7. IF sy-subrc EQ 0. ELSE.* Inicio Modificacion DCOS 18.02.2009 v_errorproc = 'X'. PERFORM append_log USING wa_repo-nro_doc 'Error. No existen datos relacionados con la Instalacin' v_anlage ' ' ' '.* Fin Modificacion DCOS 18.02.2009 ENDIF. MOVE t_auto-data-vstelle TO v_vstelle. SELECT SINGLE haus INTO v_haus FROM evbs WHERE vstelle = v_vstelle. IF v_errorproc IS INITIAL.************************************************************************************** Se valida la fecha que viene el el archivo v/s la fecha del montaje de la cpsula************************************************************************************* CLEAR v_fechacomp. CONCATENATE wa_repo-fecha+6(4) wa_repo-fecha+3(2) wa_repo-fecha+0(2) INTO v_fechacomp.************************************************************************************* IF egerh-einbdat = v_fechacomp.************************************************************************************** s_auto_ger-matnralt = equi-matnr.* s_auto_ger-ausbau = 'X'.* s_auto_ger-geraetalt = wa_repo-nroserie.** s_auto_ger-gerwechs = '04'.* s_auto_ger-devloc = egerh-devloc.* APPEND s_auto_ger TO t_auto_ger.** xy_auto-okcode = 'SAVE'.* xy_auto-zwstand = 'X'.* xy_auto-auto_ger = t_auto_ger.** CLEAR v_fechacomp.* CONCATENATE wa_repo-fecha+6(4) wa_repo-fecha+3(2) wa_repo-fecha+0(2)* INTO v_fechacomp.* CALL FUNCTION 'ISU_S_WORKLIST_INSTALL'* EXPORTING** x_devloc = egerh-devloc* x_anlage = eastl-anlage* x_eadat = v_fechacomp* x_action = '05' "Desmontaje clculo* x_upd_online = 'X'* x_no_dialog = 'X'* IMPORTING* y_db_update = y_db_update* CHANGING* xy_auto = xy_auto* EXCEPTIONS* not_found = 1* foreign_lock = 2* invalid = 3* internal_error = 4* not_qualified = 5* input_error = 6* system_error = 7* not_customized = 8* OTHERS = 9.** IF sy-subrc EQ 0.* Desmontaje tcnico CLEAR t_xy_gmvt_e_s.* t_xy_gmvt_e_s-move_type_e_s = '501'. t_xy_gmvt_e_s-move_type_e_s = '961'. t_xy_gmvt_e_s-plant_e_s = 'CE01'. t_xy_gmvt_e_s-stge_loc_e_s = zmm_lectorbod-bodega. CALL FUNCTION 'ISU_S_CAN_INSTAL' EXPORTING x_devloc = egerh-devloc x_geraet = wa_repo-nroserie x_beginndatum = v_fechacomp* x_action = '08' se cambia 11 x_action = '11' x_upd_online = 'X' x_no_dialog = 'X' CHANGING xy_gmvt_e_s = t_xy_gmvt_e_s* xy_gmvt_a_s = t_xy_gmvt_a_s EXCEPTIONS not_found = 1 foreign_lock = 2 cancelled = 3 input_error = 4 general_fault = 5 OTHERS = 6. IF sy-subrc EQ 0. COMMIT WORK AND WAIT. PERFORM append_log USING wa_repo-nro_doc 'Desmontaje de Capsula' wa_repo-nroserie ' ' ' '. ELSE. ROLLBACK WORK. v_errorproc = 'X'. PERFORM append_log USING wa_repo-nro_doc 'Error en el proceso de Desmontaje tcnico. Revisar.' ' ' ' ' 'ISU_S_CAN_INSTAL'. ENDIF.* ELSE.* ROLLBACK WORK.* v_errorproc = 'X'.* PERFORM append_log USING wa_repo-nro_doc* 'Error en el proceso de Desmontaje de clculo.Revisar' ' ' ' ' 'ISU_S_CAN_INSTAL'.** ENDIF.************************************************************************************* ELSEIF egerh-einbdat < v_fechacomp.************************************************************************************* s_auto_ger-matnralt = equi-matnr. s_auto_ger-geraetalt = wa_repo-nroserie. s_auto_ger-gerwechs = '04'. s_auto_ger-devloc = egerh-devloc. s_auto_ger-ausbau = 'X'. APPEND s_auto_ger TO t_auto_ger. xy_auto-okcode = 'SAVE'. xy_auto-zwstand = 'X'. xy_auto-auto_ger = t_auto_ger. CONCATENATE wa_repo-fecha+6(4) wa_repo-fecha+3(2) wa_repo-fecha+0(2) INTO v_date. CALL FUNCTION 'ISU_S_WORKLIST_INSTALL' EXPORTING x_haus = v_haus x_devloc = egerh-devloc* x_anlage = eastl-anlage x_eadat = v_date* x_action = '02' "Desmontaje total x_action = '07' "Desmontaje Tcnico. x_upd_online = 'X' x_no_dialog = 'X' IMPORTING y_db_update = y_db_update CHANGING xy_auto = xy_auto EXCEPTIONS not_found = 1 foreign_lock = 2 invalid = 3 internal_error = 4 not_qualified = 5 input_error = 6 system_error = 7 not_customized = 8 OTHERS = 9. IF sy-subrc EQ 0.* Se hace el movimiento de mercancia. CALL FUNCTION 'ZISU_MOVIMIENTO_CAPSULA' EXPORTING fecha = v_date movimiento = '961' material = equi-matnr centro = 'CE01' almacen = zmm_lectorbod-bodega "'BOD2' cantidad = '1' nroserie = wa_repo-nroserie codigo = '05' IMPORTING nrodocto = v_mblnr anodocto = v_mjahr resultado = v_subrc TABLES tab_return = t_return. IF v_subrc 0. v_errorproc = 'X'.* Inicio Modificacion DCOS 18.02.2009 READ TABLE t_return WITH KEY type = 'E'.* Fin Modificacion DCOS 18.02.2009 PERFORM append_log USING wa_repo-nro_doc 'Error en Movimiento Capsula' t_return-message ' ' 'ZISU_MOVIMIENTO_CAPSULA'.* Desmontaje tcnico CLEAR t_xy_gmvt_e_s.* t_xy_gmvt_e_s-move_type_e_s = '501'. t_xy_gmvt_e_s-move_type_e_s = '961'. t_xy_gmvt_e_s-plant_e_s = 'CE01'. t_xy_gmvt_e_s-stge_loc_e_s = zmm_lectorbod-bodega. CALL FUNCTION 'ISU_S_CAN_INSTAL' EXPORTING x_devloc = egerh-devloc x_geraet = wa_repo-nroserie x_beginndatum = v_fechacomp x_action = '09' x_upd_online = 'X' x_no_dialog = 'X' CHANGING xy_gmvt_e_s = t_xy_gmvt_e_s* xy_gmvt_a_s = t_xy_gmvt_a_s EXCEPTIONS not_found = 1 foreign_lock = 2 cancelled = 3 input_error = 4 general_fault = 5 OTHERS = 6. IF sy-subrc EQ 0. COMMIT WORK AND WAIT. ENDIF. ELSE. PERFORM append_log USING wa_repo-nro_doc 'Desmontaje de Capsula' wa_repo-nroserie ' ' ' '. ENDIF. ELSE. v_errorproc = 'X'. PERFORM append_log USING wa_repo-nro_doc 'Error en el proceso de Desmontaje Total. Revisar.' ' ' ' ' 'ISU_S_WORKLIST_INSTALL'. ENDIF. ENDIF. ENDIF.ENDFORM. " desmonta_capsula*&---------------------------------------------------------------------**& Form INGRESO_OBSERVACION*&---------------------------------------------------------------------*FORM ingreso_observacion USING p_discno p_nota.* REFRESH bdcdata. CLEAR wa_bdcdata. wa_bdcdata-program = 'SAPLEC85'. wa_bdcdata-dynpro = '0100'. wa_bdcdata-dynbegin = 'X'. APPEND wa_bdcdata TO bdcdata.* CLEAR wa_bdcdata. wa_bdcdata-fnam = 'BDC_CURSOR'. wa_bdcdata-fval = 'EDISCD-DISCNO'. APPEND wa_bdcdata TO bdcdata.* CLEAR wa_bdcdata. wa_bdcdata-fnam = 'BDC_OKCODE'. wa_bdcdata-fval = '/00'. APPEND wa_bdcdata TO bdcdata.* CLEAR wa_bdcdata. wa_bdcdata-fnam = 'EDISCD-DISCNO'. wa_bdcdata-fval = p_discno. APPEND wa_bdcdata TO bdcdata.* CLEAR wa_bdcdata. wa_bdcdata-program = 'SAPLES34'. wa_bdcdata-dynpro = '0200'. wa_bdcdata-dynbegin = 'X'. APPEND wa_bdcdata TO bdcdata.* CLEAR wa_bdcdata. wa_bdcdata-fnam = 'BDC_CURSOR'. wa_bdcdata-fval = 'EENO_DYNP-ZEILE(03)'. APPEND wa_bdcdata TO bdcdata.* CLEAR wa_bdcdata. wa_bdcdata-fnam = 'BDC_OKCODE'. wa_bdcdata-fval = '=000E'. APPEND wa_bdcdata TO bdcdata.* CLEAR wa_bdcdata. wa_bdcdata-program = 'SAPLSTXX'. wa_bdcdata-dynpro = '1100'. wa_bdcdata-dynbegin = 'X'. APPEND wa_bdcdata TO bdcdata.* CLEAR wa_bdcdata. wa_bdcdata-fnam = 'BDC_CURSOR'. wa_bdcdata-fval = 'RSTXT-TXLINE(02)'. APPEND wa_bdcdata TO bdcdata.* CLEAR wa_bdcdata. wa_bdcdata-fnam = 'BDC_OKCODE'. wa_bdcdata-fval = '=EDNP'. APPEND wa_bdcdata TO bdcdata.* CLEAR wa_bdcdata. wa_bdcdata-program = 'SAPLSTXX'. wa_bdcdata-dynpro = '1100'. wa_bdcdata-dynbegin = 'X'. APPEND wa_bdcdata TO bdcdata.* CLEAR wa_bdcdata. wa_bdcdata-fnam = 'BDC_CURSOR'. wa_bdcdata-fval = 'RSTXT-TXLINE(02)'. APPEND wa_bdcdata TO bdcdata.* CLEAR wa_bdcdata. wa_bdcdata-fnam = 'BDC_OKCODE'. wa_bdcdata-fval = '=TXBA'. APPEND wa_bdcdata TO bdcdata.* CLEAR wa_bdcdata. wa_bdcdata-fnam = 'RSTXT-TXLINE(02)'. wa_bdcdata-fval = p_nota. APPEND wa_bdcdata TO bdcdata.* CLEAR wa_bdcdata. wa_bdcdata-program = 'SAPLES34'. wa_bdcdata-dynpro = '0200'. wa_bdcdata-dynbegin = 'X'. APPEND wa_bdcdata TO bdcdata.* CLEAR wa_bdcdata. wa_bdcdata-fnam = 'BDC_OKCODE'. wa_bdcdata-fval = '=DCED'. APPEND wa_bdcdata TO bdcdata.* CLEAR wa_bdcdata. wa_bdcdata-fnam = 'EDISCDOCS-BILLREL'. wa_bdcdata-fval = 'X'. APPEND wa_bdcdata TO bdcdata.* CLEAR wa_bdcdata. wa_bdcdata-program = 'SAPLSPO1'. wa_bdcdata-dynpro = '0600'. wa_bdcdata-dynbegin = 'X'. APPEND wa_bdcdata TO bdcdata.* CLEAR wa_bdcdata. wa_bdcdata-fnam = 'BDC_OKCODE'. wa_bdcdata-fval = '=OPT1'. APPEND wa_bdcdata TO bdcdata. CALL TRANSACTION 'EC86' USING bdcdata MODE p_vmode MESSAGES INTO itab_msge.ENDFORM. " ingreso_observacion*&---------------------------------------------------------------------**& Form LLAMA_BAPI*&---------------------------------------------------------------------*FORM llama_bapi. UNPACK wa_repo-nro_doc TO wa_repo-nro_doc. SELECT * INTO CORRESPONDING FIELDS OF TABLE i_ediscobj FROM ediscobj WHERE discno = wa_repo-nro_doc. IF sy-subrc = 0. READ TABLE i_ediscobj INDEX 1. SELECT * FROM egerh INTO CORRESPONDING FIELDS OF TABLE i_egerh FOR ALL ENTRIES IN i_ediscobj WHERE logiknr = i_ediscobj-logiknr AND bis = '99991231'. IF sy-subrc = 0. READ TABLE i_egerh INDEX 1. REFRESH tmp_value_num. CLEAR tmp_value_num. tmp_value_num-charact = 'NUM_SELLO'. tmp_value_num-value_from = wa_repo-sello. APPEND tmp_value_num.*isap vv 11.07.2005 CONCATENATE wa_repo-fecha+6(4) wa_repo-fecha+3(2) wa_repo-fecha(2) INTO i_fecha1.*isap vv 11.07.2005 tmp_value_num-charact = 'FECHA_INST_SELLO'. tmp_value_num-value_from = i_fecha1. APPEND tmp_value_num. REFRESH tmp_value_char. CLEAR tmp_value_char. tmp_value_char-charact = 'TIPO_SELLO'. tmp_value_char-value_char = 'SELLO_SEGUR'. APPEND tmp_value_char. tmp_value_char-charact = 'COLOR_SELLO'. tmp_value_char-value_char = 'VERDE'. APPEND tmp_value_char. i_objectkey = i_egerh-equnr.*isap vv 11.07.2005 CONCATENATE wa_repo-fecha+6(4) wa_repo-fecha+3(2) wa_repo-fecha(2) INTO w_fecha.*isap vv 11.07.2005 CALL FUNCTION 'BAPI_OBJCL_CHANGE' EXPORTING objectkey = i_objectkey objecttable = 'EQUI' classnum = 'MED_RES' classtype = 'ZME' keydate = w_fecha TABLES allocvaluesnumnew = tmp_value_num allocvaluescharnew = tmp_value_char allocvaluescurrnew = tmp_value_curr return = t_out_mensaje. COMMIT WORK AND WAIT. ENDIF. ENDIF.** FIN LLAMADA BAPI INGRESA NRO. SELLOENDFORM. "LLAMA_BAPI*&---------------------------------------------------------------------**& Form notifica_orden*&---------------------------------------------------------------------*FORM notifica_orden. REFRESH: t_paso, t_return, t_dreturn. CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' EXPORTING input = wa_repo-nrorden IMPORTING output = wa_repo-nrorden. CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' EXPORTING input = wa_repo-nroperacion1 IMPORTING output = wa_repo-nroperacion1. CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' EXPORTING input = wa_repo-nroperacion2 IMPORTING output = wa_repo-nroperacion2. REFRESH: t_paso, t_return, t_dreturn. CLEAR t_paso. t_paso-orderid = wa_repo-nrorden. t_paso-operation = wa_repo-nroperacion1. t_paso-dev_reason = wa_repo-motivodesv1. t_paso-conf_text = wa_repo-texto1.* t_paso-work_cntr = 'CORTE'. t_paso-plant = 'CE01'. t_paso-act_type = 'RPEX01'. t_paso-postg_date = sy-datum. t_paso-exec_start_date = fec_ini. t_paso-exec_start_time = hora_ini. t_paso-un_act_dur = 'H'. t_paso-exec_fin_date = fec_ini. t_paso-exec_fin_time = hora_ini.* IF v_notif = 'X'. t_paso-fin_conf = 'X'. t_paso-act_work = '1'. t_paso-un_work = 'H'. ENDIF. APPEND t_paso. IF NOT wa_repo-nroperacion2 IS INITIAL. CLEAR t_paso. t_paso-orderid = wa_repo-nrorden. t_paso-operation = wa_repo-nroperacion2. t_paso-dev_reason = wa_repo-motivodesv2. t_paso-conf_text = wa_repo-texto2.* t_paso-work_cntr = 'CORTE'. t_paso-plant = 'CE01'. t_paso-act_type = 'RPEX01'. t_paso-postg_date = sy-datum. t_paso-exec_start_date = fec_ini. t_paso-exec_start_time = hora_ini. t_paso-un_act_dur = 'H'. t_paso-exec_fin_date = fec_ini. t_paso-exec_fin_time = hora_ini.* IF v_notif = 'X'. t_paso-fin_conf = 'X'. t_paso-act_work = '1'. t_paso-un_work = 'H'. ENDIF. APPEND t_paso. ENDIF. CALL FUNCTION 'BAPI_ALM_CONF_CREATE' EXPORTING post_wrong_entries = '0' IMPORTING return = t_return TABLES timetickets = t_paso detail_return = t_dreturn. READ TABLE t_dreturn WITH KEY type = 'E'. IF sy-subrc NE 0. COMMIT WORK AND WAIT. ELSE. v_errorproc = 'X'. PERFORM append_log USING wa_repo-nro_doc 'Error en el proceso de Notificacin. Revisar.' ' ' ' ' 'BAPI_ALM_CONF_CREATE'. ENDIF.ENDFORM. " notifica_orden*&---------------------------------------------------------------------**& Form carga_archivo*&---------------------------------------------------------------------*FORM carga_archivo USING p_opcion. IF p_opcion = 1.* Desconexin REFRESH t_registros. CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE' EXPORTING filename = filename i_begin_col = '1' i_begin_row = '2' i_end_col = '19' i_end_row = '10000' TABLES intern = t_registros EXCEPTIONS inconsistent_parameters = 1 upload_ole = 2 OTHERS = 3.* Ordena la tabla por filas y columnas SORT t_registros BY row col. READ TABLE t_registros INDEX 1. fila = t_registros-row. LOOP AT t_registros. IF t_registros-row NE fila. APPEND wa_tab TO it_tab. CLEAR wa_tab. fila = t_registros-row. ENDIF. CASE t_registros-col. WHEN '001'. wa_tab-discno = t_registros-value. WHEN '002'. wa_tab-aufnr = t_registros-value. WHEN '003'. wa_tab-ordstate = t_registros-value. WHEN '004'. wa_tab-actdate = t_registros-value.* FCV - 27.05.2009 - Metrogas* Se determina si en la fecha el ao est ingresado con 2 4 dgitos CLEAR v_largo. v_largo = STRLEN( wa_tab-actdate ). IF v_largo < 10. CONCATENATE wa_tab-actdate+0(2) wa_tab-actdate+2(1) wa_tab-actdate+3(2) wa_tab-actdate+5(1) '20' wa_tab-actdate+6(2) INTO wa_tab-actdate. ENDIF.* fin FCV - 27.05.2009 - Metrogas WHEN '005'. wa_tab-acttime = t_registros-value. WHEN '006'. wa_tab-disctype = t_registros-value.* --Inicio Modificacion DCOS 04.02.2009 CALL FUNCTION 'FI_ALPHA_CONVERT' EXPORTING i_string = wa_tab-disctype IMPORTING e_string = wa_tab-disctype.*---Fin Modificacion DCOS 04.02.2009 WHEN '007'. wa_tab-zwstand = t_registros-value. WHEN '008'. wa_tab-ableser = t_registros-value. WHEN '009'. wa_tab-sello = t_registros-value. WHEN '010'. wa_tab-zeile = t_registros-value. WHEN '011'. wa_tab-seriecap = t_registros-value. WHEN '012'. wa_tab-seriemed = t_registros-value. WHEN '013'. wa_tab-concapsula = t_registros-value.* FCV - 27.05.2009 - Metrogas* Se valida que la variable concapsula SIEMPRE est en mayscula TRANSLATE wa_tab-concapsula TO UPPER CASE.* fin FCV - 27.05.2009 - Metrogas WHEN '014'. wa_tab-vornr2 = t_registros-value. WHEN '015'. wa_tab-statu2 = t_registros-value. WHEN '016'. wa_tab-texto2 = t_registros-value. WHEN '017'. wa_tab-vornr3 = t_registros-value. WHEN '018'. wa_tab-statu3 = t_registros-value. WHEN '019'. wa_tab-texto3 = t_registros-value. ENDCASE. ENDLOOP. APPEND wa_tab TO it_tab.* Obtiene el total de registros ledos. DESCRIBE TABLE it_tab LINES tot_reg_leidos. ELSE.* Reposicin REFRESH t_registros. CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE' EXPORTING filename = filename i_begin_col = '1' i_begin_row = '2' i_end_col = '17' i_end_row = '10000' TABLES intern = t_registros EXCEPTIONS inconsistent_parameters = 1 upload_ole = 2 OTHERS = 3.* Ordena la tabla por filas y columnas SORT t_registros BY row col. READ TABLE t_registros INDEX 1. fila = t_registros-row. LOOP AT t_registros. IF t_registros-row NE fila. APPEND wa_repo TO it_repo. CLEAR wa_repo. fila = t_registros-row. ENDIF. CASE t_registros-col. WHEN '001'. wa_repo-nro_doc = t_registros-value. WHEN '002'. wa_repo-fecha = t_registros-value.* FCV - 27.05.2009 - Metrogas* Se determina si en la fecha el ao est ingresado con 2 4 dgitos CLEAR v_largo. v_largo = STRLEN( wa_repo-fecha ). IF v_largo < 10. CONCATENATE wa_repo-fecha+0(2) wa_repo-fecha+2(1) wa_repo-fecha+3(2) wa_repo-fecha+5(1) '20' wa_repo-fecha+6(2) INTO wa_repo-fecha. ENDIF.* fin FCV - 27.05.2009 - Metrogas WHEN '003'. wa_repo-hora = t_registros-value. WHEN '004'. wa_repo-lectura = t_registros-value. WHEN '005'. wa_repo-esquema = t_registros-value. WHEN '006'. wa_repo-sello = t_registros-value. WHEN '007'. wa_repo-reponedor = t_registros-value. WHEN '008'. wa_repo-glosa = t_registros-value. WHEN '009'. wa_repo-nroserie = t_registros-value. WHEN '010'. wa_repo-concapsula = t_registros-value.* FCV - 27.05.2009 - Metrogas* Se valida que la variable concapsula SIEMPRE est en mayscula TRANSLATE wa_repo-concapsula TO UPPER CASE.* fin FCV - 27.05.2009 - Metrogas WHEN '011'. wa_repo-nrorden = t_registros-value. WHEN '012'. wa_repo-nroperacion1 = t_registros-value. WHEN '013