Friday, November 5, 2010

ALV Tree

ALV Tree program

*&---------------------------------------------------------------------*
*& Report ZALV_TREE
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT ZALV_TREE MESSAGE-ID zer14.

*&---------------------------------------------------------------------*
*& DECLERATION OF TYPE POOL.
*&---------------------------------------------------------------------*
TYPE-POOLS slis.

*&---------------------------------------------------------------------*
*& DECLERATION OF TABLES.
*&---------------------------------------------------------------------*
TABLES: aufk,bkpf,proj,tj02t,prps,jcds,coep.

*&---------------------------------------------------------------------*
* TYPE DECLARATION
*&---------------------------------------------------------------------*

TYPES:
*FOR aufk TABLE
BEGIN OF t_aufk,
aufnr TYPE aufk-aufnr, "ORDER NUMBER
objnr TYPE aufk-objnr, "OBJECT NUMBER
pspel TYPE aufk-pspel, "WBS ELEMENT
stat TYPE jcds-stat, "OBJECT STATUS
udate TYPE jcds-udate, "CREATION DATE
inact TYPE jcds-inact, "INACTIVE STATUS
utime TYPE jcds-utime, "TIME CHANGED
chgnr TYPE jcds-chgnr, "Change number
END OF t_aufk,

*FOR PROJ TABLE

BEGIN OF t_proj,
pspnr TYPE proj-pspnr, "PROJECT DEFINATION (INITIAL)
pspid TYPE proj-pspid, "PROJECT DEFINATION
post1 TYPE proj-post1, "PROJECT DESCRIPTION
profl TYPE proj-profl,
END OF t_proj,
*FOR PRPS TABLE

BEGIN OF t_prps,
pspnr TYPE prps-pspnr, "WBS ELEMENT
objnr TYPE prps-objnr, "OBJECT NUMBER
psphi TYPE prps-psphi, "CURRENT NUMBER OF THE APPROPIATE OBJECT
post1 TYPE prps-post1, "WBS DESCRIPTION
END OF t_prps,

*FOR COEP TABLE

BEGIN OF t_coep,
wtgbtr TYPE coep-wtgbtr, "Total Value in Transaction Currency
objnr TYPE coep-objnr, "OBJECT NUMBER
END OF t_coep,

*FOR COEP TABLE

BEGIN OF t_coep1,
wtgbtr TYPE coep-wtgbtr, "Total Value in Transaction Currency
objnr TYPE coep-objnr, "OBJECT NUMBER
END OF t_coep1,

*FOR TJ02T TABLE
BEGIN OF t_tj02t,
istat TYPE tj02t-istat, "System status
txt04 TYPE tj02t-txt04, "ndividual status of an object (short form)
END OF t_tj02t,

* FOR T056P TABLE
BEGIN OF t_t056p,
zsoll TYPE t056p-zsoll, "Interest Rate
datab TYPE t056p-datab, "Effective-From Date
END OF t_t056p,

* FOR BKPF TABLE

BEGIN OF t_bkpf,
gjahr TYPE bkpf,
END OF t_bkpf,

*FOR FINAL INTERNAL TABLE

BEGIN OF t_final,
aufnr TYPE aufk-aufnr, "ORDER NUMBER
objnr TYPE aufk-objnr, "OBJECT NUMBER
pspel TYPE aufk-pspel, "WBS ELEMENT
post1 TYPE proj-post1, "PROJECT DESCRIPTION
post11 TYPE prps-post1, "WBS DESCRIPTION
stat TYPE jcds-stat, "OBJECT STATUS
udate TYPE jcds-udate, "CREATION DATE
inact TYPE jcds-inact, "INACTIVE STATUS
utime TYPE jcds-utime, "TIME CHANGED
pspnr TYPE prps-pspnr, "WBS ELEMENT
psphi TYPE prps-psphi, "CURRENT NUMBER OF THE APPROPIATE OBJECT
wtgbtr TYPE coep-wtgbtr, "Total Value in Transaction Currency
wtgbtr1 TYPE coep-wtgbtr, "Total Value in Transaction Currency
zsoll TYPE t056p-zsoll, "Interest Rate
zsoll1 TYPE t056p-zsoll, "Interest Rate
v_var1 TYPE p DECIMALS 2, "FOR CALCULATION OF DEBT AMOUNT
v_var2 TYPE p DECIMALS 2, "FOR CLCULATION OF EQUITY AMOUNT
v_total TYPE p DECIMALS 2, " TOTAL OF V_VAR1 AND V_VAR2
v_e_bal TYPE p DECIMALS 2, "ENDING TOTAL
END OF t_final.

*&---------------------------------------------------------------------*
* PARAMETERS FOR SELECTION-SCREEN
*&---------------------------------------------------------------------*
* SELECTION SCREEN BLOCK FOR SELECTING VALUE
*&---------------------------------------------------------------------*

SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
SELECT-OPTIONS :
s_profl FOR proj-profl,
s_pspnr FOR proj-pspnr.

PARAMETERS :
* P_MONAT TYPE BKPF-MONAT OBLIGATORY,
p_gjahr TYPE bkpf-gjahr OBLIGATORY,
v_fm_dt TYPE sy-datum OBLIGATORY,
v_to_dt TYPE sy-datum OBLIGATORY.
SELECTION-SCREEN END OF BLOCK b1.

*&---------------------------------------------------------------------*
* VARIABLE DECLARATIONS
*&---------------------------------------------------------------------*

DATA: v_istat TYPE tj02t-istat,
v_cal TYPE p DECIMALS 2, " FOR CALCULATION OF wa_final-zsoll / 12
v_cal1 TYPE p DECIMALS 2. " FOR CALCULATION OF wa_final-zsoll1 / 12

*&---------------------------------------------------------------------*
* CONTANTS DECLARATION
*&---------------------------------------------------------------------*

CONSTANTS : c_x(1) VALUE 'X', " value used to set X for a field
c_repid(40) VALUE sy-repid, " report id
c_teco(4) VALUE 'TECO', " object status description

c_check(1) VALUE 'X'. " value used to set X for a field

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.

INCLUDE .
INCLUDE bcalv_toolbar_event_receiver.
INCLUDE bcalv_tree_event_receiver.

DATA: toolbar_event_receiver TYPE REF TO lcl_toolbar_event_receiver.

DATA: it_field TYPE lvc_t_fcat, "Fieldcatalog
ok_code LIKE sy-ucomm. "OK-Code

*------------------------------------
* INTERNAL TABLE
*------------------------------------

DATA: it_aufk TYPE STANDARD TABLE OF t_aufk, " INTERNAL TABLE OF TYPE I_AUFK
it_proj TYPE STANDARD TABLE OF t_proj, " INTERNAL TABLE OF TYPE I_PROJ
it_prps TYPE STANDARD TABLE OF t_prps, " INTERNAL TABLE OF TYPE I_PRPS
it_coep TYPE STANDARD TABLE OF t_coep, " INTERNAL TABLE OF TYPE I_COEP
it_coep1 TYPE STANDARD TABLE OF t_coep1, " INTERNAL TABLE OF TYPE I_COPE1
it_tj02t TYPE STANDARD TABLE OF t_tj02t, " INTERNAL TABLE OF TYPE I_TJ02P
it_t056p TYPE STANDARD TABLE OF t_t056p, " INTERNAL TABLE OF TYPE I_T056T
it_final TYPE STANDARD TABLE OF t_final, " INTERNAL TABLE OF TYPE I_FIANL
it_bkpf TYPE STANDARD TABLE OF t_bkpf,
it_final1 TYPE STANDARD TABLE OF t_final.

*------------------------------------
* WORK AREA
*------------------------------------

DATA:wa_aufk TYPE t_aufk,
wa_proj TYPE t_proj,
wa_prps TYPE t_prps,
wa_coep TYPE t_coep,
wa_coep1 TYPE t_coep1,
wa_tj02t TYPE t_tj02t,
wa_t056p TYPE t_t056p,
wa_final TYPE t_final,
wa_bkpf TYPE t_bkpf,
wa_final1 TYPE t_final.

START-OF-SELECTION.

*********************************************************
* perform for passing the hard code value
*********************************************************
* PERFORM hard_code.

******************************************************************
* PERFORM for get the value
******************************************************************
PERFORM get_data.

END-OF-SELECTION.

CALL SCREEN 9000.
*&---------------------------------------------------------------------*
*& Module STATUS_9000 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE status_9000 OUTPUT.
SET PF-STATUS 'ZMAIN'.
* SET TITLEBAR 'xxx'.

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

ENDMODULE. " STATUS_9000 OUTPUT
*&---------------------------------------------------------------------*
*& Form INIT_TREE
*&---------------------------------------------------------------------*
* text

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

it_final1[] = it_final[] .
* create fieldcatalog for structure sflight

PERFORM build_fieldcatalog.

* create container for alv-tree
DATA: alv_containor(30) TYPE c,
l_custom_container TYPE REF TO cl_gui_custom_container.
alv_containor = 'TREE1'.

