Está en la página 1de 20

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

*& Report ZPEFI_030


*&
*&---------------------------------------------------------------------*
*& Fecha: 06.03.2017
*& Marca: @001
*& Objetivo: Omitir cuentas de carga inicial
*&---------------------------------------------------------------------*
*& Fecha: 21.03.2017
*& Marca: @002
*& Objetivo: Agrupar cuentas de valoracion
*&---------------------------------------------------------------------*
*& Fecha: 24.03.2017
*& Marca: @003
*& Objetivo: Omitir registros con importe '0.00'
*&---------------------------------------------------------------------*
*& Fecha: 29.03.2017
*& Marca: @004
*& Objetivo: Saldo de cuentas no cuadra con estandar
*&---------------------------------------------------------------------*
*& Fecha: 30.03.2017
*& Marca: @005
*& Objetivo: Agregar opcion filtrar subtotal igual '0.00'

REPORT zpefi_030.

TABLES: t001,
skb1.

TYPE-POOLS: slis.

TYPES: BEGIN OF gty_skb1,


saknr LIKE skb1-saknr,
txt50 LIKE skat-txt50,
END OF gty_skb1.

TYPES: BEGIN OF gty_soci,


bukrs LIKE t001-bukrs,
ruc LIKE t001z-paval,
razsocial TYPE string,
END OF gty_soci.

* Inserted by @005{
TYPES:BEGIN OF gty_stot,
saknr TYPE saknr,
dmbtr TYPE dmbtr,
END OF gty_stot.
* }

DATA: gwa_soci TYPE gty_soci,


gtd_skb1 TYPE HASHED TABLE OF gty_skb1 WITH UNIQUE KEY saknr,
gtd_libro0308 TYPE TABLE OF zwlibro0308,
gtd_libro0308_a TYPE TABLE OF zwlibro0308, "@002
gtd_ctasval TYPE STANDARD TABLE OF zfit_ctasval_tc, "@002
gtd_subtot TYPE STANDARD TABLE OF gty_stot, "@005
gtd_datos_adic TYPE STANDARD TABLE OF ztb_cuenta30,
gtd_sapsunat02 TYPE TABLE OF ztsapsunat02.

RANGES: gr_saknr9 FOR zwlibro0308-saknr, "@001


gr_subtot FOR zwlibro0303-saknr, "@005
gr_ctasval FOR zfit_ctasval_tc-saknr. "@002

DATA: gwa_saknr LIKE LINE OF gr_saknr9, "@001


gwa_ctasval LIKE LINE OF gr_ctasval, "@002
gwa_subtot LIKE LINE OF gtd_subtot, "@005
gwa_rsubtot LIKE LINE OF gr_subtot, "@005
gwa_libros_a LIKE LINE OF gtd_libro0308_a. "@002

FIELD-SYMBOLS: <fs_libro0308> LIKE LINE OF gtd_libro0308, "@002


<fs_ctasval> LIKE LINE OF gtd_ctasval. "@002

DATA rtext TYPE text132.

SELECTION-SCREEN BEGIN OF BLOCK b00 WITH FRAME TITLE text-b00.


PARAMETERS: p_bukrs LIKE t001-bukrs OBLIGATORY.
SELECT-OPTIONS: s_saknr FOR skb1-saknr OBLIGATORY.
PARAMETERS: p_gjahr LIKE bkpf-gjahr OBLIGATORY DEFAULT '2015'.
PARAMETERS: p_monat LIKE bkpf-monat DEFAULT '12' NO-DISPLAY.

PARAMETER: p_sbtot AS CHECKBOX DEFAULT 'X'. "@005


SELECTION-SCREEN END OF BLOCK b00.

SELECTION-SCREEN BEGIN OF BLOCK b02 WITH FRAME TITLE text-002.


PARAMETER:
p_elect AS CHECKBOX DEFAULT '' USER-COMMAND uc1,
p_ruta LIKE ibipparms-path MODIF ID i1.

SELECTION-SCREEN END OF BLOCK b02.

AT SELECTION-SCREEN OUTPUT.

IF p_elect EQ 'X'.
LOOP AT SCREEN.
IF screen-group1 EQ 'I1'.
screen-active = 1.
MODIFY SCREEN.
ENDIF.
ENDLOOP.

ELSE.

LOOP AT SCREEN.
IF screen-group1 EQ 'I1'.
screen-active = 0.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ENDIF.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_ruta.


CALL FUNCTION 'TMP_GUI_BROWSE_FOR_FOLDER'
EXPORTING
initial_folder = 'C:\'
IMPORTING
selected_folder = p_ruta
EXCEPTIONS
cntl_error = 1
OTHERS = 2.
INITIALIZATION.
*Se inicializa la cuenta segun el tipo de libro
IF s_saknr[] IS INITIAL.

DATA: ls_obj_abap TYPE ztconstll-obj_abap.

ls_obj_abap = sy-repid.

CALL FUNCTION 'Z_FI_CUENTAS'


EXPORTING
i_modulo = 'FI'
i_const01 = 'SAKNR'
i_obj_abap = ls_obj_abap
i_r_saknr = 'X'
TABLES
t_r_saknr = s_saknr.

ENDIF.

*Se carga la tabla de equivalencia de sap/sunat de los tipos documentos de


identidad
PERFORM get_tipdocsunat.

AT SELECTION-SCREEN ON p_bukrs.
*Se valida la sociedad
CALL FUNCTION 'FI_COMPANY_CODE_DATA'
EXPORTING
i_bukrs = p_bukrs
IMPORTING
e_t001 = t001
EXCEPTIONS
system_error = 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.

gwa_soci-bukrs = t001-bukrs.

PERFORM get_sociedad CHANGING gwa_soci.

START-OF-SELECTION.
PERFORM get_data.
PERFORM get_ctasval. "@002
PERFORM put_data.
PERFORM get_account9. "@001
PERFORM delete_account9. "@001
PERFORM delete_initial_row. "@003
PERFORM cluster_ctasval. "@002

* Inserted by @005{
IF p_sbtot EQ 'X'.
PERFORM delete_initial_subt.
ENDIF.
* }
IF p_elect EQ 'X'.
PERFORM descarga_electronico.
ENDIF.

PERFORM show_data.

*&---------------------------------------------------------------------*
*& Form get_data
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM get_data .

SELECT saknr txt50


INTO TABLE gtd_skb1
FROM skat
WHERE spras = sy-langu
AND ktopl = t001-ktopl
AND saknr IN s_saknr.

ENDFORM. "get_data

*&---------------------------------------------------------------------*
*& Form GET_CTASVAL
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM get_ctasval .
CLEAR gtd_ctasval.
REFRESH gtd_ctasval.

SELECT * INTO TABLE gtd_ctasval


FROM zfit_ctasval_tc
WHERE saknr BETWEEN '0030000000' AND '0030999999'.

IF gtd_ctasval[] IS NOT INITIAL.


LOOP AT gtd_ctasval ASSIGNING <fs_ctasval>.
CLEAR gwa_ctasval.
gwa_ctasval-sign = 'I'.
gwa_ctasval-option = 'EQ'.
gwa_ctasval-low = <fs_ctasval>-saknr.
APPEND gwa_ctasval TO gr_ctasval.
ENDLOOP.
ENDIF.
ENDFORM. "get_ctasval

*&---------------------------------------------------------------------*
*& Form PUT_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM put_data .

rtext = text-t01.

PERFORM format0308.

ENDFORM. " PUT_DATA

*&---------------------------------------------------------------------*
*& Form get_account9
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM get_account9.

CLEAR gr_saknr9.
REFRESH gr_saknr9.

CLEAR gwa_saknr.
gwa_saknr-sign = 'I'.
gwa_saknr-option = 'EQ'.
gwa_saknr-low = '0030999999'.
APPEND gwa_saknr TO gr_saknr9.

ENDFORM. "get_account9

*&---------------------------------------------------------------------*
*& Form delete_account9
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM delete_account9.

"Cta. Carga Inicial


DELETE gtd_libro0308
WHERE saknr IN gr_saknr9[].

ENDFORM. "delete_account9

*&---------------------------------------------------------------------*
*& FORM DELETE_INITIAL_ROW
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM delete_initial_row.

DELETE gtd_libro0308
WHERE dmbtr EQ '0.00'.

ENDFORM. "delete_initial_row

*&---------------------------------------------------------------------*
*& FORM CLUSTER_CTASVAL
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM cluster_ctasval.
DATA: lv_saknr TYPE saknr,
lv_gjahr TYPE gjahr,
lv_buzei TYPE buzei.

SORT gtd_libro0308 BY saknr gjahr DESCENDING.

IF gr_ctasval[] IS NOT INITIAL.


CLEAR: lv_saknr, lv_buzei, lv_gjahr.
LOOP AT gtd_libro0308 ASSIGNING <fs_libro0308>
WHERE saknr IN gr_ctasval[].

CLEAR gwa_libros_a.
gwa_libros_a-bukrs = <fs_libro0308>-bukrs.
gwa_libros_a-saknr = <fs_libro0308>-saknr.
gwa_libros_a-txt50 = <fs_libro0308>-txt50.
gwa_libros_a-dmbtr = <fs_libro0308>-dmbtr.

gwa_libros_a-belnr = '0000000000'.
gwa_libros_a-stcd1 = '00000000'.
gwa_libros_a-stcdt = '00'.
gwa_libros_a-cdosu = '0'.
gwa_libros_a-txt50 = 'VARIOS'.

IF lv_saknr NE <fs_libro0308>-saknr.
lv_buzei = lv_buzei + 1.
lv_saknr = <fs_libro0308>-saknr.
lv_gjahr = <fs_libro0308>-gjahr.
ENDIF.
gwa_libros_a-gjahr = lv_gjahr.
gwa_libros_a-buzei = lv_buzei.
gwa_libros_a-waers = 'PEN'.
CONCATENATE p_gjahr '1231'
INTO gwa_libros_a-bldat.

* gwa_libros_a-KUNNR
* gwa_libros_a-NAME1
COLLECT gwa_libros_a INTO gtd_libro0308_a.

ENDLOOP.

"
DELETE gtd_libro0308
WHERE saknr IN gr_ctasval[].

"
APPEND LINES OF gtd_libro0308_a TO gtd_libro0308.
ENDIF.

ENDFORM. "cluster_ctasval

*&---------------------------------------------------------------------*
*& Form delete_initial_subt
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM delete_initial_subt.

CLEAR gr_subtot.
REFRESH gr_subtot.

DELETE gtd_subtot
WHERE dmbtr NE 0.

IF gtd_subtot[] IS NOT INITIAL.


LOOP AT gtd_subtot INTO gwa_subtot.

CLEAR gwa_rsubtot.
gwa_rsubtot-sign = 'I'.
gwa_rsubtot-option = 'EQ'.
gwa_rsubtot-low = gwa_subtot-saknr.
APPEND gwa_rsubtot TO gr_subtot.

ENDLOOP.

DELETE gtd_libro0308
WHERE saknr IN gr_subtot[].
ENDIF.

ENDFORM. "delete_initial_subt

*&---------------------------------------------------------------------*
*& Form show_data
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM show_data .

DATA ltd_fieldcat TYPE slis_t_fieldcat_alv.


DATA lwa_layout TYPE slis_layout_alv.

TRANSLATE t001-butxt TO UPPER CASE.

PERFORM get_fcat CHANGING ltd_fieldcat.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'


EXPORTING
i_callback_program = sy-repid
i_callback_user_command = 'USER_COMMAND'
i_callback_pf_status_set = 'PF_STATUS_SET'
i_callback_html_top_of_page = 'HTML_TOP_OF_PAGE'
is_layout = lwa_layout
it_fieldcat = ltd_fieldcat
i_default = ' '
i_save = 'A'
TABLES
t_outtab = gtd_libro0308
EXCEPTIONS
program_error = 1
OTHERS = 2.

ENDFORM. " SHOW_DATA

*&---------------------------------------------------------------------*
*& Form get_fcat
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->HI_FCAT text
*----------------------------------------------------------------------*
FORM get_fcat CHANGING hi_fcat TYPE slis_t_fieldcat_alv.

CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'


EXPORTING
i_structure_name = 'zwlibro0308'
CHANGING
ct_fieldcat = hi_fcat.

FIELD-SYMBOLS <lfs_fcat> TYPE LINE OF slis_t_fieldcat_alv.

LOOP AT hi_fcat ASSIGNING <lfs_fcat>.


CASE <lfs_fcat>-fieldname.
WHEN 'DMBTR'. <lfs_fcat>-do_sum = 'X'.
WHEN 'CDOSU' OR 'BUKRS' OR 'GJAHR'. <lfs_fcat>-no_out = 'X'.
WHEN 'BELNR'. <lfs_fcat>-hotspot = 'X'.
ENDCASE.
ENDLOOP.

ENDFORM. " GET_FCAT

*&---------------------------------------------------------------------*
*& Form html_top_of_page
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->UO_HEAD text
*----------------------------------------------------------------------*
FORM html_top_of_page USING uo_head TYPE REF TO cl_dd_document.

DATA l_strng TYPE string.


DATA l_text1 TYPE char80.
DATA l_text2 TYPE char80.
DATA l_value TYPE char80.
*--- Text
DEFINE set_html.

write &3 to l_text1.


write &4 to l_text2.
concatenate l_text1 l_text2 into l_value separated by space.
concatenate &1
'<tr>'
'<td align=center width=60% colspan=1>'
'<table border=0 width=100% align=center cellspacing=0'
' cellpadding=0>'
'<tr>'
'<td align=left width=25% colspan=1 style='
'"font-weight=bold;font-size=12;"'
'valing=middle>'
&2
'</td>'
'<td align=left width=2% colspan=1 style='
'"font-weight=bold;font-size=12;"'
'valing=middle>'
':'
'</td>'
'<td align=left width=73% colspan=1 style='
"'"font-weight=bold;font-size=12;"'
'valing=middle>'
l_value
'</td>'
'</tr>'
'</table>'
'</td>'
'</tr>'
into &1.

END-OF-DEFINITION.
*--- Begining
CALL METHOD uo_head->initialize_document.
*--- Background
CALL METHOD uo_head->set_document_background
EXPORTING
picture_id = 'ALV_BACKGROUND'.
*--- Body #01
CONCATENATE '<table border=0 width=100% align=center cellspacing=0'
' cellpadding=0>'
'<tr>'
'<td align=left width=60% colspan=1 style='
'"font-weight=bold;font-size=16" valing=middle>'
rtext
'</td>'
'<td align=left width=40% rowspan="6">'
INTO l_strng.
CALL METHOD uo_head->add_static_html
EXPORTING
string_with_html = l_strng.
*--- Body #02
CONCATENATE '</td>'
'</tr>'
INTO l_strng.
*--- Texts
set_html: l_strng text-h01 p_gjahr p_monat,
l_strng text-h02 gwa_soci-ruc '',
l_strng text-h03 gwa_soci-razsocial ''.
CALL METHOD uo_head->add_static_html
EXPORTING
string_with_html = l_strng.
*--- HTML
CALL METHOD uo_head->merge_document.

ENDFORM. " HTML_TOP_OF_PAGE

*&---------------------------------------------------------------------*
*& Form print_form
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM print_form.

DATA: l_fname TYPE rs38l_fnam.

CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'


EXPORTING
formname = 'ZFISF_PEFI0308'
IMPORTING
fm_name = l_fname
EXCEPTIONS
no_form = 1
no_function_module = 2
OTHERS = 3.
IF sy-subrc NE 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.

CALL FUNCTION l_fname


EXPORTING
user_settings = 'X'
i_gjahr = p_gjahr
i_ruc = gwa_soci-ruc
i_fecha = sy-datum
i_butxt = gwa_soci-razsocial
i_waers = 'PEN'
TABLES
gt_reporte = gtd_libro0308
EXCEPTIONS
formatting_error = 1
internal_error = 2
send_error = 3
user_canceled = 4
OTHERS = 5.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.

ENDFORM. " PRINT_FORM

*&---------------------------------------------------------------------*
*& Form pf_status_set
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_UI_EXTAB text
*----------------------------------------------------------------------*
FORM pf_status_set USING p_ui_extab TYPE slis_t_extab.

SET PF-STATUS 'ST001' EXCLUDING p_ui_extab.

ENDFORM. " PF_STATUS_SET

*&---------------------------------------------------------------------*
*& Form USER_COMMAND
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*

FORM user_command USING u_fcode TYPE sy-ucomm


uw_selfield TYPE slis_selfield.

CASE u_fcode.
WHEN '&PRINT'.
PERFORM print_form.
WHEN '&IC1'.
DATA lwa_libro0308 TYPE zwlibro0308.

CHECK uw_selfield-fieldname = 'BELNR'.

READ TABLE gtd_libro0308 INDEX uw_selfield-tabindex INTO lwa_libro0308.

CHECK NOT lwa_libro0308-belnr IS INITIAL.

SET PARAMETER ID 'BUK' FIELD lwa_libro0308-bukrs.


SET PARAMETER ID 'BLN' FIELD lwa_libro0308-belnr.
SET PARAMETER ID 'GJR' FIELD lwa_libro0308-gjahr.
CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN.

ENDCASE.

ENDFORM. " USER_COMMAND

*&---------------------------------------------------------------------*
*& Form get_sociedad
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM get_sociedad CHANGING p_wa_soci TYPE gty_soci.

DATA: ls_name1 TYPE adrc-name1,


ls_name2 TYPE adrc-name2,
ls_name3 TYPE adrc-name3,
ls_name4 TYPE adrc-name4.

* RUC de la Sociedad
SELECT SINGLE paval INTO p_wa_soci-ruc
FROM t001z
WHERE bukrs = p_wa_soci-bukrs
AND party = 'TAXNR'.

* Raz�n Social de la sociedad


SELECT SINGLE b~name1 b~name2 b~name3 b~name4 INTO (ls_name1, ls_name2, ls_name3,
ls_name4)
FROM t001 AS a INNER JOIN adrc AS b ON a~adrnr = b~addrnumber
WHERE a~bukrs = p_wa_soci-bukrs.

IF sy-subrc = 0.
CONCATENATE ls_name1 ls_name2 ls_name3 ls_name4 INTO p_wa_soci-razsocial
SEPARATED BY space.
TRANSLATE p_wa_soci-razsocial TO UPPER CASE.
CONDENSE p_wa_soci-razsocial.
ENDIF.

ENDFORM. "get_sociedad

*&---------------------------------------------------------------------*
*& Form format0308
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_C_XVIEW text
*----------------------------------------------------------------------*
FORM format0308.

DATA lcl_libros TYPE REF TO zcl_fi_libros_legales.

DATA: lwa_pits TYPE LINE OF zttpits,


lwa_datos_adic LIKE LINE OF gtd_datos_adic,
lwa_skb1 TYPE gty_skb1,
lwa_libro0308 TYPE zwlibro0308,
lwa_kna1 TYPE LINE OF le_t_dlv_kna1,
lwa_lfa1 TYPE LINE OF cvis_lfa1_t,
lwa_sapsunat02 TYPE ztsapsunat02.

DATA: ltd_pits TYPE zttpits,


ltd_pats TYPE zttpits, "@004
ltd_kna1 TYPE le_t_dlv_kna1,
ltd_lfa1 TYPE cvis_lfa1_t.

CREATE OBJECT lcl_libros.

CALL METHOD lcl_libros->get_pis


EXPORTING
i_tbl01 = 'BSIS'
i_tbl02 = 'BSID'
i_bukrs = p_bukrs
i_gjahr = p_gjahr
i_monat = p_monat
i_hkont = s_saknr[]
CHANGING
c_pits = ltd_pits.

* Inserted by @004{
CALL METHOD lcl_libros->get_pas
EXPORTING
i_tbl01 = 'BSAS'
i_tbl02 = 'BSAD'
i_bukrs = p_bukrs
i_gjahr = p_gjahr
i_monat = p_monat
i_hkont = s_saknr[]
CHANGING
c_pits = ltd_pats.
* }

* CALL METHOD lcl_libros->get_pis


* EXPORTING
* i_tbl01 = 'BSAS'
* i_tbl02 = 'BSAD'
* i_bukrs = p_bukrs
* i_gjahr = p_gjahr
* i_monat = p_monat
* i_hkont = s_saknr[]
* CHANGING
* c_pits = ltd_pits.

* Inserted by @004{
IF ltd_pats[] IS NOT INITIAL.
APPEND LINES OF ltd_pats TO ltd_pits.
CLEAR ltd_pats.
REFRESH ltd_pats.
ENDIF.
* }

* Inserted by @006{
PERFORM get_cod_deudor CHANGING ltd_pits.
* }

* Inserted by @006{
PERFORM get_cod_acreedor CHANGING ltd_pits.
* }

CALL METHOD lcl_libros->get_customer


EXPORTING
i_pits = ltd_pits[]
IMPORTING
e_kna1 = ltd_kna1.

CALL METHOD lcl_libros->get_vendor


EXPORTING
i_pits = ltd_pits[]
IMPORTING
e_lfa1 = ltd_lfa1.

* Inserted by @005{
CLEAR gtd_subtot.
REFRESH gtd_subtot.
* }
CLEAR gtd_datos_adic.
REFRESH gtd_datos_adic.

SELECT * INTO TABLE gtd_datos_adic


FROM ztb_cuenta30
FOR ALL ENTRIES IN ltd_pits
WHERE gjahr EQ ltd_pits-gjahr
AND belnr EQ ltd_pits-belnr.

SOrt gtd_datos_adic BY gjahr belnr.

LOOP AT ltd_pits INTO lwa_pits.


CLEAR: lwa_libro0308, lwa_sapsunat02.

*Moneda
lwa_libro0308-waers = 'PEN'.
*Sociedad
lwa_libro0308-bukrs = lwa_pits-bukrs.
*Numero de documento
lwa_libro0308-belnr = lwa_pits-belnr.
*Posici�n de documento
lwa_libro0308-buzei = lwa_pits-buzei. " ADD LVILCHEZ
*A�o
lwa_libro0308-gjahr = lwa_pits-gjahr.
*Cuenta contable
lwa_libro0308-saknr = lwa_pits-hkont.
*Codigo del cliente
lwa_libro0308-kunnr = lwa_pits-accnt.

READ TABLE gtd_datos_adic INTO lwa_datos_adic WITH KEY gjahr = lwa_pits-gjahr


belnr = lwa_pits-belnr.
IF sy-subrc EQ 0.
lwa_libro0308-title = lwa_datos_adic-title.
lwa_libro0308-qanty = lwa_datos_adic-quant.
lwa_libro0308-cobrt = lwa_datos_adic-cobrt.
lwa_libro0308-prbrt = lwa_datos_adic-prbrt.
ENDIF.

*Nombre de la cuenta contable


READ TABLE gtd_skb1 WITH TABLE KEY saknr = lwa_libro0308-saknr INTO lwa_skb1.

IF sy-subrc = 0.
lwa_libro0308-txt50 = lwa_skb1-txt50.
ENDIF.

*Nombre y numero de documento de identidad del cliente


READ TABLE ltd_lfa1 WITH KEY lifnr = lwa_libro0308-kunnr INTO lwa_lfa1.

IF sy-subrc = 0.
* lwa_libro0308-stcdt = lwa_kna1-stcdt.
* lwa_libro0308-stcd1 = lwa_kna1-stcd1.
* lwa_libro0308-name1 = lwa_kna1-name1.

lwa_libro0308-stcdt = lwa_lfa1-stcdt.
lwa_libro0308-stcd1 = lwa_lfa1-stcd1.
lwa_libro0308-name1 = lwa_lfa1-name1.
*--INI
ELSE.
CLEAR lwa_kna1.
READ TABLE ltd_kna1 WITH KEY kunnr = lwa_libro0308-kunnr INTO lwa_kna1.
IF sy-subrc = 0.
* lwa_libro0308-stcdt = lwa_kna1-stcdt.
* lwa_libro0308-stcd1 = lwa_kna1-stcd1.
* lwa_libro0308-name1 = lwa_kna1-name1.

lwa_libro0308-stcdt = lwa_kna1-stcdt.
lwa_libro0308-stcd1 = lwa_kna1-stcd1.
lwa_libro0308-name1 = lwa_kna1-name1.
*---FIFI
*--INI @LV020816
ELSE.

lwa_libro0308-stcdt = '00'.
lwa_libro0308-stcd1 = '99999999'.
lwa_libro0308-name1 = 'VARIOS'.
*--INI @LV020816
ENDIF.

ENDIF.

*Importe en moneda local


IF lwa_pits-shkzg = 'S'.
lwa_libro0308-dmbtr = lwa_pits-dmbtr.
ELSE.
lwa_libro0308-dmbtr = lwa_pits-dmbtr * -1.
ENDIF.

*Equivalencia de tipo de documento


IF lwa_libro0308-stcdt IS NOT INITIAL.
READ TABLE gtd_sapsunat02 INTO lwa_sapsunat02 WITH KEY stcdt = lwa_libro0308-
stcdt.
IF sy-subrc = 0.
lwa_libro0308-cdosu = lwa_sapsunat02-cdosu.
ENDIF.
ENDIF.

*Fecha del documento


lwa_libro0308-bldat = lwa_pits-bldat.

APPEND lwa_libro0308 TO gtd_libro0308.

* Inserted by @005 {
CLEAR gwa_subtot.
gwa_subtot-saknr = lwa_libro0308-saknr.
gwa_subtot-dmbtr = lwa_libro0308-dmbtr.
COLLECT gwa_subtot INTO gtd_subtot.
* }
ENDLOOP.

ENDFORM. "format0308

*&---------------------------------------------------------------------*
*& Form GET_TIPDOCSUNAT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM get_tipdocsunat .

IF gtd_sapsunat02[] IS INITIAL.
SELECT * INTO TABLE gtd_sapsunat02
FROM ztsapsunat02.
ENDIF.

ENDFORM. " GET_TIPDOCSUNAT

*&---------------------------------------------------------------------*
*& Form descarga_electronico
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM descarga_electronico.

DATA: BEGIN OF archivo_sunat OCCURS 0,


linea TYPE char1024,
END OF archivo_sunat.

DATA: gs_reporte TYPE zwlibro0308.

DATA: nomb_archivo TYPE string.

DATA: l_periodo TYPE char8,


l_period1 TYPE char8,
l_period2 TYPE bldat,
l_codigop TYPE char12,
l_correla TYPE char4,
l_codiden TYPE char1,
l_dociden TYPE char15,
l_nombres TYPE char100,
l_fechaem TYPE char10,
l_montocu TYPE char14,
l_estadop TYPE char2,
l_codtit TYPE char2,
l_cantit TYPE char12,
l_costit TYPE char15,
l_protit TYPE char15.

DATA: ti_t001z TYPE STANDARD TABLE OF t001z,


wa_t001z TYPE t001z.

* Obtenemos la sociedad
SELECT * FROM t001z INTO TABLE ti_t001z
WHERE bukrs = p_bukrs.

CONCATENATE p_gjahr '1231' INTO l_period2.

CONCATENATE p_gjahr '12' '31' INTO l_period1.

LOOP AT gtd_libro0308 INTO gs_reporte.

CLEAR: l_codigop, l_correla, l_codiden, l_dociden, l_nombres,


l_fechaem, l_montocu, l_periodo.

* 1.- Periodo
l_periodo = gs_reporte-bldat(8).

* 2.- C�digo �nico de la Operaci�n


l_codigop = gs_reporte-belnr.

* 3.- Nro correlativo


CONCATENATE 'M' gs_reporte-buzei INTO l_correla.

* 4.- Tipo documento Identidad


l_codiden = gs_reporte-cdosu.

* 5.- N�mero documento identidad


l_dociden = gs_reporte-stcd1.

* 6.- Apellidos Nombres o raz�n Social


* Inserted by @002 {
IF gs_reporte-saknr IN gr_ctasval[].
l_nombres = 'VARIOS'.
ELSE.
* }
l_nombres = gs_reporte-name1.
* Inserted by @002 {
ENDIF.
* }
*
*
* 7.- Codigo de titulo
l_codtit = gs_reporte-title.
*
* 8.- Monto de cada cuenta
IF gs_reporte-dmbtr < 0.
gs_reporte-dmbtr = gs_reporte-dmbtr * -1.
l_montocu = gs_reporte-dmbtr.
CONDENSE l_montocu NO-GAPS.
CONCATENATE '-' l_montocu INTO l_montocu.
ELSE.
l_montocu = gs_reporte-dmbtr.
ENDIF.

IF gs_reporte-dmbtr EQ 0.
CONTINUE.
ENDIF.

* 9.- Cantidad de titulos


l_cantit = gs_reporte-qanty.

* 10.- Costo total de titulos


l_costit = gs_reporte-cobrt.

* 11.- Provision total de titulos


l_protit = gs_reporte-prbrt.

* 12.- Estado Operaci�n


IF gs_reporte-bldat LT l_period2.
l_estadop = '9|'.
ELSE.
l_estadop = '1|'.
ENDIF.

* ARMAR ARCHIVO
CLEAR: archivo_sunat-linea.
CONCATENATE l_periodo
l_codigop
l_correla
l_codiden
l_dociden
l_nombres
l_codtit
l_montocu
l_cantit
l_costit
l_protit
l_estadop
INTO archivo_sunat-linea SEPARATED BY '|'.
APPEND archivo_sunat.

ENDLOOP.

* NRO DE RUC
CLEAR: wa_t001z.
READ TABLE ti_t001z INTO wa_t001z WITH KEY party = 'TAXNR'.

* ARMAR NOMBRE DE ARCHIVO


CONCATENATE p_ruta
'\LE'
wa_t001z-paval+00(11)
l_period1
'030800'
'01'
'1'
'1'
'1'
'1'
'.TXT'
INTO nomb_archivo.

* DESCARGAR ARCHIVO
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
filename = nomb_archivo
TABLES
data_tab = archivo_sunat
EXCEPTIONS
file_write_error = 1
no_batch = 2
gui_refuse_filetransfer = 3
invalid_type = 4
no_authority = 5
unknown_error = 6.

MESSAGE 'Se descarg� el formato SUNAT...' TYPE 'S'.

ENDFORM. "descarga_electronico
*&---------------------------------------------------------------------*
*& Form GET_COD_DEUDOR
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* <--P_LTD_PITS text
*----------------------------------------------------------------------*
FORM get_cod_deudor CHANGING lt_pits TYPE zttpits.

TYPES:BEGIN OF gty_coddeu,
bukrs TYPE bukrs,
gjahr TYPE gjahr,
belnr TYPE belnr_d,
dmbtr TYPE dmbtr,
sgtxt TYPE sgtxt,
kunnr TYPE kunnr,
END OF gty_coddeu.

DATA: lt_coddeu TYPE STANDARD TABLE OF gty_coddeu.

FIELD-SYMBOLS: <fs_pits> LIKE LINE OF lt_pits.

DATA: lwa_coddeu LIKE LINE OF lt_coddeu.


DATA: lv_coddeu TYPE string.
"
SELECT bukrs gjahr belnr dmbtr sgtxt
kunnr
INTO TABLE lt_coddeu
FROM bsid
FOR ALL ENTRIES IN lt_pits
WHERE bukrs EQ lt_pits-bukrs
AND gjahr EQ lt_pits-gjahr
AND belnr EQ lt_pits-belnr
AND dmbtr EQ lt_pits-dmbtr
AND sgtxt EQ lt_pits-sgtxt.

SELECT bukrs gjahr belnr dmbtr sgtxt


kunnr
APPENDING TABLE lt_coddeu
FROM bsad
FOR ALL ENTRIES IN lt_pits
WHERE bukrs EQ lt_pits-bukrs
AND gjahr EQ lt_pits-gjahr
AND belnr EQ lt_pits-belnr
AND dmbtr EQ lt_pits-dmbtr
AND sgtxt EQ lt_pits-sgtxt.

SORT lt_coddeu BY bukrs gjahr belnr dmbtr sgtxt.


LOOP AT lt_pits ASSIGNING <fs_pits>.

READ TABLE lt_coddeu INTO lwa_coddeu WITH KEY bukrs = <fs_pits>-bukrs


gjahr = <fs_pits>-gjahr
belnr = <fs_pits>-belnr
dmbtr = <fs_pits>-dmbtr
sgtxt = <fs_pits>-sgtxt.
IF sy-subrc EQ 0.
<fs_pits>-accnt = lwa_coddeu-kunnr.
ELSE.
CONDENSE <fs_pits>-bktxt.
CLEAR lv_coddeu.
lv_coddeu = <fs_pits>-bktxt.
CHECK lv_coddeu CO '0123456789'.
<fs_pits>-accnt = lv_coddeu.
ENDIF.
ENDLOOP.
ENDFORM. " GET_COD_DEUDOR

*&---------------------------------------------------------------------*
*& Form GET_COD_ACREEDOR
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* <--P_LTD_PATS text
*----------------------------------------------------------------------*
FORM get_cod_acreedor CHANGING lt_pits TYPE zttpits.

TYPES:BEGIN OF gty_codac,
bukrs TYPE bukrs,
gjahr TYPE gjahr,
belnr TYPE belnr_d,
dmbtr TYPE dmbtr,
sgtxt TYPE sgtxt,
lifnr TYPE lifnr,
END OF gty_codac.

DATA lv_cod TYPE string.

DATA: lt_codac TYPE STANDARD TABLE OF gty_codac.

FIELD-SYMBOLS: <fs_pits> LIKE LINE OF lt_pits.

DATA: lwa_codac LIKE LINE OF lt_codac.

"
SELECT bukrs gjahr belnr dmbtr sgtxt
lifnr
INTO TABLE lt_codac
FROM bsik
FOR ALL ENTRIES IN lt_pits
WHERE bukrs EQ lt_pits-bukrs
AND gjahr EQ lt_pits-gjahr
AND belnr EQ lt_pits-belnr
AND dmbtr EQ lt_pits-dmbtr
AND sgtxt EQ lt_pits-sgtxt.

SELECT bukrs gjahr belnr dmbtr sgtxt


lifnr
APPENDING TABLE lt_codac
FROM bsak
FOR ALL ENTRIES IN lt_pits
WHERE bukrs EQ lt_pits-bukrs
AND gjahr EQ lt_pits-gjahr
AND belnr EQ lt_pits-belnr
AND dmbtr EQ lt_pits-dmbtr
AND sgtxt EQ lt_pits-sgtxt.

SORT lt_codac BY bukrs gjahr belnr dmbtr sgtxt.


LOOP AT lt_pits ASSIGNING <fs_pits>.

READ TABLE lt_codac INTO lwa_codac WITH KEY bukrs = <fs_pits>-bukrs


gjahr = <fs_pits>-gjahr
belnr = <fs_pits>-belnr
dmbtr = <fs_pits>-dmbtr
sgtxt = <fs_pits>-sgtxt.
IF sy-subrc EQ 0.
<fs_pits>-accnt = lwa_codac-lifnr.
ELSE.
CONDENSE <fs_pits>-bktxt.
CLEAR lv_cod.
lv_cod = <fs_pits>-bktxt.
CHECK lv_cod CO '0123456789'.
<fs_pits>-accnt = lv_cod.
* ENDIF.
ENDIF.
ENDLOOP.

ENDFORM. " GET_COD_ACREEDOR

También podría gustarte