Professional Documents
Culture Documents
Zacons Upd Mas Inmu
Zacons Upd Mas Inmu
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'.
when 'COD_COMERC'.
CALL METHOD chek_comercializadora
EXPORTING
ps_good_cells = ls_good
pr_data_changed = er_data_changed.
when 'PLANTA'.
*
*
*
*
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.
"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 .
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
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.
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).
IMPORTING
e_value
= l_pinput.
ls_inmu-imp_aplazado
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.
*
*
*
*
*
*
e_value
= l_pinput.
"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.
"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.
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.
"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.
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.
*&---------------------------------------------------------------------*
*&
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.
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.
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
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.
*
*
*
*
*
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
'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.
*&
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
*&---------------------------------------------------------------------*
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.
*--*--*
*
*
*
*
*
*
*
*
*
*
*
*--*---
" 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.
"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