IF sy-batch IS INITIAL.
CREATE OBJECT l_custom_container
EXPORTING
container_name = 'ALV_CONTAINOR'
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_multiple
item_selection = space
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.
break spcandxx.
REFRESH it_final.
* 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 = it_final[] "table must be emty !!
it_fieldcatalog = it_field[].
break spcandxx.
* 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 build_fieldcatalog
*&---------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
FORM build_fieldcatalog .

DATA: wa_field TYPE lvc_s_fcat.

* get fieldcatalog
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
i_structure_name = 'ZSTRUC'
CHANGING
ct_fieldcat = it_field.

SORT it_field BY scrtext_l.

* change fieldcatalog
* data: wa_field type lvc_s_fcat.
LOOP AT it_field INTO wa_field.
CASE wa_field-fieldname.
WHEN 'POST1' OR 'POST11' OR 'AUFNR'.
wa_field-no_out = 'X'.
wa_field-key = ''.
WHEN 'WTGBTR' .
wa_field-outputlen = 20. " output length on screen
wa_field-coltext = text-003. " header information
wa_field-do_sum = 'X'. " DOING SUM

WHEN 'WTGBTR1' .
wa_field-outputlen = 20. " output length on screen
wa_field-coltext = text-004. " header information
wa_field-do_sum = 'X'. " DOING SUM
WHEN 'ZSOLL' .
wa_field-outputlen = 20. " output length on screen
wa_field-coltext = text-005. " header information
wa_field-do_sum = 'X'. " DOING SUM

WHEN 'ZSOLL1'.
wa_field-outputlen = 20. " output length on screen
wa_field-coltext = text-006. " header information
wa_field-do_sum = 'X'. " DOING SUM

WHEN 'V_VAR1' .
wa_field-outputlen = 20. " output length on screen
wa_field-coltext = text-007. " header information
wa_field-do_sum = 'X'. " DOING SUM

WHEN 'V_VAR2' .
wa_field-outputlen = 20. " output length on screen
wa_field-coltext = text-008. " header information
wa_field-do_sum = 'X'. " DOING SUM

WHEN 'V_TOTAL' .
wa_field-outputlen = 20. " output length on screen
wa_field-coltext = text-009. " header information
wa_field-do_sum = 'X'. " DOING SUM

WHEN 'V_E_BAL' .
wa_field-outputlen = 20. " output length on screen
wa_field-coltext = text-010. " header information
wa_field-do_sum = 'X'. " DOING SUM
ENDCASE.
MODIFY it_field FROM wa_field.
ENDLOOP.

ENDFORM.. "build_fieldcatalog
*&---------------------------------------------------------------------*
*& Form BUILD_HIERARCHY_HEADER
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* <--P_L_HIERARCHY_HEADER text
*----------------------------------------------------------------------*
FORM build_hierarchy_header CHANGING p_hierarchy_header TYPE treev_hhdr.

p_hierarchy_header-heading = 'Business Segment'. "#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 BUILD_COMMENT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_LT_LIST_COMMENTARY text
* -->P_L_LOGO 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 = 'ALV-tree-demo: flight-overview'. "#EC NOTEXT
APPEND ls_line TO pt_list_commentary.
* STATUS LINE: TYPE S
CLEAR ls_line.
ls_line-typ = 'S'.
ls_line-key = 'valid until'. "#EC NOTEXT
ls_line-info = 'January 29 1999'. "#EC NOTEXT
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 = 'actual data'. "#EC NOTEXT
APPEND ls_line TO pt_list_commentary.

p_logo = 'ENJOYSAP_LOGO'.

ENDFORM. " BUILD_COMMENT
*&---------------------------------------------------------------------*
*& Form CREATE_HIERARCHY
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM create_hierarchy .

* add data to tree
DATA: l_pspnr_key TYPE lvc_nkey,
l_pspnr1_key TYPE lvc_nkey,
l_last_key TYPE lvc_nkey.

SORT it_final1 BY post1 post11 aufnr.

LOOP AT it_final1 INTO wa_final1.
ON CHANGE OF wa_final1-post1.
PERFORM add_pspnr_line USING wa_final1
''
CHANGING l_pspnr_key.
ENDON.
ON CHANGE OF wa_final1-post11.
PERFORM add_pspnr1_line USING wa_final1
l_pspnr_key
CHANGING l_pspnr1_key.
ENDON.
PERFORM add_complete_line USING wa_final1
l_pspnr1_key
CHANGING l_last_key.

CLEAR wa_final1.
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 GET_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM get_data .

*&---------------------------------------------------------------------*
* QUERY TO select ISTAT FROM TJ02T INTO IT_TJ02T
*&---------------------------------------------------------------------*

SELECT SINGLE
istat
FROM tj02t
INTO v_istat
WHERE
spras = sy-langu AND txt04 = c_teco.

IF sy-subrc <> 0.

MESSAGE e000.

ENDIF.

*&---------------------------------------------------------------------*
* QUERY TO select PSPNR PSPID FROM PROJ INTO IT_PROJ.
*&---------------------------------------------------------------------*

SELECT
pspnr
* PSPID
post1
FROM proj
INTO TABLE it_proj
WHERE
pspnr IN s_pspnr
AND profl IN s_profl.

IF sy-subrc <> 0.

MESSAGE e001.

ENDIF.

*&---------------------------------------------------------------------*
* QUERY TO select PSPNR OBJNR PSPHI FROM PRPS INTO IT_PRPS.
*&---------------------------------------------------------------------*

SELECT
pspnr
objnr
psphi
* PSPID
post1
FROM prps
INTO TABLE it_prps
FOR ALL ENTRIES IN it_proj
WHERE psphi = it_proj-pspnr.

IF sy-subrc <> 0 .

MESSAGE e002.

ENDIF.

*&---------------------------------------------------------------------*
* QUERY TO select AUFNR OBJNR STAT UDAT INACT UTIME FROM AUFK,JCDS INTO IT_AUFK.
*&---------------------------------------------------------------------*

SELECT
a~aufnr
a~objnr
a~pspel
b~stat
b~udate
b~inact
b~utime
b~chgnr
FROM
aufk AS a INNER JOIN jcds AS b
ON a~objnr = b~objnr
INTO TABLE it_aufk
FOR ALL ENTRIES IN it_prps
WHERE a~pspel = it_prps-pspnr AND
b~stat = v_istat AND
b~udate BETWEEN v_fm_dt AND v_to_dt
AND b~inact <> c_x.

IF sy-subrc <> 0 .

MESSAGE e003.

ENDIF.

*&---------------------------------------------------------------------*
* QUERY TO select WTGBTR FROM COEP INTO IT_COEP.
*&---------------------------------------------------------------------*

SELECT
wtgbtr
FROM coep
INTO TABLE it_coep
FOR ALL ENTRIES IN it_prps
WHERE
gjahr = p_gjahr AND objnr = it_prps-objnr.

IF sy-subrc <> 0 .

MESSAGE e004.

ENDIF.

*&---------------------------------------------------------------------*
* QUERY TO select WTGBTR FROM COEP INTO IT_COEP.
*&---------------------------------------------------------------------*

SELECT
wtgbtr
objnr
FROM coep
INTO TABLE it_coep1
FOR ALL ENTRIES IN it_prps
WHERE
gjahr = p_gjahr AND objnr = it_prps-objnr.

IF sy-subrc <> 0 .

MESSAGE e005.

ENDIF.

*&---------------------------------------------------------------------*
* QUERY TO select ZSOLL FROM T056P INTO IT_T056P.
*&---------------------------------------------------------------------*

SELECT
zsoll
FROM t056p
INTO TABLE it_t056p
WHERE referenz = 'ZNWN DEBT' .

IF sy-subrc <> 0 .

MESSAGE e006.

ENDIF.

*&---------------------------------------------------------------------*
* QUERY TO select ZSOLL FROM T056P INTO IT_T056P.
*&---------------------------------------------------------------------*

SELECT
zsoll
FROM t056p
INTO TABLE it_t056p
WHERE referenz = 'ZNWNEQUITY' .

IF sy-subrc <> 0 .

MESSAGE e007.

ENDIF.

break spcandxx.
LOOP AT it_prps INTO wa_prps.

wa_final-pspnr = wa_prps-pspnr.
wa_final-objnr = wa_prps-objnr.
wa_final-psphi = wa_prps-psphi.
wa_final-post11 = wa_prps-post1.

READ TABLE it_proj INTO wa_proj WITH KEY pspnr = wa_prps-pspnr.

IF sy-subrc = 0.

wa_final-post1 = wa_proj-post1.

ELSE.
MESSAGE e003.

ENDIF.

READ TABLE it_aufk INTO wa_aufk WITH KEY pspel = wa_prps-pspnr.

IF sy-subrc = 0.

wa_final-aufnr = wa_aufk-aufnr.
wa_final-udate = wa_aufk-udate.
wa_final-inact = wa_aufk-inact.
wa_final-utime = wa_aufk-utime.
ELSE.
MESSAGE e003.

ENDIF.

READ TABLE it_coep INTO wa_coep WITH KEY objnr = wa_prps-objnr.

IF sy-subrc = 0.

wa_final-wtgbtr = wa_coep-wtgbtr.

ELSE.

MESSAGE e003.

ENDIF.

READ TABLE it_coep1 INTO wa_coep1 WITH KEY objnr = wa_prps-objnr.

IF sy-subrc = 0.

wa_final-wtgbtr1 = wa_coep1-wtgbtr.

ELSE.
MESSAGE e003.

ENDIF.

wa_final-zsoll = wa_t056p-zsoll.

APPEND wa_final TO it_final. "append wa_final into it_final.

LOOP AT it_final INTO wa_final.

v_cal = wa_final-zsoll / 12 .
v_cal1 = wa_final-zsoll1 / 12 .

wa_final-v_var1 = ( wa_final-wtgbtr ( v_cal ) + ( wa_final-wtgbtr1 ) ( v_cal / 2 ) ) .
wa_final-v_var2 = ( wa_final-wtgbtr ( v_cal1 ) + ( wa_final-wtgbtr1 ) ( v_cal1 ) / 2 ) .
wa_final-v_total = ( wa_final-v_var1 + wa_final-v_var2 ).
wa_final-v_e_bal = ( wa_final-wtgbtr wa_final-wtgbtr1 wa_final-v_total ).

MODIFY it_final FROM wa_final INDEX sy-tabix.
ENDLOOP.

ENDLOOP.

ENDFORM. " GET_DATA
*&---------------------------------------------------------------------*
*& 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 ADD_PSPNR_LINE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_WA_FINAL text
* -->P_0958 text
* <--P_L_PSPNR_KEY text
*----------------------------------------------------------------------*
FORM add_complete_line USING wa_final1 TYPE t_final
p_relat_key TYPE lvc_nkey
CHANGING p_node_key TYPE lvc_nkey.

DATA: l_node_text TYPE lvc_value. ",
* wa_final2 LIKE it_final.

* 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-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 = wa_final1-aufnr.

DATA: ls_node TYPE lvc_s_layn.
ls_node-n_image = space.
ls_node-exp_image = space.

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 = wa_final1
is_node_layout = ls_node
it_item_layout = lt_item_layout
IMPORTING
e_new_node_key = p_node_key.

ENDFORM. " add_carrid_line

*&---------------------------------------------------------------------*
*& Form ADD_PSPNR1_LINE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_WA_FINAL text
* -->P_L_PSPNR_KEY text
* <--P_L_PSPNR1_KEY text
*----------------------------------------------------------------------*
FORM add_pspnr1_line USING
wa_final1 TYPE t_final
p_relat_key TYPE lvc_nkey
CHANGING p_node_key TYPE lvc_nkey.

DATA: l_node_text TYPE lvc_value. ",
* wa_final2 type t_final.

* 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 = wa_final1-post11.
DATA: relat TYPE int4.
relat = cl_gui_column_tree=>relat_last_child.
CALL METHOD tree1->add_node
EXPORTING
i_relat_node_key = p_relat_key
i_relationship = relat
i_node_text = l_node_text
is_outtab_line = wa_final1
it_item_layout = lt_item_layout
IMPORTING
e_new_node_key = p_node_key.

ENDFORM. " ADD_PSPNR1_LINE

*&---------------------------------------------------------------------*
*& Form ADD_PSPNR_LINE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_WA_FINAL text
* -->P_0958 text
* <--P_L_PSPNR_KEY text
*----------------------------------------------------------------------*
FORM add_pspnr_line USING wa_final1 TYPE t_final
p_relat_key TYPE lvc_nkey
CHANGING p_node_key TYPE lvc_nkey.

DATA: l_node_text TYPE lvc_value. " ,
* wa_final2 TYPE t_final.

* 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-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 = wa_final1-post1.

DATA: ls_node TYPE lvc_s_layn.
ls_node-n_image = space.
ls_node-exp_image = space.

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 = wa_final1
is_node_layout = ls_node
it_item_layout = lt_item_layout
IMPORTING
e_new_node_key = p_node_key.

ENDFORM. " add_carrid_line

*&---------------------------------------------------------------------*
*& Module USER_COMMAND_9000 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE user_command_9000 INPUT.

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

LEAVE PROGRAM.
WHEN OTHERS.
CALL METHOD cl_gui_cfw=>dispatch.
ENDCASE.
CLEAR ok_code.
CALL METHOD cl_gui_cfw=>flush.

ENDMODULE. " USER_COMMAND_9000 INPUT



SELECTION SCREEN
OUTPUT



0 comments: