You are on page 1of 34

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

*& Include ZPEFI_LIB_DIARIO_2_F01


*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form OBTENER_DATOS_BKPF
*&---------------------------------------------------------------------*
*& @PP01 26.05.2014 ACTUALIZACION VERSION 4.0 SUNAT
*&---------------------------------------------------------------------*
FORM obtener_datos_bkpf .

DATA: lr_budat TYPE RANGE OF budat,


lwa_budat LIKE LINE OF lr_budat,
ls_fecini TYPE dats.

CLEAR: lwa_budat.
lwa_budat-sign = 'I'.
lwa_budat-option = 'BT'.
CONCATENATE p_gjahr s_monat-low '01' INTO lwa_budat-low.

CLEAR: ls_fecini.

IF s_monat-high IS INITIAL.
ls_fecini = lwa_budat-low.
ELSE.
CONCATENATE p_gjahr s_monat-high '01' INTO ls_fecini.
ENDIF.

CALL FUNCTION 'LAST_DAY_OF_MONTHS'


EXPORTING
day_in = ls_fecini
IMPORTING
last_day_of_month = lwa_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.

APPEND lwa_budat TO lr_budat.


APPEND lwa_budat TO gr_budat. "Crystalis 130911

SELECT belnr gjahr budat bktxt


xblnr "+@PE003
INTO TABLE gth_bkpf
FROM bkpf
WHERE bukrs EQ p_bukrs
AND gjahr EQ p_gjahr
AND belnr IN s_belnr
AND budat IN lr_budat
AND bstat EQ space.

ENDFORM. " OBTENER_DATOS_BKPF

*&---------------------------------------------------------------------*
*& Form obtener_movimientos
*&---------------------------------------------------------------------*
FORM obtener_movimientos .
DATA: lt_bkpf_tmp TYPE STANDARD TABLE OF gty_bkpf, "+@PE002
lt_bseg_tmp TYPE STANDARD TABLE OF gty_detalle. "+@PE002

IF p_clus EQ 'X'.

SELECT belnr gjahr buzei sgtxt hkont shkzg dmbtr


INTO TABLE gtd_detalle
FROM bseg
FOR ALL ENTRIES IN gth_bkpf
WHERE bukrs EQ p_bukrs
AND gjahr EQ gth_bkpf-gjahr
AND belnr EQ gth_bkpf-belnr
AND hkont IN s_cuent.
ELSEIF p_trans EQ 'X'.

REFRESH: gtd_detalle_aux.

SELECT belnr gjahr buzei sgtxt hkont shkzg dmbtr


INTO TABLE gtd_detalle_aux
FROM bsis
FOR ALL ENTRIES IN gth_bkpf
WHERE bukrs EQ p_bukrs
AND gjahr EQ gth_bkpf-gjahr
AND belnr EQ gth_bkpf-belnr
AND hkont IN s_cuent.

SELECT belnr gjahr buzei sgtxt hkont shkzg dmbtr


APPENDING TABLE gtd_detalle_aux
FROM bsas
FOR ALL ENTRIES IN gth_bkpf
WHERE bukrs EQ p_bukrs
AND gjahr EQ gth_bkpf-gjahr
AND belnr EQ gth_bkpf-belnr
AND hkont IN s_cuent.

SELECT belnr gjahr buzei sgtxt hkont shkzg dmbtr


APPENDING TABLE gtd_detalle_aux
FROM bsak
FOR ALL ENTRIES IN gth_bkpf
WHERE bukrs EQ p_bukrs
AND gjahr EQ gth_bkpf-gjahr
AND belnr EQ gth_bkpf-belnr
AND hkont IN s_cuent.

SELECT belnr gjahr buzei sgtxt hkont shkzg dmbtr


APPENDING TABLE gtd_detalle_aux
FROM bsik
FOR ALL ENTRIES IN gth_bkpf
WHERE bukrs EQ p_bukrs
AND gjahr EQ gth_bkpf-gjahr
AND belnr EQ gth_bkpf-belnr
AND hkont IN s_cuent.

SELECT belnr gjahr buzei sgtxt hkont shkzg dmbtr


APPENDING TABLE gtd_detalle_aux
FROM bsid
FOR ALL ENTRIES IN gth_bkpf
WHERE bukrs EQ p_bukrs
AND gjahr EQ gth_bkpf-gjahr
AND belnr EQ gth_bkpf-belnr
AND hkont IN s_cuent.

SELECT belnr gjahr buzei sgtxt hkont shkzg dmbtr


APPENDING TABLE gtd_detalle_aux
FROM bsad
FOR ALL ENTRIES IN gth_bkpf
WHERE bukrs EQ p_bukrs
AND gjahr EQ gth_bkpf-gjahr
AND belnr EQ gth_bkpf-belnr
AND hkont IN s_cuent.

gtd_detalle = gtd_detalle_aux.

* +Crystalis 130911
ELSEIF p_ngl EQ 'X'.

REFRESH gth_bkpf.
SELECT belnr gjahr budat bktxt
xblnr "+@PE003
INTO TABLE gth_bkpf
FROM bkpf
WHERE bukrs EQ p_bukrs
AND belnr IN s_belnr
AND gjahr EQ p_gjahr
AND budat IN gr_budat
AND monat IN s_monat
AND bstat EQ space.

CHECK gth_bkpf IS NOT INITIAL.

* SELECT docnr ryear buzei hsl drcrk racct budat


* INTO TABLE gtd_detalle_flag
* FROM FAGLFLEXA
* FOR ALL ENTRIES IN gth_bkpf
* WHERE rbukrs EQ p_bukrs
* AND docnr EQ gth_bkpf-belnr
* AND ryear EQ p_gjahr
* AND budat IN gr_budat
* AND racct IN s_cuent
* AND bstat EQ space.

*{@PE002
* SELECT docnr ryear buzei hsl drcrk racct budat docln
* INTO TABLE gtd_detalle_flag
* FROM faglflexa
* WHERE rbukrs EQ p_bukrs
* AND docnr IN s_belnr
* AND ryear EQ p_gjahr
* AND poper IN s_monat
* AND budat IN gr_budat
* AND racct IN s_cuent
* AND rldnr EQ p_rldnr
* AND bstat EQ space.
*
* CHECK gtd_detalle_flag IS NOT INITIAL.
*
* SORT gtd_detalle_flag BY docnr ryear buzei.
*
* SELECT belnr gjahr buzei sgtxt hkont shkzg dmbtr
* INTO TABLE gth_detalle
* FROM bseg
* FOR ALL ENTRIES IN gtd_detalle_flag
* WHERE bukrs EQ p_bukrs
* AND belnr EQ gtd_detalle_flag-docnr
* AND gjahr EQ gtd_detalle_flag-ryear
* AND buzei EQ gtd_detalle_flag-buzei.
** End Crystalis 130911

lt_bkpf_tmp[] = gth_bkpf[].

SORT lt_bkpf_tmp BY belnr.

SELECT belnr gjahr buzei sgtxt hkont shkzg dmbtr INTO TABLE gth_detalle
FROM bseg FOR ALL ENTRIES IN lt_bkpf_tmp
WHERE bukrs = p_bukrs
AND belnr = lt_bkpf_tmp-belnr
AND gjahr = p_gjahr.

CHECK gth_detalle[] IS NOT INITIAL.

lt_bseg_tmp[] = gth_detalle[].

SORT lt_bseg_tmp BY belnr buzei.

SELECT docnr ryear buzei hsl ksl drcrk racct budat docln
INTO TABLE gtd_detalle_flag
FROM faglflexa
FOR ALL ENTRIES IN lt_bseg_tmp
WHERE ryear = p_gjahr
AND docnr = lt_bseg_tmp-belnr
AND rldnr = p_rldnr
AND rbukrs = p_bukrs
AND poper IN s_monat
AND budat IN gr_budat
AND racct IN s_cuent
AND rldnr = p_rldnr
AND bstat = space
AND buzei = lt_bseg_tmp-buzei.
*}@PE002

ENDIF.

*{@PE003
CHECK gth_bkpf IS NOT INITIAL.

REFRESH: gtd_bset, gtd_bsim.

SELECT bukrs belnr gjahr buzei


INTO CORRESPONDING FIELDS OF TABLE gtd_bset
FROM bset
FOR ALL ENTRIES IN gth_bkpf
WHERE bukrs = p_bukrs
AND belnr = gth_bkpf-belnr
AND gjahr = gth_bkpf-gjahr.
SELECT matnr bwkey bwtar belnr gjahr buzei
INTO TABLE gtd_bsim
FROM bsim
FOR ALL ENTRIES IN gth_bkpf
WHERE belnr = gth_bkpf-belnr
AND gjahr = gth_bkpf-gjahr.
*}@PE003

ENDFORM. " obtener_movimientos

*&---------------------------------------------------------------------*
*& Form GENERAR_REPORTE
*&---------------------------------------------------------------------*
FORM generar_reporte .

FIELD-SYMBOLS: <fs_bkpf> TYPE gty_bkpf,


<fs_detalle> TYPE gty_detalle,
<fs_skat> TYPE gty_skat,
<fs_skb1> TYPE gty_skb1.
DATA: ltd_faglflext TYPE STANDARD TABLE OF gty_faglflext,
ltd_salini TYPE STANDARD TABLE OF gty_salini,
ltd_glt0 TYPE STANDARD TABLE OF gty_glt0,
lwa_salini TYPE gty_salini,
ls_importe(30) TYPE c,
ln_cont(2) TYPE n,
li_cant TYPE i.
DATA: sidebex TYPE c LENGTH 15,
sihaberx TYPE c LENGTH 15.

FIELD-SYMBOLS: <fs_faglflext> TYPE gty_faglflext.


FIELD-SYMBOLS: <fs_importe> TYPE ANY.
FIELD-SYMBOLS: <fs_salini> TYPE gty_salini.

LOOP AT gtd_detalle ASSIGNING <fs_detalle>.


CLEAR gwa_reporte.

gwa_reporte-belnr = <fs_detalle>-belnr.
gwa_reporte-buzei = <fs_detalle>-buzei. "OGUTIERREZ 20/03
READ TABLE gth_bkpf ASSIGNING <fs_bkpf> WITH TABLE KEY belnr = <fs_detalle>-
belnr
gjahr = <fs_detalle>-
gjahr.
IF sy-subrc EQ 0.
gwa_reporte-budat = <fs_bkpf>-budat.

IF NOT <fs_detalle>-sgtxt IS INITIAL.


gwa_reporte-glosa = <fs_detalle>-sgtxt.
ELSE.
gwa_reporte-glosa = <fs_bkpf>-bktxt.
ENDIF.
gwa_reporte-xblnr = <fs_bkpf>-xblnr. "+@PE003
ENDIF.

IF <fs_detalle>-shkzg EQ 'S'.
gwa_reporte-debe = <fs_detalle>-dmbtr.
ELSE.
gwa_reporte-haber = <fs_detalle>-dmbtr.
ENDIF.
IF p_alter EQ 'X'.
READ TABLE gth_skb1 ASSIGNING <fs_skb1>
WITH TABLE KEY saknr = <fs_detalle>-hkont.
IF sy-subrc EQ 0.
gwa_reporte-hkont = <fs_skb1>-altkt.

READ TABLE gth_skat ASSIGNING <fs_skat>


WITH TABLE KEY saknr = <fs_skb1>-altkt.
IF sy-subrc EQ 0.
gwa_reporte-txt50 = <fs_skat>-txt50.
ENDIF.
ENDIF.

ELSE.

gwa_reporte-hkont = <fs_detalle>-hkont.

READ TABLE gth_skat ASSIGNING <fs_skat>


WITH TABLE KEY saknr = <fs_detalle>-hkont.
IF sy-subrc EQ 0.
gwa_reporte-txt50 = <fs_skat>-txt50.
ENDIF.

ENDIF.
gwa_reporte-gjahr = <fs_detalle>-gjahr.
APPEND gwa_reporte TO gtd_reporte.

ENDLOOP.

"Saldos Iniciales
SELECT ryear objnr00 objnr01 objnr02 objnr03 objnr04 objnr05
objnr06 objnr07 objnr08 drcrk rpmax rbukrs racct hslvt
hsl01 hsl02 hsl03 hsl04 hsl05 hsl06 hsl07 hsl08 hsl09
hsl10 hsl11 hsl12
INTO TABLE ltd_faglflext
FROM faglflext
WHERE rbukrs EQ p_bukrs
AND rldnr EQ p_rldnr
AND ryear EQ p_gjahr
AND rrcty EQ '0'
AND racct IN s_cuent.

IF sy-subrc EQ 0.
li_cant = s_monat-low - 1.

LOOP AT ltd_faglflext ASSIGNING <fs_faglflext>.


CLEAR: lwa_salini.
lwa_salini-bukrs = <fs_faglflext>-rbukrs.
lwa_salini-drcrk = <fs_faglflext>-drcrk.
lwa_salini-racct = <fs_faglflext>-racct.
ln_cont = 01.
lwa_salini-monto = <fs_faglflext>-hslvt.

DO li_cant TIMES.
CONCATENATE '<fs_faglflext>-HSL' ln_cont INTO ls_importe.
ASSIGN (ls_importe) TO <fs_importe>.
ADD 1 TO ln_cont.
lwa_salini-monto = lwa_salini-monto + <fs_importe>.
ENDDO.
COLLECT lwa_salini INTO ltd_salini.
ENDLOOP.

CLEAR : w_montoiha, w_montoide.


IF ltd_salini IS NOT INITIAL.
LOOP AT ltd_salini ASSIGNING <fs_salini>.
IF <fs_salini>-drcrk = 'H'.
w_montoiha = w_montoiha + <fs_salini>-monto.

ELSEIF <fs_salini>-drcrk = 'S'.


w_montoide = w_montoide + <fs_salini>-monto.
ENDIF.
ENDLOOP.
w_montoiha = ABS( w_montoiha ).
w_montoide = ABS( w_montoide ).
ENDIF.

IF p_aper EQ 'X' AND s_monat-low EQ '01' .


PERFORM obtener_asientos_ac TABLES ltd_faglflext
USING 01.
ENDIF.

IF p_aper EQ 'X' AND ( s_monat-low EQ '12' OR s_monat-high EQ '12' ).


PERFORM obtener_asientos_ac TABLES ltd_faglflext
USING 12.
ENDIF.
ENDIF.

ENDFORM. " GENERAR_REPORTE

*&---------------------------------------------------------------------*
*& Form OBTENER_DATOS_ADICIONALES
*&---------------------------------------------------------------------*
FORM obtener_datos_adicionales .

DATA: ls_ktopl TYPE ktopl,


ls_ktop2 TYPE ktop2,
ltd_skb1 TYPE STANDARD TABLE OF gty_skb1.

IF s_monat-high IS INITIAL.
WRITE s_monat-low TO gs_fecha.
ELSE.
CONCATENATE s_monat-low 'AL' s_monat-high
INTO gs_fecha SEPARATED BY space.
ENDIF.

SELECT SINGLE paval


INTO gs_ruc
FROM t001z
WHERE bukrs = p_bukrs AND
party = 'ZRUC'.

SELECT SINGLE paval


INTO gs_butxt
FROM t001z
WHERE bukrs = p_bukrs
AND party = 'ZRSOCI'.

SELECT SINGLE ktopl ktop2


INTO (ls_ktopl, ls_ktop2)
FROM t001
WHERE bukrs EQ p_bukrs.

REFRESH: gtd_detalle_aux.
gtd_detalle_aux = gtd_detalle.
SORT gtd_detalle_aux BY hkont.
DELETE ADJACENT DUPLICATES FROM gtd_detalle_aux COMPARING hkont.

CHECK NOT gtd_detalle_aux IS INITIAL.

IF p_alter NE 'X'.

SELECT saknr txt50


INTO TABLE gth_skat
FROM skat
FOR ALL ENTRIES IN gtd_detalle_aux
WHERE spras EQ sy-langu
AND ktopl EQ ls_ktopl
AND saknr EQ gtd_detalle_aux-hkont.
ELSE.

SELECT saknr altkt


INTO TABLE gth_skb1
FROM skb1
FOR ALL ENTRIES IN gtd_detalle_aux
WHERE bukrs EQ p_bukrs
AND saknr EQ gtd_detalle_aux-hkont.

ltd_skb1 = gth_skb1.
SORT ltd_skb1 BY altkt.
DELETE ADJACENT DUPLICATES FROM ltd_skb1 COMPARING altkt.

CHECK NOT ltd_skb1 IS INITIAL.

SELECT saknr txt50


INTO TABLE gth_skat
FROM skat
FOR ALL ENTRIES IN ltd_skb1
WHERE spras EQ sy-langu
AND ktopl EQ ls_ktop2
AND saknr EQ ltd_skb1-altkt.
ENDIF.

ENDFORM. " OBTENER_DATOS_ADICIONALES

*&---------------------------------------------------------------------*
*& Form MOSTRAR_PANTALLA
*&---------------------------------------------------------------------*
FORM mostrar_pantalla.
gs_van_debe = w_montoide.
gs_van_haber = w_montoiha.

LOOP AT gtd_reporte INTO gwa_reporte.

WRITE: /1 '|',
AT 2 gwa_reporte-belnr,
AT 20 '|',
AT 21 gwa_reporte-budat,
AT 31 '|',
AT 32 gwa_reporte-glosa,
AT 82 '|',
AT 83 gwa_reporte-hkont,
AT 94 '|',
AT 95 gwa_reporte-txt50,
AT 146 '|',
AT 153 gwa_reporte-debe,
AT 169 '|',
AT 174 gwa_reporte-haber,
AT 190 '|'.

HIDE: gwa_reporte-gjahr.

gs_van_debe = gs_van_debe + gwa_reporte-debe.


gs_van_haber = gs_van_haber + gwa_reporte-haber.

ENDLOOP.
WRITE: gs_van_debe TO gs_montod CURRENCY 'PEN'.
WRITE: gs_van_haber TO gs_montoh CURRENCY 'PEN'.
WRITE: /1 sy-uline(190),
/79 'TOTAL FINAL',
146 '|',
148 gs_montod,
169 '|',
170 gs_montoh,
190 '|'.
WRITE: /146 sy-uline(45).

ENDFORM. " MOSTRAR_PANTALLA

*&---------------------------------------------------------------------*
*& Form alv_initialization
*&---------------------------------------------------------------------*
FORM alv_initialization .

CALL FUNCTION 'REUSE_ALV_VARIANT_DEFAULT_GET'


EXPORTING
i_save = 'A'
CHANGING
cs_variant = gwa_variantx
EXCEPTIONS
wrong_input = 1
not_found = 2
program_error = 3
OTHERS = 4.

IF sy-subrc NE 0.
CLEAR gwa_variantx.
ENDIF.

ENDFORM. " alv_initialization

*&---------------------------------------------------------------------*
*& Form eventtab_build
*&---------------------------------------------------------------------*
FORM eventtab_build USING pi_events TYPE slis_t_event.

DATA: ls_event TYPE slis_alv_event.

DEFINE define_alv_event.
read table pi_events
with key name = &1
into ls_event.

if sy-subrc = 0.
move &1 to ls_event-form.
modify pi_events from ls_event index sy-tabix.
endif.
END-OF-DEFINITION.

CALL FUNCTION 'REUSE_ALV_EVENTS_GET'


EXPORTING
i_list_type = 0
IMPORTING
et_events = pi_events.

define_alv_event:
slis_ev_top_of_page.
ENDFORM. " eventtab_build

*---------------------------------------------------------------------*
* Form CAMBIA_NUMERO_PAGINA
*---------------------------------------------------------------------*
FORM cambia_numero_pagina.
DO gs_nropag TIMES.
READ LINE 5 OF PAGE sy-index.
REPLACE '**' WITH gs_nropag INTO sy-lisel.
MODIFY LINE 5 OF PAGE sy-index.
ENDDO.
ENDFORM. " CAMBIA_NUMERO PAGINA

*&---------------------------------------------------------------------*
*& Form LAYOUT_BUILD
*&---------------------------------------------------------------------*
FORM layout_build .
gwa_layout-zebra = 'X'.
ENDFORM. " LAYOUT_BUILD

*&---------------------------------------------------------------------*
*& Form F_FORMATO_PAGE
*&---------------------------------------------------------------------*
FORM f_formato_page CHANGING gt_top_of_page
TYPE slis_t_listheader.
DATA: gs_line TYPE slis_listheader.
DATA: ls_fecim TYPE c LENGTH 10.
CLEAR gs_line.
gs_line-typ = 'A'.
CONCATENATE 'FORMATO 5.1: "LIBRO DIARIO"' '' INTO gs_line-info SEPARATED BY
space.
APPEND gs_line TO gt_top_of_page.

CLEAR gs_line.
gs_line-typ = 'A'.
CONCATENATE 'PERIODO :'gs_fecha INTO gs_line-info SEPARATED BY space.
APPEND gs_line TO gt_top_of_page.

CLEAR gs_line.
gs_line-typ = 'A'.
CONCATENATE 'EJERCICIO :' p_gjahr INTO gs_line-info SEPARATED BY space.
APPEND gs_line TO gt_top_of_page.

CONCATENATE p_datum+6(2) p_datum+4(2) p_datum+0(4) INTO ls_fecim SEPARATED BY


'/'.
CONDENSE ls_fecim.

CLEAR gs_line.
gs_line-typ = 'A'.
CONCATENATE 'FECHA DE IMPRESI�N :' ls_fecim INTO gs_line-info SEPARATED BY
space.
APPEND gs_line TO gt_top_of_page.

CLEAR gs_line.
gs_line-typ = 'A'.
CONCATENATE 'RUC :' gs_ruc INTO gs_line-info SEPARATED BY space.
"OGUTIERREZ 20/03
APPEND gs_line TO gt_top_of_page.

CLEAR gs_line.
gs_line-typ = 'A'.
CONCATENATE 'RAZON SOCIAL :'gs_butxt INTO gs_line-info SEPARATED BY space.
APPEND gs_line TO gt_top_of_page.

ENDFORM. "F_FORMATO_PAGE

*&---------------------------------------------------------------------*
*& Form F_FORMATEAR_EVENTOS_ALV
*&---------------------------------------------------------------------*
FORM f_formatear_eventos_alv USING p_events
TYPE slis_t_event.
DATA: l_events TYPE slis_alv_event.
CLEAR l_events.
l_events-name = 'TOP_OF_PAGE'.
l_events-form = 'TOP_OF_PAGE'.
APPEND l_events TO p_events.
ENDFORM. "F_FORMATEAR_EVENTOS_ALV

*&---------------------------------------------------------------------*
*& Form TOP_OF_PAGE
*&---------------------------------------------------------------------*
FORM top_of_page.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = gt_list_top_of_page.
ENDFORM. "TOP_OF_PAGE

*&---------------------------------------------------------------------*
*& Form CREAR_CfATALOGO
*&---------------------------------------------------------------------*
FORM crear_catalogo .

DATA: li_pos TYPE i,


lwa_fieldcat TYPE slis_fieldcat_alv.
CLEAR li_pos.

* Documento
ADD 1 TO li_pos.
CLEAR lwa_fieldcat.
PERFORM fill_cat USING li_pos 'GTD_REPORTE' 'BELNR' text-a01
text-a01 text-a01 'L' 10 ' ' ' ' 'CHAR' 'X' ' '
CHANGING lwa_fieldcat.
APPEND lwa_fieldcat TO gtd_fieldcat.

* Fecha Operacion
ADD 1 TO li_pos.
CLEAR lwa_fieldcat.
PERFORM fill_cat USING li_pos 'GTD_REPORTE' 'BUDAT' text-a02
text-a02 text-a02 'L' 10 ' ' ' ' 'DATS' ' ' ' '
CHANGING lwa_fieldcat.
APPEND lwa_fieldcat TO gtd_fieldcat.

* Glosa
ADD 1 TO li_pos.
CLEAR lwa_fieldcat.
PERFORM fill_cat USING li_pos 'GTD_REPORTE' 'GLOSA' text-a03
text-a03 text-a03 'L' 35 ' ' ' ' 'CHAR' ' ' ' '
CHANGING lwa_fieldcat.
APPEND lwa_fieldcat TO gtd_fieldcat.

* Cuenta
ADD 1 TO li_pos.
CLEAR lwa_fieldcat.
PERFORM fill_cat USING li_pos 'GTD_REPORTE' 'HKONT' text-a04
text-a04 text-a04 'L' 10 ' ' ' ' 'CHAR' ' ' ' '
CHANGING lwa_fieldcat.
APPEND lwa_fieldcat TO gtd_fieldcat.

* Descripcion Cuenta
ADD 1 TO li_pos.
CLEAR lwa_fieldcat.
PERFORM fill_cat USING li_pos 'GTD_REPORTE' 'TXT50' text-a06
text-a05 text-a05 'L' 30 ' ' ' ' 'CHAR' ' ' ' '
CHANGING lwa_fieldcat.
APPEND lwa_fieldcat TO gtd_fieldcat.

* Debe
ADD 1 TO li_pos.
CLEAR lwa_fieldcat.
PERFORM fill_cat USING li_pos 'GTD_REPORTE' 'DEBE' text-a07
text-a07 text-a07 'R' 30 ' ' ' ' 'CURR' ' ' ' '
CHANGING lwa_fieldcat.
APPEND lwa_fieldcat TO gtd_fieldcat.

* Haber
ADD 1 TO li_pos.
CLEAR lwa_fieldcat.
PERFORM fill_cat USING li_pos 'GTD_REPORTE' 'HABER' text-a08
text-a08 text-a08 'R' 30 ' ' ' ' 'CURR' ' ' ' '
CHANGING lwa_fieldcat.
APPEND lwa_fieldcat TO gtd_fieldcat.

ENDFORM. "crear_catalogo
*&---------------------------------------------------------------------*
*& Form fill_cat
*&---------------------------------------------------------------------*
FORM fill_cat USING pi_col_pos TYPE slis_fieldcat_alv-col_pos
pi_tabname TYPE slis_fieldcat_alv-tabname
pi_fieldname TYPE slis_fieldcat_alv-fieldname
pi_seltext_l TYPE slis_fieldcat_alv-seltext_l
pi_seltext_m TYPE slis_fieldcat_alv-seltext_m
pi_seltext_s TYPE slis_fieldcat_alv-seltext_s
pi_just TYPE slis_fieldcat_alv-just
pi_outputlen TYPE slis_fieldcat_alv-outputlen
pi_no_out TYPE slis_fieldcat_alv-no_out
pi_dosum TYPE lvc_dosum
pi_datatype TYPE slis_fieldcat_alv-datatype
pi_hotspot TYPE lvc_s_fcat-hotspot
pi_edit TYPE slis_fieldcat_alv-edit
CHANGING po_fieldcat TYPE slis_fieldcat_alv.

CLEAR po_fieldcat.

po_fieldcat-col_pos = pi_col_pos.
po_fieldcat-tabname = pi_tabname.
po_fieldcat-fieldname = pi_fieldname.
po_fieldcat-seltext_l = pi_seltext_l.
po_fieldcat-seltext_m = pi_seltext_m.
po_fieldcat-seltext_s = pi_seltext_s.
po_fieldcat-outputlen = pi_outputlen.
po_fieldcat-just = pi_just.
po_fieldcat-no_out = pi_no_out.
po_fieldcat-do_sum = pi_dosum.
po_fieldcat-datatype = pi_datatype.
po_fieldcat-hotspot = pi_hotspot.
po_fieldcat-edit = pi_edit.

ENDFORM. "fill_cat

*&---------------------------------------------------------------------*
*& Form call_alv
*&---------------------------------------------------------------------*
FORM call_alv .

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'


EXPORTING
i_interface_check = ' '
i_callback_program = sy-repid
i_structure_name = 'GTD_REPORTE'
i_callback_pf_status_set = 'SET_STATUS'
i_callback_user_command = 'USER_COMMAND'
is_layout = gwa_layout
it_fieldcat = gtd_fieldcat[]
i_save = 'A'
it_events = i_events
i_grid_title = 'Libro Diario'
i_buffer_active = ' '
TABLES
t_outtab = gtd_reporte
EXCEPTIONS
program_error = 1
OTHERS = 2.

IF sy-subrc <> 0.
MESSAGE e301.
ENDIF.

ENDFORM. " call_alv

*&---------------------------------------------------------------------*
*& Form set_status
*&---------------------------------------------------------------------*
FORM set_status USING pi_extab TYPE slis_t_extab.
* DATA fcode_attrib_tab LIKE smp_dyntxt OCCURS 0 WITH HEADER LINE.

* CLEAR: fcode_attrib_tab, fcode_attrib_tab[].

* PERFORM dynamic_report_fcodes(rhteiln0) TABLES fcode_attrib_tab


* USING pi_extab ' ' ' '.
* APPEND INITIAL LINE OF pi_extab ASSIGNING FIELD-SYMBOLS(<fs_extab>).
* <fs_extab>-fcode = '&EB3'.

* SET PF-STATUS 'STANDARD_FULLSCREEN' EXCLUDING pi_extab OF PROGRAM 'SAPLKKBL'.

SET PF-STATUS 'MI_STATUS'.


ENDFORM. "set_status

TOP-OF-PAGE.
gs_nropag = sy-pagno.
CONCATENATE p_datum+6(2) p_datum+4(2) p_datum+0(4) INTO gs_fecim SEPARATED BY
'/'.
CONDENSE gs_fecim.

WRITE: /1 'FORMATO 5.1 : "LIBRO DIARIO"' CENTERED.


SKIP.
WRITE: /1 'PERIODO :', AT 17 gs_fecha, AT 160 'Fecha de Impresi�n:', AT 180
gs_fecim.
WRITE: /1 'EJERCICIO :', AT 17 p_gjahr.
WRITE: /1 'RUC :', AT 17 gs_ruc, AT 160 'Pag. : ', AT 167 gs_nropag, AT
175 'de', AT 178 '**'.
WRITE: /1 'RAZON SOCIAL :', AT 17 gs_butxt.
SKIP.

WRITE: /1 sy-uline(190).
WRITE: /1 '|',
AT 2 ' CODIGO UNICO',
AT 20 '|',
AT 21 ' FECHA',
AT 31 '|',
AT 32 ' GLOSA O',
AT 82 '|',
AT 83 ' CUENTA CONTABLE ASOCIADA A LA OPERACION',
AT 146 '|',
AT 147 ' MOVIMIENTO',
AT 190 '|'.
WRITE: /1 '|',
AT 2 ' DE LA OPERACION',
AT 20 '|',
AT 21 ' DE LA',
AT 31 '|',
AT 32 ' DESCRIPCION DE',
AT 82 '|',
AT 82 sy-uline(108),
AT 190 '|'.
WRITE: /1 '|',
AT 20 '|',
AT 21 'OPERACION',
AT 31 '|',
AT 32 ' LA OPERACION',
AT 82 '|',
AT 94 '|',
AT 146 '|',
AT 169 '|',
AT 190 '|'.
WRITE: /1 '|',
AT 20 '|',
AT 31 '|',
AT 82 '|',
AT 83 ' CODIGO',
AT 94 '|',
AT 95 ' DENOMINACION',
AT 146 '|',
AT 147 ' DEBE',
AT 169 '|',
AT 170 ' HABER',
AT 190 '|'.
WRITE: /1 '|',
AT 20 '|',
AT 31 '|',
AT 82 '|',
AT 94 '|',
AT 146 '|',
AT 169 '|',
AT 190 '|'.
WRITE: /1 sy-uline(190).

IF sy-pagno GT 1 AND sy-linno LT 43.


WRITE: gs_van_debe TO gs_montod CURRENCY 'PEN'.
WRITE: gs_van_haber TO gs_montoh CURRENCY 'PEN'.

WRITE: /79 'VIENEN',


AT 146 '|',
AT 148 gs_montod,
AT 169 '|',
AT 170 gs_montoh,
AT 190 '|'.
WRITE: /1 sy-uline(190).

ENDIF.

IF sy-pagno EQ 1.

IF p_aper EQ 'X' AND s_monat-low EQ '01'.


CLEAR: w_montoide, w_montoiha.
ENDIF.

WRITE: w_montoide TO gs_montoide CURRENCY 'PEN'.


WRITE: w_montoiha TO gs_montoiha CURRENCY 'PEN'.

WRITE: /79 'SALDO INICIAL',


AT 146 '|',
AT 148 gs_montoide,
AT 169 '|',
AT 170 gs_montoiha,
AT 190 '|'.
WRITE: /1 sy-uline(190).

ENDIF.

END-OF-PAGE.
RESERVE 3 LINES.
WRITE: gs_van_debe TO gs_montod CURRENCY 'PEN'.
WRITE: gs_van_haber TO gs_montoh CURRENCY 'PEN'.

WRITE: /1 sy-uline(190).
WRITE: /79 'VAN',
146 '|',
148 gs_montod,
169 '|',
170 gs_montoh,
190 '|'.
WRITE: /146 sy-uline(45).

AT LINE-SELECTION.
SET PARAMETER ID 'BLN' FIELD sy-lisel+1(10).
SET PARAMETER ID 'BUK' FIELD p_bukrs.
SET PARAMETER ID 'GJR' FIELD p_gjahr.

CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN.

*&---------------------------------------------------------------------*
*& Form PRINT
*&---------------------------------------------------------------------*
FORM print .

DATA: ls_f_name TYPE rs38l_fnam,


ls_datum TYPE char10,
ls_periodo TYPE char10.

DATA: w_output TYPE ssfcompop,


w_contrl TYPE ssfctrlop.

w_contrl-no_dialog = 'X'.
w_contrl-device = 'PRINTER'.
w_contrl-preview = ' '.
w_output-tdcover = ' '.
w_output-tddest = p_print1.
w_output-tdcopies = 1.
w_output-tdimmed = 'X'.

CONSTANTS: ls_form_name TYPE tdsfname VALUE 'ZPFI_LIBRO_DIARIO_2'.

ls_periodo = gs_fecha.

CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'


EXPORTING
formname = ls_form_name
IMPORTING
fm_name = ls_f_name
EXCEPTIONS
no_form = 1
no_function_module = 2
OTHERS = 3.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.

WRITE p_datum TO ls_datum USING EDIT MASK '__.__.____'.

WRITE: w_montoide TO gs_montoide CURRENCY 'PEN'.


WRITE: w_montoiha TO gs_montoiha CURRENCY 'PEN'.

CALL FUNCTION ls_f_name


EXPORTING
control_parameters = w_contrl
output_options = w_output
user_settings = ' '
pi_montoide = w_montoide
pi_montoiha = w_montoiha
pi_butxt = gs_butxt
pi_ruc = gs_ruc
pi_periodo = ls_periodo
pi_datum = ls_datum
pi_gjahr = p_gjahr
TABLES
t_reporte = gtd_reporte.
IF sy-subrc <> 0.
ENDIF.

ENDFORM. " PRINT

*---------------------------------------------------------------------*
* FORM user_command
*---------------------------------------------------------------------*
FORM user_command USING r_ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfield.

FIELD-SYMBOLS: <fs_reporte> TYPE gty_reporte.

CHECK rs_selfield-fieldname = 'BELNR'.


READ TABLE gtd_reporte INDEX rs_selfield-tabindex ASSIGNING <fs_reporte>.
IF sy-subrc = 0.
SET PARAMETER ID 'BLN' FIELD <fs_reporte>-belnr.
SET PARAMETER ID 'BUK' FIELD p_bukrs.
SET PARAMETER ID 'GJR' FIELD p_gjahr.
CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN.

ENDIF.

IF r_ucomm EQ 'ZFUN'
PERFORM actualiza_documento.
ELSEIF r_ucomm EQ 'ZFU2'.
PERFORM subrutina.
ENDIF.
ENDFORM. "user_command

*&---------------------------------------------------------------------*
*& Form tabla_EXCEL
*&---------------------------------------------------------------------*
FORM tabla_excel .

FIELD-SYMBOLS: <fs_reporte> TYPE gty_reporte.


DATA: lwa_tab_excel TYPE gty_tab_excel.
DATA: ls_periodo TYPE c LENGTH 10.

lwa_tab_excel-belnr = 'FORMATO 5.1:'.


lwa_tab_excel-budat = '"LIBRO DIARIO"'.
APPEND lwa_tab_excel TO gtd_tab_excel.

CLEAR lwa_tab_excel.
lwa_tab_excel-belnr = 'PERIODO:'.

IF s_monat-high IS NOT INITIAL.


CONCATENATE s_monat-low ' AL ' s_monat-high INTO ls_periodo
RESPECTING BLANKS.
ELSE.
ls_periodo = s_monat-low.
ENDIF.
WRITE ls_periodo TO lwa_tab_excel-budat RIGHT-JUSTIFIED.
APPEND lwa_tab_excel TO gtd_tab_excel.

CLEAR lwa_tab_excel.
lwa_tab_excel-belnr = 'EJERCICIO:'.
lwa_tab_excel-budat = p_gjahr.
APPEND lwa_tab_excel TO gtd_tab_excel.

CLEAR lwa_tab_excel.
lwa_tab_excel-belnr = 'RUC:'.
lwa_tab_excel-budat = gs_ruc.
APPEND lwa_tab_excel TO gtd_tab_excel.

CLEAR lwa_tab_excel.
lwa_tab_excel-belnr = 'RAZON SOCIAL:'.
lwa_tab_excel-budat = gs_butxt.
APPEND lwa_tab_excel TO gtd_tab_excel.

CLEAR lwa_tab_excel.
APPEND lwa_tab_excel TO gtd_tab_excel.

CLEAR lwa_tab_excel.
lwa_tab_excel-belnr = 'CODIGO UNICO'.
lwa_tab_excel-budat = 'FECHA'.
lwa_tab_excel-glosa = 'GLOSA O'.
lwa_tab_excel-txt50 = 'CUENTA CONTABLE ASOCIADA A LA OPERACION'.
lwa_tab_excel-debe = 'MOVIMIENTO'.
APPEND lwa_tab_excel TO gtd_tab_excel.

CLEAR lwa_tab_excel.
lwa_tab_excel-belnr = 'DE LA'.
lwa_tab_excel-budat = 'DE LA'.
lwa_tab_excel-glosa = 'DESCRIPCION DE'.
APPEND lwa_tab_excel TO gtd_tab_excel.
CLEAR lwa_tab_excel.
lwa_tab_excel-belnr = 'OPERACION'.
lwa_tab_excel-budat = 'OPERACION'.
lwa_tab_excel-glosa = 'LA OPERACION'.
lwa_tab_excel-hkont = 'CODIGO'.
lwa_tab_excel-txt50 = 'DENOMINACION'.
lwa_tab_excel-debe = 'DEBE'.
lwa_tab_excel-haber = 'HABER'.
APPEND lwa_tab_excel TO gtd_tab_excel.

LOOP AT gtd_reporte ASSIGNING <fs_reporte>.


lwa_tab_excel-belnr = <fs_reporte>-belnr.
lwa_tab_excel-budat = <fs_reporte>-budat.
lwa_tab_excel-glosa = <fs_reporte>-glosa.
lwa_tab_excel-hkont = <fs_reporte>-hkont.
lwa_tab_excel-txt50 = <fs_reporte>-txt50.
lwa_tab_excel-debe = <fs_reporte>-debe.
lwa_tab_excel-haber = <fs_reporte>-haber.
APPEND lwa_tab_excel TO gtd_tab_excel.
ENDLOOP.

CALL FUNCTION 'MS_EXCEL_OLE_STANDARD_DAT'


EXPORTING
file_name = p_file
create_pivot = 0
TABLES
data_tab = gtd_tab_excel
EXCEPTIONS
file_not_exist = 1
filename_expected = 2
communication_error = 3
ole_object_method_error = 4
ole_object_property_error = 5
invalid_pivot_fields = 6
download_problem = 7
OTHERS = 8.

ENDFORM. "tabla_EXCEL
*&---------------------------------------------------------------------*
*& Form OBTENER_DATOS_ADICIONALES_NGL
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM obtener_datos_adicionales_ngl .
DATA: ls_ktopl TYPE ktopl,
ls_ktop2 TYPE ktop2,
ltd_skb1 TYPE STANDARD TABLE OF gty_skb1.

IF s_monat-high IS INITIAL.
WRITE s_monat-low TO gs_fecha.
ELSE.
CONCATENATE s_monat-low 'AL' s_monat-high
INTO gs_fecha SEPARATED BY space.
ENDIF.
SELECT SINGLE paval
INTO gs_ruc
FROM t001z
WHERE bukrs = p_bukrs AND
party = 'ZRUC'.

SELECT SINGLE paval


INTO gs_butxt
FROM t001z
WHERE bukrs = p_bukrs
AND party = 'ZRSOCI'.

SELECT SINGLE ktopl ktop2


INTO (ls_ktopl, ls_ktop2)
FROM t001
WHERE bukrs EQ p_bukrs.

REFRESH: gtd_detalle_flag_aux.
gtd_detalle_flag_aux = gtd_detalle_flag.
SORT gtd_detalle_flag_aux BY racct.
DELETE ADJACENT DUPLICATES FROM gtd_detalle_flag_aux COMPARING racct.
DELETE gtd_detalle_flag_aux WHERE racct IS INITIAL.

CHECK NOT gtd_detalle_flag_aux IS INITIAL.

IF p_alter NE 'X'.

SELECT saknr txt50


INTO TABLE gth_skat
FROM skat
FOR ALL ENTRIES IN gtd_detalle_flag_aux
WHERE spras EQ sy-langu
AND ktopl EQ ls_ktopl
AND saknr EQ gtd_detalle_flag_aux-racct.
ELSE.

SELECT saknr altkt


INTO TABLE gth_skb1
FROM skb1
FOR ALL ENTRIES IN gtd_detalle_flag_aux
WHERE bukrs EQ p_bukrs
AND saknr EQ gtd_detalle_flag_aux-racct.

ltd_skb1 = gth_skb1.
SORT ltd_skb1 BY altkt.
DELETE ADJACENT DUPLICATES FROM ltd_skb1 COMPARING altkt.

CHECK NOT ltd_skb1 IS INITIAL.

SELECT saknr txt50


INTO TABLE gth_skat
FROM skat
FOR ALL ENTRIES IN ltd_skb1
WHERE spras EQ sy-langu
AND ktopl EQ ls_ktop2
AND saknr EQ ltd_skb1-altkt.
ENDIF.

ENDFORM. " OBTENER_DATOS_ADICIONALES_NGL


*&---------------------------------------------------------------------*
*& Form GENERAR_REPORTE_NGL
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM generar_reporte_ngl .
FIELD-SYMBOLS: <fs_bkpf> TYPE gty_bkpf,
<fs_detalle> TYPE gty_detalle_flag,
<fs_bseg> LIKE LINE OF gtd_detalle,
<fs_skat> TYPE gty_skat,
<fs_skb1> TYPE gty_skb1.
DATA: ltd_faglflext TYPE STANDARD TABLE OF gty_faglflext,
ltd_salini TYPE STANDARD TABLE OF gty_salini,
ltd_glt0 TYPE STANDARD TABLE OF gty_glt0,
lwa_salini TYPE gty_salini,
ls_importe(30) TYPE c,
ln_cont(2) TYPE n,
li_cant TYPE i.
DATA: sidebex TYPE c LENGTH 15,
sihaberx TYPE c LENGTH 15.

FIELD-SYMBOLS: <fs_faglflext> TYPE gty_faglflext.


FIELD-SYMBOLS: <fs_importe> TYPE ANY.
FIELD-SYMBOLS: <fs_salini> TYPE gty_salini.
DATA: gv_suma_debe TYPE dmbtr . "OGUTIERREZ 20/03
DATA: gv_suma_haber TYPE dmbtr , "OGUTIERREZ 20/03
gv_diferencia TYPE dmbtr.

"OGUTIERREZ
*LOOP AT gtd_detalle_flag assigning <fs_detalle>.
* gv_suma = gv_suma + <fs_detalle>-hsl.
* AT END OF buzei.
* ltd_detalle_flag2-docnr = <fs_detalle>-docnr.
* ltd_detalle_flag2-ryear = <fs_detalle>-ryear.
* ltd_detalle_flag2-buzei = <fs_detalle>-buzei.
* ltd_detalle_flag2-drcrk = <fs_detalle>-drcrk.
* ltd_detalle_flag2-racct = <fs_detalle>-racct.
* ltd_detalle_flag2-budat = <fs_detalle>-budat.
* ltd_detalle_flag2-hkont = <fs_detalle>-hkont.
* ltd_detalle_flag2-hsl = gv_suma.
* APPEND ltd_detalle_flag2 TO gtd_detalle_flag2.
* clear gv_suma.
* ENDAT.
*ENDLOOP.
"OGUTIERREZ

LOOP AT gtd_detalle_flag ASSIGNING <fs_detalle>.


CLEAR gwa_reporte2.

gwa_reporte2-belnr = <fs_detalle>-docnr.
gwa_reporte2-budat = <fs_detalle>-budat.
gwa_reporte2-buzei = <fs_detalle>-buzei. "OGUTIERREZ 20/03
gwa_reporte2-docln = <fs_detalle>-docln.

*{@PE003
READ TABLE gth_bkpf ASSIGNING <fs_bkpf> WITH TABLE KEY belnr = <fs_detalle>-
docnr
gjahr = <fs_detalle>-
ryear.
IF sy-subrc EQ 0.
gwa_reporte2-xblnr = <fs_bkpf>-xblnr.
ENDIF.
*}@PE003

READ TABLE gth_detalle ASSIGNING <fs_bseg> WITH TABLE KEY belnr = <fs_detalle>-
docnr
gjahr = <fs_detalle>-ryear
buzei = <fs_detalle>-buzei.
IF sy-subrc EQ 0.
gwa_reporte2-glosa = <fs_bseg>-sgtxt.
ENDIF.

IF gwa_reporte2-glosa IS INITIAL.
READ TABLE gth_bkpf ASSIGNING <fs_bkpf> WITH TABLE KEY belnr = <fs_detalle>-
docnr
gjahr = <fs_detalle>-
ryear.
IF sy-subrc EQ 0.
gwa_reporte2-glosa = <fs_bkpf>-bktxt.
ENDIF.
ENDIF.

IF <fs_detalle>-drcrk EQ 'S'.
gwa_reporte2-debe = <fs_detalle>-hsl.
ELSE.
gwa_reporte2-haber = ABS( <fs_detalle>-hsl ).
ENDIF.

IF p_alter EQ 'X'.
READ TABLE gth_skb1 ASSIGNING <fs_skb1>
WITH TABLE KEY saknr = <fs_detalle>-racct.
IF sy-subrc EQ 0.
gwa_reporte2-hkont = <fs_skb1>-altkt.

READ TABLE gth_skat ASSIGNING <fs_skat>


WITH TABLE KEY saknr = <fs_skb1>-altkt.
IF sy-subrc EQ 0.
gwa_reporte2-txt50 = <fs_skat>-txt50.
ENDIF.
ENDIF.

ELSE.

gwa_reporte2-hkont = <fs_detalle>-racct.

READ TABLE gth_skat ASSIGNING <fs_skat>


WITH TABLE KEY saknr = <fs_detalle>-racct.
IF sy-subrc EQ 0.
gwa_reporte2-txt50 = <fs_skat>-txt50.
ENDIF.

ENDIF.
gwa_reporte2-gjahr = <fs_detalle>-ryear.
APPEND gwa_reporte2 TO gtd_reporte2.
ENDLOOP.

"""""""""""
* CLEAR: gwa_reporte.
* REFRESH: gtd_reporte2_sort.
* SORT gtd_reporte2 BY belnr gjahr buzei.
* gtd_reporte2_sort[] = gtd_reporte2[].
* DELETE ADJACENT DUPLICATES FROM gtd_reporte2 COMPARING belnr gjahr buzei.

* LOOP AT gtd_reporte2 ASSIGNING <fs_reporte2>.


* CLEAR: gv_suma_haber, gv_suma_debe.
* LOOP AT gtd_reporte2_sort ASSIGNING <fs_reporte_sort>
* WHERE belnr = <fs_reporte2>-belnr
* AND gjahr = <fs_reporte2>-gjahr
* AND buzei = <fs_reporte2>-buzei.
* gv_suma_haber = gv_suma_haber + <fs_reporte_sort>-haber.
* gv_suma_debe = gv_suma_debe + <fs_reporte_sort>-debe.
* ENDLOOP.
* CHECK gv_suma_haber <> gv_suma_debe. "Si debe y haber son iguales entonces
esta posici�n no debe aparecer en el libro.
* CLEAR gwa_reporte.
* gv_diferencia = gv_suma_debe - gv_suma_haber.
* if gv_diferencia > 0.
* gwa_reporte-debe = gv_diferencia.
* else.
* gwa_reporte-haber = abs( gv_diferencia ).
* endif.
* gwa_reporte-belnr = <fs_reporte2>-belnr.
* gwa_reporte-buzei = <fs_reporte2>-buzei.
* gwa_reporte-budat = <fs_reporte2>-budat.
* gwa_reporte-glosa = <fs_reporte2>-glosa.
* gwa_reporte-hkont = <fs_reporte2>-hkont.
* gwa_reporte-txt50 = <fs_reporte2>-txt50.
* gwa_reporte-gjahr = <fs_reporte2>-gjahr.
* gwa_reporte-box = <fs_reporte2>-box.
*
* APPEND gwa_reporte TO gtd_reporte.
* ENDLOOP.

LOOP AT gtd_reporte2 ASSIGNING <fs_reporte2>.


CLEAR gwa_reporte.
gwa_reporte-belnr = <fs_reporte2>-belnr.
gwa_reporte-buzei = <fs_reporte2>-buzei.
gwa_reporte-docln = <fs_reporte2>-docln.
gwa_reporte-debe = <fs_reporte2>-debe.
gwa_reporte-haber = <fs_reporte2>-haber.
gwa_reporte-budat = <fs_reporte2>-budat.
gwa_reporte-glosa = <fs_reporte2>-glosa.
gwa_reporte-hkont = <fs_reporte2>-hkont.
gwa_reporte-txt50 = <fs_reporte2>-txt50.
gwa_reporte-gjahr = <fs_reporte2>-gjahr.
gwa_reporte-xblnr = <fs_reporte2>-xblnr.
gwa_reporte-box = <fs_reporte2>-box.
APPEND gwa_reporte TO gtd_reporte.
ENDLOOP.
""""""""""""

"Saldos Iniciales
SELECT ryear objnr00 objnr01 objnr02 objnr03 objnr04 objnr05
objnr06 objnr07 objnr08 drcrk rpmax rbukrs racct hslvt
hsl01 hsl02 hsl03 hsl04 hsl05 hsl06 hsl07 hsl08 hsl09
hsl10 hsl11 hsl12
INTO TABLE ltd_faglflext
FROM faglflext
WHERE rbukrs EQ p_bukrs
AND rldnr EQ p_rldnr
AND ryear EQ p_gjahr
AND rrcty EQ '0'
AND racct IN s_cuent.

IF sy-subrc EQ 0.
li_cant = s_monat-low - 1.

LOOP AT ltd_faglflext ASSIGNING <fs_faglflext>.


CLEAR: lwa_salini.
lwa_salini-bukrs = <fs_faglflext>-rbukrs.
lwa_salini-drcrk = <fs_faglflext>-drcrk.
lwa_salini-racct = <fs_faglflext>-racct.
ln_cont = 01.
lwa_salini-monto = <fs_faglflext>-hslvt.

DO li_cant TIMES.
CONCATENATE '<fs_faglflext>-HSL' ln_cont INTO ls_importe.
ASSIGN (ls_importe) TO <fs_importe>.
ADD 1 TO ln_cont.
lwa_salini-monto = lwa_salini-monto + <fs_importe>.
ENDDO.
COLLECT lwa_salini INTO ltd_salini.
ENDLOOP.

CLEAR : w_montoiha, w_montoide.


IF ltd_salini IS NOT INITIAL.
LOOP AT ltd_salini ASSIGNING <fs_salini>.
IF <fs_salini>-drcrk = 'H'.
w_montoiha = w_montoiha + <fs_salini>-monto.

ELSEIF <fs_salini>-drcrk = 'S'.


w_montoide = w_montoide + <fs_salini>-monto.
ENDIF.
ENDLOOP.
w_montoiha = ABS( w_montoiha ).
w_montoide = ABS( w_montoide ).
ENDIF.

IF p_aper EQ 'X' AND s_monat-low EQ '01' .


PERFORM obtener_asientos_ac TABLES ltd_faglflext
USING 01.

ENDIF.

IF p_aper EQ 'X' AND ( s_monat-low EQ '12' OR s_monat-high EQ '12' ).


PERFORM obtener_asientos_ac TABLES ltd_faglflext
USING 12.

ENDIF.

ENDIF.
ENDFORM. " GENERAR_REPORTE_NGL
*&---------------------------------------------------------------------*
*& Form OBTENER_ASIENTOS_AC
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_01 text
* -->P_LTD_FAGLFLEXT text
*----------------------------------------------------------------------*
FORM obtener_asientos_ac TABLES pt_faglflext TYPE gtyt_faglflext
USING pi_peri.

FIELD-SYMBOLS <fs_fagl> TYPE gty_faglflext.


FIELD-SYMBOLS <fs_skat> LIKE LINE OF gth_skat.

FIELD-SYMBOLS: <fs_importe> TYPE ANY.

DATA: lwa_reporteac LIKE LINE OF gtd_reporteac01. "Lineas de apertura o cierre

DATA: ls_fecha TYPE dats ,


ls_importe(30) TYPE c,
ln_cont(2) TYPE n,
li_cant TYPE i.

IF pi_peri EQ '01'.
CONCATENATE p_gjahr '01' '01' INTO ls_fecha.
ELSE.
CONCATENATE '31' '12' p_gjahr INTO ls_fecha.
ENDIF.

SELECT saknr txt50


INTO TABLE gth_skat
FROM skat
FOR ALL ENTRIES IN pt_faglflext
WHERE saknr EQ pt_faglflext-racct
AND spras EQ sy-langu.

IF pi_peri EQ 01.
LOOP AT pt_faglflext ASSIGNING <fs_fagl>.
CLEAR lwa_reporteac.
lwa_reporteac-belnr = '0000000010'.
lwa_reporteac-budat = ls_fecha.
lwa_reporteac-glosa = 'ASIENTO DE APERTURA'.
lwa_reporteac-hkont = <fs_fagl>-racct.

IF <fs_fagl>-drcrk EQ 'S'.
lwa_reporteac-debe = <fs_fagl>-hslvt.
ELSE.
lwa_reporteac-haber = <fs_fagl>-hslvt.
ENDIF.

READ TABLE gth_skat WITH TABLE KEY saknr = <fs_fagl>-racct


ASSIGNING <fs_skat>.
IF sy-subrc EQ 0.
lwa_reporteac-txt50 = <fs_skat>-txt50.
ENDIF.
COLLECT lwa_reporteac INTO gtd_reporteac01.
ENDLOOP.

IF gtd_reporteac01 IS NOT INITIAL.


IF gtd_reporte IS NOT INITIAL.
INSERT LINES OF gtd_reporteac01 INTO gtd_reporte INDEX 1.
ELSE.
APPEND LINES OF gtd_reporteac01 TO gtd_reporte.
ENDIF.
ENDIF.

ELSE. " si es 12
LOOP AT pt_faglflext ASSIGNING <fs_fagl>.
CLEAR lwa_reporteac.
lwa_reporteac-belnr = 'Z999999999'.
lwa_reporteac-budat = ls_fecha.
lwa_reporteac-glosa = 'ASIENTO DE CIERRE'.
lwa_reporteac-hkont = <fs_fagl>-racct.

READ TABLE gth_skat WITH TABLE KEY saknr = <fs_fagl>-racct


ASSIGNING <fs_skat>.
IF sy-subrc EQ 0.
lwa_reporteac-txt50 = <fs_skat>-txt50.
ENDIF.

IF <fs_fagl>-drcrk EQ 'H'.
<fs_fagl>-hslvt = ABS( <fs_fagl>-hslvt ).
* <fs_fagl>-hslvt = <fs_fagl>-hslvt * -1.
lwa_reporteac-debe = <fs_fagl>-hslvt.
ELSE.
lwa_reporteac-haber = <fs_fagl>-hslvt.
ENDIF.

ln_cont = '01'.
DO 12 TIMES.
CONCATENATE '<fs_fagl>-HSL' ln_cont INTO ls_importe.
ASSIGN (ls_importe) TO <fs_importe>.
ADD 1 TO ln_cont.
IF <fs_fagl>-drcrk EQ 'H'.
<fs_importe> = ABS( <fs_importe> ).
* <fs_importe> = <fs_importe> * -1.
lwa_reporteac-debe = lwa_reporteac-debe + <fs_importe>.
ELSE.
<fs_importe> = ABS( <fs_importe> ).
* <fs_importe> = <fs_importe> * -1.
lwa_reporteac-haber = lwa_reporteac-haber + <fs_importe>.
ENDIF.
ENDDO.

COLLECT lwa_reporteac INTO gtd_reporteac12.


ENDLOOP.

IF gtd_reporteac12 IS NOT INITIAL.


APPEND LINES OF gtd_reporteac12 TO gtd_reporte.
ENDIF.
ENDIF.

ENDFORM. " OBTENER_ASIENTOS_AC


"+OGUTIERREZ 22/02/13
*&---------------------------------------------------------------------*
*& Form buscar_archivo
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->IE_ARCH text
*----------------------------------------------------------------------*
FORM buscar_archivo USING ie_arch.
DATA lv_ruta TYPE string.
CREATE OBJECT go_guiobj.
CALL METHOD go_guiobj->directory_browse
CHANGING
selected_folder = lv_ruta.
MOVE lv_ruta TO ie_arch .
ENDFORM. " buscar_archivo

*&---------------------------------------------------------------------*
*& Form buscar_archivo2
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM buscar_archivo2 .

DATA: lv_strlen TYPE i.


CLEAR: p_file3.
*
* CALL FUNCTION '/SAPDMC/LSM_F4_SERVER_FILE'
* EXPORTING
* directory = '..'
* filemask = ' '
* IMPORTING
* serverfile = p_file2
* EXCEPTIONS
* canceled_by_user = 1.
*
* CHECK sy-subrc = 0.
CHECK NOT p_file3 IS INITIAL.

CLEAR: lv_strlen.
lv_strlen = STRLEN( p_file3 ).
lv_strlen = lv_strlen - 4.
IF p_file3+lv_strlen(4) = '.TXT' OR p_file3+lv_strlen(4) = '.txt'.
CLEAR: p_file3.
MESSAGE 'Elija un directorio del servidor, no un archivo.' TYPE 'I' DISPLAY
LIKE'E'.
ENDIF.

ENDFORM. " BUSCAR_ARCHIVO2

*&---------------------------------------------------------------------*
*& Form generar_archivotxt_libdiario
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM generar_archivotxt_libdiario.

DATA: lv_mensa(80),
lv_mes TYPE string,
lv_ta TYPE i,
lv_file TYPE string,
lv_nomarchivo TYPE string,
lv_debe TYPE char30,
lv_haber TYPE char30,
lv_cebe(24),
lv_fecha TYPE char8,
lv_fecha2 TYPE char10,
lv_docpos TYPE char19,
lv_cont(4), ""+@PP01 26.05.201
lv_contrib TYPE char10, ""+@PP01 26.05.2014
lv_num_reg_vent TYPE string, ""+@PP01 26.05.2014
lv_num_reg_comp TYPE string, ""+@PP01 26.05.2014
lv_num_reg_cons TYPE string. ""+@PP01 26.05.2014

DATA: lv_buzei TYPE buzei,


lv_belnr TYPE belnr_d.

""INI+@PP01 26.05.2014
TYPES: BEGIN OF ty_bset,
belnr TYPE bset-belnr,
gjahr TYPE bset-gjahr,
buzei TYPE bset-buzei,
kschl TYPE bset-kschl,
END OF ty_bset.

DATA: gt_bset TYPE STANDARD TABLE OF ty_bset,


gs_bset LIKE LINE OF gt_bset.
""FIN+@PP01 26.05.2014

REFRESH t_txt .
CLEAR:
lv_mes,lv_ta,lv_nomarchivo,lv_file,lv_debe,lv_haber,lv_cebe,lv_fecha,lv_fecha2.
CLEAR: lv_belnr, lv_buzei.

SORT gtd_reporte BY hkont belnr.

CONCATENATE p_gjahr s_monat-low '00' INTO lv_fecha.

""INI+@PP01 26.05.2014
SELECT belnr gjahr buzei kschl
INTO TABLE gt_bset
FROM bset
FOR ALL ENTRIES IN gtd_reporte
WHERE bukrs EQ p_bukrs
AND belnr EQ gtd_reporte-belnr
AND gjahr EQ gtd_reporte-gjahr.
* AND buzei EQ gtd_reporte-buzei.
""FIN+@PP01 26.05.2014

LOOP AT gtd_reporte INTO gwa_reporte.

CLEAR: lv_contrib,lv_num_reg_vent, lv_num_reg_comp, lv_num_reg_cons.


""+@PP01 26.05.2014

CLEAR: lv_docpos.

IF gwa_reporte-debe < 0 OR gwa_reporte-haber < 0.


CONTINUE.
ENDIF.

IF gwa_reporte-debe = 0 AND gwa_reporte-haber = 0.


CONTINUE.
ENDIF.

lv_debe = gwa_reporte-debe .
lv_haber = gwa_reporte-haber .

CONDENSE: lv_debe,lv_haber .

IF p_alter EQ 'X'.
MOVE gwa_reporte-hkont+2(8) TO lv_cebe .
ELSE.
MOVE gwa_reporte-hkont+2(8) TO lv_cebe . " @PE001
ENDIF.

CONCATENATE gwa_reporte-belnr gwa_reporte-buzei gwa_reporte-docln INTO


lv_docpos.

CALL FUNCTION 'CLOI_PUT_SIGN_IN_FRONT'


CHANGING
value = lv_debe.

CALL FUNCTION 'CLOI_PUT_SIGN_IN_FRONT'


CHANGING
value = lv_haber.

CONCATENATE gwa_reporte-budat+6(2) gwa_reporte-budat+4(2) gwa_reporte-budat(4)


INTO lv_fecha2 SEPARATED BY '/'.

""INI+@PP01 26.05.2014
CONCATENATE 'M' lv_cont INTO lv_contrib.

READ TABLE gt_bset INTO gs_bset


WITH KEY belnr = gwa_reporte-belnr
gjahr = gwa_reporte-gjahr.
* buzei = gwa_reporte-buzei.
IF sy-subrc EQ 0.
IF gs_bset-kschl EQ 'MWAS'.
lv_num_reg_vent = gs_bset-belnr.
ELSEIF gs_bset-kschl EQ 'XWVS'.
lv_num_reg_comp = gs_bset-belnr.
ELSEIF gs_bset-kschl EQ space.
lv_num_reg_cons = space.
ENDIF.
ENDIF.
""FIN+@PP01 26.05.2014

* CONCATENATE lv_fecha lv_docpos '01' gwa_reporte-hkont "gwa_reporte-belnr "-


@PP01 26.05.2014
* lv_fecha2 gwa_reporte-txt50 lv_debe lv_haber '1' "-
@PP01 26.05.2014

""INI+@PP01 26.05.2014
CONCATENATE lv_fecha lv_docpos lv_contrib '01' gwa_reporte-hkont "gwa_reporte-
belnr
lv_fecha2
gwa_reporte-txt50
lv_debe
lv_haber
lv_num_reg_vent
lv_num_reg_comp
lv_num_reg_cons
'1'
""FIN+@PP01 26.05.2014

INTO t_txt-linea SEPARATED BY '|' .


CONCATENATE t_txt-linea '|' INTO t_txt-linea.
APPEND t_txt.

ENDLOOP .

ENDFORM . "Generar_archivotxt_libdiario

*&---------------------------------------------------------------------*
*& Form descargar_pc
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM descargar_pc .

DATA: lv_mensa(80),
lv_mes TYPE string,
lv_ta TYPE i,
lv_file TYPE string,
lv_nomarchivo TYPE string.

CLEAR: lv_mensa, lv_mes,lv_ta,lv_nomarchivo,lv_file.

lv_ta = STRLEN( s_monat-low ) .

IF lv_ta = 1 .
CONCATENATE '0' s_monat-low INTO lv_mes .
ELSE.
lv_mes = s_monat-low .
ENDIF .

CONCATENATE 'LE' gs_ruc p_gjahr lv_mes '00'


'050100' '00' '11' '1' '1' '.txt' INTO lv_nomarchivo .

CONDENSE lv_nomarchivo .
CONCATENATE p_file2 '\' lv_nomarchivo INTO lv_file .
CONDENSE lv_file .

* Download del archivo


CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
filename = lv_file
TABLES
data_tab = t_txt
EXCEPTIONS
file_open_error = 01
file_write_error = 02.

CONCATENATE 'Se gener� txt : ' lv_file INTO lv_mensa.


MESSAGE lv_mensa TYPE 'S'.
ENDFORM. " DESCARGAR_PC

*&---------------------------------------------------------------------*
*& Form descargar_servidor
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM descargar_servidor .

DATA: lv_mensa(200),
lv_mes TYPE string,
lv_ta TYPE i,
lv_file TYPE string,
lv_nomarchivo TYPE string,
lv_grab(1).

CLEAR: lv_mensa, lv_mes, lv_ta, lv_nomarchivo, lv_file.

lv_ta = STRLEN( s_monat-low ) .

IF lv_ta = 1 .
CONCATENATE '0' s_monat-low INTO lv_mes .
ELSE.
lv_mes = s_monat-low .
ENDIF .

CONCATENATE 'LE' gs_ruc p_gjahr lv_mes '00'


'050100' '00' '11' '1' '1' '.txt' INTO lv_nomarchivo .

CONDENSE lv_nomarchivo .
CONCATENATE p_file3 '\' lv_nomarchivo INTO lv_file .
CONDENSE lv_file .

OPEN DATASET lv_file FOR OUTPUT IN TEXT MODE ENCODING DEFAULT."BINARY MODE."
ENCODING DEFAULT NON-UNICODE.
IF NOT sy-subrc IS INITIAL.
IF sy-subrc = 8.
CONCATENATE 'El sistema operativo no pudo abrir el archivo' lv_file INTO
lv_mensa SEPARATED BY ' '.
MESSAGE lv_mensa TYPE 'E'.
ELSE.
CONCATENATE 'Error al generar archivo de salida' lv_file INTO lv_mensa
SEPARATED BY ' '.
MESSAGE lv_mensa TYPE 'E'.
EXIT.
ENDIF.
ELSE.
LOOP AT t_txt.
TRANSFER t_txt TO lv_file.
IF NOT sy-subrc IS INITIAL.
CONCATENATE 'Error al grabar registro' lv_file INTO lv_mensa SEPARATED BY '
'.
MESSAGE lv_mensa TYPE 'E'.
ELSE.
lv_grab = 'X'.
ENDIF.
ENDLOOP.
CLOSE DATASET lv_file.
ENDIF.
IF lv_grab = 'X'.
CONCATENATE 'Archivo generado en' p_file2 INTO lv_mensa SEPARATED BY ' '.
MESSAGE lv_mensa TYPE 'S'.
ENDIF.

ENDFORM. " DESCARGAR_SERVIDOR


"-OGUTIERREZ 22/02/13

*{@PE003
*&---------------------------------------------------------------------*
*& Form GENERAR_ANEXO2_LIBDIARIO
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM generar_anexo2_libdiario .

DATA: lv_mensa(80),
lv_mes TYPE string,
lv_ta TYPE i,
lv_file TYPE string,
lv_nomarchivo TYPE string,
lv_debe TYPE char30,
lv_haber TYPE char30,
lv_cebe(24),
lv_fecha TYPE char8,
lv_fecha2 TYPE char10,
lv_docpos TYPE char19.

DATA: lv_buzei TYPE buzei,


lv_belnr TYPE belnr_d.

DATA: lv_ane_cam1 TYPE char10,


lv_ane_cam2 TYPE bkpf-belnr,
lv_ane_cam3 TYPE bkpf-xblnr,
lv_ane_cam4 TYPE char10.

REFRESH t_txt .
CLEAR:
lv_mes,lv_ta,lv_nomarchivo,lv_file,lv_debe,lv_haber,lv_cebe,lv_fecha,lv_fecha2.
CLEAR: lv_belnr, lv_buzei.

SORT gtd_reporte BY hkont belnr.

CONCATENATE p_gjahr s_monat-low '00' INTO lv_fecha.

LOOP AT gtd_reporte INTO gwa_reporte.

CLEAR: lv_docpos.
CLEAR: lv_ane_cam1, lv_ane_cam2, lv_ane_cam3, lv_ane_cam4.

IF gwa_reporte-debe < 0 OR gwa_reporte-haber < 0.


CONTINUE.
ENDIF.

IF gwa_reporte-debe = 0 AND gwa_reporte-haber = 0.


CONTINUE.
ENDIF.

lv_debe = gwa_reporte-debe .
lv_haber = gwa_reporte-haber .

CONDENSE: lv_debe,lv_haber .

IF p_alter EQ 'X'.
MOVE gwa_reporte-hkont+2(8) TO lv_cebe .
ELSE.
MOVE gwa_reporte-hkont+2(8) TO lv_cebe . " @PE001
ENDIF.

CONCATENATE gwa_reporte-belnr gwa_reporte-buzei gwa_reporte-docln INTO


lv_docpos
SEPARATED BY '.'.

CALL FUNCTION 'CLOI_PUT_SIGN_IN_FRONT'


CHANGING
value = lv_debe.

CALL FUNCTION 'CLOI_PUT_SIGN_IN_FRONT'


CHANGING
value = lv_haber.

CLEAR: gs_bset, gs_bsim.


READ TABLE gtd_bset INTO gs_bset WITH KEY bukrs = p_bukrs
belnr = gwa_reporte-belnr
gjahr = gwa_reporte-gjahr.
IF sy-subrc = 0.
lv_ane_cam3 = gwa_reporte-xblnr.
ENDIF.

READ TABLE gtd_bsim INTO gs_bsim WITH KEY belnr = gwa_reporte-belnr


gjahr = gwa_reporte-gjahr.
IF sy-subrc = 0.
lv_ane_cam2 = gwa_reporte-belnr.
ENDIF.

CONCATENATE gwa_reporte-budat+6(2) gwa_reporte-budat+4(2) gwa_reporte-budat(4)


INTO lv_fecha2 SEPARATED BY '/'.
CONCATENATE lv_fecha lv_docpos '01' gwa_reporte-hkont "gwa_reporte-belnr
lv_fecha2 gwa_reporte-txt50 lv_debe lv_haber '1'
lv_ane_cam2
lv_ane_cam3
lv_docpos
INTO t_txt-linea SEPARATED BY '|' .
CONCATENATE t_txt-linea '|' INTO t_txt-linea.
APPEND t_txt.

ENDLOOP .

ENDFORM. " GENERAR_ANEXO2_LIBDIARIO


*&---------------------------------------------------------------------*
*& Form DESCARGAR_ANEXO2_PC
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM descargar_anexo2_pc .

DATA: lv_mensa(80),
lv_mes TYPE string,
lv_ta TYPE i,
lv_file TYPE string,
lv_nomarchivo TYPE string.

CLEAR: lv_mensa, lv_mes,lv_ta,lv_nomarchivo,lv_file.

* lv_ta = STRLEN( s_monat-low ) .


*
* IF lv_ta = 1 .
* CONCATENATE '0' s_monat-low INTO lv_mes .
* ELSE.
* lv_mes = s_monat-low .
* ENDIF .

* CONCATENATE 'LE' gs_ruc p_gjahr lv_mes '00'


* '050100' '00' '11' '1' '1' '.txt' INTO lv_nomarchivo .

lv_nomarchivo = 'Libro_Diario_Anexo_2.txt'.

CONDENSE lv_nomarchivo .
CONCATENATE p_file4 '\' lv_nomarchivo INTO lv_file .
CONDENSE lv_file .

* Download del archivo


CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
filename = lv_file
TABLES
data_tab = t_txt
EXCEPTIONS
file_open_error = 01
file_write_error = 02.

CONCATENATE 'Se gener� txt : ' lv_file INTO lv_mensa.


MESSAGE lv_mensa TYPE 'S'.

ENDFORM. " DESCARGAR_ANEXO2_PC


*}@PE003

----------------------------------------------------------------------------------
Extracted by Mass Download version 1.4.1 - E.G.Mellodew. 1998-2018. Sap Release 701

You might also like