Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- *
- * REPORT zwiti010 *
- *----------------------------------------------------------------------*
- * Descripción: *
- * Traspaso de inmovilizado en curso a explotación / Anulación *
- *
- * Modificaciones: *
- * AUTOR FECHA DESCRIPCIÓN *
- *----------------------------------------------------------------------*
- * Juan Garcia Ciuraneta Enero-1999 Tomar los clases de movimiento *
- * de una tabla (ZITR) *
- *----------------------------------------------------------------------*
- *----------------------------------------------------------------------*
- * MODIFICACIONES: upgrade 4.6B
- * FECHA: 08.05.2000
- * DESCRIPCION: 1.- se establece una separación entre las varibles y los
- * delimitadores de parentesis las clausulas
- * 2.- Se añade el módulo MODULE SELECT_MOTIVO en la lógica*
- * de programa.
- *----------------------------------------------------------------------*
- * Joaquin Garrido Iñigo 22-03-2005 Solicitud: 0045002371/18814
- * Sustituir la include ZWITI020 por la nueva ZWITI020_FONDO para
- * permitir la ejecucion en fondo de los traspasos a peticion del
- * usuario
- *
- * MCG - 05-05-2005 Se quitarán los cambios realizados JGI para poder
- * probar si el control sobre la fecha de capitalización vacía se
- * realiza correctamente utilizando el include anterior. Al parecer
- * con el nuevo include podría haber fallos en el cálculo de la fecha
- * de capitalización dependiendo de si es un elemento con vida propia o
- * no
- *----------------------------------------------------------------------*
- * Modificaciones: 01 *
- * Fecha: 19/04/2010 *
- * Usuario: Claudia Rivero - ES26766923 *
- * Identificación : 7700002847 - PMF ACTIVOS FIJOS *
- * Descripción de la modificación: Optimizacion de los programas de la *
- * trx ZITI , para que el Traspaso a explotación de la empresa 0551 *
- * pueda realizarse de una forma global y eficiente, y se optimicen *
- * los tiempos de respuesta *
- *----------------------------------------------------------------------*
- REPORT zwiti010
- NO STANDARD PAGE HEADING
- LINE-SIZE 132
- MESSAGE-ID zi.
- *----------------------------------------------------------------------*
- * TABLAS DEL SISTEMA *
- *----------------------------------------------------------------------*
- TABLES:
- tka02, " Sociedades FI asociadas a CO "
- jest, " Status individual por objeto "
- jcds, " Documentos de modif. p. status de sistema/usuario (tab.JEST)
- cobrb, " Normas de reparto Norma de liquidación Liquidación de orden
- anla, " Segm reg maestro inmov "
- anlz, " Asignaciones de inmovilizados con fecha valor "
- anep, " Partidas individuales de inmovilizado "
- anek, " Cabecera de documento de contabilización AM "
- bseg, " Segmento de documento de Contabilidad "
- anlh, " Nº principal de inmovilizado "
- anlc, " Campos de valor de inmovilizados "
- prps, " Elemento PEP (Datos maestros) "
- aufk, " Datos maestros de orden "
- tj30t, " Textos para status de usuarios "
- t001, " Sociedades "
- ziacl, " Descripción atributos de campos para elementos "
- ziscl, " Elementos de inmovilizado "
- * ziccl, " Elementos de inmovilizado "
- ankt, " Clases de inmovilizados: descripción "
- zisoc, " Solicitudes de inmovilizado "
- zicte, " Constantes para Act. Fijos "
- zissp, " Solicitud instalaciones (datos generales) "
- ziasp, " Descripción atributos de campos para instalaciones "
- cosp, " Costes del PEP "
- zitr, " Movimientos a tratar "
- anka, " Clases de inmovilizado "
- bkpf, " Cabecera documenbtos FI "
- t082f, " "
- t082g, " "
- zki4,
- * Modificación upgrade 46B - Usuario: fex00493. Fecha: 16.05.2000
- t041c. " Tipos de motivos
- *----------------------------------------------------------------------*
- * TABLAS INTERNAS *
- *----------------------------------------------------------------------*
- * Órdenes correspondientes a PEP activo en estado 'CERR', 'EXPL', 'LIBE'
- * o 'CTEC'.
- DATA: BEGIN OF ordenes OCCURS 1000,
- anlue LIKE prps-usr00, " Instalación "
- posid LIKE prps-posid, " Nº externo del elemento PEP "
- pspnr LIKE prps-pspnr, " Nº interno del elemento PEP "
- aufnr LIKE aufk-aufnr, " Número de la Orden "
- estado(4), " Estado del PEP "
- orden_comun, " Indica orden comun "
- objnr LIKE aufk-objnr. " Objeto "
- DATA: END OF ordenes.
- * Elementos/Subnúmeros en los que ha liquidado alguna orden
- DATA: BEGIN OF subnumeros OCCURS 1000,
- anln1 LIKE anep-anln1, " Nº principal de inmovilizado
- anln2 LIKE anep-anln2. " Subnúmero de inmovilizado
- DATA: END OF subnumeros.
- * Elementos PEP, suma parcial
- DATA: BEGIN OF parciales OCCURS 100,
- pspnr LIKE prps-pspnr, " Elemento PEP "
- anlue LIKE prps-usr00, " Instalación "
- posid LIKE prps-posid, " Nº externo del elemento PEP "
- aufnr LIKE aufk-aufnr, " Número de orden "
- cantidad LIKE anep-anbtr. " Importe a traspasar "
- DATA: END OF parciales.
- * Información correspondiente a movimientos de subnúmeros
- DATA: BEGIN OF movimientos OCCURS 10000,
- anlue LIKE prps-usr00, " Instalación "
- afabe LIKE anep-afabe, " Area de valoración real "
- posid LIKE prps-posid, " Nº externo del elemento PEP "
- aufnr LIKE aufk-aufnr, " Número de orden "
- anln1 LIKE anep-anln1, " Nº principal de inmovilizado "
- anln2 LIKE anep-anln2, " Subnúmero de inmovilizado "
- gjahr LIKE anep-gjahr, " Ejercicio "
- lnran LIKE anep-lnran, " Partida individual del mov. "
- bwasl LIKE anep-bwasl, " Clase de movimiento "
- bzdat LIKE anep-bzdat, " Fecha de referencia "
- anbtr LIKE anep-anbtr, " Importe de contabilización "
- cantidad LIKE anep-anbtr, " Importe a traspasar "
- estado(4), " Estado del PEP "
- traspasar, " Indica si hay que traspasar "
- despreciar, " Indica si hay que traspasar "
- orden_comun, " Indica movimiento orden comun "
- elemento_comun. " Indica movimiento elem. comun "
- DATA: END OF movimientos.
- * Información correspondiente a instalaciones
- DATA: BEGIN OF instalaciones OCCURS 100,
- anlue LIKE prps-usr00, " Instalación "
- afabe LIKE anep-afabe, " Area de valoración real "
- aktiv LIKE anla-aktiv, " Fecha de capitalización "
- txt50 LIKE anla-txt50, " Denominación del inmovilizado "
- anbtr LIKE anep-anbtr, " Importe de contabilización "
- cantidad LIKE anep-anbtr, " Importe a traspasar "
- traspasar, " Indica si hay que traspasar "
- error,
- * Inicio Modificación MDB 29.06.2005
- elemento(17). " Elemento erróneo.
- * Fin Modificació nMDB
- DATA: END OF instalaciones.
- * Información correspondiente a elementos PEP
- DATA: BEGIN OF pep OCCURS 100,
- anlue LIKE prps-usr00, " Instalación "
- posid LIKE prps-posid, " Nº externo del elemento PEP "
- afabe LIKE anep-afabe, " Area de valoración real "
- anbtr LIKE anep-anbtr, " Importe de contabilización "
- cantidad LIKE anep-anbtr, " Importe a traspasar "
- estado(4), " Estado del PEP "
- traspasar, " Indica si hay que traspasar "
- despreciar, " Indica si hay que despreciarlo"
- error. " Si tiene errores (comun)
- DATA: END OF pep.
- * Total movimientos peps
- DATA: BEGIN OF totpep OCCURS 100,
- anlue LIKE prps-usr00, " Instalación "
- posid LIKE prps-posid, " Nº externo del elemento PEP "
- afabe LIKE anep-afabe, " Area de valoración real "
- anbtr LIKE anep-anbtr. " Importe de contabilización "
- DATA: END OF totpep.
- * Tabla interna para traspaso.
- DATA: BEGIN OF traspaso OCCURS 1000,
- posid LIKE movimientos-posid,
- afabe LIKE movimientos-afabe,
- cantidad LIKE movimientos-cantidad.
- DATA: END OF traspaso.
- DATA: BEGIN OF control_altas OCCURS 1000,
- anln1 LIKE anla-anln1,
- anln2 LIKE anla-anln2.
- DATA: END OF control_altas.
- DATA: BEGIN OF emisor,
- anln1 LIKE anla-anln1,
- anln2 LIKE anla-anln2.
- DATA: END OF emisor.
- DATA: BEGIN OF receptor,
- anln1 LIKE anla-anln1,
- anln2 LIKE anla-anln2.
- DATA: END OF receptor.
- DATA: BEGIN OF subnumeros_a_modificar OCCURS 500,
- anln1 LIKE anla-anln1,
- anln2 LIKE anla-anln2,
- invsl LIKE zinat-invsl,
- END OF subnumeros_a_modificar.
- DATA: BEGIN OF repartos OCCURS 1000,
- posid LIKE prps-posid,
- anln1 LIKE anla-anln1,
- anbtr LIKE anep-anbtr,
- END OF repartos.
- DATA: BEGIN OF repartos1 OCCURS 1000,
- posid LIKE prps-posid,
- anln1 LIKE anla-anln1,
- anbtr LIKE anep-anbtr,
- END OF repartos1.
- DATA: BEGIN OF repartos_por_elem_area OCCURS 1000,
- posid LIKE prps-posid,
- anln1 LIKE anla-anln1,
- anln2 LIKE anla-anln2,
- afabe LIKE anep-afabe,
- anbtr LIKE anep-anbtr,
- END OF repartos_por_elem_area.
- * totales movimientos ordenes comunes por pep/elemento/area
- * que luego repartirá procorcionalmente entre la inversion material
- DATA: BEGIN OF movs_peps OCCURS 1000,
- posid LIKE prps-posid,
- comun,
- anln1 LIKE anla-anln1,
- anln2 LIKE anla-anln2,
- afabe LIKE anep-afabe,
- anbtr LIKE anep-anbtr,
- END OF movs_peps.
- ************************************************************************
- * peps seleccionado *
- * Añadida por Juan Garcia en Enero/1999 *
- * Para saber si un pep con status LIBE debe seleccionarlo o no *
- * debe seleccionar primero todos los peps de la instalacion, y si hay *
- * alguno con status correcto ==> lo toma *
- ************************************************************************
- DATA: BEGIN OF peps_seleccionados OCCURS 1000,
- objnr LIKE prps-objnr,
- pspnr LIKE prps-pspnr,
- anlue LIKE prps-usr00, " Instalación "
- posid LIKE prps-posid, " Nº externo del elemento PEP "
- estado(4), " Estado del pep "
- END OF peps_seleccionados.
- DATA: BEGIN OF peps_listado OCCURS 0,
- posid LIKE prps-posid,
- procesado(2),
- estado(4),
- ant_fecha(10),
- nue_fecha(10),
- END OF peps_listado.
- DATA: BEGIN OF t_anep,
- anbtr LIKE anep-anbtr,
- gjahr LIKE anep-gjahr,
- lnran LIKE anep-lnran,
- bwasl LIKE anep-bwasl,
- afabe LIKE anep-afabe,
- anln1 LIKE anep-anln1,
- anln2 LIKE anep-anln2,
- bzdat LIKE anep-bzdat,
- belnr LIKE anep-belnr,
- buzei LIKE anep-buzei,
- END OF t_anep.
- DATA:BEGIN OF i_mess OCCURS 0.
- INCLUDE STRUCTURE bdcmsgcoll.
- DATA:END OF i_mess.
- * ES26766923 - INICIO - 19/04/2010 - 7700002847
- TYPES: BEGIN OF st_pep,
- pspnr LIKE prps-pspnr,
- posid LIKE prps-posid,
- objnr LIKE prps-objnr,
- anlue LIKE prps-usr00,
- zztins LIKE prps-zztins,
- usr03 LIKE prps-usr03,
- END OF st_pep.
- DATA: tl_pep TYPE TABLE OF st_pep,
- wl_pep TYPE st_pep.
- DATA: tl_anep TYPE STANDARD TABLE OF anep,
- wl_anep TYPE anep.
- DATA vl_tot_lines TYPE i.
- * ES26766923 - FIN - 19/04/2010 - 7700002847
- *----------------------------------------------------------------------*
- * VARIABLES *
- *----------------------------------------------------------------------*
- * Datos Globales al programa
- DATA: periodo LIKE t009b-poper," Mes "
- nombre_bi LIKE apqi-groupid," Nombre del juego de datos "
- lineas TYPE i, " Nº de líneas de una tabla "
- pep_objnr LIKE prps-objnr, " Número de objeto (pep) "
- pep_pspnr LIKE prps-pspnr, " Número interno PEP "
- pep_posid LIKE prps-posid, " Número externo PEP "
- pep_usr00 LIKE prps-usr00, " Número de instalación "
- pep_usr03 LIKE prps-usr03, " Fecha ultimo traspaso "
- pep_anlue LIKE prps-usr00, " Número de instalacion "
- pep_zztins LIKE prps-zztins, " Tipo de instalacion "
- inst_a_convertir LIKE prps-usr00,
- pep_anlue_con_ceros LIKE prps-usr00,
- pep_anlue_sin_ceros LIKE prps-usr00,
- pep_anlue2(4) TYPE c, " Número de instalacion "
- o_aufnr LIKE aufk-aufnr, " Número de orden "
- o_objnr LIKE aufk-objnr, " Número de objeto (orden) "
- o_auart LIKE aufk-auart, " Tipo de Orden "
- total_mov LIKE anep-anbtr ," Importe de mov. de liquidaciones "
- p_kokrs LIKE tka01-kokrs, " Sociedad CO "
- ci_cerr LIKE tj30t-estat, " Status Interno con cierre definiti. "
- ci_expl LIKE tj30t-estat, " Status Interno de PEP en explotació "
- ci_ctec LIKE tj30t-estat, " Status Interno de PEP bloqueado. "
- ci_libe LIKE tj30t-estat, " Status Interno de PEP liberado. "
- c_usr03 LIKE prps-usr03, " Inicializar ult. fecha traspaso
- rtn_periodo_contable,
- lista_error VALUE ' ',
- er1 VALUE ' ',
- er2 VALUE ' ',
- c_moneda LIKE t001-waers, " Clave de moneda "
- c_idioma LIKE t001-spras, " Clave de idioma "
- x_aktiv LIKE anla-aktiv, "Fecha capitalización inmovilizado "
- d_subnumero, "variable para include zwi00040
- fecha_sys(10), " Fecha sistema CHAR
- fecha_tra(10). " Fecha traspaso CHAR
- * Modificación 23/11/2007 7700000579
- DATA: p_online LIKE sy-batch,
- p_fondo LIKE sy-batch.
- *----------------------------------------------------------------------*
- * RANGOS PARA SELECCION *
- *----------------------------------------------------------------------*
- RANGES: instalanuevas FOR prps-usr00,
- movims FOR anep-bwasl,
- movims1 FOR anep-bwasl,
- c_clase_baja FOR anep-bwasl,
- c_clase_traslado FOR anep-bwasl,
- c_clase_intercalarios FOR anep-bwasl.
- DATA tipo_listado.
- DATA hay_informacion.
- DATA ant_anek_auglz LIKE anek-auglz.
- * gpn - INI - 9999001141 - 06/11/2009
- DATA: ce_cerr(4) TYPE c, "gpn+
- ce_expl(4) TYPE c, "gpn+
- ce_ctec(4) TYPE c, "gpn+
- ce_libe(4) TYPE c. "gpn+
- * gpn - INI - 9999001141 - 06/11/2009
- *----------------------------------------------------------------------*
- * CONSTANTES *
- *----------------------------------------------------------------------*
- CONSTANTS:
- c_curso1(12) VALUE '2%', " Elemento en curso
- c_curso2(12) VALUE '4%', " Elemento en curso
- clase_anlue(8) VALUE '999999ZP', " Clase de inmov. de Instalaciones
- c_inversion(1) VALUE 'I', " Indicador de PEP de inversión
- * gpn - INI - 9999001141 - 06/11/2009
- * ce_cerr(4) VALUE 'CERR'," Status Externo de PEP con cierre definiti."gpn-
- * ce_expl(4) VALUE 'EXPL'," Status Externo de PEP pasado a explotación"gpn-
- * ce_ctec(4) VALUE 'CTEC'," Status Externo de PEP bloqueado. ""gpn-
- * ce_libe(4) VALUE 'LIBE'," Status Externo de PEP liberado. ""gpn-
- * gpn - INI - 9999001141 - 06/11/2009
- c_areacon(2) VALUE '01', " Area Contable. "
- c_areafis(2) VALUE '02', " Area Fiscal. "
- c_areadev(2) VALUE '03', " Area Derivada. "
- c_areamed(2) VALUE '11', " Area medio Ambiente. "
- c_areanic(2) VALUE '40', " Area Ajustes NIC "
- c_areasuc(2) VALUE '51', " Area Subvenciones oficiales de Capital. "
- c_areasua(2) VALUE '52', " Area Subvenciones Activos Cedidos. "
- c_areasuo(2) VALUE '53', " Area Subvenciones Otros. "
- c_areadea(2) VALUE '54', " Area Subvenc. Derechos acometida Obligat."
- c_areadan(2) VALUE '55', " Area Subvenc. Derechos acometida NO Obl. "
- c_areades(2) VALUE '60', " Area Derivada Total Subvenciones. "
- c_areadec(2) VALUE '61', " Area Derivada Subvenciones de Capital. "
- c_esquema(3) VALUE 'PEP', " Esquema de Status "
- c_clase_comun(4) VALUE 'ICOM', " Clase de orden Común.
- c_contep(2) VALUE '75', "Clave Contable Emisora/Receptora "
- c_contrn(2) VALUE '70', "Clave Contable Emisora/Receptora "
- c_mareacone(3) VALUE 'Z01', "Clave de Mov. de Area Contable Emisor "
- c_mareaconr(3) VALUE 'Z02', "Clave de Mov. de Area Contable Receptor "
- c_mareamede(3) VALUE 'Z03', "Clave de Mov. de Area Medio Ambiente emis
- c_mareamedr(3) VALUE 'Z04', "Clave de Mov. de Area medio Ambiente Rec.
- c_mareasuce(3) VALUE 'Z1A', "Clave de Mov. de Area Subve. Cap. Emisor.
- c_mareasucr(3) VALUE 'Z1B', "Clave de Mov. de Area Subve. Cap. Recept.
- c_mareasuae(3) VALUE 'Z2A', "Clave de Mov. de Area Subve. Activ. Emis.
- c_mareasuar(3) VALUE 'Z2B', "Clave de Mov. de Area Subve. Activ. Recep
- c_mareasuoe(3) VALUE 'Z3A', "Clave de Mov. de Area Subve. Otros Emis."
- c_mareasuor(3) VALUE 'Z3B', "Clave de Mov. de Area Subve. Otros Recep.
- c_mareasude(3) VALUE 'Z4A', "Clave de Mov. de Area Subve. Derec Emis."
- c_mareasudr(3) VALUE 'Z4B', "Clave de Mov. de Area Subve. Derec Recep.
- c_mareasune(3) VALUE 'Z5A', "Clave de Mov. Area Subve. Der Emi. NO obl
- c_mareasunr(3) VALUE 'Z5B', "Clave de Mov. Area Subve. Der Rec. NO obl
- c_mareanice(3) VALUE 'Y32', "Clave de Mov. Area NIC Emisor "
- c_mareanicr(3) VALUE 'Y33'. "Clave de Mov. Area NIC Receptor "
- *----------------------------------------------------------------------*
- * PANTALLA DE SELECCIÓN *
- *----------------------------------------------------------------------*
- SELECTION-SCREEN BEGIN OF BLOCK z90 WITH FRAME TITLE text-001.
- PARAMETERS:
- p_bukrs LIKE tka02-bukrs OBLIGATORY MEMORY ID buk, " Sociedad FI "
- p_fecha LIKE sy-datum OBLIGATORY. " Fecha del
- "traspaso "
- * Modificación upgrade 46B - Usuario Fex00493 Fecha: 16.05.2000
- SELECTION-SCREEN BEGIN OF LINE.
- PARAMETERS: p_anular AS CHECKBOX. " Anulación
- SELECTION-SCREEN COMMENT 3(10) text-u02 FOR FIELD p_anular.
- SELECTION-SCREEN POSITION 25.
- * Modificación upgrade 46B - Usuario Fex00493 Fecha: 16.05.2000
- PARAMETERS:
- p_motivo LIKE uf05a-stgrd MODIF ID mtv.
- SELECTION-SCREEN COMMENT 15(8) text-u01 FOR FIELD p_motivo.
- SELECTION-SCREEN END OF LINE.
- * Fin modificación
- PARAMETERS p_prueba AS CHECKBOX. " Para prueba
- SELECT-OPTIONS:
- * Inicio modificación fex00517 9-11-2000
- * Modificación ayuda búsqueda para instalaciones a ZAANL
- * S_ANLUE FOR ANLA-ANLUE MATCHCODE OBJECT AANL, " Instalaciones
- s_anlue FOR anla-anlue MATCHCODE OBJECT zaanl, " Instalaciones
- * Fin modificación fex00517 9-11-2000
- s_zztins FOR zki4-tins. " Tipo Instalación "
- **Inicio 18814-20/11/2006
- *PARAMETERS: p_online RADIOBUTTON GROUP rb DEFAULT 'X'
- * USER-COMMAND radio . "SGF 12/07/2007
- *PARAMETERS: p_fondo RADIOBUTTON GROUP rb.
- SELECTION-SCREEN END OF BLOCK z90 .
- *Fin 18814 -20/11/2006
- ************************************************************************
- * LÓGICA DEL PROGRAMA *
- ************************************************************************
- *----------------------------------------------------------------------*
- * INITIALIZATION *
- *----------------------------------------------------------------------*
- INITIALIZATION.
- * Inicializar la fecha del traspaso con el último día del mes anterior
- * al del sistema
- periodo = sy-datum+4(2) - 1. " Mes
- CALL FUNCTION 'LAST_DAY_IN_PERIOD_GET'
- EXPORTING
- i_gjahr = sy-datum(4)
- i_periv = 'K1'
- i_poper = periodo
- IMPORTING
- e_date = p_fecha " Fecha del traspaso
- EXCEPTIONS
- input_false = 1
- t009_notfound = 2
- t009b_notfound = 3
- OTHERS = 4.
- *----------------------------------------------------------------------*
- * AT SELECTION-SCREEN *
- *----------------------------------------------------------------------*
- * Modifcación 23/11/2007 7700000579 IAF
- * Se comenta el evento para volver situación anterior
- ** Inicio SGF - 12/07/2007 *
- *AT SELECTION-SCREEN OUTPUT.
- DATA: v_status LIKE sy-pfkey.
- DATA: BEGIN OF v_exclude OCCURS 0,
- okcode LIKE sy-ucomm.
- DATA: END OF v_exclude.
- IF p_online EQ 'X'.
- v_status = 'ONLINE'.
- ELSEIF p_fondo EQ 'X'.
- v_status = 'FONDO'.
- ENDIF.
- CALL FUNCTION 'RS_SET_SELSCREEN_STATUS'
- EXPORTING
- p_status = v_status
- TABLES
- p_exclude = v_exclude[].
- ** Fin SGF - 12/07/2007 *
- *
- **DAS 20709/2007 Inicio solicitud 7700000579 . Se ocultan los parametros
- **de ejecucion online o ejecucion en fondo...
- LOOP AT SCREEN.
- IF screen-name CP '*P_ONLINE*' OR screen-name CP '*P_FONDO*'.
- screen-invisible = 1.
- screen-input = 0.
- MODIFY SCREEN.
- ENDIF.
- ENDLOOP.
- AT SELECTION-SCREEN ON p_bukrs.
- * Comprobar que la sociedad FI introducida existe en el sistema
- " FIXME
- SELECT SINGLE * FROM tka02
- WHERE bukrs EQ p_bukrs.
- IF sy-subrc EQ 4.
- MESSAGE e152 WITH p_bukrs. " La sociedad no está prevista
- ENDIF.
- MOVE tka02-kokrs TO p_kokrs.
- AT SELECTION-SCREEN ON p_fecha.
- * validar la fecha introducida
- *TRUCO
- * IF P_FECHA > SY-DATUM.
- * IF P_FECHA(4) <> SY-DATUM(4) OR
- * P_FECHA+4(2) <> SY-DATUM+4(2).
- * MESSAGE E026. " Fecha incorrecta
- * ENDIF.
- * ENDIF.
- * Validar periodo contable abierto
- CALL FUNCTION 'Z_XC_PERIODO_CONTABLE'
- EXPORTING
- bukrs = p_bukrs
- fecha = p_fecha
- IMPORTING
- * fecha_cont = fecha_contable " Fecha contable
- retorno = rtn_periodo_contable " Codigo de retorno
- EXCEPTIONS
- OTHERS = 1.
- * if rtn_periodo_contable <> 2.
- * message e314. " Periodo no abierto.
- * endif.
- ************************************************************************
- AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_zztins-low.
- PERFORM f4_zztins USING 'L'.
- ************************************************************************
- AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_zztins-high.
- PERFORM f4_zztins USING 'H'.
- *----------------------------------------------------------------------*
- * START-OF-SELECTION *
- *----------------------------------------------------------------------*
- START-OF-SELECTION.
- * Modificación 23/11/2007 7700000579
- **DAS 20709/2007 Inicio solicitud 7700000579
- ** Si el usuario lo ejecuta en fondo, marcamos el paremetro que indica
- **"en fondo" para que el programa se ejecute como antes...
- IF sy-batch = 'X'.
- p_fondo = 'X'.
- p_online = ' '.
- ELSE.
- p_online = 'X'.
- p_fondo = ' '.
- ENDIF.
- ** Fin Modificación 23/11/2007 7700000579
- * Control del perfil del Usuario.
- AUTHORITY-CHECK OBJECT 'ZI:SOC:DIV'
- ID 'ACTVT' DUMMY
- ID 'BUKRS' FIELD p_bukrs
- ID 'GSBER' DUMMY.
- IF sy-subrc <> 0.
- MESSAGE e600(zi).
- ENDIF.
- * gpn - INI - 9999001141 - 06/11/2009
- MOVE text-t01 TO ce_cerr. "gpn+
- MOVE text-t02 TO ce_expl. "gpn+
- MOVE text-t03 TO ce_ctec. "gpn+
- MOVE text-t04 TO ce_libe. "gpn+
- * gpn - FIN - 9999001141 - 06/11/2009
- * Segmento principal.
- PERFORM inicializar_datos.
- IF NOT p_anular IS INITIAL.
- PERFORM buscar_traspaso_a_anular.
- ELSE.
- PERFORM seleccionar_subnumeros_ordenes.
- PERFORM tratar_subnumeros.
- ENDIF.
- DESCRIBE TABLE movimientos LINES lineas.
- IF lineas = 0.
- IF p_anular IS INITIAL.
- MESSAGE i025. " No hay movimientos pendientes de traspaso
- ELSE.
- MESSAGE i059. " No hay movimientos pendientes de anulación
- ENDIF.
- LEAVE PROGRAM.
- ELSE.
- SORT movimientos BY anlue afabe posid aufnr anln1 anln2.
- PERFORM crea_tablas. " Programa ZWITI020.
- * perform validar_errores.
- SORT pep BY anlue posid afabe.
- **Inicio 23320-21/11/2006
- IF p_fondo = 'X'.
- PERFORM seleccion_traspaso_fondo.
- *
- * * Inicio SGF - 16/07/07 *
- * * Visualizar los datos sumarizando por instalaciones
- PERFORM tratar_datos_job.
- * * Fin SGF - 16/07/07 *
- *
- *AR - Inicio - 22/02/2010 Pet. 7600092204
- IF p_prueba IS INITIAL.
- *AR - Fin - 22/02/2010 Pet. 7600092204
- PERFORM tratamiento_de_lo_seleccionado.
- *AR - Inicio - 22/02/2010 Pet. 7600092204
- ENDIF.
- *AR - Fin - 22/02/2010 Pet. 7600092204
- ELSE.
- **Fin 23320-21/11/2006
- PERFORM seleccion_traspaso. " Programa ZWITI030.
- ENDIF.
- * Fin Modificación 23/11/2007 7700000579
- ENDIF.
- ************************************************************************
- * SUBRUTINAS *
- ************************************************************************
- "Modificado por: Heizenreder Guillemo ---------------13.10.2010 15:25:58
- *---------------------------------------------------------------------*
- * FORM INICIALIZAR_DATOS *
- *---------------------------------------------------------------------*
- * ........ *
- * ........ *
- * ........ *
- * TODO: *
- * - Comentar *
- * - Utilizar fs en vez de wa para el tratamiento de las tablas *
- * internas. *
- *---------------------------------------------------------------------*
- "----------------------------------------------------------------------
- *&---------------------------------------------------------------------*
- *& Form inicializar_datos
- *&---------------------------------------------------------------------*
- * text
- *----------------------------------------------------------------------*
- FORM inicializar_datos.
- DATA: BEGIN OF ti_tj30t OCCURS 0,
- estat LIKE tj30t-estat,
- txt04 LIKE tj30t-txt04,
- END OF ti_tj30t.
- DATA: BEGIN OF lt_anla OCCURS 0,
- anln1 LIKE anla-anln1,
- anln2 LIKE anla-anln2,
- aktiv LIKE anla-aktiv,
- END OF lt_anla.
- DATA: traspas(24), d_fecha_ini LIKE anla-aktiv.
- CLEAR d_fecha_ini.
- "Modificado por: Heizenreder Guillemo ---------------13.10.2010 15:28:13
- " Creamos los fs para referenciar a las it.
- FIELD-SYMBOLS <lv_fs_ti_tj30t> LIKE LINE OF ti_tj30t.
- FIELD-SYMBOLS <lv_fs_lt_anla> LIKE LINE OF lt_anla.
- "-----------------------------------------------------------------------
- REFRESH movimientos.
- CLEAR movimientos.
- * gpn - INI - 9999001141 - 06/11/2009
- MOVE sy-langu TO c_idioma. "gpn+
- * gpn - FIN - 9999001141 - 06/11/2009
- * Buscar moneda e idioma de la sociedad.
- * gpn - INI - 9999001141 - 06/11/2009
- * SELECT SINGLE waers spras INTO (c_moneda,c_idioma) "gpn-
- SELECT SINGLE waers INTO c_moneda "gpn+
- * gpn - FIN - 9999001141 - 06/11/2009
- FROM t001
- WHERE bukrs EQ p_bukrs.
- * Buscar Status interno del PEP a partir del Status externo.
- IF p_anular IS INITIAL.
- * FBL
- SELECT estat txt04
- FROM tj30t
- INTO TABLE ti_tj30t
- WHERE stsma EQ c_esquema
- AND spras EQ c_idioma
- AND ( txt04 EQ ce_cerr OR
- txt04 EQ ce_expl OR
- txt04 EQ ce_ctec OR
- txt04 EQ ce_libe ).
- * SELECT ESTAT TXT04 FROM TJ30T INTO (TJ30T-ESTAT,TJ30T-TXT04)
- * WHERE STSMA EQ C_ESQUEMA AND
- * SPRAS EQ C_IDIOMA AND
- * ( TXT04 EQ CE_CERR OR
- * TXT04 EQ CE_EXPL OR
- * TXT04 EQ CE_CTEC OR
- * TXT04 EQ CE_LIBE ).
- * ENDSELECT.
- " Modificado por: Heizenreder Guillemo --------------13.10.2010 15:34:20
- " Se utilizan los fs para el recorrido de las tablas internas.
- " Se reemplazan las ocurrencias de ti_tj30t por <lv_fs_ti_tj30t>
- * LOOP AT ti_tj30t.
- * CASE ti_tj30t-txt04.
- * WHEN ce_cerr. MOVE ti_tj30t-estat TO ci_cerr.
- * WHEN ce_expl. MOVE ti_tj30t-estat TO ci_expl.
- * WHEN ce_ctec. MOVE ti_tj30t-estat TO ci_ctec.
- * WHEN ce_libe. MOVE ti_tj30t-estat TO ci_libe.
- * ENDCASE.
- * ENDLOOP. "ti_tj30t
- LOOP AT ti_tj30t ASSIGNING <lv_fs_ti_tj30t>.
- CASE <lv_fs_ti_tj30t>-txt04.
- WHEN ce_cerr. MOVE <lv_fs_ti_tj30t>-estat TO ci_cerr.
- WHEN ce_expl. MOVE <lv_fs_ti_tj30t>-estat TO ci_expl.
- WHEN ce_ctec. MOVE <lv_fs_ti_tj30t>-estat TO ci_ctec.
- WHEN ce_libe. MOVE <lv_fs_ti_tj30t>-estat TO ci_libe.
- ENDCASE.
- ENDLOOP. "ti_tj30t
- "-----------------------------------------------------------------------
- IF ci_cerr IS INITIAL OR
- ci_expl IS INITIAL OR
- ci_ctec IS INITIAL OR
- ci_libe IS INITIAL.
- MESSAGE e155 WITH ci_cerr ci_expl ci_ctec ci_libe.
- ENDIF.
- ENDIF.
- IF p_anular IS INITIAL.
- REFRESH: ordenes,
- repartos,
- repartos1,
- subnumeros.
- CLEAR: ordenes,
- repartos,
- repartos1,
- subnumeros.
- ENDIF.
- * Inicializar tabla de Instalaciones Nuevas.
- IF p_anular IS INITIAL.
- REFRESH: instalanuevas.
- CLEAR: instalanuevas.
- MOVE: 'EQ' TO instalanuevas-option,
- 'I' TO instalanuevas-sign.
- * fbl
- * SELECT ANLN1 ANLN2 AKTIV
- * FROM ANLA
- * INTO (ANLA-ANLN1, ANLA-ANLN2, ANLA-AKTIV)
- * WHERE BUKRS EQ P_BUKRS AND
- * ANLKL EQ CLASE_ANLUE.
- SELECT anln1 anln2
- INTO TABLE lt_anla
- FROM anla
- WHERE bukrs EQ p_bukrs AND
- anlkl EQ clase_anlue AND
- aktiv EQ d_fecha_ini.
- " Modificado por: Heizenreder Guillemo --------------13.10.2010 16:03:50
- " Se utilizan los fs para el recorrido de las tablas internas.
- " Se Reemplazan las ocurrencias de lt_anla por <lv_fs_lt_anla>.
- * LOOP AT lt_anla.
- * CONCATENATE lt_anla-anln1 lt_anla-anln2
- * INTO traspas SEPARATED BY '-'.
- * CONDENSE traspas NO-GAPS.
- * MOVE traspas(20) TO instalanuevas-low.
- * APPEND instalanuevas.
- * ENDLOOP.
- LOOP AT lt_anla ASSIGNING <lv_fs_lt_anla>.
- CONCATENATE <lv_fs_lt_anla>-anln1 <lv_fs_lt_anla>-anln2
- INTO traspas SEPARATED BY '-'.
- CONDENSE traspas NO-GAPS.
- MOVE traspas(20) TO instalanuevas-low.
- APPEND instalanuevas.
- ENDLOOP.
- "-----------------------------------------------------------------------
- * ENDSELECT.
- ENDIF.
- IF p_anular IS INITIAL.
- * Inicializar tabla de Clases de Movimientos a seleccionar.
- PERFORM carga_clases_movimientos.
- ELSE.
- * Inicializar tabla de Clases de Movimientos de Traspaso.
- REFRESH: movims1.
- CLEAR: movims1.
- MOVE: 'EQ' TO movims1-option,
- 'I' TO movims1-sign.
- movims1-low = c_mareacone.
- APPEND movims1.
- movims1-low = c_mareamede.
- APPEND movims1.
- movims1-low = c_mareanice.
- APPEND movims1.
- movims1-low = c_mareasuce.
- APPEND movims1.
- movims1-low = c_mareasuae.
- APPEND movims1.
- movims1-low = c_mareasuoe.
- APPEND movims1.
- movims1-low = c_mareasude.
- APPEND movims1.
- movims1-low = c_mareasune.
- APPEND movims1.
- ENDIF.
- " Modificado por: Heizenreder Guillemo --------------14.10.2010 11:39:50
- " Desvinculamos los fs
- UNASSIGN <lv_fs_ti_tj30t>.
- UNASSIGN <lv_fs_lt_anla>.
- "-----------------------------------------------------------------------
- ENDFORM. " inicializar_datos
- *---------------------------------------------------------------------*
- * FORM CARGA_CLASES_MOVIMIENTOS *
- *---------------------------------------------------------------------*
- * Carga las clases de movimientos validos a seleccionar de la tabla *
- * ZITR *
- * *
- * -------------------------------------------------------------------*
- * Se incorporan fs para el tratamiento de las tablas internas. *
- *---------------------------------------------------------------------*
- FORM carga_clases_movimientos.
- DATA: BEGIN OF lt_zitr OCCURS 0,
- bwasl LIKE zitr-bwasl,
- ziclase LIKE zitr-ziclase,
- END OF lt_zitr.
- " Modificado por: Heizenreder Guillemo --------------13.10.2010 16:07:02
- " Creamos el fs para referenciar la it_zitr
- FIELD-SYMBOLS <lv_fs_lt_zitr> LIKE LINE OF lt_zitr.
- "-----------------------------------------------------------------------
- REFRESH: movims.
- CLEAR: movims, c_clase_intercalarios, c_clase_traslado.
- MOVE 'CP' TO : movims-option,
- c_clase_intercalarios-option,
- c_clase_traslado-option,
- c_clase_baja-option.
- MOVE 'I' TO : movims-sign,
- c_clase_intercalarios-sign,
- c_clase_traslado-sign,
- c_clase_baja-sign.
- *FBL
- SELECT bwasl ziclase
- INTO TABLE lt_zitr
- FROM zitr.
- " Modificado por: Heizenreder Guillemo --------------14.10.2010 10:55:58
- " Se emplea fs para recorrer la tabla lt_zitr.
- " Se reemplazan todas ls ocurrencias de lt_zitr por <lv_fs_lt_zitr>.
- * LOOP AT lt_zitr.
- ** SELECT * FROM ZITR.
- * CASE lt_zitr-ziclase.
- * WHEN 'B'. "baja
- * c_clase_baja-low = lt_zitr-bwasl.
- * APPEND c_clase_baja.
- * WHEN 'A'. "alta
- * movims-low = lt_zitr-bwasl.
- * APPEND movims.
- * WHEN 'I'. "intercalarios
- * c_clase_intercalarios-low = lt_zitr-bwasl.
- * APPEND c_clase_intercalarios.
- * WHEN 'T'. "traslados
- * c_clase_traslado-low = lt_zitr-bwasl.
- * APPEND c_clase_traslado.
- * ENDCASE.
- * ENDLOOP.
- LOOP AT lt_zitr ASSIGNING <lv_fs_lt_zitr>.
- * SELECT * FROM ZITR.
- CASE <lv_fs_lt_zitr>-ziclase.
- WHEN 'B'. "baja
- c_clase_baja-low = <lv_fs_lt_zitr>-bwasl.
- APPEND c_clase_baja.
- WHEN 'A'. "alta
- movims-low = <lv_fs_lt_zitr>-bwasl.
- APPEND movims.
- WHEN 'I'. "intercalarios
- c_clase_intercalarios-low = <lv_fs_lt_zitr>-bwasl.
- APPEND c_clase_intercalarios.
- WHEN 'T'. "traslados
- c_clase_traslado-low = <lv_fs_lt_zitr>-bwasl.
- APPEND c_clase_traslado.
- ENDCASE.
- ENDLOOP.
- " Desreferenciamos el fs a la tabla lt_zitr.
- UNASSIGN <lv_fs_lt_zitr>.
- "-----------------------------------------------------------------------
- * ENDSELECT.
- ENDFORM. "CARGA_CLASES_MOVIMIENTOS
- " Modificado por: Heizenreder Guillemo --------------14.10.2010 12:38:24
- *---------------------------------------------------------------------*
- * FORM SELECCIONAR_SUBNUMEROS_ORDENES *
- *---------------------------------------------------------------------*
- * ........ *
- *---------------------------------------------------------------------*
- * TODO: *
- * - Se incorporan fs para el tratamiento de las tablas internas. *
- * - Comentarios *
- * - Complejiad: O(n^2) *
- * - FOR ALL ENTRIES debe utilizarse en vez de *
- * LOOP AT ITAB /SELECT/ENDLOOP *
- *---------------------------------------------------------------------*
- "-----------------------------------------------------------------------
- *&---------------------------------------------------------------------*
- *& Form SELECCIONAR_SUBNUMEROS_ORDENES
- *&---------------------------------------------------------------------*
- * text
- *----------------------------------------------------------------------*
- FORM seleccionar_subnumeros_ordenes.
- * ES26766923 - Inicio - 19/04/2010 - PMF 7700002847
- * DATA: BEGIN OF lt_aufk,
- * pspel LIKE aufk-pspel,
- * aufnr LIKE aufk-aufnr,
- * objnr LIKE aufk-objnr,
- * auart LIKE aufk-auart,
- * END OF lt_aufk.
- DATA: BEGIN OF lt_aufk OCCURS 0,
- pspel LIKE aufk-pspel,
- aufnr LIKE aufk-aufnr,
- objnr LIKE aufk-objnr,
- auart LIKE aufk-auart,
- END OF lt_aufk.
- RANGES: r_anln1 FOR cobrb-anln1.
- * ES26766923 - Fin - 19/04/2010 - PMF 7700002847
- DATA: BEGIN OF lt_cobrb OCCURS 0,
- anln1 LIKE cobrb-anln1,
- END OF lt_cobrb.
- DATA: BEGIN OF lt_anla OCCURS 0,
- anln2 LIKE anla-anln2,
- END OF lt_anla.
- " Modificado por: Heizenreder Guillemo --------------13.10.2010 16:27:46
- " Creamos los fs para referencias las tablas:
- " - lt_aufk; lt_anla; tl_pep; peps_seleccionados
- FIELD-SYMBOLS <lv_fs_lt_aufk> LIKE LINE OF lt_aufk.
- FIELD-SYMBOLS <lv_fs_tl_pep> LIKE LINE OF tl_pep.
- FIELD-SYMBOLS <lv_fs_peps_seleccionados> LIKE LINE OF peps_seleccionados.
- FIELD-SYMBOLS <lv_fs_ordenes> LIKE LINE OF ordenes.
- "-----------------------------------------------------------------------
- CLEAR c_usr03.
- * FBL
- ** Seleccionar PEPs de inversión pertenecientes a la sociedad solicitada
- ** que no esten cerrados y traspasados (USR03 <> INITIAL).
- * EXEC SQL PERFORMING COMPROBAR_ESTADO_PEP.
- * SELECT OBJNR, PSPNR, POSID, USR00, ZZTINS, USR03
- * INTO :PEP_OBJNR,
- * :PEP_PSPNR,
- * :PEP_POSID,
- * :PEP_ANLUE,
- * :PEP_ZZTINS,
- * :PEP_USR03
- * FROM PRPS
- * WHERE MANDT = :SY-MANDT AND
- * MIG 47x200 - ES36923012P - 04/05/2004 INI: Según petición de
- * explotación para forzar la lectura por el índice principal y mejorar
- * tiempos de respuesta.
- * PSPNR >= 0 AND
- * MIG 47x200 - ES36923012P - 04/05/2004 FIN.
- * PKOKR = :P_KOKRS AND
- * PBUKR = :P_BUKRS AND
- * ZZINVGAS = :C_INVERSION
- * usr03 = :c_usr03
- * ENDEXEC.
- * ES26766923 - Inicio - 19/04/2010 - PMF 7700002847
- *********************************************************************
- * Optimizacion del codigo para mejorar los tiempo de acceso.
- * Se cambia el SELECT ENDSELECT por un SELECT y luego un LOOP
- * que recorrera los datos obtenidos
- * En los lugares que se utilizaban las variables obtenidas
- * del SELECT ENSELECT se cambiaron por la estructura a la cual se loopea.
- **********************************************************************
- * SELECT pspnr posid objnr usr00 zztins usr03
- * FROM prps
- * INTO (pep_pspnr, pep_posid, pep_objnr, pep_anlue,
- * pep_zztins, pep_usr03)
- * WHERE pspnr >= 0
- * AND pkokr = p_kokrs
- * AND pbukr = p_bukrs
- * AND zzinvgas = c_inversion
- * AND zztins IN s_zztins.
- *
- * PERFORM comprobar_estado_pep.
- * ENDSELECT.
- SELECT pspnr posid objnr usr00 zztins usr03
- FROM prps
- INTO TABLE tl_pep
- WHERE pspnr >= 0
- AND pkokr = p_kokrs
- AND pbukr = p_bukrs
- AND zzinvgas = c_inversion
- AND zztins IN s_zztins.
- " Modificado por: Heizenreder Guillemo --------------14.10.2010 13:02:38
- " Se utiliza fs en vez de wa para recorrer la tabla tl_pep.
- " Se reemplazan todas las ocurrencias de wl_pep por <lv_fs_tl_pep>.
- " Se emplea el fs local como parámetro para comprobar_estado_pep.
- * LOOP AT tl_pep INTO wl_pep.
- * PERFORM comprobar_estado_pep.
- * ENDLOOP.
- LOOP AT tl_pep ASSIGNING <lv_fs_tl_pep>.
- PERFORM comprobar_estado_pep USING <lv_fs_tl_pep>.
- ENDLOOP.
- " Desreferenciamos el fs que apunta a la tabla tl_pep.
- UNASSIGN <lv_fs_tl_pep>.
- "-----------------------------------------------------------------------
- * ES26766923 - Fin - 19/04/2010 - PMF 7700002847
- * Borra de los peps preseleccionados los que esten en 'LIBE' y no haya
- * otro pep apuntando a la misma instalación que esté en otro status
- PERFORM borra_peps_libe.
- * ES26766923 - Inicio - 19/04/2010 - PMF 7700002847
- * LOOP AT peps_seleccionados.
- * SELECT aufnr objnr auart FROM aufk
- * INTO (lt_aufk-aufnr, lt_aufk-objnr, lt_aufk-auart)
- * WHERE pspel = peps_seleccionados-pspnr.
- ** Guardar el número de la orden y el número interno del elemento PEP
- * ordenes-estado = peps_seleccionados-estado.
- * ordenes-anlue = peps_seleccionados-anlue.
- * ordenes-aufnr = lt_aufk-aufnr.
- * ordenes-objnr = lt_aufk-objnr.
- * ordenes-pspnr = peps_seleccionados-pspnr.
- * ordenes-posid = peps_seleccionados-posid.
- * IF lt_aufk-auart = c_clase_comun.
- * ordenes-orden_comun = 'X'.
- * ELSE.
- * ordenes-orden_comun = ' '.
- * ENDIF.
- * APPEND ordenes.
- ** PERFORM CARGAR_TABLA_ELEMENTOS.
- * ENDSELECT. "lt_aufk
- ** PERFORM CARGAR_TABLA_ORDENES.
- * ENDLOOP.
- * FBL
- " Modificado por: Heizenreder Guillemo --------------14.10.2010 15:38:43
- " Se utilizan fs para gestionar el recorrido de las tablas.
- " Se reemplazan todas las ocurrencias de:
- " - peps_seleccionados por <lv_fs_peps_seleccionados>.
- " - lt_aufk por <lv_fs_lt_aufk>.
- * IF NOT peps_seleccionados[] IS INITIAL.
- * DESCRIBE TABLE peps_seleccionados LINES vl_tot_lines.
- * LOOP AT peps_seleccionados.
- * PERFORM indicador_progreso USING sy-tabix vl_tot_lines TEXT-028
- * peps_seleccionados-pspnr ' ' .
- * REFRESH lt_aufk.
- * SELECT pspel aufnr objnr auart
- * FROM aufk
- * INTO TABLE lt_aufk
- * WHERE pspel = peps_seleccionados-pspnr.
- *
- * CLEAR lt_aufk.
- * LOOP AT lt_aufk.
- * ordenes-estado = peps_seleccionados-estado.
- * ordenes-anlue = peps_seleccionados-anlue.
- * ordenes-aufnr = lt_aufk-aufnr.
- * ordenes-objnr = lt_aufk-objnr.
- * ordenes-pspnr = peps_seleccionados-pspnr.
- * ordenes-posid = peps_seleccionados-posid.
- * IF lt_aufk-auart = c_clase_comun.
- * ordenes-orden_comun = 'X'.
- * ELSE.
- * ordenes-orden_comun = ' '.
- * ENDIF.
- * APPEND ordenes.
- * CLEAR ordenes.
- * CLEAR lt_aufk.
- * ENDLOOP.
- * ENDLOOP.
- * ENDIF.
- IF NOT peps_seleccionados[] IS INITIAL.
- DESCRIBE TABLE peps_seleccionados LINES vl_tot_lines.
- LOOP AT peps_seleccionados ASSIGNING <lv_fs_peps_seleccionados>.
- PERFORM indicador_progreso USING sy-tabix vl_tot_lines text-028
- <lv_fs_peps_seleccionados>-pspnr ' ' .
- REFRESH lt_aufk.
- SELECT pspel aufnr objnr auart
- FROM aufk
- INTO TABLE lt_aufk
- WHERE pspel = <lv_fs_peps_seleccionados>-pspnr.
- CLEAR lt_aufk. " No sirve ... antes del select se hace un refresh
- LOOP AT lt_aufk ASSIGNING <lv_fs_lt_aufk>.
- ordenes-estado = <lv_fs_peps_seleccionados>-estado.
- ordenes-anlue = <lv_fs_peps_seleccionados>-anlue.
- ordenes-aufnr = <lv_fs_lt_aufk>-aufnr.
- ordenes-objnr = <lv_fs_lt_aufk>-objnr.
- ordenes-pspnr = <lv_fs_peps_seleccionados>-pspnr.
- ordenes-posid = <lv_fs_peps_seleccionados>-posid.
- IF <lv_fs_lt_aufk>-auart = c_clase_comun.
- ordenes-orden_comun = 'X'.
- ELSE.
- ordenes-orden_comun = ' '.
- ENDIF.
- APPEND ordenes.
- CLEAR ordenes.
- "CLEAR lt_aufk.
- ENDLOOP.
- ENDLOOP.
- ENDIF.
- " Desreferenciamos los fs empleados
- UNASSIGN <lv_fs_lt_aufk>.
- UNASSIGN <lv_fs_peps_seleccionados>.
- "-----------------------------------------------------------------------
- * ES26766923 - Fin - 19/04/2010 - PMF 7700002847
- * Obtener los subnúmeros
- IF NOT ordenes[] IS INITIAL.
- * ES26766923 - Inicio - 19/04/2010 - PMF 7700002847
- * SELECT anln1 anln2
- * FROM zv_cobrb_anla INTO subnumeros
- * FOR ALL ENTRIES IN ordenes
- * WHERE bukrs = p_bukrs
- * AND objnr = ordenes-objnr.
- * COLLECT subnumeros.
- * ENDSELECT.
- * SELECT anln1 anln2
- * FROM zv_cobrb_anla INTO TABLE subnumeros
- * FOR ALL ENTRIES IN ordenes
- * WHERE bukrs = p_bukrs
- * AND objnr = ordenes-objnr.
- r_anln1-sign = 'E'.
- r_anln1-option = 'CP'.
- r_anln1-low = '2*'.
- APPEND r_anln1.
- r_anln1-sign = 'E'.
- r_anln1-option = 'CP'.
- r_anln1-low = '4*'.
- APPEND r_anln1.
- " Modificado por: Heizenreder Guillemo --------------14.10.2010 16:01:33
- " Se utilizan fs para gestionar el recorrido de las ordenes.
- " Se reemplazan todas las ocurrencias de:
- " - ordenes por <lv_fs_ordenes>.
- * LOOP AT ordenes.
- * SELECT anln1 anln2
- * FROM cobrb
- * APPENDING TABLE subnumeros
- * WHERE objnr = ordenes-objnr.
- * ENDLOOP.
- LOOP AT ordenes ASSIGNING <lv_fs_ordenes>.
- SELECT anln1 anln2
- FROM cobrb
- APPENDING TABLE subnumeros
- WHERE objnr = <lv_fs_ordenes>-objnr.
- ENDLOOP.
- " Desreferenciamos el fs
- UNASSIGN <lv_fs_ordenes>.
- "-----------------------------------------------------------------------
- DELETE subnumeros WHERE anln1 IN r_anln1.
- DELETE ADJACENT DUPLICATES FROM subnumeros.
- * ES26766923 - Fin - 19/04/2010 - PMF 7700002847
- ENDIF.
- ENDFORM. " seleccionar_subnumeros_ordenes
- *----------------------------------------------------------------------*
- * FORM BORRA_PEPS_LIBE *
- *----------------------------------------------------------------------*
- * Borra de los peps preseleccionados los que esten en 'LIBE' y no haya *
- * otro pep apuntando a la misma instalación que esté en otro status *
- *----------------------------------------------------------------------*
- FORM borra_peps_libe.
- DATA: d_indice LIKE sy-tabix.
- " Modificado por: Heizenreder Guillemo --------------14.10.2010 15:24:11
- " Creamos dos fs para gestionar el control de peps_seleccionados.
- FIELD-SYMBOLS <lv_fs_peps_sel_uno> LIKE LINE OF peps_seleccionados.
- FIELD-SYMBOLS <lv_fs_peps_sel_dos> LIKE LINE OF peps_seleccionados.
- "-----------------------------------------------------------------------
- " Modificado por: Heizenreder Guillemo --------------14.10.2010 15:29:16
- " Se utilizan los fs en vez de la cabecera de la tabla peps_seleccionados.
- " Se reemplazan todas las ocurrencias de peps_seleccionados por:
- " - <lv_fs_peps_sel_uno> : loop externo.
- " - <lv_fs_peps_sel_dos> : loop interno.
- ** gpn - INI - 9999001141 - 06/11/2009
- ** LOOP AT peps_seleccionados WHERE estado = 'LIBE'. "gpn-
- *
- * LOOP AT peps_seleccionados WHERE estado = TEXT-t04. "gpn+
- * d_indice = sy-tabix.
- * LOOP AT peps_seleccionados WHERE anlue = peps_seleccionados-anlue
- * AND estado NE TEXT-t04. "gpn+
- ** AND estado NE 'LIBE'. "gpn-
- ** gpn - FIN - 9999001141 - 06/11/2009
- * EXIT.
- * ENDLOOP.
- * IF sy-subrc NE 0.
- * DELETE peps_seleccionados INDEX d_indice.
- * ENDIF.
- * ENDLOOP.
- * gpn - INI - 9999001141 - 06/11/2009
- * LOOP AT peps_seleccionados WHERE estado = 'LIBE'. "gpn-
- LOOP AT peps_seleccionados ASSIGNING <lv_fs_peps_sel_uno>
- WHERE estado = text-t04. "gpn+
- d_indice = sy-tabix.
- LOOP AT peps_seleccionados ASSIGNING <lv_fs_peps_sel_dos>
- WHERE anlue = <lv_fs_peps_sel_uno>-anlue
- AND estado NE text-t04. "gpn+
- * AND estado NE 'LIBE'. "gpn-
- * gpn - FIN - 9999001141 - 06/11/2009
- EXIT.
- ENDLOOP.
- IF sy-subrc NE 0.
- DELETE peps_seleccionados INDEX d_indice.
- ENDIF.
- ENDLOOP.
- " Desreferenciamos los fs a peps_seleccionados.
- UNASSIGN <lv_fs_peps_sel_uno>.
- UNASSIGN <lv_fs_peps_sel_dos>.
- "-----------------------------------------------------------------------
- ENDFORM. "BORRA_PEPS_LIBE
- " Modificado por: Heizenreder Guillemo --------------14.10.2010 10:45:42
- *---------------------------------------------------------------------*
- * FORM COMPROBAR_ESTADO_PEP *
- *---------------------------------------------------------------------*
- * Verifica que exista algún estado válido con fecha de modificación *
- * del mismo mes que el traspaso *
- * *
- * ........ *
- * ........ *
- * TODO: *
- * - No utilizar wa sino fs. *
- * - Incorporar parámetro fs para emplearlo en vez de wa *
- * - Reemplazar todas las ocurrencias wl_pep por <lv_fs_tl_pep> *
- * - Asignarle tipo al parámetro fs -> mejora performance *
- * - Comentarios *
- *---------------------------------------------------------------------*
- * FORM comprobar_estado_pep.
- "----------------------------------------------------------------------
- *&---------------------------------------------------------------------*
- *& Form COMPROBAR_ESTADO_PEP
- *&---------------------------------------------------------------------*
- * text
- *----------------------------------------------------------------------*
- * -->P_FS_PEP text
- *----------------------------------------------------------------------*
- FORM comprobar_estado_pep USING p_fs_pep LIKE LINE OF tl_pep.
- DATA: pep_usr03_ok LIKE sy-datum,
- v_udate LIKE sy-datum.
- " Modificado por: Heizenreder Guillemo --------------14.10.2010 14:24:36
- " Se emplea fs en vez de wa.
- " Creamos el fs y asignamos al pasado por parámetro.
- FIELD-SYMBOLS <lv_fs_tl_pep> LIKE LINE OF tl_pep.
- ASSIGN p_fs_pep TO <lv_fs_tl_pep>.
- "-----------------------------------------------------------------------
- " Modificado por: Heizenreder Guillemo --------------14.10.2010 14:36:06
- " Reemplazo wl_pep por <lv_fs_tl_pep>.
- * MOVE wl_pep-anlue TO inst_a_convertir.
- MOVE <lv_fs_tl_pep>-anlue TO inst_a_convertir.
- "-----------------------------------------------------------------------
- PERFORM convertir_sin_ceros.
- CHECK inst_a_convertir IN s_anlue.
- * Calculo del estado del PEP
- " Modificado por: Heizenreder Guillemo --------------14.10.2010 14:49:23
- " Reemplazo wl_pep por <lv_fs_tl_pep>.
- * PERFORM estadopep USING wl_pep-objnr ordenes-estado v_udate.
- PERFORM estadopep USING <lv_fs_tl_pep>-objnr ordenes-estado v_udate.
- "-----------------------------------------------------------------------
- " Modificado por: Heizenreder Guillemo --------------14.10.2010 15:09:36
- " Reemplazo todas las ocurrencias de wl_pep por <lv_fs_tl_pep>.
- * CONCATENATE wl_pep-usr03+6(4)
- * wl_pep-usr03+3(2)
- * wl_pep-usr03(2) INTO pep_usr03_ok.
- *
- ** write:/ pep_posid, ordenes-estado, 'F.St', v_udate dd/mm/yy
- ** , 'F.Tr',
- ** pep_usr03_ok dd/mm/yy.
- *
- * IF ( ordenes-estado EQ ce_cerr AND v_udate >= pep_usr03_ok ) OR
- * ( ordenes-estado EQ ce_cerr AND wl_pep-usr03 IS INITIAL ) OR
- * ordenes-estado EQ ce_ctec OR
- * ordenes-estado EQ ce_expl OR
- * wl_pep-anlue IN instalanuevas.
- *
- **write: 'Lo toma'.
- **if pep_anlue in instalanuevas.
- **write: 'Instalacion nueva'.
- **endif.
- *
- * MOVE wl_pep-objnr TO peps_seleccionados-objnr.
- * MOVE wl_pep-pspnr TO peps_seleccionados-pspnr.
- * MOVE wl_pep-posid TO peps_seleccionados-posid.
- * MOVE wl_pep-anlue TO peps_seleccionados-anlue.
- * MOVE ordenes-estado TO peps_seleccionados-estado.
- * APPEND peps_seleccionados.
- * ELSE.
- **write: 'No lo toma'.
- * ENDIF.
- * ENDIF.
- IF NOT ordenes-estado IS INITIAL.
- CONCATENATE <lv_fs_tl_pep>-usr03+6(4)
- <lv_fs_tl_pep>-usr03+3(2)
- <lv_fs_tl_pep>-usr03(2) INTO pep_usr03_ok.
- * write:/ pep_posid, ordenes-estado, 'F.St', v_udate dd/mm/yy
- * , 'F.Tr',
- * pep_usr03_ok dd/mm/yy.
- IF ( ordenes-estado EQ ce_cerr AND v_udate >= pep_usr03_ok ) OR
- ( ordenes-estado EQ ce_cerr AND <lv_fs_tl_pep>-usr03 IS INITIAL ) OR
- ordenes-estado EQ ce_ctec OR
- ordenes-estado EQ ce_expl OR
- <lv_fs_tl_pep>-anlue IN instalanuevas.
- *write: 'Lo toma'.
- *if pep_anlue in instalanuevas.
- *write: 'Instalacion nueva'.
- *endif.
- MOVE <lv_fs_tl_pep>-objnr TO peps_seleccionados-objnr.
- MOVE <lv_fs_tl_pep>-pspnr TO peps_seleccionados-pspnr.
- MOVE <lv_fs_tl_pep>-posid TO peps_seleccionados-posid.
- MOVE <lv_fs_tl_pep>-anlue TO peps_seleccionados-anlue.
- MOVE ordenes-estado TO peps_seleccionados-estado.
- APPEND peps_seleccionados.
- ELSE.
- *write: 'No lo toma'.
- ENDIF.
- ENDIF.
- "-----------------------------------------------------------------------
- " Modificado por: Heizenreder Guillemo --------------14.10.2010 15:12:37
- " Desreferenciamos el fs.
- UNASSIGN <lv_fs_tl_pep>.
- "-----------------------------------------------------------------------
- ENDFORM. " comprobar_estado_pep
- *-----------------------------------------------------------------------
- * FORM CONVERTIR_A_CEROS
- *-----------------------------------------------------------------------
- FORM convertir_sin_ceros.
- DATA: longi TYPE i.
- CLEAR: pep_anlue2.
- SEARCH inst_a_convertir FOR '-'.
- IF sy-subrc = 0.
- longi = sy-fdpos + 1.
- MOVE inst_a_convertir+longi TO pep_anlue2.
- CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
- EXPORTING
- input = pep_anlue2
- IMPORTING
- output = pep_anlue2
- EXCEPTIONS
- OTHERS = 1.
- longi = sy-fdpos + 1.
- inst_a_convertir = inst_a_convertir(longi).
- inst_a_convertir+longi = pep_anlue2.
- ELSE.
- inst_a_convertir = pep_anlue.
- ENDIF.
- ENDFORM. " convertir_sin_ceros
- *---------------------------------------------------------------------*
- * FORM CONVERTIR_CON_CEROS *
- *---------------------------------------------------------------------*
- * ........ *
- *---------------------------------------------------------------------*
- FORM convertir_con_ceros.
- DATA: longi TYPE i.
- CLEAR: pep_anlue2.
- SEARCH inst_a_convertir FOR '-'.
- IF sy-subrc = 0.
- longi = sy-fdpos + 1.
- MOVE inst_a_convertir+longi TO pep_anlue2.
- CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
- EXPORTING
- input = pep_anlue2
- IMPORTING
- output = pep_anlue2
- EXCEPTIONS
- OTHERS = 1.
- longi = sy-fdpos + 1.
- pep_anlue_con_ceros = inst_a_convertir(longi).
- pep_anlue_con_ceros+longi = pep_anlue2.
- ELSE.
- pep_anlue_con_ceros = pep_anlue.
- ENDIF.
- ENDFORM. " convertir_con_ceros
- *----------------------------------------------------------------------*
- * FORM CARGAR_TABLA_ORDENES *
- *----------------------------------------------------------------------*
- FORM cargar_tabla_ordenes.
- * FBL
- DATA: BEGIN OF lt_aufk OCCURS 0,
- aufnr LIKE aufk-aufnr,
- objnr LIKE aufk-objnr,
- auart LIKE aufk-auart,
- END OF lt_aufk.
- DATA: BEGIN OF lt_cobrb OCCURS 0,
- objnr LIKE cobrb-objnr,
- anln1 LIKE cobrb-anln1,
- END OF lt_cobrb.
- DATA: BEGIN OF lt_anla OCCURS 0,
- anln1 LIKE anla-anln1,
- anln2 LIKE anla-anln2,
- END OF lt_anla.
- * Buscar las órdenes del pep que se está tratando
- * EXEC SQL PERFORMING CARGAR_TABLA_ELEMENTOS.
- * SELECT AUFNR, OBJNR, AUART
- * INTO :O_AUFNR,
- * :O_OBJNR,
- * :O_AUART
- * FROM AUFK
- * WHERE MANDT = :SY-MANDT AND
- * PSPEL = :PEP_PSPNR
- * ENDEXEC.
- SELECT aufnr objnr auart
- INTO CORRESPONDING FIELDS OF TABLE lt_aufk
- FROM aufk
- WHERE pspel = pep_pspnr.
- SELECT objnr anln1
- INTO CORRESPONDING FIELDS OF TABLE lt_cobrb
- FROM cobrb
- FOR ALL ENTRIES IN lt_aufk
- WHERE objnr = lt_aufk-objnr AND
- ( anln1 LIKE c_curso1 OR
- anln1 LIKE c_curso2 ).
- SELECT anln1 anln2
- INTO CORRESPONDING FIELDS OF TABLE lt_anla
- FROM anla
- FOR ALL ENTRIES IN lt_cobrb
- WHERE bukrs = p_bukrs
- AND anln1 = lt_cobrb-anln1.
- LOOP AT lt_aufk.
- o_aufnr = lt_aufk-aufnr.
- o_objnr = lt_aufk-objnr.
- o_auart = lt_aufk-auart.
- * Guardar el número de la orden y el número interno del elemento PEP
- ordenes-anlue = pep_anlue.
- ordenes-aufnr = o_aufnr.
- ordenes-pspnr = pep_pspnr.
- ordenes-posid = pep_posid.
- ordenes-orden_comun = ' '.
- IF o_auart = c_clase_comun.
- ordenes-orden_comun = 'X'.
- ENDIF.
- APPEND ordenes.
- LOOP AT lt_cobrb WHERE objnr = lt_aufk-objnr.
- subnumeros-anln1 = lt_cobrb-anln1.
- LOOP AT lt_anla WHERE anln1 = lt_cobrb-anln1.
- subnumeros-anln2 = lt_anla-anln2.
- COLLECT subnumeros.
- ENDLOOP.
- ENDLOOP.
- * PERFORM CARGAR_TABLA_ELEMENTOS.
- ENDLOOP. "lt_aufk
- ENDFORM. " cargar_tabla_ordenes
- *----------------------------------------------------------------------*
- * FORM CARGAR_TABLA_ELEMENTOS *
- *----------------------------------------------------------------------*
- * Guardar los elementos en curso donde ha liquidado la orden *
- *----------------------------------------------------------------------*
- FORM cargar_tabla_elementos.
- * Guardar el número de la orden y el número interno del elemento PEP
- ordenes-anlue = pep_anlue.
- ordenes-aufnr = o_aufnr.
- ordenes-pspnr = pep_pspnr.
- ordenes-posid = pep_posid.
- ordenes-orden_comun = ' '.
- IF o_auart = c_clase_comun.
- ordenes-orden_comun = 'X'.
- ENDIF.
- APPEND ordenes.
- * Seleccionar los elementos en curso donde ha liquidado la orden
- SELECT anln1
- FROM cobrb
- INTO subnumeros-anln1
- WHERE objnr = o_objnr AND
- * desactivados a fecha 26.11.1998( para que funcione!!)
- * ersja <> 0 and
- * erspe <> 0 and
- ( anln1 LIKE c_curso1 OR
- anln1 LIKE c_curso2 ).
- SELECT anln2 FROM anla INTO subnumeros-anln2
- WHERE bukrs = p_bukrs
- AND anln1 = subnumeros-anln1.
- COLLECT subnumeros.
- ENDSELECT.
- ENDSELECT.
- * se probó en enero-1999 de buscar en la bseg los elemementos
- * que hayan tenido imputación a la orden tratada de la bseg
- * pero fue muy lento
- * por lo que se optó a coger todos los subnumeros de la anla de los
- * elementos que estén en la norma
- * perform carga_elementos_bseg.
- ENDFORM. " CARGAR_TABLA_ELEMENTOS.
- *---------------------------------------------------------------------*
- * FORM CARGA_ELEMENTOS_BSEG *
- *---------------------------------------------------------------------*
- * ........ *
- *---------------------------------------------------------------------*
- FORM carga_elementos_bseg.
- SELECT anln1 anln2
- FROM bseg
- INTO (subnumeros-anln1, subnumeros-anln2)
- WHERE bukrs EQ p_bukrs AND
- gjahr EQ '1998' AND
- ( bschl = '70' OR bschl = '75' ) AND
- bzdat <= p_fecha AND
- aufnr EQ ordenes-aufnr.
- COLLECT subnumeros.
- ENDSELECT.
- ENDFORM. "CARGA_ELEMENTOS_BSEG
- *----------------------------------------------------------------------*
- * FORM TRATAR_SUBNUMEROS *
- *----------------------------------------------------------------------*
- FORM tratar_subnumeros.
- " Modificado por: Heizenreder Guillemo --------------14.10.2010 16:11:26
- " Creamos fs para gestionar el control de la tabla subnumeros.
- FIELD-SYMBOLS <lv_fs_subnumeros> LIKE LINE OF subnumeros.
- "-----------------------------------------------------------------------
- SORT ordenes BY aufnr.
- DESCRIBE TABLE subnumeros LINES vl_tot_lines.
- " Modificado por: Heizenreder Guillemo --------------14.10.2010 16:12:44
- " Se emplea fs en cabecera para realizar el recorrido de subnumeros.
- " Se reemplazan todas las ocurrencias de subnumeros por <lv_fs_subnumeros>.
- * LOOP AT subnumeros.
- * PERFORM indicador_progreso USING sy-tabix vl_tot_lines TEXT-054
- * subnumeros-anln1
- * subnumeros-anln2 .
- * PERFORM seleccionar_movimientos.
- * ENDLOOP.
- LOOP AT subnumeros ASSIGNING <lv_fs_subnumeros> .
- PERFORM indicador_progreso USING sy-tabix vl_tot_lines text-054
- <lv_fs_subnumeros>-anln1
- <lv_fs_subnumeros>-anln2 .
- PERFORM seleccionar_movimientos USING <lv_fs_subnumeros>.
- ENDLOOP.
- " Desreferenciamos el fs apuntado a subnumeros.
- UNASSIGN <lv_fs_subnumeros>.
- "-----------------------------------------------------------------------
- ENDFORM. " tratar_subnumeros
- *----------------------------------------------------------------------*
- * FORM SELECCIONAR_MOVIMIENTOS *
- *----------------------------------------------------------------------*
- * Movimientos a traspasar pertenecientes al subnúmero *
- *----------------------------------------------------------------------*
- " Modificado por: Heizenreder Guillemo --------------14.10.2010 16:18:17
- " Se incorpora un fs como parámetro.
- *FORM seleccionar_movimientos.
- FORM seleccionar_movimientos USING p_fs LIKE LINE OF subnumeros.
- "-----------------------------------------------------------------------
- REFRESH parciales.
- CLEAR: parciales,
- total_mov.
- " Modificado por: Heizenreder Guillemo --------------14.10.2010 16:11:26
- " Creamos fs para gestionar el control de la tabla subnumeros y tl_anep.
- " Asignamos el fs local al pasado por parámetro.
- FIELD-SYMBOLS <lv_fs_tl_anep> LIKE LINE OF tl_anep.
- FIELD-SYMBOLS <lv_fs_subnumeros> LIKE LINE OF subnumeros.
- ASSIGN p_fs TO <lv_fs_subnumeros>.
- "-----------------------------------------------------------------------
- * ES26766923 - Inicio - 19/04/2010 - PMF 7700002847
- * SELECT anbtr gjahr lnran bwasl afabe anln1 anln2 bzdat belnr buzei
- * INTO CORRESPONDING FIELDS OF anep
- * FROM anep
- * WHERE bukrs = p_bukrs AND
- * anln1 = subnumeros-anln1 AND
- * anln2 = subnumeros-anln2 AND
- * afabe <> c_areafis AND
- * anbtr <> 0 AND
- * bzdat <= p_fecha " AND
- ** BELNR >= '0100003807'
- * ORDER BY afabe bzdat gjahr lnran.
- * ON CHANGE OF anep-afabe.
- * REFRESH parciales.
- * CLEAR: parciales,
- * total_mov.
- * ENDON.
- * PERFORM tratar_movimiento.
- * ENDSELECT.
- * Se cambia el SELECT ENDSELECT por un SELECT y luego un LOOP
- * por lo que en todos los lugares en donde se hacia referencia
- * a la cabecera de la table ANEP dentro del perform TRATAR_MOVIMIENTOS
- * se cambiara por la extructura en la cual se loopea la tabla
- " Modificado por: Heizenreder Guillemo --------------14.10.2010 16:22:34
- " Se emplea el fs pasado por parámetro en vez de la cabecera de subnumeros.
- " Se reemplazan todas las ocurrencias de subnumeros por:
- " - <lv_fs_subnumeros>
- SELECT anbtr gjahr lnran bwasl afabe anln1 anln2 bzdat belnr buzei
- FROM anep
- INTO CORRESPONDING FIELDS OF TABLE tl_anep
- WHERE bukrs = p_bukrs
- AND anln1 = <lv_fs_subnumeros>-anln1 AND
- anln2 = <lv_fs_subnumeros>-anln2.
- "-----------------------------------------------------------------------
- DELETE tl_anep WHERE
- NOT ( afabe <> c_areafis AND
- anbtr <> 0 AND
- bzdat <= p_fecha ).
- SORT tl_anep BY afabe bzdat gjahr lnran.
- CLEAR wl_anep.
- " Modificado por: Heizenreder Guillemo --------------14.10.2010 16:32:34
- " Se emplea el fs para gestionar el recorrido de la tabla anep.
- " Se reemplazan todas las ocurrencias de wl_anep por:
- " - <lv_fs_tl_anep>
- * LOOP AT tl_anep INTO wl_anep.
- * ON CHANGE OF wl_anep-afabe.
- * REFRESH parciales.
- * CLEAR: parciales,
- * total_mov.
- * ENDON.
- * PERFORM tratar_movimiento.
- * CLEAR: wl_anep.
- * ENDLOOP.
- LOOP AT tl_anep ASSIGNING <lv_fs_tl_anep>.
- ON CHANGE OF <lv_fs_tl_anep>-afabe.
- REFRESH parciales.
- CLEAR: parciales,
- total_mov.
- ENDON.
- PERFORM tratar_movimiento USING <lv_fs_tl_anep>.
- "CLEAR: wl_anep.
- ENDLOOP.
- " Desreferenciamos el fs
- UNASSIGN <lv_fs_tl_anep>.
- * ES26766923 - Fin - 19/04/2010 - PMF 7700002847
- "-----------------------------------------------------------------------
- ENDFORM. " SELECCIONAR_MOVIMIENTOS
- *----------------------------------------------------------------------*
- * FORM TRATAR_MOVIMIENTO *
- * *
- * ........ *
- * ........ *
- * TODO: *
- * - No utilizar wa sino fs. *
- * - Incorporar parámetro fs para emplearlo en vez de wa *
- * - Reemplazar todas las ocurrencias wl_pep por <lv_fs_tl_pep> *
- * - Asignarle tipo al parámetro fs -> mejora performance *
- * - Comentarios *
- *----------------------------------------------------------------------*
- FORM tratar_movimiento USING p_fs LIKE LINE OF tl_anep.
- " Modificado por: Heizenreder Guillemo --------------14.10.2010 16:11:26
- " Creamos fs para gestionar el control de la tabla tl_anep.
- " Asignamos el fs local al pasado por parámetro.
- FIELD-SYMBOLS <lv_fs_tl_anep> LIKE LINE OF tl_anep.
- ASSIGN p_fs TO <lv_fs_tl_anep>.
- "-----------------------------------------------------------------------
- " Modificado por: Heizenreder Guillemo --------------18.10.2010 10:03:39
- " Se utiliza fs en vez de wa.
- " Se reemplazan todas las ocurrencias de wl_anep por <lv_fs_til_anep>
- ** Si es un movimiento de liquidación o de intercalarios
- * IF wl_anep-bwasl IN movims OR wl_anep-bwasl IN c_clase_intercalarios.
- * PERFORM buscar_orden.
- *
- * total_mov = total_mov + wl_anep-anbtr.
- ** Si la orden está en la tabla ordenes guardar los datos del movim.
- * IF NOT bseg-aufnr IS INITIAL.
- * READ TABLE ordenes WITH KEY aufnr = bseg-aufnr BINARY SEARCH.
- * IF sy-subrc = 0.
- * MOVE-CORRESPONDING: wl_anep TO movimientos,
- * ordenes TO movimientos,
- * movimientos TO totpep.
- * COLLECT totpep.
- *
- ** Si el movimiento aun no ha sido traspasado
- * IF anek-auglz IS INITIAL OR anek-auglz = space.
- * IF ordenes-estado NE ce_libe.
- * movimientos-cantidad = wl_anep-anbtr.
- * movimientos-traspasar = 'X'.
- * ELSE.
- * movimientos-cantidad = 0.
- * movimientos-traspasar = ' '.
- * ENDIF.
- * APPEND movimientos.
- * MOVE-CORRESPONDING ordenes TO parciales.
- * parciales-cantidad = wl_anep-anbtr.
- * COLLECT parciales.
- * ENDIF.
- *
- ** Reparto de Orden Común proporc. a la Inv. Material
- ** + Mano de O. Propia
- * PERFORM guarda_inversion_material.
- * ENDIF.
- * ENDIF.
- *
- ** Si es un movimiento de baja o de traspaso
- * ELSEIF ( wl_anep-bwasl IN c_clase_baja OR
- * wl_anep-bwasl IN c_clase_traslado ).
- *
- ** Si hay movimientos anteriores a traspasar
- * MOVE-CORRESPONDING: wl_anep TO movimientos.
- * LOOP AT parciales.
- * IF parciales-cantidad NE 0 AND total_mov NE 0.
- * READ TABLE ordenes WITH KEY aufnr = parciales-aufnr
- * BINARY SEARCH.
- * IF sy-subrc <> 0.
- * WRITE: / text-053.
- * ENDIF.
- ** move-corresponding parciales to movimientos.
- * MOVE-CORRESPONDING ordenes TO movimientos.
- *
- * IF ordenes-estado <> ce_libe.
- * movimientos-traspasar = 'X'.
- * movimientos-cantidad = wl_anep-anbtr * parciales-cantidad
- * / total_mov.
- * ELSE.
- * movimientos-traspasar = ' '.
- * movimientos-cantidad = 0.
- * ENDIF.
- * MOVE-CORRESPONDING movimientos TO totpep.
- * totpep-anbtr = movimientos-cantidad.
- * COLLECT totpep.
- * APPEND movimientos.
- *
- ** Reparto de Orden Común proporc. a la Inv. Material
- ** + Mano de O. Propia
- ** Guarda lo que se ha liquidado de inversion material
- ** (naturaleza 1 y 2 del area contable) de ordenes no comunes
- * PERFORM guarda_inversion_material.
- * ENDIF.
- * ENDLOOP.
- * ENDIF.
- * Si es un movimiento de liquidación o de intercalarios
- IF <lv_fs_tl_anep>-bwasl IN movims OR <lv_fs_tl_anep>-bwasl IN c_clase_intercalarios.
- PERFORM buscar_orden.
- total_mov = total_mov + <lv_fs_tl_anep>-anbtr.
- * Si la orden está en la tabla ordenes guardar los datos del movim.
- IF NOT bseg-aufnr IS INITIAL.
- READ TABLE ordenes WITH KEY aufnr = bseg-aufnr BINARY SEARCH.
- IF sy-subrc = 0.
- MOVE-CORRESPONDING: <lv_fs_tl_anep> TO movimientos,
- ordenes TO movimientos,
- movimientos TO totpep.
- COLLECT totpep.
- * Si el movimiento aun no ha sido traspasado
- IF anek-auglz IS INITIAL OR anek-auglz = space.
- IF ordenes-estado NE ce_libe.
- movimientos-cantidad = <lv_fs_tl_anep>-anbtr.
- movimientos-traspasar = 'X'.
- ELSE.
- movimientos-cantidad = 0.
- movimientos-traspasar = ' '.
- ENDIF.
- APPEND movimientos.
- MOVE-CORRESPONDING ordenes TO parciales.
- parciales-cantidad = <lv_fs_tl_anep>-anbtr.
- COLLECT parciales.
- ENDIF.
- * Reparto de Orden Común proporc. a la Inv. Material
- * + Mano de O. Propia
- PERFORM guarda_inversion_material.
- ENDIF.
- ENDIF.
- * Si es un movimiento de baja o de traspaso
- ELSEIF ( <lv_fs_tl_anep>-bwasl IN c_clase_baja OR
- <lv_fs_tl_anep>-bwasl IN c_clase_traslado ).
- * Si hay movimientos anteriores a traspasar
- MOVE-CORRESPONDING: <lv_fs_tl_anep> TO movimientos.
- LOOP AT parciales.
- IF parciales-cantidad NE 0 AND total_mov NE 0.
- READ TABLE ordenes WITH KEY aufnr = parciales-aufnr
- BINARY SEARCH.
- IF sy-subrc <> 0.
- WRITE: / text-053.
- ENDIF.
- * move-corresponding parciales to movimientos.
- MOVE-CORRESPONDING ordenes TO movimientos.
- IF ordenes-estado <> ce_libe.
- movimientos-traspasar = 'X'.
- movimientos-cantidad = <lv_fs_tl_anep>-anbtr * parciales-cantidad
- / total_mov.
- ELSE.
- movimientos-traspasar = ' '.
- movimientos-cantidad = 0.
- ENDIF.
- MOVE-CORRESPONDING movimientos TO totpep.
- totpep-anbtr = movimientos-cantidad.
- COLLECT totpep.
- APPEND movimientos.
- * Reparto de Orden Común proporc. a la Inv. Material
- * + Mano de O. Propia
- * Guarda lo que se ha liquidado de inversion material
- * (naturaleza 1 y 2 del area contable) de ordenes no comunes
- PERFORM guarda_inversion_material .
- ENDIF.
- ENDLOOP.
- ENDIF.
- "-----------------------------------------------------------------------
- ENDFORM. " tratar_movimiento
- *---------------------------------------------------------------------*
- * FORM GUARDA_INVERSION_MATERIAL *
- *---------------------------------------------------------------------*
- * Reparto de Orden Común proporc. a la Inv. Material + Mano de O. Propia
- * Guarda lo que se ha liquidado de inversion material (naturaleza 1 y 2
- * del area contable) de ordenes no comunes
- ***********************************************************************
- * Guarda en la tabla repartos el total por PEP/ELEMENTO
- * de los movimientos de las ordenes no comunes de inversion material
- * (naturalezas 1 y 2) del area contable
- *---------------------------------------------------------------------*
- FORM guarda_inversion_material.
- IF ( movimientos-anln2+3(1) EQ '1' OR movimientos-anln2+3(1) EQ '2' )
- AND movimientos-orden_comun IS INITIAL
- AND movimientos-afabe = c_areacon.
- * FEX19117 - 06/05/2002 INI: Los elementos comunes no participan en el
- * reparto.
- SELECT SINGLE anlkl FROM anla INTO anla-anlkl
- WHERE bukrs = p_bukrs
- AND anln1 = movimientos-anln1
- AND anln2 = movimientos-anln2.
- DATA: es_comun(1) TYPE c.
- CLEAR: es_comun.
- SELECT SINGLE comun FROM ziccl INTO es_comun
- WHERE anlkl = anla-anlkl.
- IF es_comun IS INITIAL OR es_comun = ' '.
- * FEX19117 - 06/05/2002 FIN
- MOVE-CORRESPONDING movimientos TO repartos.
- * move movimientos-cantidad to repartos-anbtr.
- COLLECT repartos.
- MOVE-CORRESPONDING movimientos TO repartos_por_elem_area.
- COLLECT repartos_por_elem_area.
- * FEX19117 - 06/05/2002 INI
- ELSE.
- * Aqui habrá que poner el log. (relación de estos elementos.)
- ENDIF.
- * FEX19117 - 06/05/2002 FIN
- ENDIF.
- MOVE-CORRESPONDING movimientos TO movs_peps.
- MOVE movimientos-orden_comun TO movs_peps-comun.
- COLLECT movs_peps.
- ENDFORM. "GUARDA_INVERSION_MATERIAL
- " Modificado por: Heizenreder Guillemo --------------14.10.2010 10:21:45
- *---------------------------------------------------------------------*
- * FORM BUSCAR_TRASPASO_A_ANULAR. *
- *---------------------------------------------------------------------*
- * ------------------------------ *
- * ------------------------------ *
- * ------------------------------ *
- * TODO. *
- * - Comentar. *
- * - Generar un fs para loopear la tabla ti_anla *
- * - Por cada loop llama a buscar_movimiento_de_traspaso *
- * O(n) * O(n^2) lo determina la funcion a llamar. *
- *---------------------------------------------------------------------*
- "----------------------------------------------------------------------
- *&---------------------------------------------------------------------*
- *& Form BUSCAR_TRASPASO_A_ANULAR
- *&---------------------------------------------------------------------*
- * text
- *----------------------------------------------------------------------*
- FORM buscar_traspaso_a_anular.
- DATA: BEGIN OF ti_anla OCCURS 0,
- anln1 LIKE anla-anln1,
- anln2 LIKE anla-anln2,
- anlue LIKE anla-anlue,
- END OF ti_anla.
- " Modificado por: Heizenreder Guillemo --------------14.10.2010 11:05:05
- " Creo un fs para referenciar la tabla ti_anla
- FIELD-SYMBOLS <lv_fs_ti_anla> LIKE LINE OF ti_anla.
- "-----------------------------------------------------------------------
- * FBL
- SELECT anln1 anln2 anlue
- INTO TABLE ti_anla
- FROM anla
- WHERE bukrs = p_bukrs
- AND anlue IN s_anlue
- AND ( anln1 LIKE c_curso1
- OR anln1 LIKE c_curso2 ).
- REFRESH movimientos.
- * EXEC SQL PERFORMING BUSCAR_MOVIMIENTOS_DE_TRASPASO.
- * SELECT ANLN1, ANLN2, ANLUE
- * INTO :MOVIMIENTOS-ANLN1,
- * :MOVIMIENTOS-ANLN2,
- * :MOVIMIENTOS-ANLUE
- * FROM ANLA
- * WHERE MANDT = :SY-MANDT AND
- * BUKRS = :P_BUKRS AND
- * ( ANLN1 LIKE :C_CURSO1 OR
- * ANLN1 LIKE :C_CURSO2 )
- * ENDEXEC.
- " Modificado por: Heizenreder Guillemo --------------14.10.2010 11:06:21
- " Se emplea fs para recorrer la tabla ti_anla.
- " Se reemplazan todas las ocurrencias de ti_anla por <lv_fs_ti_anla>.
- * LOOP AT ti_anla.
- * movimientos-anln1 = ti_anla-anln1.
- * movimientos-anln2 = ti_anla-anln2.
- * movimientos-anlue = ti_anla-anlue.
- * PERFORM BUSCAR_MOVIMIENTOS_DE_TRASPASO.
- * ENDLOOP. "ti_anla
- LOOP AT ti_anla ASSIGNING <lv_fs_ti_anla>.
- movimientos-anln1 = <lv_fs_ti_anla>-anln1.
- movimientos-anln2 = <lv_fs_ti_anla>-anln2.
- movimientos-anlue = <lv_fs_ti_anla>-anlue.
- PERFORM buscar_movimientos_de_traspaso.
- ENDLOOP. "ti_anla
- " Se desreferencia el fs que apunta a la tabla ti_anla.
- UNASSIGN <lv_fs_ti_anla>.
- "-----------------------------------------------------------------------
- ENDFORM. " buscar_traspaso_a_anular
- " Modificado por: Heizenreder Guillemo --------------14.10.2010 10:21:28
- " Se incorporan los comentarios de cabecera a la subrutina.
- *---------------------------------------------------------------------*
- * FORM BUSCAR_MOVIMIENTOS_DE_TRASPASO *
- *---------------------------------------------------------------------*
- * ------------------------------ *
- * ------------------------------ *
- * ------------------------------ *
- * TODO. *
- * - Comentar. *
- * - Generar un fs para loopear las tablas internas *
- * - Complejidad: O(n^2) *
- * - Se realiza un select dentro de cada loop --> FOR ALL ENTRIES *
- *---------------------------------------------------------------------*
- "----------------------------------------------------------------------
- *&---------------------------------------------------------------------*
- *& Form BUSCAR_MOVIMIENTOS_DE_TRASPASO
- *&---------------------------------------------------------------------*
- * text
- *----------------------------------------------------------------------*
- FORM buscar_movimientos_de_traspaso.
- DATA: d_total LIKE anep-anbtr.
- DATA: sw TYPE i.
- DATA: BEGIN OF t_anep OCCURS 0,
- anbtr LIKE anep-anbtr,
- gjahr LIKE anep-gjahr,
- lnran LIKE anep-lnran,
- bwasl LIKE anep-bwasl,
- afabe LIKE anep-afabe,
- anln1 LIKE anep-anln1,
- anln2 LIKE anep-anln2,
- bzdat LIKE anep-bzdat,
- END OF t_anep.
- DATA: BEGIN OF t_anek OCCURS 0,
- bukrs LIKE anek-bukrs,
- anln1 LIKE anek-anln1,
- anln2 LIKE anek-anln2,
- gjahr LIKE anek-gjahr,
- lnran LIKE anek-lnran,
- bzdat LIKE anek-bzdat,
- END OF t_anek.
- " Modificado por: Heizenreder Guillemo --------------14.10.2010 11:20:22
- " Creo los fs para referenciar las ti t_anep + t_anek
- FIELD-SYMBOLS <lv_fs_t_anep> LIKE LINE OF t_anep.
- FIELD-SYMBOLS <lv_fs_t_anek> LIKE LINE OF t_anek.
- "-----------------------------------------------------------------------
- sw = 0.
- * seleccionamos movimientos de traspaso.
- SELECT anbtr gjahr lnran bwasl afabe anln1 anln2 bzdat
- INTO TABLE t_anep
- FROM anep
- WHERE bukrs EQ p_bukrs AND
- anln1 EQ movimientos-anln1 AND
- anln2 EQ movimientos-anln2 AND
- gjahr EQ p_fecha(4) AND
- lnsan EQ 00000 AND
- augln EQ 0 AND
- bwasl IN movims1.
- " Modificado por: Heizenreder Guillemo --------------14.10.2010 11:21:13
- " Se emplea fs para recorrer la tabla ti_anep.
- " Se reemplazan todas las ocurrencias de t_anep por <lv_fs_t_anep>.
- * LOOP AT t_anep.
- * CHECK t_anep-afabe EQ c_areacon OR
- * t_anep-afabe EQ c_areamed OR
- * t_anep-afabe EQ c_areanic OR
- * t_anep-afabe EQ c_areasuc OR
- * t_anep-afabe EQ c_areasua OR
- * t_anep-afabe EQ c_areasuo OR
- * t_anep-afabe EQ c_areadea OR
- * t_anep-afabe EQ c_areadan.
- *
- * IF t_anep-bzdat(6) EQ p_fecha(6).
- * MOVE-CORRESPONDING t_anep TO movimientos.
- * movimientos-cantidad = movimientos-anbtr.
- * movimientos-traspasar = 'X'.
- * APPEND movimientos.
- * sw = 1.
- * ENDIF.
- * ENDLOOP.
- LOOP AT t_anep ASSIGNING <lv_fs_t_anep>.
- CHECK <lv_fs_t_anep>-afabe EQ c_areacon OR
- <lv_fs_t_anep>-afabe EQ c_areamed OR
- <lv_fs_t_anep>-afabe EQ c_areanic OR
- <lv_fs_t_anep>-afabe EQ c_areasuc OR
- <lv_fs_t_anep>-afabe EQ c_areasua OR
- <lv_fs_t_anep>-afabe EQ c_areasuo OR
- <lv_fs_t_anep>-afabe EQ c_areadea OR
- <lv_fs_t_anep>-afabe EQ c_areadan.
- IF <lv_fs_t_anep>-bzdat(6) EQ p_fecha(6).
- MOVE-CORRESPONDING <lv_fs_t_anep> TO movimientos.
- movimientos-cantidad = movimientos-anbtr.
- movimientos-traspasar = 'X'.
- APPEND movimientos.
- sw = 1.
- ENDIF.
- ENDLOOP.
- " Desreferenciamos el fs a la tabla t_anep
- UNASSIGN <lv_fs_t_anep>.
- "-----------------------------------------------------------------------
- * seleccionamos movimientos marcados
- IF sw = 0.
- DATA: BEGIN OF t_totales OCCURS 0, times,
- afabe LIKE anep-afabe,
- total LIKE anep-anbtr,
- bzdat LIKE anek-bzdat.
- DATA: END OF t_totales.
- " Modificado por: Heizenreder Guillemo --------------14.10.2010 11:27:31
- " Creo los fs para referenciar a la tabla t_totales.
- FIELD-SYMBOLS <lv_fs_t_totales> LIKE LINE OF t_totales.
- "-----------------------------------------------------------------------
- REFRESH t_totales.
- SELECT bukrs anln1 anln2 gjahr lnran bzdat
- FROM anek INTO TABLE t_anek
- WHERE bukrs EQ p_bukrs AND
- anln1 EQ movimientos-anln1 AND
- anln2 EQ movimientos-anln2 AND
- auglz EQ p_fecha+4(2) AND
- augln EQ p_fecha(4).
- " Modificado por: Heizenreder Guillemo --------------14.10.2010 11:28:50
- " Se emplea fs para recorrer las tablas ti_anek + t_anep.
- " Se reemplazan todas las ocurrencias de t_anek por <lv_fs_t_anek>.
- " Se reemplazan todas las ocurrencias de t_anep por <lv_fs_t_anep>.
- * LOOP AT t_anek.
- * MOVE-CORRESPONDING t_anek TO movimientos.
- * MOVE t_anek-bzdat TO t_totales-bzdat.
- *
- * SELECT anbtr afabe FROM anep
- * INTO CORRESPONDING FIELDS OF TABLE t_anep
- * WHERE bukrs = p_bukrs
- * AND anln1 = t_anek-anln1
- * AND anln2 = t_anek-anln2
- * AND gjahr = t_anek-gjahr
- * AND lnran = t_anek-lnran.
- *
- * LOOP AT t_anep.
- * CHECK t_anep-afabe EQ c_areacon OR
- * t_anep-afabe EQ c_areamed OR
- * t_anep-afabe EQ c_areanic OR
- * t_anep-afabe EQ c_areasuc OR
- * t_anep-afabe EQ c_areasua OR
- * t_anep-afabe EQ c_areasuo OR
- * t_anep-afabe EQ c_areadea OR
- * t_anep-afabe EQ c_areadan.
- * MOVE t_anep-anbtr TO t_totales-total.
- * MOVE t_anep-afabe TO t_totales-afabe.
- * COLLECT t_totales.
- * ENDLOOP.
- * ENDLOOP.
- " FIXME: (FOR ALL ENTRIES) debe ser usado en vez de (LOOP AT ITAB / SELECT / ENDLOOP)
- LOOP AT t_anek ASSIGNING <lv_fs_t_anek>.
- MOVE-CORRESPONDING <lv_fs_t_anek> TO movimientos.
- MOVE <lv_fs_t_anek>-bzdat TO t_totales-bzdat.
- SELECT anbtr afabe FROM anep
- INTO CORRESPONDING FIELDS OF TABLE t_anep
- WHERE bukrs = p_bukrs
- AND anln1 = <lv_fs_t_anek>-anln1
- AND anln2 = <lv_fs_t_anek>-anln2
- AND gjahr = <lv_fs_t_anek>-gjahr
- AND lnran = <lv_fs_t_anek>-lnran.
- LOOP AT t_anep ASSIGNING <lv_fs_t_anep>.
- CHECK <lv_fs_t_anep>-afabe EQ c_areacon OR
- <lv_fs_t_anep>-afabe EQ c_areamed OR
- <lv_fs_t_anep>-afabe EQ c_areanic OR
- <lv_fs_t_anep>-afabe EQ c_areasuc OR
- <lv_fs_t_anep>-afabe EQ c_areasua OR
- <lv_fs_t_anep>-afabe EQ c_areasuo OR
- <lv_fs_t_anep>-afabe EQ c_areadea OR
- <lv_fs_t_anep>-afabe EQ c_areadan.
- MOVE <lv_fs_t_anep>-anbtr TO t_totales-total.
- MOVE <lv_fs_t_anep>-afabe TO t_totales-afabe.
- COLLECT t_totales.
- ENDLOOP.
- ENDLOOP.
- " Desreferenciamos los fs a las tablas t_anep + t_anek
- UNASSIGN <lv_fs_t_anep>.
- UNASSIGN <lv_fs_t_anek>.
- "-----------------------------------------------------------------------
- " Modificado por: Heizenreder Guillemo --------------14.10.2010 11:59:50
- " Se emplea fs para recorrer las tablas t_totales.
- " Se reemplazan todas las ocurrencias de t_totales por <lv_fs_t_totales>.
- * LOOP AT t_totales WHERE total NE 0.
- * movimientos-bzdat = t_totales-bzdat.
- * movimientos-afabe = t_totales-afabe.
- * movimientos-bwasl = '999'.
- * movimientos-cantidad = t_totales-total.
- * movimientos-traspasar = 'X'.
- * movimientos-anbtr = 0.
- * APPEND movimientos.
- * ENDLOOP.
- " total vs <lv_fs_t_totales>-total?
- LOOP AT t_totales ASSIGNING <lv_fs_t_totales> WHERE total NE 0.
- movimientos-bzdat = <lv_fs_t_totales>-bzdat.
- movimientos-afabe = <lv_fs_t_totales>-afabe.
- movimientos-bwasl = '999'.
- movimientos-cantidad = <lv_fs_t_totales>-total.
- movimientos-traspasar = 'X'.
- movimientos-anbtr = 0.
- APPEND movimientos.
- ENDLOOP.
- " Desreferenciamos el fs a t_totales
- UNASSIGN <lv_fs_t_totales>.
- "-----------------------------------------------------------------------
- ENDIF.
- ENDFORM. " buscar_movimientos_de_traspaso
- *&---------------------------------------------------------------------*
- *& Form BUSCAR_ORDEN
- *&---------------------------------------------------------------------*
- FORM buscar_orden.
- IF NOT wl_anep-bwasl IN c_clase_intercalarios.
- CLEAR anek.
- SELECT SINGLE objid auglz
- INTO (anek-objid,anek-auglz)
- FROM anek
- WHERE bukrs = p_bukrs AND
- anln1 = subnumeros-anln1 AND
- anln2 = subnumeros-anln2 AND
- gjahr = wl_anep-gjahr AND
- lnran = wl_anep-lnran.
- * Si no ha sido traspasado, obtener la orden del movimiento
- bseg-aufnr = anek-objid.
- ELSE.
- CLEAR bseg.
- * MODIFICACION NOEMI OBIOLS.
- * BUSCA EN ANEK SI EL MOVIMIENTO YA HA SIDO TRASPASADO.
- ant_anek_auglz = anek-auglz.
- SELECT SINGLE augln FROM anek INTO anek-augln
- WHERE bukrs EQ p_bukrs AND
- anln1 EQ subnumeros-anln1 AND
- anln2 EQ subnumeros-anln2 AND
- gjahr EQ wl_anep-gjahr AND
- lnran EQ wl_anep-lnran AND
- belnr EQ wl_anep-belnr AND
- ( augln EQ '00000' OR augln EQ space ) AND
- auglz EQ space.
- anek-auglz = ant_anek_auglz.
- CHECK sy-subrc EQ 0.
- * FIN MODIFICACION NOEMI OBIOLS
- SELECT SINGLE aufnr INTO bseg-aufnr FROM bseg
- WHERE bukrs EQ p_bukrs AND
- belnr EQ wl_anep-belnr AND
- gjahr EQ wl_anep-gjahr AND
- buzei EQ wl_anep-buzei AND
- anln1 EQ wl_anep-anln1 AND
- anln2 EQ wl_anep-anln2.
- ENDIF.
- ENDFORM. " buscar_orden
- " Modificado por: Heizenreder Guillemo --------------14.10.2010 14:56:32
- " Se incorporan los comentarios de cabecera a la subrutina.
- *---------------------------------------------------------------------*
- * FORM ESTADOPEP *
- *---------------------------------------------------------------------*
- * ------------------------------ *
- * ------------------------------ *
- * ------------------------------ *
- * TODO. *
- * - Complejidad: O(n) *
- * - Agregar la gestion de fs en vez de wa. *
- * - Todas las referencias a lt_jcds se cambia por <lv_fs_ lt_jcds> *
- * - Comentarios. *
- *---------------------------------------------------------------------*
- "----------------------------------------------------------------------
- *&---------------------------------------------------------------------*
- *& Form estadopep
- *&---------------------------------------------------------------------*
- * text
- *----------------------------------------------------------------------*
- * -->W_OBJNR text
- * -->W_STAT text
- * -->W_UDATE text
- *----------------------------------------------------------------------*
- FORM estadopep USING w_objnr LIKE jest-objnr
- w_stat
- w_udate LIKE jcds-udate.
- DATA: BEGIN OF lt_jcds OCCURS 0,
- stat LIKE jcds-stat,
- inact LIKE jcds-inact,
- udate LIKE jcds-udate,
- END OF lt_jcds.
- DATA: stat_libe, stat_ctec, stat_expl, stat_cerr.
- DATA: fecha_stat_libe LIKE sy-datum,
- fecha_stat_ctec LIKE sy-datum,
- fecha_stat_expl LIKE sy-datum,
- fecha_stat_cerr LIKE sy-datum.
- " Modificado por: Heizenreder Guillemo --------------14.10.2010 15:01:07
- " Se crea el fs para referenciar la tabla lt_jcds.
- FIELD-SYMBOLS <lv_fs_lt_jcds> LIKE LINE OF lt_jcds.
- "-----------------------------------------------------------------------
- * FBL
- * SELECT STAT INACT UDATE
- * INTO CORRESPONDING FIELDS OF JCDS
- * FROM JCDS
- * WHERE OBJNR EQ W_OBJNR AND
- * UDATE LE P_FECHA AND
- * ( STAT EQ CI_CERR OR
- * STAT EQ CI_EXPL OR
- * STAT EQ CI_CTEC OR
- * STAT EQ CI_LIBE )
- * ORDER BY UDATE ASCENDING.
- CLEAR: w_stat, w_udate.
- SELECT stat inact udate
- INTO TABLE lt_jcds
- FROM jcds
- WHERE objnr EQ w_objnr AND
- udate LE p_fecha AND
- ( stat EQ ci_cerr OR
- stat EQ ci_expl OR
- stat EQ ci_ctec OR
- stat EQ ci_libe ).
- CHECK sy-subrc = 0.
- MOVE 'X' TO: stat_libe, stat_ctec, stat_expl, stat_cerr.
- SORT lt_jcds BY udate.
- " Modificado por: Heizenreder Guillemo --------------14.10.2010 15:03:05
- " Se utiliza fs para realiar el recorrido de la tabla.
- " Se cambian todas las ocurrencias de lt_jcds por <lv_fs_lt_jcds>
- * LOOP AT lt_jcds.
- * CASE lt_jcds-stat.
- * WHEN ci_libe.
- * stat_libe = lt_jcds-inact.
- * fecha_stat_libe = lt_jcds-udate.
- * WHEN ci_ctec.
- * stat_ctec = lt_jcds-inact.
- * fecha_stat_ctec = lt_jcds-udate.
- * WHEN ci_cerr.
- * stat_cerr = lt_jcds-inact.
- * fecha_stat_cerr = lt_jcds-udate.
- * WHEN ci_expl.
- * stat_expl = lt_jcds-inact.
- * fecha_stat_expl = lt_jcds-udate.
- * ENDCASE.
- * ENDLOOP.
- LOOP AT lt_jcds ASSIGNING <lv_fs_lt_jcds>.
- CASE <lv_fs_lt_jcds>-stat.
- WHEN ci_libe.
- stat_libe = <lv_fs_lt_jcds>-inact.
- fecha_stat_libe = <lv_fs_lt_jcds>-udate.
- WHEN ci_ctec.
- stat_ctec = <lv_fs_lt_jcds>-inact.
- fecha_stat_ctec = <lv_fs_lt_jcds>-udate.
- WHEN ci_cerr.
- stat_cerr = <lv_fs_lt_jcds>-inact.
- fecha_stat_cerr = <lv_fs_lt_jcds>-udate.
- WHEN ci_expl.
- stat_expl = <lv_fs_lt_jcds>-inact.
- fecha_stat_expl = <lv_fs_lt_jcds>-udate.
- ENDCASE.
- ENDLOOP.
- " Desreferenciamos el fs de la tabla lt_jcds.
- UNASSIGN <lv_fs_lt_jcds>.
- "-----------------------------------------------------------------------
- IF stat_cerr IS INITIAL.
- w_stat = ce_cerr.
- w_udate = fecha_stat_cerr.
- ELSEIF stat_ctec IS INITIAL.
- w_stat = ce_ctec.
- w_udate = fecha_stat_ctec.
- ELSEIF stat_expl IS INITIAL.
- w_stat = ce_expl.
- w_udate = fecha_stat_expl.
- ELSEIF stat_libe IS INITIAL.
- w_stat = ce_libe.
- w_udate = fecha_stat_libe.
- ENDIF.
- ENDFORM. " estadopep
- *---------------------------------------------------------------------*
- * FORM F4_ZZTINS *
- *---------------------------------------------------------------------*
- * ........ *
- *---------------------------------------------------------------------*
- * --> RANGO *
- *---------------------------------------------------------------------*
- FORM f4_zztins USING rango.
- TABLES zki3.
- DATA: BEGIN OF tdynpread OCCURS 0.
- INCLUDE STRUCTURE dynpread.
- DATA: END OF tdynpread.
- * Match-code para tipo de instalación
- DATA: BEGIN OF tfields OCCURS 5.
- INCLUDE STRUCTURE help_value.
- DATA: END OF tfields.
- DATA: BEGIN OF tfull_table_bis OCCURS 100,
- tins LIKE zki4-tins,
- ltext LIKE zki4-ltext,
- END OF tfull_table_bis.
- DATA value LIKE help_info-fldvalue.
- DATA ind LIKE sy-tabix.
- CLEAR value.
- REFRESH tfields.
- tfields-tabname = 'ZKI4'.
- tfields-fieldname = 'TINS'.
- tfields-selectflag = 'X'.
- APPEND tfields.
- CLEAR tfields.
- tfields-tabname = 'ZKI4'.
- tfields-fieldname = 'LTEXT'.
- APPEND tfields.
- SELECT * FROM zki4.
- tfull_table_bis-tins = zki4-tins.
- tfull_table_bis-ltext = zki4-ltext.
- COLLECT tfull_table_bis.
- ENDSELECT.
- CLEAR value.
- CALL FUNCTION 'HELP_VALUES_GET_NO_DD_NAME'
- EXPORTING
- selectfield = 'ZKI4-TINS'
- IMPORTING
- ind = ind
- select_value = value
- TABLES
- fields = tfields
- full_table = tfull_table_bis
- EXCEPTIONS
- full_table_empty = 1
- no_tablestructure_given = 2
- no_tablefields_in_dictionary = 3
- more_then_one_selectfield = 4
- no_selectfield = 5
- OTHERS = 6.
- IF sy-subrc EQ 0 AND NOT value IS INITIAL.
- zki4-tins = value.
- READ TABLE tfull_table_bis INDEX ind.
- * zkg5-dzztins = tfull_table_bis-ltext.
- IF rango = 'L'.
- s_zztins-low = zki4-tins.
- ELSE.
- s_zztins-high = zki4-tins.
- ENDIF.
- ELSE.
- CHECK sy-subrc EQ 1.
- MESSAGE e384.
- ENDIF.
- ENDFORM. "F4_ZZTINS
- *----------------------------------------------------------------------*
- * INCLUDES *
- *----------------------------------------------------------------------*
- *----------------------------------------------------------------------*
- * Modificaciones: upgrade 4.6b *
- * Fecha: 08.05.2000 *
- * Programador: Roberto Galindo Saldías (ISI) Usuario: fex00493 *
- * Descripción: se sustituye la include ZWI00010 por la ZWI00N10 *
- *----------------------------------------------------------------------*
- INCLUDE: zwi00n10, " Include para batch input
- * ZWI00010, " Include para batch input
- * zwi00020, "Juego de datos para la creación de un subnúmero
- zwi00020_bis, "Juego de datos para la creación de un subnúmero
- zwi00090, " Juego de datos para la creación de un elemento
- zwi00040, " Juego de datos para la creación de una instalación
- zwi00070, " Juego de datos para la modificación de un subnúmer
- ** JGI INICIO 22-03-2005
- * zwiti020, " Selección del Usuario de Instalaciones y/o Pep's
- ** FIN 22-03-2005
- ** MCG INICIO 05-05-2005
- * MOD 21.06.2005 IMA
- * ZWITI020_FONDO, " Selección del Usuario de Instalaciones y/o
- zwiti020,
- * FIN MOD 21.06.2005
- * Pep's
- ** FIN 05-05-2005
- * Modificación 23/11/2007 7700000579
- *DAS20/09/2007 zwiti030, " Marcado de movimientos a traspasar
- *DAS20/09/2007 zwiti040, " Juego de datos del Traspaso o Anulación
- *DAS 20/09/2007 Inicio solicitud 7700000579 . Se debe crear BI tanto en
- *fondo como en online. y ejecutarse automáticamente...
- *SE cambia el include zwiti030 ZWITI040 el siguente
- *para realiar loscambios sin afectar a otros procesos
- zwiti030_ziti, zwiti040_ziti.
- ** Modificación 23/11/2007 7700000579
- *&---------------------------------------------------------------------*
- *& Module SELECT_MOTIVO INPUT
- *&---------------------------------------------------------------------*
- * text
- *----------------------------------------------------------------------*
- * Modificación upgrade 46B - Usuario: fex00493 Fecha: 16.05.2000
- MODULE select_motivo INPUT.
- IF p_anular EQ 'X'.
- SELECT SINGLE * FROM t041c WHERE stgrd EQ p_motivo.
- IF sy-subrc <> 0.
- MESSAGE e011(ziu).
- ENDIF.
- ENDIF.
- ENDMODULE. " SELECT_MOTIVO INPUT
- *----------------------------------------------------------------------*
- * FORM INDICADOR_PROGRESO *
- *----------------------------------------------------------------------*
- FORM indicador_progreso USING pi_tabix TYPE sy-tabix
- pi_tl_ln TYPE i
- pi_text
- pi_var1
- pi_var2.
- DATA:
- lv_calculo TYPE f,
- lv_txt TYPE string,
- lv_aux_n(3) TYPE n.
- lv_calculo = 100 / pi_tl_ln * pi_tabix.
- lv_aux_n = lv_calculo.
- CONCATENATE 'Procesando ' pi_text pi_var1 '-' pi_var2 '&'
- INTO lv_txt SEPARATED BY space.
- REPLACE '&' IN lv_txt WITH lv_aux_n.
- CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
- EXPORTING
- percentage = lv_calculo
- text = lv_txt.
- ENDFORM. " indicador_progreso
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement