You are on page 1of 4

*&---------------------------------------------------------------------*

*& Report Z3P_PFIKAR


*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
include Z3P_PFIKAR_TOP.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.


PERFORM buscar_archivo USING p_file.
initialization.
sy-title = 'Generacin de Inventario Valorizado(KARDEX)'.
START-OF-SELECTION.
if P_excel eq 'X' and p_file is initial.
message 'Seleccione archivo' type 'S' display like 'E'.
STOP.
endif.
" r_budat-option = 'BT'. r_budat-sign = 'I'.
" concatenate p_gjahr s_monat '01' into r_budat-low.
" f_inicial = r_budat-low.
"CALL FUNCTION 'LAST_DAY_OF_MONTHS'
"
EXPORTING
"
day_in
= f_inicial
"
IMPORTING
"
last_day_of_month = r_budat-high
"
EXCEPTIONS
"
day_in_no_date
= 1
"
OTHERS
= 2.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
"p_lfgja = p_gjahr.
"p_nperi = s_monat.
PERFORM cargar_datos.
data t_saldos type table of ZT3P_SALMAT with header line.
DATA : per_x(2) TYPE c,
eje_x(4) TYPE c.
data : reg type i value 0.
data wa_sunat_K type zt3p_KARDEX occurs 0 with header line.
*

Obtenemos mes y ao para insertar el saldo inicial


IF p_nperi = '12'.
per_x = '01'.
eje_x = p_lfgja + 1.
ELSE.
per_x = p_nperi + 1.
eje_x = p_lfgja.
ENDIF.

DELETE ADJACENT DUPLICATES FROM t_cabec COMPARING matnr.


LOOP AT t_cabec.
LOOP AT t_detalle WHERE matnr = t_cabec-matnr.
clear wa_sunat_K.
move t_detalle-mblnr to wa_sunat_k-mblnr.
move p_lfgja to wa_sunat_k-KEJERCICIO.
move t_detalle-FECHA+4(2) to wa_sunat_K-KMES. "cabecera
move '0006'
to wa_sunat_K-KANEXO."cabecera
move '1'
to wa_sunat_K-KCATALOGO."cabecera
move '01'
to wa_sunat_K-KTIPEXIST."cabecera
move t_detalle-MATNR
to wa_sunat_K-KCODEXIST.
"perform sr_fmt_date
using t_detalle-FECHA changing wa_sunat_KKFECDOC.
move t_detalle-FECHA
to wa_sunat_K-KFECDOC.
move t_detalle-ZTIPO_COMP to wa_sunat_K-KTIPDOC.
move t_detalle-SERIE
to wa_sunat_K-KSERDOC.
move t_detalle-numero
to wa_sunat_K-KNUMDOC.
move t_detalle-ZTIPO_OPE to wa_sunat_K-KTIPOPE.
move t_cabec-maktx
to wa_sunat_K-KDESEXIST."cabecera
move 'UND'
to wa_sunat_K-KUNIMED."cab
move '1'
to wa_sunat_K-KMETVAL."cab
move t_detalle-CANT_IN
to wa_sunat_K-KUNIING.
move t_detalle-COSU_IN
to wa_sunat_K-KCOSING.
move t_detalle-COST_IN
to wa_sunat_K-KTOTING.
move t_detalle-CANT_OUT
to wa_sunat_K-KUNIRET.
move t_detalle-COSU_OUT
to wa_sunat_K-KCOSRET.
move t_detalle-COST_OUT
to wa_sunat_K-KTOTRET.
move t_detalle-shkzg
to wa_sunat_k-KINDSH.
move t_detalle-bwart
to wa_sunat_k-bwart.
move t_detalle-CPUDT
to wa_sunat_k-CPUDT.
move t_detalle-CPUTM
to wa_sunat_k-CPUTM.
"move t_detalle-CANT_TOT
to wa_sunat_K-KSALFIN.
"move t_detalle-COSU_FIN
to wa_sunat_K-KCOSFIN.
"move t_detalle-COST_FIN
to wa_sunat_K-KTOTFIN.
APPEND wa_sunat_K.
ENDLOOP.
"Grabando el saldo final como saldo inicial para el siguiente mes
t_saldos-PERIODO = per_x.
t_saldos-EJERCICIO = eje_x .
t_saldos-MATNR = t_detalle-MATNR .
t_saldos-CANT = t_detalle-CANT_TOT.
t_saldos-COSU = t_detalle-COSU_FIN .
t_saldos-COST = t_detalle-COST_FIN.
append t_saldos.
COMMIT WORK.
ENDLOOP.
* Insertar los valores en la tabla de Saldo Inicial para el siguiente mes por
Material
select single count( * ) into (reg) from ZT3P_SALMAT where periodo = per_x an
d ejercicio = eje_x AND MATNR IN p_MATNR.
if reg > 0.
delete from ZT3P_SALMAT where periodo = per_x and ejercicio = eje_x AND M
ATNR IN p_MATNR.
"
commit work.
endif.
TRY.
INSERT ZT3P_SALMAT FROM TABLE t_saldos.
CATCH CX_SY_OPEN_SQL_DB.
"WRITE 'Error al actualizar la tabla de KARDEX'.
MESSAGE 'Error al actualizar la tabla de SALDOS' TYPE 'S' DISPLAY LIKE

'E'.
STOP.
CATCH cx_sy_native_sql_error.
MESSAGE 'Error al actualizar la tabla de SALDOS' TYPE 'S' DISPLAY LIKE
'E'.
STOP.
ENDTRY.
* Insertar datos en la tabla de KARDEX del mes procesado
reg = 0.
select single count( * ) into (reg) from ZT3P_KARDEX where KMES = p_nperi and
KEJERCICIO = p_lfgja AND KCODEXIST IN p_MATNR.
if reg > 0.
delete from ZT3P_KARDEX where KMES = p_nperi and KEJERCICIO = p_lfgja AND
KCODEXIST IN p_MATNR.
"
commit work.
endif.
TRY.
INSERT ZT3P_KARDEX FROM TABLE wa_sunat_K.
CATCH CX_SY_OPEN_SQL_DB.
"WRITE 'Error al actualizar la tabla de KARDEX'.
MESSAGE 'Error al actualizar la tabla de KARDEX' TYPE 'S' DISPLAY LIKE
'E'.
STOP.
CATCH cx_sy_native_sql_error.
MESSAGE 'Error al actualizar la tabla de KARDEX' TYPE 'S' DISPLAY LIKE
'E'.
STOP.
ENDTRY.
IF p_excel EQ 'X'.
"Validar ARCHIVO A DESCARGAR
clear l_file.
move p_file to l_file.
if l_file cs '.xls' or l_file cs '.xlsx'.
else.
LEN = STRLEN( l_file ).
if len >= 1.
len = len - 1.
IF l_file+LEN(1) EQ '\'.
CONCATENATE l_file 'Kardex_' p_nperi '_' p_lfgja into l_file.
ENDIF.
endif.
concatenate l_file '.xls' into l_file.
endif.
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
FILENAME
FILETYPE
TABLES
DATA_TAB
EXCEPTIONS
FILE_WRITE_ERROR
NO_BATCH
GUI_REFUSE_FILETRANSFER
INVALID_TYPE
NO_AUTHORITY

= l_FILE
= 'DAT'
= wa_sunat_K
=
=
=
=
=

1
2
3
4
5

UNKNOWN_ERROR
HEADER_NOT_ALLOWED
SEPARATOR_NOT_ALLOWED
FILESIZE_NOT_ALLOWED
HEADER_TOO_LONG
DP_ERROR_CREATE
DP_ERROR_SEND
DP_ERROR_WRITE
UNKNOWN_DP_ERROR
ACCESS_DENIED
DP_OUT_OF_MEMORY
DISK_FULL
DP_TIMEOUT
FILE_NOT_FOUND
DATAPROVIDER_EXCEPTION
CONTROL_FLUSH_ERROR
OTHERS

=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=

6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22.

ENDIF.
" message 'Se genero el kardex correctamente' type 'I'.
include Z3P_PFIKAR_SR.

You might also like