Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- FUNCTION zfifu021.
- * Gpo. Func.: ZESTADOFIN
- *"----------------------------------------------------------------------
- *"*"Interfase local
- *" IMPORTING
- *" VALUE(P_BUKRS) TYPE KNB1-BUKRS
- *" VALUE(P_GJAHR) TYPE KNC1-GJAHR
- *" VALUE(P_PERIODO_INICIO) TYPE NUMC2 OPTIONAL
- *" VALUE(P_PERIODO_FIN) TYPE NUMC2 OPTIONAL
- *" TABLES
- *" T_TABLA STRUCTURE ZFIES036
- *" S_KUNNR STRUCTURE ZFIES007
- *" S_HKONT STRUCTURE ZFIES029
- *"----------------------------------------------------------------------
- *----------------------------------------------------------------------*
- * COMPAÑIA: Centinela Servicios Corporativos *
- * AUTOR: Alejandra Díaz (CSC-ADP) *
- * FECHA: Sábado, 19 de Marzo de 2011 *
- * OBJETIVO: Estados Financieros (Saldo de Clientes F.23) *
- *----------------------------------------------------------------------*
- * HISTORIAL DE MODIFICACIONES *
- *----------------------------------------------------------------------*
- * 20150126, CSC-JFMS: Adición del campo división para el reporte de *
- * cuentas de clientes. *
- *----------------------------------------------------------------------*
- * Variables
- DATA:
- v_clave_activo LIKE T011-AKTVA,
- v_total_arrastre LIKE KNC1-UMSAV,
- v_total_debe LIKE KNC1-UM01S,
- v_total_haber LIKE KNC1-UM01H,
- v_total_saldo LIKE KNC1-UM01U,
- v_tope_a(2) TYPE N,
- v_index(2) TYPE N,
- v_debe(16) TYPE C,
- v_haber(16) TYPE C.
- * Field Symbols
- FIELD-SYMBOLS: <d>, <h>.
- * Constantes
- CONSTANTS:
- c_versn LIKE FAGL_011QT-VERSN VALUE 'BHYA',
- c_spras LIKE FAGL_011QT-SPRAS VALUE 'S',
- c_txtyp LIKE FAGL_011QT-TXTYP VALUE 'A',
- c_ktopl LIKE T011-KTOPL VALUE 'HYA'.
- * Rangos
- RANGES:
- r_ergsl FOR FAGL_011QT-ERGSL, "Pos. balance/PyG
- r_zeile FOR FAGL_011QT-ZEILE, "Nº de línea de la pos. de balance/PyG
- r_ktopl FOR FAGL_011ZC-KTOPL, "Plan de cuentas
- r_vonkt FOR FAGL_011ZC-VONKT, "Límite inferior del intervalo de cuentas
- r_bukrs FOR KNB1-BUKRS, "Sociedad
- r_gjahr FOR KNC1-GJAHR. "Ejercicio
- * Tablas Internas
- DATA: BEGIN OF t_clientes OCCURS 0,
- gsber LIKE BSAD-GSBER, "20150126, CSC-JFMS Agregué campo 'gsber'.
- akont LIKE KNB1-AKONT,
- txt50 LIKE SKAT-TXT50,
- waers LIKE SKB1-WAERS,
- kunnr LIKE KNA1-KUNNR,
- name1 LIKE KNA1-NAME1,
- name2 LIKE KNA1-NAME2,
- bukrs LIKE KNC1-BUKRS,
- gjahr LIKE KNC1-GJAHR,
- umsav LIKE KNC1-UMSAV,
- um01s LIKE KNC1-UM01S,
- um01h LIKE KNC1-UM01H,
- um02s LIKE KNC1-UM02S,
- um02h LIKE KNC1-UM02H,
- um03s LIKE KNC1-UM03S,
- um03h LIKE KNC1-UM03H,
- um04s LIKE KNC1-UM04S,
- um04h LIKE KNC1-UM04H,
- um05s LIKE KNC1-UM05S,
- um05h LIKE KNC1-UM05H,
- um06s LIKE KNC1-UM06S,
- um06h LIKE KNC1-UM06H,
- um07s LIKE KNC1-UM07S,
- um07h LIKE KNC1-UM07H,
- um08s LIKE KNC1-UM08S,
- um08h LIKE KNC1-UM08H,
- um09s LIKE KNC1-UM09S,
- um09h LIKE KNC1-UM09H,
- um10s LIKE KNC1-UM10S,
- um10h LIKE KNC1-UM10H,
- um11s LIKE KNC1-UM11S,
- um11h LIKE KNC1-UM11H,
- um12s LIKE KNC1-UM12S,
- um12h LIKE KNC1-UM12H,
- um13s LIKE KNC1-UM13S,
- um13h LIKE KNC1-UM13H,
- um14s LIKE KNC1-UM14S,
- um14h LIKE KNC1-UM14H,
- um15s LIKE KNC1-UM15S,
- um15h LIKE KNC1-UM15H,
- um16s LIKE KNC1-UM16S,
- um16h LIKE KNC1-UM16H.
- DATA: END OF t_clientes.
- "INICIO 20150126, CSC-JFMS.
- DATA: BEGIN OF t_bsxd OCCURS 0,
- bukrs LIKE BSAD-BUKRS,
- kunnr LIKE BSAD-KUNNR,
- gsber LIKE BSAD-GSBER.
- DATA: END OF t_bsxd.
- "FIN 20150126, CSC-JFMS.
- * Validaciones
- IF NOT p_bukrs IS INITIAL.
- r_bukrs-sign = 'I'.
- r_bukrs-option = 'EQ'.
- r_bukrs-low = p_bukrs.
- r_bukrs-high = p_bukrs.
- APPEND r_bukrs.
- ENDIF.
- IF NOT p_gjahr IS INITIAL.
- r_gjahr-sign = 'I'.
- r_gjahr-option = 'EQ'.
- r_gjahr-low = p_gjahr.
- r_gjahr-high = p_gjahr.
- APPEND r_gjahr.
- ENDIF.
- IF p_periodo_inicio IS INITIAL.
- p_periodo_inicio = 1.
- ENDIF.
- IF p_periodo_fin IS INITIAL.
- p_periodo_fin = 12.
- ENDIF.
- * Desarrollo
- SELECT
- a~AKONT
- b~TXT50
- c~WAERS
- d~KUNNR
- d~NAME1
- d~NAME2
- e~BUKRS
- e~GJAHR
- e~UMSAV
- e~UM01S
- e~UM01H
- e~UM02S
- e~UM02H
- e~UM03S
- e~UM03H
- e~UM04S
- e~UM04H
- e~UM05S
- e~UM05H
- e~UM06S
- e~UM06H
- e~UM07S
- e~UM07H
- e~UM08S
- e~UM08H
- e~UM09S
- e~UM09H
- e~UM10S
- e~UM10H
- e~UM11S
- e~UM11H
- e~UM12S
- e~UM12H
- e~UM13S
- e~UM13H
- e~UM14S
- e~UM14H
- e~UM15S
- e~UM15H
- e~UM16S
- e~UM16H
- FROM KNB1 AS a
- INNER JOIN SKAT AS b ON
- a~AKONT = b~SAKNR
- INNER JOIN SKB1 AS c ON
- a~BUKRS = c~BUKRS AND
- a~AKONT = c~SAKNR
- INNER JOIN KNA1 AS d ON
- a~KUNNR = d~KUNNR
- INNER JOIN KNC1 AS e ON
- a~KUNNR = e~KUNNR AND
- a~BUKRS = e~BUKRS
- INTO TABLE t_clientes
- WHERE
- a~BUKRS IN r_bukrs AND
- a~AKONT IN s_hkont AND
- b~SPRAS EQ c_spras AND
- b~KTOPL EQ c_ktopl AND
- d~KUNNR IN s_kunnr AND
- e~GJAHR IN r_gjahr.
- SORT t_clientes BY akont kunnr.
- * LOOP AT t_clientes.
- * WRITE: t_clientes-akont, t_clientes-kunnr, t_clientes-umsav, /.
- * ENDLOOP.
- "INICIO 20150126, CSC-JFMS.
- "Buscamos división en partidas abiertas del índice secundario para deudores.
- SELECT
- BUKRS "Sociedad.
- KUNNR "Cuenta.
- GSBER "División.
- FROM BSID
- INTO CORRESPONDING FIELDS OF TABLE t_bsxd
- FOR ALL ENTRIES IN t_clientes
- WHERE
- BUKRS EQ t_clientes-bukrs AND
- KUNNR IN t_clientes-kunnr AND
- GSBER IN t_clientes-gsber.
- "Buscamos división en partidas compensadas del índice secundario para deudores.
- SELECT
- BUKRS "Sociedad.
- KUNNR "Cuenta.
- GSBER "División.
- FROM BSAD
- INTO CORRESPONDING FIELDS OF TABLE t_bsxd
- FOR ALL ENTRIES IN t_clientes
- WHERE
- BUKRS EQ t_clientes-bukrs AND
- KUNNR IN t_clientes-kunnr AND
- GSBER IN t_clientes-gsber.
- SORT t_bsxd kunnr.
- DELETE ADJACENT DUPLICATES FROM t_bsxd.
- "FIN 20150126, CSC-JFMS.
- v_tope_a = p_periodo_inicio - 1.
- LOOP AT t_clientes.
- v_total_arrastre = t_clientes-umsav.
- v_total_debe = 0.
- v_total_haber = 0.
- v_total_saldo = 0.
- DO 16 TIMES.
- CLEAR: v_debe, v_haber.
- v_index = SY-INDEX.
- CONCATENATE 't_clientes-UM' v_index 'S' INTO v_debe.
- CONCATENATE 't_clientes-UM' v_index 'H' INTO v_haber.
- ASSIGN (v_debe) TO <d>.
- ASSIGN (v_haber) TO <h>.
- IF ( v_index GE p_periodo_inicio ) AND ( v_index LE p_periodo_fin ).
- v_total_debe = v_total_debe + <d>.
- v_total_haber = v_total_haber + <h>.
- ENDIF.
- IF v_index LE v_tope_a.
- v_total_arrastre = v_total_arrastre + ( <d> - <h> ).
- ENDIF.
- ENDDO.
- "Saldo Acumulado
- v_total_saldo = ( v_total_arrastre + v_total_debe ) - v_total_haber.
- IF ( t_clientes-umsav NE 0 ) OR ( v_total_debe NE 0 ) OR
- ( v_total_haber NE 0 ) OR ( v_total_saldo NE 0 ).
- MOVE t_clientes-bukrs TO t_tabla-bukrs. "Sociedad
- MOVE t_clientes-akont TO t_tabla-akont. "Cuenta de mayor (asociada)
- MOVE t_clientes-txt50 TO t_tabla-txt50. "Nombre de la cuenta
- MOVE t_clientes-waers TO t_tabla-waers. "Moneda de la cuenta
- MOVE t_clientes-kunnr TO t_tabla-kunnr. "Número de cliente
- MOVE t_clientes-name1 TO t_tabla-name1. "Nombre de cliente
- MOVE t_clientes-name2 TO t_tabla-name2. "Nombre de cliente
- MOVE v_total_arrastre TO t_tabla-umsav. "Arrastre de saldo
- MOVE v_total_debe TO t_tabla-um01s. "Período de informe debe
- MOVE v_total_haber TO t_tabla-um01h. "Período de informe haber
- MOVE v_total_saldo TO t_tabla-um01u. "Saldo acumulado
- APPEND t_tabla.
- ENDIF.
- ENDLOOP.
- SORT t_tabla BY bukrs akont kunnr.
- ENDFUNCTION.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement