Advertisement
Guest User

Untitled

a guest
Jun 21st, 2017
117
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
ABAP 101.54 KB | None | 0 0
  1. *
  2. * REPORT zwiti010                                                      *
  3. *----------------------------------------------------------------------*
  4. * Descripción:                                                         *
  5. *  Traspaso de inmovilizado en curso a explotación / Anulación         *
  6. *
  7. * Modificaciones:                                                      *
  8. *    AUTOR                FECHA       DESCRIPCIÓN                      *
  9. *----------------------------------------------------------------------*
  10. *  Juan Garcia Ciuraneta  Enero-1999  Tomar los clases de movimiento   *
  11. *                                     de una tabla (ZITR)              *
  12. *----------------------------------------------------------------------*
  13. *----------------------------------------------------------------------*
  14. * MODIFICACIONES: upgrade 4.6B
  15. * FECHA: 08.05.2000
  16. * DESCRIPCION: 1.- se establece una separación entre las varibles y los
  17. *                  delimitadores de parentesis las clausulas
  18. *              2.- Se añade el módulo MODULE SELECT_MOTIVO en la lógica*
  19. *                  de programa.
  20. *----------------------------------------------------------------------*
  21. * Joaquin Garrido Iñigo 22-03-2005 Solicitud: 0045002371/18814
  22. * Sustituir la include ZWITI020 por la nueva ZWITI020_FONDO para
  23. * permitir la ejecucion en fondo de los traspasos a peticion del
  24. * usuario
  25. *
  26. * MCG - 05-05-2005 Se quitarán los cambios realizados JGI para poder
  27. * probar si el control sobre la fecha de capitalización vacía se
  28. * realiza correctamente utilizando el include anterior. Al parecer
  29. * con el nuevo include podría haber fallos en el cálculo de la fecha
  30. * de capitalización dependiendo de si es un elemento con vida propia o
  31. * no
  32. *----------------------------------------------------------------------*
  33. * Modificaciones:  01                                                  *
  34. * Fecha:   19/04/2010                                                  *
  35. * Usuario: Claudia Rivero - ES26766923                                 *
  36. * Identificación :  7700002847 - PMF ACTIVOS FIJOS                     *
  37. * Descripción de la modificación: Optimizacion de los programas de la  *
  38. * trx ZITI , para que el Traspaso a explotación de la empresa 0551     *
  39. * pueda realizarse de una  forma global y eficiente, y se optimicen    *
  40. * los tiempos de respuesta                                             *
  41. *----------------------------------------------------------------------*
  42.  
  43. REPORT zwiti010
  44.        NO STANDARD PAGE HEADING
  45.        LINE-SIZE 132
  46.        MESSAGE-ID zi.
  47. *----------------------------------------------------------------------*
  48. * TABLAS DEL SISTEMA                                                   *
  49. *----------------------------------------------------------------------*
  50. TABLES:
  51.   tka02,  " Sociedades FI asociadas a  CO                              "
  52.   jest,   " Status individual por objeto                               "
  53.   jcds,   " Documentos de modif. p. status de sistema/usuario (tab.JEST)
  54.   cobrb,  " Normas de reparto Norma de liquidación  Liquidación de orden
  55.   anla,   " Segm reg maestro inmov                                     "
  56.   anlz,   " Asignaciones de inmovilizados con fecha valor              "
  57.   anep,   " Partidas individuales de inmovilizado                      "
  58.   anek,   " Cabecera de documento de contabilización AM                "
  59.   bseg,   " Segmento de documento de Contabilidad                      "
  60.   anlh,   " Nº principal de inmovilizado                               "
  61.   anlc,   " Campos de valor de inmovilizados                           "
  62.   prps,   " Elemento PEP (Datos maestros)                              "
  63.   aufk,   " Datos maestros de orden                                    "
  64.   tj30t,  " Textos para status de usuarios                             "
  65.   t001,   " Sociedades                                                 "
  66.   ziacl,  " Descripción atributos de campos para elementos             "
  67.   ziscl,  " Elementos de inmovilizado                                  "
  68. * ziccl,  " Elementos de inmovilizado                                  "
  69.   ankt,   " Clases de inmovilizados: descripción                       "
  70.   zisoc,  " Solicitudes de inmovilizado                                "
  71.   zicte,  " Constantes para Act. Fijos                                 "
  72.   zissp,  " Solicitud instalaciones (datos generales)                  "
  73.   ziasp,  " Descripción atributos de campos para instalaciones         "
  74.   cosp,   " Costes del PEP                                             "
  75.   zitr,   " Movimientos a tratar                                       "
  76.   anka,   " Clases de inmovilizado                                     "
  77.   bkpf,   " Cabecera documenbtos FI                                    "
  78.   t082f,  "                                                            "
  79.   t082g,  "                                                            "
  80.   zki4,
  81. * Modificación upgrade 46B - Usuario: fex00493. Fecha: 16.05.2000
  82.   t041c.                               " Tipos de motivos
  83. *----------------------------------------------------------------------*
  84. * TABLAS INTERNAS                                                      *
  85. *----------------------------------------------------------------------*
  86. * Órdenes correspondientes a PEP activo en estado 'CERR', 'EXPL', 'LIBE'
  87. * o 'CTEC'.
  88. DATA: BEGIN OF ordenes OCCURS 1000,
  89.         anlue  LIKE prps-usr00,        " Instalación                   "
  90.         posid  LIKE prps-posid,        " Nº externo del elemento PEP   "
  91.         pspnr  LIKE prps-pspnr,        " Nº interno del elemento PEP   "
  92.         aufnr  LIKE aufk-aufnr,        " Número de la Orden            "
  93.         estado(4),                     " Estado del PEP                "
  94.         orden_comun,                   " Indica orden comun            "
  95.         objnr  LIKE aufk-objnr.        " Objeto                        "
  96. DATA: END OF ordenes.
  97. * Elementos/Subnúmeros en los que ha liquidado alguna orden
  98. DATA: BEGIN OF subnumeros OCCURS 1000,
  99.         anln1         LIKE anep-anln1, " Nº principal de inmovilizado
  100.         anln2         LIKE anep-anln2. " Subnúmero de inmovilizado
  101. DATA: END OF subnumeros.
  102. * Elementos PEP, suma parcial
  103. DATA: BEGIN OF parciales OCCURS 100,
  104.         pspnr         LIKE prps-pspnr, " Elemento PEP                  "
  105.         anlue LIKE prps-usr00,         " Instalación                   "
  106.         posid LIKE prps-posid,         " Nº externo del elemento PEP   "
  107.         aufnr LIKE aufk-aufnr,         " Número de orden               "
  108.         cantidad      LIKE anep-anbtr. " Importe a traspasar           "
  109. DATA: END OF parciales.
  110. * Información correspondiente a movimientos de subnúmeros
  111. DATA: BEGIN OF movimientos OCCURS 10000,
  112.         anlue LIKE prps-usr00,         " Instalación                   "
  113.         afabe LIKE anep-afabe,         " Area de valoración real       "
  114.         posid LIKE prps-posid,         " Nº externo del elemento PEP   "
  115.         aufnr LIKE aufk-aufnr,         " Número de orden               "
  116.         anln1 LIKE anep-anln1,         " Nº principal de inmovilizado  "
  117.         anln2 LIKE anep-anln2,         " Subnúmero de inmovilizado     "
  118.         gjahr LIKE anep-gjahr,         " Ejercicio                     "
  119.         lnran LIKE anep-lnran,         " Partida individual del mov.   "
  120.         bwasl LIKE anep-bwasl,         " Clase de movimiento           "
  121.         bzdat LIKE anep-bzdat,         " Fecha de referencia           "
  122.         anbtr LIKE anep-anbtr,         " Importe de contabilización    "
  123.         cantidad LIKE anep-anbtr,      " Importe a traspasar           "
  124.         estado(4),                     " Estado del PEP                "
  125.         traspasar,                     " Indica si hay que traspasar   "
  126.         despreciar,                    " Indica si hay que traspasar   "
  127.         orden_comun,                   " Indica movimiento orden comun "
  128.         elemento_comun.                " Indica movimiento elem. comun "
  129. DATA: END OF movimientos.
  130.  
  131. * Información correspondiente a instalaciones
  132. DATA: BEGIN OF instalaciones OCCURS 100,
  133.         anlue LIKE prps-usr00,         " Instalación                   "
  134.         afabe LIKE anep-afabe,         " Area de valoración real       "
  135.         aktiv LIKE anla-aktiv,         " Fecha de capitalización       "
  136.         txt50 LIKE anla-txt50,         " Denominación del inmovilizado "
  137.         anbtr LIKE anep-anbtr,         " Importe de contabilización    "
  138.         cantidad LIKE anep-anbtr,      " Importe a traspasar           "
  139.         traspasar,                     " Indica si hay que traspasar   "
  140.         error,
  141. * Inicio Modificación MDB 29.06.2005
  142.         elemento(17).                  " Elemento erróneo.
  143. * Fin Modificació nMDB
  144. DATA: END OF instalaciones.
  145. * Información correspondiente a elementos PEP
  146. DATA: BEGIN OF pep OCCURS 100,
  147.         anlue LIKE prps-usr00,         " Instalación                   "
  148.         posid LIKE prps-posid,         " Nº externo del elemento PEP   "
  149.         afabe LIKE anep-afabe,         " Area de valoración real       "
  150.         anbtr LIKE anep-anbtr,         " Importe de contabilización    "
  151.         cantidad LIKE anep-anbtr,      " Importe a traspasar           "
  152.         estado(4),                     " Estado del PEP                "
  153.         traspasar,                     " Indica si hay que traspasar   "
  154.         despreciar,                    " Indica si hay que despreciarlo"
  155.         error.                         " Si tiene errores (comun)
  156. DATA: END OF pep.
  157. * Total movimientos peps
  158. DATA: BEGIN OF totpep OCCURS 100,
  159.         anlue LIKE prps-usr00,         " Instalación                   "
  160.         posid LIKE prps-posid,         " Nº externo del elemento PEP   "
  161.         afabe LIKE anep-afabe,         " Area de valoración real       "
  162.         anbtr LIKE anep-anbtr.         " Importe de contabilización    "
  163. DATA: END OF totpep.
  164. * Tabla interna para traspaso.
  165. DATA: BEGIN OF traspaso OCCURS 1000,
  166.           posid       LIKE movimientos-posid,
  167.           afabe       LIKE movimientos-afabe,
  168.           cantidad    LIKE movimientos-cantidad.
  169. DATA: END OF traspaso.
  170.  
  171. DATA: BEGIN OF control_altas OCCURS 1000,
  172.            anln1 LIKE anla-anln1,
  173.            anln2 LIKE anla-anln2.
  174. DATA: END OF control_altas.
  175.  
  176. DATA: BEGIN OF emisor,
  177.            anln1 LIKE anla-anln1,
  178.            anln2 LIKE anla-anln2.
  179. DATA: END OF emisor.
  180.  
  181. DATA: BEGIN OF receptor,
  182.            anln1 LIKE anla-anln1,
  183.            anln2 LIKE anla-anln2.
  184. DATA: END OF receptor.
  185.  
  186. DATA: BEGIN OF subnumeros_a_modificar OCCURS 500,
  187.          anln1  LIKE anla-anln1,
  188.          anln2  LIKE anla-anln2,
  189.          invsl  LIKE zinat-invsl,
  190.        END OF subnumeros_a_modificar.
  191.  
  192. DATA: BEGIN OF repartos OCCURS 1000,
  193.          posid     LIKE prps-posid,
  194.          anln1     LIKE anla-anln1,
  195.          anbtr     LIKE anep-anbtr,
  196.        END OF repartos.
  197.  
  198. DATA: BEGIN OF repartos1 OCCURS 1000,
  199.          posid     LIKE prps-posid,
  200.          anln1     LIKE anla-anln1,
  201.          anbtr     LIKE anep-anbtr,
  202.        END OF repartos1.
  203.  
  204. DATA: BEGIN OF repartos_por_elem_area OCCURS 1000,
  205.          posid     LIKE prps-posid,
  206.          anln1     LIKE anla-anln1,
  207.          anln2     LIKE anla-anln2,
  208.          afabe     LIKE anep-afabe,
  209.          anbtr     LIKE anep-anbtr,
  210.        END OF repartos_por_elem_area.
  211.  
  212. * totales movimientos ordenes comunes por pep/elemento/area
  213. * que luego repartirá procorcionalmente entre la inversion material
  214. DATA: BEGIN OF movs_peps OCCURS 1000,
  215.          posid     LIKE prps-posid,
  216.          comun,
  217.          anln1     LIKE anla-anln1,
  218.          anln2     LIKE anla-anln2,
  219.          afabe     LIKE anep-afabe,
  220.          anbtr     LIKE anep-anbtr,
  221.        END OF movs_peps.
  222. ************************************************************************
  223. * peps seleccionado                                                    *
  224. * Añadida por Juan Garcia en Enero/1999                                *
  225. * Para saber si un pep con status LIBE debe seleccionarlo o no         *
  226. * debe seleccionar primero todos los peps de la instalacion, y si hay  *
  227. * alguno con status correcto ==> lo toma                               *
  228. ************************************************************************
  229. DATA: BEGIN OF peps_seleccionados OCCURS 1000,
  230.          objnr LIKE prps-objnr,
  231.          pspnr LIKE prps-pspnr,
  232.          anlue  LIKE prps-usr00,       " Instalación                 "
  233.          posid LIKE prps-posid,        " Nº externo del elemento PEP "
  234.          estado(4),                    " Estado del pep              "
  235.       END OF peps_seleccionados.
  236.  
  237. DATA: BEGIN OF peps_listado OCCURS 0,
  238.          posid LIKE prps-posid,
  239.          procesado(2),
  240.          estado(4),
  241.          ant_fecha(10),
  242.          nue_fecha(10),
  243.       END OF peps_listado.
  244.  
  245. DATA: BEGIN OF t_anep,
  246.         anbtr LIKE anep-anbtr,
  247.         gjahr LIKE anep-gjahr,
  248.         lnran LIKE anep-lnran,
  249.         bwasl LIKE anep-bwasl,
  250.         afabe LIKE anep-afabe,
  251.         anln1 LIKE anep-anln1,
  252.         anln2 LIKE anep-anln2,
  253.         bzdat LIKE anep-bzdat,
  254.         belnr LIKE anep-belnr,
  255.         buzei LIKE anep-buzei,
  256.       END OF t_anep.
  257.  
  258. DATA:BEGIN OF i_mess OCCURS 0.
  259. INCLUDE  STRUCTURE bdcmsgcoll.
  260. DATA:END OF i_mess.
  261.  
  262. * ES26766923 - INICIO - 19/04/2010 - 7700002847
  263. TYPES: BEGIN OF st_pep,
  264.        pspnr LIKE prps-pspnr,
  265.        posid LIKE prps-posid,
  266.        objnr LIKE prps-objnr,
  267.        anlue LIKE prps-usr00,
  268.        zztins LIKE prps-zztins,
  269.        usr03  LIKE prps-usr03,
  270.        END OF st_pep.
  271.  
  272. DATA: tl_pep TYPE TABLE OF st_pep,
  273.       wl_pep TYPE st_pep.
  274.  
  275. DATA: tl_anep TYPE STANDARD TABLE OF anep,
  276.       wl_anep TYPE anep.
  277.  
  278. DATA vl_tot_lines TYPE i.
  279. * ES26766923 - FIN - 19/04/2010 - 7700002847
  280.  
  281. *----------------------------------------------------------------------*
  282. * VARIABLES                                                            *
  283. *----------------------------------------------------------------------*
  284. * Datos Globales al programa
  285. DATA: periodo   LIKE t009b-poper," Mes                                 "
  286.      nombre_bi LIKE apqi-groupid," Nombre del juego de datos          "
  287.      lineas    TYPE i,          " Nº de líneas de una tabla           "
  288.      pep_objnr LIKE prps-objnr, " Número de objeto (pep)              "
  289.      pep_pspnr LIKE prps-pspnr, " Número interno PEP                  "
  290.      pep_posid LIKE prps-posid, " Número externo PEP                  "
  291.      pep_usr00 LIKE prps-usr00, " Número de instalación               "
  292.      pep_usr03 LIKE prps-usr03, " Fecha ultimo traspaso               "
  293.      pep_anlue LIKE prps-usr00, " Número de instalacion               "
  294.      pep_zztins LIKE prps-zztins, " Tipo de instalacion               "
  295.      inst_a_convertir LIKE prps-usr00,
  296.      pep_anlue_con_ceros LIKE prps-usr00,
  297.      pep_anlue_sin_ceros LIKE prps-usr00,
  298.      pep_anlue2(4) TYPE c,     " Número de instalacion                "
  299.      o_aufnr LIKE aufk-aufnr,   " Número de orden                     "
  300.      o_objnr LIKE aufk-objnr,   " Número de objeto (orden)            "
  301.      o_auart LIKE aufk-auart,   " Tipo de Orden                       "
  302.      total_mov LIKE anep-anbtr ," Importe de mov. de liquidaciones    "
  303.      p_kokrs LIKE tka01-kokrs,  " Sociedad CO                         "
  304.      ci_cerr LIKE tj30t-estat,  " Status Interno con cierre definiti. "
  305.      ci_expl LIKE tj30t-estat,  " Status Interno de PEP en explotació "
  306.      ci_ctec LIKE tj30t-estat,  " Status Interno de PEP bloqueado.    "
  307.      ci_libe LIKE tj30t-estat,  " Status Interno de PEP liberado.     "
  308.      c_usr03 LIKE prps-usr03,         " Inicializar ult. fecha traspaso
  309.      rtn_periodo_contable,
  310.      lista_error  VALUE ' ',
  311.      er1          VALUE ' ',
  312.      er2          VALUE ' ',
  313.      c_moneda LIKE t001-waers,  " Clave de moneda                     "
  314.      c_idioma LIKE t001-spras,  " Clave de idioma                     "
  315.      x_aktiv  LIKE anla-aktiv,  "Fecha capitalización inmovilizado    "
  316.      d_subnumero,                     "variable para include zwi00040
  317.      fecha_sys(10),                   " Fecha sistema CHAR
  318.      fecha_tra(10).                   " Fecha traspaso CHAR
  319. * Modificación 23/11/2007 7700000579
  320. DATA: p_online LIKE sy-batch,
  321.       p_fondo  LIKE sy-batch.
  322. *----------------------------------------------------------------------*
  323. * RANGOS PARA SELECCION                                                *
  324. *----------------------------------------------------------------------*
  325. RANGES: instalanuevas FOR prps-usr00,
  326.         movims        FOR anep-bwasl,
  327.         movims1       FOR anep-bwasl,
  328.         c_clase_baja  FOR anep-bwasl,
  329.         c_clase_traslado FOR anep-bwasl,
  330.         c_clase_intercalarios FOR anep-bwasl.
  331. DATA  tipo_listado.
  332. DATA  hay_informacion.
  333. DATA  ant_anek_auglz LIKE anek-auglz.
  334.  
  335. * gpn - INI - 9999001141 - 06/11/2009
  336. DATA: ce_cerr(4) TYPE c,                                          "gpn+
  337.       ce_expl(4) TYPE c,                                          "gpn+
  338.       ce_ctec(4) TYPE c,                                          "gpn+
  339.       ce_libe(4) TYPE c.                                          "gpn+
  340. * gpn - INI - 9999001141 - 06/11/2009
  341.  
  342. *----------------------------------------------------------------------*
  343. * CONSTANTES                                                           *
  344. *----------------------------------------------------------------------*
  345. CONSTANTS:
  346.   c_curso1(12)   VALUE '2%',           " Elemento en curso
  347.   c_curso2(12)   VALUE '4%',           " Elemento en curso
  348.   clase_anlue(8) VALUE '999999ZP',  " Clase de inmov. de Instalaciones
  349.   c_inversion(1) VALUE 'I',            " Indicador de PEP de inversión
  350. * gpn - INI - 9999001141 - 06/11/2009
  351. *  ce_cerr(4) VALUE 'CERR'," Status Externo de PEP con cierre definiti."gpn-
  352. *  ce_expl(4) VALUE 'EXPL'," Status Externo de PEP pasado a explotación"gpn-
  353. *  ce_ctec(4) VALUE 'CTEC'," Status Externo de PEP bloqueado.         ""gpn-
  354. *  ce_libe(4) VALUE 'LIBE'," Status Externo de PEP liberado.          ""gpn-
  355. * gpn - INI - 9999001141 - 06/11/2009
  356.   c_areacon(2) VALUE '01',  " Area Contable.                           "
  357.   c_areafis(2) VALUE '02',  " Area Fiscal.                             "
  358.   c_areadev(2) VALUE '03',  " Area Derivada.                           "
  359.   c_areamed(2) VALUE '11',  " Area medio Ambiente.                     "
  360.   c_areanic(2) VALUE '40',  " Area Ajustes NIC                         "
  361.   c_areasuc(2) VALUE '51',  " Area Subvenciones oficiales de Capital.  "
  362.   c_areasua(2) VALUE '52',  " Area Subvenciones Activos Cedidos.       "
  363.   c_areasuo(2) VALUE '53',  " Area Subvenciones Otros.                 "
  364.   c_areadea(2) VALUE '54',  " Area Subvenc. Derechos acometida Obligat."
  365.   c_areadan(2) VALUE '55',  " Area Subvenc. Derechos acometida NO Obl. "
  366.   c_areades(2) VALUE '60',  " Area Derivada Total Subvenciones.        "
  367.   c_areadec(2) VALUE '61',  " Area Derivada Subvenciones de Capital.   "
  368.   c_esquema(3) VALUE 'PEP', " Esquema de Status                        "
  369.   c_clase_comun(4)  VALUE 'ICOM',      " Clase de orden Común.
  370.   c_contep(2) VALUE '75',   "Clave Contable Emisora/Receptora          "
  371.   c_contrn(2) VALUE '70',   "Clave Contable Emisora/Receptora          "
  372.   c_mareacone(3) VALUE 'Z01', "Clave de Mov. de Area Contable Emisor   "
  373.   c_mareaconr(3) VALUE 'Z02', "Clave de Mov. de Area Contable Receptor "
  374.   c_mareamede(3) VALUE 'Z03', "Clave de Mov. de Area Medio Ambiente emis
  375.   c_mareamedr(3) VALUE 'Z04', "Clave de Mov. de Area medio Ambiente Rec.
  376.   c_mareasuce(3) VALUE 'Z1A', "Clave de Mov. de Area Subve. Cap. Emisor.
  377.   c_mareasucr(3) VALUE 'Z1B', "Clave de Mov. de Area Subve. Cap. Recept.
  378.   c_mareasuae(3) VALUE 'Z2A', "Clave de Mov. de Area Subve. Activ. Emis.
  379.   c_mareasuar(3) VALUE 'Z2B', "Clave de Mov. de Area Subve. Activ. Recep
  380.   c_mareasuoe(3) VALUE 'Z3A', "Clave de Mov. de Area Subve. Otros Emis."
  381.   c_mareasuor(3) VALUE 'Z3B', "Clave de Mov. de Area Subve. Otros Recep.
  382.   c_mareasude(3) VALUE 'Z4A', "Clave de Mov. de Area Subve. Derec Emis."
  383.   c_mareasudr(3) VALUE 'Z4B', "Clave de Mov. de Area Subve. Derec Recep.
  384.   c_mareasune(3) VALUE 'Z5A', "Clave de Mov. Area Subve. Der Emi. NO obl
  385.   c_mareasunr(3) VALUE 'Z5B', "Clave de Mov. Area Subve. Der Rec. NO obl
  386.   c_mareanice(3) VALUE 'Y32', "Clave de Mov. Area NIC Emisor           "
  387.   c_mareanicr(3) VALUE 'Y33'. "Clave de Mov. Area NIC Receptor         "
  388.  
  389. *----------------------------------------------------------------------*
  390. * PANTALLA DE SELECCIÓN                                                *
  391. *----------------------------------------------------------------------*
  392. SELECTION-SCREEN BEGIN OF BLOCK z90 WITH FRAME TITLE text-001.
  393. PARAMETERS:
  394.   p_bukrs LIKE tka02-bukrs  OBLIGATORY MEMORY ID buk, " Sociedad FI  "
  395.   p_fecha LIKE sy-datum OBLIGATORY.                   " Fecha del
  396. "traspaso      "
  397. * Modificación upgrade 46B - Usuario Fex00493 Fecha: 16.05.2000
  398. SELECTION-SCREEN BEGIN OF LINE.
  399. PARAMETERS: p_anular AS CHECKBOX.                " Anulación
  400. SELECTION-SCREEN COMMENT 3(10) text-u02 FOR FIELD p_anular.
  401. SELECTION-SCREEN POSITION 25.
  402. * Modificación upgrade 46B - Usuario Fex00493 Fecha: 16.05.2000
  403. PARAMETERS:
  404.   p_motivo LIKE uf05a-stgrd MODIF ID mtv.
  405. SELECTION-SCREEN COMMENT 15(8) text-u01 FOR FIELD p_motivo.
  406. SELECTION-SCREEN END OF LINE.
  407. * Fin modificación
  408. PARAMETERS  p_prueba AS CHECKBOX.             " Para prueba
  409. SELECT-OPTIONS:
  410. *   Inicio modificación fex00517 9-11-2000
  411. *   Modificación ayuda búsqueda para instalaciones a ZAANL
  412. *      S_ANLUE FOR ANLA-ANLUE MATCHCODE OBJECT AANL,  " Instalaciones
  413.   s_anlue FOR anla-anlue MATCHCODE OBJECT zaanl,  " Instalaciones
  414. * Fin modificación fex00517 9-11-2000
  415.   s_zztins FOR zki4-tins.              " Tipo Instalación    "
  416.  
  417.  
  418. **Inicio 18814-20/11/2006
  419. *PARAMETERS: p_online RADIOBUTTON GROUP rb DEFAULT 'X'
  420. *            USER-COMMAND radio . "SGF 12/07/2007
  421. *PARAMETERS: p_fondo  RADIOBUTTON GROUP rb.
  422. SELECTION-SCREEN END OF BLOCK z90  .
  423. *Fin 18814 -20/11/2006
  424. ************************************************************************
  425. *                     LÓGICA DEL PROGRAMA                              *
  426. ************************************************************************
  427. *----------------------------------------------------------------------*
  428. * INITIALIZATION                                                       *
  429. *----------------------------------------------------------------------*
  430. INITIALIZATION.
  431.  
  432. * Inicializar la fecha del traspaso con el último día del mes anterior
  433. * al del sistema
  434.   periodo = sy-datum+4(2) - 1.         " Mes
  435.   CALL FUNCTION 'LAST_DAY_IN_PERIOD_GET'
  436.     EXPORTING
  437.       i_gjahr        = sy-datum(4)
  438.       i_periv        = 'K1'
  439.       i_poper        = periodo
  440.     IMPORTING
  441.       e_date         = p_fecha   " Fecha del traspaso
  442.     EXCEPTIONS
  443.       input_false    = 1
  444.       t009_notfound  = 2
  445.       t009b_notfound = 3
  446.       OTHERS         = 4.
  447.  
  448. *----------------------------------------------------------------------*
  449. * AT SELECTION-SCREEN                                                  *
  450. *----------------------------------------------------------------------*
  451. * Modifcación 23/11/2007 7700000579 IAF
  452. * Se comenta el evento para volver situación anterior
  453. ** Inicio SGF - 12/07/2007 *
  454. *AT SELECTION-SCREEN OUTPUT.
  455.   DATA: v_status LIKE sy-pfkey.
  456.  
  457.   DATA: BEGIN OF v_exclude OCCURS 0,
  458.           okcode LIKE sy-ucomm.
  459.   DATA: END OF v_exclude.
  460.  
  461.   IF p_online EQ 'X'.
  462.     v_status = 'ONLINE'.
  463.   ELSEIF p_fondo EQ 'X'.
  464.     v_status = 'FONDO'.
  465.   ENDIF.
  466.  
  467.   CALL FUNCTION 'RS_SET_SELSCREEN_STATUS'
  468.     EXPORTING
  469.       p_status  = v_status
  470.     TABLES
  471.       p_exclude = v_exclude[].
  472. ** Fin SGF - 12/07/2007 *
  473. *
  474. **DAS 20709/2007 Inicio solicitud 7700000579 . Se ocultan los parametros
  475. **de ejecucion online o ejecucion en fondo...
  476.   LOOP AT SCREEN.
  477.     IF screen-name CP '*P_ONLINE*' OR screen-name CP '*P_FONDO*'.
  478.       screen-invisible = 1.
  479.       screen-input = 0.
  480.       MODIFY SCREEN.
  481.     ENDIF.
  482.   ENDLOOP.
  483.  
  484. AT SELECTION-SCREEN ON p_bukrs.
  485.  
  486. * Comprobar que la sociedad FI introducida existe en el sistema
  487.   " FIXME
  488.   SELECT SINGLE * FROM tka02
  489.                   WHERE bukrs EQ p_bukrs.
  490.   IF sy-subrc EQ 4.
  491.     MESSAGE e152 WITH p_bukrs.         " La sociedad no está prevista
  492.   ENDIF.
  493.  
  494.   MOVE tka02-kokrs TO p_kokrs.
  495.  
  496. AT SELECTION-SCREEN ON p_fecha.
  497.  
  498. * validar la fecha introducida
  499. *TRUCO
  500. * IF P_FECHA > SY-DATUM.
  501. *   IF P_FECHA(4) <> SY-DATUM(4) OR
  502. *       P_FECHA+4(2) <> SY-DATUM+4(2).
  503. *     MESSAGE E026.                    " Fecha incorrecta
  504. *   ENDIF.
  505. * ENDIF.
  506.  
  507. * Validar periodo contable abierto
  508.   CALL FUNCTION 'Z_XC_PERIODO_CONTABLE'
  509.        EXPORTING
  510.             bukrs      = p_bukrs
  511.             fecha      = p_fecha
  512.        IMPORTING
  513. *           fecha_cont = fecha_contable         " Fecha contable
  514.             retorno    = rtn_periodo_contable   " Codigo de retorno
  515.        EXCEPTIONS
  516.             OTHERS         = 1.
  517. * if rtn_periodo_contable <> 2.
  518. *    message e314.                      " Periodo no abierto.
  519. * endif.
  520. ************************************************************************
  521. AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_zztins-low.
  522.   PERFORM f4_zztins USING 'L'.
  523. ************************************************************************
  524. AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_zztins-high.
  525.  
  526.   PERFORM f4_zztins USING 'H'.
  527.  
  528.  
  529. *----------------------------------------------------------------------*
  530. * START-OF-SELECTION                                                   *
  531. *----------------------------------------------------------------------*
  532. START-OF-SELECTION.
  533. * Modificación 23/11/2007 7700000579
  534. **DAS 20709/2007 Inicio solicitud 7700000579
  535. ** Si el usuario lo ejecuta en fondo, marcamos el paremetro que indica
  536. **"en fondo" para que el programa se ejecute como antes...
  537.   IF sy-batch = 'X'.
  538.     p_fondo = 'X'.
  539.     p_online = ' '.
  540.   ELSE.
  541.     p_online = 'X'.
  542.     p_fondo = ' '.
  543.   ENDIF.
  544. ** Fin Modificación 23/11/2007 7700000579
  545.  
  546. * Control del perfil del Usuario.
  547.   AUTHORITY-CHECK OBJECT 'ZI:SOC:DIV'
  548.             ID 'ACTVT'    DUMMY
  549.             ID 'BUKRS' FIELD p_bukrs
  550.             ID 'GSBER'    DUMMY.
  551.  
  552.   IF sy-subrc <> 0.
  553.     MESSAGE e600(zi).
  554.   ENDIF.
  555.  
  556. * gpn - INI - 9999001141 - 06/11/2009
  557.   MOVE text-t01 TO ce_cerr.                                       "gpn+
  558.   MOVE text-t02 TO ce_expl.                                       "gpn+
  559.   MOVE text-t03 TO ce_ctec.                                       "gpn+
  560.   MOVE text-t04 TO ce_libe.                                       "gpn+
  561. * gpn - FIN - 9999001141 - 06/11/2009
  562.  
  563. * Segmento principal.
  564.   PERFORM inicializar_datos.
  565.   IF NOT p_anular IS INITIAL.
  566.     PERFORM buscar_traspaso_a_anular.
  567.   ELSE.
  568.     PERFORM seleccionar_subnumeros_ordenes.
  569.     PERFORM tratar_subnumeros.
  570.   ENDIF.
  571.  
  572.   DESCRIBE TABLE movimientos LINES lineas.
  573.   IF lineas = 0.
  574.     IF p_anular IS INITIAL.
  575.       MESSAGE i025.   " No hay movimientos pendientes de traspaso
  576.     ELSE.
  577.       MESSAGE i059.   " No hay movimientos pendientes de anulación
  578.     ENDIF.
  579.     LEAVE PROGRAM.
  580.   ELSE.
  581.     SORT movimientos BY anlue afabe posid aufnr anln1 anln2.
  582.     PERFORM crea_tablas.               " Programa ZWITI020.
  583. *    perform validar_errores.
  584.     SORT pep BY anlue posid afabe.
  585.  
  586.  
  587. **Inicio 23320-21/11/2006
  588.     IF p_fondo = 'X'.
  589.  
  590.  
  591.       PERFORM seleccion_traspaso_fondo.
  592. *
  593. *  * Inicio SGF - 16/07/07 *
  594. *  *     Visualizar los datos sumarizando por instalaciones
  595.       PERFORM tratar_datos_job.
  596. *  * Fin SGF - 16/07/07 *
  597. *
  598. *AR - Inicio - 22/02/2010 Pet. 7600092204
  599.       IF p_prueba IS INITIAL.
  600. *AR - Fin - 22/02/2010 Pet. 7600092204
  601.         PERFORM tratamiento_de_lo_seleccionado.
  602. *AR - Inicio - 22/02/2010 Pet. 7600092204
  603.       ENDIF.
  604. *AR - Fin - 22/02/2010 Pet. 7600092204
  605.     ELSE.
  606. **Fin 23320-21/11/2006
  607.       PERFORM seleccion_traspaso.        " Programa ZWITI030.
  608.  
  609.     ENDIF.
  610. * Fin Modificación 23/11/2007 7700000579
  611.   ENDIF.
  612.  
  613. ************************************************************************
  614. *                         SUBRUTINAS                                   *
  615. ************************************************************************
  616.  
  617.   "Modificado por: Heizenreder Guillemo ---------------13.10.2010 15:25:58
  618. *---------------------------------------------------------------------*
  619. *       FORM INICIALIZAR_DATOS                                        *
  620. *---------------------------------------------------------------------*
  621. *       ........                                                      *
  622. *       ........                                                      *
  623. *       ........                                                      *
  624. *  TODO:                                                              *
  625. *   - Comentar                                                        *
  626. *   - Utilizar fs en vez de wa para el tratamiento de las tablas      *
  627. *     internas.                                                       *
  628. *---------------------------------------------------------------------*
  629.   "----------------------------------------------------------------------
  630. *&---------------------------------------------------------------------*
  631. *&      Form  inicializar_datos
  632. *&---------------------------------------------------------------------*
  633. *       text
  634. *----------------------------------------------------------------------*
  635. FORM inicializar_datos.
  636.  
  637.   DATA: BEGIN OF ti_tj30t OCCURS 0,
  638.           estat LIKE tj30t-estat,
  639.           txt04 LIKE tj30t-txt04,
  640.         END OF ti_tj30t.
  641.   DATA: BEGIN OF lt_anla OCCURS 0,
  642.           anln1 LIKE anla-anln1,
  643.           anln2 LIKE anla-anln2,
  644.           aktiv LIKE anla-aktiv,
  645.         END OF lt_anla.
  646.  
  647.   DATA: traspas(24), d_fecha_ini LIKE anla-aktiv.
  648.   CLEAR d_fecha_ini.
  649.  
  650.   "Modificado por: Heizenreder Guillemo ---------------13.10.2010 15:28:13
  651.   " Creamos los fs para referenciar a las it.
  652.   FIELD-SYMBOLS <lv_fs_ti_tj30t> LIKE LINE OF ti_tj30t.
  653.   FIELD-SYMBOLS <lv_fs_lt_anla> LIKE LINE OF lt_anla.
  654.   "-----------------------------------------------------------------------
  655.  
  656.   REFRESH movimientos.
  657.   CLEAR movimientos.
  658.  
  659. * gpn - INI - 9999001141 - 06/11/2009
  660.   MOVE sy-langu TO c_idioma.                                      "gpn+
  661. * gpn - FIN - 9999001141 - 06/11/2009
  662. * Buscar moneda e idioma de la sociedad.
  663. * gpn - INI - 9999001141 - 06/11/2009
  664. *  SELECT SINGLE waers spras INTO (c_moneda,c_idioma)             "gpn-
  665.   SELECT SINGLE waers INTO c_moneda                               "gpn+
  666. * gpn - FIN - 9999001141 - 06/11/2009
  667.         FROM t001
  668.         WHERE bukrs EQ p_bukrs.
  669. * Buscar Status interno del PEP a partir del Status externo.
  670.   IF p_anular IS INITIAL.
  671. * FBL
  672.     SELECT estat txt04
  673.       FROM tj30t
  674.       INTO TABLE ti_tj30t
  675.                  WHERE stsma EQ c_esquema
  676.                    AND spras EQ c_idioma
  677.                    AND ( txt04 EQ ce_cerr OR
  678.                          txt04 EQ ce_expl OR
  679.                          txt04 EQ ce_ctec OR
  680.                          txt04 EQ ce_libe ).
  681. *    SELECT ESTAT TXT04 FROM TJ30T INTO (TJ30T-ESTAT,TJ30T-TXT04)
  682. *                 WHERE STSMA EQ C_ESQUEMA      AND
  683. *                       SPRAS EQ C_IDIOMA       AND
  684. *                     ( TXT04 EQ CE_CERR OR
  685. *                       TXT04 EQ CE_EXPL OR
  686. *                       TXT04 EQ CE_CTEC OR
  687. *                       TXT04 EQ CE_LIBE ).
  688. *    ENDSELECT.
  689.  
  690.     " Modificado por: Heizenreder Guillemo --------------13.10.2010 15:34:20
  691.     " Se utilizan los fs para el recorrido de las tablas internas.
  692.     " Se reemplazan las ocurrencias de ti_tj30t por <lv_fs_ti_tj30t>
  693.  
  694. *    LOOP AT ti_tj30t.
  695. *      CASE ti_tj30t-txt04.
  696. *        WHEN ce_cerr. MOVE ti_tj30t-estat TO ci_cerr.
  697. *        WHEN ce_expl. MOVE ti_tj30t-estat TO ci_expl.
  698. *        WHEN ce_ctec. MOVE ti_tj30t-estat TO ci_ctec.
  699. *        WHEN ce_libe. MOVE ti_tj30t-estat TO ci_libe.
  700. *      ENDCASE.
  701. *    ENDLOOP.                                                "ti_tj30t
  702.  
  703.     LOOP AT ti_tj30t ASSIGNING <lv_fs_ti_tj30t>.
  704.       CASE <lv_fs_ti_tj30t>-txt04.
  705.         WHEN ce_cerr. MOVE <lv_fs_ti_tj30t>-estat TO ci_cerr.
  706.         WHEN ce_expl. MOVE <lv_fs_ti_tj30t>-estat TO ci_expl.
  707.         WHEN ce_ctec. MOVE <lv_fs_ti_tj30t>-estat TO ci_ctec.
  708.         WHEN ce_libe. MOVE <lv_fs_ti_tj30t>-estat TO ci_libe.
  709.       ENDCASE.
  710.     ENDLOOP.                                                "ti_tj30t
  711.     "-----------------------------------------------------------------------
  712.  
  713.     IF ci_cerr IS INITIAL  OR
  714.       ci_expl IS INITIAL  OR
  715.       ci_ctec IS INITIAL  OR
  716.       ci_libe IS INITIAL.
  717.       MESSAGE e155 WITH ci_cerr ci_expl ci_ctec ci_libe.
  718.     ENDIF.
  719.   ENDIF.
  720.   IF p_anular IS INITIAL.
  721.     REFRESH: ordenes,
  722.              repartos,
  723.              repartos1,
  724.              subnumeros.
  725.     CLEAR: ordenes,
  726.            repartos,
  727.            repartos1,
  728.            subnumeros.
  729.   ENDIF.
  730. * Inicializar tabla de Instalaciones Nuevas.
  731.   IF p_anular IS INITIAL.
  732.     REFRESH: instalanuevas.
  733.     CLEAR: instalanuevas.
  734.     MOVE: 'EQ' TO instalanuevas-option,
  735.           'I'  TO instalanuevas-sign.
  736. * fbl
  737. *    SELECT ANLN1 ANLN2 AKTIV
  738. *        FROM ANLA
  739. *      INTO (ANLA-ANLN1, ANLA-ANLN2, ANLA-AKTIV)
  740. *          WHERE BUKRS EQ P_BUKRS       AND
  741. *                ANLKL EQ CLASE_ANLUE.
  742.     SELECT anln1 anln2
  743.       INTO TABLE lt_anla
  744.         FROM anla
  745.         WHERE bukrs EQ p_bukrs     AND
  746.               anlkl EQ clase_anlue AND
  747.               aktiv EQ d_fecha_ini.
  748.  
  749.     " Modificado por: Heizenreder Guillemo --------------13.10.2010 16:03:50
  750.     " Se utilizan los fs para el recorrido de las tablas internas.
  751.     " Se Reemplazan las ocurrencias de lt_anla por <lv_fs_lt_anla>.
  752.  
  753. *    LOOP AT lt_anla.
  754. *      CONCATENATE lt_anla-anln1 lt_anla-anln2
  755. *      INTO traspas SEPARATED BY '-'.
  756. *      CONDENSE traspas NO-GAPS.
  757. *      MOVE traspas(20) TO instalanuevas-low.
  758. *      APPEND instalanuevas.
  759. *    ENDLOOP.
  760.  
  761.     LOOP AT lt_anla ASSIGNING <lv_fs_lt_anla>.
  762.       CONCATENATE <lv_fs_lt_anla>-anln1 <lv_fs_lt_anla>-anln2
  763.       INTO traspas SEPARATED BY '-'.
  764.       CONDENSE traspas NO-GAPS.
  765.       MOVE traspas(20) TO instalanuevas-low.
  766.       APPEND instalanuevas.
  767.     ENDLOOP.
  768.  
  769.     "-----------------------------------------------------------------------
  770.  
  771. *    ENDSELECT.
  772.   ENDIF.
  773.  
  774.   IF p_anular IS INITIAL.
  775. *   Inicializar tabla de Clases de Movimientos a seleccionar.
  776.     PERFORM carga_clases_movimientos.
  777.   ELSE.
  778. *   Inicializar tabla de Clases de Movimientos de Traspaso.
  779.     REFRESH: movims1.
  780.     CLEAR: movims1.
  781.     MOVE: 'EQ' TO movims1-option,
  782.           'I'  TO movims1-sign.
  783.  
  784.     movims1-low = c_mareacone.
  785.     APPEND movims1.
  786.     movims1-low = c_mareamede.
  787.     APPEND movims1.
  788.     movims1-low = c_mareanice.
  789.     APPEND movims1.
  790.     movims1-low = c_mareasuce.
  791.     APPEND movims1.
  792.     movims1-low = c_mareasuae.
  793.     APPEND movims1.
  794.     movims1-low = c_mareasuoe.
  795.     APPEND movims1.
  796.     movims1-low = c_mareasude.
  797.     APPEND movims1.
  798.     movims1-low = c_mareasune.
  799.     APPEND movims1.
  800.   ENDIF.
  801.  
  802.   " Modificado por: Heizenreder Guillemo --------------14.10.2010 11:39:50
  803.   " Desvinculamos los fs
  804.   UNASSIGN <lv_fs_ti_tj30t>.
  805.   UNASSIGN <lv_fs_lt_anla>.
  806.   "-----------------------------------------------------------------------
  807. ENDFORM.                               " inicializar_datos
  808. *---------------------------------------------------------------------*
  809. *       FORM CARGA_CLASES_MOVIMIENTOS                                 *
  810. *---------------------------------------------------------------------*
  811. *  Carga las clases de movimientos validos a seleccionar de la tabla  *
  812. *  ZITR                                                               *
  813. *                                                                     *
  814. *  -------------------------------------------------------------------*
  815. *  Se incorporan fs para el tratamiento de las tablas internas.       *
  816. *---------------------------------------------------------------------*
  817. FORM carga_clases_movimientos.
  818.   DATA: BEGIN OF lt_zitr OCCURS 0,
  819.           bwasl LIKE zitr-bwasl,
  820.           ziclase LIKE zitr-ziclase,
  821.         END OF lt_zitr.
  822.  
  823.   " Modificado por: Heizenreder Guillemo --------------13.10.2010 16:07:02
  824.   " Creamos el fs para referenciar la it_zitr
  825.   FIELD-SYMBOLS <lv_fs_lt_zitr> LIKE LINE OF lt_zitr.
  826.   "-----------------------------------------------------------------------
  827.  
  828.   REFRESH: movims.
  829.   CLEAR: movims, c_clase_intercalarios, c_clase_traslado.
  830.   MOVE 'CP' TO : movims-option,
  831.                  c_clase_intercalarios-option,
  832.                  c_clase_traslado-option,
  833.                  c_clase_baja-option.
  834.   MOVE 'I' TO : movims-sign,
  835.                 c_clase_intercalarios-sign,
  836.                 c_clase_traslado-sign,
  837.                 c_clase_baja-sign.
  838.  
  839. *FBL
  840.   SELECT bwasl ziclase
  841.     INTO TABLE lt_zitr
  842.     FROM zitr.
  843.  
  844.   " Modificado por: Heizenreder Guillemo --------------14.10.2010 10:55:58
  845.   " Se emplea fs para recorrer la tabla lt_zitr.
  846.   " Se reemplazan todas ls ocurrencias de lt_zitr por <lv_fs_lt_zitr>.
  847.  
  848. *  LOOP AT lt_zitr.
  849. **  SELECT * FROM ZITR.
  850. *    CASE lt_zitr-ziclase.
  851. *    WHEN 'B'.                        "baja
  852. *      c_clase_baja-low = lt_zitr-bwasl.
  853. *      APPEND c_clase_baja.
  854. *    WHEN 'A'.                        "alta
  855. *      movims-low = lt_zitr-bwasl.
  856. *      APPEND movims.
  857. *    WHEN 'I'.                        "intercalarios
  858. *      c_clase_intercalarios-low = lt_zitr-bwasl.
  859. *      APPEND c_clase_intercalarios.
  860. *    WHEN 'T'.                        "traslados
  861. *      c_clase_traslado-low = lt_zitr-bwasl.
  862. *      APPEND c_clase_traslado.
  863. *    ENDCASE.
  864. *  ENDLOOP.
  865.  
  866.   LOOP AT lt_zitr ASSIGNING <lv_fs_lt_zitr>.
  867. *  SELECT * FROM ZITR.
  868.     CASE <lv_fs_lt_zitr>-ziclase.
  869.       WHEN 'B'.                        "baja
  870.         c_clase_baja-low = <lv_fs_lt_zitr>-bwasl.
  871.         APPEND c_clase_baja.
  872.       WHEN 'A'.                        "alta
  873.         movims-low = <lv_fs_lt_zitr>-bwasl.
  874.         APPEND movims.
  875.       WHEN 'I'.                        "intercalarios
  876.         c_clase_intercalarios-low = <lv_fs_lt_zitr>-bwasl.
  877.         APPEND c_clase_intercalarios.
  878.       WHEN 'T'.                        "traslados
  879.         c_clase_traslado-low = <lv_fs_lt_zitr>-bwasl.
  880.         APPEND c_clase_traslado.
  881.     ENDCASE.
  882.   ENDLOOP.
  883.  
  884.   " Desreferenciamos el fs a la tabla lt_zitr.
  885.   UNASSIGN <lv_fs_lt_zitr>.
  886.  
  887.   "-----------------------------------------------------------------------
  888. *  ENDSELECT.
  889.  
  890. ENDFORM.                    "CARGA_CLASES_MOVIMIENTOS
  891.  
  892. " Modificado por: Heizenreder Guillemo --------------14.10.2010 12:38:24
  893. *---------------------------------------------------------------------*
  894. *       FORM SELECCIONAR_SUBNUMEROS_ORDENES                           *
  895. *---------------------------------------------------------------------*
  896. *       ........                                                      *
  897. *---------------------------------------------------------------------*
  898. *   TODO:                                                             *
  899. *    - Se incorporan fs para el tratamiento de las tablas internas.   *
  900. *    - Comentarios                                                    *
  901. *    - Complejiad: O(n^2)                                             *
  902. *    - FOR ALL ENTRIES debe utilizarse en vez de                      *
  903. *      LOOP AT ITAB /SELECT/ENDLOOP                                   *
  904. *---------------------------------------------------------------------*
  905. "-----------------------------------------------------------------------
  906.  
  907. *&---------------------------------------------------------------------*
  908. *&      Form  SELECCIONAR_SUBNUMEROS_ORDENES
  909. *&---------------------------------------------------------------------*
  910. *       text
  911. *----------------------------------------------------------------------*
  912. FORM seleccionar_subnumeros_ordenes.
  913. * ES26766923 - Inicio - 19/04/2010 - PMF 7700002847
  914. *  DATA: BEGIN OF lt_aufk,
  915. *          pspel LIKE aufk-pspel,
  916. *          aufnr LIKE aufk-aufnr,
  917. *          objnr LIKE aufk-objnr,
  918. *          auart LIKE aufk-auart,
  919. *        END OF lt_aufk.
  920.  
  921.   DATA: BEGIN OF lt_aufk OCCURS 0,
  922.             pspel LIKE aufk-pspel,
  923.             aufnr LIKE aufk-aufnr,
  924.             objnr LIKE aufk-objnr,
  925.             auart LIKE aufk-auart,
  926.           END OF lt_aufk.
  927.  
  928.   RANGES: r_anln1 FOR cobrb-anln1.
  929. * ES26766923 - Fin - 19/04/2010 - PMF 7700002847
  930.  
  931.   DATA: BEGIN OF lt_cobrb OCCURS 0,
  932.           anln1 LIKE cobrb-anln1,
  933.         END OF lt_cobrb.
  934.  
  935.   DATA: BEGIN OF lt_anla OCCURS 0,
  936.           anln2 LIKE anla-anln2,
  937.         END OF lt_anla.
  938.  
  939.   " Modificado por: Heizenreder Guillemo --------------13.10.2010 16:27:46
  940.   " Creamos los fs para referencias las tablas:
  941.   "  - lt_aufk; lt_anla; tl_pep; peps_seleccionados
  942.   FIELD-SYMBOLS <lv_fs_lt_aufk> LIKE LINE OF lt_aufk.
  943.   FIELD-SYMBOLS <lv_fs_tl_pep> LIKE LINE OF tl_pep.
  944.   FIELD-SYMBOLS <lv_fs_peps_seleccionados> LIKE LINE OF peps_seleccionados.
  945.   FIELD-SYMBOLS <lv_fs_ordenes> LIKE LINE OF ordenes.
  946.   "-----------------------------------------------------------------------
  947.  
  948.  
  949.   CLEAR c_usr03.
  950. * FBL
  951. ** Seleccionar PEPs de inversión pertenecientes a la sociedad solicitada
  952. ** que no esten cerrados y traspasados (USR03 <> INITIAL).
  953. *  EXEC SQL PERFORMING COMPROBAR_ESTADO_PEP.
  954. *    SELECT OBJNR, PSPNR, POSID, USR00, ZZTINS, USR03
  955. *           INTO :PEP_OBJNR,
  956. *                :PEP_PSPNR,
  957. *                :PEP_POSID,
  958. *                :PEP_ANLUE,
  959. *                :PEP_ZZTINS,
  960. *                :PEP_USR03
  961. *           FROM PRPS
  962. *           WHERE MANDT = :SY-MANDT AND
  963. * MIG 47x200 - ES36923012P - 04/05/2004 INI: Según petición de
  964. * explotación para forzar la lectura por el índice principal y mejorar
  965. * tiempos de respuesta.
  966. *                 PSPNR >= 0        AND
  967. * MIG 47x200 - ES36923012P - 04/05/2004 FIN.
  968. *                 PKOKR = :P_KOKRS  AND
  969. *                 PBUKR = :P_BUKRS  AND
  970. *                 ZZINVGAS = :C_INVERSION
  971. *                usr03 = :c_usr03
  972. *  ENDEXEC.
  973.  
  974. * ES26766923 - Inicio - 19/04/2010 - PMF 7700002847
  975. *********************************************************************
  976. * Optimizacion del codigo para mejorar los tiempo de acceso.
  977. * Se cambia el SELECT ENDSELECT por un SELECT y luego un LOOP
  978. * que recorrera los datos obtenidos
  979. * En los lugares que se utilizaban las variables obtenidas
  980. * del SELECT ENSELECT se cambiaron por  la estructura a la cual se loopea.
  981. **********************************************************************
  982.  
  983. *  SELECT pspnr posid objnr usr00 zztins usr03
  984. *    FROM prps
  985. *    INTO (pep_pspnr, pep_posid, pep_objnr, pep_anlue,
  986. *          pep_zztins, pep_usr03)
  987. *   WHERE pspnr >= 0
  988. *     AND pkokr = p_kokrs
  989. *     AND pbukr = p_bukrs
  990. *     AND zzinvgas = c_inversion
  991. *     AND zztins IN s_zztins.
  992. *
  993. *    PERFORM comprobar_estado_pep.
  994. *  ENDSELECT.
  995.  
  996.   SELECT pspnr posid objnr usr00 zztins usr03
  997.   FROM prps
  998.   INTO TABLE tl_pep
  999.   WHERE pspnr >= 0
  1000.      AND pkokr = p_kokrs
  1001.      AND pbukr = p_bukrs
  1002.      AND zzinvgas = c_inversion
  1003.      AND zztins IN s_zztins.
  1004.  
  1005.   " Modificado por: Heizenreder Guillemo --------------14.10.2010 13:02:38
  1006.   " Se utiliza fs en vez de wa para recorrer la tabla tl_pep.
  1007.   " Se reemplazan todas las ocurrencias de wl_pep por <lv_fs_tl_pep>.
  1008.   " Se emplea el fs local como parámetro para comprobar_estado_pep.
  1009.  
  1010. *  LOOP AT tl_pep INTO wl_pep.
  1011. *    PERFORM comprobar_estado_pep.
  1012. *  ENDLOOP.
  1013.  
  1014.   LOOP AT tl_pep ASSIGNING <lv_fs_tl_pep>.
  1015.     PERFORM comprobar_estado_pep USING <lv_fs_tl_pep>.
  1016.   ENDLOOP.
  1017.  
  1018.   " Desreferenciamos el fs que apunta a la tabla tl_pep.
  1019.   UNASSIGN <lv_fs_tl_pep>.
  1020.   "-----------------------------------------------------------------------
  1021.  
  1022. * ES26766923 - Fin - 19/04/2010 - PMF 7700002847
  1023.  
  1024. * Borra de los peps preseleccionados los que esten en 'LIBE' y no haya
  1025. * otro pep apuntando a la misma instalación que esté en otro status
  1026.   PERFORM borra_peps_libe.
  1027.  
  1028. * ES26766923 - Inicio - 19/04/2010 - PMF 7700002847
  1029.  
  1030. *  LOOP AT peps_seleccionados.
  1031. *    SELECT aufnr objnr auart FROM aufk
  1032. *      INTO (lt_aufk-aufnr, lt_aufk-objnr, lt_aufk-auart)
  1033. *     WHERE pspel = peps_seleccionados-pspnr.
  1034. ** Guardar el número de la orden y el número interno del elemento PEP
  1035. *      ordenes-estado = peps_seleccionados-estado.
  1036. *      ordenes-anlue  = peps_seleccionados-anlue.
  1037. *      ordenes-aufnr  = lt_aufk-aufnr.
  1038. *      ordenes-objnr  = lt_aufk-objnr.
  1039. *      ordenes-pspnr  = peps_seleccionados-pspnr.
  1040. *      ordenes-posid  = peps_seleccionados-posid.
  1041. *      IF lt_aufk-auart = c_clase_comun.
  1042. *        ordenes-orden_comun = 'X'.
  1043. *      ELSE.
  1044. *        ordenes-orden_comun = ' '.
  1045. *      ENDIF.
  1046. *      APPEND ordenes.
  1047. **    PERFORM CARGAR_TABLA_ELEMENTOS.
  1048. *    ENDSELECT.         "lt_aufk
  1049. **   PERFORM CARGAR_TABLA_ORDENES.
  1050. *  ENDLOOP.
  1051. * FBL
  1052.  
  1053.  
  1054.  
  1055.   " Modificado por: Heizenreder Guillemo --------------14.10.2010 15:38:43
  1056.   " Se utilizan fs para gestionar el recorrido de las tablas.
  1057.   " Se reemplazan todas las ocurrencias de:
  1058.   "  - peps_seleccionados por <lv_fs_peps_seleccionados>.
  1059.   "  - lt_aufk por <lv_fs_lt_aufk>.
  1060.  
  1061. *  IF  NOT peps_seleccionados[] IS INITIAL.
  1062. *    DESCRIBE TABLE peps_seleccionados LINES vl_tot_lines.
  1063. *    LOOP AT peps_seleccionados.
  1064. *      PERFORM indicador_progreso USING sy-tabix vl_tot_lines TEXT-028
  1065. *            peps_seleccionados-pspnr  ' ' .
  1066. *      REFRESH lt_aufk.
  1067. *      SELECT pspel aufnr objnr auart
  1068. *      FROM aufk
  1069. *      INTO TABLE lt_aufk
  1070. *      WHERE pspel = peps_seleccionados-pspnr.
  1071. *
  1072. *      CLEAR lt_aufk.
  1073. *      LOOP AT lt_aufk.
  1074. *        ordenes-estado = peps_seleccionados-estado.
  1075. *        ordenes-anlue  = peps_seleccionados-anlue.
  1076. *        ordenes-aufnr  = lt_aufk-aufnr.
  1077. *        ordenes-objnr  = lt_aufk-objnr.
  1078. *        ordenes-pspnr  = peps_seleccionados-pspnr.
  1079. *        ordenes-posid  = peps_seleccionados-posid.
  1080. *        IF lt_aufk-auart = c_clase_comun.
  1081. *          ordenes-orden_comun = 'X'.
  1082. *        ELSE.
  1083. *          ordenes-orden_comun = ' '.
  1084. *        ENDIF.
  1085. *        APPEND ordenes.
  1086. *        CLEAR ordenes.
  1087. *        CLEAR lt_aufk.
  1088. *      ENDLOOP.
  1089. *    ENDLOOP.
  1090. *  ENDIF.
  1091.   IF  NOT peps_seleccionados[] IS INITIAL.
  1092.     DESCRIBE TABLE peps_seleccionados LINES vl_tot_lines.
  1093.  
  1094.     LOOP AT peps_seleccionados ASSIGNING <lv_fs_peps_seleccionados>.
  1095.       PERFORM indicador_progreso USING sy-tabix vl_tot_lines text-028
  1096.             <lv_fs_peps_seleccionados>-pspnr  ' ' .
  1097.       REFRESH lt_aufk.
  1098.  
  1099.       SELECT pspel aufnr objnr auart
  1100.       FROM aufk
  1101.       INTO TABLE lt_aufk
  1102.       WHERE pspel = <lv_fs_peps_seleccionados>-pspnr.
  1103.  
  1104.       CLEAR lt_aufk. " No sirve ... antes del select se hace un refresh
  1105.       LOOP AT lt_aufk ASSIGNING <lv_fs_lt_aufk>.
  1106.         ordenes-estado = <lv_fs_peps_seleccionados>-estado.
  1107.         ordenes-anlue  = <lv_fs_peps_seleccionados>-anlue.
  1108.         ordenes-aufnr  = <lv_fs_lt_aufk>-aufnr.
  1109.         ordenes-objnr  = <lv_fs_lt_aufk>-objnr.
  1110.         ordenes-pspnr  = <lv_fs_peps_seleccionados>-pspnr.
  1111.         ordenes-posid  = <lv_fs_peps_seleccionados>-posid.
  1112.  
  1113.         IF <lv_fs_lt_aufk>-auart = c_clase_comun.
  1114.           ordenes-orden_comun = 'X'.
  1115.         ELSE.
  1116.           ordenes-orden_comun = ' '.
  1117.         ENDIF.
  1118.         APPEND ordenes.
  1119.         CLEAR ordenes.
  1120.         "CLEAR lt_aufk.
  1121.       ENDLOOP.
  1122.     ENDLOOP.
  1123.   ENDIF.
  1124.  
  1125.   " Desreferenciamos los fs empleados
  1126.   UNASSIGN <lv_fs_lt_aufk>.
  1127.   UNASSIGN <lv_fs_peps_seleccionados>.
  1128.   "-----------------------------------------------------------------------
  1129.  
  1130.  
  1131.  
  1132. * ES26766923 - Fin - 19/04/2010 - PMF 7700002847
  1133.  
  1134.  
  1135. * Obtener los subnúmeros
  1136.   IF NOT ordenes[] IS INITIAL.
  1137. * ES26766923 - Inicio - 19/04/2010 - PMF 7700002847
  1138. *    SELECT anln1 anln2
  1139. *      FROM zv_cobrb_anla INTO subnumeros
  1140. *      FOR ALL ENTRIES IN ordenes
  1141. *     WHERE bukrs = p_bukrs
  1142. *       AND objnr = ordenes-objnr.
  1143. *      COLLECT subnumeros.
  1144. *    ENDSELECT.
  1145.  
  1146. *    SELECT anln1 anln2
  1147. *    FROM zv_cobrb_anla INTO TABLE subnumeros
  1148. *    FOR ALL ENTRIES IN ordenes
  1149. *    WHERE bukrs = p_bukrs
  1150. *      AND objnr = ordenes-objnr.
  1151.  
  1152.     r_anln1-sign = 'E'.
  1153.     r_anln1-option = 'CP'.
  1154.     r_anln1-low = '2*'.
  1155.     APPEND r_anln1.
  1156.     r_anln1-sign = 'E'.
  1157.     r_anln1-option = 'CP'.
  1158.     r_anln1-low = '4*'.
  1159.     APPEND r_anln1.
  1160.  
  1161.     " Modificado por: Heizenreder Guillemo --------------14.10.2010 16:01:33
  1162.     " Se utilizan fs para gestionar el recorrido de las ordenes.
  1163.     " Se reemplazan todas las ocurrencias de:
  1164.     "  - ordenes por <lv_fs_ordenes>.
  1165.  
  1166. *    LOOP AT ordenes.
  1167. *      SELECT anln1 anln2
  1168. *      FROM cobrb
  1169. *      APPENDING TABLE subnumeros
  1170. *      WHERE objnr = ordenes-objnr.
  1171. *    ENDLOOP.
  1172.     LOOP AT ordenes ASSIGNING <lv_fs_ordenes>.
  1173.       SELECT anln1 anln2
  1174.       FROM cobrb
  1175.       APPENDING TABLE subnumeros
  1176.       WHERE objnr = <lv_fs_ordenes>-objnr.
  1177.     ENDLOOP.
  1178.  
  1179.     " Desreferenciamos el fs
  1180.     UNASSIGN <lv_fs_ordenes>.
  1181.     "-----------------------------------------------------------------------
  1182.  
  1183.     DELETE subnumeros WHERE anln1 IN r_anln1.
  1184.     DELETE ADJACENT DUPLICATES FROM subnumeros.
  1185.  
  1186. * ES26766923 - Fin - 19/04/2010 - PMF 7700002847
  1187.   ENDIF.
  1188.  
  1189. ENDFORM.                               " seleccionar_subnumeros_ordenes
  1190. *----------------------------------------------------------------------*
  1191. *       FORM BORRA_PEPS_LIBE                                           *
  1192. *----------------------------------------------------------------------*
  1193. * Borra de los peps preseleccionados los que esten en 'LIBE' y no haya *
  1194. * otro pep apuntando a la misma instalación que esté en otro status    *
  1195. *----------------------------------------------------------------------*
  1196. FORM borra_peps_libe.
  1197.   DATA: d_indice LIKE sy-tabix.
  1198.  
  1199.   " Modificado por: Heizenreder Guillemo --------------14.10.2010 15:24:11
  1200.   " Creamos dos fs para gestionar el control de peps_seleccionados.
  1201.   FIELD-SYMBOLS <lv_fs_peps_sel_uno> LIKE LINE OF peps_seleccionados.
  1202.   FIELD-SYMBOLS <lv_fs_peps_sel_dos> LIKE LINE OF peps_seleccionados.
  1203.   "-----------------------------------------------------------------------
  1204.  
  1205.  
  1206.   " Modificado por: Heizenreder Guillemo --------------14.10.2010 15:29:16
  1207.   " Se utilizan los fs en vez de la cabecera de la tabla peps_seleccionados.
  1208.   " Se reemplazan todas las ocurrencias de peps_seleccionados por:
  1209.   "   - <lv_fs_peps_sel_uno> : loop externo.
  1210.   "   - <lv_fs_peps_sel_dos> : loop interno.
  1211.  
  1212. ** gpn - INI - 9999001141 - 06/11/2009
  1213. **  LOOP AT peps_seleccionados WHERE estado = 'LIBE'.              "gpn-
  1214. *
  1215. *  LOOP AT peps_seleccionados WHERE estado = TEXT-t04.             "gpn+
  1216. *    d_indice = sy-tabix.
  1217. *    LOOP AT peps_seleccionados WHERE anlue = peps_seleccionados-anlue
  1218. *    AND estado NE TEXT-t04.           "gpn+
  1219. **                                AND estado NE 'LIBE'.            "gpn-
  1220. ** gpn - FIN - 9999001141 - 06/11/2009
  1221. *      EXIT.
  1222. *    ENDLOOP.
  1223. *    IF sy-subrc NE 0.
  1224. *      DELETE peps_seleccionados INDEX d_indice.
  1225. *    ENDIF.
  1226. *  ENDLOOP.
  1227.  
  1228. * gpn - INI - 9999001141 - 06/11/2009
  1229. *  LOOP AT peps_seleccionados WHERE estado = 'LIBE'.              "gpn-
  1230.  
  1231.   LOOP AT peps_seleccionados ASSIGNING <lv_fs_peps_sel_uno>
  1232.     WHERE estado = text-t04.             "gpn+
  1233.     d_indice = sy-tabix.
  1234.     LOOP AT peps_seleccionados ASSIGNING <lv_fs_peps_sel_dos>
  1235.       WHERE anlue = <lv_fs_peps_sel_uno>-anlue
  1236.     AND estado NE text-t04.           "gpn+
  1237. *                                AND estado NE 'LIBE'.            "gpn-
  1238. * gpn - FIN - 9999001141 - 06/11/2009
  1239.       EXIT.
  1240.     ENDLOOP.
  1241.     IF sy-subrc NE 0.
  1242.       DELETE peps_seleccionados INDEX d_indice.
  1243.     ENDIF.
  1244.   ENDLOOP.
  1245.  
  1246.   " Desreferenciamos los fs a peps_seleccionados.
  1247.   UNASSIGN <lv_fs_peps_sel_uno>.
  1248.   UNASSIGN <lv_fs_peps_sel_dos>.
  1249.   "-----------------------------------------------------------------------
  1250.  
  1251. ENDFORM.                    "BORRA_PEPS_LIBE
  1252.  
  1253. " Modificado por: Heizenreder Guillemo --------------14.10.2010 10:45:42
  1254. *---------------------------------------------------------------------*
  1255. *       FORM COMPROBAR_ESTADO_PEP                                     *
  1256. *---------------------------------------------------------------------*
  1257. * Verifica que exista algún estado válido con fecha de modificación   *
  1258. * del mismo mes que el traspaso                                       *
  1259. *                                                                     *
  1260. *       ........                                                      *
  1261. *       ........                                                      *
  1262. * TODO:                                                               *
  1263. *  - No utilizar wa sino fs.                                          *
  1264. *  - Incorporar parámetro fs para emplearlo en vez de wa              *
  1265. *  - Reemplazar todas las ocurrencias wl_pep por <lv_fs_tl_pep>       *
  1266. *  - Asignarle tipo al parámetro fs -> mejora performance             *
  1267. *  - Comentarios                                                      *
  1268. *---------------------------------------------------------------------*
  1269. * FORM comprobar_estado_pep.
  1270. "----------------------------------------------------------------------
  1271. *&---------------------------------------------------------------------*
  1272. *&      Form  COMPROBAR_ESTADO_PEP
  1273. *&---------------------------------------------------------------------*
  1274. *       text
  1275. *----------------------------------------------------------------------*
  1276. *      -->P_FS_PEP   text
  1277. *----------------------------------------------------------------------*
  1278. FORM comprobar_estado_pep USING p_fs_pep LIKE LINE OF tl_pep.
  1279.   DATA: pep_usr03_ok LIKE sy-datum,
  1280.         v_udate LIKE sy-datum.
  1281.  
  1282.   " Modificado por: Heizenreder Guillemo --------------14.10.2010 14:24:36
  1283.   " Se emplea fs en vez de wa.
  1284.   " Creamos el fs y asignamos al pasado por parámetro.
  1285.   FIELD-SYMBOLS <lv_fs_tl_pep> LIKE LINE OF tl_pep.
  1286.   ASSIGN p_fs_pep TO <lv_fs_tl_pep>.
  1287.   "-----------------------------------------------------------------------
  1288.  
  1289.  
  1290.   " Modificado por: Heizenreder Guillemo --------------14.10.2010 14:36:06
  1291.   " Reemplazo wl_pep por <lv_fs_tl_pep>.
  1292. *   MOVE wl_pep-anlue TO inst_a_convertir.
  1293.  
  1294.   MOVE <lv_fs_tl_pep>-anlue TO inst_a_convertir.
  1295.   "-----------------------------------------------------------------------
  1296.  
  1297.   PERFORM convertir_sin_ceros.
  1298.  
  1299.   CHECK inst_a_convertir IN s_anlue.
  1300.  
  1301. * Calculo del estado del PEP
  1302.  
  1303.   " Modificado por: Heizenreder Guillemo --------------14.10.2010 14:49:23
  1304.   " Reemplazo wl_pep por <lv_fs_tl_pep>.
  1305. *    PERFORM estadopep USING wl_pep-objnr ordenes-estado v_udate.
  1306.  
  1307.   PERFORM estadopep USING <lv_fs_tl_pep>-objnr ordenes-estado v_udate.
  1308.   "-----------------------------------------------------------------------
  1309.  
  1310.   " Modificado por: Heizenreder Guillemo --------------14.10.2010 15:09:36
  1311.   " Reemplazo todas las ocurrencias de wl_pep por <lv_fs_tl_pep>.
  1312.  
  1313. *        CONCATENATE wl_pep-usr03+6(4)
  1314. *        wl_pep-usr03+3(2)
  1315. *        wl_pep-usr03(2) INTO pep_usr03_ok.
  1316. *
  1317. **    write:/ pep_posid, ordenes-estado, 'F.St', v_udate dd/mm/yy
  1318. **                                                       , 'F.Tr',
  1319. **                                               pep_usr03_ok dd/mm/yy.
  1320. *
  1321. *        IF ( ordenes-estado EQ ce_cerr  AND v_udate >= pep_usr03_ok ) OR
  1322. *        ( ordenes-estado EQ ce_cerr  AND wl_pep-usr03 IS INITIAL ) OR
  1323. *        ordenes-estado EQ ce_ctec  OR
  1324. *        ordenes-estado EQ ce_expl  OR
  1325. *        wl_pep-anlue IN instalanuevas.
  1326. *
  1327. **write: 'Lo toma'.
  1328. **if pep_anlue in instalanuevas.
  1329. **write: 'Instalacion nueva'.
  1330. **endif.
  1331. *
  1332. *          MOVE wl_pep-objnr TO peps_seleccionados-objnr.
  1333. *          MOVE wl_pep-pspnr TO peps_seleccionados-pspnr.
  1334. *          MOVE wl_pep-posid TO peps_seleccionados-posid.
  1335. *          MOVE wl_pep-anlue TO peps_seleccionados-anlue.
  1336. *          MOVE ordenes-estado TO peps_seleccionados-estado.
  1337. *          APPEND peps_seleccionados.
  1338. *        ELSE.
  1339. **write: 'No lo toma'.
  1340. *        ENDIF.
  1341. *      ENDIF.
  1342.  
  1343.   IF NOT ordenes-estado IS INITIAL.
  1344.     CONCATENATE <lv_fs_tl_pep>-usr03+6(4)
  1345.     <lv_fs_tl_pep>-usr03+3(2)
  1346.     <lv_fs_tl_pep>-usr03(2) INTO pep_usr03_ok.
  1347.  
  1348. *    write:/ pep_posid, ordenes-estado, 'F.St', v_udate dd/mm/yy
  1349. *                                                       , 'F.Tr',
  1350. *                                               pep_usr03_ok dd/mm/yy.
  1351.  
  1352.     IF ( ordenes-estado EQ ce_cerr  AND v_udate >= pep_usr03_ok ) OR
  1353.     ( ordenes-estado EQ ce_cerr  AND <lv_fs_tl_pep>-usr03 IS INITIAL ) OR
  1354.     ordenes-estado EQ ce_ctec  OR
  1355.     ordenes-estado EQ ce_expl  OR
  1356.     <lv_fs_tl_pep>-anlue IN instalanuevas.
  1357.  
  1358. *write: 'Lo toma'.
  1359. *if pep_anlue in instalanuevas.
  1360. *write: 'Instalacion nueva'.
  1361. *endif.
  1362.  
  1363.       MOVE <lv_fs_tl_pep>-objnr TO peps_seleccionados-objnr.
  1364.       MOVE <lv_fs_tl_pep>-pspnr TO peps_seleccionados-pspnr.
  1365.       MOVE <lv_fs_tl_pep>-posid TO peps_seleccionados-posid.
  1366.       MOVE <lv_fs_tl_pep>-anlue TO peps_seleccionados-anlue.
  1367.       MOVE ordenes-estado TO peps_seleccionados-estado.
  1368.       APPEND peps_seleccionados.
  1369.     ELSE.
  1370. *write: 'No lo toma'.
  1371.     ENDIF.
  1372.   ENDIF.
  1373.   "-----------------------------------------------------------------------
  1374.  
  1375.   " Modificado por: Heizenreder Guillemo --------------14.10.2010 15:12:37
  1376.   " Desreferenciamos el fs.
  1377.   UNASSIGN <lv_fs_tl_pep>.
  1378.   "-----------------------------------------------------------------------
  1379. ENDFORM.                               " comprobar_estado_pep
  1380.  
  1381.  
  1382. *-----------------------------------------------------------------------
  1383. * FORM CONVERTIR_A_CEROS
  1384. *-----------------------------------------------------------------------
  1385. FORM convertir_sin_ceros.
  1386.   DATA: longi TYPE i.
  1387.   CLEAR: pep_anlue2.
  1388.   SEARCH inst_a_convertir FOR '-'.
  1389.   IF sy-subrc = 0.
  1390.     longi = sy-fdpos + 1.
  1391.     MOVE inst_a_convertir+longi TO pep_anlue2.
  1392.     CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
  1393.       EXPORTING
  1394.         input  = pep_anlue2
  1395.       IMPORTING
  1396.         output = pep_anlue2
  1397.       EXCEPTIONS
  1398.         OTHERS = 1.
  1399.     longi = sy-fdpos + 1.
  1400.     inst_a_convertir = inst_a_convertir(longi).
  1401.     inst_a_convertir+longi = pep_anlue2.
  1402.   ELSE.
  1403.     inst_a_convertir = pep_anlue.
  1404.   ENDIF.
  1405. ENDFORM.                               " convertir_sin_ceros
  1406. *---------------------------------------------------------------------*
  1407. *       FORM CONVERTIR_CON_CEROS                                      *
  1408. *---------------------------------------------------------------------*
  1409. *       ........                                                      *
  1410. *---------------------------------------------------------------------*
  1411. FORM convertir_con_ceros.
  1412.   DATA: longi TYPE i.
  1413.   CLEAR: pep_anlue2.
  1414.   SEARCH inst_a_convertir FOR '-'.
  1415.   IF sy-subrc = 0.
  1416.     longi = sy-fdpos + 1.
  1417.     MOVE inst_a_convertir+longi TO pep_anlue2.
  1418.     CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
  1419.       EXPORTING
  1420.         input  = pep_anlue2
  1421.       IMPORTING
  1422.         output = pep_anlue2
  1423.       EXCEPTIONS
  1424.         OTHERS = 1.
  1425.     longi = sy-fdpos + 1.
  1426.     pep_anlue_con_ceros = inst_a_convertir(longi).
  1427.     pep_anlue_con_ceros+longi = pep_anlue2.
  1428.   ELSE.
  1429.     pep_anlue_con_ceros = pep_anlue.
  1430.   ENDIF.
  1431. ENDFORM.                               " convertir_con_ceros
  1432. *----------------------------------------------------------------------*
  1433. * FORM CARGAR_TABLA_ORDENES                                            *
  1434. *----------------------------------------------------------------------*
  1435. FORM cargar_tabla_ordenes.
  1436. * FBL
  1437.   DATA: BEGIN OF lt_aufk OCCURS 0,
  1438.           aufnr LIKE aufk-aufnr,
  1439.           objnr LIKE aufk-objnr,
  1440.           auart LIKE aufk-auart,
  1441.         END OF lt_aufk.
  1442.   DATA: BEGIN OF lt_cobrb OCCURS 0,
  1443.           objnr LIKE cobrb-objnr,
  1444.           anln1 LIKE cobrb-anln1,
  1445.         END OF lt_cobrb.
  1446.   DATA: BEGIN OF lt_anla OCCURS 0,
  1447.           anln1 LIKE anla-anln1,
  1448.           anln2 LIKE anla-anln2,
  1449.         END OF lt_anla.
  1450.  
  1451. * Buscar las órdenes del pep que se está tratando
  1452. *  EXEC SQL PERFORMING CARGAR_TABLA_ELEMENTOS.
  1453. *    SELECT AUFNR, OBJNR, AUART
  1454. *           INTO :O_AUFNR,
  1455. *                :O_OBJNR,
  1456. *                :O_AUART
  1457. *           FROM AUFK
  1458. *           WHERE MANDT = :SY-MANDT AND
  1459. *                 PSPEL = :PEP_PSPNR
  1460. *  ENDEXEC.
  1461.   SELECT aufnr objnr auart
  1462.     INTO CORRESPONDING FIELDS OF TABLE lt_aufk
  1463.     FROM aufk
  1464.     WHERE pspel = pep_pspnr.
  1465.   SELECT objnr anln1
  1466.     INTO CORRESPONDING FIELDS OF TABLE lt_cobrb
  1467.     FROM cobrb
  1468.     FOR ALL ENTRIES IN lt_aufk
  1469.     WHERE objnr = lt_aufk-objnr        AND
  1470.        ( anln1 LIKE c_curso1  OR
  1471.          anln1 LIKE c_curso2 ).
  1472.   SELECT anln1 anln2
  1473.     INTO CORRESPONDING FIELDS OF TABLE lt_anla
  1474.     FROM anla
  1475.     FOR ALL ENTRIES IN lt_cobrb
  1476.   WHERE bukrs = p_bukrs
  1477.     AND anln1 = lt_cobrb-anln1.
  1478.  
  1479.   LOOP AT lt_aufk.
  1480.     o_aufnr = lt_aufk-aufnr.
  1481.     o_objnr = lt_aufk-objnr.
  1482.     o_auart = lt_aufk-auart.
  1483. * Guardar el número de la orden y el número interno del elemento PEP
  1484.     ordenes-anlue = pep_anlue.
  1485.     ordenes-aufnr = o_aufnr.
  1486.     ordenes-pspnr = pep_pspnr.
  1487.     ordenes-posid = pep_posid.
  1488.     ordenes-orden_comun = ' '.
  1489.     IF o_auart = c_clase_comun.
  1490.       ordenes-orden_comun = 'X'.
  1491.     ENDIF.
  1492.     APPEND ordenes.
  1493.     LOOP AT lt_cobrb WHERE objnr = lt_aufk-objnr.
  1494.       subnumeros-anln1 = lt_cobrb-anln1.
  1495.       LOOP AT lt_anla WHERE anln1 = lt_cobrb-anln1.
  1496.         subnumeros-anln2 = lt_anla-anln2.
  1497.         COLLECT subnumeros.
  1498.       ENDLOOP.
  1499.     ENDLOOP.
  1500.  
  1501. *    PERFORM CARGAR_TABLA_ELEMENTOS.
  1502.   ENDLOOP.         "lt_aufk
  1503. ENDFORM.                               " cargar_tabla_ordenes
  1504. *----------------------------------------------------------------------*
  1505. * FORM CARGAR_TABLA_ELEMENTOS                                          *
  1506. *----------------------------------------------------------------------*
  1507. * Guardar los elementos en curso donde ha liquidado la orden           *
  1508. *----------------------------------------------------------------------*
  1509. FORM cargar_tabla_elementos.
  1510.  
  1511. * Guardar el número de la orden y el número interno del elemento PEP
  1512.   ordenes-anlue = pep_anlue.
  1513.   ordenes-aufnr = o_aufnr.
  1514.   ordenes-pspnr = pep_pspnr.
  1515.   ordenes-posid = pep_posid.
  1516.   ordenes-orden_comun = ' '.
  1517.   IF o_auart = c_clase_comun.
  1518.     ordenes-orden_comun = 'X'.
  1519.   ENDIF.
  1520.   APPEND ordenes.
  1521.  
  1522. * Seleccionar los elementos en curso donde ha liquidado la orden
  1523.   SELECT anln1
  1524.          FROM cobrb
  1525.          INTO subnumeros-anln1
  1526.          WHERE objnr = o_objnr        AND
  1527. * desactivados a fecha 26.11.1998( para que funcione!!)
  1528. *             ersja <> 0              and
  1529. *             erspe <> 0              and
  1530.             ( anln1 LIKE c_curso1  OR
  1531.               anln1 LIKE c_curso2 ).
  1532.     SELECT anln2 FROM anla INTO subnumeros-anln2
  1533.     WHERE bukrs = p_bukrs
  1534.       AND anln1 = subnumeros-anln1.
  1535.       COLLECT subnumeros.
  1536.     ENDSELECT.
  1537.   ENDSELECT.
  1538.  
  1539. * se probó en enero-1999 de buscar en la bseg los elemementos
  1540. * que hayan tenido imputación a la orden tratada de la bseg
  1541. * pero fue muy lento
  1542. * por lo que se optó a coger todos los subnumeros de la anla de los
  1543. * elementos que estén en la norma
  1544. * perform carga_elementos_bseg.
  1545.  
  1546. ENDFORM.                               " CARGAR_TABLA_ELEMENTOS.
  1547. *---------------------------------------------------------------------*
  1548. *       FORM CARGA_ELEMENTOS_BSEG                                     *
  1549. *---------------------------------------------------------------------*
  1550. *       ........                                                      *
  1551. *---------------------------------------------------------------------*
  1552. FORM carga_elementos_bseg.
  1553.   SELECT anln1 anln2
  1554.         FROM bseg
  1555.      INTO (subnumeros-anln1, subnumeros-anln2)
  1556.            WHERE  bukrs  EQ  p_bukrs      AND
  1557.                   gjahr  EQ  '1998'       AND
  1558.                   ( bschl  = '70'       OR bschl = '75' ) AND
  1559.                   bzdat  <=  p_fecha      AND
  1560.                   aufnr  EQ  ordenes-aufnr.
  1561.     COLLECT subnumeros.
  1562.   ENDSELECT.
  1563. ENDFORM.                    "CARGA_ELEMENTOS_BSEG
  1564. *----------------------------------------------------------------------*
  1565. * FORM TRATAR_SUBNUMEROS                                               *
  1566. *----------------------------------------------------------------------*
  1567. FORM tratar_subnumeros.
  1568.  
  1569.   " Modificado por: Heizenreder Guillemo --------------14.10.2010 16:11:26
  1570.   " Creamos fs para gestionar el control de la tabla subnumeros.
  1571.   FIELD-SYMBOLS <lv_fs_subnumeros> LIKE LINE OF subnumeros.
  1572.   "-----------------------------------------------------------------------
  1573.  
  1574.   SORT ordenes BY aufnr.
  1575.   DESCRIBE TABLE  subnumeros LINES vl_tot_lines.
  1576.  
  1577.   " Modificado por: Heizenreder Guillemo --------------14.10.2010 16:12:44
  1578.   " Se emplea fs en cabecera para realizar el recorrido de subnumeros.
  1579.   " Se reemplazan todas las ocurrencias de subnumeros por <lv_fs_subnumeros>.
  1580. *  LOOP AT subnumeros.
  1581. *    PERFORM indicador_progreso USING sy-tabix vl_tot_lines TEXT-054
  1582. *          subnumeros-anln1
  1583. *          subnumeros-anln2 .
  1584. *    PERFORM seleccionar_movimientos.
  1585. *  ENDLOOP.
  1586.   LOOP AT subnumeros ASSIGNING <lv_fs_subnumeros> .
  1587.     PERFORM indicador_progreso USING sy-tabix vl_tot_lines text-054
  1588.           <lv_fs_subnumeros>-anln1
  1589.           <lv_fs_subnumeros>-anln2 .
  1590.     PERFORM seleccionar_movimientos USING <lv_fs_subnumeros>.
  1591.   ENDLOOP.
  1592.  
  1593.   " Desreferenciamos el fs apuntado a subnumeros.
  1594.   UNASSIGN <lv_fs_subnumeros>.
  1595.   "-----------------------------------------------------------------------
  1596.  
  1597. ENDFORM.                               " tratar_subnumeros
  1598. *----------------------------------------------------------------------*
  1599. * FORM SELECCIONAR_MOVIMIENTOS                                         *
  1600. *----------------------------------------------------------------------*
  1601. * Movimientos a traspasar pertenecientes al subnúmero                  *
  1602. *----------------------------------------------------------------------*
  1603. " Modificado por: Heizenreder Guillemo --------------14.10.2010 16:18:17
  1604. " Se incorpora un fs como parámetro.
  1605. *FORM seleccionar_movimientos.
  1606. FORM seleccionar_movimientos USING p_fs LIKE LINE OF subnumeros.
  1607.   "-----------------------------------------------------------------------
  1608.   REFRESH parciales.
  1609.   CLEAR: parciales,
  1610.          total_mov.
  1611.  
  1612.   " Modificado por: Heizenreder Guillemo --------------14.10.2010 16:11:26
  1613.   " Creamos fs para gestionar el control de la tabla subnumeros y tl_anep.
  1614.   " Asignamos el fs local al pasado por parámetro.
  1615.   FIELD-SYMBOLS <lv_fs_tl_anep> LIKE LINE OF tl_anep.
  1616.   FIELD-SYMBOLS <lv_fs_subnumeros> LIKE LINE OF subnumeros.
  1617.   ASSIGN p_fs TO <lv_fs_subnumeros>.
  1618.   "-----------------------------------------------------------------------
  1619.  
  1620.  
  1621. * ES26766923 - Inicio - 19/04/2010 - PMF 7700002847
  1622. *  SELECT anbtr gjahr lnran bwasl afabe anln1 anln2 bzdat belnr buzei
  1623. *         INTO CORRESPONDING FIELDS OF anep
  1624. *          FROM anep
  1625. *           WHERE bukrs = p_bukrs          AND
  1626. *                 anln1 = subnumeros-anln1 AND
  1627. *                 anln2 = subnumeros-anln2 AND
  1628. *                 afabe <> c_areafis       AND
  1629. *                 anbtr <> 0               AND
  1630. *                 bzdat <= p_fecha      " AND
  1631. **                 BELNR >= '0100003807'
  1632. *           ORDER BY afabe bzdat gjahr lnran.
  1633. *    ON CHANGE OF anep-afabe.
  1634. *      REFRESH parciales.
  1635. *      CLEAR: parciales,
  1636. *             total_mov.
  1637. *    ENDON.
  1638. *    PERFORM tratar_movimiento.
  1639. *  ENDSELECT.
  1640.  
  1641. * Se cambia el SELECT ENDSELECT por un SELECT y luego un LOOP
  1642. * por lo que en todos los lugares en donde se hacia referencia
  1643. * a la cabecera de la table ANEP dentro del perform TRATAR_MOVIMIENTOS
  1644. * se cambiara por la extructura en la cual se loopea la tabla
  1645.  
  1646.  
  1647.   " Modificado por: Heizenreder Guillemo --------------14.10.2010 16:22:34
  1648.   " Se emplea el fs pasado por parámetro en vez de la cabecera de subnumeros.
  1649.   " Se reemplazan todas las ocurrencias de subnumeros por:
  1650.   "   - <lv_fs_subnumeros>
  1651.   SELECT anbtr gjahr lnran bwasl afabe anln1 anln2 bzdat belnr buzei
  1652.   FROM anep
  1653.   INTO CORRESPONDING FIELDS OF TABLE tl_anep
  1654.   WHERE bukrs = p_bukrs
  1655.   AND anln1 = <lv_fs_subnumeros>-anln1 AND
  1656.   anln2 = <lv_fs_subnumeros>-anln2.
  1657.   "-----------------------------------------------------------------------
  1658.  
  1659.  
  1660.   DELETE tl_anep WHERE
  1661.             NOT ( afabe <> c_areafis       AND
  1662.                   anbtr <> 0               AND
  1663.                   bzdat <= p_fecha ).
  1664.  
  1665.  
  1666.   SORT tl_anep BY afabe bzdat gjahr lnran.
  1667.   CLEAR wl_anep.
  1668.  
  1669.   " Modificado por: Heizenreder Guillemo --------------14.10.2010 16:32:34
  1670.   " Se emplea el fs para gestionar el recorrido de la tabla anep.
  1671.   " Se reemplazan todas las ocurrencias de wl_anep por:
  1672.   "   - <lv_fs_tl_anep>
  1673. *  LOOP AT  tl_anep INTO wl_anep.
  1674. *    ON CHANGE OF wl_anep-afabe.
  1675. *    REFRESH parciales.
  1676. *    CLEAR: parciales,
  1677. *    total_mov.
  1678. *    ENDON.
  1679. *    PERFORM tratar_movimiento.
  1680. *    CLEAR: wl_anep.
  1681. *  ENDLOOP.
  1682.   LOOP AT tl_anep ASSIGNING <lv_fs_tl_anep>.
  1683.     ON CHANGE OF <lv_fs_tl_anep>-afabe.
  1684.       REFRESH parciales.
  1685.       CLEAR: parciales,
  1686.       total_mov.
  1687.     ENDON.
  1688.     PERFORM tratar_movimiento USING <lv_fs_tl_anep>.
  1689.     "CLEAR: wl_anep.
  1690.  
  1691.   ENDLOOP.
  1692.   " Desreferenciamos el fs
  1693.   UNASSIGN <lv_fs_tl_anep>.
  1694. * ES26766923 - Fin - 19/04/2010 - PMF 7700002847
  1695.   "-----------------------------------------------------------------------
  1696.  
  1697. ENDFORM.                               " SELECCIONAR_MOVIMIENTOS
  1698.  
  1699. *----------------------------------------------------------------------*
  1700. * FORM TRATAR_MOVIMIENTO                                               *
  1701. *                                                                     *
  1702. *       ........                                                      *
  1703. *       ........                                                      *
  1704. * TODO:                                                               *
  1705. *  - No utilizar wa sino fs.                                          *
  1706. *  - Incorporar parámetro fs para emplearlo en vez de wa              *
  1707. *  - Reemplazar todas las ocurrencias wl_pep por <lv_fs_tl_pep>       *
  1708. *  - Asignarle tipo al parámetro fs -> mejora performance             *
  1709. *  - Comentarios                                                      *
  1710. *----------------------------------------------------------------------*
  1711. FORM tratar_movimiento USING p_fs LIKE LINE OF tl_anep.
  1712.  
  1713.   " Modificado por: Heizenreder Guillemo --------------14.10.2010 16:11:26
  1714.   " Creamos fs para gestionar el control de la tabla tl_anep.
  1715.   " Asignamos el fs local al pasado por parámetro.
  1716.   FIELD-SYMBOLS <lv_fs_tl_anep> LIKE LINE OF tl_anep.
  1717.   ASSIGN p_fs TO <lv_fs_tl_anep>.
  1718.   "-----------------------------------------------------------------------
  1719.  
  1720.  
  1721.   " Modificado por: Heizenreder Guillemo --------------18.10.2010 10:03:39
  1722.   " Se utiliza fs en vez de wa.
  1723.   " Se reemplazan todas las ocurrencias de wl_anep por <lv_fs_til_anep>
  1724.  
  1725. ** Si es un movimiento de liquidación o de intercalarios
  1726. *  IF wl_anep-bwasl IN movims OR wl_anep-bwasl IN c_clase_intercalarios.
  1727. *    PERFORM buscar_orden.
  1728. *
  1729. *    total_mov =  total_mov + wl_anep-anbtr.
  1730. **   Si la orden está en la tabla ordenes guardar los datos del movim.
  1731. *    IF NOT bseg-aufnr IS INITIAL.
  1732. *      READ TABLE ordenes WITH KEY aufnr = bseg-aufnr BINARY SEARCH.
  1733. *      IF sy-subrc = 0.
  1734. *        MOVE-CORRESPONDING: wl_anep TO movimientos,
  1735. *        ordenes TO movimientos,
  1736. *        movimientos TO totpep.
  1737. *        COLLECT totpep.
  1738. *
  1739. **       Si el movimiento aun no ha sido traspasado
  1740. *        IF  anek-auglz IS INITIAL  OR anek-auglz = space.
  1741. *          IF ordenes-estado NE ce_libe.
  1742. *            movimientos-cantidad = wl_anep-anbtr.
  1743. *            movimientos-traspasar = 'X'.
  1744. *          ELSE.
  1745. *            movimientos-cantidad = 0.
  1746. *            movimientos-traspasar = ' '.
  1747. *          ENDIF.
  1748. *          APPEND movimientos.
  1749. *          MOVE-CORRESPONDING ordenes TO parciales.
  1750. *          parciales-cantidad = wl_anep-anbtr.
  1751. *          COLLECT parciales.
  1752. *        ENDIF.
  1753. *
  1754. **       Reparto de Orden Común proporc. a la Inv. Material
  1755. **       + Mano de O. Propia
  1756. *        PERFORM guarda_inversion_material.
  1757. *      ENDIF.
  1758. *    ENDIF.
  1759. *
  1760. ** Si es un movimiento de baja o de traspaso
  1761. *  ELSEIF ( wl_anep-bwasl IN c_clase_baja   OR
  1762. *           wl_anep-bwasl IN c_clase_traslado ).
  1763. *
  1764. ** Si hay movimientos anteriores a traspasar
  1765. *    MOVE-CORRESPONDING: wl_anep   TO movimientos.
  1766. *    LOOP AT parciales.
  1767. *      IF parciales-cantidad NE 0 AND total_mov NE 0.
  1768. *        READ TABLE ordenes WITH KEY aufnr = parciales-aufnr
  1769. *                                               BINARY SEARCH.
  1770. *        IF sy-subrc <> 0.
  1771. *          WRITE: / text-053.
  1772. *        ENDIF.
  1773. **       move-corresponding parciales to movimientos.
  1774. *        MOVE-CORRESPONDING ordenes TO movimientos.
  1775. *
  1776. *        IF ordenes-estado <> ce_libe.
  1777. *          movimientos-traspasar = 'X'.
  1778. *          movimientos-cantidad = wl_anep-anbtr * parciales-cantidad
  1779. *                                       / total_mov.
  1780. *        ELSE.
  1781. *          movimientos-traspasar = ' '.
  1782. *          movimientos-cantidad = 0.
  1783. *        ENDIF.
  1784. *        MOVE-CORRESPONDING movimientos TO totpep.
  1785. *        totpep-anbtr = movimientos-cantidad.
  1786. *        COLLECT totpep.
  1787. *        APPEND movimientos.
  1788. *
  1789. **       Reparto de Orden Común proporc. a la Inv. Material
  1790. **       + Mano de O. Propia
  1791. **       Guarda lo que se ha liquidado de inversion material
  1792. **       (naturaleza 1 y 2 del area contable) de ordenes no comunes
  1793. *        PERFORM guarda_inversion_material.
  1794. *      ENDIF.
  1795. *    ENDLOOP.
  1796. *  ENDIF.
  1797.  
  1798. * Si es un movimiento de liquidación o de intercalarios
  1799.   IF <lv_fs_tl_anep>-bwasl IN movims OR <lv_fs_tl_anep>-bwasl IN c_clase_intercalarios.
  1800.     PERFORM buscar_orden.
  1801.  
  1802.     total_mov =  total_mov + <lv_fs_tl_anep>-anbtr.
  1803. *   Si la orden está en la tabla ordenes guardar los datos del movim.
  1804.     IF NOT bseg-aufnr IS INITIAL.
  1805.       READ TABLE ordenes WITH KEY aufnr = bseg-aufnr BINARY SEARCH.
  1806.       IF sy-subrc = 0.
  1807.         MOVE-CORRESPONDING: <lv_fs_tl_anep> TO movimientos,
  1808.         ordenes TO movimientos,
  1809.         movimientos TO totpep.
  1810.         COLLECT totpep.
  1811.  
  1812. *       Si el movimiento aun no ha sido traspasado
  1813.         IF  anek-auglz IS INITIAL  OR anek-auglz = space.
  1814.           IF ordenes-estado NE ce_libe.
  1815.             movimientos-cantidad = <lv_fs_tl_anep>-anbtr.
  1816.             movimientos-traspasar = 'X'.
  1817.           ELSE.
  1818.             movimientos-cantidad = 0.
  1819.             movimientos-traspasar = ' '.
  1820.           ENDIF.
  1821.           APPEND movimientos.
  1822.           MOVE-CORRESPONDING ordenes TO parciales.
  1823.           parciales-cantidad = <lv_fs_tl_anep>-anbtr.
  1824.           COLLECT parciales.
  1825.         ENDIF.
  1826.  
  1827. *       Reparto de Orden Común proporc. a la Inv. Material
  1828. *       + Mano de O. Propia
  1829.         PERFORM guarda_inversion_material.
  1830.       ENDIF.
  1831.     ENDIF.
  1832.  
  1833. * Si es un movimiento de baja o de traspaso
  1834.   ELSEIF ( <lv_fs_tl_anep>-bwasl IN c_clase_baja   OR
  1835.   <lv_fs_tl_anep>-bwasl IN c_clase_traslado ).
  1836.  
  1837. * Si hay movimientos anteriores a traspasar
  1838.     MOVE-CORRESPONDING: <lv_fs_tl_anep>   TO movimientos.
  1839.     LOOP AT parciales.
  1840.       IF parciales-cantidad NE 0 AND total_mov NE 0.
  1841.         READ TABLE ordenes WITH KEY aufnr = parciales-aufnr
  1842.         BINARY SEARCH.
  1843.         IF sy-subrc <> 0.
  1844.           WRITE: / text-053.
  1845.         ENDIF.
  1846. *       move-corresponding parciales to movimientos.
  1847.         MOVE-CORRESPONDING ordenes TO movimientos.
  1848.  
  1849.         IF ordenes-estado <> ce_libe.
  1850.           movimientos-traspasar = 'X'.
  1851.           movimientos-cantidad = <lv_fs_tl_anep>-anbtr * parciales-cantidad
  1852.           / total_mov.
  1853.         ELSE.
  1854.           movimientos-traspasar = ' '.
  1855.           movimientos-cantidad = 0.
  1856.         ENDIF.
  1857.         MOVE-CORRESPONDING movimientos TO totpep.
  1858.         totpep-anbtr = movimientos-cantidad.
  1859.         COLLECT totpep.
  1860.         APPEND movimientos.
  1861.  
  1862. *       Reparto de Orden Común proporc. a la Inv. Material
  1863. *       + Mano de O. Propia
  1864. *       Guarda lo que se ha liquidado de inversion material
  1865. *       (naturaleza 1 y 2 del area contable) de ordenes no comunes
  1866.         PERFORM  guarda_inversion_material .
  1867.       ENDIF.
  1868.     ENDLOOP.
  1869.   ENDIF.
  1870.   "-----------------------------------------------------------------------
  1871.  
  1872.  
  1873. ENDFORM.                               " tratar_movimiento
  1874. *---------------------------------------------------------------------*
  1875. *       FORM GUARDA_INVERSION_MATERIAL                                *
  1876. *---------------------------------------------------------------------*
  1877. * Reparto de Orden Común proporc. a la Inv. Material + Mano de O. Propia
  1878. * Guarda lo que se ha liquidado de inversion material (naturaleza 1 y 2
  1879. * del area contable) de ordenes no comunes
  1880. ***********************************************************************
  1881. * Guarda en la tabla repartos el total por PEP/ELEMENTO
  1882. * de los movimientos de las ordenes no comunes de inversion material
  1883. * (naturalezas 1 y 2) del area contable
  1884. *---------------------------------------------------------------------*
  1885. FORM guarda_inversion_material.
  1886.  
  1887.   IF ( movimientos-anln2+3(1) EQ '1'  OR movimientos-anln2+3(1) EQ '2' )
  1888.                    AND movimientos-orden_comun IS INITIAL
  1889.                    AND movimientos-afabe = c_areacon.
  1890. * FEX19117 - 06/05/2002 INI: Los elementos comunes no participan en el
  1891. *                            reparto.
  1892.     SELECT SINGLE anlkl FROM anla INTO anla-anlkl
  1893.                            WHERE bukrs = p_bukrs
  1894.                            AND anln1 = movimientos-anln1
  1895.                            AND anln2 = movimientos-anln2.
  1896.     DATA: es_comun(1) TYPE c.
  1897.     CLEAR: es_comun.
  1898.     SELECT SINGLE comun FROM ziccl INTO es_comun
  1899.                              WHERE anlkl = anla-anlkl.
  1900.     IF es_comun IS INITIAL OR es_comun = ' '.
  1901. * FEX19117 - 06/05/2002 FIN
  1902.       MOVE-CORRESPONDING movimientos TO repartos.
  1903. *   move movimientos-cantidad to repartos-anbtr.
  1904.       COLLECT repartos.
  1905.  
  1906.       MOVE-CORRESPONDING movimientos TO repartos_por_elem_area.
  1907.       COLLECT repartos_por_elem_area.
  1908. * FEX19117 - 06/05/2002 INI
  1909.     ELSE.
  1910. * Aqui habrá que poner el log. (relación de estos elementos.)
  1911.     ENDIF.
  1912. * FEX19117 - 06/05/2002 FIN
  1913.   ENDIF.
  1914.   MOVE-CORRESPONDING movimientos TO movs_peps.
  1915.   MOVE movimientos-orden_comun TO movs_peps-comun.
  1916.   COLLECT movs_peps.
  1917. ENDFORM.                    "GUARDA_INVERSION_MATERIAL
  1918.  
  1919. " Modificado por: Heizenreder Guillemo --------------14.10.2010 10:21:45
  1920. *---------------------------------------------------------------------*
  1921. *       FORM BUSCAR_TRASPASO_A_ANULAR.                                *
  1922. *---------------------------------------------------------------------*
  1923. *       ------------------------------                                *
  1924. *       ------------------------------                                *
  1925. *       ------------------------------                                *
  1926. *  TODO.                                                              *
  1927. *   - Comentar.                                                       *
  1928. *   - Generar un fs para loopear la tabla ti_anla                     *
  1929. *   - Por cada loop llama a buscar_movimiento_de_traspaso             *
  1930. *     O(n) * O(n^2) lo determina la funcion a llamar.                 *
  1931. *---------------------------------------------------------------------*
  1932. "----------------------------------------------------------------------
  1933.  
  1934. *&---------------------------------------------------------------------*
  1935. *&      Form  BUSCAR_TRASPASO_A_ANULAR
  1936. *&---------------------------------------------------------------------*
  1937. *       text
  1938. *----------------------------------------------------------------------*
  1939. FORM buscar_traspaso_a_anular.
  1940.   DATA: BEGIN OF ti_anla OCCURS 0,
  1941.           anln1 LIKE anla-anln1,
  1942.           anln2 LIKE anla-anln2,
  1943.           anlue LIKE anla-anlue,
  1944.        END OF ti_anla.
  1945.  
  1946.   " Modificado por: Heizenreder Guillemo --------------14.10.2010 11:05:05
  1947.   " Creo un fs para referenciar la tabla ti_anla
  1948.   FIELD-SYMBOLS <lv_fs_ti_anla> LIKE LINE OF ti_anla.
  1949.   "-----------------------------------------------------------------------
  1950.  
  1951. * FBL
  1952.   SELECT anln1 anln2 anlue
  1953.     INTO TABLE ti_anla
  1954.     FROM anla
  1955.     WHERE bukrs = p_bukrs
  1956.       AND anlue IN s_anlue
  1957.       AND ( anln1 LIKE c_curso1
  1958.             OR anln1 LIKE c_curso2 ).
  1959.  
  1960.   REFRESH movimientos.
  1961. *  EXEC SQL PERFORMING BUSCAR_MOVIMIENTOS_DE_TRASPASO.
  1962. *    SELECT ANLN1, ANLN2, ANLUE
  1963. *    INTO :MOVIMIENTOS-ANLN1,
  1964. *         :MOVIMIENTOS-ANLN2,
  1965. *         :MOVIMIENTOS-ANLUE
  1966. *    FROM ANLA
  1967. *    WHERE MANDT = :SY-MANDT     AND
  1968. *          BUKRS = :P_BUKRS      AND
  1969. *        ( ANLN1 LIKE :C_CURSO1 OR
  1970. *          ANLN1 LIKE :C_CURSO2 )
  1971. *  ENDEXEC.
  1972.  
  1973.   " Modificado por: Heizenreder Guillemo --------------14.10.2010 11:06:21
  1974.   " Se emplea fs para recorrer la tabla ti_anla.
  1975.   " Se reemplazan todas las ocurrencias de ti_anla por <lv_fs_ti_anla>.
  1976.  
  1977. *  LOOP AT ti_anla.
  1978. *    movimientos-anln1 = ti_anla-anln1.
  1979. *    movimientos-anln2 = ti_anla-anln2.
  1980. *    movimientos-anlue = ti_anla-anlue.
  1981. *    PERFORM BUSCAR_MOVIMIENTOS_DE_TRASPASO.
  1982. *  ENDLOOP.        "ti_anla
  1983.  
  1984.   LOOP AT ti_anla ASSIGNING <lv_fs_ti_anla>.
  1985.     movimientos-anln1 = <lv_fs_ti_anla>-anln1.
  1986.     movimientos-anln2 = <lv_fs_ti_anla>-anln2.
  1987.     movimientos-anlue = <lv_fs_ti_anla>-anlue.
  1988.     PERFORM buscar_movimientos_de_traspaso.
  1989.   ENDLOOP.        "ti_anla
  1990.  
  1991.   " Se desreferencia el fs que apunta a la tabla ti_anla.
  1992.   UNASSIGN <lv_fs_ti_anla>.
  1993.   "-----------------------------------------------------------------------
  1994. ENDFORM.                               " buscar_traspaso_a_anular
  1995.  
  1996. " Modificado por: Heizenreder Guillemo --------------14.10.2010 10:21:28
  1997. " Se incorporan los comentarios de cabecera a la subrutina.
  1998. *---------------------------------------------------------------------*
  1999. *       FORM BUSCAR_MOVIMIENTOS_DE_TRASPASO                           *
  2000. *---------------------------------------------------------------------*
  2001. *       ------------------------------                                *
  2002. *       ------------------------------                                *
  2003. *       ------------------------------                                *
  2004. *  TODO.                                                              *
  2005. *   - Comentar.                                                       *
  2006. *   - Generar un fs para loopear las tablas internas                  *
  2007. *   - Complejidad: O(n^2)                                             *
  2008. *   - Se realiza un select dentro de cada loop --> FOR ALL ENTRIES    *
  2009. *---------------------------------------------------------------------*
  2010. "----------------------------------------------------------------------
  2011.  
  2012. *&---------------------------------------------------------------------*
  2013. *&      Form  BUSCAR_MOVIMIENTOS_DE_TRASPASO
  2014. *&---------------------------------------------------------------------*
  2015. *       text
  2016. *----------------------------------------------------------------------*
  2017. FORM buscar_movimientos_de_traspaso.
  2018.   DATA: d_total LIKE anep-anbtr.
  2019.   DATA: sw TYPE i.
  2020.   DATA: BEGIN OF t_anep OCCURS 0,
  2021.           anbtr LIKE anep-anbtr,
  2022.           gjahr LIKE anep-gjahr,
  2023.           lnran LIKE anep-lnran,
  2024.           bwasl LIKE anep-bwasl,
  2025.           afabe LIKE anep-afabe,
  2026.           anln1 LIKE anep-anln1,
  2027.           anln2 LIKE anep-anln2,
  2028.           bzdat LIKE anep-bzdat,
  2029.         END OF t_anep.
  2030.   DATA: BEGIN OF t_anek OCCURS 0,
  2031.           bukrs LIKE anek-bukrs,
  2032.           anln1 LIKE anek-anln1,
  2033.           anln2 LIKE anek-anln2,
  2034.           gjahr LIKE anek-gjahr,
  2035.           lnran LIKE anek-lnran,
  2036.           bzdat LIKE anek-bzdat,
  2037.         END OF t_anek.
  2038.  
  2039.   " Modificado por: Heizenreder Guillemo --------------14.10.2010 11:20:22
  2040.   " Creo los fs para referenciar las ti t_anep + t_anek
  2041.   FIELD-SYMBOLS <lv_fs_t_anep> LIKE LINE OF t_anep.
  2042.   FIELD-SYMBOLS <lv_fs_t_anek> LIKE LINE OF t_anek.
  2043.   "-----------------------------------------------------------------------
  2044.  
  2045.   sw = 0.
  2046. * seleccionamos movimientos de traspaso.
  2047.   SELECT anbtr gjahr lnran bwasl afabe anln1 anln2 bzdat
  2048.   INTO TABLE t_anep
  2049.   FROM anep
  2050.   WHERE bukrs  EQ  p_bukrs            AND
  2051.         anln1  EQ  movimientos-anln1  AND
  2052.         anln2  EQ  movimientos-anln2  AND
  2053.         gjahr  EQ  p_fecha(4)         AND
  2054.         lnsan  EQ  00000              AND
  2055.         augln  EQ  0                  AND
  2056.         bwasl  IN movims1.
  2057.  
  2058.   " Modificado por: Heizenreder Guillemo --------------14.10.2010 11:21:13
  2059.   " Se emplea fs para recorrer la tabla ti_anep.
  2060.   " Se reemplazan todas las ocurrencias de t_anep por <lv_fs_t_anep>.
  2061.  
  2062. * LOOP AT t_anep.
  2063. *   CHECK t_anep-afabe EQ c_areacon OR
  2064. *   t_anep-afabe EQ c_areamed OR
  2065. *   t_anep-afabe EQ c_areanic OR
  2066. *   t_anep-afabe EQ c_areasuc OR
  2067. *   t_anep-afabe EQ c_areasua OR
  2068. *   t_anep-afabe EQ c_areasuo OR
  2069. *   t_anep-afabe EQ c_areadea OR
  2070. *   t_anep-afabe EQ c_areadan.
  2071. *
  2072. *   IF t_anep-bzdat(6) EQ p_fecha(6).
  2073. *     MOVE-CORRESPONDING t_anep TO movimientos.
  2074. *     movimientos-cantidad = movimientos-anbtr.
  2075. *     movimientos-traspasar = 'X'.
  2076. *     APPEND movimientos.
  2077. *     sw = 1.
  2078. *   ENDIF.
  2079. * ENDLOOP.
  2080.  
  2081.   LOOP AT t_anep ASSIGNING <lv_fs_t_anep>.
  2082.     CHECK <lv_fs_t_anep>-afabe EQ c_areacon OR
  2083.     <lv_fs_t_anep>-afabe EQ c_areamed OR
  2084.     <lv_fs_t_anep>-afabe EQ c_areanic OR
  2085.     <lv_fs_t_anep>-afabe EQ c_areasuc OR
  2086.     <lv_fs_t_anep>-afabe EQ c_areasua OR
  2087.     <lv_fs_t_anep>-afabe EQ c_areasuo OR
  2088.     <lv_fs_t_anep>-afabe EQ c_areadea OR
  2089.     <lv_fs_t_anep>-afabe EQ c_areadan.
  2090.  
  2091.     IF <lv_fs_t_anep>-bzdat(6) EQ p_fecha(6).
  2092.       MOVE-CORRESPONDING <lv_fs_t_anep> TO movimientos.
  2093.       movimientos-cantidad = movimientos-anbtr.
  2094.       movimientos-traspasar = 'X'.
  2095.       APPEND movimientos.
  2096.       sw = 1.
  2097.     ENDIF.
  2098.   ENDLOOP.
  2099.  
  2100.   " Desreferenciamos el fs a la tabla t_anep
  2101.   UNASSIGN <lv_fs_t_anep>.
  2102.   "-----------------------------------------------------------------------
  2103.  
  2104. *   seleccionamos movimientos marcados
  2105.   IF sw = 0.
  2106.     DATA: BEGIN OF t_totales OCCURS 0, times,
  2107.            afabe LIKE anep-afabe,
  2108.            total LIKE anep-anbtr,
  2109.            bzdat LIKE anek-bzdat.
  2110.     DATA: END OF t_totales.
  2111.  
  2112.     " Modificado por: Heizenreder Guillemo --------------14.10.2010 11:27:31
  2113.     " Creo los fs para referenciar a la tabla t_totales.
  2114.     FIELD-SYMBOLS <lv_fs_t_totales> LIKE LINE OF t_totales.
  2115.     "-----------------------------------------------------------------------
  2116.  
  2117.     REFRESH t_totales.
  2118.     SELECT bukrs anln1 anln2 gjahr lnran bzdat
  2119.     FROM anek INTO TABLE t_anek
  2120.     WHERE bukrs EQ p_bukrs            AND
  2121.           anln1 EQ movimientos-anln1  AND
  2122.           anln2 EQ movimientos-anln2  AND
  2123.           auglz EQ p_fecha+4(2)       AND
  2124.           augln EQ p_fecha(4).
  2125.  
  2126.     " Modificado por: Heizenreder Guillemo --------------14.10.2010 11:28:50
  2127.     " Se emplea fs para recorrer las tablas ti_anek + t_anep.
  2128.     " Se reemplazan todas las ocurrencias de t_anek por <lv_fs_t_anek>.
  2129.     " Se reemplazan todas las ocurrencias de t_anep por <lv_fs_t_anep>.
  2130.  
  2131. *    LOOP AT t_anek.
  2132. *      MOVE-CORRESPONDING t_anek TO movimientos.
  2133. *      MOVE t_anek-bzdat TO t_totales-bzdat.
  2134. *
  2135. *      SELECT anbtr afabe FROM anep
  2136. *      INTO CORRESPONDING FIELDS OF TABLE t_anep
  2137. *      WHERE bukrs = p_bukrs
  2138. *      AND anln1 = t_anek-anln1
  2139. *      AND anln2 = t_anek-anln2
  2140. *      AND gjahr = t_anek-gjahr
  2141. *      AND lnran = t_anek-lnran.
  2142. *
  2143. *      LOOP AT t_anep.
  2144. *        CHECK t_anep-afabe EQ c_areacon OR
  2145. *        t_anep-afabe EQ c_areamed OR
  2146. *        t_anep-afabe EQ c_areanic OR
  2147. *        t_anep-afabe EQ c_areasuc OR
  2148. *        t_anep-afabe EQ c_areasua OR
  2149. *        t_anep-afabe EQ c_areasuo OR
  2150. *        t_anep-afabe EQ c_areadea OR
  2151. *        t_anep-afabe EQ c_areadan.
  2152. *        MOVE t_anep-anbtr TO t_totales-total.
  2153. *        MOVE t_anep-afabe TO t_totales-afabe.
  2154. *        COLLECT t_totales.
  2155. *      ENDLOOP.
  2156. *    ENDLOOP.
  2157.  
  2158.     " FIXME: (FOR ALL ENTRIES) debe ser usado en vez de (LOOP AT ITAB / SELECT / ENDLOOP)
  2159.     LOOP AT t_anek ASSIGNING <lv_fs_t_anek>.
  2160.       MOVE-CORRESPONDING <lv_fs_t_anek> TO movimientos.
  2161.       MOVE <lv_fs_t_anek>-bzdat TO t_totales-bzdat.
  2162.  
  2163.       SELECT anbtr afabe FROM anep
  2164.       INTO CORRESPONDING FIELDS OF TABLE t_anep
  2165.       WHERE bukrs = p_bukrs
  2166.       AND anln1 = <lv_fs_t_anek>-anln1
  2167.       AND anln2 = <lv_fs_t_anek>-anln2
  2168.       AND gjahr = <lv_fs_t_anek>-gjahr
  2169.       AND lnran = <lv_fs_t_anek>-lnran.
  2170.  
  2171.       LOOP AT t_anep ASSIGNING <lv_fs_t_anep>.
  2172.         CHECK <lv_fs_t_anep>-afabe EQ c_areacon OR
  2173.         <lv_fs_t_anep>-afabe EQ c_areamed OR
  2174.         <lv_fs_t_anep>-afabe EQ c_areanic OR
  2175.         <lv_fs_t_anep>-afabe EQ c_areasuc OR
  2176.         <lv_fs_t_anep>-afabe EQ c_areasua OR
  2177.         <lv_fs_t_anep>-afabe EQ c_areasuo OR
  2178.         <lv_fs_t_anep>-afabe EQ c_areadea OR
  2179.         <lv_fs_t_anep>-afabe EQ c_areadan.
  2180.         MOVE <lv_fs_t_anep>-anbtr TO t_totales-total.
  2181.         MOVE <lv_fs_t_anep>-afabe TO t_totales-afabe.
  2182.         COLLECT t_totales.
  2183.       ENDLOOP.
  2184.     ENDLOOP.
  2185.  
  2186.     " Desreferenciamos los fs a las tablas t_anep + t_anek
  2187.     UNASSIGN <lv_fs_t_anep>.
  2188.     UNASSIGN <lv_fs_t_anek>.
  2189.     "-----------------------------------------------------------------------
  2190.  
  2191.     " Modificado por: Heizenreder Guillemo --------------14.10.2010 11:59:50
  2192.     " Se emplea fs para recorrer las tablas t_totales.
  2193.     " Se reemplazan todas las ocurrencias de t_totales por <lv_fs_t_totales>.
  2194.  
  2195. *    LOOP AT t_totales WHERE total NE 0.
  2196. *      movimientos-bzdat = t_totales-bzdat.
  2197. *      movimientos-afabe = t_totales-afabe.
  2198. *      movimientos-bwasl = '999'.
  2199. *      movimientos-cantidad = t_totales-total.
  2200. *      movimientos-traspasar = 'X'.
  2201. *      movimientos-anbtr = 0.
  2202. *      APPEND movimientos.
  2203. *    ENDLOOP.
  2204.  
  2205.     " total vs <lv_fs_t_totales>-total?
  2206.     LOOP AT t_totales ASSIGNING <lv_fs_t_totales> WHERE total NE 0.
  2207.       movimientos-bzdat = <lv_fs_t_totales>-bzdat.
  2208.       movimientos-afabe = <lv_fs_t_totales>-afabe.
  2209.       movimientos-bwasl = '999'.
  2210.       movimientos-cantidad = <lv_fs_t_totales>-total.
  2211.       movimientos-traspasar = 'X'.
  2212.       movimientos-anbtr = 0.
  2213.       APPEND movimientos.
  2214.     ENDLOOP.
  2215.  
  2216.     " Desreferenciamos el fs a t_totales
  2217.     UNASSIGN <lv_fs_t_totales>.
  2218.     "-----------------------------------------------------------------------
  2219.   ENDIF.
  2220. ENDFORM.                               " buscar_movimientos_de_traspaso
  2221.  
  2222. *&---------------------------------------------------------------------*
  2223. *&      Form  BUSCAR_ORDEN
  2224. *&---------------------------------------------------------------------*
  2225. FORM buscar_orden.
  2226.  
  2227.   IF NOT wl_anep-bwasl IN c_clase_intercalarios.
  2228.     CLEAR anek.
  2229.     SELECT SINGLE objid auglz
  2230.        INTO (anek-objid,anek-auglz)
  2231.           FROM anek
  2232.              WHERE bukrs  =  p_bukrs             AND
  2233.                    anln1  =  subnumeros-anln1    AND
  2234.                    anln2  =  subnumeros-anln2    AND
  2235.                    gjahr  =  wl_anep-gjahr       AND
  2236.                    lnran  =  wl_anep-lnran.
  2237. * Si no ha sido traspasado, obtener la orden del movimiento
  2238.     bseg-aufnr = anek-objid.
  2239.   ELSE.
  2240.     CLEAR bseg.
  2241. * MODIFICACION NOEMI OBIOLS.
  2242. * BUSCA EN ANEK SI EL MOVIMIENTO YA HA SIDO TRASPASADO.
  2243.     ant_anek_auglz = anek-auglz.
  2244.     SELECT SINGLE augln FROM anek INTO anek-augln
  2245.               WHERE bukrs  EQ p_bukrs             AND
  2246.                     anln1  EQ subnumeros-anln1    AND
  2247.                     anln2  EQ subnumeros-anln2    AND
  2248.                     gjahr  EQ wl_anep-gjahr       AND
  2249.                     lnran  EQ wl_anep-lnran       AND
  2250.                     belnr  EQ wl_anep-belnr       AND
  2251.                   ( augln  EQ '00000' OR augln EQ space ) AND
  2252.                     auglz  EQ space.
  2253.     anek-auglz = ant_anek_auglz.
  2254.     CHECK sy-subrc EQ 0.
  2255. * FIN MODIFICACION NOEMI OBIOLS
  2256.     SELECT SINGLE aufnr INTO bseg-aufnr FROM bseg
  2257.              WHERE  bukrs  EQ  p_bukrs      AND
  2258.                     belnr  EQ  wl_anep-belnr   AND
  2259.                     gjahr  EQ  wl_anep-gjahr   AND
  2260.                     buzei  EQ  wl_anep-buzei   AND
  2261.                     anln1  EQ  wl_anep-anln1   AND
  2262.                     anln2  EQ  wl_anep-anln2.
  2263.   ENDIF.
  2264.  
  2265. ENDFORM.                               " buscar_orden
  2266.  
  2267.  
  2268. " Modificado por: Heizenreder Guillemo --------------14.10.2010 14:56:32
  2269. " Se incorporan los comentarios de cabecera a la subrutina.
  2270. *---------------------------------------------------------------------*
  2271. *       FORM ESTADOPEP                                                *
  2272. *---------------------------------------------------------------------*
  2273. *       ------------------------------                                *
  2274. *       ------------------------------                                *
  2275. *       ------------------------------                                *
  2276. *  TODO.                                                              *
  2277. *   - Complejidad: O(n)                                               *
  2278. *   - Agregar la gestion de fs en vez de wa.                          *
  2279. *   - Todas las referencias a lt_jcds se cambia por <lv_fs_ lt_jcds>  *
  2280. *   - Comentarios.                                                    *
  2281. *---------------------------------------------------------------------*
  2282. "----------------------------------------------------------------------
  2283.  
  2284. *&---------------------------------------------------------------------*
  2285. *&      Form  estadopep
  2286. *&---------------------------------------------------------------------*
  2287. *       text
  2288. *----------------------------------------------------------------------*
  2289. *      -->W_OBJNR    text
  2290. *      -->W_STAT     text
  2291. *      -->W_UDATE    text
  2292. *----------------------------------------------------------------------*
  2293. FORM estadopep USING  w_objnr LIKE jest-objnr
  2294.                         w_stat
  2295.                         w_udate LIKE jcds-udate.
  2296.  
  2297.   DATA: BEGIN OF lt_jcds OCCURS 0,
  2298.           stat LIKE jcds-stat,
  2299.           inact LIKE jcds-inact,
  2300.           udate LIKE jcds-udate,
  2301.         END OF lt_jcds.
  2302.  
  2303.   DATA: stat_libe, stat_ctec, stat_expl, stat_cerr.
  2304.  
  2305.   DATA: fecha_stat_libe LIKE sy-datum,
  2306.         fecha_stat_ctec LIKE sy-datum,
  2307.         fecha_stat_expl LIKE sy-datum,
  2308.         fecha_stat_cerr LIKE sy-datum.
  2309.  
  2310.   " Modificado por: Heizenreder Guillemo --------------14.10.2010 15:01:07
  2311.   " Se crea el fs para referenciar la tabla lt_jcds.
  2312.   FIELD-SYMBOLS <lv_fs_lt_jcds> LIKE LINE OF lt_jcds.
  2313.   "-----------------------------------------------------------------------
  2314.  
  2315. * FBL
  2316. *  SELECT   STAT INACT UDATE
  2317. *           INTO CORRESPONDING FIELDS OF JCDS
  2318. *           FROM JCDS
  2319. *           WHERE OBJNR EQ W_OBJNR      AND
  2320. *                 UDATE LE P_FECHA      AND
  2321. *                 ( STAT EQ CI_CERR  OR
  2322. *                   STAT EQ CI_EXPL  OR
  2323. *                   STAT EQ CI_CTEC  OR
  2324. *                   STAT EQ CI_LIBE )
  2325. *                 ORDER BY UDATE ASCENDING.
  2326.  
  2327.   CLEAR: w_stat, w_udate.
  2328.   SELECT stat inact udate
  2329.            INTO TABLE lt_jcds
  2330.            FROM jcds
  2331.            WHERE objnr EQ w_objnr      AND
  2332.                  udate LE p_fecha      AND
  2333.                  ( stat EQ ci_cerr  OR
  2334.                    stat EQ ci_expl  OR
  2335.                    stat EQ ci_ctec  OR
  2336.                    stat EQ ci_libe ).
  2337.  
  2338.   CHECK sy-subrc = 0.
  2339.  
  2340.   MOVE 'X' TO: stat_libe, stat_ctec, stat_expl, stat_cerr.
  2341.  
  2342.   SORT lt_jcds BY udate.
  2343.  
  2344.   " Modificado por: Heizenreder Guillemo --------------14.10.2010 15:03:05
  2345.   " Se utiliza fs para realiar el recorrido de la tabla.
  2346.   " Se cambian todas las ocurrencias de lt_jcds por <lv_fs_lt_jcds>
  2347.  
  2348. *  LOOP AT lt_jcds.
  2349. *    CASE lt_jcds-stat.
  2350. *    WHEN ci_libe.
  2351. *      stat_libe = lt_jcds-inact.
  2352. *      fecha_stat_libe = lt_jcds-udate.
  2353. *    WHEN ci_ctec.
  2354. *      stat_ctec = lt_jcds-inact.
  2355. *      fecha_stat_ctec = lt_jcds-udate.
  2356. *    WHEN ci_cerr.
  2357. *      stat_cerr = lt_jcds-inact.
  2358. *      fecha_stat_cerr = lt_jcds-udate.
  2359. *    WHEN ci_expl.
  2360. *      stat_expl = lt_jcds-inact.
  2361. *      fecha_stat_expl = lt_jcds-udate.
  2362. *    ENDCASE.
  2363. *  ENDLOOP.
  2364.  
  2365.   LOOP AT lt_jcds ASSIGNING <lv_fs_lt_jcds>.
  2366.     CASE <lv_fs_lt_jcds>-stat.
  2367.       WHEN ci_libe.
  2368.         stat_libe = <lv_fs_lt_jcds>-inact.
  2369.         fecha_stat_libe = <lv_fs_lt_jcds>-udate.
  2370.       WHEN ci_ctec.
  2371.         stat_ctec = <lv_fs_lt_jcds>-inact.
  2372.         fecha_stat_ctec = <lv_fs_lt_jcds>-udate.
  2373.       WHEN ci_cerr.
  2374.         stat_cerr = <lv_fs_lt_jcds>-inact.
  2375.         fecha_stat_cerr = <lv_fs_lt_jcds>-udate.
  2376.       WHEN ci_expl.
  2377.         stat_expl = <lv_fs_lt_jcds>-inact.
  2378.         fecha_stat_expl = <lv_fs_lt_jcds>-udate.
  2379.     ENDCASE.
  2380.   ENDLOOP.
  2381.  
  2382.   " Desreferenciamos el fs de la tabla lt_jcds.
  2383.   UNASSIGN <lv_fs_lt_jcds>.
  2384.   "-----------------------------------------------------------------------
  2385.  
  2386.   IF stat_cerr IS INITIAL.
  2387.     w_stat = ce_cerr.
  2388.     w_udate = fecha_stat_cerr.
  2389.  
  2390.   ELSEIF stat_ctec IS INITIAL.
  2391.     w_stat = ce_ctec.
  2392.     w_udate = fecha_stat_ctec.
  2393.  
  2394.   ELSEIF stat_expl IS INITIAL.
  2395.     w_stat = ce_expl.
  2396.     w_udate = fecha_stat_expl.
  2397.  
  2398.   ELSEIF stat_libe IS INITIAL.
  2399.     w_stat = ce_libe.
  2400.     w_udate = fecha_stat_libe.
  2401.   ENDIF.
  2402. ENDFORM.                               " estadopep
  2403.  
  2404. *---------------------------------------------------------------------*
  2405. *       FORM F4_ZZTINS                                                *
  2406. *---------------------------------------------------------------------*
  2407. *       ........                                                      *
  2408. *---------------------------------------------------------------------*
  2409. *  -->  RANGO                                                         *
  2410. *---------------------------------------------------------------------*
  2411. FORM f4_zztins USING rango.
  2412.   TABLES zki3.
  2413.  
  2414.   DATA: BEGIN OF tdynpread OCCURS 0.
  2415.           INCLUDE STRUCTURE dynpread.
  2416.   DATA: END OF tdynpread.
  2417.  
  2418. * Match-code para tipo de instalación
  2419.   DATA: BEGIN OF tfields OCCURS 5.
  2420.           INCLUDE STRUCTURE help_value.
  2421.   DATA: END OF tfields.
  2422.  
  2423.   DATA: BEGIN OF tfull_table_bis OCCURS 100,
  2424.           tins  LIKE zki4-tins,
  2425.           ltext LIKE zki4-ltext,
  2426.         END OF tfull_table_bis.
  2427.   DATA value LIKE help_info-fldvalue.
  2428.   DATA ind   LIKE sy-tabix.
  2429.  
  2430.   CLEAR value.
  2431.  
  2432.   REFRESH tfields.
  2433.   tfields-tabname = 'ZKI4'.
  2434.   tfields-fieldname = 'TINS'.
  2435.   tfields-selectflag = 'X'.
  2436.   APPEND tfields.
  2437.   CLEAR tfields.
  2438.   tfields-tabname = 'ZKI4'.
  2439.   tfields-fieldname = 'LTEXT'.
  2440.   APPEND tfields.
  2441.  
  2442.   SELECT * FROM zki4.
  2443.     tfull_table_bis-tins  = zki4-tins.
  2444.     tfull_table_bis-ltext = zki4-ltext.
  2445.     COLLECT tfull_table_bis.
  2446.   ENDSELECT.
  2447.   CLEAR value.
  2448.   CALL FUNCTION 'HELP_VALUES_GET_NO_DD_NAME'
  2449.     EXPORTING
  2450.       selectfield                  = 'ZKI4-TINS'
  2451.     IMPORTING
  2452.       ind                          = ind
  2453.       select_value                 = value
  2454.     TABLES
  2455.       fields                       = tfields
  2456.       full_table                   = tfull_table_bis
  2457.     EXCEPTIONS
  2458.       full_table_empty             = 1
  2459.       no_tablestructure_given      = 2
  2460.       no_tablefields_in_dictionary = 3
  2461.       more_then_one_selectfield    = 4
  2462.       no_selectfield               = 5
  2463.       OTHERS                       = 6.
  2464.   IF sy-subrc EQ 0 AND NOT value IS INITIAL.
  2465.     zki4-tins = value.
  2466.     READ TABLE tfull_table_bis INDEX ind.
  2467. *    zkg5-dzztins = tfull_table_bis-ltext.
  2468.     IF rango = 'L'.
  2469.       s_zztins-low = zki4-tins.
  2470.     ELSE.
  2471.       s_zztins-high = zki4-tins.
  2472.     ENDIF.
  2473.   ELSE.
  2474.     CHECK sy-subrc EQ 1.
  2475.     MESSAGE e384.
  2476.   ENDIF.
  2477. ENDFORM.                                                    "F4_ZZTINS
  2478. *----------------------------------------------------------------------*
  2479. * INCLUDES                                                             *
  2480. *----------------------------------------------------------------------*
  2481. *----------------------------------------------------------------------*
  2482. * Modificaciones: upgrade 4.6b                                         *
  2483. * Fecha: 08.05.2000                                                    *
  2484. * Programador: Roberto Galindo Saldías (ISI) Usuario: fex00493         *
  2485. * Descripción: se sustituye la include ZWI00010 por la ZWI00N10        *
  2486. *----------------------------------------------------------------------*
  2487. INCLUDE: zwi00n10,        " Include para batch input
  2488. *        ZWI00010,                     " Include para batch input
  2489. *        zwi00020,  "Juego de datos para la creación de un subnúmero
  2490.          zwi00020_bis,  "Juego de datos para la creación de un subnúmero
  2491.          zwi00090,  " Juego de datos para la creación de un elemento
  2492.          zwi00040,  " Juego de datos para la creación de una instalación
  2493.          zwi00070,  " Juego de datos para la modificación de un subnúmer
  2494.  
  2495. ** JGI INICIO 22-03-2005
  2496. *        zwiti020,  " Selección del Usuario de Instalaciones y/o Pep's
  2497. ** FIN 22-03-2005
  2498.  
  2499.  
  2500. ** MCG INICIO 05-05-2005
  2501. * MOD 21.06.2005 IMA
  2502. *     ZWITI020_FONDO,  " Selección del Usuario de Instalaciones y/o
  2503.        zwiti020,
  2504. * FIN MOD 21.06.2005
  2505. *     Pep's
  2506. ** FIN 05-05-2005
  2507.  
  2508. * Modificación 23/11/2007 7700000579
  2509. *DAS20/09/2007  zwiti030,  " Marcado de movimientos a traspasar
  2510. *DAS20/09/2007  zwiti040,  " Juego de datos del Traspaso o Anulación
  2511. *DAS 20/09/2007 Inicio solicitud 7700000579 . Se debe crear BI tanto en
  2512. *fondo como en online. y ejecutarse automáticamente...
  2513. *SE cambia el include   zwiti030 ZWITI040 el siguente
  2514. *para realiar loscambios sin afectar a otros procesos
  2515.   zwiti030_ziti, zwiti040_ziti.
  2516.  
  2517. ** Modificación 23/11/2007 7700000579
  2518. *&---------------------------------------------------------------------*
  2519. *&      Module  SELECT_MOTIVO  INPUT
  2520. *&---------------------------------------------------------------------*
  2521. *       text
  2522. *----------------------------------------------------------------------*
  2523. * Modificación upgrade 46B - Usuario: fex00493 Fecha: 16.05.2000
  2524. MODULE select_motivo INPUT.
  2525.   IF p_anular EQ 'X'.
  2526.     SELECT SINGLE * FROM t041c WHERE stgrd EQ p_motivo.
  2527.     IF sy-subrc <> 0.
  2528.       MESSAGE e011(ziu).
  2529.     ENDIF.
  2530.   ENDIF.
  2531. ENDMODULE.                             " SELECT_MOTIVO  INPUT
  2532. *----------------------------------------------------------------------*
  2533. *       FORM INDICADOR_PROGRESO                                        *
  2534. *----------------------------------------------------------------------*
  2535. FORM indicador_progreso  USING pi_tabix TYPE sy-tabix
  2536.                                pi_tl_ln TYPE i
  2537.                                pi_text
  2538.                                pi_var1
  2539.                                pi_var2.
  2540.   DATA:
  2541.        lv_calculo  TYPE f,
  2542.        lv_txt      TYPE string,
  2543.        lv_aux_n(3) TYPE n.
  2544.  
  2545.   lv_calculo = 100 / pi_tl_ln * pi_tabix.
  2546.   lv_aux_n   = lv_calculo.
  2547.   CONCATENATE 'Procesando ' pi_text  pi_var1 '-' pi_var2 '&'
  2548.    INTO  lv_txt SEPARATED BY space.
  2549.   REPLACE '&' IN lv_txt WITH lv_aux_n.
  2550.   CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
  2551.     EXPORTING
  2552.       percentage = lv_calculo
  2553.       text       = lv_txt.
  2554.  
  2555. ENDFORM.                    " indicador_progreso
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement