Sei sulla pagina 1di 13

CDIGO ABAP - Formulario de Libro de Rgimen de Percepcin

ALV OOP ABAP - Formulario de Libro de Rgimen de


Percepcin

************************************************************************

* INFORMACIN GENERAL

************************************************************************

*^ Mdulo : FI

*^ Propsito : Formulario de Libro de Rgimen de Percepcin.

************************************************************************

REPORT zfir_fi100.

TYPE-POOLS: zf100.

zf100_tables.

zf100_selection_screen.

zf100_at_selection_screen.

zf100_initialization.

INCLUDE zfir_fi100_definition.

INCLUDE zfir_fi100_implementation.

START-OF-SELECTION.

CREATE OBJECT obj_fi100

EXPORTING

a_bukrs = p_bukrs

a_gjahr = p_gjahr

a_monat = r_monat[].

IF obj_fi100 IS BOUND.

obj_fi100->generando_procesos(

EXPORTING

i_bukrs = p_bukrs

i_postm = p_postm

i_gjahr = p_gjahr

1
CDIGO ABAP - Formulario de Libro de Rgimen de Percepcin

i_monat = r_monat[]

i_kunnr = r_kunnr[]

i_witht = r_witht[]

i_withcd = r_withcd[]

CHANGING

i_budat = r_budat[]

).

ENDIF.

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

*& Include ZFIR_FI100_DEFINITION

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

CLASS gcl_fi100 DEFINITION.

PUBLIC SECTION.

*************************************************************************

METHODS:

constructor IMPORTING a_bukrs TYPE bukrs

a_gjahr TYPE gjahr

a_monat TYPE STANDARD TABLE,

*************************************************************************

obtener_datos_empresa IMPORTING o_bukrs TYPE bukrs

o_gjahr TYPE gjahr

o_monat TYPE STANDARD TABLE

CHANGING o_cabecera TYPE zwcab_percep,

*************************************************************************

obtener_rango_fechas IMPORTING e_gjahr TYPE gjahr

e_monat TYPE STANDARD TABLE

CHANGING e_budat TYPE STANDARD TABLE,

*************************************************************************

obtener_datos_generales IMPORTING x_bukrs TYPE bukrs

x_postm TYPE t059p-wt_postm

x_kunnr TYPE STANDARD TABLE

x_budat TYPE STANDARD TABLE

x_witht TYPE STANDARD TABLE

2
CDIGO ABAP - Formulario de Libro de Rgimen de Percepcin

x_withcd TYPE STANDARD TABLE

CHANGING x_rfpos_wt TYPE STANDARD TABLE,

*************************************************************************

generando_procesos IMPORTING i_bukrs TYPE bukrs

i_postm TYPE t059p-wt_postm

i_gjahr TYPE gjahr

i_kunnr TYPE STANDARD TABLE

i_monat TYPE STANDARD TABLE

i_witht TYPE STANDARD TABLE

i_withcd TYPE STANDARD TABLE

CHANGING i_budat TYPE STANDARD TABLE,

*************************************************************************

generar_det_percepciones IMPORTING u_kunnr TYPE STANDARD TABLE

u_budat TYPE STANDARD TABLE

u_rfpos_wt TYPE STANDARD TABLE

CHANGING u_det_perc TYPE STANDARD TABLE,

*************************************************************************

generar_formulario_impr IMPORTING y_cabecera TYPE zwcab_percep

y_det_perc TYPE STANDARD TABLE.

*************************************************************************

PRIVATE SECTION.

zf100_types.

DATA: gw_cabecera TYPE zwcab_percep.

DATA: gt_det_perc TYPE STANDARD TABLE OF zwdet_percep,

gt_rfpos_wt TYPE STANDARD TABLE OF zwrfpos_wt.

ENDCLASS.

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

*& Include ZFIR_FI100_IMPLEMENTATION

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

CLASS gcl_fi100 IMPLEMENTATION.

3
CDIGO ABAP - Formulario de Libro de Rgimen de Percepcin

METHOD constructor.

me->obtener_datos_empresa(

EXPORTING

o_bukrs = a_bukrs

o_gjahr = a_gjahr

o_monat = a_monat[]

CHANGING

o_cabecera = gw_cabecera

).

ENDMETHOD.

METHOD obtener_datos_empresa.

DATA: lr_monat LIKE LINE OF r_monat,

lv_mes TYPE t247-mnr,

lv_ltxt1 TYPE t247-ltx,

lv_ltxt2 TYPE t247-ltx,

lv_stxt TYPE t247-ktx,

lv_part1 TYPE c LENGTH 40,

lv_part2 TYPE c LENGTH 40,

lv_adrnr TYPE adrnr.

***@ Periodo

READ TABLE o_monat INTO lr_monat INDEX 1.

IF lr_monat-low EQ lr_monat-high

OR lr_monat-high IS INITIAL.

lv_mes = lr_monat-low.

CALL FUNCTION 'ISP_GET_MONTH_NAME'

EXPORTING

language = sy-langu

month_number = lv_mes

IMPORTING

langu_back = sy-langu

shorttext = lv_stxt

longtext = lv_ltxt1.

4
CDIGO ABAP - Formulario de Libro de Rgimen de Percepcin

gw_cabecera-periodo = lv_ltxt1 && '.' && o_gjahr.

ELSE.

lv_mes = lr_monat-low.

CALL FUNCTION 'ISP_GET_MONTH_NAME'

EXPORTING

language = sy-langu

month_number = lv_mes

IMPORTING

langu_back = sy-langu

shorttext = lv_stxt

longtext = lv_ltxt1.

lv_mes = lr_monat-high.

CALL FUNCTION 'ISP_GET_MONTH_NAME'

EXPORTING

language = sy-langu

month_number = lv_mes

IMPORTING

langu_back = sy-langu

shorttext = lv_stxt

longtext = lv_ltxt2.

CONDENSE: lv_ltxt1, lv_ltxt2 NO-GAPS.

CONCATENATE lv_ltxt1 '.' o_gjahr INTO lv_part1.

CONCATENATE lv_ltxt2 '.' o_gjahr INTO lv_part2.

CONCATENATE lv_part1 '-' lv_part2 INTO gw_cabecera-periodo SEPARATED BY


space.

ENDIF.

***@ Ruc

SELECT SINGLE paval INTO gw_cabecera-ruc

FROM t001z

WHERE bukrs EQ o_bukrs

AND party EQ 'PE_RUC'.

***@ Razn Social

5
CDIGO ABAP - Formulario de Libro de Rgimen de Percepcin

SELECT SINGLE adrnr INTO lv_adrnr

FROM t001

WHERE bukrs EQ o_bukrs.

IF sy-subrc EQ 0.

CLEAR: lv_part1, lv_part2.

SELECT SINGLE name1 name2 INTO (lv_part1, lv_part2)

FROM adrc

WHERE addrnumber EQ lv_adrnr.

IF sy-subrc EQ 0.

CONDENSE: lv_part1, lv_part2.

CONCATENATE lv_part1 lv_part2 INTO gw_cabecera-rsocial SEPARATED BY


space.

ENDIF.

ENDIF.

ENDMETHOD.

METHOD obtener_rango_fechas.

DATA: lr_budat LIKE LINE OF r_budat,

lr_budat_aux LIKE LINE OF r_budat,

lr_monat LIKE LINE OF r_monat.

READ TABLE e_monat[] INTO lr_monat INDEX 1.

lr_budat-sign = 'I'.

lr_budat-option = 'BT'.

lr_budat-low = e_gjahr && lr_monat-low && '01'.

IF lr_monat-high IS NOT INITIAL.

lr_budat_aux-low = e_gjahr && lr_monat-high && '01'.

ELSE.

lr_budat_aux-low = lr_budat-low.

ENDIF.

CALL FUNCTION 'RP_LAST_DAY_OF_MONTHS'

EXPORTING

6
CDIGO ABAP - Formulario de Libro de Rgimen de Percepcin

day_in = lr_budat_aux-low

IMPORTING

last_day_of_month = lr_budat-high

EXCEPTIONS

day_in_no_date = 1

others = 2.

IF sy-subrc EQ 0.

APPEND lr_budat TO e_budat[].

ENDIF.

ENDMETHOD.

METHOD obtener_datos_generales.

CALL FUNCTION 'ZFIRFC_RETENCIONES'

EXPORTING

p_sociedad = x_bukrs

wt_inst_contab = x_postm

TABLES

r_budat = x_budat

r_kunnr = x_kunnr

r_witht = x_witht

r_withcd = x_withcd

gt_rfpos_wt = x_rfpos_wt.

ENDMETHOD.

METHOD generando_procesos.

me->obtener_rango_fechas(

EXPORTING

e_gjahr = i_gjahr

e_monat = i_monat[]

CHANGING

e_budat = i_budat[]

).

me->obtener_datos_generales(

EXPORTING

7
CDIGO ABAP - Formulario de Libro de Rgimen de Percepcin

x_bukrs = i_bukrs

x_postm = i_postm

x_kunnr = i_kunnr[]

x_budat = i_budat[]

x_witht = i_witht[]

x_withcd = i_withcd[]

CHANGING

x_rfpos_wt = gt_rfpos_wt[]

).

me->generar_det_percepciones(

EXPORTING

u_kunnr = i_kunnr[]

u_budat = i_budat[]

u_rfpos_wt = gt_rfpos_wt[]

CHANGING

u_det_perc = gt_det_perc[]

).

me->generar_formulario_impr(

EXPORTING

y_cabecera = gw_cabecera

y_det_perc = gt_det_perc[]

).

ENDMETHOD.

METHOD generar_det_percepciones.

DATA: lt_bsad TYPE STANDARD TABLE OF ty_bsad,

lt_rfpos_wt TYPE STANDARD TABLE OF zwrfpos_wt,

lv_rsocial(40) TYPE c.

FIELD-SYMBOLS: <lfs_rfpos_wt> TYPE zwrfpos_wt,

<lfs_det_perc> TYPE zwdet_percep,

<lfs_bsad> TYPE ty_bsad.

*Pase de tablas genricas a especficas

8
CDIGO ABAP - Formulario de Libro de Rgimen de Percepcin

lt_rfpos_wt[] = u_rfpos_wt[].

*Validacin de existencia de datos para proceso

IF lt_rfpos_wt[] IS NOT INITIAL.

SORT lt_rfpos_wt[] BY wt_acco belnr ASCENDING.

*Datos de Compensacin

SELECT bukrs kunnr belnr gjahr augdt augbl shkzg

INTO TABLE lt_bsad

FROM bsad

FOR ALL ENTRIES IN lt_rfpos_wt

WHERE bukrs EQ lt_rfpos_wt-bukrs

AND kunnr IN u_kunnr[]

AND belnr EQ lt_rfpos_wt-belnr

AND gjahr EQ lt_rfpos_wt-gjahr

AND augdt IN u_budat[].

IF sy-subrc EQ 0.

SORT lt_bsad[] BY kunnr belnr ASCENDING.

ENDIF.

LOOP AT lt_rfpos_wt ASSIGNING <lfs_rfpos_wt>.

CLEAR: lv_rsocial.

APPEND INITIAL LINE TO u_det_perc ASSIGNING <lfs_det_perc>.

IF <lfs_det_perc> IS ASSIGNED.

* Cod Cliente

<lfs_det_perc>-cod_cli = <lfs_rfpos_wt>-wt_acco.

* Documento (solo para informacin, no solicitado)

<lfs_det_perc>-documento = <lfs_rfpos_wt>-belnr.

* Razn Social

IF <lfs_rfpos_wt>-wt_acco_stcd1+0(1) = '1'.

CONDENSE: <lfs_rfpos_wt>-wt_acco_name1,

<lfs_rfpos_wt>-wt_acco_name2,

<lfs_rfpos_wt>-wt_acco_name3.

9
CDIGO ABAP - Formulario de Libro de Rgimen de Percepcin

CONCATENATE <lfs_rfpos_wt>-wt_acco_name3

<lfs_rfpos_wt>-wt_acco_name1

<lfs_rfpos_wt>-wt_acco_name2

INTO <lfs_det_perc>-rsocial

SEPARATED BY space.

ELSE.

CONDENSE: <lfs_rfpos_wt>-wt_acco_name1,

<lfs_rfpos_wt>-wt_acco_name2.

CONCATENATE <lfs_rfpos_wt>-wt_acco_name1

<lfs_rfpos_wt>-wt_acco_name2

INTO <lfs_det_perc>-rsocial

SEPARATED BY space.

ENDIF.

lv_rsocial = <lfs_det_perc>-rsocial.

* F.Transaccin

<lfs_det_perc>-fctrans = <lfs_rfpos_wt>-bldat.

* Serie

<lfs_det_perc>-d_serie = <lfs_rfpos_wt>-xblnr+4(4).

* Nmero

<lfs_det_perc>-d_numero = <lfs_rfpos_wt>-xblnr+9.

* Porcentaje

<lfs_det_perc>-porcent = <lfs_rfpos_wt>-qsatz.

* Doc.Compensacin

<lfs_det_perc>-doc_compe = space.

IF <lfs_rfpos_wt>-wt_qsshh >= 0.

* Debe

<lfs_det_perc>-debe = abs( <lfs_rfpos_wt>-wt_qsshh ).

ELSE.

* Haber

<lfs_det_perc>-haber = abs( <lfs_rfpos_wt>-wt_qsshh ).

ENDIF.

* Saldo

<lfs_det_perc>-saldo = abs( <lfs_rfpos_wt>-wt_qsshh ).

* Percepcin

10
CDIGO ABAP - Formulario de Libro de Rgimen de Percepcin

<lfs_det_perc>-percepcion = abs( <lfs_rfpos_wt>-wt_qbshh ).

ENDIF.

*****************************************************************************

READ TABLE lt_bsad ASSIGNING <lfs_bsad> WITH KEY kunnr =


<lfs_rfpos_wt>-wt_acco

belnr =
<lfs_rfpos_wt>-belnr.

IF <lfs_bsad> IS ASSIGNED.

UNASSIGN <lfs_det_perc>.

APPEND INITIAL LINE TO u_det_perc ASSIGNING <lfs_det_perc>.

IF <lfs_det_perc> IS ASSIGNED.

* Cod Cliente

<lfs_det_perc>-cod_cli = <lfs_rfpos_wt>-wt_acco.

* Documento (solo para informacin, no solicitado)

<lfs_det_perc>-documento = <lfs_rfpos_wt>-belnr.

* Razn Social

<lfs_det_perc>-rsocial = lv_rsocial.

* F.Transaccin

<lfs_det_perc>-fctrans = <lfs_bsad>-augdt.

* Serie

<lfs_det_perc>-d_serie = <lfs_rfpos_wt>-xblnr+4(4).

* Nmero

<lfs_det_perc>-d_numero = <lfs_rfpos_wt>-xblnr+9.

* Porcentaje

<lfs_det_perc>-porcent = space.

* Doc.Compensacin

<lfs_det_perc>-doc_compe = <lfs_bsad>-augbl.

IF <lfs_bsad>-shkzg EQ 'S'.

* Debe

<lfs_det_perc>-debe = abs( <lfs_rfpos_wt>-wt_qsshh ).

ELSE.

* Haber

<lfs_det_perc>-haber = abs( <lfs_rfpos_wt>-wt_qsshh ).

ENDIF.

* Saldo

11
CDIGO ABAP - Formulario de Libro de Rgimen de Percepcin

<lfs_det_perc>-saldo = space.

* Percepcin

<lfs_det_perc>-percepcion = space.

ENDIF.

ENDIF.

ENDLOOP.

ENDIF.

ENDMETHOD.

METHOD generar_formulario_impr.

DATA: ls_formname TYPE tdsfname,

ls_fm_name TYPE rs38l_fnam,

ls_control_param TYPE ssfctrlop,

ls_output_param TYPE ssfcompop,

lt_det_perc TYPE STANDARD TABLE OF zwdet_percep.

ls_control_param-getotf = ''.

ls_control_param-no_dialog = 'X'.

ls_control_param-preview = 'X'.

ls_output_param-tdnoprint = ''.

ls_output_param-tdimmed = ''.

ls_output_param-tddelete = ''.

ls_output_param-tddest = 'LP01'.

ls_output_param-tdnewid = ''.

ls_output_param-tdnoprev = ''.

ls_formname = 'ZSSF_FI100'.

lt_det_perc[] = y_det_perc[].

CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'

EXPORTING

formname = ls_formname

12
CDIGO ABAP - Formulario de Libro de Rgimen de Percepcin

IMPORTING

fm_name = ls_fm_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.

ELSE.

CALL FUNCTION ls_fm_name

EXPORTING

control_parameters = ls_control_param

output_options = ls_output_param

user_settings = ' '

w_cabecera = y_cabecera

TABLES

t_detalle = lt_det_perc

EXCEPTIONS

formatting_error = 1

internal_error = 2

send_error = 3

user_canceled = 4

OTHERS = 5.

ENDIF.

ENDMETHOD.

ENDCLASS.

13

Potrebbero piacerti anche