Advertisement
Guest User

ZFIFU021

a guest
Jan 26th, 2015
236
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
ABAP 8.53 KB | None | 0 0
  1. FUNCTION zfifu021.
  2. * Gpo. Func.: ZESTADOFIN
  3. *"----------------------------------------------------------------------
  4. *"*"Interfase local
  5. *"  IMPORTING
  6. *"     VALUE(P_BUKRS) TYPE  KNB1-BUKRS
  7. *"     VALUE(P_GJAHR) TYPE  KNC1-GJAHR
  8. *"     VALUE(P_PERIODO_INICIO) TYPE  NUMC2 OPTIONAL
  9. *"     VALUE(P_PERIODO_FIN) TYPE  NUMC2 OPTIONAL
  10. *"  TABLES
  11. *"      T_TABLA STRUCTURE  ZFIES036
  12. *"      S_KUNNR STRUCTURE  ZFIES007
  13. *"      S_HKONT STRUCTURE  ZFIES029
  14. *"----------------------------------------------------------------------
  15. *----------------------------------------------------------------------*
  16. * COMPAÑIA: Centinela Servicios Corporativos                           *
  17. * AUTOR:    Alejandra Díaz (CSC-ADP)                                   *
  18. * FECHA:    Sábado, 19 de Marzo de 2011                                *
  19. * OBJETIVO: Estados Financieros (Saldo de Clientes F.23)               *
  20. *----------------------------------------------------------------------*
  21. *                    HISTORIAL DE MODIFICACIONES                       *
  22. *----------------------------------------------------------------------*
  23. * 20150126, CSC-JFMS: Adición del campo división para el reporte de    *
  24. *                     cuentas de clientes.                             *
  25. *----------------------------------------------------------------------*
  26.  
  27. * Variables
  28.   DATA:
  29.     v_clave_activo    LIKE  T011-AKTVA,
  30.     v_total_arrastre  LIKE  KNC1-UMSAV,
  31.     v_total_debe      LIKE  KNC1-UM01S,
  32.     v_total_haber     LIKE  KNC1-UM01H,
  33.     v_total_saldo     LIKE  KNC1-UM01U,
  34.     v_tope_a(2)       TYPE  N,
  35.     v_index(2)        TYPE  N,
  36.     v_debe(16)        TYPE  C,
  37.     v_haber(16)       TYPE  C.
  38.  
  39. * Field Symbols
  40.   FIELD-SYMBOLS: <d>, <h>.
  41.  
  42. * Constantes
  43.   CONSTANTS:
  44.     c_versn  LIKE  FAGL_011QT-VERSN  VALUE  'BHYA',
  45.     c_spras  LIKE  FAGL_011QT-SPRAS  VALUE  'S',
  46.     c_txtyp  LIKE  FAGL_011QT-TXTYP  VALUE  'A',
  47.     c_ktopl  LIKE  T011-KTOPL        VALUE  'HYA'.
  48.  
  49. * Rangos
  50.   RANGES:
  51.     r_ergsl  FOR  FAGL_011QT-ERGSL,  "Pos. balance/PyG
  52.     r_zeile  FOR  FAGL_011QT-ZEILE,  "Nº de línea de la pos. de balance/PyG
  53.     r_ktopl  FOR  FAGL_011ZC-KTOPL,  "Plan de cuentas
  54.     r_vonkt  FOR  FAGL_011ZC-VONKT,  "Límite inferior del intervalo de cuentas
  55.     r_bukrs  FOR  KNB1-BUKRS,        "Sociedad
  56.     r_gjahr  FOR  KNC1-GJAHR.        "Ejercicio
  57.  
  58. * Tablas Internas
  59.   DATA: BEGIN OF t_clientes OCCURS 0,
  60.     gsber  LIKE  BSAD-GSBER,         "20150126, CSC-JFMS Agregué campo 'gsber'.
  61.     akont  LIKE  KNB1-AKONT,
  62.     txt50  LIKE  SKAT-TXT50,
  63.     waers  LIKE  SKB1-WAERS,
  64.     kunnr  LIKE  KNA1-KUNNR,
  65.     name1  LIKE  KNA1-NAME1,
  66.     name2  LIKE  KNA1-NAME2,
  67.     bukrs  LIKE  KNC1-BUKRS,
  68.     gjahr  LIKE  KNC1-GJAHR,
  69.     umsav  LIKE  KNC1-UMSAV,
  70.     um01s  LIKE  KNC1-UM01S,
  71.     um01h  LIKE  KNC1-UM01H,
  72.     um02s  LIKE  KNC1-UM02S,
  73.     um02h  LIKE  KNC1-UM02H,
  74.     um03s  LIKE  KNC1-UM03S,
  75.     um03h  LIKE  KNC1-UM03H,
  76.     um04s  LIKE  KNC1-UM04S,
  77.     um04h  LIKE  KNC1-UM04H,
  78.     um05s  LIKE  KNC1-UM05S,
  79.     um05h  LIKE  KNC1-UM05H,
  80.     um06s  LIKE  KNC1-UM06S,
  81.     um06h  LIKE  KNC1-UM06H,
  82.     um07s  LIKE  KNC1-UM07S,
  83.     um07h  LIKE  KNC1-UM07H,
  84.     um08s  LIKE  KNC1-UM08S,
  85.     um08h  LIKE  KNC1-UM08H,
  86.     um09s  LIKE  KNC1-UM09S,
  87.     um09h  LIKE  KNC1-UM09H,
  88.     um10s  LIKE  KNC1-UM10S,
  89.     um10h  LIKE  KNC1-UM10H,
  90.     um11s  LIKE  KNC1-UM11S,
  91.     um11h  LIKE  KNC1-UM11H,
  92.     um12s  LIKE  KNC1-UM12S,
  93.     um12h  LIKE  KNC1-UM12H,
  94.     um13s  LIKE  KNC1-UM13S,
  95.     um13h  LIKE  KNC1-UM13H,
  96.     um14s  LIKE  KNC1-UM14S,
  97.     um14h  LIKE  KNC1-UM14H,
  98.     um15s  LIKE  KNC1-UM15S,
  99.     um15h  LIKE  KNC1-UM15H,
  100.     um16s  LIKE  KNC1-UM16S,
  101.     um16h  LIKE  KNC1-UM16H.
  102.   DATA: END OF t_clientes.
  103.  
  104.   "INICIO 20150126, CSC-JFMS.
  105.   DATA: BEGIN OF t_bsxd OCCURS 0,
  106.     bukrs LIKE BSAD-BUKRS,
  107.     kunnr LIKE BSAD-KUNNR,
  108.     gsber LIKE BSAD-GSBER.
  109.   DATA: END OF t_bsxd.
  110.   "FIN 20150126, CSC-JFMS.
  111.  
  112. * Validaciones
  113.   IF NOT p_bukrs IS INITIAL.
  114.     r_bukrs-sign    =  'I'.
  115.     r_bukrs-option  =  'EQ'.
  116.     r_bukrs-low     =  p_bukrs.
  117.     r_bukrs-high    =  p_bukrs.
  118.     APPEND r_bukrs.
  119.   ENDIF.
  120.  
  121.   IF NOT p_gjahr IS INITIAL.
  122.     r_gjahr-sign    =  'I'.
  123.     r_gjahr-option  =  'EQ'.
  124.     r_gjahr-low     =  p_gjahr.
  125.     r_gjahr-high    =  p_gjahr.
  126.     APPEND r_gjahr.
  127.   ENDIF.
  128.  
  129.   IF p_periodo_inicio IS INITIAL.
  130.     p_periodo_inicio  =  1.
  131.   ENDIF.
  132.  
  133.   IF p_periodo_fin IS INITIAL.
  134.     p_periodo_fin     =  12.
  135.   ENDIF.
  136.  
  137. * Desarrollo
  138.    SELECT
  139.     a~AKONT
  140.     b~TXT50
  141.     c~WAERS
  142.     d~KUNNR
  143.     d~NAME1
  144.     d~NAME2
  145.     e~BUKRS
  146.     e~GJAHR
  147.     e~UMSAV
  148.     e~UM01S
  149.     e~UM01H
  150.     e~UM02S
  151.     e~UM02H
  152.     e~UM03S
  153.     e~UM03H
  154.     e~UM04S
  155.     e~UM04H
  156.     e~UM05S
  157.     e~UM05H
  158.     e~UM06S
  159.     e~UM06H
  160.     e~UM07S
  161.     e~UM07H
  162.     e~UM08S
  163.     e~UM08H
  164.     e~UM09S
  165.     e~UM09H
  166.     e~UM10S
  167.     e~UM10H
  168.     e~UM11S
  169.     e~UM11H
  170.     e~UM12S
  171.     e~UM12H
  172.     e~UM13S
  173.     e~UM13H
  174.     e~UM14S
  175.     e~UM14H
  176.     e~UM15S
  177.     e~UM15H
  178.     e~UM16S
  179.     e~UM16H
  180.     FROM KNB1 AS a
  181.     INNER JOIN SKAT AS b ON
  182.       a~AKONT  =  b~SAKNR
  183.     INNER JOIN SKB1 AS c ON
  184.       a~BUKRS  =  c~BUKRS AND
  185.       a~AKONT  =  c~SAKNR
  186.     INNER JOIN KNA1 AS d ON
  187.       a~KUNNR  =  d~KUNNR
  188.     INNER JOIN KNC1 AS e ON
  189.       a~KUNNR  =  e~KUNNR AND
  190.       a~BUKRS  =  e~BUKRS
  191.     INTO TABLE t_clientes
  192.     WHERE
  193.       a~BUKRS  IN  r_bukrs  AND
  194.       a~AKONT  IN  s_hkont  AND
  195.       b~SPRAS  EQ  c_spras  AND
  196.       b~KTOPL  EQ  c_ktopl  AND
  197.       d~KUNNR  IN  s_kunnr  AND
  198.       e~GJAHR  IN  r_gjahr.
  199.     SORT t_clientes BY akont kunnr.
  200.  
  201. *    LOOP AT t_clientes.
  202. *      WRITE: t_clientes-akont, t_clientes-kunnr, t_clientes-umsav, /.
  203. *    ENDLOOP.
  204.  
  205.     "INICIO 20150126, CSC-JFMS.
  206.     "Buscamos división en partidas abiertas del índice secundario para deudores.
  207.     SELECT
  208.       BUKRS           "Sociedad.
  209.       KUNNR           "Cuenta.
  210.       GSBER           "División.
  211.       FROM BSID
  212.       INTO CORRESPONDING FIELDS OF TABLE t_bsxd
  213.       FOR ALL ENTRIES IN t_clientes
  214.       WHERE
  215.         BUKRS EQ t_clientes-bukrs AND
  216.         KUNNR IN t_clientes-kunnr AND
  217.         GSBER IN t_clientes-gsber.
  218.     "Buscamos división en partidas compensadas del índice secundario para deudores.
  219.     SELECT
  220.       BUKRS           "Sociedad.
  221.       KUNNR           "Cuenta.
  222.       GSBER           "División.
  223.       FROM BSAD
  224.       INTO CORRESPONDING FIELDS OF TABLE t_bsxd
  225.       FOR ALL ENTRIES IN t_clientes
  226.       WHERE
  227.         BUKRS EQ t_clientes-bukrs AND
  228.         KUNNR IN t_clientes-kunnr AND
  229.         GSBER IN t_clientes-gsber.
  230.  
  231.     SORT t_bsxd kunnr.
  232.     DELETE ADJACENT DUPLICATES FROM t_bsxd.
  233.     "FIN 20150126, CSC-JFMS.
  234.  
  235.     v_tope_a = p_periodo_inicio - 1.
  236.     LOOP AT t_clientes.
  237.       v_total_arrastre  = t_clientes-umsav.
  238.       v_total_debe      = 0.
  239.       v_total_haber     = 0.
  240.       v_total_saldo     = 0.
  241.  
  242.       DO 16 TIMES.
  243.         CLEAR: v_debe, v_haber.
  244.         v_index = SY-INDEX.
  245.         CONCATENATE 't_clientes-UM' v_index 'S' INTO v_debe.
  246.         CONCATENATE 't_clientes-UM' v_index 'H' INTO v_haber.
  247.         ASSIGN (v_debe)  TO  <d>.
  248.         ASSIGN (v_haber) TO  <h>.
  249.         IF ( v_index GE p_periodo_inicio ) AND ( v_index LE p_periodo_fin ).
  250.           v_total_debe   = v_total_debe  +  <d>.
  251.           v_total_haber  = v_total_haber +  <h>.
  252.        ENDIF.
  253.        IF v_index LE v_tope_a.
  254.           v_total_arrastre  = v_total_arrastre + ( <d> - <h> ).
  255.        ENDIF.
  256.       ENDDO.
  257.  
  258.       "Saldo Acumulado
  259.       v_total_saldo = ( v_total_arrastre + v_total_debe ) - v_total_haber.
  260.  
  261.       IF ( t_clientes-umsav NE 0 )  OR  ( v_total_debe NE 0 )    OR
  262.          ( v_total_haber NE 0 )     OR  ( v_total_saldo NE 0 ).
  263.           MOVE t_clientes-bukrs  TO  t_tabla-bukrs.  "Sociedad
  264.           MOVE t_clientes-akont  TO  t_tabla-akont.  "Cuenta de mayor (asociada)
  265.           MOVE t_clientes-txt50  TO  t_tabla-txt50.  "Nombre de la cuenta
  266.           MOVE t_clientes-waers  TO  t_tabla-waers.  "Moneda de la cuenta
  267.           MOVE t_clientes-kunnr  TO  t_tabla-kunnr.  "Número de cliente
  268.           MOVE t_clientes-name1  TO  t_tabla-name1.  "Nombre de cliente
  269.           MOVE t_clientes-name2  TO  t_tabla-name2.  "Nombre de cliente
  270.           MOVE v_total_arrastre  TO  t_tabla-umsav.  "Arrastre de saldo
  271.           MOVE v_total_debe      TO  t_tabla-um01s.  "Período de informe debe
  272.           MOVE v_total_haber     TO  t_tabla-um01h.  "Período de informe haber
  273.           MOVE v_total_saldo     TO  t_tabla-um01u.  "Saldo acumulado
  274.           APPEND t_tabla.
  275.       ENDIF.
  276.     ENDLOOP.
  277.     SORT t_tabla BY bukrs akont kunnr.
  278. ENDFUNCTION.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement