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

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

*& ESSENCE - Consultoria &*


*&--------------------------------------------------------------------&*
*& Projeto..: IFRS - Alston &*
*& Autor....: Leonardo Augusto Buzzo Ferreira &*
*& Data.....: 26/10/2005 &*
*& Descri��o: Relat�rio para Project Review &*
*& Transa��o: ZFI*** &*
*&--------------------------------------------------------------------&*
*& Projeto : &*
*& C�digo Espec.Funcional/T�cnica: &*
*&--------------------------------------------------------------------&*
*& Hist�rico de Modifica��es &*
*& Autor Request Data Descri��o &*
*& &*
*&--------------------------------------------------------------------&*

REPORT z9r_fi029 .

*----------------------------------------------------------------------*
* T A B E L A S
*----------------------------------------------------------------------*
TABLES : z9t_fi020, z9t_fi026, mltx.

*----------------------------------------------------------------------*
* C L A S S E S
*----------------------------------------------------------------------*
CLASS cl_gui_column_tree DEFINITION LOAD.
CLASS cl_gui_cfw DEFINITION LOAD.

DATA tree1 TYPE REF TO cl_gui_alv_tree.


DATA mr_toolbar TYPE REF TO cl_gui_toolbar.

*----------------------------------------------------------------------*
* T A B E L A S I N T E R N A S
*----------------------------------------------------------------------*
DATA : tg_020 LIKE z9t_fi020 OCCURS 0 WITH HEADER LINE,
tg_026 LIKE z9t_fi026 OCCURS 0 WITH HEADER LINE,
tg_029 LIKE z9t_fi029 OCCURS 0 WITH HEADER LINE,
tg_029_aux LIKE z9t_fi029 OCCURS 0.

*----------------------------------------------------------------------*
* I N C L U D E S
*----------------------------------------------------------------------*
INCLUDE <icon>.
INCLUDE bcalv_toolbar_event_receiver.
INCLUDE bcalv_tree_event_receiver.

*----------------------------------------------------------------------*
* E S T R U T U R A S
*----------------------------------------------------------------------*
DATA: toolbar_event_receiver TYPE REF TO lcl_toolbar_event_receiver.

DATA : st_029 LIKE z9t_fi029.


*----------------------------------------------------------------------*
* V A R I A V E I S
*----------------------------------------------------------------------*
DATA: gt_sflight TYPE sflight OCCURS 0, "Output-Table
gt_fieldcatalog TYPE lvc_t_fcat, "Fieldcatalog
ok_code LIKE sy-ucomm, "OK-Code
vg_tabix LIKE sy-tabix.

*----------------------------------------------------------------------*
* C O N S T A N T E S
*----------------------------------------------------------------------*
CONSTANTS : c_1 TYPE c VALUE '1',
c_2 TYPE c VALUE '2',
c_3 TYPE c VALUE '3',
c_4 TYPE c VALUE '4',
c_01(2) TYPE c VALUE '01',
c_02(2) TYPE c VALUE '02',
c_21(2) TYPE c VALUE '21',
c_a(1) TYPE c VALUE 'A',
c_m(1) TYPE c VALUE 'M',
c_d(1) TYPE c VALUE 'D',
c_x(1) TYPE c VALUE 'X',
c_real(4) TYPE c VALUE 'Real',
c_prev(9) TYPE c VALUE 'Previsto',
c_recreal(10) TYPE c VALUE 'Rec. Real'.
*----------------------------------------------------------------------*
* T E L A D E S E L A � � O
*----------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK bl1 WITH FRAME TITLE text-001.
SELECT-OPTIONS : s_pspid FOR z9t_fi020-pspid,
s_posid FOR z9t_fi020-posid,
s_zvrsnr FOR z9t_fi026-zvrsnr.
SELECTION-SCREEN END OF BLOCK bl1.
*----------------------------------------------------------------------*
* I N I C I O D O P R O C E S S A M E N T O
*----------------------------------------------------------------------*
START-OF-SELECTION.

*----------------------------------------------------------------------*
* T E R M I N O D O P R O C E S S A M E N T O
*----------------------------------------------------------------------*
END-OF-SELECTION.

CALL SCREEN 100.

*&---------------------------------------------------------------------*
*& Module PBO OUTPUT
*&---------------------------------------------------------------------*
* process before output
*----------------------------------------------------------------------*
MODULE pbo OUTPUT.

SET PF-STATUS 'ST_100'.


IF tree1 IS INITIAL.
PERFORM init_tree.
ENDIF.
CALL METHOD cl_gui_cfw=>flush.

ENDMODULE. " PBO OUTPUT


*&---------------------------------------------------------------------*
*& Module PAI INPUT
*&---------------------------------------------------------------------*
* process after input
*----------------------------------------------------------------------*
MODULE pai INPUT.

CASE ok_code.
WHEN 'EXIT' OR 'BACK' OR 'CANC'.
PERFORM exit_program.

WHEN OTHERS.
CALL METHOD cl_gui_cfw=>dispatch.
ENDCASE.
CLEAR ok_code.
CALL METHOD cl_gui_cfw=>flush.
ENDMODULE. " PAI INPUT

*&---------------------------------------------------------------------*
*& Form build_fieldcatalog
*&---------------------------------------------------------------------*
* build fieldcatalog for structure sflight
*----------------------------------------------------------------------*
FORM build_fieldcatalog.

* get fieldcatalog
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
i_structure_name = 'Z9T_FI029'
CHANGING
ct_fieldcat = gt_fieldcatalog.

* change fieldcatalog
DATA: ls_fieldcatalog TYPE lvc_s_fcat.
LOOP AT gt_fieldcatalog INTO ls_fieldcatalog.
CASE ls_fieldcatalog-fieldname.
WHEN 'VBELN' OR 'POSNR'.
ls_fieldcatalog-no_out = 'X'.
ls_fieldcatalog-key = ''.
WHEN 'VALLAB' OR 'VALLABL' OR 'VALLAR' OR 'VALLARL'.
ls_fieldcatalog-do_sum = 'X'.
ENDCASE.
MODIFY gt_fieldcatalog FROM ls_fieldcatalog.
ENDLOOP.
ENDFORM. " build_fieldcatalog
*&---------------------------------------------------------------------*
*& Form build_hierarchy_header
*&---------------------------------------------------------------------*
* build hierarchy-header-information
*----------------------------------------------------------------------*
* -->P_L_HIERARCHY_HEADER strucxture for hierarchy-header
*----------------------------------------------------------------------*
FORM build_hierarchy_header CHANGING
p_hierarchy_header TYPE treev_hhdr.

p_hierarchy_header-heading = 'Hierarchy Header'. "#EC NOTEXT


p_hierarchy_header-tooltip =
'This is the Hierarchy Header !'. "#EC NOTEXT
p_hierarchy_header-width = 30.
p_hierarchy_header-width_pix = ''.

ENDFORM. " build_hierarchy_header


*&---------------------------------------------------------------------*
*& Form exit_program
*&---------------------------------------------------------------------*
* free object and leave program
*----------------------------------------------------------------------*
FORM exit_program.

CALL METHOD tree1->free.


LEAVE PROGRAM.

ENDFORM. " exit_program


*&---------------------------------------------------------------------*
*& Form build_header
*&---------------------------------------------------------------------*
* build table for html_header
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM build_comment USING
pt_list_commentary TYPE slis_t_listheader
p_logo TYPE sdydo_value.

DATA: ls_line TYPE slis_listheader.


*
* LIST HEADING LINE: TYPE H
CLEAR ls_line.
ls_line-typ = 'H'.
* LS_LINE-KEY: NOT USED FOR THIS TYPE
ls_line-info = 'Relat�rio para Project Review'. "#EC NOTEXT
APPEND ls_line TO pt_list_commentary.
* STATUS LINE: TYPE S
CLEAR ls_line.
ls_line-typ = 'S'.
ls_line-key = 'Data'. "#EC NOTEXT
CONCATENATE sy-datum+6(2) sy-datum+4(2) sy-datum(4)
INTO ls_line-info SEPARATED BY '.'.
APPEND ls_line TO pt_list_commentary.
* ls_line-key = 'time'.
* ls_line-info = '2.00 pm'. "#EC NOTEXT
* APPEND ls_line TO pt_list_commentary.
* ACTION LINE: TYPE A
CLEAR ls_line.
ls_line-typ = 'A'.
* LS_LINE-KEY: NOT USED FOR THIS TYPE
ls_line-info = 'Alstom - Taubat�'. "#ECNOTEXT
APPEND ls_line TO pt_list_commentary.

p_logo = 'ENJOYSAP_LOGO'.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form create_hierarchy
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM create_hierarchy.
**.Seleciona o projeto
* SELECT *
* INTO TABLE tg_020
* FROM z9t_fi020
* WHERE pspid IN s_pspid.
*
* IF NOT sy-subrc IS INITIAL.
* MESSAGE i000(z9fi) WITH 'Nenhum registro foi encontrado!!'.
* STOP.
* ENDIF.
*
* SELECT *
* INTO TABLE tg_026
* FROM z9t_fi026
* WHERE pspid IN s_pspid AND
* zvrsnr IN s_zvrsnr.
*
* SORT tg_026 BY pspid zvrsnr.

PERFORM f_limpa_tabelas.
PERFORM f_selecion_projeto.
PERFORM f_seleciona_vlr_basico.
PERFORM f_seleciona_vlr_reajust.
PERFORM f_seleciona_vlr_reajust2.
PERFORM f_seleciona_vlr_basico_real.
PERFORM f_seleciona_vlr_reajt_real.
PERFORM f_verifica_registros.

DATA: l_pspid_key TYPE lvc_nkey,


l_posid_key TYPE lvc_nkey,
l_vbeln_key TYPE lvc_nkey,
l_posnr_key TYPE lvc_nkey,
l_last_key TYPE lvc_nkey,
v_ok.

SORT tg_029 BY pspid posid vbeln posnr.

LOOP AT tg_029 INTO st_029.


ON CHANGE OF st_029-pspid.
PERFORM add_pspid_line USING st_029
''
CHANGING l_pspid_key.

ENDON.

ON CHANGE OF st_029-posid.
PERFORM add_posid_line USING st_029
l_pspid_key
CHANGING l_posid_key.

ENDON.

ON CHANGE OF st_029-vbeln.
PERFORM add_carrid_line USING st_029
l_posid_key
CHANGING l_vbeln_key.

PERFORM add_connid_line USING st_029


l_vbeln_key
CHANGING l_posnr_key.

v_ok = c_x.

ENDON.
ON CHANGE OF st_029-posnr.
IF v_ok IS INITIAL.
PERFORM add_connid_line USING st_029
l_vbeln_key
CHANGING l_posnr_key.
ELSE.
CLEAR v_ok.
ENDIF.
ENDON.
PERFORM add_complete_line USING st_029
l_posnr_key
CHANGING l_last_key.
ENDLOOP.

* calculate totals
CALL METHOD tree1->update_calculations.

* this method must be called to send the data to the frontend


CALL METHOD tree1->frontend_update.

ENDFORM. " create_hierarchy

*&---------------------------------------------------------------------*
*& Form add_carrid_line
*&---------------------------------------------------------------------*
* add hierarchy-level 1 to tree
*----------------------------------------------------------------------*
* -->P_LS_SFLIGHT sflight
* -->P_RELEATKEY relatkey
* <-->p_node_key new node-key
*----------------------------------------------------------------------*
FORM add_carrid_line USING ps_fi029 TYPE z9t_fi029
p_relat_key TYPE lvc_nkey
CHANGING p_node_key TYPE lvc_nkey.

DATA: l_node_text TYPE lvc_value,


ls_fi029 TYPE z9t_fi029.

* set item-layout
DATA: lt_item_layout TYPE lvc_t_layi,
ls_item_layout TYPE lvc_s_layi.
ls_item_layout-t_image = '@3Y@'.
ls_item_layout-fieldname = tree1->c_hierarchy_column_name.
ls_item_layout-style =
cl_gui_column_tree=>style_intensifd_critical.
APPEND ls_item_layout TO lt_item_layout.

* add node
l_node_text = ps_fi029-vbeln.
CALL METHOD tree1->add_node
EXPORTING
i_relat_node_key = p_relat_key
i_relationship = cl_gui_column_tree=>relat_last_child
i_node_text = l_node_text
is_outtab_line = ls_fi029
it_item_layout = lt_item_layout
IMPORTING
e_new_node_key = p_node_key.

ENDFORM. " add_carrid_line


*&---------------------------------------------------------------------*
*& Form add_connid_line
*&---------------------------------------------------------------------*
* add hierarchy-level 2 to tree
*----------------------------------------------------------------------*
* -->P_LS_SFLIGHT sflight
* -->P_RELEATKEY relatkey
* <-->p_node_key new node-key
*----------------------------------------------------------------------*
FORM add_connid_line USING ps_fi029 TYPE z9t_fi029
p_relat_key TYPE lvc_nkey
CHANGING p_node_key TYPE lvc_nkey.

DATA: l_node_text TYPE lvc_value,


ls_fi029 TYPE z9t_fi029.

* set item-layout
DATA: lt_item_layout TYPE lvc_t_layi,
ls_item_layout TYPE lvc_s_layi.
ls_item_layout-t_image = '@3Y@'.
ls_item_layout-style =
cl_gui_column_tree=>style_intensified.
ls_item_layout-fieldname = tree1->c_hierarchy_column_name.
APPEND ls_item_layout TO lt_item_layout.

* add node
l_node_text = ps_fi029-posnr.
CALL METHOD tree1->add_node
EXPORTING
i_relat_node_key = p_relat_key
i_relationship = cl_gui_column_tree=>relat_last_child
i_node_text = l_node_text
is_outtab_line = ls_fi029
it_item_layout = lt_item_layout
IMPORTING
e_new_node_key = p_node_key.

ENDFORM. " add_connid_line


*&---------------------------------------------------------------------*
*& Form add_cmplete_line
*&---------------------------------------------------------------------*
* add hierarchy-level 3 to tree
*----------------------------------------------------------------------*
* -->P_LS_SFLIGHT sflight
* -->P_RELEATKEY relatkey
* <-->p_node_key new node-key
*----------------------------------------------------------------------*
FORM add_complete_line USING ps_fi029 TYPE z9t_fi029
p_relat_key TYPE lvc_nkey
CHANGING p_node_key TYPE lvc_nkey.

DATA: l_node_text TYPE lvc_value.


* set item-layout
DATA: lt_item_layout TYPE lvc_t_layi,
ls_item_layout TYPE lvc_s_layi.
ls_item_layout-fieldname = tree1->c_hierarchy_column_name.
ls_item_layout-class = cl_gui_column_tree=>item_class_checkbox.
ls_item_layout-editable = 'X'.
APPEND ls_item_layout TO lt_item_layout.

* Seleciona descri��o do Marco


SELECT SINGLE *
INTO mltx
FROM mltx
WHERE mltx_zaehl EQ ps_fi029-mlst_zaehl AND
langu EQ sy-langu.

l_node_text = mltx-ktext.
CALL METHOD tree1->add_node
EXPORTING
i_relat_node_key = p_relat_key
i_relationship = cl_gui_column_tree=>relat_last_child
is_outtab_line = ps_fi029
i_node_text = l_node_text
it_item_layout = lt_item_layout
IMPORTING
e_new_node_key = p_node_key.

ENDFORM. " add_complete_line


*&---------------------------------------------------------------------*
*& Form register_events
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM register_events.
* define the events which will be passed to the backend
DATA: lt_events TYPE cntl_simple_events,
l_event TYPE cntl_simple_event.

* define the events which will be passed to the backend


l_event-eventid = cl_gui_column_tree=>eventid_expand_no_children.
APPEND l_event TO lt_events.
l_event-eventid = cl_gui_column_tree=>eventid_checkbox_change.
APPEND l_event TO lt_events.
l_event-eventid = cl_gui_column_tree=>eventid_header_context_men_req.
APPEND l_event TO lt_events.
l_event-eventid = cl_gui_column_tree=>eventid_node_context_menu_req.
APPEND l_event TO lt_events.
l_event-eventid = cl_gui_column_tree=>eventid_item_context_menu_req.
APPEND l_event TO lt_events.
l_event-eventid = cl_gui_column_tree=>eventid_header_click.
APPEND l_event TO lt_events.
l_event-eventid = cl_gui_column_tree=>eventid_item_keypress.
APPEND l_event TO lt_events.

CALL METHOD tree1->set_registered_events


EXPORTING
events = lt_events
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
illegal_event_combination = 3.
IF sy-subrc <> 0.
MESSAGE x208(00) WITH 'ERROR'. "#EC NOTEXT
ENDIF.

* set Handler
DATA: l_event_receiver TYPE REF TO lcl_tree_event_receiver.
CREATE OBJECT l_event_receiver.
SET HANDLER l_event_receiver->handle_node_ctmenu_request
FOR tree1.
SET HANDLER l_event_receiver->handle_node_ctmenu_selected
FOR tree1.
SET HANDLER l_event_receiver->handle_item_ctmenu_request
FOR tree1.
SET HANDLER l_event_receiver->handle_item_ctmenu_selected
FOR tree1.
ENDFORM. " register_events
*&---------------------------------------------------------------------*
*& Form change_toolbar
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM change_toolbar.

* get toolbar control


CALL METHOD tree1->get_toolbar_object
IMPORTING
er_toolbar = mr_toolbar.

CHECK NOT mr_toolbar IS INITIAL.

* add seperator to toolbar


CALL METHOD mr_toolbar->add_button
EXPORTING
fcode = ''
icon = ''
butn_type = cntb_btype_sep
text = ''
quickinfo = 'This is a Seperator'. "#EC NOTEXT

* add Standard Button to toolbar (for Delete Subtree)


CALL METHOD mr_toolbar->add_button
EXPORTING
fcode = 'DELETE'
icon = '@18@'
butn_type = cntb_btype_button
text = ''
quickinfo = 'Delete subtree'. "#EC NOTEXT

* add Dropdown Button to toolbar (for Insert Line)


CALL METHOD mr_toolbar->add_button
EXPORTING
fcode = 'INSERT_LC'
icon = '@17@'
butn_type = cntb_btype_dropdown
text = ''
quickinfo = 'Insert Line'. "#EC NOTEXT

* set event-handler for toolbar-control


CREATE OBJECT toolbar_event_receiver.
SET HANDLER toolbar_event_receiver->on_function_selected
FOR mr_toolbar.
SET HANDLER toolbar_event_receiver->on_toolbar_dropdown
FOR mr_toolbar.

ENDFORM. " change_toolbar


*&---------------------------------------------------------------------*
*& Form init_tree
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM init_tree.

* create fieldcatalog for structure sflight


PERFORM build_fieldcatalog.

* create container for alv-tree


DATA: l_tree_container_name(30) TYPE c,
l_custom_container TYPE REF TO cl_gui_custom_container.
l_tree_container_name = 'TREE1'.

IF sy-batch IS INITIAL.
CREATE OBJECT l_custom_container
EXPORTING
container_name = l_tree_container_name
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
create_error = 3
lifetime_error = 4
lifetime_dynpro_dynpro_link = 5.
IF sy-subrc <> 0.
MESSAGE x208(00) WITH 'ERROR'. "#EC NOTEXT
ENDIF.
ENDIF.

* create tree control


CREATE OBJECT tree1
EXPORTING
parent = l_custom_container
node_selection_mode = cl_gui_column_tree=>node_sel_mode_single
item_selection = 'X'
no_html_header = ''
no_toolbar = ''
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
create_error = 3
lifetime_error = 4
illegal_node_selection_mode = 5
failed = 6
illegal_column_name = 7.
IF sy-subrc <> 0.
MESSAGE x208(00) WITH 'ERROR'. "#EC NOTEXT
ENDIF.

* create Hierarchy-header
DATA l_hierarchy_header TYPE treev_hhdr.
PERFORM build_hierarchy_header CHANGING l_hierarchy_header.

* create info-table for html-header


DATA: lt_list_commentary TYPE slis_t_listheader,
l_logo TYPE sdydo_value.
PERFORM build_comment USING
lt_list_commentary
l_logo.

* repid for saving variants


DATA: ls_variant TYPE disvariant.
ls_variant-report = sy-repid.

* create emty tree-control


CALL METHOD tree1->set_table_for_first_display
EXPORTING
is_hierarchy_header = l_hierarchy_header
it_list_commentary = lt_list_commentary
i_logo = l_logo
i_background_id = 'ALV_BACKGROUND'
i_save = 'A'
is_variant = ls_variant
CHANGING
it_outtab = tg_029_aux
it_fieldcatalog = gt_fieldcatalog.

* create hierarchy
PERFORM create_hierarchy.

* add own functioncodes to the toolbar


PERFORM change_toolbar.

* register events
PERFORM register_events.

* adjust column_width
CALL METHOD tree1->column_optimize.

ENDFORM. " init_tree


*&---------------------------------------------------------------------*
*& Form f_selecion_projeto
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM f_selecion_projeto.

*.Seleciona o projeto
SELECT *
INTO TABLE tg_020
FROM z9t_fi020
WHERE pspid IN s_pspid AND
posid IN s_posid.

IF NOT sy-subrc IS INITIAL.


MESSAGE i000(z9fi) WITH 'Nenhum registro foi encontrado!!'.
STOP.
ENDIF.

ENDFORM. " f_selecion_projeto


*----------------------------------------------------------------------*

*&---------------------------------------------------------------------*
*& Form f_seleciona_vlr_basico
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM f_seleciona_vlr_basico.

SELECT *
INTO TABLE tg_026
FROM z9t_fi026
FOR ALL ENTRIES IN tg_020
WHERE pspid EQ tg_020-pspid AND
posid EQ tg_020-posid AND
vbeln EQ tg_020-vbeln AND
posnr EQ tg_020-posnr AND
zvrsnr EQ space AND
tplanc EQ c_02 AND
ztpsd EQ c_1.

IF sy-subrc IS INITIAL.

SORT tg_020 BY posid vbeln posnr.

LOOP AT tg_026.

MOVE : tg_026-pspid TO tg_029-pspid,


tg_026-posid TO tg_029-posid,
tg_026-vbeln TO tg_029-vbeln,
tg_026-posnr TO tg_029-posnr,
tg_026-mlst_zaehl TO tg_029-mlst_zaehl,
tg_026-dtcob TO tg_029-dtcob,
tg_026-valla TO tg_029-vallab.

IF tg_026-tplanc EQ c_01.
MOVE : c_real TO tg_029-tipo1.
ELSEIF tg_026-tplanc EQ c_02.
MOVE : c_prev TO tg_029-tipo1.
ENDIF.

READ TABLE tg_020 WITH KEY pspid = tg_026-pspid


posid = tg_026-posid
vbeln = tg_026-vbeln
posnr = tg_026-posnr
BINARY SEARCH.
tg_029-vallabl = ( tg_029-vallab * tg_020-pvliq ) / 100.

APPEND tg_029.
CLEAR tg_029.

ENDLOOP.

ENDIF.

ENDFORM. " f_seleciona_vlr_basico


*----------------------------------------------------------------------*

*&---------------------------------------------------------------------*
*& Form f-seleciona_vlr_reajust
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM f_seleciona_vlr_reajust.

CLEAR : tg_026.
REFRESH : tg_026.

SELECT *
INTO TABLE tg_026
FROM z9t_fi026
FOR ALL ENTRIES IN tg_020
WHERE pspid EQ tg_020-pspid AND
posid EQ tg_020-posid AND
vbeln EQ tg_020-vbeln AND
posnr EQ tg_020-posnr AND
zvrsnr IN s_zvrsnr AND
tplanc EQ c_02 AND
ztpsd EQ c_1.

IF sy-subrc IS INITIAL.

SORT tg_029 BY vbeln posnr mlst_zaehl.

LOOP AT tg_026.

READ TABLE tg_020 WITH KEY pspid = tg_026-pspid


posid = tg_026-posid
vbeln = tg_026-vbeln
posnr = tg_026-posnr
BINARY SEARCH.

READ TABLE tg_029 WITH KEY pspid = tg_026-pspid


posid = tg_026-posid
vbeln = tg_026-vbeln
posnr = tg_026-posnr
mlst_zaehl = tg_026-mlst_zaehl
BINARY SEARCH.

vg_tabix = sy-tabix.

IF sy-subrc IS INITIAL.

IF tg_026-tplanc EQ c_01.
MOVE : c_real TO tg_029-tipo2.
ELSEIF tg_026-tplanc EQ c_02.
MOVE : c_prev TO tg_029-tipo2.
ENDIF.

MOVE : tg_026-valla TO tg_029-vallar.

tg_029-vallarl = ( tg_029-vallar * tg_020-pvliq ) / 100.

MODIFY tg_029 INDEX vg_tabix.

ELSE.

MOVE : tg_026-pspid TO tg_029-pspid,


tg_026-posid TO tg_029-posid,
tg_026-vbeln TO tg_029-vbeln,
tg_026-posnr TO tg_029-posnr,
tg_026-mlst_zaehl TO tg_029-mlst_zaehl,
tg_026-dtcob TO tg_029-dtcob,
tg_026-valla TO tg_029-vallar.

IF tg_026-tplanc EQ c_01.
MOVE : c_real TO tg_029-tipo2.
ELSEIF tg_026-tplanc EQ c_02.
MOVE : c_prev TO tg_029-tipo2.
ENDIF.

tg_029-vallarl = ( tg_029-vallar * tg_020-pvliq ) / 100.

APPEND tg_029.
CLEAR tg_029.

ENDIF.

ENDLOOP.

ENDIF.

ENDFORM. " f_seleciona_vlr_reajust


*----------------------------------------------------------------------*

*&---------------------------------------------------------------------*
*& Form f_seleciona_vlr_reajust2
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM f_seleciona_vlr_reajust2.

CLEAR : tg_026.
REFRESH : tg_026.

SELECT *
INTO TABLE tg_026
FROM z9t_fi026
FOR ALL ENTRIES IN tg_020
WHERE pspid EQ tg_020-pspid AND
posid EQ tg_020-posid AND
* vbeln EQ tg_020-vbeln AND
* posnr EQ tg_020-posnr AND
* zvrsnr EQ s_zvrsnr AND
tplanc EQ c_01 AND
ztpsd EQ c_2.

IF sy-subrc IS INITIAL.

SORT tg_029 BY vbeln posnr mlst_zaehl.

LOOP AT tg_026.

READ TABLE tg_020 WITH KEY pspid = tg_026-pspid


posid = tg_026-posid
vbeln = tg_026-vbeln
posnr = tg_026-posnr
BINARY SEARCH.

READ TABLE tg_029 WITH KEY pspid = tg_026-pspid


posid = tg_026-posid
vbeln = tg_026-vbeln
posnr = tg_026-posnr
mlst_zaehl = tg_026-mlst_zaehl
BINARY SEARCH.

vg_tabix = sy-tabix.

IF sy-subrc IS INITIAL.

IF tg_026-tplanc EQ c_01.
MOVE : c_real TO tg_029-tipo2.
ELSEIF tg_026-tplanc EQ c_02.
MOVE : c_prev TO tg_029-tipo2.
ENDIF.

MOVE : tg_026-valla TO tg_029-vallar.

tg_029-vallarl = ( tg_029-vallar * tg_020-pvliq ) / 100.

MODIFY tg_029 INDEX vg_tabix.

ELSE.

MOVE : tg_026-pspid TO tg_029-pspid,


tg_026-posid TO tg_029-posid,
tg_026-vbeln TO tg_029-vbeln,
tg_026-posnr TO tg_029-posnr,
tg_026-mlst_zaehl TO tg_029-mlst_zaehl,
tg_026-dtcob TO tg_029-dtcob,
tg_026-valla TO tg_029-vallar.

IF tg_026-tplanc EQ c_01.
MOVE : c_real TO tg_029-tipo2.
ELSEIF tg_026-tplanc EQ c_02.
MOVE : c_prev TO tg_029-tipo2.
ENDIF.

tg_029-vallarl = ( tg_029-vallar * tg_020-pvliq ) / 100.

APPEND tg_029.
CLEAR tg_029.
ENDIF.

ENDLOOP.

ENDIF.

ENDFORM. " f_seleciona_vlr_reajust2


*----------------------------------------------------------------------*

*&---------------------------------------------------------------------*
*& Form f_limpa_tabelas
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM f_limpa_tabelas.

CLEAR : tg_020, tg_026, tg_029.


REFRESH : tg_020, tg_026, tg_029.

ENDFORM. " f_limpa_tabelas


*----------------------------------------------------------------------
*&---------------------------------------------------------------------*
*& Form add_pspid_line
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_ST_029 text
* -->P_0391 text
* <--P_L_PSPID_KEY text
*----------------------------------------------------------------------*
FORM add_pspid_line USING ps_fi029 TYPE z9t_fi029
p_relat_key TYPE lvc_nkey
CHANGING p_node_key TYPE lvc_nkey.

DATA: l_node_text TYPE lvc_value,


ls_fi029 TYPE z9t_fi029.

* set item-layout
DATA: lt_item_layout TYPE lvc_t_layi,
ls_item_layout TYPE lvc_s_layi.
ls_item_layout-t_image = '@3P@'.
ls_item_layout-style =
cl_gui_column_tree=>style_intensified.
ls_item_layout-fieldname = tree1->c_hierarchy_column_name.
APPEND ls_item_layout TO lt_item_layout.

* add node
l_node_text = ps_fi029-pspid.
CALL METHOD tree1->add_node
EXPORTING
i_relat_node_key = p_relat_key
i_relationship = cl_gui_column_tree=>relat_last_child
i_node_text = l_node_text
is_outtab_line = ls_fi029
it_item_layout = lt_item_layout
IMPORTING
e_new_node_key = p_node_key.

ENDFORM. " add_pspid_line


*
*&---------------------------------------------------------------------*
*& Form add_posid_line
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_ST_029 text
* -->P_L_PSPID_KEY text
* <--P_L_POSID_KEY text
*----------------------------------------------------------------------*
FORM add_posid_line USING ps_fi029 TYPE z9t_fi029
p_relat_key TYPE lvc_nkey
CHANGING p_node_key TYPE lvc_nkey.

DATA: l_node_text TYPE lvc_value,


ls_fi029 TYPE z9t_fi029.

* set item-layout
DATA: lt_item_layout TYPE lvc_t_layi,
ls_item_layout TYPE lvc_s_layi.
ls_item_layout-t_image = '@3P@'.
ls_item_layout-style =
cl_gui_column_tree=>style_intensified.
ls_item_layout-fieldname = tree1->c_hierarchy_column_name.
APPEND ls_item_layout TO lt_item_layout.

* add node
l_node_text = ps_fi029-posid.
CALL METHOD tree1->add_node
EXPORTING
i_relat_node_key = p_relat_key
i_relationship = cl_gui_column_tree=>relat_last_child
i_node_text = l_node_text
is_outtab_line = ls_fi029
it_item_layout = lt_item_layout
IMPORTING
e_new_node_key = p_node_key.

ENDFORM. " add_posid_line


*&---------------------------------------------------------------------*
*& Form f_verifica_registros
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM f_verifica_registros.

*----------------------------------------------------------------------*
* Variaveis Locais
*----------------------------------------------------------------------*
DATA : vl_data LIKE p0001-begda,
vl_dia LIKE t5a4a-dlydy,
vl_mes LIKE t5a4a-dlymo,
vl_ano LIKE t5a4a-dlyyr,
vl_data2 LIKE p0001-begda.

SORT tg_020 BY pspid posid ztpsd.

LOOP AT tg_029 WHERE vallar IS initial.


READ TABLE tg_020 WITH KEY pspid = tg_029-pspid
posid = tg_029-posid
ztpsd = c_2
BINARY SEARCH.

IF sy-subrc IS INITIAL.
CLEAR : vl_dia, vl_mes, vl_ano, vl_data, vl_data2.
MOVE : tg_020-kdatu TO vl_data.
IF tg_020-tpreaj EQ c_a.
MOVE : tg_020-perrea TO vl_ano.
ELSEIF tg_020-tpreaj EQ c_m.
MOVE : tg_020-perrea TO vl_mes.
ELSEIF tg_020-tpreaj EQ c_d.
MOVE : tg_020-perrea TO vl_dia.
ENDIF.

CALL FUNCTION 'RP_CALC_DATE_IN_INTERVAL'


EXPORTING
date = vl_data
days = vl_dia
months = vl_mes
signum = '+'
years = vl_ano
IMPORTING
calc_date = vl_data2.

IF tg_029-dtcob > vl_data2.


MESSAGE e000(z9fi) WITH 'Eventos financeiros com' 'datas no passado'
'n�o realizados, reprogramar.'.
* & & & & & &
STOP.
ENDIF.

ENDIF.

ENDLOOP.

ENDFORM. " f_verifica_registros


*----------------------------------------------------------------------*

*&---------------------------------------------------------------------*
*& Form f_seleciona_vlr_basico_real
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM f_seleciona_vlr_basico_real.

CLEAR : tg_026.
REFRESH : tg_026.

SELECT *
INTO TABLE tg_026
FROM z9t_fi026
FOR ALL ENTRIES IN tg_020
WHERE pspid EQ tg_020-pspid AND
posid EQ tg_020-posid AND
tplanc EQ c_21 AND
ztpsd EQ c_3.
IF sy-subrc IS INITIAL.

SORT tg_020 BY pspid posid ztpsd.

LOOP AT tg_026.

READ TABLE tg_020 WITH KEY pspid = tg_026-pspid


posid = tg_026-posid
ztpsd = c_3
BINARY SEARCH.
CLEAR : tg_029.
MOVE : tg_026-pspid TO tg_029-pspid,
tg_026-posid TO tg_029-posid,
tg_020-vbeln TO tg_029-vbeln,
tg_026-posnr TO tg_029-posnr,
tg_026-mlst_zaehl TO tg_029-mlst_zaehl,
tg_026-dtcob TO tg_029-dtcob,
tg_026-valla TO tg_029-vallab.

IF tg_026-tplanc EQ c_21.
MOVE : c_recreal TO tg_029-tipo1.
ENDIF.

tg_029-vallabl = ( tg_029-vallab * tg_020-pvliq ) / 100.

APPEND tg_029.
CLEAR tg_029.

ENDLOOP.

ENDIF.

ENDFORM. " f_seleciona_vlr_basico_real


*----------------------------------------------------------------------*

*&---------------------------------------------------------------------*
*& Form f_seleciona_vlr_reajt_real
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM f_seleciona_vlr_reajt_real.

CLEAR : tg_026.
REFRESH : tg_026.

SELECT *
INTO TABLE tg_026
FROM z9t_fi026
FOR ALL ENTRIES IN tg_020
WHERE pspid EQ tg_020-pspid AND
posid EQ tg_020-posid AND
tplanc EQ c_21 AND
ztpsd EQ c_4.

IF sy-subrc IS INITIAL.

SORT tg_020 BY pspid posid ztpsd.

LOOP AT tg_026.
READ TABLE tg_020 WITH KEY pspid = tg_026-pspid
posid = tg_026-posid
ztpsd = c_3
BINARY SEARCH.

SORT tg_029 BY pspid posid vbeln mlst_zaehl.

READ TABLE tg_029 WITH KEY pspid = tg_026-pspid


posid = tg_026-posid
vbeln = tg_026-vbeln
posnr = tg_026-posnr
mlst_zaehl = tg_026-mlst_zaehl
BINARY SEARCH.
vg_tabix = sy-tabix.

IF sy-subrc IS INITIAL.
MOVE : tg_026-valla TO tg_029-vallar.

IF tg_026-tplanc EQ c_21.
MOVE : c_recreal TO tg_029-tipo2.
ENDIF.

tg_029-vallarl = ( tg_029-vallar * tg_020-pvliq ) / 100.

MODIFY tg_029 INDEX vg_tabix.


CLEAR tg_029.

ELSE.
CLEAR tg_029.
MOVE : tg_026-pspid TO tg_029-pspid,
tg_026-posid TO tg_029-posid,
tg_020-vbeln TO tg_029-vbeln,
tg_026-posnr TO tg_029-posnr,
tg_026-mlst_zaehl TO tg_029-mlst_zaehl,
tg_026-dtcob TO tg_029-dtcob,
tg_026-valla TO tg_029-vallar.

IF tg_026-tplanc EQ c_21.
MOVE : c_recreal TO tg_029-tipo2.
ENDIF.

tg_029-vallarl = ( tg_029-vallar * tg_020-pvliq ) / 100.

APPEND tg_029.
CLEAR tg_029.

ENDIF.

ENDLOOP.

ENDIF.

ENDFORM. " f_seleciona_vlr_reajt_real


*----------------------------------------------------------------------*

You might also like