Advertisement
Guest User

Untitled

a guest
Jun 21st, 2017
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
ABAP 80.34 KB | None | 0 0
  1. *&---------------------------------------------------------------------*
  2. *&  Include           Z_AF_AJUSTES_NIIF_ENEL_FORM                      *
  3. *&---------------------------------------------------------------------*
  4.  
  5. *&---------------------------------------------------------------------*
  6. *&      Form  Z_AF_modificar_screen
  7. *&---------------------------------------------------------------------*
  8. *  Permite modificar la pantalla de selección con los
  9. *  requerimientos solicitados.
  10. *    --> Fecha Inicio de Trabajo: por defecto bloqueado.
  11. *    --> Año en curso: sy-datum.
  12. *----------------------------------------------------------------------*
  13. *  -->  p1        text
  14. *  <--  p2        text
  15. *----------------------------------------------------------------------*
  16. FORM z_af_modificar_screen .
  17.   gv_af_anio_en_curso = sy-datum.
  18. ENDFORM.                    " Z_AF_modificar_screen
  19.  
  20. *&---------------------------------------------------------------------*
  21. *&      Form  Z_AF_ajustes_informe
  22. *&---------------------------------------------------------------------*
  23. *   Función de control que permite activar el parámetro Fecha Inicio de
  24. *  Trabajo según corresponda e invoca a la función asociada de
  25. *  procesamiento de datos.
  26. *----------------------------------------------------------------------*
  27. *  -->  p1        text
  28. *  <--  p2        text
  29. *----------------------------------------------------------------------*
  30. FORM z_af_ajustes_informe .
  31.   IF r_aei EQ 'X'.
  32.     PERFORM z_af_activar_fit.
  33.     PERFORM z_af_aei.
  34.   ELSEIF r_aes EQ 'X'.
  35.     PERFORM z_af_bloquear_fit.
  36.     PERFORM z_af_aes.
  37.   ELSEIF r_ans EQ 'X'.
  38.     PERFORM z_af_bloquear_fit.
  39.     PERFORM z_af_ans.
  40.   ENDIF.
  41. ENDFORM.                    " Z_AF_ajustes_informe
  42.  
  43.  
  44. *&---------------------------------------------------------------------*
  45. *&      Form  Z_AF_AEI
  46. *&---------------------------------------------------------------------*
  47. *
  48. *----------------------------------------------------------------------*
  49. *  -->  p1        text
  50. *  <--  p2        text
  51. *----------------------------------------------------------------------*
  52. FORM z_af_aei.
  53.   PERFORM z_af_limpiar_so.
  54.  
  55.   " Fecha Inicio de Trabajos
  56.   DATA : fecini_date(10)  TYPE  c VALUE gc_fecini.
  57.   fecini = fecini_date.
  58.  
  59.   " Modificamos fecha contabilización
  60.   DATA : lv_date(10)  TYPE  c VALUE gc_datab_aei.
  61.   datab-low = lv_date.
  62.  
  63.   " Fecha limite 31.12.año en curso
  64.   DATA:
  65.     dia(2) TYPE c,
  66.     mes(2) TYPE c,
  67.     anio(4) TYPE c,
  68.     lv_actual(10)  TYPE  c.
  69.  
  70.   anio = sy-datum.
  71.   mes = '12'.
  72.   dia = '31'.
  73.  
  74.   CONCATENATE anio mes dia INTO lv_actual.
  75.   datab-high = lv_actual.
  76.   APPEND datab.
  77.  
  78.   " Modificamos área de valoración.
  79.   so_afabe-low = gc_afabe_aei_low.
  80.   so_afabe-high = gc_afabe_aei_high.
  81.   APPEND so_afabe.
  82.  
  83.   " Activar como obligatorio el campo FIT
  84. ENDFORM.                    " Z_AF_AEI
  85.  
  86.  
  87. *&--------------------------------------------------------------------*
  88. *&      Form  z_af_activar_fit
  89. *&--------------------------------------------------------------------*
  90. *       text
  91. *---------------------------------------------------------------------*
  92. FORM z_af_activar_fit.
  93.   LOOP AT SCREEN.
  94.     CHECK screen-group1 = 'FIT' .
  95.     screen-input = 1.
  96.     MODIFY SCREEN.
  97.   ENDLOOP.
  98. ENDFORM.                    "z_af_activar_fit
  99.  
  100. *&---------------------------------------------------------------------*
  101. *&      Form  z_af_AES
  102. *&---------------------------------------------------------------------*
  103. *       text
  104. *----------------------------------------------------------------------*
  105. *  -->  p1        text
  106. *  <--  p2        text
  107. *----------------------------------------------------------------------*
  108. FORM z_af_aes .
  109.   PERFORM z_af_limpiar_so.
  110.  
  111.   " Modificamos fecha contabilización
  112.   DATA : lv_date(10)  TYPE  c VALUE gc_datab_aes.
  113.   datab-high = lv_date.
  114.   datab-low = ''.
  115.   APPEND datab.
  116.  
  117.   " Modificamos área de valoración.
  118.   so_afabe-low = gc_afabe_aes_low.
  119.   so_afabe-high = gc_afabe_aes_high.
  120.   APPEND so_afabe.
  121.  
  122. ENDFORM.                    " z_af_AES
  123.  
  124. *&---------------------------------------------------------------------*
  125. *&      Form  z_af_ANS
  126. *&---------------------------------------------------------------------*
  127. *       text
  128. *----------------------------------------------------------------------*
  129. *  -->  p1        text
  130. *  <--  p2        text
  131. *----------------------------------------------------------------------*
  132. FORM z_af_ans .
  133.   PERFORM z_af_limpiar_so.
  134.   PERFORM z_af_bloquear_fit.
  135.  
  136.   " Modificamos fecha contabilización
  137.   DATA : lv_date(10)  TYPE  c VALUE gc_datab_ans_low.
  138.   datab-low = lv_date.
  139.  
  140.   DATA : lv_date_h(10)  TYPE c VALUE gc_datab_ans_high.
  141.   datab-high = lv_date_h.
  142.   APPEND datab.
  143.  
  144.   " Modificamos área de valoración.
  145.   so_afabe-low = gc_afabe_ans_low.
  146.   so_afabe-high = gc_afabe_ans_high.
  147.   APPEND so_afabe.
  148. ENDFORM.                    " z_af_ANS
  149.  
  150.  
  151. *&---------------------------------------------------------------------*
  152. *&      Form  z_af_bloquear_fit
  153. *&---------------------------------------------------------------------*
  154. *     Bloquea para el ingreso de datos el campo con ID=FIT,
  155. *     "Fecha Inicio de Trabajos"
  156. *----------------------------------------------------------------------*
  157. *  -->  p1        text
  158. *  <--  p2        text
  159. *----------------------------------------------------------------------*
  160. FORM z_af_bloquear_fit .
  161.   LOOP AT SCREEN.
  162.     CHECK screen-group1 = 'FIT' .
  163.     screen-input = 0.
  164.     MODIFY SCREEN.
  165.   ENDLOOP.
  166. ENDFORM.                    " z_af_bloquear_fit
  167.  
  168.  
  169. *&---------------------------------------------------------------------*
  170. *&      Form  z_af_gestionar_alv
  171. *&---------------------------------------------------------------------*
  172. *   Se encarga de llamar a las funciones intervinientes en la creación,
  173. *   implementación del ALV requerido.
  174. *----------------------------------------------------------------------*
  175. *  -->  p1        text
  176. *  <--  p2        text
  177. *----------------------------------------------------------------------*
  178. FORM z_af_gestionar_alv .
  179.   PERFORM z_af_init_fieldcat.
  180.   PERFORM z_af_init_layout.
  181.   PERFORM z_af_vista.
  182. ENDFORM.                    " z_af_gestionar_alv
  183.  
  184. *&---------------------------------------------------------------------*
  185. *&      Form  z_af_listar_af
  186. *&---------------------------------------------------------------------*
  187. *       text
  188. *----------------------------------------------------------------------*
  189. *  -->  p1        text
  190. *  <--  p2        text
  191. *----------------------------------------------------------------------*
  192.  
  193. FORM z_af_listar_af .
  194.  
  195. ENDFORM.                    " z_af_listar_af
  196.  
  197. *&---------------------------------------------------------------------*
  198. *&      Form  z_af_listar_np
  199. *&---------------------------------------------------------------------*
  200. *       text
  201. *----------------------------------------------------------------------*
  202. *  -->  p1        text
  203. *  <--  p2        text
  204. *----------------------------------------------------------------------*
  205. FORM z_af_listar_np .
  206.  
  207. ENDFORM.                    " z_af_listar_np
  208.  
  209. *&---------------------------------------------------------------------*
  210. *&      Form  z_af_listar_tg
  211. *&---------------------------------------------------------------------*
  212. *       text
  213. *----------------------------------------------------------------------*
  214. *  -->  p1        text
  215. *  <--  p2        text
  216. *----------------------------------------------------------------------*
  217. FORM z_af_listar_tg .
  218.  
  219. ENDFORM.                    " z_af_listar_tg
  220.  
  221. *&---------------------------------------------------------------------*
  222. *&      Form  init_fieldcat
  223. *&---------------------------------------------------------------------*
  224. *       Inicia el catálogo.
  225. *----------------------------------------------------------------------*
  226. *  -->  p1        text
  227. *  <--  p2        text
  228. *----------------------------------------------------------------------*
  229. FORM z_af_init_fieldcat .
  230.   "--------------------------------------------------------------------
  231.   " -------- Inicio datos comunes ------------
  232.   "--------------------------------------------------------------------
  233.  
  234.  
  235.   "-------------------------------------------------------------------*
  236.   " Sociedad
  237.   "-------------------------------------------------------------------*
  238.   gv_af_wa_fieldcat-fieldname = 'BUKRS'.
  239.   gv_af_wa_fieldcat-ref_tabname = 'ANLA'.
  240.   gv_af_wa_fieldcat-seltext_l = text-060.
  241.   gv_af_wa_fieldcat-key = 'X'.
  242.  
  243.   APPEND gv_af_wa_fieldcat TO gv_af_it_fieldcat.
  244.   CLEAR gv_af_wa_fieldcat.
  245.  
  246.   " Lo incorporamos a la cabecera del Excel.
  247.   gv_it_tabla_af_cabecera-titulo = text-060.
  248.   APPEND gv_it_tabla_af_cabecera.
  249.   CLEAR gv_it_tabla_af_cabecera.
  250.  
  251.   " Permite agrupas celdas iguales
  252.   CLEAR wa_sort.
  253.   wa_sort-fieldname = 'BUKRS'.
  254.   wa_sort-spos = '2'.
  255.   wa_sort-up = 'X'.
  256.   APPEND wa_sort TO d_sortcat.
  257.  
  258.   "--------------------------------------------------------------------
  259.   " Nro. Activo Fijo
  260.   "--------------------------------------------------------------------
  261.   gv_af_wa_fieldcat-fieldname = 'ANLN1'.
  262.   gv_af_wa_fieldcat-ref_tabname = 'ANLA'.
  263.   gv_af_wa_fieldcat-seltext_l = text-061.
  264.   gv_af_wa_fieldcat-key = 'X'.
  265.   APPEND gv_af_wa_fieldcat TO gv_af_it_fieldcat.
  266.   CLEAR gv_af_wa_fieldcat.
  267.  
  268.   " Permite agrupas celdas iguales
  269.   CLEAR wa_sort.
  270.   wa_sort-fieldname = 'ANLN1'.
  271.   wa_sort-spos = '3'.
  272.   wa_sort-up = 'X'.
  273.   APPEND wa_sort TO d_sortcat.
  274.  
  275.   " Lo incorporamos a la cabecera del Excel.
  276.   gv_it_tabla_af_cabecera-titulo = text-061.
  277.   APPEND gv_it_tabla_af_cabecera.
  278.   CLEAR gv_it_tabla_af_cabecera.
  279.  
  280.   "--------------------------------------------------------------------
  281.   " Sub. Nro. Activo Fijo.
  282.   "--------------------------------------------------------------------
  283.   gv_af_wa_fieldcat-fieldname = 'ANLN2'.
  284.   gv_af_wa_fieldcat-ref_tabname = 'ANLA'.
  285.   gv_af_wa_fieldcat-seltext_l = text-062.
  286.   gv_af_wa_fieldcat-key = 'X'.
  287.   APPEND gv_af_wa_fieldcat TO gv_af_it_fieldcat.
  288.   CLEAR gv_af_wa_fieldcat.
  289.  
  290.   " Permite agrupas celdas iguales
  291.   CLEAR wa_sort.
  292.   wa_sort-fieldname = 'ANLN2'.
  293.   wa_sort-spos = '3'.
  294.   wa_sort-up = 'X'.
  295.   APPEND wa_sort TO d_sortcat.
  296.  
  297.   " Lo incorporamos a la cabecera del Excel.
  298.   gv_it_tabla_af_cabecera-titulo = text-062.
  299.   APPEND gv_it_tabla_af_cabecera.
  300.   CLEAR gv_it_tabla_af_cabecera.
  301.  
  302.   "--------------------------------------------------------------------
  303.   " Clase de Activo Fijo
  304.   "--------------------------------------------------------------------
  305.   gv_af_wa_fieldcat-fieldname = 'ANLKL'.
  306.   gv_af_wa_fieldcat-ref_tabname = 'ANLA'.
  307.   gv_af_wa_fieldcat-seltext_l = text-063.
  308.   gv_af_wa_fieldcat-key = 'X'.
  309.   APPEND gv_af_wa_fieldcat TO gv_af_it_fieldcat.
  310.   CLEAR gv_af_wa_fieldcat.
  311.  
  312.   " Permite agrupas celdas iguales
  313.   CLEAR wa_sort.
  314.   wa_sort-fieldname = 'ANLKL'.
  315.   wa_sort-spos = '3'.
  316.   wa_sort-up = 'X'.
  317.   APPEND wa_sort TO d_sortcat.
  318.  
  319.   " Lo incorporamos a la cabecera del Excel.
  320.   gv_it_tabla_af_cabecera-titulo = text-063.
  321.   APPEND gv_it_tabla_af_cabecera.
  322.   CLEAR gv_it_tabla_af_cabecera.
  323.  
  324.   "--------------------------------------------------------------------
  325.   " División
  326.   "--------------------------------------------------------------------
  327.   gv_af_wa_fieldcat-fieldname = 'GSBER'.
  328.   gv_af_wa_fieldcat-ref_tabname = 'ANLZ'.
  329.   gv_af_wa_fieldcat-seltext_l = text-064.
  330.   "gv_af_wa_fieldcat-key = 'X'.
  331.   APPEND gv_af_wa_fieldcat TO gv_af_it_fieldcat.
  332.   CLEAR gv_af_wa_fieldcat.
  333.  
  334.   " Lo incorporamos a la cabecera del Excel.
  335.   gv_it_tabla_af_cabecera-titulo = text-064.
  336.   APPEND gv_it_tabla_af_cabecera.
  337.   CLEAR gv_it_tabla_af_cabecera.
  338.  
  339.   "--------------------------------------------------------------------
  340.   " CeCo
  341.   "--------------------------------------------------------------------
  342.   gv_af_wa_fieldcat-fieldname = 'KOSTL'.
  343.   gv_af_wa_fieldcat-ref_tabname = 'ANLZ'.
  344.   gv_af_wa_fieldcat-seltext_l = text-065.
  345.   "gv_af_wa_fieldcat-key = 'X'.
  346.   APPEND gv_af_wa_fieldcat TO gv_af_it_fieldcat.
  347.   CLEAR gv_af_wa_fieldcat.
  348.  
  349.   " Lo incorporamos a la cabecera del Excel.
  350.   gv_it_tabla_af_cabecera-titulo = text-065.
  351.   APPEND gv_it_tabla_af_cabecera.
  352.   CLEAR gv_it_tabla_af_cabecera.
  353.  
  354.   "--------------------------------------------------------------------
  355.   " Centro
  356.   "--------------------------------------------------------------------
  357.   gv_af_wa_fieldcat-fieldname = 'WERKS'.
  358.   gv_af_wa_fieldcat-ref_tabname = 'ANLZ'.
  359.   gv_af_wa_fieldcat-seltext_l = text-066.
  360.   "gv_af_wa_fieldcat-key = 'X'.
  361.   APPEND gv_af_wa_fieldcat TO gv_af_it_fieldcat.
  362.   CLEAR gv_af_wa_fieldcat.
  363.  
  364.   " Lo incorporamos a la cabecera del Excel.
  365.   gv_it_tabla_af_cabecera-titulo = text-066.
  366.   APPEND gv_it_tabla_af_cabecera.
  367.   CLEAR gv_it_tabla_af_cabecera.
  368.  
  369.   "--------------------------------------------------------------------
  370.   " Emplazamiento
  371.   "--------------------------------------------------------------------
  372.   gv_af_wa_fieldcat-fieldname = 'STORT'.
  373.   gv_af_wa_fieldcat-ref_tabname = 'ANLZ'.
  374.   gv_af_wa_fieldcat-seltext_l = text-067.
  375.   "gv_af_wa_fieldcat-key = 'X'.
  376.   APPEND gv_af_wa_fieldcat TO gv_af_it_fieldcat.
  377.   CLEAR gv_af_wa_fieldcat.
  378.  
  379.   " Lo incorporamos a la cabecera del Excel.
  380.   gv_it_tabla_af_cabecera-titulo = text-067.
  381.   APPEND gv_it_tabla_af_cabecera.
  382.   CLEAR gv_it_tabla_af_cabecera.
  383.  
  384.   "--------------------------------------------------------------------
  385.   " Supran° Activo
  386.   "--------------------------------------------------------------------
  387.   gv_af_wa_fieldcat-fieldname = 'ANLUE'.
  388.   gv_af_wa_fieldcat-ref_tabname = 'ANLA'.
  389.   gv_af_wa_fieldcat-seltext_l = text-068.
  390.   "gv_af_wa_fieldcat-key = 'X'.
  391.   APPEND gv_af_wa_fieldcat TO gv_af_it_fieldcat.
  392.   CLEAR gv_af_wa_fieldcat.
  393.  
  394.   " Lo incorporamos a la cabecera del Excel.
  395.   gv_it_tabla_af_cabecera-titulo = text-068.
  396.   APPEND gv_it_tabla_af_cabecera.
  397.   CLEAR gv_it_tabla_af_cabecera.
  398.  
  399.   "--------------------------------------------------------------------
  400.   " Área de Valoración
  401.   "--------------------------------------------------------------------
  402.   gv_af_wa_fieldcat-fieldname = 'AFABE'.
  403.   gv_af_wa_fieldcat-ref_tabname = 'ANLC'.
  404.   gv_af_wa_fieldcat-seltext_l = text-069.
  405.   "gv_af_wa_fieldcat-key = 'X'.
  406.   APPEND gv_af_wa_fieldcat TO gv_af_it_fieldcat.
  407.   CLEAR gv_af_wa_fieldcat.
  408.  
  409.   " Lo incorporamos a la cabecera del Excel.
  410.   gv_it_tabla_af_cabecera-titulo = text-069.
  411.   APPEND gv_it_tabla_af_cabecera.
  412.   CLEAR gv_it_tabla_af_cabecera.
  413.  
  414.   " Permite agrupas celdas iguales
  415.   CLEAR wa_sort.
  416.   wa_sort-fieldname = 'AFABE'.
  417.   wa_sort-spos = '3'.
  418.   wa_sort-up = 'X'.
  419.   APPEND wa_sort TO d_sortcat.
  420.  
  421.   "--------------------------------------------------------------------
  422.   " -------- Fin datos comunes ------------
  423.   "--------------------------------------------------------------------
  424.  
  425.   "--------------------------------------------------------------------
  426.   " Ejercicio 1
  427.   " Inversión en curso.
  428.   "--------------------------------------------------------------------
  429.   gv_af_wa_fieldcat-fieldname = 'INVERSION_CURSO_1'.
  430.   gv_af_wa_fieldcat-seltext_l = text-009.
  431.   gv_af_wa_fieldcat-tabname = 'GV_IT_TABLA_AF'.
  432.   gv_af_wa_fieldcat-do_sum = 'X'.
  433.  
  434.   " Verificamos si mostramos el ejercicio o no.
  435.   IF 1 NOT IN gv_rango_ejercicios.
  436.     gv_af_wa_fieldcat-no_out = 'X'.
  437.   ELSE.
  438.     " Si debemos mostrar incorporamos a la cabecera para el excel.
  439.     gv_it_tabla_af_cabecera-titulo = text-009.
  440.     APPEND gv_it_tabla_af_cabecera.
  441.     CLEAR gv_it_tabla_af_cabecera.
  442.   ENDIF.
  443.   APPEND gv_af_wa_fieldcat TO gv_af_it_fieldcat.
  444.   CLEAR gv_af_wa_fieldcat.
  445.  
  446.   "--------------------------------------------------------------------
  447.   " Ejercicio 1
  448.   " Inversión en explotación.
  449.   "--------------------------------------------------------------------
  450.   gv_af_wa_fieldcat-fieldname = 'INVERSION_EXPLO_1'.
  451.   gv_af_wa_fieldcat-seltext_l = text-010.
  452.   gv_af_wa_fieldcat-tabname = 'GV_IT_TABLA_AF'.
  453.   gv_af_wa_fieldcat-do_sum = 'X'.
  454.  
  455.   IF 1 NOT IN gv_rango_ejercicios.
  456.     gv_af_wa_fieldcat-no_out = 'X'.
  457.   ELSE.
  458.     " Si debemos mostrar incorporamos a la cabecera.
  459.     gv_it_tabla_af_cabecera-titulo = text-010.
  460.     APPEND gv_it_tabla_af_cabecera.
  461.     CLEAR gv_it_tabla_af_cabecera.
  462.   ENDIF.
  463.   APPEND gv_af_wa_fieldcat TO gv_af_it_fieldcat.
  464.   CLEAR gv_af_wa_fieldcat.
  465.  
  466.  
  467.   "--------------------------------------------------------------------
  468.   " Ejercicio 1
  469.   " Amortización.
  470.   "--------------------------------------------------------------------
  471.   gv_af_wa_fieldcat-fieldname = 'AMORTIZA_EXPLO_1'.
  472.   gv_af_wa_fieldcat-seltext_l = text-011.
  473.   gv_af_wa_fieldcat-tabname = 'GV_IT_TABLA_AF'.
  474.   gv_af_wa_fieldcat-do_sum = 'X'.
  475.  
  476.   IF 1 NOT IN gv_rango_ejercicios.
  477.     gv_af_wa_fieldcat-no_out = 'X'.
  478.   ELSE.
  479.     " Si debemos mostrar incorporamos a la cabecera.
  480.     gv_it_tabla_af_cabecera-titulo = text-011.
  481.     APPEND gv_it_tabla_af_cabecera.
  482.     CLEAR gv_it_tabla_af_cabecera.
  483.   ENDIF.
  484.   APPEND gv_af_wa_fieldcat TO gv_af_it_fieldcat.
  485.   CLEAR gv_af_wa_fieldcat.
  486.  
  487.   "--------------------------------------------------------------------
  488.   " Ejercicio 2
  489.   " Inversión en curso.
  490.   "--------------------------------------------------------------------
  491.   gv_af_wa_fieldcat-fieldname = 'INVERSION_CURSO_2'.
  492.   gv_af_wa_fieldcat-seltext_l = text-012.
  493.   gv_af_wa_fieldcat-tabname = 'GV_IT_TABLA_AF'.
  494.   gv_af_wa_fieldcat-do_sum = 'X'.
  495.  
  496.   IF 2 NOT IN gv_rango_ejercicios.
  497.     gv_af_wa_fieldcat-no_out = 'X'.
  498.   ELSE.
  499.     " Si debemos mostrar incorporamos a la cabecera.
  500.     gv_it_tabla_af_cabecera-titulo = text-012.
  501.     APPEND gv_it_tabla_af_cabecera.
  502.     CLEAR gv_it_tabla_af_cabecera.
  503.   ENDIF.
  504.   APPEND gv_af_wa_fieldcat TO gv_af_it_fieldcat.
  505.   CLEAR gv_af_wa_fieldcat.
  506.  
  507.   "--------------------------------------------------------------------
  508.   " Ejercicio 2
  509.   " Inversión en explotación.
  510.   "--------------------------------------------------------------------
  511.   gv_af_wa_fieldcat-fieldname = 'INVERSION_EXPLO_2'.
  512.   gv_af_wa_fieldcat-seltext_l = text-013.
  513.   gv_af_wa_fieldcat-tabname = 'GV_IT_TABLA_AF'.
  514.   gv_af_wa_fieldcat-do_sum = 'X'.
  515.  
  516.   IF 2 NOT IN gv_rango_ejercicios.
  517.     gv_af_wa_fieldcat-no_out = 'X'.
  518.   ELSE.
  519.     " Si debemos mostrar incorporamos a la cabecera.
  520.     gv_it_tabla_af_cabecera-titulo = text-013.
  521.     APPEND gv_it_tabla_af_cabecera.
  522.     CLEAR gv_it_tabla_af_cabecera.
  523.   ENDIF.
  524.   APPEND gv_af_wa_fieldcat TO gv_af_it_fieldcat.
  525.   CLEAR gv_af_wa_fieldcat.
  526.  
  527.   "--------------------------------------------------------------------
  528.   " Ejercicio 2
  529.   " Amortización
  530.   "--------------------------------------------------------------------
  531.   gv_af_wa_fieldcat-fieldname = 'AMORTIZA_EXPLO_2'.
  532.   gv_af_wa_fieldcat-seltext_l = text-014.
  533.   gv_af_wa_fieldcat-tabname = 'GV_IT_TABLA_AF'.
  534.   gv_af_wa_fieldcat-do_sum = 'X'.
  535.  
  536.   IF 2 NOT IN gv_rango_ejercicios.
  537.     gv_af_wa_fieldcat-no_out = 'X'.
  538.   ELSE.
  539.     " Si debemos mostrar incorporamos a la cabecera.
  540.     gv_it_tabla_af_cabecera-titulo = text-014.
  541.     APPEND gv_it_tabla_af_cabecera.
  542.     CLEAR gv_it_tabla_af_cabecera.
  543.   ENDIF.
  544.   APPEND gv_af_wa_fieldcat TO gv_af_it_fieldcat.
  545.   CLEAR gv_af_wa_fieldcat.
  546.  
  547.   "--------------------------------------------------------------------
  548.   " Ejercicio 3
  549.   " Inversión en curso.
  550.   "--------------------------------------------------------------------
  551.   gv_af_wa_fieldcat-fieldname = 'INVERSION_CURSO_3'.
  552.   gv_af_wa_fieldcat-seltext_l = text-015.
  553.   gv_af_wa_fieldcat-tabname = 'GV_IT_TABLA_AF'.
  554.   gv_af_wa_fieldcat-do_sum = 'X'.
  555.  
  556.   IF 3 NOT IN gv_rango_ejercicios.
  557.     gv_af_wa_fieldcat-no_out = 'X'.
  558.   ELSE.
  559.     " Si debemos mostrar incorporamos a la cabecera.
  560.     gv_it_tabla_af_cabecera-titulo = text-015.
  561.     APPEND gv_it_tabla_af_cabecera.
  562.     CLEAR gv_it_tabla_af_cabecera.
  563.   ENDIF.
  564.   APPEND gv_af_wa_fieldcat TO gv_af_it_fieldcat.
  565.   CLEAR gv_af_wa_fieldcat.
  566.  
  567.   "--------------------------------------------------------------------
  568.   " Ejercicio 3
  569.   " Inversión en explotación.
  570.   "--------------------------------------------------------------------
  571.   gv_af_wa_fieldcat-fieldname = 'INVERSION_EXPLO_3'.
  572.   gv_af_wa_fieldcat-seltext_l = text-016.
  573.   gv_af_wa_fieldcat-tabname = 'GV_IT_TABLA_AF'.
  574.   gv_af_wa_fieldcat-do_sum = 'X'.
  575.  
  576.   IF 3 NOT IN gv_rango_ejercicios.
  577.     gv_af_wa_fieldcat-no_out = 'X'.
  578.   ELSE.
  579.     " Si debemos mostrar incorporamos a la cabecera.
  580.     gv_it_tabla_af_cabecera-titulo = text-016.
  581.     APPEND gv_it_tabla_af_cabecera.
  582.     CLEAR gv_it_tabla_af_cabecera.
  583.   ENDIF.
  584.   APPEND gv_af_wa_fieldcat TO gv_af_it_fieldcat.
  585.   CLEAR gv_af_wa_fieldcat.
  586.  
  587.   "--------------------------------------------------------------------
  588.   " Ejercicio 3
  589.   " Amortización
  590.   "--------------------------------------------------------------------
  591.   gv_af_wa_fieldcat-fieldname = 'AMORTIZA_EXPLO_3'.
  592.   gv_af_wa_fieldcat-seltext_l = text-017.
  593.   gv_af_wa_fieldcat-tabname = 'GV_IT_TABLA_AF'.
  594.   gv_af_wa_fieldcat-do_sum = 'X'.
  595.  
  596.   IF 3 NOT IN gv_rango_ejercicios.
  597.     gv_af_wa_fieldcat-no_out = 'X'.
  598.   ELSE.
  599.     " Si debemos mostrar incorporamos a la cabecera.
  600.     gv_it_tabla_af_cabecera-titulo = text-017.
  601.     APPEND gv_it_tabla_af_cabecera.
  602.     CLEAR gv_it_tabla_af_cabecera.
  603.   ENDIF.
  604.   APPEND gv_af_wa_fieldcat TO gv_af_it_fieldcat.
  605.   CLEAR gv_af_wa_fieldcat.
  606.  
  607.   "--------------------------------------------------------------------
  608.   " Ejercicio 4
  609.   " Inversión en curso.
  610.   "--------------------------------------------------------------------
  611.   gv_af_wa_fieldcat-fieldname = 'INVERSION_CURSO_4'.
  612.   gv_af_wa_fieldcat-seltext_l = text-018.
  613.   gv_af_wa_fieldcat-tabname = 'GV_IT_TABLA_AF'.
  614.   gv_af_wa_fieldcat-do_sum = 'X'.
  615.  
  616.   IF 4 NOT IN gv_rango_ejercicios.
  617.     gv_af_wa_fieldcat-no_out = 'X'.
  618.   ELSE.
  619.     " Si debemos mostrar incorporamos a la cabecera.
  620.     gv_it_tabla_af_cabecera-titulo = text-018.
  621.     APPEND gv_it_tabla_af_cabecera.
  622.     CLEAR gv_it_tabla_af_cabecera.
  623.   ENDIF.
  624.   APPEND gv_af_wa_fieldcat TO gv_af_it_fieldcat.
  625.   CLEAR gv_af_wa_fieldcat.
  626.  
  627.   "--------------------------------------------------------------------
  628.   " Ejercicio 4
  629.   " Inversión en explotación.
  630.   "--------------------------------------------------------------------
  631.   gv_af_wa_fieldcat-fieldname = 'INVERSION_EXPLO_4'.
  632.   gv_af_wa_fieldcat-seltext_l = text-019.
  633.   gv_af_wa_fieldcat-tabname = 'GV_IT_TABLA_AF'.
  634.   gv_af_wa_fieldcat-do_sum = 'X'.
  635.  
  636.   IF 4 NOT IN gv_rango_ejercicios.
  637.     gv_af_wa_fieldcat-no_out = 'X'.
  638.   ELSE.
  639.     " Si debemos mostrar incorporamos a la cabecera.
  640.     gv_it_tabla_af_cabecera-titulo = text-019.
  641.     APPEND gv_it_tabla_af_cabecera.
  642.     CLEAR gv_it_tabla_af_cabecera.
  643.   ENDIF.
  644.   APPEND gv_af_wa_fieldcat TO gv_af_it_fieldcat.
  645.   CLEAR gv_af_wa_fieldcat.
  646.  
  647.   "--------------------------------------------------------------------
  648.   " Ejercicio 4
  649.   " Amortización
  650.   "--------------------------------------------------------------------
  651.   gv_af_wa_fieldcat-fieldname = 'AMORTIZA_EXPLO_4'.
  652.   gv_af_wa_fieldcat-seltext_l = text-020.
  653.   gv_af_wa_fieldcat-do_sum = 'X'.
  654.   gv_af_wa_fieldcat-tabname = 'GV_IT_TABLA_AF'.
  655.  
  656.  
  657.   IF 4 NOT IN gv_rango_ejercicios.
  658.     gv_af_wa_fieldcat-no_out = 'X'.
  659.   ELSE.
  660.     " Si debemos mostrar incorporamos a la cabecera.
  661.     gv_it_tabla_af_cabecera-titulo = text-020.
  662.     APPEND gv_it_tabla_af_cabecera.
  663.     CLEAR gv_it_tabla_af_cabecera.
  664.   ENDIF.
  665.   APPEND gv_af_wa_fieldcat TO gv_af_it_fieldcat.
  666.   CLEAR gv_af_wa_fieldcat.
  667.  
  668.   "--------------------------------------------------------------------
  669.   " Ejercicio 5
  670.   " Inversión en curso.
  671.   "--------------------------------------------------------------------
  672.   gv_af_wa_fieldcat-fieldname = 'INVERSION_CURSO_5'.
  673.   gv_af_wa_fieldcat-seltext_l = text-021.
  674.   gv_af_wa_fieldcat-tabname = 'GV_IT_TABLA_AF'.
  675.   gv_af_wa_fieldcat-do_sum = 'X'.
  676.  
  677.   IF 5 NOT IN gv_rango_ejercicios.
  678.     gv_af_wa_fieldcat-no_out = 'X'.
  679.   ELSE.
  680.     " Si debemos mostrar incorporamos a la cabecera.
  681.     gv_it_tabla_af_cabecera-titulo = text-021.
  682.     APPEND gv_it_tabla_af_cabecera.
  683.     CLEAR gv_it_tabla_af_cabecera.
  684.   ENDIF.
  685.  APPEND gv_af_wa_fieldcat TO gv_af_it_fieldcat.
  686.   CLEAR gv_af_wa_fieldcat.
  687.  
  688.   "--------------------------------------------------------------------
  689.   " Ejercicio 5
  690.   " Inversión en explotación.
  691.   "--------------------------------------------------------------------
  692.   gv_af_wa_fieldcat-fieldname = 'INVERSION_EXPLO_5'.
  693.   gv_af_wa_fieldcat-seltext_l = text-022.
  694.   gv_af_wa_fieldcat-tabname = 'GV_IT_TABLA_AF'.
  695.   gv_af_wa_fieldcat-do_sum = 'X'.
  696.  
  697.   IF 5 NOT IN gv_rango_ejercicios.
  698.     gv_af_wa_fieldcat-no_out = 'X'.
  699.   ELSE.
  700.     " Si debemos mostrar incorporamos a la cabecera.
  701.     gv_it_tabla_af_cabecera-titulo = text-022.
  702.     APPEND gv_it_tabla_af_cabecera.
  703.     CLEAR gv_it_tabla_af_cabecera.
  704.   ENDIF.
  705.   APPEND gv_af_wa_fieldcat TO gv_af_it_fieldcat.
  706.   CLEAR gv_af_wa_fieldcat.
  707.  
  708.   "--------------------------------------------------------------------
  709.   " Ejercicio 5
  710.   " Amortización
  711.   "--------------------------------------------------------------------
  712.   gv_af_wa_fieldcat-fieldname = 'AMORTIZA_EXPLO_5'.
  713.   gv_af_wa_fieldcat-seltext_l = text-023.
  714.   gv_af_wa_fieldcat-tabname = 'GV_IT_TABLA_AF'.
  715.   gv_af_wa_fieldcat-do_sum = 'X'.
  716.  
  717.   IF 5 NOT IN gv_rango_ejercicios.
  718.     gv_af_wa_fieldcat-no_out = 'X'.
  719.   ELSE.
  720.     " Si debemos mostrar incorporamos a la cabecera.
  721.     gv_it_tabla_af_cabecera-titulo = text-023.
  722.     APPEND gv_it_tabla_af_cabecera.
  723.     CLEAR gv_it_tabla_af_cabecera.
  724.   ENDIF.
  725.   APPEND gv_af_wa_fieldcat TO gv_af_it_fieldcat.
  726.   CLEAR gv_af_wa_fieldcat.
  727.  
  728.   "--------------------------------------------------------------------
  729.   " Ejercicio 6
  730.   " Inversión en curso.
  731.   "--------------------------------------------------------------------
  732.   gv_af_wa_fieldcat-fieldname = 'INVERSION_CURSO_6'.
  733.   gv_af_wa_fieldcat-seltext_l = text-024.
  734.   gv_af_wa_fieldcat-tabname = 'GV_IT_TABLA_AF'.
  735.   gv_af_wa_fieldcat-do_sum = 'X'.
  736.  
  737.   IF 6 NOT IN gv_rango_ejercicios.
  738.     gv_af_wa_fieldcat-no_out = 'X'.
  739.   ELSE.
  740.     " Si debemos mostrar incorporamos a la cabecera.
  741.     gv_it_tabla_af_cabecera-titulo = text-024.
  742.     APPEND gv_it_tabla_af_cabecera.
  743.     CLEAR gv_it_tabla_af_cabecera.
  744.   ENDIF.
  745.   APPEND gv_af_wa_fieldcat TO gv_af_it_fieldcat.
  746.   CLEAR gv_af_wa_fieldcat.
  747.  
  748.   " Ejercicio 6
  749.   " Inversión en explotación.
  750.   gv_af_wa_fieldcat-fieldname = 'INVERSION_EXPLO_6'.
  751.   gv_af_wa_fieldcat-seltext_l = text-025.
  752.   gv_af_wa_fieldcat-tabname = 'GV_IT_TABLA_AF'.
  753.   gv_af_wa_fieldcat-do_sum = 'X'.
  754.  
  755.   IF 6 NOT IN gv_rango_ejercicios.
  756.     gv_af_wa_fieldcat-no_out = 'X'.
  757.   ELSE.
  758.     " Si debemos mostrar incorporamos a la cabecera.
  759.     gv_it_tabla_af_cabecera-titulo = text-025.
  760.     APPEND gv_it_tabla_af_cabecera.
  761.     CLEAR gv_it_tabla_af_cabecera.
  762.   ENDIF.
  763.   APPEND gv_af_wa_fieldcat TO gv_af_it_fieldcat.
  764.   CLEAR gv_af_wa_fieldcat.
  765.  
  766.   "--------------------------------------------------------------------
  767.   " Ejercicio 6
  768.   " Amortización
  769.   "--------------------------------------------------------------------
  770.   gv_af_wa_fieldcat-fieldname = 'AMORTIZA_EXPLO_6'.
  771.   gv_af_wa_fieldcat-seltext_l = text-026.
  772.   gv_af_wa_fieldcat-tabname = 'GV_IT_TABLA_AF'.
  773.   gv_af_wa_fieldcat-do_sum = 'X'.
  774.  
  775.   IF 6 NOT IN gv_rango_ejercicios.
  776.     gv_af_wa_fieldcat-no_out = 'X'.
  777.   ELSE.
  778.     " Si debemos mostrar incorporamos a la cabecera.
  779.     gv_it_tabla_af_cabecera-titulo = text-026.
  780.     APPEND gv_it_tabla_af_cabecera.
  781.     CLEAR gv_it_tabla_af_cabecera.
  782.   ENDIF.
  783.   APPEND gv_af_wa_fieldcat TO gv_af_it_fieldcat.
  784.   CLEAR gv_af_wa_fieldcat.
  785.  
  786.   "--------------------------------------------------------------------
  787.   " Ejercicio 7
  788.   " Inversión en curso.
  789.   "--------------------------------------------------------------------
  790.   gv_af_wa_fieldcat-fieldname = 'INVERSION_CURSO_7'.
  791.   gv_af_wa_fieldcat-seltext_l = text-027.
  792.   gv_af_wa_fieldcat-tabname = 'GV_IT_TABLA_AF'.
  793.   gv_af_wa_fieldcat-do_sum = 'X'.
  794.  
  795.   IF 7 NOT IN gv_rango_ejercicios.
  796.     gv_af_wa_fieldcat-no_out = 'X'.
  797.   ELSE.
  798.     " Si debemos mostrar incorporamos a la cabecera.
  799.     gv_it_tabla_af_cabecera-titulo = text-027.
  800.     APPEND gv_it_tabla_af_cabecera.
  801.     CLEAR gv_it_tabla_af_cabecera.
  802.   ENDIF.
  803.   APPEND gv_af_wa_fieldcat TO gv_af_it_fieldcat.
  804.   CLEAR gv_af_wa_fieldcat.
  805.  
  806.   "--------------------------------------------------------------------
  807.   " Ejercicio 7
  808.   " Inversión en explotación.
  809.   "--------------------------------------------------------------------
  810.   gv_af_wa_fieldcat-fieldname = 'INVERSION_EXPLO_7'.
  811.   gv_af_wa_fieldcat-seltext_l = text-028.
  812.   gv_af_wa_fieldcat-tabname = 'GV_IT_TABLA_AF'.
  813.   gv_af_wa_fieldcat-do_sum = 'X'.
  814.  
  815.   IF 7 NOT IN gv_rango_ejercicios.
  816.     gv_af_wa_fieldcat-no_out = 'X'.
  817.   ELSE.
  818.     " Si debemos mostrar incorporamos a la cabecera.
  819.     gv_it_tabla_af_cabecera-titulo = text-028.
  820.     APPEND gv_it_tabla_af_cabecera.
  821.     CLEAR gv_it_tabla_af_cabecera.
  822.   ENDIF.
  823.   APPEND gv_af_wa_fieldcat TO gv_af_it_fieldcat.
  824.   CLEAR gv_af_wa_fieldcat.
  825.  
  826.   "--------------------------------------------------------------------
  827.   " Ejercicio 7
  828.   " Amortización
  829.   "--------------------------------------------------------------------
  830.   gv_af_wa_fieldcat-fieldname = 'AMORTIZA_EXPLO_7'.
  831.   gv_af_wa_fieldcat-seltext_l = text-029.
  832.   gv_af_wa_fieldcat-tabname = 'GV_IT_TABLA_AF'.
  833.   gv_af_wa_fieldcat-do_sum = 'X'.
  834.  
  835.   IF 7 NOT IN gv_rango_ejercicios.
  836.     gv_af_wa_fieldcat-no_out = 'X'.
  837.   ELSE.
  838.     " Si debemos mostrar incorporamos a la cabecera.
  839.     gv_it_tabla_af_cabecera-titulo = text-029.
  840.     APPEND gv_it_tabla_af_cabecera.
  841.     CLEAR gv_it_tabla_af_cabecera.
  842.   ENDIF.
  843.   APPEND gv_af_wa_fieldcat TO gv_af_it_fieldcat.
  844.   CLEAR gv_af_wa_fieldcat.
  845.  
  846.   "--------------------------------------------------------------------
  847.   " Ejercicio 8
  848.   " Inversión en curso.
  849.   "--------------------------------------------------------------------
  850.   gv_af_wa_fieldcat-fieldname = 'INVERSION_CURSO_8'.
  851.   gv_af_wa_fieldcat-seltext_l = text-030.
  852.   gv_af_wa_fieldcat-tabname = 'GV_IT_TABLA_AF'.
  853.   gv_af_wa_fieldcat-do_sum = 'X'.
  854.  
  855.   IF 8 NOT IN gv_rango_ejercicios.
  856.     gv_af_wa_fieldcat-no_out = 'X'.
  857.   ELSE.
  858.     " Si debemos mostrar incorporamos a la cabecera.
  859.     gv_it_tabla_af_cabecera-titulo = text-030.
  860.     APPEND gv_it_tabla_af_cabecera.
  861.     CLEAR gv_it_tabla_af_cabecera.
  862.   ENDIF.
  863.   APPEND gv_af_wa_fieldcat TO gv_af_it_fieldcat.
  864.   CLEAR gv_af_wa_fieldcat.
  865.  
  866.   "--------------------------------------------------------------------
  867.   " Ejercicio 8
  868.   " Inversión en explotación.
  869.   "--------------------------------------------------------------------
  870.   gv_af_wa_fieldcat-fieldname = 'INVERSION_EXPLO_8'.
  871.   gv_af_wa_fieldcat-seltext_l = text-031.
  872.   gv_af_wa_fieldcat-tabname = 'GV_IT_TABLA_AF'.
  873.   gv_af_wa_fieldcat-do_sum = 'X'.
  874.  
  875.   IF 8 NOT IN gv_rango_ejercicios.
  876.     gv_af_wa_fieldcat-no_out = 'X'.
  877.   ELSE.
  878.     " Si debemos mostrar incorporamos a la cabecera.
  879.     gv_it_tabla_af_cabecera-titulo = text-031.
  880.     APPEND gv_it_tabla_af_cabecera.
  881.     CLEAR gv_it_tabla_af_cabecera.
  882.   ENDIF.
  883.   APPEND gv_af_wa_fieldcat TO gv_af_it_fieldcat.
  884.   CLEAR gv_af_wa_fieldcat.
  885.  
  886.   "--------------------------------------------------------------------
  887.   " Ejercicio 8
  888.   " Amortización
  889.   "--------------------------------------------------------------------
  890.   gv_af_wa_fieldcat-fieldname = 'AMORTIZA_EXPLO_8'.
  891.   gv_af_wa_fieldcat-seltext_l = text-032.
  892.   gv_af_wa_fieldcat-tabname = 'GV_IT_TABLA_AF'.
  893.   gv_af_wa_fieldcat-do_sum = 'X'.
  894.  
  895.   IF 8 NOT IN gv_rango_ejercicios.
  896.     gv_af_wa_fieldcat-no_out = 'X'.
  897.   ELSE.
  898.     " Si debemos mostrar incorporamos a la cabecera.
  899.     gv_it_tabla_af_cabecera-titulo = text-032.
  900.     APPEND gv_it_tabla_af_cabecera.
  901.     CLEAR gv_it_tabla_af_cabecera.
  902.   ENDIF.
  903.   APPEND gv_af_wa_fieldcat TO gv_af_it_fieldcat.
  904.   CLEAR gv_af_wa_fieldcat.
  905.  
  906.   "--------------------------------------------------------------------
  907.   " Ejercicio 9
  908.   " Inversión en curso.
  909.   "--------------------------------------------------------------------
  910.   gv_af_wa_fieldcat-fieldname = 'INVERSION_CURSO_9'.
  911.   gv_af_wa_fieldcat-seltext_l = text-033.
  912.   gv_af_wa_fieldcat-tabname = 'GV_IT_TABLA_AF'.
  913.   gv_af_wa_fieldcat-do_sum = 'X'.
  914.  
  915.   IF 9 NOT IN gv_rango_ejercicios.
  916.     gv_af_wa_fieldcat-no_out = 'X'.
  917.   ELSE.
  918.     " Si debemos mostrar incorporamos a la cabecera.
  919.     gv_it_tabla_af_cabecera-titulo = text-033.
  920.     APPEND gv_it_tabla_af_cabecera.
  921.     CLEAR gv_it_tabla_af_cabecera.
  922.   ENDIF.
  923.   APPEND gv_af_wa_fieldcat TO gv_af_it_fieldcat.
  924.   CLEAR gv_af_wa_fieldcat.
  925.  
  926.   "--------------------------------------------------------------------
  927.   " Ejercicio 9
  928.   " Inversión en explotación.
  929.   "--------------------------------------------------------------------
  930.   gv_af_wa_fieldcat-fieldname = 'INVERSION_EXPLO_9'.
  931.   gv_af_wa_fieldcat-seltext_l = text-034.
  932.   gv_af_wa_fieldcat-tabname = 'GV_IT_TABLA_AF'.
  933.   gv_af_wa_fieldcat-do_sum = 'X'.
  934.  
  935.   IF 9 NOT IN gv_rango_ejercicios.
  936.     gv_af_wa_fieldcat-no_out = 'X'.
  937.   ELSE.
  938.     " Si debemos mostrar incorporamos a la cabecera.
  939.     gv_it_tabla_af_cabecera-titulo = text-034.
  940.     APPEND gv_it_tabla_af_cabecera.
  941.     CLEAR gv_it_tabla_af_cabecera.
  942.   ENDIF.
  943.   APPEND gv_af_wa_fieldcat TO gv_af_it_fieldcat.
  944.   CLEAR gv_af_wa_fieldcat.
  945.  
  946.   "--------------------------------------------------------------------
  947.   " Ejercicio 9
  948.   " Amortización
  949.   "--------------------------------------------------------------------
  950.   gv_af_wa_fieldcat-fieldname = 'AMORTIZA_EXPLO_9'.
  951.   gv_af_wa_fieldcat-seltext_l = text-035.
  952.   gv_af_wa_fieldcat-tabname = 'GV_IT_TABLA_AF'.
  953.   gv_af_wa_fieldcat-do_sum = 'X'.
  954.  
  955.   IF 9 NOT IN gv_rango_ejercicios.
  956.     gv_af_wa_fieldcat-no_out = 'X'.
  957.   ELSE.
  958.     " Si debemos mostrar incorporamos a la cabecera.
  959.     gv_it_tabla_af_cabecera-titulo = text-035.
  960.     APPEND gv_it_tabla_af_cabecera.
  961.     CLEAR gv_it_tabla_af_cabecera.
  962.   ENDIF.
  963.   APPEND gv_af_wa_fieldcat TO gv_af_it_fieldcat.
  964.   CLEAR gv_af_wa_fieldcat.
  965.  
  966.   "--------------------------------------------------------------------
  967.   " Ejercicio 10
  968.   " Inversión en curso.
  969.   "--------------------------------------------------------------------
  970.   gv_af_wa_fieldcat-fieldname = 'INVERSION_CURSO_10'.
  971.   gv_af_wa_fieldcat-seltext_l = text-036.
  972.   gv_af_wa_fieldcat-tabname = 'GV_IT_TABLA_AF'.
  973.   gv_af_wa_fieldcat-do_sum = 'X'.
  974.  
  975.   IF 10 NOT IN gv_rango_ejercicios.
  976.     gv_af_wa_fieldcat-no_out = 'X'.
  977.   ELSE.
  978.     " Si debemos mostrar incorporamos a la cabecera.
  979.     gv_it_tabla_af_cabecera-titulo = text-036.
  980.     APPEND gv_it_tabla_af_cabecera.
  981.     CLEAR gv_it_tabla_af_cabecera.
  982.   ENDIF.
  983.   APPEND gv_af_wa_fieldcat TO gv_af_it_fieldcat.
  984.   CLEAR gv_af_wa_fieldcat.
  985.  
  986.   "--------------------------------------------------------------------
  987.   " Ejercicio 10
  988.   " Inversión en explotación.
  989.   "--------------------------------------------------------------------
  990.   gv_af_wa_fieldcat-fieldname = 'INVERSION_EXPLO_10'.
  991.   gv_af_wa_fieldcat-seltext_l = text-037.
  992.   gv_af_wa_fieldcat-tabname = 'GV_IT_TABLA_AF'.
  993.   gv_af_wa_fieldcat-do_sum = 'X'.
  994.  
  995.   IF 10 NOT IN gv_rango_ejercicios.
  996.     gv_af_wa_fieldcat-no_out = 'X'.
  997.   ELSE.
  998.     " Si debemos mostrar incorporamos a la cabecera.
  999.     gv_it_tabla_af_cabecera-titulo = text-037.
  1000.     APPEND gv_it_tabla_af_cabecera.
  1001.     CLEAR gv_it_tabla_af_cabecera.
  1002.   ENDIF.
  1003.   APPEND gv_af_wa_fieldcat TO gv_af_it_fieldcat.
  1004.   CLEAR gv_af_wa_fieldcat.
  1005.  
  1006.   "--------------------------------------------------------------------
  1007.   " Ejercicio 10
  1008.   " Amortización
  1009.   "--------------------------------------------------------------------
  1010.   gv_af_wa_fieldcat-fieldname = 'AMORTIZA_EXPLO_10'.
  1011.   gv_af_wa_fieldcat-seltext_l = text-038.
  1012.   gv_af_wa_fieldcat-tabname = 'GV_IT_TABLA_AF'.
  1013.   gv_af_wa_fieldcat-do_sum = 'X'.
  1014.  
  1015.   IF 10 NOT IN gv_rango_ejercicios.
  1016.     gv_af_wa_fieldcat-no_out = 'X'.
  1017.   ELSE.
  1018.     " Si debemos mostrar incorporamos a la cabecera.
  1019.     gv_it_tabla_af_cabecera-titulo = text-038.
  1020.     APPEND gv_it_tabla_af_cabecera.
  1021.     CLEAR gv_it_tabla_af_cabecera.
  1022.   ENDIF.
  1023.   APPEND gv_af_wa_fieldcat TO gv_af_it_fieldcat.
  1024.   CLEAR gv_af_wa_fieldcat.
  1025.  
  1026.   "--------------------------------------------------------------------
  1027.   " -------- Fin datos variantes ------------
  1028.   "--------------------------------------------------------------------
  1029.  
  1030.  
  1031.   "--------------------------------------------------------------------
  1032.   " Ejercicio Actual
  1033.   " Inversión en curso.
  1034.   "--------------------------------------------------------------------
  1035.   gv_af_wa_fieldcat-fieldname = 'INVERSION_CURSO_ACTUAL'.
  1036.   gv_af_wa_fieldcat-seltext_l = text-039.
  1037.   gv_af_wa_fieldcat-tabname = 'GV_IT_TABLA_AF'.
  1038.   gv_af_wa_fieldcat-do_sum = 'X'.
  1039. *  gv_af_wa_fieldcat-ref_tabname = 'KINVZ'.
  1040.   APPEND gv_af_wa_fieldcat TO gv_af_it_fieldcat.
  1041.   CLEAR gv_af_wa_fieldcat.
  1042.  
  1043.  
  1044.   "--------------------------------------------------------------------
  1045.   " Ejercicio Actual
  1046.   " Inversión en explotación.
  1047.   "--------------------------------------------------------------------
  1048.   gv_af_wa_fieldcat-fieldname = 'INVERSION_EXPLO_ACTUAL'.
  1049.   gv_af_wa_fieldcat-seltext_l = text-040.
  1050.   gv_af_wa_fieldcat-tabname = 'GV_IT_TABLA_AF'.
  1051.   gv_af_wa_fieldcat-do_sum = 'X'.
  1052.  
  1053.   APPEND gv_af_wa_fieldcat TO gv_af_it_fieldcat.
  1054.   CLEAR gv_af_wa_fieldcat.
  1055.  
  1056.  
  1057.  
  1058.   "--------------------------------------------------------------------
  1059.   " NOTA:
  1060.   "   tener en cuenta que solo se muestran los periodos hasta el mes actual
  1061.   "   inclusive.
  1062.   "--------------------------------------------------------------------
  1063.  
  1064.   "--------------------------------------------------------------------
  1065.   " Amortización p1
  1066.   "--------------------------------------------------------------------
  1067.   gv_af_wa_fieldcat-fieldname = 'AMORTIZA_EXPLO_ACTUAL_P1'.
  1068.   gv_af_wa_fieldcat-seltext_l = text-041.
  1069.   gv_af_wa_fieldcat-tabname = 'GV_IT_TABLA_AF'.
  1070.   gv_af_wa_fieldcat-do_sum = 'X'.
  1071.  
  1072.  
  1073.   IF 1 > gv_af_mes_en_curso.
  1074.     gv_af_wa_fieldcat-no_out = 'X'.
  1075.   ELSE.
  1076.     " Si debemos mostrar incorporamos a la cabecera.
  1077.     gv_it_tabla_af_cabecera-titulo = text-041.
  1078.     APPEND gv_it_tabla_af_cabecera.
  1079.     CLEAR gv_it_tabla_af_cabecera.
  1080.   ENDIF.
  1081.   APPEND gv_af_wa_fieldcat TO gv_af_it_fieldcat.
  1082.   CLEAR gv_af_wa_fieldcat.
  1083.  
  1084.   "--------------------------------------------------------------------
  1085.   " Amortización p2
  1086.   "--------------------------------------------------------------------
  1087.   gv_af_wa_fieldcat-fieldname = 'AMORTIZA_EXPLO_ACTUAL_P2'.
  1088.   gv_af_wa_fieldcat-seltext_l = text-042.
  1089.   gv_af_wa_fieldcat-tabname = 'GV_IT_TABLA_AF'.
  1090.   gv_af_wa_fieldcat-do_sum = 'X'.
  1091.  
  1092.   IF 2 > gv_af_mes_en_curso.
  1093.     gv_af_wa_fieldcat-no_out = 'X'.
  1094.   ELSE.
  1095.     " Si debemos mostrar incorporamos a la cabecera.
  1096.     gv_it_tabla_af_cabecera-titulo = text-042.
  1097.     APPEND gv_it_tabla_af_cabecera.
  1098.     CLEAR gv_it_tabla_af_cabecera.
  1099.   ENDIF.
  1100.   APPEND gv_af_wa_fieldcat TO gv_af_it_fieldcat.
  1101.   CLEAR gv_af_wa_fieldcat.
  1102.  
  1103.   "--------------------------------------------------------------------
  1104.   " Amortización p3
  1105.   "--------------------------------------------------------------------
  1106.   gv_af_wa_fieldcat-fieldname = 'AMORTIZA_EXPLO_ACTUAL_P3'.
  1107.   gv_af_wa_fieldcat-seltext_l = text-043.
  1108.   gv_af_wa_fieldcat-tabname = 'GV_IT_TABLA_AF'.
  1109.   gv_af_wa_fieldcat-do_sum = 'X'.
  1110.  
  1111.   IF 3 > gv_af_mes_en_curso.
  1112.     gv_af_wa_fieldcat-no_out = 'X'.
  1113.   ELSE.
  1114.     " Si debemos mostrar incorporamos a la cabecera.
  1115.     gv_it_tabla_af_cabecera-titulo = text-043.
  1116.     APPEND gv_it_tabla_af_cabecera.
  1117.     CLEAR gv_it_tabla_af_cabecera.
  1118.   ENDIF.
  1119.  
  1120.   APPEND gv_af_wa_fieldcat TO gv_af_it_fieldcat.
  1121.   CLEAR gv_af_wa_fieldcat.
  1122.  
  1123.   "--------------------------------------------------------------------
  1124.   " Amortización p4
  1125.   "--------------------------------------------------------------------
  1126.   gv_af_wa_fieldcat-fieldname = 'AMORTIZA_EXPLO_ACTUAL_P4'.
  1127.   gv_af_wa_fieldcat-seltext_l = text-044.
  1128.   gv_af_wa_fieldcat-tabname = 'GV_IT_TABLA_AF'.
  1129.   gv_af_wa_fieldcat-do_sum = 'X'.
  1130.  
  1131.   IF 4 > gv_af_mes_en_curso.
  1132.     gv_af_wa_fieldcat-no_out = 'X'.
  1133.   ELSE.
  1134.     " Si debemos mostrar incorporamos a la cabecera.
  1135.     gv_it_tabla_af_cabecera-titulo = text-044.
  1136.     APPEND gv_it_tabla_af_cabecera.
  1137.     CLEAR gv_it_tabla_af_cabecera.
  1138.   ENDIF.
  1139.  
  1140.   APPEND gv_af_wa_fieldcat TO gv_af_it_fieldcat.
  1141.   CLEAR gv_af_wa_fieldcat.
  1142.  
  1143.   "--------------------------------------------------------------------
  1144.   " Amortización p5
  1145.   "--------------------------------------------------------------------
  1146.   gv_af_wa_fieldcat-fieldname = 'AMORTIZA_EXPLO_ACTUAL_P5'.
  1147.   gv_af_wa_fieldcat-seltext_l = text-045.
  1148.   gv_af_wa_fieldcat-tabname = 'GV_IT_TABLA_AF'.
  1149.   gv_af_wa_fieldcat-do_sum = 'X'.
  1150.  
  1151.   IF 5 > gv_af_mes_en_curso.
  1152.     gv_af_wa_fieldcat-no_out = 'X'.
  1153.   ELSE.
  1154.     " Si debemos mostrar incorporamos a la cabecera.
  1155.     gv_it_tabla_af_cabecera-titulo = text-045.
  1156.     APPEND gv_it_tabla_af_cabecera.
  1157.     CLEAR gv_it_tabla_af_cabecera.
  1158.   ENDIF.
  1159.  
  1160.   APPEND gv_af_wa_fieldcat TO gv_af_it_fieldcat.
  1161.   CLEAR gv_af_wa_fieldcat.
  1162.  
  1163.   "--------------------------------------------------------------------
  1164.   " Amortización p6
  1165.   "--------------------------------------------------------------------
  1166.   gv_af_wa_fieldcat-fieldname = 'AMORTIZA_EXPLO_ACTUAL_P6'.
  1167.   gv_af_wa_fieldcat-seltext_l = text-046.
  1168.   gv_af_wa_fieldcat-tabname = 'GV_IT_TABLA_AF'.
  1169.   gv_af_wa_fieldcat-do_sum = 'X'.
  1170.  
  1171.  
  1172.   IF 6 > gv_af_mes_en_curso.
  1173.     gv_af_wa_fieldcat-no_out = 'X'.
  1174.   ELSE.
  1175.     " Si debemos mostrar incorporamos a la cabecera.
  1176.     gv_it_tabla_af_cabecera-titulo = text-046.
  1177.     APPEND gv_it_tabla_af_cabecera.
  1178.     CLEAR gv_it_tabla_af_cabecera.
  1179.   ENDIF.
  1180.  
  1181.   APPEND gv_af_wa_fieldcat TO gv_af_it_fieldcat.
  1182.   CLEAR gv_af_wa_fieldcat.
  1183.  
  1184.   "--------------------------------------------------------------------
  1185.   " Amortización p7
  1186.   "--------------------------------------------------------------------
  1187.   gv_af_wa_fieldcat-fieldname = 'AMORTIZA_EXPLO_ACTUAL_P7'.
  1188.   gv_af_wa_fieldcat-seltext_l = text-047.
  1189.   gv_af_wa_fieldcat-tabname = 'GV_IT_TABLA_AF'.
  1190.   gv_af_wa_fieldcat-do_sum = 'X'.
  1191.  
  1192.  
  1193.   IF 7 > gv_af_mes_en_curso.
  1194.     gv_af_wa_fieldcat-no_out = 'X'.
  1195.   ELSE.
  1196.     " Si debemos mostrar incorporamos a la cabecera.
  1197.     gv_it_tabla_af_cabecera-titulo = text-047.
  1198.     APPEND gv_it_tabla_af_cabecera.
  1199.     CLEAR gv_it_tabla_af_cabecera.
  1200.   ENDIF.
  1201.   APPEND gv_af_wa_fieldcat TO gv_af_it_fieldcat.
  1202.   CLEAR gv_af_wa_fieldcat.
  1203.  
  1204.   "--------------------------------------------------------------------
  1205.   " Amortización p8
  1206.   "--------------------------------------------------------------------
  1207.   gv_af_wa_fieldcat-fieldname = 'AMORTIZA_EXPLO_ACTUAL_P8'.
  1208.   gv_af_wa_fieldcat-seltext_l = text-048.
  1209.   gv_af_wa_fieldcat-tabname = 'GV_IT_TABLA_AF'.
  1210.   gv_af_wa_fieldcat-do_sum = 'X'.
  1211.  
  1212.   IF 8 > gv_af_mes_en_curso.
  1213.     gv_af_wa_fieldcat-no_out = 'X'.
  1214.   ELSE.
  1215.     " Si debemos mostrar incorporamos a la cabecera.
  1216.     gv_it_tabla_af_cabecera-titulo = text-048.
  1217.     APPEND gv_it_tabla_af_cabecera.
  1218.     CLEAR gv_it_tabla_af_cabecera.
  1219.   ENDIF.
  1220.   APPEND gv_af_wa_fieldcat TO gv_af_it_fieldcat.
  1221.   CLEAR gv_af_wa_fieldcat.
  1222.  
  1223.   "--------------------------------------------------------------------
  1224.   " Amortización p9
  1225.   "--------------------------------------------------------------------
  1226.   gv_af_wa_fieldcat-fieldname = 'AMORTIZA_EXPLO_ACTUAL_P9'.
  1227.   gv_af_wa_fieldcat-seltext_l = text-049.
  1228.   gv_af_wa_fieldcat-tabname = 'GV_IT_TABLA_AF'.
  1229.   gv_af_wa_fieldcat-do_sum = 'X'.
  1230.  
  1231.  
  1232.   IF 9 > gv_af_mes_en_curso.
  1233.     gv_af_wa_fieldcat-no_out = 'X'.
  1234.   ELSE.
  1235.     " Si debemos mostrar incorporamos a la cabecera.
  1236.     gv_it_tabla_af_cabecera-titulo = text-049.
  1237.     APPEND gv_it_tabla_af_cabecera.
  1238.     CLEAR gv_it_tabla_af_cabecera.
  1239.   ENDIF.
  1240.  
  1241.   APPEND gv_af_wa_fieldcat TO gv_af_it_fieldcat.
  1242.   CLEAR gv_af_wa_fieldcat.
  1243.  
  1244.   "--------------------------------------------------------------------
  1245.   " Amortización p10
  1246.   "--------------------------------------------------------------------
  1247.   gv_af_wa_fieldcat-fieldname = 'AMORTIZA_EXPLO_ACTUAL_P10'.
  1248.   gv_af_wa_fieldcat-seltext_l = text-050.
  1249.   gv_af_wa_fieldcat-tabname = 'GV_IT_TABLA_AF'.
  1250.   gv_af_wa_fieldcat-do_sum = 'X'.
  1251.  
  1252.  
  1253.   IF 10 > gv_af_mes_en_curso.
  1254.     gv_af_wa_fieldcat-no_out = 'X'.
  1255.   ELSE.
  1256.     " Si debemos mostrar incorporamos a la cabecera.
  1257.     gv_it_tabla_af_cabecera-titulo = text-050.
  1258.     APPEND gv_it_tabla_af_cabecera.
  1259.     CLEAR gv_it_tabla_af_cabecera.
  1260.   ENDIF.
  1261.  
  1262.   APPEND gv_af_wa_fieldcat TO gv_af_it_fieldcat.
  1263.   CLEAR gv_af_wa_fieldcat.
  1264.  
  1265.   "--------------------------------------------------------------------
  1266.   " Amortización p11
  1267.   "--------------------------------------------------------------------
  1268.   gv_af_wa_fieldcat-fieldname = 'AMORTIZA_EXPLO_ACTUAL_P11'.
  1269.   gv_af_wa_fieldcat-seltext_l = text-051.
  1270.   gv_af_wa_fieldcat-tabname = 'GV_IT_TABLA_AF'.
  1271.   gv_af_wa_fieldcat-do_sum = 'X'.
  1272.  
  1273.  
  1274.   IF 11 > gv_af_mes_en_curso.
  1275.     gv_af_wa_fieldcat-no_out = 'X'.
  1276.   ELSE.
  1277.     " Si debemos mostrar incorporamos a la cabecera.
  1278.     gv_it_tabla_af_cabecera-titulo = text-051.
  1279.     APPEND gv_it_tabla_af_cabecera.
  1280.     CLEAR gv_it_tabla_af_cabecera.
  1281.   ENDIF.
  1282.  
  1283.   APPEND gv_af_wa_fieldcat TO gv_af_it_fieldcat.
  1284.   CLEAR gv_af_wa_fieldcat.
  1285.  
  1286.   "--------------------------------------------------------------------
  1287.   " Amortización p12
  1288.   "--------------------------------------------------------------------
  1289.   gv_af_wa_fieldcat-fieldname = 'AMORTIZA_EXPLO_ACTUAL_P12'.
  1290.   gv_af_wa_fieldcat-seltext_l = text-052.
  1291.   gv_af_wa_fieldcat-tabname = 'GV_IT_TABLA_AF'.
  1292.   gv_af_wa_fieldcat-do_sum = 'X'.
  1293.  
  1294.  
  1295.   IF 12 > gv_af_mes_en_curso.
  1296.     gv_af_wa_fieldcat-no_out = 'X'.
  1297.   ELSE.
  1298.     " Si debemos mostrar incorporamos a la cabecera.
  1299.     gv_it_tabla_af_cabecera-titulo = text-052.
  1300.     APPEND gv_it_tabla_af_cabecera.
  1301.     CLEAR gv_it_tabla_af_cabecera.
  1302.   ENDIF.
  1303.  
  1304.   APPEND gv_af_wa_fieldcat TO gv_af_it_fieldcat.
  1305.   CLEAR gv_af_wa_fieldcat.
  1306.  
  1307.   "--------------------------------------------------------------------
  1308.   "----------Fin datos ejercicios----------
  1309.   "--------------------------------------------------------------------
  1310.  
  1311.   "--------------------------------------------------------------------
  1312.   " Ejercicio Actual
  1313.   " Inversión en curso total.
  1314.   "--------------------------------------------------------------------
  1315.   gv_af_wa_fieldcat-fieldname = 'INVERSION_CURSO_TOTAL'.
  1316.   gv_af_wa_fieldcat-seltext_l = text-053.
  1317.   gv_af_wa_fieldcat-tabname = 'GV_IT_TABLA_AF'.
  1318.   gv_af_wa_fieldcat-do_sum = 'X'.
  1319.  
  1320.  
  1321.   APPEND gv_af_wa_fieldcat TO gv_af_it_fieldcat.
  1322.   CLEAR gv_af_wa_fieldcat.
  1323.  
  1324.   "--------------------------------------------------------------------
  1325.   " Inversión en explotación total.
  1326.   "--------------------------------------------------------------------
  1327.   gv_af_wa_fieldcat-fieldname = 'INVERSION_EXPLO_TOTAL'.
  1328.   gv_af_wa_fieldcat-seltext_l = text-054.
  1329.   gv_af_wa_fieldcat-tabname = 'GV_IT_TABLA_AF'.
  1330.   gv_af_wa_fieldcat-do_sum = 'X'.
  1331.  
  1332.  
  1333.   APPEND gv_af_wa_fieldcat TO gv_af_it_fieldcat.
  1334.   CLEAR gv_af_wa_fieldcat.
  1335.  
  1336.   "--------------------------------------------------------------------
  1337.   " Amortización Total
  1338.   "--------------------------------------------------------------------
  1339.   gv_af_wa_fieldcat-fieldname = 'AMORTIZACION_TOTAL'.
  1340.   gv_af_wa_fieldcat-seltext_l = text-055.
  1341.   gv_af_wa_fieldcat-tabname = 'GV_IT_TABLA_AF'.
  1342.   gv_af_wa_fieldcat-do_sum = 'X'.
  1343.  
  1344.  
  1345.   APPEND gv_af_wa_fieldcat TO gv_af_it_fieldcat.
  1346.   CLEAR gv_af_wa_fieldcat.
  1347.  
  1348.   "--------------------------------------------------------------------
  1349.   " Porcentaje de la Amortización
  1350.   "--------------------------------------------------------------------
  1351.   gv_af_wa_fieldcat-fieldname = 'PORCENTAJE_AMORTIZACION'.
  1352.   gv_af_wa_fieldcat-seltext_l = text-056.
  1353.   gv_af_wa_fieldcat-tabname = 'GV_IT_TABLA_AF'.
  1354.   gv_af_wa_fieldcat-do_sum = 'X'.
  1355.  
  1356.  
  1357.   APPEND gv_af_wa_fieldcat TO gv_af_it_fieldcat.
  1358.   CLEAR gv_af_wa_fieldcat.
  1359.  
  1360. ENDFORM.                    " init_fieldcat
  1361.  
  1362. *&---------------------------------------------------------------------*
  1363. *&      Form  init_layout
  1364. *&---------------------------------------------------------------------*
  1365. *       text
  1366. *----------------------------------------------------------------------*
  1367. *  -->  p1        text
  1368. *  <--  p2        text
  1369. *----------------------------------------------------------------------*
  1370. FORM z_af_init_layout .
  1371.   gs_layout-zebra = 'X'.
  1372.   gs_layout-colwidth_optimize = 'X'.
  1373. ENDFORM.                    " init_layout
  1374.  
  1375. *&---------------------------------------------------------------------*
  1376. *&      Form  vista_clasica
  1377. *&---------------------------------------------------------------------*
  1378. *
  1379. *----------------------------------------------------------------------*
  1380. *  -->  p1        text
  1381. *  <--  p2        text
  1382. *----------------------------------------------------------------------*
  1383. FORM z_af_vista .
  1384.   CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
  1385.     EXPORTING
  1386.       i_callback_program       = repid
  1387.       i_callback_user_command  = 'Z_AF_USERCOMMAND'
  1388.       is_layout                = gs_layout
  1389.       it_fieldcat              = gv_af_it_fieldcat[]
  1390.       i_callback_pf_status_set = 'Z_AF_PF_STATUS'
  1391.       i_save                   = 'A'
  1392.       it_events                = gv_events
  1393.       is_variant               = gs_disvariant
  1394.       it_sort                  = d_sortcat[]
  1395.     TABLES
  1396.       t_outtab                 = gv_it_tabla_af_informe
  1397.     EXCEPTIONS
  1398.       program_error            = 1
  1399.       OTHERS                   = 2.
  1400.   IF sy-subrc <> 0.
  1401.     MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
  1402.             WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  1403.   ENDIF.
  1404. ENDFORM.                    " vista_clasica
  1405.  
  1406.  
  1407. *&--------------------------------------------------------------------*
  1408. *&      Form  PF_STATUS
  1409. *&--------------------------------------------------------------------*
  1410. *       text
  1411. *---------------------------------------------------------------------*
  1412. *      -->CE_FUNC_EXCtext
  1413. *---------------------------------------------------------------------*
  1414. FORM z_af_pf_status USING ce_func_exclude TYPE slis_t_extab. "#EC CALLED
  1415.  
  1416.   DATA fcode_attrib_tab LIKE smp_dyntxt OCCURS 4 WITH HEADER LINE.
  1417.  
  1418.   CLEAR: fcode_attrib_tab, fcode_attrib_tab[].
  1419.   " Botón exportar excel.
  1420.   fcode_attrib_tab-text      = text-005.
  1421.   fcode_attrib_tab-icon_id   = '@04@'.
  1422.   fcode_attrib_tab-icon_text = text-005.
  1423.   fcode_attrib_tab-quickinfo = text-070.
  1424.   fcode_attrib_tab-path      = space.
  1425.   APPEND fcode_attrib_tab.
  1426.  
  1427.   " Botón mandar a simular.
  1428.   fcode_attrib_tab-text      = text-006.
  1429.   fcode_attrib_tab-icon_id   = '@04@'.
  1430.   fcode_attrib_tab-icon_text = text-006.
  1431.   fcode_attrib_tab-quickinfo = text-071.
  1432.   fcode_attrib_tab-path      = space.
  1433.   APPEND fcode_attrib_tab.
  1434.  
  1435.  
  1436.   PERFORM dynamic_report_fcodes(rhteiln0) TABLES fcode_attrib_tab
  1437.   USING  ce_func_exclude ' ' ' '.
  1438.  
  1439.   SET PF-STATUS 'ALVLIST' EXCLUDING
  1440.     ce_func_exclude  OF PROGRAM 'RHTEILN0'.
  1441. ENDFORM. " PF_STATUS
  1442.  
  1443.  
  1444. *&---------------------------------------------------------------------*
  1445. *&      Form  USERCOMMAND
  1446. *&---------------------------------------------------------------------*
  1447. *       text
  1448. *----------------------------------------------------------------------*
  1449. *  -->  p1        text
  1450. *  <--  p2        text
  1451. *----------------------------------------------------------------------*
  1452. FORM z_af_usercommand USING l_ucomm LIKE sy-ucomm
  1453.                        l_selfield TYPE slis_selfield."#EC CALLED
  1454.  
  1455.   FIELD-SYMBOLS: <lv_fs> LIKE LINE OF gv_it_tabla_af.
  1456.   READ TABLE gv_it_tabla_af INDEX l_selfield-tabindex INTO <lv_fs>.
  1457.   DATA: res TYPE c VALUE ' '."#EC NEEDED
  1458.   COMMIT WORK.
  1459.  
  1460.   IF sy-subrc = 0.
  1461.     CASE l_ucomm.
  1462.       WHEN '&IC1'.
  1463.         " El usuario todavía no definió cómo requiere este detalle.
  1464.         " Por el momento se utiliza la AS03.
  1465.         SET PARAMETER ID 'BUK' FIELD <lv_fs>-bukrs.
  1466.         SET PARAMETER ID 'AN1' FIELD <lv_fs>-anln1.
  1467.         SET PARAMETER ID 'AN2' FIELD <lv_fs>-anln2.
  1468.         CALL TRANSACTION 'AS03' AND SKIP FIRST SCREEN.
  1469.  
  1470.         " Desreferenciamos
  1471.         UNASSIGN <lv_fs>.
  1472.       WHEN 'FC01'.
  1473.         PERFORM z_af_bajar_excel.
  1474.       WHEN 'FC02'.
  1475.         "--------------------------------------------------------------------
  1476.         " Llamar a la rutina INFORME_TRAZA, la cual mostrará un segundo
  1477.         " un segundo informe de detalle en el que se indicarán los cálculos
  1478.         " de estimaciones y simulaciones de valores económicos para el AF.
  1479.         "--------------------------------------------------------------------
  1480.         CALL FUNCTION 'POPUP_CONTINUE_YES_NO'
  1481.           EXPORTING
  1482.             defaultoption = 'J'
  1483.             textline1     = text-072
  1484.             titel         = text-073
  1485.             start_column  = 45
  1486.             start_row     = 15
  1487.           IMPORTING
  1488.             answer        = res.
  1489.         " perform z_af_informe_traza
  1490.     ENDCASE.
  1491.     l_selfield-refresh = 'X'.
  1492.   ENDIF.
  1493.  
  1494. ENDFORM.                    " USERCOMMAND
  1495.  
  1496. *&---------------------------------------------------------------------*
  1497. *&      Form  z_af_limpiar_screen
  1498. *&---------------------------------------------------------------------*
  1499. *   Permite setear a cero los campos de la entrada de selección.
  1500. *
  1501. *   TODO
  1502. *----------------------------------------------------------------------*
  1503. *  -->  p1        text
  1504. *  <--  p2        text
  1505. *----------------------------------------------------------------------*
  1506. FORM z_af_limpiar_screen .
  1507.  
  1508. ENDFORM.                    " z_af_limpiar_screen
  1509.  
  1510.  
  1511. *&---------------------------------------------------------------------*
  1512. *&      Form  z_af_gestionar_busqueda
  1513. *&---------------------------------------------------------------------*
  1514. *       text
  1515. *----------------------------------------------------------------------*
  1516. *  -->  p1        text
  1517. *  <--  p2        text
  1518. *----------------------------------------------------------------------*
  1519. FORM z_af_gestionar_consulta .
  1520.  
  1521.   IF r_aei EQ 'X'.
  1522.     " Ajustes Enel Intercalarios.
  1523.     " Join select + cálculo de inversión.
  1524.     PERFORM z_af_gestionar_consulta_a_b.
  1525.  
  1526.     PERFORM z_af_gestionar_consulta_c_bis.
  1527.     PERFORM z_af_gestionar_consulta_d .
  1528.     PERFORM z_af_gestionar_consulta_e . " Fecha de contabilizacion
  1529.     PERFORM z_af_gestionar_consulta_f . " Fecha inicio trabajo.
  1530.     PERFORM z_af_gestionar_salida.
  1531.  
  1532.     PERFORM z_af_gestionar_select_single.
  1533.  
  1534.   ELSEIF r_aes EQ 'X'.
  1535.     " Ajustes Enel Subvenciones
  1536.  
  1537.   ELSEIF r_ans EQ 'X'.
  1538.     " Ajustes NIIF Subvenciones
  1539.  
  1540.   ENDIF.
  1541.  
  1542.   " TODO: z_af_listar_*
  1543.   IF r_op_af EQ 'X'.
  1544.     PERFORM z_af_listar_af.
  1545.   ELSEIF r_op_np EQ 'X'.
  1546.     PERFORM z_af_listar_np.
  1547.   ELSEIF r_op_tg EQ 'X'.
  1548.     PERFORM z_af_listar_tg.
  1549.   ENDIF.
  1550. ENDFORM.                    " z_af_gestionar_busqueda
  1551.  
  1552.  
  1553. *&---------------------------------------------------------------------*
  1554. *&      Form  z_af_gestionar_consulta_c
  1555. *&---------------------------------------------------------------------*
  1556. *   Intentaremos bajar el tpo.
  1557. *  de 0.35 bajamos a 0.19
  1558. *
  1559. * FIXME:
  1560. *----------------------------------------------------------------------*
  1561. *  -->  p1        text
  1562. *  <--  p2        text
  1563. *----------------------------------------------------------------------*
  1564.  
  1565. FORM z_af_gestionar_consulta_c_bis .
  1566.   " Limpiamos las tablas auxiliares
  1567.   PERFORM z_af_limpiar_tablas_aux.
  1568.  
  1569.   " Probando con tiempos.
  1570.   DATA: lv_rt_str TYPE i,
  1571.         lv_rt_end TYPE i,
  1572.         lv_lines TYPE n.
  1573.   DATA: lv_run_time2 TYPE p DECIMALS 2 VALUE 0."#EC NEEDED
  1574.  
  1575.   DESCRIBE TABLE gv_it_tabla_af LINES lv_lines.
  1576.  
  1577.   IF lv_lines NE 0.
  1578.     GET RUN TIME FIELD lv_rt_str.
  1579.  
  1580.     SORT gv_it_tabla_af BY bukrs anln1 anln2.
  1581.  
  1582.     SELECT bukrs anln1 anln2 afabe kansw kinvz answl invzm gjahr
  1583.     FROM anlc
  1584.     INTO CORRESPONDING FIELDS OF TABLE gv_it_tabla_af_aux
  1585.     FOR ALL ENTRIES IN gv_it_tabla_af
  1586.     WHERE
  1587.     bukrs = gv_it_tabla_af-bukrs AND
  1588.     anln1 = gv_it_tabla_af-anln1 AND
  1589.     anln2 = gv_it_tabla_af-anln2 AND
  1590.     afabe IN so_afabe AND
  1591.     gjahr IN r_periodo.
  1592.  
  1593.     SORT gv_it_tabla_af_aux.
  1594.     DELETE ADJACENT DUPLICATES FROM gv_it_tabla_af_aux.
  1595.  
  1596.     "IF sy-subrc EQ 0.
  1597.      " Movemos los datos auxiliares junto al AF a la tabla aux_dos.
  1598.       LOOP AT gv_it_tabla_af_aux ASSIGNING <fs_gv_it_tabla_af_aux>.
  1599.         " Datos comunes
  1600.         MOVE <fs_gv_it_tabla_af_aux>-bukrs TO gv_wa_tabla_af-bukrs.
  1601.         MOVE <fs_gv_it_tabla_af_aux>-anln1 TO gv_wa_tabla_af-anln1.
  1602.         MOVE <fs_gv_it_tabla_af_aux>-anln2 TO gv_wa_tabla_af-anln2.
  1603.         "MOVE <fs_gv_it_tabla_af>-anlkl TO gv_wa_tabla_af-anlkl.
  1604.         "MOVE <fs_gv_it_tabla_af_aux>-anlue TO gv_wa_tabla_af-anlue.
  1605.         "MOVE <fs_gv_it_tabla_af>-werks TO gv_wa_tabla_af-werks.
  1606.        " MOVE <fs_gv_it_tabla_af>-gsber TO gv_wa_tabla_af-gsber.
  1607.       "  MOVE <fs_gv_it_tabla_af>-stort TO gv_wa_tabla_af-stort.
  1608.         "MOVE <fs_gv_it_tabla_af>-kostl TO gv_wa_tabla_af-kostl.
  1609.  
  1610.         " Datos diferentes
  1611.         MOVE <fs_gv_it_tabla_af_aux>-afabe TO gv_wa_tabla_af-afabe.
  1612.         MOVE <fs_gv_it_tabla_af_aux>-kansw TO gv_wa_tabla_af-kansw.
  1613.         MOVE <fs_gv_it_tabla_af_aux>-kinvz TO gv_wa_tabla_af-kinvz.
  1614.         MOVE <fs_gv_it_tabla_af_aux>-answl TO gv_wa_tabla_af-answl.
  1615.         MOVE <fs_gv_it_tabla_af_aux>-invzm TO gv_wa_tabla_af-invzm.
  1616.         MOVE <fs_gv_it_tabla_af_aux>-gjahr TO gv_wa_tabla_af-gjahr.
  1617.  
  1618.         PERFORM z_af_obtener_inversion.
  1619.         APPEND gv_wa_tabla_af TO gv_it_tabla_af_aux_dos.
  1620.         CLEAR gv_wa_tabla_af.
  1621.       ENDLOOP.
  1622.  
  1623.     "ENDIF.
  1624.     " desvinculamos
  1625.     UNASSIGN <fs_gv_it_tabla_af>.
  1626.     UNASSIGN <fs_gv_it_tabla_af_aux>.
  1627.  
  1628.     GET RUN TIME FIELD lv_rt_end.
  1629.     lv_run_time2 = ( lv_rt_end - lv_rt_str ) / 1000000 .
  1630.  
  1631.     "WRITE:/ 'Runtime para perform c_bis', RUN_TIME2.
  1632.   ENDIF.
  1633.   " Limpiarmos la tabla principal.
  1634.   REFRESH gv_it_tabla_af.
  1635.  
  1636.   " Asignamos la tabla principla a la auxiliar.
  1637.   gv_it_tabla_af[] = gv_it_tabla_af_aux_dos[].
  1638.  
  1639.   " Limpiamos la tabla auxiliar
  1640.   REFRESH gv_it_tabla_af_aux_dos.
  1641. ENDFORM.                    " z_af_gestionar_consulta_c
  1642.  
  1643.  
  1644.  
  1645. *&---------------------------------------------------------------------*
  1646. *&      Form  z_af_gestionar_consulta_d
  1647. *&---------------------------------------------------------------------*
  1648. *  Para cada combinación (AFABER + GJAHR) recuperar los valores de las
  1649. *  amortizaciones (NAFAP - NAFAG - NAFAZ) más BELNR: nro. de documento.
  1650. *
  1651. *  AFABER: Área de valoración real o derivada.
  1652. *  GJAHR: Ejercicio contable.
  1653. *
  1654. * NOTA:
  1655. *  - Las áreas de valoración que nos interesan son las del rango
  1656. *    del select-option afabe
  1657. *  - El ejercicio varia segun ajuste de informe: campo datab.
  1658. *    --> Enel Intercalarios:  (01.10.2007  a   31.12.sy-datum-year).
  1659. *    --> Enel Subvenciones:   (            a   01.07.2009).
  1660. *    --> NIIF Subvenciones:   (01.01.2010  a   31.12.9999).
  1661. *  - Los activos en curso (4*) no se tienen en cuenta para obtener
  1662. *    las amortizaciones.
  1663. *  - La inversión se calcula sumando el campo KANSW + ANSWL
  1664. *  - Verificar los datos del ejercicio NUMC(4)
  1665. *----------------------------------------------------------------------*
  1666. *  -->  p1        text
  1667. *  <--  p2        text
  1668. *----------------------------------------------------------------------*
  1669. FORM z_af_gestionar_consulta_d .
  1670.   " Limpiamos las tablas auxiliares
  1671.   PERFORM z_af_limpiar_tablas_aux.
  1672.  
  1673.   LOOP AT gv_it_tabla_af ASSIGNING <fs_gv_it_tabla_af>.
  1674.     " Consultamos si necesitamos obtener amortizacíones o no.
  1675.     IF <fs_gv_it_tabla_af>-anln1 >= gc_af_explo_inicio AND
  1676.         <fs_gv_it_tabla_af>-anln1 < gc_af_explo_fin .
  1677.       " Agregamos las amortizaciones a los activos en explotación.
  1678.       PERFORM z_af_obtener_amortizaciones.
  1679.     ELSE.
  1680.       " Agregamos los activos en curso.
  1681.       APPEND <fs_gv_it_tabla_af> TO gv_it_tabla_af_aux_dos.
  1682.     ENDIF.
  1683.   ENDLOOP.
  1684.  
  1685.   REFRESH gv_it_tabla_af.
  1686.   " Asignamos gv_it_tabla_af_aux_dos a gv_it_tabla_af
  1687.   gv_it_tabla_af[] = gv_it_tabla_af_aux_dos[].
  1688.  
  1689.   " Limpiamos las tablas auxiliares
  1690.   PERFORM z_af_limpiar_tablas_aux.
  1691.  
  1692.   " Desvinculamos el fs: check si es óptimo o no este paso.
  1693.   UNASSIGN <fs_gv_it_tabla_af>.
  1694. ENDFORM.                    " z_af_gestionar_consulta_d
  1695.  
  1696.  
  1697.  
  1698.  
  1699. *&---------------------------------------------------------------------*
  1700. *&      Form  z_af_gestionar_consulta_e
  1701. *&---------------------------------------------------------------------*
  1702. *   Buscar todos los documentos contables en la BKPF y BSEG de los
  1703. *   AF que se encuentren el en rango "Fecha de Contabilizacion" (DATAB).
  1704. *
  1705. *   Nota: se utiliza la variable r_periodo en vez del datab, que es la
  1706. *   variable de rango que se creó para almacenar el rango de ejercicios
  1707. *   contables.
  1708. *
  1709. *   TODO: implementar FOR ALL ENTRIES.
  1710. *   TODO: comprobar porqué me esta agregando dos x registro.
  1711. *   TODO: esperando respuesta del funcional para realizar esta subrutina.
  1712. *----------------------------------------------------------------------*
  1713. *  -->  p1        text
  1714. *  <--  p2        text
  1715. *----------------------------------------------------------------------*
  1716. FORM z_af_gestionar_consulta_e .
  1717.  
  1718. ENDFORM.                    " z_af_gestionar_consulta_e
  1719.  
  1720. *&---------------------------------------------------------------------*
  1721. *&      Form  z_af_limpiar_so
  1722. *&---------------------------------------------------------------------*
  1723. *       Permite setar en blanco los so utilizados para otras opciones.
  1724. *----------------------------------------------------------------------*
  1725. *  -->  p1        text
  1726. *  <--  p2        text
  1727. *----------------------------------------------------------------------*
  1728. FORM z_af_limpiar_so .
  1729.   CLEAR datab.
  1730.   CLEAR so_afabe.
  1731.   CLEAR fecini.
  1732.  
  1733.   FREE datab.
  1734.   FREE so_afabe.
  1735.   FREE fecini.
  1736. ENDFORM.                    " z_af_limpiar_so
  1737.  
  1738.  
  1739.  
  1740. *&---------------------------------------------------------------------*
  1741. *&      Form  z_af_limpiar_tablas_aux
  1742. *&---------------------------------------------------------------------*
  1743. *      Permite limpiar las tablas internas utilizadas como memoria aux
  1744. *  en las distintas consultas realizadas.
  1745. *----------------------------------------------------------------------*
  1746. *  -->  p1        text
  1747. *  <--  p2        text
  1748. *----------------------------------------------------------------------*
  1749. FORM z_af_limpiar_tablas_aux .
  1750.   REFRESH gv_it_tabla_af_aux_dos.
  1751.   REFRESH gv_it_tabla_af_aux.
  1752. ENDFORM.                    " z_af_limpiar_tablas_aux
  1753.  
  1754. *&---------------------------------------------------------------------*
  1755. *&      Form  Z_AF_OBTENER_AMORTIZACIONES
  1756. *&---------------------------------------------------------------------*
  1757. *       Permite obtener las amortizaciones del los activos fijos.
  1758. *
  1759. *   Nota: tener en cuenta que las amortizaciones por periodo (belnr) las
  1760. *     tendremos que obtener sólo para los AF del ejercicio actual.
  1761. *
  1762. *----------------------------------------------------------------------*
  1763. *  -->  p1        text
  1764. *  <--  p2        text
  1765. *----------------------------------------------------------------------*
  1766. FORM z_af_obtener_amortizaciones .
  1767.   SELECT  nafag belnr "sum( nafag ) as nafag "nafap nafag nafaz belnr
  1768.   FROM anlp
  1769.   INTO CORRESPONDING FIELDS OF TABLE gv_it_tabla_af_aux
  1770.   WHERE
  1771.     bukrs = <fs_gv_it_tabla_af>-bukrs AND
  1772.     anln1 = <fs_gv_it_tabla_af>-anln1 AND
  1773.     anln2 = <fs_gv_it_tabla_af>-anln2 AND
  1774.     afaber = <fs_gv_it_tabla_af>-afabe AND
  1775.     gjahr = <fs_gv_it_tabla_af>-gjahr.
  1776.   "GROUP BY anln1 anln2 afaber." belnr.
  1777.  
  1778.   IF sy-subrc EQ 0.
  1779.     " Movemos los campos obtenidos.
  1780.     PERFORM z_af_mover_campos.
  1781.   ENDIF.
  1782. ENDFORM.                    " Z_AF_OBTENER_AMORTIZACIONES
  1783.  
  1784. *&---------------------------------------------------------------------*
  1785. *&      Form  Z_AF_MOVER_CAMPOS
  1786. *&---------------------------------------------------------------------*
  1787. *   Calculo la amortizacion anual y muevo los campos.
  1788. *   - No deberiamos copiar las celdas iguales, sino que solamente una por
  1789. *     AF, ya que el belnr lo estoy discriminando antes.
  1790. *     CONSULTAR.
  1791. *
  1792. *   Estoy haciendo lo mismo que un sum(nafag) en la consulta.
  1793. *
  1794. *   FIXME: Tener en cuenta que hago el loop solo para obtener las amort.
  1795. *     y estoy agregando el belnr último.
  1796. *----------------------------------------------------------------------*
  1797. *  -->  p1        text
  1798. *  <--  p2        text
  1799. *----------------------------------------------------------------------*
  1800. FORM z_af_mover_campos .
  1801.   DATA: lv_amortizacion TYPE anlp-nafag.
  1802.  
  1803.   " Calculamos la amortizacion anual.
  1804.   LOOP AT gv_it_tabla_af_aux ASSIGNING <fs_gv_it_tabla_af_aux>.
  1805.     lv_amortizacion = lv_amortizacion + <fs_gv_it_tabla_af_aux>-nafag.
  1806.   ENDLOOP.
  1807.  
  1808.   MOVE <fs_gv_it_tabla_af>-bukrs TO gv_wa_tabla_af-bukrs.
  1809.   MOVE <fs_gv_it_tabla_af>-anln1 TO gv_wa_tabla_af-anln1.
  1810.   MOVE <fs_gv_it_tabla_af>-anln2 TO gv_wa_tabla_af-anln2.
  1811.   MOVE <fs_gv_it_tabla_af>-anlkl TO gv_wa_tabla_af-anlkl.
  1812.   MOVE <fs_gv_it_tabla_af>-werks TO gv_wa_tabla_af-werks.
  1813.   MOVE <fs_gv_it_tabla_af>-gsber TO gv_wa_tabla_af-gsber.
  1814.   MOVE <fs_gv_it_tabla_af>-stort TO gv_wa_tabla_af-stort.
  1815.   MOVE <fs_gv_it_tabla_af>-kostl TO gv_wa_tabla_af-kostl.
  1816.   MOVE <fs_gv_it_tabla_af>-afabe TO gv_wa_tabla_af-afabe.
  1817.   MOVE <fs_gv_it_tabla_af>-kansw TO gv_wa_tabla_af-kansw.
  1818.   MOVE <fs_gv_it_tabla_af>-kinvz TO gv_wa_tabla_af-kinvz.
  1819.   MOVE <fs_gv_it_tabla_af>-answl TO gv_wa_tabla_af-answl.
  1820.   MOVE <fs_gv_it_tabla_af>-invzm TO gv_wa_tabla_af-invzm.
  1821.   MOVE <fs_gv_it_tabla_af>-inversion TO gv_wa_tabla_af-inversion.
  1822.   MOVE <fs_gv_it_tabla_af>-gjahr TO gv_wa_tabla_af-gjahr.
  1823.  
  1824.  
  1825.   MOVE <fs_gv_it_tabla_af_aux>-belnr TO gv_wa_tabla_af-belnr.
  1826.   MOVE lv_amortizacion TO gv_wa_tabla_af-amortizacion.
  1827.  
  1828.   APPEND gv_wa_tabla_af TO gv_it_tabla_af_aux_dos.
  1829.  
  1830.   "--------------------------------------------------------------------
  1831.   " Limpio la tabla aux
  1832.   REFRESH gv_it_tabla_af_aux.
  1833.   "--------------------------------------------------------------------
  1834.   UNASSIGN <fs_gv_it_tabla_af_aux>.
  1835. ENDFORM.                    " Z_AF_MOVER_CAMPOS
  1836.  
  1837. *&---------------------------------------------------------------------*
  1838. *&      Form  Z_AF_OBTENER_INVERSION
  1839. *&---------------------------------------------------------------------*
  1840. *     Permitirá obtener la inversión del activo fijo.
  1841. *
  1842. *     Deberá consultar si el movimiento de cuenta balance se encuentra en
  1843. *     el SET de DATOS para ver si corresponde.
  1844. *
  1845. *     Con BUKRS + ANLN1 + ANLN2 + AFABE ir a la ANEP y obtener BWASL
  1846. *     clase de movimiento de AF y ver si esta en el SET DE DATOS.
  1847. *----------------------------------------------------------------------*
  1848. *  -->  p1        text
  1849. *  <--  p2        text
  1850. *----------------------------------------------------------------------*
  1851. FORM z_af_obtener_inversion .
  1852.   " Calculamos la inversión.
  1853.   " Valor adquisición acumulado + Movimientos cuenta balance.
  1854.   DATA: lv_inversion TYPE anlc-kansw.
  1855.   lv_inversion =
  1856.     <fs_gv_it_tabla_af_aux>-kansw +
  1857.     <fs_gv_it_tabla_af_aux>-answl.
  1858.   MOVE lv_inversion TO gv_wa_tabla_af-inversion.
  1859. ENDFORM.                    " Z_AF_OBTENER_INVERSION
  1860.  
  1861. *&---------------------------------------------------------------------*
  1862. *&      Form  Z_AF_OBTENER_PERIODOS
  1863. *&---------------------------------------------------------------------*
  1864. *       Permite crear y actulizar:
  1865. *   - r_periodo: rango de fechas (ejercicios contables) a tener en cuenta.
  1866. *   - r_meses: rango de meses a tener en cuenta.
  1867. *----------------------------------------------------------------------*
  1868. *  -->  p1        text
  1869. *  <--  p2        text
  1870. *----------------------------------------------------------------------*
  1871. FORM z_af_obtener_periodos .
  1872.   " Generamos el periodo con los datos del usuario, para el campo datab.
  1873.   r_periodo-sign   = 'I'.
  1874.   r_periodo-option = 'BT'.
  1875.   r_periodo-low    = datab-low(4).
  1876.   r_periodo-high   = datab-high(4).
  1877.   APPEND r_periodo.
  1878.  
  1879.   DATA: lv_date TYPE sy-datum.
  1880.   " Actualizamos la cantidad de periodos(no tener en cuenta el actual).
  1881.   IF r_periodo-high = sy-datum(4).
  1882.     lv_date(4) = sy-datum(4) - 1.
  1883.     gv_cont_periodo = lv_date(4) -  datab-low(4).
  1884.   ELSE.
  1885.     gv_cont_periodo = datab-high(4) -  datab-low(4).
  1886.   ENDIF.
  1887.  
  1888.   gv_rango_ejercicios-sign   = 'I'.
  1889.   gv_rango_ejercicios-option = 'BT'.
  1890.   gv_rango_ejercicios-low    = 1.
  1891.   gv_rango_ejercicios-high   = gv_cont_periodo.
  1892.   APPEND gv_rango_ejercicios.
  1893.  
  1894.  
  1895. ENDFORM.                    " Z_AF_OBTENER_PERIODOS
  1896.  
  1897. *&---------------------------------------------------------------------*
  1898. *&      Form  Z_AF_GESTIONAR_CONSULTA_A_B
  1899. *&---------------------------------------------------------------------*
  1900. *   Permite realizar un Join para obtener los datos comunes de los AF
  1901. *   requeridos para el reporte del usuario.
  1902. *
  1903. *  Tablas intervinientes:
  1904. *  ----------------------
  1905. *  ANLA.......as a
  1906. *  ANLZ.......as z
  1907. *----------------------------------------------------------------------*
  1908. *  -->  p1        text
  1909. *  <--  p2        text
  1910. *----------------------------------------------------------------------*
  1911. FORM z_af_gestionar_consulta_a_b .
  1912.   SELECT
  1913.       a~bukrs a~anln1 a~anln2 a~anlkl a~anlue
  1914.       z~werks z~gsber z~stort z~kostl
  1915.     INTO CORRESPONDING FIELDS OF TABLE gv_it_tabla_af
  1916.     FROM anla AS a INNER JOIN anlz AS z
  1917.     ON
  1918.       a~bukrs = z~bukrs AND
  1919.       a~anln1 = z~anln1 AND
  1920.       a~anln2 = z~anln2
  1921.     WHERE
  1922.       a~bukrs IN so_bukrs AND
  1923.       a~anln1 IN so_anln1 AND
  1924.       a~anln2 IN so_anln2 AND
  1925.       a~anlkl IN so_anlkl AND
  1926.       z~werks IN so_werks AND
  1927.       z~gsber IN so_gsber AND
  1928.       z~stort IN so_stort AND
  1929.       z~kostl IN so_kostl.
  1930.   CHECK syst-subrc NE 0.
  1931.   MESSAGE e402(mo) WITH 'gv_it_tabla_af'.
  1932.  
  1933. ENDFORM.                    " Z_AF_GESTIONAR_CONSULTA_A_B
  1934.  
  1935. *&---------------------------------------------------------------------*
  1936. *&      Form  Z_AF_GESTIONAR_SALIDA
  1937. *&---------------------------------------------------------------------*
  1938. *   Permite gestionar la construcción de la tabla interna con el formato
  1939. *   necesario para pasarle al ALV de salida.
  1940. *
  1941. *   LOOP AT gv_it_tabla_af e ir completando gv_it_tabla_af_informe.
  1942. *----------------------------------------------------------------------*
  1943. *  -->  p1        text
  1944. *  <--  p2        text
  1945. *----------------------------------------------------------------------*
  1946. FORM z_af_gestionar_salida .
  1947.   PERFORM z_af_ordenar_tabla.
  1948.   PERFORM z_af_eliminar_duplicados. " Ver porque tengo que hacer esto.
  1949.   PERFORM z_af_gestionar_validaciones.
  1950.   PERFORM z_af_armar_tabla_informe.
  1951. ENDFORM.                    " Z_AF_GESTIONAR_SALIDA
  1952.  
  1953.  
  1954. *&---------------------------------------------------------------------*
  1955. *&      Form  z_af_ordenar_tabla
  1956. *&---------------------------------------------------------------------*
  1957. *       text
  1958. *----------------------------------------------------------------------*
  1959. FORM z_af_ordenar_tabla.
  1960.   SORT gv_it_tabla_af BY
  1961.       bukrs
  1962.       anln1
  1963.       anln2
  1964.       afabe
  1965.       gjahr.
  1966. ENDFORM.                    "z_af_ordenar_tabla
  1967.  
  1968. *&---------------------------------------------------------------------*
  1969. *&      Form  z_af_eliminar_duplicados
  1970. *&---------------------------------------------------------------------*
  1971. *       text
  1972. *----------------------------------------------------------------------*
  1973. FORM z_af_eliminar_duplicados.
  1974.   DELETE ADJACENT DUPLICATES FROM gv_it_tabla_af COMPARING bukrs
  1975.       anln1
  1976.       anln2
  1977.       afabe
  1978.       gjahr.
  1979. ENDFORM.                    "z_af_eliminar_duplicados
  1980.  
  1981. *&---------------------------------------------------------------------*
  1982. *&      Form  Z_AF_GESTIONAR_CONSULTA_F
  1983. *&---------------------------------------------------------------------*
  1984. *   Permitirá realizar el exclude de todos los AF que no cumplan con el
  1985. *   rango de fechas "Fecha Inicio de Trabajos" para los Ajustes Enel
  1986. *   intercalarios.
  1987. *
  1988. *   Nota: esperando respuesta de Javier sobre este tema.
  1989. *----------------------------------------------------------------------*
  1990. *  -->  p1        text
  1991. *  <--  p2        text
  1992. *----------------------------------------------------------------------*
  1993. FORM z_af_gestionar_consulta_f .
  1994.  
  1995. ENDFORM.                    " Z_AF_GESTIONAR_CONSULTA_F
  1996.  
  1997.  
  1998. *&---------------------------------------------------------------------*
  1999. *&      Form  Z_AF_GESTIONAR_SELECT_SINGLE
  2000. *&---------------------------------------------------------------------*
  2001. *       text
  2002. *----------------------------------------------------------------------*
  2003. *  -->  p1        text
  2004. *  <--  p2        text
  2005. *----------------------------------------------------------------------*
  2006. FORM z_af_gestionar_select_single .
  2007.  
  2008. ENDFORM.                    " Z_AF_GESTIONAR_SELECT_SINGLE
  2009.  
  2010. *&---------------------------------------------------------------------*
  2011. *&      Form  Z_AF_CALCULAR_AMORTIZACIONES
  2012. *&---------------------------------------------------------------------*
  2013. *       Permitirá recorrer la tabla con los AF que superaron todas las
  2014. *   pruebas y podremos obtener la amortizacion anual sumando los $$ de
  2015. *   cada periodo.
  2016. *
  2017. *   Nota: esperando respuesta de Toni sobre este apartado.
  2018. *----------------------------------------------------------------------*
  2019. *  -->  p1        text
  2020. *  <--  p2        text
  2021. *----------------------------------------------------------------------*
  2022. FORM z_af_gestionar_validaciones .
  2023.  
  2024. ENDFORM.                    " Z_AF_CALCULAR_AMORTIZACIONES
  2025.  
  2026. *&---------------------------------------------------------------------*
  2027. *&      Form  Z_AF_ARMAR_TABLA_INFORME
  2028. *&---------------------------------------------------------------------*
  2029. *   it_tablas:
  2030. *     - gv_it_tabla_af: tabla con los datos.
  2031. *     - gv_it_tabla_af_informe: tabla a armar.
  2032. *
  2033. *   cont_eje:
  2034. *     permitirá llevar el contador de los distintos ejercicios
  2035. *       BUKRS + ANLN1 + ANLN2 + AFABE. Necesario para determinar a que
  2036. *       campo agregar de la tabla informe.
  2037. *
  2038. *   FIXME:
  2039. *     - lv_total_inv_explo - puede ser 0, gestionar excepción.
  2040. *----------------------------------------------------------------------*
  2041. *  -->  p1        text
  2042. *  <--  p2        text
  2043. *----------------------------------------------------------------------*
  2044. FORM z_af_armar_tabla_informe .
  2045.   DATA: lv_cont_eje            TYPE n VALUE 1,
  2046.         lv_total_inv_curso     LIKE anlc-kansw,
  2047.         lv_total_inv_explo     LIKE anlc-kansw,
  2048.         lv_total_amortizacion  LIKE anlp-nafag,
  2049.         lv_bandera             TYPE i VALUE 0,
  2050.         temp_string            TYPE string.
  2051.  
  2052.   " Declaramos las referencias a las celdas.
  2053.   FIELD-SYMBOLS: <inversion_explo_n>,
  2054.                  <inversion_curso_n>,
  2055.                  <amortiza_explo_n>.
  2056.  
  2057.   LOOP AT gv_it_tabla_af ASSIGNING <fs_gv_it_tabla_af>.
  2058.  
  2059.     AT NEW afabe.
  2060.       " Si es la primera vez no calculo los totales.
  2061.       IF lv_bandera NE 0.
  2062.         " Primero calcular los totales de la fila.
  2063.         " Agregar la fila en el siguiente paso.
  2064.         gv_wa_tabla_af_informe-inversion_curso_total = lv_total_inv_curso.
  2065.         gv_wa_tabla_af_informe-inversion_explo_total = lv_total_inv_explo.
  2066.         gv_wa_tabla_af_informe-amortizacion_total = lv_total_amortizacion.
  2067.  
  2068.         " Agregamos la fila anterior.
  2069.         APPEND gv_wa_tabla_af_informe TO gv_it_tabla_af_informe.
  2070.  
  2071.         " Reseteo el contador de ejercicios (lo pongo en 2 porque agrego el 1 acá).
  2072.         lv_cont_eje = 1.
  2073.         " Reseteamos los totales.
  2074.         lv_total_inv_curso = 0.
  2075.         lv_total_inv_explo = 0.
  2076.         lv_total_amortizacion = 0.
  2077.  
  2078.       ENDIF.
  2079.       " Escribimos los datos comunes del primer registro.
  2080.       PERFORM z_af_escribir_datos_comunes.
  2081.       IF lv_bandera EQ 0.
  2082.         lv_bandera = 1.
  2083.       ENDIF.
  2084.     ENDAT.
  2085.  
  2086.     AT END OF gjahr.
  2087.       " Tengo que consultar a qué ejercicio pertenece para saber a que celda va
  2088.       " el valor que obtenemos.
  2089.  
  2090.       " Inversión en explotación n.
  2091.       CONCATENATE 'gv_it_tabla_af_informe-inversion_explo_' lv_cont_eje INTO temp_string.
  2092.       ASSIGN (temp_string) TO <inversion_explo_n>.
  2093.  
  2094.       " Inversión en curso n.
  2095.       CONCATENATE 'gv_it_tabla_af_informe-inversion_curso_' lv_cont_eje INTO temp_string.
  2096.       ASSIGN (temp_string) TO <inversion_curso_n>.
  2097.  
  2098.       " Amortización explotación n.
  2099.       CONCATENATE 'gv_it_tabla_af_informe-amortiza_explo_' lv_cont_eje INTO temp_string.
  2100.       ASSIGN (temp_string) TO <amortiza_explo_n>.
  2101.  
  2102.       "--------------------------------------------------------------------
  2103.       " Consultamos si es en curso o explotacion.
  2104.       "--------------------------------------------------------------------
  2105.       IF <fs_gv_it_tabla_af>-anln1 >= gc_af_explo_inicio AND
  2106.           <fs_gv_it_tabla_af>-anln1 < gc_af_explo_fin .
  2107.         " FIXME
  2108.         "MOVE <fs_gv_it_tabla_af>-inversion TO <inversion_explo_n>.
  2109.         "MOVE <fs_gv_it_tabla_af>-amortizacion TO <amortiza_explo_n>.
  2110.  
  2111.         MOVE <fs_gv_it_tabla_af>-inversion TO gv_wa_tabla_af_informe-inversion_explo_1.
  2112.         MOVE <fs_gv_it_tabla_af>-amortizacion TO gv_wa_tabla_af_informe-amortiza_explo_1.
  2113.  
  2114.         " Actualizamos los totales.
  2115.         lv_total_inv_curso = lv_total_inv_curso + <inversion_explo_n>.
  2116.         lv_total_amortizacion = lv_total_amortizacion + <amortiza_explo_n>.
  2117.       ELSE.
  2118.         "MOVE <fs_gv_it_tabla_af>-inversion TO <inversion_curso_n>.
  2119.         MOVE <fs_gv_it_tabla_af>-inversion TO gv_wa_tabla_af_informe-inversion_curso_1.
  2120.         " Actualizamos los totales.
  2121.         lv_total_inv_explo = lv_total_inv_explo + <inversion_curso_n>.
  2122.       ENDIF.
  2123.       lv_cont_eje = lv_cont_eje + 1.
  2124.     ENDAT.
  2125.     " Probando
  2126.     AT LAST.
  2127.       " Primero calcular los totales de la fila.
  2128.       " Agregar la fila en el siguiente paso.
  2129.       gv_wa_tabla_af_informe-inversion_curso_total = lv_total_inv_curso.
  2130.       gv_wa_tabla_af_informe-inversion_explo_total = lv_total_inv_explo.
  2131.       gv_wa_tabla_af_informe-amortizacion_total = lv_total_amortizacion.
  2132.  
  2133.       "-----------------------------------------------------------06.10.2010 10:41:47
  2134.       " FIXME:
  2135.       "gv_it_tabla_af_informe-porcentaje_amortizacion =
  2136.       "  ( lv_total_amortizacion / lv_total_inv_explo ) * 100.
  2137.       "---------------------------------------------------------------------------
  2138.  
  2139.       " Agregamos la fila anterior.
  2140.       APPEND gv_wa_tabla_af_informe TO gv_it_tabla_af_informe.
  2141.       CLEAR gv_wa_tabla_af_informe.
  2142.  
  2143.       " Reseteo el contador de ejercicios (lo pongo en 2 porque agrego el 1 acá).
  2144.       lv_cont_eje = 1.
  2145.       " Reseteamos los totales.
  2146.       lv_total_inv_curso = 0.
  2147.       lv_total_inv_explo = 0.
  2148.       lv_total_amortizacion = 0.
  2149.     ENDAT.
  2150.  
  2151.   ENDLOOP.
  2152. ENDFORM.                    " Z_AF_ARMAR_TABLA_INFORME
  2153.  
  2154. *&---------------------------------------------------------------------*
  2155. *&      Form  ESCRIBIR_DATOS_COMUNES
  2156. *&---------------------------------------------------------------------*
  2157. *       text
  2158. *----------------------------------------------------------------------*
  2159. *  -->  p1        text
  2160. *  <--  p2        text
  2161. *----------------------------------------------------------------------*
  2162. FORM z_af_escribir_datos_comunes.
  2163.   MOVE <fs_gv_it_tabla_af>-bukrs TO gv_wa_tabla_af_informe-bukrs.
  2164.   MOVE <fs_gv_it_tabla_af>-anln1 TO gv_wa_tabla_af_informe-anln1.
  2165.   MOVE <fs_gv_it_tabla_af>-anln2 TO gv_wa_tabla_af_informe-anln2.
  2166.   MOVE <fs_gv_it_tabla_af>-anlkl TO gv_wa_tabla_af_informe-anlkl.
  2167.   MOVE <fs_gv_it_tabla_af>-werks TO gv_wa_tabla_af_informe-werks.
  2168.   MOVE <fs_gv_it_tabla_af>-gsber TO gv_wa_tabla_af_informe-gsber.
  2169.   MOVE <fs_gv_it_tabla_af>-stort TO gv_wa_tabla_af_informe-stort.
  2170.   MOVE <fs_gv_it_tabla_af>-kostl TO gv_wa_tabla_af_informe-kostl.
  2171.   MOVE <fs_gv_it_tabla_af>-afabe TO gv_wa_tabla_af_informe-afabe.
  2172.   MOVE <fs_gv_it_tabla_af>-anlue TO gv_wa_tabla_af_informe-anlue.
  2173. ENDFORM.                    " ESCRIBIR_DATOS_COMUNES
  2174.  
  2175. *&---------------------------------------------------------------------*
  2176. *&      Form  Z_AF_BAJAR_EXCEL
  2177. *&---------------------------------------------------------------------*
  2178. *
  2179. *----------------------------------------------------------------------*
  2180. *  -->  p1        text
  2181. *  <--  p2        text
  2182. *----------------------------------------------------------------------*
  2183. FORM z_af_bajar_excel .
  2184.   DATA: lv_filename   TYPE string,
  2185.         lv_path       TYPE string,
  2186.         lv_fullpath   TYPE string,
  2187.         lv_result     TYPE i,
  2188.         lv_encoding   TYPE abap_encoding.
  2189.  
  2190.   DATA: lv_window_title TYPE STRING.
  2191.   lv_window_title = text-074.
  2192.  
  2193.   " Despliega la ventana de dialogo.
  2194.   CALL METHOD cl_gui_frontend_services=>file_save_dialog
  2195.     EXPORTING
  2196.       window_title      = lv_window_title
  2197.       default_extension = 'XLS'
  2198.       default_file_name = ''
  2199.       initial_directory = 'c:\temp\'
  2200.     CHANGING
  2201.       filename          = lv_filename
  2202.       path              = lv_path
  2203.       fullpath          = lv_fullpath
  2204.       user_action       = lv_result
  2205.       file_encoding     = lv_encoding.
  2206.  
  2207.   " Se chequea que el usuario no cancele la operación.
  2208.   CHECK lv_result EQ '0'.
  2209.  
  2210.   CALL FUNCTION 'GUI_DOWNLOAD'
  2211.     EXPORTING
  2212.       filename              = lv_fullpath
  2213.       filetype              = 'DAT'
  2214.       write_field_separator = 'X'
  2215.       codepage              = lv_encoding
  2216.     TABLES
  2217.       data_tab              = gv_it_tabla_af_informe[]
  2218.       fieldnames            = gv_it_tabla_af_cabecera[]
  2219.     EXCEPTIONS
  2220.       file_write_error      = 2
  2221.       OTHERS                = 3.
  2222.  
  2223.   IF sy-subrc <> 0.
  2224.     MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
  2225.     WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  2226.   ENDIF.
  2227. ENDFORM.                    " Z_AF_BAJAR_EXCEL
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement