Application Development Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 

ALV tree code help-urgent

Former Member
0 Kudos

Hi all,

can any one help me to include the following code in the program BCALV_TREE_SIMPLE_DEMO???

REPORT Z_MANFIELD.

DATA: d_screen TYPE REF TO cl_dynpro_info.

  • for field list of screen

DATA: ftab TYPE TABLE OF d021s,

wa_ftab TYPE d021s,

pltab TYPE TABLE OF d022s.

  • name of modulpool

DATA: mpool TYPE repid,

mpool2 type repid.

  • for screen attributes of field

DATA: es_screen TYPE screen.

DATA: back TYPE t588m-varky.

DATA: status.

DATA: pos TYPE i.

DATA: p_infty TYPE infty.

DATA: dynnr type dynnr value '2000'.

FIELD-SYMBOLS: <scf>.

TABLES: t588m, pme04,t588d.

constants: calc_molga type molga value '07'.

  • for collection of mandatory fields

DATA: BEGIN OF mf_tab OCCURS 0,

fnam TYPE d021s-fnam,

  • added for distinction of default and T588M

group TYPE char4,

END OF mf_tab.

DATA : BEGIN OF wa,

infty TYPE infty,

END OF wa.

DATA itab LIKE wa OCCURS 0 WITH HEADER LINE.

SELECTION-SCREEN BEGIN OF LINE.

SELECTION-SCREEN COMMENT 1(12) text-001.

PARAMETER action TYPE t588d-itygr.

SELECTION-SCREEN END OF LINE.

  • for field attributes

START-OF-SELECTION.

SELECT infty INTO CORRESPONDING FIELDS OF TABLE itab FROM t588d WHERE itygr = action.

IF sy-subrc EQ 0.

WRITE : / 'INFOTYPES FOR THIS ACTION TYPE ARE : '.

SORT itab BY infty.

DELETE ADJACENT DUPLICATES FROM itab COMPARING infty.

LOOP AT itab.

WRITE : / itab-infty HOTSPOT COLOR 6 INVERSE ON.

ENDLOOP.

WRITE /.

WRITE : / ' CLICK AN INFOTYPE FOR GETTING ITS MANDATORY FIELDS'.

ELSE.

WRITE : / 'SORRY,NO INFOTYPE FOR THIS ACTION TYPE'.

ENDIF.

AT LINE-SELECTION.

MOVE sy-lisel(6) TO p_infty.

WRITE: / 'INFOTYPE - '.

WRITE : p_infty.

WRITE : /'MANDATORY FIELDS ARE :'.

WRITE : / .

  • build modulpool-name

CREATE OBJECT d_screen.

CONCATENATE 'MP' p_infty '00' INTO mpool2.

CONCATENATE mpool2 '_CE' into mpool.

  • maybe, you have to determin the screen-no first

  • perform determin_scrno CHANGING dynnr.

SELECT SINGLE * FROM t588m WHERE repna = mpool

AND dynnr = dynnr

AND varky = calc_molga.

IF sy-subrc NE 0. "not found -> switch to default MOLGA

SELECT SINGLE * FROM t588m WHERE repna LIKE mpool

AND dynnr = dynnr

AND varky = space.

IF sy-subrc NE 0. "still not there -> fall back to dflt modulpool with MOLGA

mpool = mpool2.

SELECT SINGLE * FROM t588m WHERE repna = mpool

AND dynnr = dynnr

AND varky = calc_molga.

IF sy-subrc ne 0. "Last try -> dflt modulpool + empty MOLGA

SELECT SINGLE * FROM t588m WHERE repna LIKE mpool

AND dynnr = dynnr

AND varky = space.

IF sy-subrc ne 0. "obviously, there isn't ana entry at all

clear t588m.

ENDIF.

ENDIF.

ENDIF.

ENDIF.

  • only to ensure that these fields are filled

IF t588m IS INITIAL.

t588m-repna = mpool.

t588m-dynnr = dynnr.

ENDIF.

  • get fieldlist for screen

CALL FUNCTION 'RS_IMPORT_DYNPRO'

EXPORTING

dylang = sy-langu

dyname = t588m-repna

dynumb = t588m-dynnr

request = ' '

suppress_checks = ' '

  • IMPORTING

  • HEADER =

TABLES

ftab = ftab

pltab = pltab

EXCEPTIONS

button_error = 1

dylanguage_invalid = 2

dylanguage_not_inst = 3

dyname_invalid = 4

dynproload_not_found = 5

dynpro_old = 6

dynumb_invalid = 7

ftab_invalid = 8

gen_error = 9

gen_ok = 10

header_invalid = 11

internal_error = 12

no_dynpro = 13

no_ftab_row = 14

no_memory = 15

no_processlogic = 16

pltab_invalid = 17

request_invalid = 18

OTHERS = 19

.

IF sy-subrc EQ 0.

  • error handling

ENDIF.

  • get rid of comments, frames and the like

DELETE ftab WHERE aglt IS INITIAL.

LOOP AT ftab INTO wa_ftab.

  • Screen-Grp3 is the key to T588M-DBILD

IF wa_ftab-grp3 NE space.

pos = wa_ftab-grp3 - 1.

ASSIGN t588m-dbild+pos(1) TO <scf>.

  • mandatory fields are marked '+'

IF <scf> EQ '+'.

MOVE wa_ftab-fnam TO mf_tab-fnam.

MOVE wa_ftab-grp3 TO mf_tab-group.

APPEND mf_tab.

CONTINUE.

ENDIF.

ENDIF.

  • maybe the field is mandatory by default

CALL METHOD d_screen->get_screen_field_attr

EXPORTING

iv_repid = t588m-repna

iv_dynnr = t588m-dynnr

iv_field = wa_ftab-fnam

IMPORTING

es_screen = es_screen

EXCEPTIONS

exc_insufficient_parameters = 1

exc_no_attributes = 2

OTHERS = 3.

IF sy-subrc EQ 0.

  • error handling

ENDIF.

IF es_screen-required NE space.

MOVE wa_ftab-fnam TO mf_tab-fnam.

MOVE 'Dflt' TO mf_tab-group.

APPEND mf_tab.

ENDIF.

ENDLOOP.

  • simple output

LOOP AT mf_tab.

WRITE: / mf_tab-fnam,

mf_tab-group.

ENDLOOP.

CLEAR: mf_tab, mf_tab[].

END-OF-SELECTION.

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

i want the output in the format(in the order)

action(t588m-itygr),infotype(itab-infty),field name(mf_tab-fnam),group(mf_tab-group)

1 ACCEPTED SOLUTION

Former Member
0 Kudos

Hi,

Check the sample program SAPSIMPLE_TREE_CONTROL_DEMO .

Regards,

Renjith Michael.

2 REPLIES 2

Former Member
0 Kudos

&----


*& Report ZDEMO_ALVTREE *

*& *

&----


*& *

*& Example of a simple ALV Grid Report *

*& ................................... *

*& *

*& The basic requirement for this demo is to display a number of *

*& fields from the EKPO and EKKO table in a tree structure. *

*& *

&----


Amendment History *

-


REPORT zdemo_alvgrid .

*Data Declaration

*----


TABLES: ekko.

TYPE-POOLS: slis. "ALV Declarations

TYPES: BEGIN OF t_ekko,

ebeln TYPE ekpo-ebeln,

ebelp TYPE ekpo-ebelp,

statu TYPE ekpo-statu,

aedat TYPE ekpo-aedat,

matnr TYPE ekpo-matnr,

menge TYPE ekpo-menge,

meins TYPE ekpo-meins,

netpr TYPE ekpo-netpr,

peinh TYPE ekpo-peinh,

END OF t_ekko.

DATA: it_ekko TYPE STANDARD TABLE OF t_ekko INITIAL SIZE 0,

it_ekpo TYPE STANDARD TABLE OF t_ekko INITIAL SIZE 0,

it_emptytab TYPE STANDARD TABLE OF t_ekko INITIAL SIZE 0,

wa_ekko TYPE t_ekko,

wa_ekpo TYPE t_ekko.

DATA: ok_code like sy-ucomm, "OK-Code

save_ok like sy-ucomm.

*ALV data declarations

DATA: fieldcatalog TYPE lvc_t_fcat WITH HEADER LINE.

DATA: gd_fieldcat TYPE lvc_t_fcat,

gd_tab_group TYPE slis_t_sp_group_alv,

gd_layout TYPE slis_layout_alv.

*ALVtree data declarations

CLASS cl_gui_column_tree DEFINITION LOAD.

CLASS cl_gui_cfw DEFINITION LOAD.

DATA: gd_tree TYPE REF TO cl_gui_alv_tree,

gd_hierarchy_header TYPE treev_hhdr,

gd_report_title TYPE slis_t_listheader,

gd_logo TYPE sdydo_value,

gd_variant TYPE disvariant.

*Create container for alv-tree

DATA: l_tree_container_name(30) TYPE c,

l_custom_container TYPE REF TO cl_gui_custom_container.

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

*Includes

*INCLUDE ZDEMO_ALVTREEO01. "Screen PBO Modules

*INCLUDE ZDEMO_ALVTREEI01. "Screen PAI Modules

*INCLUDE ZDEMO_ALVTREEF01. "ABAP Subroutines(FORMS)

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

*Start-of-selection.

START-OF-SELECTION.

ALVtree setup data

PERFORM data_retrieval.

PERFORM build_fieldcatalog.

PERFORM build_layout.

PERFORM build_hierarchy_header CHANGING gd_hierarchy_header.

PERFORM build_report_title USING gd_report_title gd_logo.

PERFORM build_variant.

Display ALVtree report

call screen 100.

&----


*& Form DATA_RETRIEVAL

&----


Retrieve data into Internal tables

-


FORM data_retrieval.

SELECT ebeln

UP TO 10 ROWS

FROM ekko

INTO corresponding fields of TABLE it_ekko.

loop at it_ekko into wa_ekko.

SELECT ebeln ebelp statu aedat matnr menge meins netpr peinh

FROM ekpo

appending TABLE it_ekpo

where ebeln eq wa_ekko-ebeln.

endloop.

ENDFORM. " DATA_RETRIEVAL

&----


*& Form BUILD_FIELDCATALOG

&----


Build Fieldcatalog for ALV Report

-


FORM build_fieldcatalog.

Please not there are a number of differences between the structure of

ALVtree fieldcatalogs and ALVgrid fieldcatalogs.

For example the field seltext_m is replace by scrtext_m in ALVtree.

fieldcatalog-fieldname = 'EBELN'. "Field name in itab

fieldcatalog-scrtext_m = 'Purchase Order'. "Column text

fieldcatalog-col_pos = 0. "Column position

fieldcatalog-outputlen = 15. "Column width

fieldcatalog-emphasize = 'X'. "Emphasize (X or SPACE)

fieldcatalog-key = 'X'. "Key Field? (X or SPACE)

fieldcatalog-do_sum = 'X'. "Sum Column?

fieldcatalog-no_zero = 'X'. "Don't display if zero

APPEND fieldcatalog TO gd_fieldcat.

CLEAR fieldcatalog.

fieldcatalog-fieldname = 'EBELP'.

fieldcatalog-scrtext_m = 'PO Iten'.

fieldcatalog-outputlen = 15.

fieldcatalog-col_pos = 1.

APPEND fieldcatalog TO gd_fieldcat..

CLEAR fieldcatalog.

fieldcatalog-fieldname = 'STATU'.

fieldcatalog-scrtext_m = 'Status'.

fieldcatalog-outputlen = 15.

fieldcatalog-col_pos = 2.

APPEND fieldcatalog TO gd_fieldcat..

CLEAR fieldcatalog.

fieldcatalog-fieldname = 'AEDAT'.

fieldcatalog-scrtext_m = 'Item change date'.

fieldcatalog-outputlen = 15.

fieldcatalog-col_pos = 3.

APPEND fieldcatalog TO gd_fieldcat..

CLEAR fieldcatalog.

fieldcatalog-fieldname = 'MATNR'.

fieldcatalog-scrtext_m = 'Material Number'.

fieldcatalog-outputlen = 15.

fieldcatalog-col_pos = 4.

APPEND fieldcatalog TO gd_fieldcat..

CLEAR fieldcatalog.

fieldcatalog-fieldname = 'MENGE'.

fieldcatalog-scrtext_m = 'PO quantity'.

fieldcatalog-outputlen = 15.

fieldcatalog-col_pos = 5.

APPEND fieldcatalog TO gd_fieldcat..

CLEAR fieldcatalog.

fieldcatalog-fieldname = 'MEINS'.

fieldcatalog-scrtext_m = 'Order Unit'.

fieldcatalog-outputlen = 15.

fieldcatalog-col_pos = 6.

APPEND fieldcatalog TO gd_fieldcat..

CLEAR fieldcatalog.

fieldcatalog-fieldname = 'NETPR'.

fieldcatalog-scrtext_m = 'Net Price'.

fieldcatalog-outputlen = 15.

fieldcatalog-col_pos = 7.

fieldcatalog-datatype = 'CURR'.

APPEND fieldcatalog TO gd_fieldcat..

CLEAR fieldcatalog.

fieldcatalog-fieldname = 'PEINH'.

fieldcatalog-scrtext_m = 'Price Unit'.

fieldcatalog-outputlen = 15.

fieldcatalog-col_pos = 8.

APPEND fieldcatalog TO gd_fieldcat..

CLEAR fieldcatalog.

ENDFORM. " BUILD_FIELDCATALOG

&----


*& Form BUILD_LAYOUT

&----


Build layout for ALV grid report

-


FORM build_layout.

gd_layout-no_input = 'X'.

gd_layout-colwidth_optimize = 'X'.

gd_layout-totals_text = 'Totals'(201).

gd_layout-totals_only = 'X'.

gd_layout-f2code = 'DISP'. "Sets fcode for when double

"click(press f2)

gd_layout-zebra = 'X'.

gd_layout-group_change_edit = 'X'.

gd_layout-header_text = 'helllllo'.

ENDFORM. " BUILD_LAYOUT

&----


*& Form build_hierarchy_header

&----


build hierarchy-header-information

-


-->P_L_HIERARCHY_HEADER structure for hierarchy-header

-


FORM build_hierarchy_header CHANGING

p_hierarchy_header TYPE treev_hhdr.

p_hierarchy_header-heading = 'Hierarchy Header'(013).

p_hierarchy_header-tooltip = 'This is the Hierarchy Header !'(014).

p_hierarchy_header-width = 30.

p_hierarchy_header-width_pix = ''.

ENDFORM. " build_hierarchy_header

&----


*& Form BUILD_REPORT_TITLE

&----


Build table for ALVtree header

-


<-> p1 Header details

<-> p2 Logo value

-


FORM build_report_title CHANGING

pt_report_title TYPE slis_t_listheader

pa_logo TYPE sdydo_value.

DATA: ls_line TYPE slis_listheader,

ld_date(10) TYPE c.

List Heading Line(TYPE H)

CLEAR ls_line.

ls_line-typ = 'H'.

ls_line-key "Not Used For This Type(H)

ls_line-info = 'PO ALVTree Display'.

APPEND ls_line TO pt_report_title.

Status Line(TYPE S)

ld_date(2) = sy-datum+6(2).

ld_date+2(1) = '/'.

ld_date3(2) = sy-datum4(2).

ld_date+5(1) = '/'.

ld_date+6(4) = sy-datum(4).

ls_line-typ = 'S'.

ls_line-key = 'Date'.

ls_line-info = ld_date.

APPEND ls_line TO pt_report_title.

Action Line(TYPE A)

CLEAR ls_line.

ls_line-typ = 'A'.

CONCATENATE 'Report: ' sy-repid INTO ls_line-info SEPARATED BY space.

APPEND ls_line TO pt_report_title.

ENDFORM.

&----


*& Form BUILD_VARIANT

&----


Build variant

-


form build_variant.

Set repid for storing variants

gd_variant-report = sy-repid.

endform. " BUILD_VARIANT

Regards.

Former Member
0 Kudos

Hi,

Check the sample program SAPSIMPLE_TREE_CONTROL_DEMO .

Regards,

Renjith Michael.