Download as txt, pdf, or txt
Download as txt, pdf, or txt
You are on page 1of 44

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

*& Report ZACONS_UPD_MAS_INMU


*&
*&---------------------------------------------------------------------*
*& Altamira: Actualizacin Masiva de Datos de Inmuebles a travs de
*& un ALV editable.
*&---------------------------------------------------------------------*
REPORT zacons_upd_mas_inmu.
TYPE-POOLS slis.
TABLES: zacons_sc35,
dd02t.
* local class to handle semantic checks
CLASS lcl_event_receiver DEFINITION DEFERRED.
INCLUDE zacons_upd_mas_data.
*------------------------- Datos Globales ----------------------------*
TYPES: typ_estado TYPE zstinmu.
DATA estado TYPE typ_estado.
DATA gt_dfies TYPE TABLE OF dfies.
DATA gt_lines_descr TYPE ddtypelist.
DATA: BEGIN OF gt_fields OCCURS 0.
INCLUDE STRUCTURE zacons_fld_upd.
DATA rollname TYPE rollname.
DATA END
OF gt_fields.
DATA gt_promo TYPE typ_t_promo.
DATA gt_inmu TYPE typ_t_inmu.
*data g_tabname type tabname.
DATA g_okcode TYPE syucomm.
*data g_cancel type c.
DATA g_jobname TYPE btcjob.
DATA g_answer(1).
*------- Vbles. ALV
DATA g_repid TYPE syrepid.
*data gt_fieldcat type slis_t_fieldcat_alv.
DATA gt_fldcat TYPE lvc_t_fcat.
DATA gt_sort TYPE lvc_t_sort.
DATA: g_variant
LIKE disvariant.
DATA: gx_variant
LIKE disvariant.
DATA: g_variant_save.
DATA: BEGIN OF gt_leftx OCCURS 0.
INCLUDE STRUCTURE lvc_s_objs. " campos elegidos del catalogo
DATA: fieldname TYPE fieldname,
tabname TYPE tabname.
DATA: END OF gt_leftx.
DATA: g_cc TYPE REF TO cl_gui_custom_container,
g_container TYPE scrfname VALUE 'GRID_OUT_DAT',
*
g_grid type ref to cl_gui_alv_grid,
gs_layout TYPE lvc_s_layo,
gt_groups TYPE lvc_t_sgrp.

DATA gt_exclude TYPE ui_functions.


DATA: ok_code LIKE sy-ucomm,
save_ok LIKE ok_code.
DATA g_event_receiver TYPE REF TO lcl_event_receiver.
DATA g_rc TYPE sysubrc.
*----------------------------------------------------------------------*
*
P A N T A L L A
D E
S E L E C C I O N
*
*----------------------------------------------------------------------*
INCLUDE zacons_upd_mas_screen_frame.
INCLUDE zacons_upd_mas_form.
SELECTION-SCREEN BEGIN OF BLOCK f WITH FRAME TITLE text-s03.
PARAMETERS: variant LIKE disvariant-variant MODIF ID off.
SELECTION-SCREEN END OF BLOCK f.
INCLUDE zacons_upd_mas_atselscr.
**************************************************************
* LOCAL CLASS Definition
**************************************************************
*4.Define and implement event handler to handle event DATA_CHANGED.
CLASS lcl_event_receiver DEFINITION.
PUBLIC SECTION.
METHODS:
handle_double_click
FOR EVENT double_click OF cl_gui_alv_grid
IMPORTING e_row e_column,
on_f4 FOR EVENT onf4 OF cl_gui_alv_grid
IMPORTING e_fieldname
es_row_no
er_event_data
et_bad_cells
e_display,
handle_data_changed
FOR EVENT data_changed OF cl_gui_alv_grid
IMPORTING er_data_changed,
on_datachangefinis FOR EVENT data_changed_finished
OF cl_gui_alv_grid
IMPORTING e_modified
et_good_cells.
*
PRIVATE SECTION.
* This flag is set if any error occured in one of the
* following methods:
DATA: error_in_data TYPE c.
* Methods to modularize event handler method HANDLE_DATA_CHANGED:
*
*
*
*

methods chek_comercializadora " Chequeo hecho con Tab.Verificacin


importing
ps_good_cells type lvc_s_modi
pr_data_changed type ref to cl_alv_changed_data_protocol.

METHODS check_datos_direccion
IMPORTING
ps_good_cells TYPE lvc_s_modi
pr_data_changed TYPE REF TO cl_alv_changed_data_protocol.
METHODS check_municipio
IMPORTING
ps_good_cells TYPE lvc_s_modi
pr_data_changed TYPE REF TO cl_alv_changed_data_protocol.
*
*
*
*

methods check_planta
importing
ps_good_cells type lvc_s_modi
pr_data_changed type ref to cl_alv_changed_data_protocol.

*--- SCJ 23.05.2014 comentado para evitar el dump cuando slo se pone
* precio de venta sin aadir tambin los % p
METHODS check_precio_venta
IMPORTING
ps_good_cells TYPE lvc_s_modi
pr_data_changed TYPE REF TO cl_alv_changed_data_protocol.
*--- SCJ 23.05.2014 fin
METHODS check_suma_porcentajes
IMPORTING
ps_good_cells TYPE lvc_s_modi
pr_data_changed TYPE REF TO cl_alv_changed_data_protocol.
METHODS check_datos_aprobados_comite
IMPORTING
ps_good_cells TYPE lvc_s_modi
pr_data_changed TYPE REF TO cl_alv_changed_data_protocol.
METHODS check_anejos
IMPORTING
ps_good_cells TYPE lvc_s_modi
pr_data_changed TYPE REF TO cl_alv_changed_data_protocol.
METHODS check_anejado_a
IMPORTING
ps_good_cells TYPE lvc_s_modi
pr_data_changed TYPE REF TO cl_alv_changed_data_protocol.
METHODS check_codigo_postal
IMPORTING
ps_good_cells TYPE lvc_s_modi
pr_data_changed TYPE REF TO cl_alv_changed_data_protocol.
METHODS check_envia_web
IMPORTING
ps_good_cells TYPE lvc_s_modi
pr_data_changed TYPE REF TO cl_alv_changed_data_protocol.
METHODS check_porc_indep
IMPORTING
ps_good_cells TYPE lvc_s_modi
pr_data_changed TYPE REF TO cl_alv_changed_data_protocol.
METHODS check_ayuntamiento
IMPORTING
ps_good_cells TYPE lvc_s_modi
pr_data_changed TYPE REF TO cl_alv_changed_data_protocol.

METHODS check_status_unidad
IMPORTING
ps_good_cells TYPE lvc_s_modi
pr_data_changed TYPE REF TO cl_alv_changed_data_protocol.
METHODS check_inicializado
IMPORTING
ps_good_cells TYPE lvc_s_modi
pr_data_changed TYPE REF TO cl_alv_changed_data_protocol.
METHODS check_suputil
IMPORTING
ps_good_cells TYPE lvc_s_modi
pr_data_changed TYPE REF TO cl_alv_changed_data_protocol.
* Inicio Inser. DSH DF-DM-GAP236-24-25-249-bloqueos
* Methods para campo STATUS_BL
METHODS check_status_bl
IMPORTING
ps_good_cells TYPE lvc_s_modi
pr_data_changed TYPE REF TO cl_alv_changed_data_protocol.
* Fin Inser. DSH
ENDCLASS.
"lcl_event_receiver DEFINITION
*----------------------------------------------------------------------*
*
CLASS lcl_event_receiver IMPLEMENTATION
*----------------------------------------------------------------------*
CLASS lcl_event_receiver IMPLEMENTATION.
METHOD handle_double_click.
MESSAGE i000(0k) WITH 'Zeile'(010) e_row
'SpaltenID'(002) e_column.
CALL METHOD cl_gui_control=>set_focus
EXPORTING
control = g_grid.
ENDMETHOD.
"handle_double_click
METHOD handle_data_changed.
DATA: ls_good TYPE lvc_s_modi.
DATA ls_mod TYPE lvc_s_modi.
DATA ls_cells TYPE lvc_s_modi.
error_in_data = space.
* semantic checks
LOOP AT er_data_changed->mt_good_cells INTO ls_good.
CASE ls_good-fieldname.
WHEN 'CLAVE_PAIS'.
CALL METHOD check_datos_direccion
EXPORTING
ps_good_cells = ls_good
pr_data_changed = er_data_changed.
WHEN 'REGION'.
CALL METHOD check_datos_direccion
EXPORTING
ps_good_cells = ls_good
pr_data_changed = er_data_changed.
WHEN 'MUNICIPIO'.
CALL METHOD check_datos_direccion
EXPORTING
ps_good_cells = ls_good
pr_data_changed = er_data_changed.
WHEN 'CODIGO_POSTAL'.

CALL METHOD check_datos_direccion


EXPORTING
ps_good_cells = ls_good
pr_data_changed = er_data_changed.
WHEN 'PERC_ENTRADA'.
CALL METHOD check_suma_porcentajes
EXPORTING
ps_good_cells = ls_good
pr_data_changed = er_data_changed.
WHEN 'PERC_CONTRATO'.
CALL METHOD check_suma_porcentajes
EXPORTING
ps_good_cells = ls_good
pr_data_changed = er_data_changed.
WHEN 'PERC_LLAVES'.
CALL METHOD check_suma_porcentajes
EXPORTING
ps_good_cells = ls_good
pr_data_changed = er_data_changed.
WHEN 'PRECIO_VENTA_TR'.
*--- SCJ 23.05.2014 ini
CALL METHOD check_precio_venta
EXPORTING
ps_good_cells = ls_good
pr_data_changed = er_data_changed.
*--- SCJ 23.05.2014 fin
*--- Chequear campos de aprobaciones en Comit
WHEN 'PAPROBCOM'. " Precio Aprobado en Comit
CALL METHOD check_datos_aprobados_comite
EXPORTING
ps_good_cells = ls_good
pr_data_changed = er_data_changed.
WHEN 'FAPROBCOM'. " Fecha Aprobacin en Comit
CALL METHOD check_datos_aprobados_comite
EXPORTING
ps_good_cells = ls_good
pr_data_changed = er_data_changed.
*--- Chequear valores de campos anejados o vincualados a un inmueble
WHEN 'GARAJE1' OR 'GARAJE2' OR 'ID_GARAJE_CHAR' OR
'TRASTERO1' OR 'TRASTERO2' OR 'ID_TRASTERO_CHAR' OR
'ID_VIVIENDA'.
CALL METHOD check_anejos
EXPORTING
ps_good_cells = ls_good
pr_data_changed = er_data_changed.
WHEN 'ID_PISO'.
CALL METHOD check_anejado_a
EXPORTING
ps_good_cells = ls_good
pr_data_changed = er_data_changed.
*
*
*
*
*
*

when 'COD_COMERC'.
CALL METHOD chek_comercializadora
EXPORTING
ps_good_cells = ls_good
pr_data_changed = er_data_changed.
when 'PLANTA'.

*
*
*
*

call method check_planta


exporting
ps_good_cells = ls_good
pr_data_changed = er_data_changed.
WHEN 'ENVIA_A_WEB'.
CALL METHOD check_envia_web
EXPORTING
ps_good_cells = ls_good
pr_data_changed = er_data_changed.
WHEN 'PRC_HIP_TAS' OR 'PRC_HIP_INV'.
CALL METHOD check_porc_indep
EXPORTING
ps_good_cells = ls_good
pr_data_changed = er_data_changed.
WHEN 'AYUNTAMTODS' OR 'AYUNTAMTOLO' OR 'AYUNTAMTOLPO'.
CALL METHOD check_ayuntamiento
EXPORTING
ps_good_cells = ls_good
pr_data_changed = er_data_changed.
* Inicio Modif. DSH 04.09.2014
* Se vuelve a validar el campo STATUS_UNIDAD GAP DF-DM - GAP 24-25 y 236
* AJMAYORAL 21.07.2014 Regresin del GAP DF-DM - GAP 24-25 y 236
WHEN 'STATUS_UNIDAD'.
AUTHORITY-CHECK OBJECT 'ZAC_ST_UNI'
ID 'ZAC_STAT_U' FIELD zacons_sc35-status_unidad
ID 'BUKRS' FIELD zacons_sc35-sociedad.
IF sy-subrc NE 0.
*
MOVE sy-subrc TO g_rc.
*
MESSAGE i937(zacons_mensajes).
ENDIF.
*DATA: lv_anej_regi TYPE ZACONS_ANEJ_REG.
* select single anej_regi
*
from zacons_sc35
*
into lv_anej_regi
*
where processo eq ls_good-processo and
*
cod_propiedad eq ls_good-cod_propiedad.
*if lv_anej_regi is NOT initial.
CALL METHOD check_status_unidad
EXPORTING
ps_good_cells = ls_good
pr_data_changed = er_data_changed.
*
*
*
*
*

endif.
FIN AJMAYORAL 21.07.2014 Regresin del GAP DF-DM - GAP 24-25 y 236
Fin Modif. DSH 04.09.2014
Inicio Inser. DSH 08.09.2014 GAP DF-DM - GAP 24-25 y 236
Se valida el campo STATUS_BL (Status de bloqueo)
WHEN 'STATUS_BL'.
AUTHORITY-CHECK OBJECT 'ZAC_ST_BLO'
ID 'ZAC_STAT_B' FIELD zacons_sc35-status_bloqueo
ID 'BUKRS' FIELD zacons_sc35-sociedad.
IF sy-subrc NE 0.
*
MOVE sy-subrc TO g_rc.
*
MESSAGE i937(zacons_mensajes).
ENDIF.
CALL METHOD check_status_bl
EXPORTING
ps_good_cells = ls_good
pr_data_changed = er_data_changed.

* Fin Inser. DSH


WHEN 'TIPO' OR 'SUBTIPO' OR 'TAXKM' OR 'KTGRM' OR 'CODIGO_OPERACION'
OR 'DESCRIPCION' OR 'COD_OC1' OR 'ZONA' OR 'GSTRP'.
CALL METHOD check_inicializado
EXPORTING
ps_good_cells = ls_good
pr_data_changed = er_data_changed.
*--- SCJ 24.07.2014 ini
WHEN 'SUP_UTIL'.
CALL METHOD check_suputil
EXPORTING
ps_good_cells = ls_good
pr_data_changed = er_data_changed.
*--- SCJ 24.07.2014 fin
ENDCASE.
ENDLOOP.
*-- Display application log if an error has occured.
IF error_in_data EQ 'X'.
CALL METHOD er_data_changed->display_protocol.
ENDIF.
ENDMETHOD.

"handle_data_changed

METHOD on_datachangefinis.
*--- Data in the Output Table was Updated
DATA ls_goodcells LIKE LINE OF et_good_cells.
IF e_modified IS NOT INITIAL.
LOOP AT et_good_cells INTO ls_goodcells.
PERFORM marcar_entrada_modif_en_table USING g_tabname
ls_goodcells-row_id.
ENDLOOP.
ENDIF.
ENDMETHOD.

"user_command

METHOD on_f4.
*--- Llamar a nuestra propia F4 help
PERFORM f4_for_vinculados USING er_event_data
gt_inmu
e_fieldname
es_row_no.
PERFORM f4_for_anejado_a USING er_event_data
gt_inmu
e_fieldname
es_row_no.
*--- Informar al ALV Grid Control que una f4 help nuestra, ha sido
* procesada para suprimir la standard f4 help.
er_event_data->m_event_handled = 'X'.
ENDMETHOD.
"on_f4
* method chek_comercializadora.
*
data ls_comerc type zacons_comerc.
*
data l_comerc type zacons_cod_comerc.

*
data l_butxt type butxt.
*
*-- Get new cell value to check it.
*
call method pr_data_changed->get_cell_value
*
exporting
*
i_row_id
= ps_good_cells-row_id
*
i_fieldname = ps_good_cells-fieldname
*
importing
*
e_value
= l_comerc.
*-- Chequear que la comercializadora existe
*
select * from zacons_comerc into ls_comerc up to 1 rows
*
where sociedad eq p_socied
*
and
cod_comerc eq l_comerc.
*
endselect.
*
if sy-subrc ne 0.
* In case of error, create a protocol entry in the application log.
* Possible values for message type ('i_msgty'):
*
*
'A': Abort (Stop sign)
*
'E': Error (red LED)
*
'W': Warning (yellow LED)
*
'I': Information (green LED)
*
select single butxt from t001 into l_butxt
*
where bukrs eq p_socied.
*
if sy-subrc ne 0. clear l_butxt. endif.
*
*
call method pr_data_changed->add_protocol_entry
*
exporting
*
i_msgid
= '0K'
*
i_msgno
= '000'
*
i_msgty
= 'E'
*
i_msgv1
= text-m01
*
i_msgv2
= l_comerc
*
i_msgv3
= text-m02
*
i_msgv4
= l_butxt
*
i_fieldname = ps_good_cells-fieldname
*
i_row_id
= ps_good_cells-row_id.
*
*
error_in_data = 'X'.
*
exit. "plane does not exit, so we're finished here!
*
endif.
* endmethod.
"chek_comercializadora
METHOD check_datos_direccion.
DATA ls_promo LIKE LINE OF gt_promo.
DATA pos_adrs TYPE adrs_post.
DATA ls_dirpromo TYPE zac_st_dir_promo.
DATA l_rc TYPE sysubrc.
DATA l_fieldname TYPE fieldname.
FIELD-SYMBOLS: <lt_tab> TYPE typ_t_promo,
<ls_promo> TYPE typ_promo.
ASSIGN pr_data_changed->mp_mod_rows->* TO <lt_tab>.
*--- leer la fila de la tabla que ha sido modificada
READ TABLE <lt_tab> INDEX ps_good_cells-tabix
ASSIGNING <ls_promo>.
IF sy-subrc EQ 0.
MOVE: <ls_promo>-clave_pais
TO pos_adrs-country,

<ls_promo>-region
TO pos_adrs-region,
<ls_promo>-codigo_postal TO pos_adrs-post_code1.
CALL FUNCTION 'ADDR_POSTAL_CODE_CHECK'
EXPORTING
country
= <ls_promo>-clave_pais
postal_address
= pos_adrs
EXCEPTIONS
country_not_valid
= 1
region_not_valid
= 2
postal_code_city_not_valid
= 3
postal_code_po_box_not_valid = 4
postal_code_company_not_valid = 5
po_box_missing
= 6
postal_code_po_box_missing
= 7
postal_code_missing
= 8
postal_code_pobox_comp_missing = 9
po_box_region_not_valid
= 10
po_box_country_not_valid
= 11
pobox_and_poboxnum_filled
= 12
OTHERS
= 13.
MOVE sy-subrc TO l_rc.
CASE l_rc.
WHEN 1. MOVE 'CLAVE_PAIS' TO l_fieldname.
WHEN 2. MOVE 'REGION' TO l_fieldname.
WHEN 3. MOVE 'CODIGO_POSTAL' TO l_fieldname.
ENDCASE.
IF l_rc NE 0." and l_fieldname eq ps_good_cells-fieldname.
CALL METHOD pr_data_changed->add_protocol_entry
EXPORTING
i_msgid
= sy-msgid
i_msgno
= sy-msgno
i_msgty
= 'E'
i_msgv1
= sy-msgv1
i_msgv2
= sy-msgv2
i_msgv3
= sy-msgv3
i_msgv4
= sy-msgv4
i_fieldname = ps_good_cells-fieldname
i_row_id
= ps_good_cells-row_id.
MOVE 'X' TO error_in_data.
EXIT.
ENDIF.
*--- Chequear concordancia de municipio y regin
MOVE: <ls_promo>-municipio TO ls_dirpromo-municipio,
<ls_promo>-region
TO ls_dirpromo-region .
*
*
*
*
*
*
*
*
*
*
*
*

call function 'ZACONS_CHECK_MUNICIPIO'


exporting
is_dirpromo
= ls_dirpromo
exceptions
muni_no_region = 1
muni_no_existe = 2
others
= 3.
move sy-subrc to l_rc.
case l_rc.
when 1. " La regin &1 no tiene definida el municipio &2.
move 'REGION' to l_fieldname.

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

when 2. " El municipio no existe


move 'MUNICIPIO' to l_fieldname.
endcase.
if l_rc ne 0 and l_fieldname eq ps_good_cells-fieldname.
call method pr_data_changed->add_protocol_entry
exporting
i_msgid
= sy-msgid
i_msgno
= sy-msgno
i_msgty
= 'E'
i_msgv1
= sy-msgv1
i_msgv2
= sy-msgv2
i_msgv3
= sy-msgv3
i_fieldname = ps_good_cells-fieldname
i_row_id
= ps_good_cells-row_id.
error_in_data = 'X'.
exit.
endif.
ENDIF.
ENDMETHOD.
"check_datos_direccion
METHOD
DATA
DATA
DATA
DATA

check_municipio.
l_muni TYPE zcod_municipio.
ls_muni TYPE ztbsue_001.
ls_dirpromo TYPE zac_st_dir_promo.
ls_promo LIKE LINE OF gt_promo.

*-- Get new cell value to check it.


CALL METHOD pr_data_changed->get_cell_value
EXPORTING
i_row_id
= ps_good_cells-row_id
i_fieldname = ps_good_cells-fieldname
IMPORTING
e_value
= ls_dirpromo-municipio.
*--- El los valores de la fila donde se produce el error.
READ TABLE gt_promo INTO ls_promo INDEX ps_good_cells-row_id.
IF sy-subrc EQ 0.
MOVE ls_promo-region TO ls_dirpromo-region.
ENDIF.
*-- chequear que el municipio existe
CALL FUNCTION 'ZACONS_CHECK_MUNICIPIO'
EXPORTING
is_dirpromo
= ls_dirpromo
EXCEPTIONS
muni_no_region = 1
muni_no_existe = 2
OTHERS
= 3.
IF sy-subrc NE 0.
CALL METHOD pr_data_changed->add_protocol_entry
EXPORTING
i_msgid
= sy-msgid
i_msgno
= sy-msgno
i_msgty
= 'E'
i_msgv1
= sy-msgv1
i_msgv2
= sy-msgv2
i_msgv3
= sy-msgv3
i_fieldname = ps_good_cells-fieldname
i_row_id
= ps_good_cells-row_id.

error_in_data = 'X'.
EXIT.
ENDIF.
ENDMETHOD.

"check_municipio

METHOD check_suputil.
DATA ls_inmu LIKE LINE OF gt_inmu.
DATA l_sup_util TYPE zacons_sup_util.
DATA l_sup_cons TYPE zacons_sup_construida.
DATA ls_dirpromo TYPE zac_st_dir_promo.
DATA l_rc TYPE sysubrc.
DATA l_fieldname TYPE fieldname.
FIELD-SYMBOLS: <lt_tab> TYPE typ_t_inmu,
<ls_inmu> TYPE typ_inmu.
ASSIGN pr_data_changed->mp_mod_rows->* TO <lt_tab>.
*--- leer la fila de la tabla que ha sido modificada
READ TABLE <lt_tab> INDEX ps_good_cells-tabix
ASSIGNING <ls_inmu>.
IF sy-subrc EQ 0.
MOVE: <ls_inmu>-sup_util
TO l_sup_util,
<ls_inmu>-sup_construida TO l_sup_cons.
IF l_sup_util GT l_sup_cons.
CALL METHOD pr_data_changed->add_protocol_entry
EXPORTING
i_msgid
= 'ZACONS'
i_msgno
= '163'
i_msgty
= 'E'
i_fieldname = ps_good_cells-fieldname
i_row_id
= ps_good_cells-row_id.
MOVE 'X' TO error_in_data.
EXIT.
ENDIF.
ENDIF.
ENDMETHOD.
"check_suputil
* method check_planta.
*
data l_planta type vvxstockk.
*
data l_plantaout type zacons_tipo_planta.
*
data ls_tipoplant type zacons_tipoplant.
*
*
**-- Get new cell value to check it.
*
call method pr_data_changed->get_cell_value
*
exporting
*
i_row_id
= ps_good_cells-row_id
*
i_fieldname = ps_good_cells-fieldname
*
importing
*
e_value
= l_planta.
*
*
call function 'CONVERSION_EXIT_ALPHA_OUTPUT'
*
exporting
*
input = l_planta
*
importing

*
output = l_plantaout.
*
*
select * from zacons_tipoplant into ls_tipoplant up to 1 rows
*
where tipo_planta eq l_plantaout.
*
endselect.
*
*
if sy-subrc ne 0.
*
call method pr_data_changed->add_protocol_entry
*
exporting
*
i_msgid
= '0K'
*
i_msgno
= '000'
*
i_msgty
= 'E'
*
i_msgv1
= text-m07
*
i_msgv2
= l_planta
*
i_msgv3
= text-m06
*
i_fieldname = ps_good_cells-fieldname
*
i_row_id
= ps_good_cells-row_id.
*
*
error_in_data = 'X'.
*
exit.
*
endif.
* endmethod.
"check_planta
METHOD check_precio_venta.
DATA ls_inmu LIKE LINE OF gt_inmu.
DATA suma
TYPE p DECIMALS 2.
DATA percsum TYPE p DECIMALS 2.
DATA l_pvp TYPE zacons_precio_tr.
DATA: l_sumimpt(20),
l_pvpt(20).
DATA: l_pentrada TYPE fproz,
l_pcontrato TYPE fproz,
l_pinput TYPE fproz,
l_paplaza TYPE fproz,
l_pllaves TYPE fproz,
l_sendweb TYPE zacons_envia_web.
DATA msg(132).

*-- Valor del Precio de Venta al pblico


CALL METHOD pr_data_changed->get_cell_value
EXPORTING
i_row_id
= ps_good_cells-row_id
i_fieldname = ps_good_cells-fieldname
IMPORTING
e_value
= l_pvp.
CALL METHOD pr_data_changed->get_cell_value
EXPORTING
i_row_id
= ps_good_cells-row_id
i_fieldname = 'PERC_ENTRADA'
IMPORTING
e_value
= l_pentrada.
CALL METHOD pr_data_changed->get_cell_value
EXPORTING
i_row_id
= ps_good_cells-row_id
i_fieldname = 'PERC_INPUTCONTRA'

IMPORTING
e_value

= l_pinput.

CALL METHOD pr_data_changed->get_cell_value


EXPORTING
i_row_id
= ps_good_cells-row_id
i_fieldname = 'PERC_APLAZADO'
IMPORTING
e_value
= l_paplaza.
CALL METHOD pr_data_changed->get_cell_value
EXPORTING
i_row_id
= ps_good_cells-row_id
i_fieldname = 'PERC_LLAVES'
IMPORTING
e_value
= l_pllaves.
*-- ERROR si los porcentajes no son 100!
ADD: l_pentrada TO percsum,
*
l_pcontrato to percsum,
l_pinput TO percsum,
l_paplaza TO percsum,
l_pllaves TO percsum.
*--- SCJ 30.05.2014 ini
*--- este error se va a dar en el JOB porque en la pantalla es un lo
* cuando no se han puesto en la misma los campo de % para ser modificados
*
if percsum ne 100.
*
call method pr_data_changed->add_protocol_entry
*
exporting
*
i_msgid
= '0K'
*
i_msgno
= '000'
*
i_msgty
= 'E'
*
i_msgv1
= text-m08
*
i_fieldname = 'PRECIO_VENTA_TR'
*
i_row_id
= ps_good_cells-row_id.
*
move 'X' to error_in_data.
*
exit.
*
endif.
*--- SCJ 30.05.2014 fin
*-- Calcular los importes en base a los porcentajes y precio venta
*
ls_inmu-importe_contrato = l_pcontrato * l_pvp / 100.
ls_inmu-importe_entrada = l_pentrada * l_pvp / 100.
ls_inmu-imp_input

= l_pinput * l_pvp / 100.

ls_inmu-imp_aplazado

= l_paplaza * l_pvp / 100.

ls_inmu-importe_llaves = l_pllaves * l_pvp / 100.


*--- el importe de contrato es la suma de los importes de:
* Reserva, Entrada y aplazado
ls_inmu-importe_contrato = ls_inmu-importe_entrada +
ls_inmu-imp_input
+
ls_inmu-imp_aplazado.
*-- comprobar si los porcentajes suman 100
ADD: ls_inmu-importe_entrada TO suma,
ls_inmu-imp_input
TO suma,

ls_inmu-imp_aplazado
ls_inmu-importe_llaves

TO suma,
TO suma.

*
*--- SCJ 02.06.2014 ini
*--- este error se va a dar en el JOB porque en la pantalla es un lo
*- cuando no se han puesto ms campos para modificar que el propio PVP
*
if suma ne l_pvp.
*
write suma to l_sumimpt currency ls_inmu-waers.
*
write l_pvp to l_pvpt currency ls_inmu-waers.
*
concatenate text-m09 l_sumimpt text-m10 l_pvpt into msg
*
separated by space.
*
condense msg.
*
call method pr_data_changed->add_protocol_entry
*
exporting
*
i_msgid
= '0K'
*
i_msgno
= '000'
*
i_msgty
= 'E'
*
i_msgv1
= msg
*
i_fieldname = ps_good_cells-fieldname
*
i_row_id
= ps_good_cells-row_id.
*
move 'X' to error_in_data.
*
exit.
*
else.
*
endif.
*--- SCJ 02.06.2014 fin
ENDMETHOD.

"check_precio_venta

METHOD check_suma_porcentajes.
DATA l_suma TYPE p DECIMALS 2.
DATA ls_inmu LIKE LINE OF gt_inmu.
DATA: l_pentrada TYPE fproz,
l_pcontrato TYPE fproz,
l_pinput
TYPE fproz,
l_paplaza TYPE fproz,
l_pllaves TYPE fproz.
DATA ls_cells TYPE lvc_s_modi.
DATA l_pvp TYPE zacons_precio_tr.
*-- Leer los porcentajes(todos!)
CALL METHOD pr_data_changed->get_cell_value
EXPORTING
i_row_id
= ps_good_cells-row_id
i_fieldname = 'PERC_ENTRADA'
IMPORTING
e_value
= l_pentrada.
*
*
*
*
*
*

call method pr_data_changed->get_cell_value


exporting
i_row_id
= ps_good_cells-row_id
i_fieldname = 'PERC_CONTRATO'
importing
e_value
= l_pcontrato.
CALL METHOD pr_data_changed->get_cell_value
EXPORTING
i_row_id
= ps_good_cells-row_id
i_fieldname = 'PERC_INPUTCONTRA'
IMPORTING

e_value

= l_pinput.

CALL METHOD pr_data_changed->get_cell_value


EXPORTING
i_row_id
= ps_good_cells-row_id
i_fieldname = 'PERC_APLAZADO'
IMPORTING
e_value
= l_paplaza.
CALL METHOD pr_data_changed->get_cell_value
EXPORTING
i_row_id
= ps_good_cells-row_id
i_fieldname = 'PERC_LLAVES'
IMPORTING
e_value
= l_pllaves.
CALL METHOD pr_data_changed->get_cell_value
EXPORTING
i_row_id
= ps_good_cells-row_id
i_fieldname = 'PRECIO_VENTA_TR'
IMPORTING
e_value
= l_pvp.
*-- ERROR si los porcentajes no son 100!
ADD: l_pentrada TO l_suma,
*
l_pcontrato to l_suma,
l_pinput
TO l_suma,
l_paplaza TO l_suma,
l_pllaves TO l_suma.
ls_inmu-perc_contrato = ls_inmu-perc_entrada +
ls_inmu-perc_inputcontra +
ls_inmu-perc_aplazado.
IF l_suma NE 100 AND l_pvp IS NOT INITIAL.
CALL METHOD pr_data_changed->add_protocol_entry
EXPORTING
i_msgid
= '0K'
i_msgno
= '000'
i_msgty
= 'E'
i_msgv1
= text-m08
i_fieldname = ps_good_cells-fieldname
i_row_id
= ps_good_cells-row_id.
MOVE 'X' TO error_in_data.
EXIT.
ENDIF.
ENDMETHOD.

"check_SUMA_PORCENTAJES

METHOD check_datos_aprobados_comite.
DATA l_paprobcom TYPE zac_paprobcom.
DATA l_faprobcom TYPE zac_faprobcom.
*--- Obtener el valor del campo PAPROBCOM que ha sido modificado
CALL METHOD pr_data_changed->get_cell_value
EXPORTING
i_row_id
= ps_good_cells-row_id
i_fieldname = 'PAPROBCOM' " Precio Aprobado en Comit
IMPORTING

e_value

= l_paprobcom.

*--- Obtener el valor de la fecha de aprobacin


CALL METHOD pr_data_changed->get_cell_value
EXPORTING
i_row_id
= ps_good_cells-row_id
i_fieldname = 'FAPROBCOM'
IMPORTING
e_value
= l_faprobcom.
IF l_paprobcom IS NOT INITIAL AND l_faprobcom IS INITIAL.
CALL METHOD pr_data_changed->add_protocol_entry
EXPORTING
i_msgid
= 'ZACONS_MENSAJES'
i_msgno
= '002'
i_msgty
= 'E'
i_msgv1
= text-m14
i_fieldname = ps_good_cells-fieldname
i_row_id
= ps_good_cells-row_id.
MOVE 'X' TO error_in_data.
EXIT.
ENDIF.
IF l_paprobcom IS INITIAL AND l_faprobcom IS NOT INITIAL.
CALL METHOD pr_data_changed->add_protocol_entry
EXPORTING
i_msgid
= 'ZACONS_MENSAJES'
i_msgno
= '002'
i_msgty
= 'E'
i_msgv1
= text-m15
i_fieldname = ps_good_cells-fieldname
i_row_id
= ps_good_cells-row_id.
MOVE 'X' TO error_in_data.
EXIT.
ENDIF.
ENDMETHOD.
METHOD
DATA
DATA
DATA
DATA
DATA

"check_datos_aprobados_comite

check_anejos.
l_valor
TYPE matnr.
ls_inmu LIKE LINE OF gt_inmu.
lrg_tipo TYPE zac_rg_tipoinm.
ls_tipo TYPE zac_rg_st_tipoinm.
l_fieldname TYPE dynfnam.

*--- obtener el valor del campo id_vivienda que ha sido modificado


CALL METHOD pr_data_changed->get_cell_value
EXPORTING
i_row_id
= ps_good_cells-row_id
i_fieldname = ps_good_cells-fieldname
IMPORTING
e_value
= l_valor.
CHECK l_valor IS NOT INITIAL.
MOVE ps_good_cells-fieldname TO l_fieldname.
CALL FUNCTION 'ZACONS_FILL_RANGO_TIPOS_INMU'
EXPORTING
i_fieldname
= l_fieldname
IMPORTING

erg_tipo
= lrg_tipo
EXCEPTIONS
campo_no_previsto = 1
OTHERS
= 2.
CHECK sy-subrc EQ 0.
*--- El los valores de la fila donde se produce el error.
READ TABLE gt_inmu INTO ls_inmu INDEX ps_good_cells-row_id.
IF sy-subrc EQ 0.
CALL FUNCTION 'ZACONS_READ_INMUEBLES_POR_TIPO'
EXPORTING
i_tipo
= lrg_tipo
i_promo
= ls_inmu-processo
i_anejo_no_selec = ls_inmu-id_material
i_anejo
= l_valor
EXCEPTIONS
anejo_no_valido = 1
OTHERS
= 2.
IF sy-subrc NE 0.
CALL FUNCTION 'CONVERSION_EXIT_MATN1_OUTPUT'
EXPORTING
input = l_valor
IMPORTING
output = l_valor.
CALL METHOD pr_data_changed->add_protocol_entry
EXPORTING
i_msgid
= 'ZACONS'
i_msgno
= '143'
i_msgty
= 'E'
i_msgv1
= l_valor
i_fieldname = ps_good_cells-fieldname
i_row_id
= ps_good_cells-row_id.
MOVE 'X' TO error_in_data.
EXIT.
ENDIF.
ENDIF.
ENDMETHOD.

"CHECK_ANEJOS

METHOD check_anejado_a.
DATA ls_inmu LIKE LINE OF gt_inmu.
DATA l_valor TYPE zacons_cod_propiedad.
*--- obtener el valor del campo id_vivienda que ha sido modificado
CALL METHOD pr_data_changed->get_cell_value
EXPORTING
i_row_id
= ps_good_cells-row_id
i_fieldname = ps_good_cells-fieldname
IMPORTING
e_value
= l_valor.
CHECK l_valor IS NOT INITIAL.
READ TABLE gt_inmu INTO ls_inmu INDEX ps_good_cells-row_id.
IF sy-subrc EQ 0.
CALL FUNCTION 'ZACONS_READ_CODPROPIEDAD'
EXPORTING
i_promo
= ls_inmu-processo
i_anejo_no_selec
= ls_inmu-cod_propiedad
i_propi_aneja
= l_valor

EXCEPTIONS
codpropiedad_no_valida = 1
OTHERS
= 2.
IF sy-subrc NE 0.
CALL FUNCTION 'CONVERSION_EXIT_MATN1_OUTPUT'
EXPORTING
input = l_valor
IMPORTING
output = l_valor.
CALL METHOD pr_data_changed->add_protocol_entry
EXPORTING
i_msgid
= 'ZACONS'
i_msgno
= '144'
i_msgty
= 'E'
i_msgv1
= l_valor
i_msgv2
= ls_inmu-processo
i_fieldname = ps_good_cells-fieldname
i_row_id
= ps_good_cells-row_id.
MOVE 'X' TO error_in_data.
EXIT.
ENDIF.
ENDIF.
ENDMETHOD.
"CHECK_ANEJADO_A
METHOD
DATA
DATA
DATA

check_codigo_postal.
l_valor TYPE pstlz.
ls_promo LIKE LINE OF gt_promo.
pos_adrs TYPE adrs_post.

*--- obtener el valor del campo codigo postal que ha sido modificado
CALL METHOD pr_data_changed->get_cell_value
EXPORTING
i_row_id
= ps_good_cells-row_id
i_fieldname = ps_good_cells-fieldname
IMPORTING
e_value
= pos_adrs-post_code1.
*--- leer el resto de datos de la lnea modificada
READ TABLE gt_promo INTO ls_promo INDEX ps_good_cells-row_id.
IF sy-subrc EQ 0.
MOVE: ls_promo-clave_pais
TO pos_adrs-country,
ls_promo-region
TO pos_adrs-region.
CALL FUNCTION 'ADDR_POSTAL_CODE_CHECK'
EXPORTING
country
= ls_promo-clave_pais
postal_address
= pos_adrs
EXCEPTIONS
country_not_valid
= 1
region_not_valid
= 2
postal_code_city_not_valid
= 3
postal_code_po_box_not_valid = 4
postal_code_company_not_valid = 5
po_box_missing
= 6
postal_code_po_box_missing
= 7
postal_code_missing
= 8
postal_code_pobox_comp_missing = 9
po_box_region_not_valid
= 10
po_box_country_not_valid
= 11
pobox_and_poboxnum_filled
= 12

OTHERS
= 13.
IF sy-subrc NE 0.
CALL METHOD pr_data_changed->add_protocol_entry
EXPORTING
i_msgid
= sy-msgid
i_msgno
= sy-msgno
i_msgty
= 'E'
i_msgv1
= sy-msgv1
i_msgv2
= sy-msgv2
i_msgv3
= sy-msgv3
i_msgv4
= sy-msgv4
i_fieldname = ps_good_cells-fieldname
i_row_id
= ps_good_cells-row_id.
MOVE 'X' TO error_in_data.
EXIT.
ENDIF.
ENDIF.
ENDMETHOD.

"check_codigo_postal

METHOD check_envia_web.
DATA ls_inmu LIKE LINE OF gt_inmu.
DATA l_enviaweb TYPE zacons_envia_web.
DATA ls_sc35 TYPE zacons_sc35.
DATA ls_prtb001 TYPE zacons_prtb001.
DATA l_rc TYPE sysubrc.
DATA lt_urlfoto TYPE TABLE OF zacons_rutas_fic.
DATA: lt_msg TYPE TABLE OF bdcmsgcoll,
ls_msg TYPE bdcmsgcoll.
DATA l_msgno TYPE symsgno.
*--- obtener el valor del campo codigo postal que ha sido modificado
CALL METHOD pr_data_changed->get_cell_value
EXPORTING
i_row_id
= ps_good_cells-row_id
i_fieldname = ps_good_cells-fieldname
IMPORTING
e_value
= l_enviaweb.
CHECK l_enviaweb EQ c_true.
*--- leer el resto de datos de la lnea modificada
READ TABLE gt_inmu INTO ls_inmu INDEX ps_good_cells-row_id.
IF l_rc EQ 0.
MOVE-CORRESPONDING ls_inmu TO ls_sc35.
MOVE l_enviaweb TO ls_sc35-envia_a_web.
*--- buscar la promocin de la fase tratada
CALL FUNCTION 'ZACONS_GET_PROMOCION_FROM_FASE'
EXPORTING
i_fase
= ls_inmu-processo
i_bukrs
= ls_inmu-sociedad
IMPORTING
es_prtb001
= ls_prtb001
EXCEPTIONS
not_found_fase = 1
not_found_promo = 2
OTHERS
= 3.
CALL FUNCTION 'ZACONS_FLDS_OBLIGA_IF_ENVIOWEB'

EXPORTING
is_sc35
is_promo
IMPORTING
e_rc
TABLES
it_urlfoto
et_msg

= ls_sc35
= ls_prtb001
= l_rc
= lt_urlfoto
= lt_msg.

IF l_rc NE 0.
LOOP AT lt_msg INTO ls_msg.
MOVE ls_msg-msgnr TO l_msgno.
CALL METHOD pr_data_changed->add_protocol_entry
EXPORTING
i_msgid
= ls_msg-msgid
i_msgno
= l_msgno
i_msgty
= ls_msg-msgtyp
i_msgv1
= ls_msg-msgv1
i_msgv2
= ls_msg-msgv2
i_msgv3
= ls_msg-msgv3
i_msgv4
= ls_msg-msgv4
i_fieldname = ps_good_cells-fieldname
i_row_id
= ps_good_cells-row_id.
ENDLOOP.
MOVE 'X' TO error_in_data.
EXIT.
ENDIF.
ENDIF.
ENDMETHOD.
"check_envia_web
METHOD check_porc_indep.
"Elementos locales.
DATA: l_porc TYPE zac_prchiptas.
"Cdigo
CALL METHOD pr_data_changed->get_cell_value
EXPORTING
i_row_id
= ps_good_cells-row_id
i_fieldname = ps_good_cells-fieldname
IMPORTING
e_value
= l_porc.
IF l_porc > 100.
CALL METHOD pr_data_changed->add_protocol_entry
EXPORTING
i_msgid
= 'ZACONS_MENSAJES'
i_msgno
= '002'
i_msgty
= 'E'
i_msgv1
= text-m08
i_fieldname = ps_good_cells-fieldname
i_row_id
= ps_good_cells-row_id.
MOVE 'X' TO error_in_data.
EXIT.
ENDIF.
ENDMETHOD.
METHOD check_ayuntamiento.

"check_porc_indep

"Elementos locales.
DATA: l_municipio TYPE zcod_municipio.
"Cdigo.
CALL METHOD pr_data_changed->get_cell_value
EXPORTING
i_row_id
= ps_good_cells-row_id
i_fieldname = ps_good_cells-fieldname
IMPORTING
e_value
= l_municipio.
SELECT SINGLE COUNT(*)
FROM ztbsue_001
WHERE cod_municipio = l_municipio.
IF sy-subrc <> 0.
CALL METHOD pr_data_changed->add_protocol_entry
EXPORTING
i_msgid
= 'ZACONS_MENSAJES'
i_msgno
= '002'
i_msgty
= 'E'
i_msgv1
= text-m16
i_fieldname = ps_good_cells-fieldname
i_row_id
= ps_good_cells-row_id.
MOVE 'X' TO error_in_data.
EXIT.
ENDIF.
ENDMETHOD.

"check_ayuntamiento

*&---------------------------------------------------------------------*
*&
Form CHECK_STATUS_UNIDAD
*----------------------------------------------------------------------*
METHOD check_status_unidad.
DATA: lv_anej_regi TYPE zacons_anej_reg.
DATA: lc_er(60)
TYPE c
VALUE 'No se puede bloquear un anejo, modifique la Unidad principal'.
* Elementos locales:
FIELD-SYMBOLS: <ls_obj> TYPE typ_t_inmu,
<ls_alv> TYPE typ_inmu.
DATA: lr_inm TYPE zacons_sc35.
DATA: lt_anejreg TYPE zacons_cod_propiedad_t,
ls_anejreg LIKE LINE OF lt_anejreg.
DATA l_pvpar TYPE zacons_precio_tr.
*
*

*
*
*
*
*
*
*

Cdigo
IF ps_good_cells-value = 1.
ASSIGN pr_data_changed->mp_mod_rows->* TO <ls_obj>.
READ TABLE <ls_obj> ASSIGNING <ls_alv> INDEX 1.
MOVE-CORRESPONDING <ls_alv> TO lr_inm.
Inicio Modif. DSH 04.09.2014
DF-DM-GAP236-24-25-249-bloqueos-disponibles en unidades de venta
Se cambia a la funcion ZACONS_SETSTATUS_TXT_MASS
call function 'ZACONS_SETSTATUS_TXT'
exporting
i_showpopup = g_popup
changing

c_inmueble = lr_inm.

*--- SCJ 10.09.2014 ini


* select single anej_regi
*
from zacons_sc35
*
into lv_anej_regi
*
where processo eq lr_inm-processo and
*
cod_propiedad eq lr_inm-cod_propiedad.
*IF lv_anej_regi IS INITIAL.
*
CALL FUNCTION 'ZACONS_SETSTATUS_TXT_MASS_SU'
*
EXPORTING
*
i_showpopup = g_popup
*
CHANGING
*
c_inmueble = lr_inm.
** Fin Modif. DSH 04.09.2014
*
*
MOVE-CORRESPONDING lr_inm TO <ls_alv>.
*
CLEAR g_popup.
*ELSE.
*
CALL METHOD pr_data_changed->add_protocol_entry
*
EXPORTING
*
i_msgid
= 'ZACONS_MENSAJES'
*
i_msgno
= '002'
*
i_msgty
= 'E'
*
i_msgv1
= text-m18
*
i_fieldname = ps_good_cells-fieldname
*
i_row_id
= ps_good_cells-row_id.
*
MOVE 'X' TO error_in_data.
*
EXIT.
* MOVE 'X' TO error_in_data.
*
*ENDIF.
**
ENDIF.
*--- todo esto lo pongo yo: SCJ 10.09.2014
*--- CHECK si se tiene objeto a cambia el campo St.unidad
AUTHORITY-CHECK OBJECT 'ZAC_ST_UNI'
ID 'ZAC_STAT_U' FIELD lr_inm-status_unidad
ID 'BUKRS' FIELD lr_inm-sociedad.
IF sy-subrc NE 0.
* No tiene autorizacin para modificar el Status de Unidad
CALL METHOD pr_data_changed->add_protocol_entry
EXPORTING
i_msgid
= 'ZACONS_MENSAJES'
i_msgno
= '937'
i_msgty
= 'E'
i_msgv1
= space
i_fieldname = ps_good_cells-fieldname
i_row_id
= ps_good_cells-row_id.
MOVE 'X' TO error_in_data.
EXIT.
ENDIF.
*--- chequear si se puede cambiar el status de unidad. Cuando se cambie
* al valor 02, hay que comprobar que el inmueble, y sus anejados
* registrales tienen cubierto el PVP
IF lr_inm-status_unidad EQ '02'.
IF lr_inm-anej_regi IS NOT INITIAL.
* No se puede modificar el anejo, modifique la Unidad principal

CALL METHOD pr_data_changed->add_protocol_entry


EXPORTING
i_msgid
= 'ZACONS_MENSAJES'
i_msgno
= '939'
i_msgty
= 'E'
i_msgv1
= space
i_fieldname = ps_good_cells-fieldname
i_row_id
= ps_good_cells-row_id.
MOVE 'X' TO error_in_data.
EXIT.
ELSE.
IF lr_inm-precio_venta_tr IS NOT INITIAL.
IF lr_inm-anej_regi IS INITIAL.
CALL FUNCTION 'ZACONS_GETDAT_ANEREG'
EXPORTING
i_codi_promo = lr_inm-processo
i_codi_propi = lr_inm-cod_propiedad
IMPORTING
e_codi_anre = lt_anejreg.
IF lt_anejreg[] IS NOT INITIAL.
LOOP AT lt_anejreg INTO ls_anejreg.
CLEAR l_pvpar.
SELECT SINGLE precio_venta_tr FROM zacons_sc35 INTO l_pvpar
WHERE processo EQ lr_inm-processo
AND cod_propiedad EQ ls_anejreg.
IF l_pvpar IS INITIAL.
* No se puede modificar el St.Unidad. En algun Anejo falta Precio de Venta
CALL METHOD pr_data_changed->add_protocol_entry
EXPORTING
i_msgid
= 'ZACONS_MENSAJES'
i_msgno
= '940'
i_msgty
= 'E'
i_msgv1
= space
i_fieldname = ps_good_cells-fieldname
i_row_id
= ps_good_cells-row_id.
MOVE 'X' TO error_in_data.
EXIT.
ENDIF.
ENDLOOP.
ENDIF.
ENDIF.
ELSE.
* No se puede modificar el Status de unidad. Falta Precio de Venta
CALL METHOD pr_data_changed->add_protocol_entry
EXPORTING
i_msgid
= 'ZACONS_MENSAJES'
i_msgno
= '938'
i_msgty
= 'E'
i_msgv1
= space
i_fieldname = ps_good_cells-fieldname
i_row_id
= ps_good_cells-row_id.
MOVE 'X' TO error_in_data.
EXIT.
ENDIF.
ENDIF.
ENDIF.
*--- SCJ 10.09.2014 fin
ENDMETHOD.
* Inicio Inser. DSH

"handle_double_click

METHOD check_status_bl.
*

Elementos locales:
FIELD-SYMBOLS: <ls_obj> TYPE typ_t_inmu,
<ls_alv> TYPE typ_inmu.
DATA: lr_inm TYPE zacons_sc35. ".typ_inmu

*
*

Cdigo
IF ps_good_cells-value = 1.
ASSIGN pr_data_changed->mp_mod_rows->* TO <ls_obj>.
READ TABLE <ls_obj> ASSIGNING <ls_alv> INDEX 1.
MOVE-CORRESPONDING <ls_alv> TO lr_inm.

*--- SCJ 11.09.2014 ini


IF lr_inm-anej_regi IS NOT INITIAL.
*--- error, si lo que se quiere cambiar es el estatus de bloqueo del
* anejo: solo se puede cambiar en el principal
* No se puede modificar el anejo, modifique la Unidad principal
CALL METHOD pr_data_changed->add_protocol_entry
EXPORTING
i_msgid
= 'ZACONS_MENSAJES'
i_msgno
= '939'
i_msgty
= 'E'
i_msgv1
= space
i_fieldname = ps_good_cells-fieldname
i_row_id
= ps_good_cells-row_id.
MOVE 'X' TO error_in_data.
EXIT.
ENDIF.
*- En caso de que el inmueble est en estatus comercial ES,
* no se permitir poner el status de la unidad BL
IF lr_inm-estado
EQ c_st_escritura AND
lr_inm-status_bl EQ c_st_bloqueado.
*- No se permite bloquear la unidad de venta & ya que est escriturada
CALL METHOD pr_data_changed->add_protocol_entry
EXPORTING
i_msgid
= 'ZACONS_MENSAJES'
i_msgno
= '942'
i_msgty
= 'E'
i_msgv1
= lr_inm-id_material
i_fieldname = ps_good_cells-fieldname
i_row_id
= ps_good_cells-row_id.
MOVE 'X' TO error_in_data.
EXIT.
ENDIF.
*--- SCJ 11.09.2014 fin
* Inicio Modif. DSH 04.09.2014
* DF-DM-GAP236-24-25-249-bloqueos-disponibles en unidades de venta
* Se cambia a la funcion ZACONS_SETSTATUS_TXT_MASS
*
call function 'ZACONS_SETSTATUS_TXT'
*
exporting
*
i_showpopup = g_popup
*
changing
*
c_inmueble = lr_inm.

CLEAR: g_tipo_bl, g_motiv_bloq.


CALL FUNCTION 'ZACONS_SETSTATUS_TXT_MASS'
EXPORTING
i_showpopup
= g_popup
IMPORTING
g_cancelar_bloqueo = g_cancelar_bloqueo
g_tipo_bloq
= g_tipo_bl
g_motiv_bloq
= g_motiv_bloq
c_act_masa
= gs_act_masa
CHANGING
c_inmueble
= lr_inm.
DATA: act_masa TYPE ZACONS_ACT_MASA.
READ TABLE gt_act_masa INTO act_masa
WITH KEY processo = gs_act_masa-processo
id_material = gs_act_masa-id_material.
IF sy-subrc = 0.
MODIFY gt_act_masa FROM gs_act_masa .
ELSE.
APPEND gs_act_masa TO gt_act_masa.
ENDIF.
* Fin Modif. DSH 04.09.2014
MOVE-CORRESPONDING lr_inm TO <ls_alv>.
MOVE: g_tipo_bl TO <ls_alv>-tipo_bl,
g_motiv_bloq TO <ls_alv>-motiv_bloq.
CLEAR g_popup.
*
ENDIF.
ENDMETHOD.
"handle_double_click
* Fin Inser. DSH
METHOD check_inicializado.
"Datos locales.
DATA: l_campo TYPE c LENGTH 10.
"Cdigo.
CALL METHOD pr_data_changed->get_cell_value
EXPORTING
i_row_id
= ps_good_cells-row_id
i_fieldname = ps_good_cells-fieldname
IMPORTING
e_value
= l_campo.
IF l_campo IS INITIAL.
CALL METHOD pr_data_changed->add_protocol_entry
EXPORTING
i_msgid
= '0K'
i_msgno
= '000'
i_msgty
= 'E'
i_msgv1
= text-m17
i_fieldname = ps_good_cells-fieldname
i_row_id
= ps_good_cells-row_id.
MOVE 'X' TO error_in_data.
EXIT.
ENDIF.

ENDMETHOD.
ENDCLASS.

"check_ayuntamiento
"lcl_event_receiver IMPLEMENTATION

AT SELECTION-SCREEN.
PERFORM check_sociedad.
*----------------------------------------------------------------------**
INITIALIZATION.
g_repid = sy-repid.
PERFORM init_variant.
PERFORM variant_default USING variant.
PERFORM get_valor_tcode_superior CHANGING g_tcodesup.
*--------------------------------------------------------------------*
*
S T A R T - O F - S E L E C T I O N
*
*--------------------------------------------------------------------*
START-OF-SELECTION.
PERFORM see_if_there_are_logs CHANGING g_answer.
PERFORM select_tablas CHANGING g_tabname g_cancel.
CHECK g_cancel EQ space.
PERFORM select_campos USING g_tabname g_cancel.
CHECK g_cancel EQ space.
PERFORM get_datos TABLES gt_dat.
IF gt_dat[] IS INITIAL.
MESSAGE s044(zacons).
* No existen datos para la seleccin.
STOP.
ENDIF.
CALL SCREEN 100.
*----------------------------------------------------------------------*
*
R U T I N A S
*
*----------------------------------------------------------------------*

*&---------------------------------------------------------------------*
*&
Module pbo OUTPUT
*----------------------------------------------------------------------*
MODULE pbo OUTPUT.
SET PF-STATUS '0100'.
SET TITLEBAR '100'.
IF g_cc IS INITIAL.
CREATE OBJECT g_cc
EXPORTING
container_name = g_container.
CREATE OBJECT g_grid
EXPORTING
i_parent = g_cc.
PERFORM build_catalogo.

*-- Layout
PERFORM crear_layout CHANGING gs_layout.
*-- Restringir funciones genricas para slo cambiar
*-- El usuario no tiene que meter lneas nuevas
PERFORM exclude_tb_functions CHANGING gt_exclude.
CASE g_tabname.
WHEN 'ZACONS_SC35'.
*-- mover datos a tabla de salida.
PERFORM get_datos_inmuebles CHANGING gt_inmu.
PERFORM out_datos CHANGING gt_inmu gt_exclude.
WHEN 'ZACONS_PRTB001'.
*-- mover datos a tabla de salida
PERFORM get_datos_promociones CHANGING gt_promo.
PERFORM out_datos CHANGING gt_promo gt_exclude.
ENDCASE.
* set editable cells to ready for input
CALL METHOD g_grid->set_ready_for_input
EXPORTING
i_ready_for_input = 1.
*-- Register ENTER to raise event DATA_CHANGED.
CALL METHOD g_grid->register_edit_event
EXPORTING
i_event_id = cl_gui_alv_grid=>mc_evt_enter.
CALL METHOD g_grid->register_edit_event
EXPORTING
i_event_id = cl_gui_alv_grid=>mc_evt_modified.
*--- registrar evento F4 on field con F4 propio, y no el estndar
PERFORM register_evet_onf4.
CREATE OBJECT g_event_receiver.
SET HANDLER g_event_receiver->on_f4
FOR g_grid.
SET HANDLER g_event_receiver->handle_data_changed FOR g_grid.
SET HANDLER g_event_receiver->on_datachangefinis FOR g_grid.
CALL METHOD g_grid->set_toolbar_interactive.
ENDIF.
ENDMODULE.

" pbo OUTPUT

*&---------------------------------------------------------------------*
*&
Form select_campos
*----------------------------------------------------------------------*
FORM select_campos USING p_tabname
CHANGING p_cancel TYPE c.
*-- buscar los campos de la tabla seleccionada
DATA lt_fields TYPE TABLE OF zacons_fld_upd WITH HEADER LINE.
DATA ls_fldupd LIKE LINE OF gt_fldupd.
DATA ls_left LIKE LINE OF gt_leftx.
DATA: BEGIN OF lt_rightx OCCURS 0.

INCLUDE STRUCTURE lvc_s_objs.


DATA END OF lt_rightx.
DATA l_tabix TYPE i.
DATA ls_object LIKE LINE OF lt_rightx.
DATA ls_layout TYPE lvc_s_daly.
DATA lt_dfies TYPE TABLE OF dfies WITH HEADER LINE.
DATA ls_fields LIKE LINE OF gt_fields.
DATA l_ind TYPE i.
DATA l_stname TYPE tabname.
DATA: lt_group TYPE lvc_t_sgrp,
ls_group TYPE lvc_s_sgrp.
DATA lt_dd07v TYPE TABLE OF dd07v WITH HEADER LINE.
REFRESH gt_fields.
LOOP AT gt_fldupd INTO ls_fldupd
WHERE tabname EQ p_tabname.
MOVE-CORRESPONDING ls_fldupd TO gt_fields.
APPEND gt_fields. CLEAR gt_fields.
ENDLOOP.
*
*
*

CASE g_tabname.
APM_24.02.2014_INICIO
when 'ZACONS_PRTB001'. move 'ZAC_ST_MASSPROMO' to l_stname.
when 'ZACONS_SC35'.
move 'ZAC_ST_MASSINMU' to l_stname.

WHEN 'ZACONS_PRTB001'. MOVE 'ZAC_ST_MASSPROMO_SAREB' TO l_stname.


WHEN 'ZACONS_SC35'.
MOVE 'ZAC_ST_MASSINMU_SAREB' TO l_stname.
* APM_24.02.2014_FIN
ENDCASE.
CALL FUNCTION 'DD_DOMVALUES_GET'
EXPORTING
domname = 'ZENTORNO'
text
= c_true
langu
= sy-langu
TABLES
dd07v_tab = lt_dd07v
EXCEPTIONS
OTHERS
= 2.
IF sy-subrc NE 0.
ENDIF.
SORT gt_fields BY entorno.
LOOP AT gt_fields.
MOVE: sy-tabix TO ls_object-id.
REFRESH lt_dfies.
CALL FUNCTION 'DDIF_FIELDINFO_GET'
EXPORTING
tabname = l_stname
fieldname = gt_fields-fieldname
TABLES
dfies_tab = lt_dfies
EXCEPTIONS
OTHERS
= 3.
IF sy-subrc EQ 0.
READ TABLE lt_dfies INDEX 1.
IF lt_dfies-scrtext_m IS NOT INITIAL.
MOVE lt_dfies-scrtext_m TO ls_object-text.

ELSE.
MOVE lt_dfies-reptext TO ls_object-text.
ENDIF.
MOVE lt_dfies-rollname TO gt_fields-rollname.
MOVE gt_fields-entorno+1(1) TO ls_object-sp_group.
APPEND ls_object TO lt_rightx .
MODIFY gt_fields INDEX ls_object-id.
*-- Grupos de Campos
MOVE: gt_fields-entorno+1(1) TO ls_group-sp_group.
READ TABLE lt_dd07v WITH KEY domvalue_l = gt_fields-entorno.
IF sy-subrc EQ 0.
MOVE: lt_dd07v-ddtext TO ls_group-text.
ENDIF.
COLLECT ls_group INTO lt_group.
ENDIF.
CLEAR gt_fields.
ENDLOOP.
REFRESH gt_leftx. CLEAR p_cancel.
ls_layout-no_icons = 'X'.
CALL FUNCTION 'REUSE_DOUBLE_ALV'
EXPORTING
i_title_left
= text-003
i_title_right
= text-004
i_popup_title
= text-002
it_sp_group
= lt_group
is_layout_double_alv = ls_layout
IMPORTING
e_cancelled
= p_cancel
TABLES
t_leftx
= gt_leftx
t_rightx
= lt_rightx.
IF p_cancel EQ space.
LOOP AT gt_leftx INTO ls_left.
MOVE sy-tabix TO l_ind.
READ TABLE gt_fields INDEX ls_left-id INTO ls_fields.
IF sy-subrc EQ 0.
MOVE: ls_fields-fieldname TO ls_left-fieldname,
ls_fields-tabname TO ls_left-tabname.
MODIFY gt_leftx INDEX l_ind FROM ls_left
TRANSPORTING fieldname tabname.
ENDIF.
ENDLOOP.
ENDIF.
ENDFORM.
"select_campos
*&---------------------------------------------------------------------*
*&
Form bulid_catalogo
*----------------------------------------------------------------------*
FORM build_catalogo.
DATA l_stname TYPE tabname.
DATA ls_fcat LIKE LINE OF gt_fldcat.
REFRESH: gt_fldcat, gt_groups.

CASE g_tabname.
WHEN 'ZACONS_PRTB001'.
*
l_stname = 'ZAC_ST_MASSPROMO'.
l_stname = 'ZAC_ST_MASSPROMO_SAREB'.
WHEN 'ZACONS_SC35'.
*
l_stname = 'ZAC_ST_MASSINMU'.
l_stname = 'ZAC_ST_MASSINMU_SAREB'.
ENDCASE.
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
i_structure_name = l_stname
*
i_bypassing_buffer = 'X'
CHANGING
ct_fieldcat
= gt_fldcat.
REFRESH: gt_dfies,
gt_lines_descr.
CALL FUNCTION 'DDIF_NAMETAB_GET'
EXPORTING
tabname
= l_stname
group_names = 'X'
IMPORTING
lines_descr = gt_lines_descr
TABLES
dfies_tab = gt_dfies
EXCEPTIONS
not_found = 1
OTHERS
= 2.
LOOP AT gt_fldcat INTO ls_fcat.
PERFORM off_campos_no_seleccionados CHANGING ls_fcat.
PERFORM editar_campo CHANGING ls_fcat.
PERFORM conver_field_to_checkbox CHANGING ls_fcat.
*-- crear los grupos de campos.
PERFORM build_grupos_campos USING ls_fcat-fieldname
gt_groups
ls_fcat-sp_group.
*--- F4 propia
PERFORM campos_con_f4_propia CHANGING ls_fcat.
*--- Campos que no chequean contra la tabla de verficacin
PERFORM campos_sin_chequeo_tabverifica CHANGING ls_fcat.
MODIFY gt_fldcat FROM ls_fcat.
CLEAR ls_fcat.
ENDLOOP.
ENDFORM.
"bulid_catalogo
*&---------------------------------------------------------------------*
*&
Form off_campos_no_seleccionados
*----------------------------------------------------------------------*
FORM off_campos_no_seleccionados CHANGING ps_fcat TYPE lvc_s_fcat.
*-- ocultar los campos no seleccionados a excepcin de la clave, ed,
*- para Promociones, sacar el cdigo + descripcin
*- para Inmubles, sacar cdigo Promocin + Cdigo Inmueble + Descrip.
READ TABLE gt_leftx WITH KEY fieldname = ps_fcat-fieldname.
IF sy-subrc NE 0 AND ps_fcat-key EQ space.
MOVE c_true TO ps_fcat-no_out.

ELSE.
CLEAR ps_fcat-no_out.
ENDIF.
ENDFORM.
"off_campos_no_seleccionados
*&---------------------------------------------------------------------*
*&
Form editar_campo
*----------------------------------------------------------------------*
* Poner como editables aquellos campos que estn en tabla ZACONS_FLD_UPD
*----------------------------------------------------------------------*
FORM editar_campo CHANGING ps_fcat TYPE lvc_s_fcat.
READ TABLE gt_fields WITH KEY fieldname = ps_fcat-fieldname.
IF sy-subrc EQ 0.
MOVE c_true TO ps_fcat-edit.
ENDIF.
ENDFORM.
"editar_campo
*&---------------------------------------------------------------------*
*&
Form conver_field_to_checkbox
*----------------------------------------------------------------------*
FORM conver_field_to_checkbox CHANGING ps_fcat TYPE lvc_s_fcat.
CHECK ps_fcat-inttype EQ 'C' AND
ps_fcat-intlen EQ 1
AND
( ps_fcat-domname EQ 'XFELD' OR ps_fcat-domname EQ 'CHAR1').
MOVE c_true TO ps_fcat-checkbox.
ENDFORM.

"conver_field_to_checkbox

*&---------------------------------------------------------------------*
*&
Form build_grupos_campos
*----------------------------------------------------------------------*
FORM build_grupos_campos USING value(p_fieldname) TYPE fieldname
pt_groups TYPE lvc_t_sgrp
p_group TYPE lvc_spgrp.
DATA
DATA
DATA
DATA

ls_groups TYPE lvc_s_sgrp.


ls_lindescr LIKE LINE OF gt_lines_descr.
ls_dfies TYPE dfies.
ls_fields TYPE dfies.

CLEAR p_group.
LOOP AT gt_lines_descr INTO ls_lindescr.
LOOP AT ls_lindescr-fields INTO ls_fields
WHERE fieldname EQ p_fieldname.
ENDLOOP.
IF sy-subrc EQ 0.
*-- Se ha encontrado el campo que esta buscando
LOOP AT gt_dfies INTO ls_dfies
WHERE rollname EQ ls_fields-tabname.
ENDLOOP.
IF sy-subrc EQ 0.
MOVE: ls_dfies-fieldname TO ls_groups-sp_group,
ls_dfies-fieldname TO p_group.
CASE ls_groups-sp_group.

*
*
*
*
*

WHEN 'GRAL'. MOVE text-010 TO ls_groups-text.


WHEN 'IMP'. MOVE text-011 TO ls_groups-text.
WHEN 'EQUI'. MOVE text-012 TO ls_groups-text.
WHEN 'SUP'. MOVE text-013 TO ls_groups-text.
WHEN 'WEB'. MOVE text-014 TO ls_groups-text.
WHEN 'LGAL'. MOVE text-015 TO ls_groups-text.
WHEN 'MAES'. MOVE text-019 TO ls_groups-text.
WHEN 'EINM'. MOVE text-020 TO ls_groups-text.
WHEN 'CALF'. MOVE text-021 TO ls_groups-text.
WHEN 'DTEC'. MOVE text-022 TO ls_groups-text.
WHEN 'OTHE'. MOVE text-018 TO ls_groups-text.
WHEN 'COME'. MOVE text-026 TO ls_groups-text.
WHEN 'JURI'. MOVE text-027 TO ls_groups-text.
WHEN 'FINA'. MOVE text-028 TO ls_groups-text.
WHEN 'LICE'. MOVE text-029 TO ls_groups-text.
WHEN 'PVTA'. MOVE text-030 TO ls_groups-text.
ENDCASE.
COLLECT ls_groups INTO pt_groups.
EXIT.
ENDIF.
ENDIF.
ENDLOOP.

ENDFORM.

"build_grupos_campos

*&---------------------------------------------------------------------*
*&
Form crear_layout
*----------------------------------------------------------------------*
FORM crear_layout CHANGING ps_layout TYPE lvc_s_layo.
CLEAR ps_layout.
*-- optimizar ancho de las columnas
ps_layout-cwidth_opt = c_true.
ENDFORM.

"crear_layout

*&---------------------------------------------------------------------*
*&
Form campos_con_f4_propia
*----------------------------------------------------------------------*
FORM campos_con_f4_propia CHANGING ps_fcat TYPE lvc_s_fcat.
CASE ps_fcat-fieldname.
WHEN 'ID_GARAJE_CHAR' OR 'ID_TRASTERO_CHAR' OR
'ID_VIVIENDA' OR 'ID_PISO'.
ps_fcat-f4availabl = c_true.
ENDCASE.
ENDFORM.
"campos_con_f4_propia
*&---------------------------------------------------------------------*
*&
Form campos_sin_chequeo_tabverifica
*----------------------------------------------------------------------*
FORM campos_sin_chequeo_tabverifica CHANGING ps_fcat TYPE lvc_s_fcat.
CASE ps_fcat-fieldname.
WHEN 'MUNICIPIO' OR 'REGION'.
ps_fcat-checktable = '!'.
ENDCASE.
ENDFORM.
"campos_sin_chequeo_tabverifica
*&---------------------------------------------------------------------*
*&
Form ADD_CAMPO_TO_CATALOGO
*&---------------------------------------------------------------------*
FORM add_campo_to_catalogo USING p_cat TYPE lvc_t_fcat

p_field
p_edatos
p_edit.
DATA ls_dd04v TYPE dd04v.
DATA ls_cat TYPE lvc_s_fcat.
CALL FUNCTION 'DDIF_DTEL_GET'
EXPORTING
name
= p_edatos
langu
= sy-langu
IMPORTING
dd04v_wa = ls_dd04v
EXCEPTIONS
OTHERS = 2.
IF sy-subrc IS INITIAL.
MOVE-CORRESPONDING ls_dd04v TO ls_cat.
ls_cat-fieldname = p_field.
IF p_edit EQ c_true.
ls_cat-edit = c_true.
ENDIF.
APPEND ls_cat TO p_cat.
ENDIF.
ENDFORM.

"ADD_CAMPO_TO_CATALOGO

*&---------------------------------------------------------------------*
*&
Form set_events
*----------------------------------------------------------------------*
FORM set_events CHANGING ct_events TYPE slis_t_event.
DATA: ls_event TYPE slis_alv_event.
ls_event-name = 'USER_COMMAND'.
ls_event-form = 'USER_COMMAND'.
APPEND ls_event TO ct_events.
* ls_event-name = 'PF_STATUS_SET'.
* ls_event-form = 'ST_OUT'.
* append ls_event to ct_events.
ENDFORM.

" set_events

*&---------------------------------------------------------------------*
*&
Form set_pf_status
*----------------------------------------------------------------------*
FORM set_pf_status USING rt_extab TYPE slis_t_extab.
* set pf-status 'ST_OUT'.
ENDFORM.
"set_pf_status
*&---------------------------------------------------------------------*
*&
Form user_command
*----------------------------------------------------------------------*
FORM user_command USING r_ucomm
LIKE sy-ucomm
rs_selfield TYPE slis_selfield.
CASE r_ucomm.
WHEN '&DATA_SAVE'.
PERFORM actualizar_datos.
ENDCASE.

ENDFORM.

"user_command

*&---------------------------------------------------------------------*
*&
Form actualizar_datos
*----------------------------------------------------------------------*
FORM actualizar_datos.
DATA ls_promo LIKE LINE OF gt_promo.
DATA ls_inmu LIKE LINE OF gt_inmu.
DATA l_program LIKE sy-cprog.
DATA l_jobname TYPE btcjob.
DATA ls_indx TYPE indx.
DATA: l_valid TYPE c.
DATA: l_n_zacons_inmueble
LIKE zacons_sc35,
l_o_zacons_inmueble
LIKE zacons_sc35,
l_object_change_indicator LIKE cdhdr-change_ind,
l_n_zacons_prtb001
TYPE zacons_prtb001,
l_o_zacons_prtb001
TYPE zacons_prtb001.
DATA: lt_param TYPE TABLE OF rsparams,
ls_param TYPE rsparams.
MOVE: sy-datum TO ls_indx-aedat,
sy-uname TO ls_indx-usera,
sy-repid TO ls_indx-pgmid.
CALL METHOD g_grid->check_changed_data
IMPORTING
e_valid = l_valid.
CHECK l_valid EQ c_true.
*--- Rellenar parmetros que se pasan al programa submitido.
MOVE: 'P_TCODE' TO ls_param-selname,
'P'
TO ls_param-kind,
'E'
TO ls_param-sign,
'EQ'
TO ls_param-option,
sy-tcode TO ls_param-low.
APPEND ls_param TO lt_param.
MOVE: 'P_BUKRS' TO ls_param-selname,
'P'
TO ls_param-kind,
'E'
TO ls_param-sign,
'EQ'
TO ls_param-option,
p_socied TO ls_param-low.
APPEND ls_param TO lt_param.
CASE g_tabname.
WHEN 'ZACONS_PRTB001'.
CALL FUNCTION 'ZACONS_GETJOBNAME'
EXPORTING
i_tcode = 'ZAC_MASSINMU'
i_tipo
= 'P'
IMPORTING
e_jobname = l_jobname
EXCEPTIONS
no_data = 1
OTHERS
= 2.
IF sy-subrc NE 0.
MESSAGE e500(zacons_mensajes) WITH text-016

'ZAC_MASSINMU' text-017 'P' RAISING no_data.


ENDIF.
CHECK sy-subrc EQ 0.
*--- SCJ 24.07.2014 ini
*--- antes de lanzar el proceso de fondo,actualizar los importes de:
* reserva, entrada y aplazados de contrato, y escritura en base al PVP
*- como se hace para los inmuebles en la rutina perfrom actualizar_importes
*- de los inmuebles
PERFORM actualizar_importes_promo USING gt_promo[].
*--- SCJ 24.07.2014 fin
l_program = 'ZACONS_PROMO'.
CALL FUNCTION
EXPORTING
i_jobname
i_program
i_iddb
TABLES
et_datos
rspar_tab

'ZACONS_JOB_MASS'
= l_jobname
= l_program
= 'TABLEPROMO'
= gt_promo
= lt_param.

WHEN 'ZACONS_SC35'.
CALL FUNCTION 'ZACONS_GETJOBNAME'
EXPORTING
i_tcode = 'ZAC_MASSINMU'
i_tipo
= 'I'
IMPORTING
e_jobname = l_jobname
EXCEPTIONS
no_data = 1
OTHERS
= 2.
IF sy-subrc NE 0.
MESSAGE e500(zacons_mensajes) WITH text-016
'ZAC_MASSINMU' text-017 'I' RAISING no_data.
ENDIF.
*--- antes de lanzar el proceso en fondo actualizar los importes de:
* entrada, contrato y escritura en base al precio venta al pblico
* y a los porcentajes(Slo para los inmuebles con la marca SELECTED)
*-- De paso quitamos la marca de enviado a WEB(si est marcada) y
*-- el Precio Venta al Pblico es CERO.
PERFORM actualizar_importes USING gt_inmu[].
* Inicio Modif. DSH 12.09.2014
* Se descomenta perform actualizar_bloqueos DF-DM - GAP 24-25 y 236
* AJMAYORAL 21.07.2014 Regresin del GAP DF-DM - GAP 24-25 y 236
PERFORM actualizar_bloqueos CHANGING gt_inmu[].
* AJMAYORAL 21.07.2014 Regresin del GAP DF-DM - GAP 24-25 y 236
* Fin Modif. DSH
l_program = 'ZACONS_INMU'.
CALL FUNCTION
EXPORTING
i_jobname
i_program
i_iddb

'ZACONS_JOB_MASS'
= l_jobname
= l_program
= 'TABLEINMU'

TABLES
et_datos = gt_inmu
rspar_tab = lt_param.
ENDCASE.
*3.Use IS_READY_FOR_INPUT to fetch current substate of editable cells.
IF g_grid->is_ready_for_input( ) EQ 0.
*4.Use SET_READY_FOR_INPUT to switch between the substates.
CALL METHOD g_grid->set_ready_for_input
EXPORTING
i_ready_for_input = 1.
ELSE.
CALL METHOD g_grid->set_ready_for_input
EXPORTING
i_ready_for_input = 0.
ENDIF.
ENDFORM.

"actualizar_datos

*&---------------------------------------------------------------------*
*&
Module PAI INPUT
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
MODULE pai INPUT.
* actions according to the function code of the buttons
save_ok = ok_code.
CLEAR ok_code.
CASE save_ok.
WHEN 'BACK'.
LEAVE TO SCREEN 0.
WHEN 'CANCEL'.
LEAVE PROGRAM.
WHEN 'EXIT'.
LEAVE PROGRAM.
WHEN 'OK'.
LEAVE TO SCREEN 0.
WHEN 'SAVE'.
PERFORM actualizar_datos.
ENDCASE.
ENDMODULE.
" PAI INPUT
*&---------------------------------------------------------------------*
*&
Form exclude_tb_functions
*----------------------------------------------------------------------*
FORM exclude_tb_functions CHANGING pt_exclude TYPE ui_functions.
* Only allow to change data not to create new entries (exclude
* generic functions).
DATA ls_exclude TYPE ui_func.
REFRESH pt_exclude.
ls_exclude = cl_gui_alv_grid=>mc_fc_loc_copy_row.
APPEND ls_exclude TO pt_exclude.
ls_exclude = cl_gui_alv_grid=>mc_fc_loc_delete_row.
APPEND ls_exclude TO pt_exclude.
ls_exclude = cl_gui_alv_grid=>mc_fc_loc_append_row.

APPEND ls_exclude TO pt_exclude.


ls_exclude = cl_gui_alv_grid=>mc_fc_loc_insert_row.
APPEND ls_exclude TO pt_exclude.
ls_exclude = cl_gui_alv_grid=>mc_fc_loc_move_row.
APPEND ls_exclude TO pt_exclude.
ENDFORM.
" EXCLUDE_TB_FUNCTIONS
*&---------------------------------------------------------------------*
*&
Form OUT_DATOS
*&---------------------------------------------------------------------*
FORM out_datos CHANGING pt_outtab
pt_exclude TYPE ui_functions.
DATA: gs_f4 TYPE lvc_s_f4,
gt_f4 TYPE lvc_t_f4.

*-- sacar los datos en la pantalla


CALL METHOD g_grid->set_table_for_first_display
EXPORTING
*
i_buffer_active
=
i_bypassing_buffer = space
*
i_consistency_check =
*
i_structure_name
=
is_variant
= g_variant
i_save
= 'A'
i_default
= 'X'
is_layout
= gs_layout
*
is_print
=
it_special_groups
= gt_groups
it_toolbar_excluding = gt_exclude
*
it_hyperlink
=
*
it_alv_graphics
=
*
it_except_qinfo
=
*
ir_salv_adapter
=
CHANGING
it_outtab
= pt_outtab
it_fieldcatalog
= gt_fldcat
*
it_sort
= gt_sort
*
it_filter
=
EXCEPTIONS
OTHERS
= 4.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
gs_f4-fieldname = 'COD_COMER'.
gs_f4-getbefore = c_true.
gs_f4-chngeafter = c_true.
APPEND gs_f4 TO gt_f4.
CALL METHOD g_grid->register_f4_for_fields
EXPORTING
it_f4 = gt_f4.
ENDFORM.
" OUT_DATOS
*&---------------------------------------------------------------------*

*&
Form GET_DATOS_INMUEBLES
*----------------------------------------------------------------------*
FORM get_datos_inmuebles CHANGING pt_inmu TYPE typ_t_inmu.
DATA ls_inmu TYPE typ_inmu.
REFRESH pt_inmu.
LOOP AT gt_dat.
MOVE-CORRESPONDING gt_dat-inm TO ls_inmu.
MOVE-CORRESPONDING gt_dat-mot TO ls_inmu.
*-- se requiere que figure como nombre del inmueble, la decrip.de la
*Promo,
* y no el campo ZACONS_SC35-FASE que en realidad guarda el texto de la
* promocin cuando se crea el inmueble. Si posteriormente se modifica
* el texto de la promocin, el campo ZACONS_SC35-FASE no se entera!!!!
MOVE gt_dat-promo-descripcion TO ls_inmu-descripcion.
APPEND ls_inmu TO pt_inmu . CLEAR: ls_inmu, gt_dat.
ENDLOOP.
ENDFORM.
" GET_DATOS_INMUEBLES
*&---------------------------------------------------------------------*
*&
Form GET_DATOS_PROMOCIONES
*----------------------------------------------------------------------*
FORM get_datos_promociones CHANGING pt_promo TYPE typ_t_promo.
DATA ls_promo TYPE typ_promo.
REFRESH pt_promo.
LOOP AT gt_dat.
MOVE-CORRESPONDING gt_dat-promo TO ls_promo.
APPEND ls_promo TO pt_promo. CLEAR: ls_promo, gt_dat.
ENDLOOP.
ENDFORM.
" GET_DATOS_PROMOCIONES
*&---------------------------------------------------------------------*
*&
Form MARCAR_ENTRADA_MODIF_EN_TABLE
*----------------------------------------------------------------------*
FORM marcar_entrada_modif_en_table USING p_tabname TYPE tabname
p_row_id.
DATA ls_promo LIKE LINE OF gt_promo.
DATA ls_inmu LIKE LINE OF gt_inmu.
CASE g_tabname.
WHEN 'ZACONS_PRTB001'.
READ TABLE gt_promo INDEX p_row_id INTO ls_promo.
IF sy-subrc EQ 0.
ls_promo-selected = c_true.
MODIFY gt_promo FROM ls_promo INDEX p_row_id.
ENDIF.
WHEN 'ZACONS_SC35'.
READ TABLE gt_inmu INDEX p_row_id INTO ls_inmu.
IF sy-subrc EQ 0.
ls_inmu-selected = c_true.
MODIFY gt_inmu FROM ls_inmu INDEX p_row_id.
ENDIF.
ENDCASE.
ENDFORM.
" MARCAR_ENTRADA_MODIF_EN_TABLE
*&---------------------------------------------------------------------*
*&
Form SEE_IF_THERE_ARE_LOGS
*&---------------------------------------------------------------------*

* Leer si exite algn log para promociones o inmuebles


*----------------------------------------------------------------------*
FORM see_if_there_are_logs CHANGING p_answer.
CLEAR p_answer.
*-- comprobar la existencia de algn log en la sociedad indicada
CALL FUNCTION 'ZACONS_EXISTEN_LOGS'
EXPORTING
*
I_OBJECT = 'ZAC_MASS'
i_bukrs = p_socied
EXCEPTIONS
no_logs = 1
OTHERS = 2.
IF sy-subrc EQ 0.
*-- Existen log
CALL FUNCTION 'POPUP_WITH_2_BUTTONS_TO_CHOOSE'
EXPORTING
*
DEFAULTOPTION = '1'
diagnosetext1 = text-006
diagnosetext2 = text-007
*
DIAGNOSETEXT3 = ' '
textline1
= text-008
textline2
= text-009
*
TEXTLINE3
= ' '
text_option1 = text-023
text_option2 = text-024
titel
= text-025
IMPORTING
answer
= p_answer.
CASE p_answer.
WHEN '1'. " Continuar proceso normal
WHEN '2'. " Reprocesar
CALL TRANSACTION 'ZAC_PROCELOG' AND SKIP FIRST SCREEN.
LEAVE PROGRAM.
WHEN 'A'. " Pantalla cancelada
STOP.
ENDCASE.
ENDIF.
ENDFORM.
"see_if_there_are_logs
*&---------------------------------------------------------------------*
*&
Form INIT_VARIANT
*----------------------------------------------------------------------*
FORM init_variant .
CLEAR g_variant.
* D020S-PROG
= G_REPID.
* D020S-DNUM
= SY-DYNNR.
g_variant-report
= g_repid.
g_variant-username = sy-uname.
ENDFORM.
" INIT_VARIANT
*&---------------------------------------------------------------------*
*&
Form VARIANT_DEFAULT
*&---------------------------------------------------------------------*
FORM variant_default USING p_variant LIKE g_variant-variant.
gx_variant = g_variant.

IF NOT p_variant IS INITIAL.


gx_variant-variant = p_variant.
ENDIF.
CALL FUNCTION 'LVC_VARIANT_DEFAULT_GET'
EXPORTING
i_save
= g_variant_save
CHANGING
cs_variant
= gx_variant
EXCEPTIONS
wrong_input = 1
not_found
= 2
program_error = 3
OTHERS
= 4.
CASE sy-subrc.
WHEN 0.
p_variant = gx_variant-variant.
WHEN 2.
CLEAR p_variant.
ENDCASE.
ENDFORM.
" VARIANT_DEFAULT
*&---------------------------------------------------------------------*
*&
Form ACTUALIZAR_IMPORTES
*----------------------------------------------------------------------*
FORM actualizar_importes USING pt_inmu TYPE typ_t_inmu.
DATA ls_inmu LIKE LINE OF pt_inmu.
DATA ls_sc35pk TYPE zac_pk_sc35.
DATA ls_bp_soc TYPE zacons_bp_soc.
DATA l_waers_soc TYPE waers.
DATA l_prcsum
TYPE fproz.
*--- Monedas de los campos PVP y Tasacin, se obtienen en base al
* comportamiento de de la sociedad.
SELECT SINGLE * FROM zacons_bp_soc INTO ls_bp_soc
WHERE bukrs EQ p_socied.
CASE ls_bp_soc-comportamiento.
WHEN '1'. " Altamira y Mesena: Obtener la moneda de la Sociedad
SELECT SINGLE waers FROM t001 INTO l_waers_soc
WHERE bukrs EQ p_socied.
WHEN OTHERS. " Los campos estn abiertos para incluir la moneda
ENDCASE.
LOOP AT pt_inmu INTO ls_inmu WHERE selected EQ c_true.
IF ls_inmu-precio_venta_tr IS NOT INITIAL.
*--- SCJ 30.05.2014 ini
*--- si la suma de los % no es 100, no actualizo el PVP
CLEAR l_prcsum.
ADD: ls_inmu-perc_entrada
TO l_prcsum,
ls_inmu-perc_inputcontra TO l_prcsum,
ls_inmu-perc_aplazado
TO l_prcsum,
ls_inmu-perc_llaves
TO l_prcsum.
IF l_prcsum NE 100.
CONTINUE.
ENDIF.
*--- SCJ 30.05.2014 fin
calcular_importes ls_inmu-importe_entrada ls_inmu-perc_entrada

ls_inmu-precio_venta_tr.
calcular_importes ls_inmu-importe_contrato ls_inmu-perc_contrato
ls_inmu-precio_venta_tr.
calcular_importes ls_inmu-imp_input ls_inmu-perc_inputcontra
ls_inmu-precio_venta_tr.
calcular_importes ls_inmu-imp_aplazado ls_inmu-perc_aplazado
ls_inmu-precio_venta_tr.
calcular_importes ls_inmu-importe_llaves ls_inmu-perc_llaves
ls_inmu-precio_venta_tr.
*--- mover la moneda calculada al campo moneda del campo PVP
IF ls_inmu-waers IS INITIAL.
MOVE: l_waers_soc TO ls_inmu-waers.
ENDIF.
*--- 20110825
*--- Rellenar los campos de precio y fecha primera comercializacin.
* A stos se les mueven los valores de los campos PVP y fecha del da
* repectivamente, siempre que sea la primera vez que al inmueble se le
* haya puesto la marca de Enviado a WEB. Si ese flag, se marca/desmarca,
* repetidamente, los valores de Precio y Fecha de Primera comercializac.
* ya no cambiarn
MOVE: sy-mandt
TO ls_sc35pk-mandt,
ls_inmu-processo
TO ls_sc35pk-processo,
ls_inmu-passo
TO ls_sc35pk-passo,
ls_inmu-passoperf
TO ls_sc35pk-passoperf,
ls_inmu-versao
TO ls_sc35pk-versao,
ls_inmu-cod_propiedad TO ls_sc35pk-cod_propiedad.
*--*--*
*
*
*
*
*
*
*
*
*
*
*
*--*---

SCJ Feb.2014 ini


Esta funcin no existe
call function 'ZACONS_SI_INM_ENVIADOAWEB'
exporting
is_sc35pk
= ls_sc35pk
i_objectclas = 'ZINMUEBLES'
i_tabname
= 'ZACONS_SC35'
i_fname
= 'ENVIA_A_WEB'
i_valnew
= 'X'
i_pvp
= ls_inmu-precio_venta_tr
i_envia_a_web = ls_inmu-envia_a_web
changing
e_pvinicomer = ls_inmu-pvinicomer
e_fpricomer = ls_inmu-fpricomer.
20110825
SCJ Feb.2014 fin
ELSE.
*-- eliminar marca de envo a WEB si sta est marcada
CLEAR ls_inmu-envia_a_web.
ENDIF.
*--- Si se metio una tasacin, asignarle una moneda
IF ls_inmu-valor_tasacion IS NOT INITIAL AND
ls_inmu-waers_tas IS INITIAL.
MOVE l_waers_soc TO ls_inmu-waers_tas.
ENDIF.
MODIFY pt_inmu FROM ls_inmu.
ENDLOOP.
ENDFORM.

" ACTUALIZAR_IMPORTES

*&---------------------------------------------------------------------*
*&
Form actualizar_importes_promo
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
*
-->PT_PROMO text
*----------------------------------------------------------------------*
FORM actualizar_importes_promo USING pt_promo TYPE typ_t_promo.
DATA ls_promo LIKE LINE OF pt_promo.
DATA ls_sc35pk TYPE zac_pk_sc35.
DATA ls_bp_soc TYPE zacons_bp_soc.
DATA l_waers_soc TYPE waers.
DATA l_prcsum
TYPE fproz.
*--- Monedas de los campos PVP y Tasacin, se obtienen en base al
* comportamiento de de la sociedad.
SELECT SINGLE * FROM zacons_bp_soc INTO ls_bp_soc
WHERE bukrs EQ p_socied.
CASE ls_bp_soc-comportamiento.
WHEN '1'. " Altamira y Mesena: Obtener la moneda de la Sociedad
SELECT SINGLE waers FROM t001 INTO l_waers_soc
WHERE bukrs EQ p_socied.
WHEN OTHERS. " Los campos estn abiertos para incluir la moneda
ENDCASE.
LOOP AT pt_promo INTO ls_promo WHERE selected EQ c_true.
IF ls_promo-precio_venta_tr IS NOT INITIAL.
*--- SCJ 30.05.2014 ini
*--- si la suma de los % no es 100, no actualizo el PVP
CLEAR l_prcsum.
ADD: ls_promo-perc_entrada
TO l_prcsum,
ls_promo-perc_inputcontra TO l_prcsum,
ls_promo-perc_aplazado
TO l_prcsum,
ls_promo-perc_llaves
TO l_prcsum.
IF l_prcsum NE 100.
CONTINUE.
ENDIF.
*--- SCJ 30.05.2014 fin
calcular_importes ls_promo-importe_entrada ls_promo-perc_entrada
ls_promo-precio_venta_tr.
calcular_importes ls_promo-imp_input ls_promo-perc_inputcontra
ls_promo-precio_venta_tr.
calcular_importes ls_promo-imp_aplazado ls_promo-perc_aplazado
ls_promo-precio_venta_tr.
calcular_importes ls_promo-importe_llaves ls_promo-perc_llaves
ls_promo-precio_venta_tr.
*--- importe de contrato es la suma de: importe de Rererva,
*
importe de entrada de contrato
*
importe de aplazados
ls_promo-importe_contrato = ls_promo-importe_entrada +
ls_promo-imp_input +
ls_promo-imp_aplazado.
*--- mover la moneda calculada al campo moneda del campo PVP
IF ls_promo-waers IS INITIAL.

MOVE: l_waers_soc TO ls_promo-waers.


ENDIF.
ELSE.
ENDIF.
MODIFY pt_promo FROM ls_promo.
ENDLOOP.
ENDFORM.

"actualizar_importes_promo

*&---------------------------------------------------------------------*
*&
Form ACTUALIZAR_BLOQUEOS
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
*
<--OT_INMU[] text
*----------------------------------------------------------------------*
FORM actualizar_bloqueos CHANGING ot_inmu TYPE typ_t_inmu.
* Elementos locales:
FIELD-SYMBOLS: <ls_inmu> TYPE typ_inmu.
FIELD-SYMBOLS: <ls_anejo> TYPE zacons_sc35.
DATA: lr_inmu TYPE typ_inmu.
DATA: lt_anejo TYPE TABLE OF zacons_sc35.
* DATA: lt_inmuaux TYPE typ_t_inmu.
* Inicio Modif. DSH 12.09.2014
*----------------------------------------------------------------------*
DATA ls_inmu LIKE LINE OF ot_inmu.
DATA: lr_his TYPE zacons_hisblqinm.
DATA: t_bloqueos TYPE vrm_values WITH HEADER LINE.
DATA: lr_tipobl TYPE vrm_value.
LOOP AT ot_inmu INTO ls_inmu WHERE selected EQ c_true.
IF g_cancelar_bloqueo IS INITIAL.
UPDATE zacons_sc35
SET status_bl = ls_inmu-status_bl
WHERE processo EQ ls_inmu-processo
AND cod_propiedad EQ ls_inmu-cod_propiedad
AND id_material EQ ls_inmu-id_material.
IF sy-subrc EQ 0.
lr_his-fecha = sy-datum.
lr_his-hora = sy-uzeit.
lr_his-material = ls_inmu-id_material.
lr_his-usuario = sy-uname.
*
read table t_bloqueos into lr_tipobl with key key = tipo_bloq.
*
lr_his-motivo = lr_tipobl-text.
*
lr_his-tipo = motiv_bloq.
*
insert zacons_hisblqinm from lr_his.
*
endif.
*
move: lv_status_bl to gs_ZACONS_SC35-status_bl.
ENDIF.
ENDIF. "g_cancelar_bloqueo
ENDLOOP.
*Inicio comentado

** Cdigo:
* loop at ot_inmu assigning <ls_inmu>.
*
*
if <ls_inmu>-status_unidad = '01'.
*
<ls_inmu>-estado = 'BL'.
*
else.
*
select single estado into <ls_inmu>-estado
*
from zacons_bloq_inm
*
where id_material = <ls_inmu>-id_material.
*
if sy-subrc <> 0.
*
<ls_inmu>-estado = 'LI'.
*
endif.
*
endif.
*
*
select count(*)
*
from zacons_sc35
*
where processo = <ls_inmu>-processo
*
and cod_propiedad = <ls_inmu>-cod_propiedad
*
and status_unidad <> <ls_inmu>-status_unidad.
*
if sy-subrc = 0.
*
select * appending table lt_anejo
*
from zacons_sc35
*
where processo = <ls_inmu>-processo
*
and anej_regi = <ls_inmu>-cod_propiedad.
*
endif.
*
loop at lt_anejo assigning <ls_anejo> where anej_regi = <ls_inmu>-cod_propi
edad.
*
<ls_anejo>-estado = <ls_inmu>-estado.
*
<ls_anejo>-status_unidad = <ls_inmu>-status_unidad.
*
endloop.
* endloop.
*
* loop at ot_inmu assigning <ls_inmu>.
*
loop at lt_anejo assigning <ls_anejo>.
*
if <ls_inmu>-id_material = <ls_anejo>-id_material.
*
<ls_inmu>-estado = <ls_anejo>-estado.
*
<ls_inmu>-status_unidad = <ls_anejo>-status_unidad.
*
<ls_inmu>-selected = 'X'.
*
delete lt_anejo where id_material = <ls_anejo>-id_material.
*
endif.
*
endloop.
* endloop.
*
* loop at lt_anejo assigning <ls_anejo>.
*
move-corresponding <ls_anejo> to lr_inmu.
*
lr_inmu-selected = 'X'.
*
append lr_inmu to ot_inmu.
* endloop.
*Fin comentado
*----------------------------------------------------------------------*
* Fin Modif. DSH
ENDFORM.
" ACTUALIZAR_BLOQUEOS

You might also like