2006 Jun 28 1:12 PM
Please tell me the process which steps i have to follow to create ALV Hieracrchical report.If possible send me example also.
Please tell me the process which steps i have to follow to create ALV Hieracrchical report.If possible send me example also.
2006 Jun 28 1:15 PM
2006 Jun 28 1:17 PM
Hi,
Check this code..
report ZTEST_HIER line-count 65
line-size 200
no standard page heading
message-id zz.
type-pools: slis.
types: begin of ty_head,
vbeln like vbak-vbeln,
kunnr like vbak-kunnr,
name like kna1-name1,
end of ty_head.
types: begin of ty_item,
vbeln like vbap-vbeln,
posnr like vbap-posnr,
matnr like vbap-matnr,
maktx like makt-maktx,
check(1),
end of ty_item.
data: it_item type table of ty_item.
data: it_header type table of ty_head,
it_events type slis_t_event, "Events.
it_fieldcat type slis_t_fieldcat_alv.
data: x_layout type slis_layout_alv,
x_fieldcat type slis_fieldcat_alv,
x_key type slis_keyinfo_alv,
x_events type slis_alv_event, "Event
x_vbeln like vbak-vbeln,
x_item type ty_item.
constants: c_s(1) value '/'.
data: v_flag.
*---------------------------------------------------------------------*
* SELECTION-SCREEN *
*---------------------------------------------------------------------*
selection-screen begin of block blk with frame title text-001.
parameters: p_vbeln like vbak-vbeln. "Sales order Number
selection-screen end of block blk.
at selection-screen.
if not p_vbeln is initial.
select single vbeln
into x_vbeln
from vbak
where vbeln = p_vbeln.
if sy-subrc <> 0.
message e002 with 'Please enter valid Sales Order'(020).
endif.
endif.
*----------------------------------------------------------------------*
* CLASS lcl_bill_complete DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
class lcl_bill_complete definition.
public section.
methods:get_header_data,
get_item_data,
show_data,
fill_fieldcat,
fill_events,
top_of_page.
endclass. "lcl_bill_complete DEFINITION
*----------------------------------------------------------------------*
* CLASS lcl_bill_complete IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
class lcl_bill_complete implementation.
method get_header_data.
select vbak~vbeln
vbak~kunnr
kna1~name1
into table it_header
from vbak join kna1
on vbak~kunnr = kna1~kunnr
where vbak~vbeln = p_vbeln.
endmethod. "get_header_data
method get_item_data.
select vbap~vbeln
vbap~posnr
vbap~matnr
makt~maktx
into corresponding fields of table it_item
from vbap join makt
on vbap~matnr = makt~matnr
where vbap~vbeln = p_vbeln
and makt~spras = 'EN'.
endmethod. "get_item_data
method show_data.
x_key-header01 = 'VBELN'.
* x_key-header02 = 'TKNUM'.
x_key-item01 = 'VBELN'.
x_key-item02 = 'POSNR'.
call function 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
exporting
i_callback_program = sy-repid
is_layout = x_layout
it_fieldcat = it_fieldcat[]
i_tabname_header = 'IT_HEADER'
i_tabname_item = 'IT_ITEM'
i_callback_pf_status_set = 'STATUS'
i_callback_user_command = 'USER_COMMAND'
is_keyinfo = x_key
it_events = it_events
tables
t_outtab_header = it_header
t_outtab_item = it_item
exceptions
program_error = 1
others = 2.
endmethod. "show_data
method fill_fieldcat.
data: l_pos type i.
x_layout-header_text = 'HEADER'.
x_layout-item_text = 'ITEM'.
x_layout-default_item = ' '.
x_layout-no_keyfix = 'X'.
x_layout-box_tabname = 'IT_ITEM'.
l_pos = l_pos + 1.
*- Sales Order Number
x_fieldcat-fieldname = 'VBELN'.
x_fieldcat-tabname = 'IT_HEADER'.
x_fieldcat-seltext_m = 'Sales Order'(017).
x_fieldcat-outputlen = 11.
x_fieldcat-col_pos = l_pos.
append x_fieldcat to it_fieldcat.
clear x_fieldcat.
l_pos = l_pos + 1.
x_fieldcat-fieldname = 'KUNNR'.
x_fieldcat-tabname = 'IT_HEADER'.
x_fieldcat-seltext_m = 'Sold-to Party'(010).
x_fieldcat-outputlen = 13.
x_fieldcat-col_pos = l_pos.
append x_fieldcat to it_fieldcat.
clear x_fieldcat.
l_pos = l_pos + 1.
x_fieldcat-fieldname = 'NAME'.
x_fieldcat-tabname = 'IT_HEADER'.
x_fieldcat-outputlen = 15.
x_fieldcat-seltext_m = 'Sold-to name'(011).
x_fieldcat-col_pos = l_pos.
append x_fieldcat to it_fieldcat.
clear x_fieldcat.
l_pos = l_pos + 1.
x_fieldcat-fieldname = 'CHECK'.
x_fieldcat-tabname = 'IT_ITEM'.
x_fieldcat-checkbox = 'X'.
x_fieldcat-input = 'X'.
x_fieldcat-edit = 'X'.
x_fieldcat-seltext_m = ' '.
x_fieldcat-outputlen = 2.
x_fieldcat-col_pos = l_pos.
append x_fieldcat to it_fieldcat.
clear x_fieldcat.
l_pos = l_pos + 1.
x_fieldcat-fieldname = 'VBELN'.
x_fieldcat-tabname = 'IT_ITEM'.
x_fieldcat-seltext_m = 'Sales Order'(017).
x_fieldcat-outputlen = 11.
x_fieldcat-tech = 'X'.
x_fieldcat-col_pos = l_pos.
append x_fieldcat to it_fieldcat.
clear x_fieldcat.
l_pos = l_pos + 1.
*- Sales Order Item
x_fieldcat-fieldname = 'POSNR'.
x_fieldcat-tabname = 'IT_ITEM'.
x_fieldcat-seltext_m = 'SO Item'(018).
x_fieldcat-outputlen = 7.
x_fieldcat-col_pos = l_pos.
append x_fieldcat to it_fieldcat.
clear x_fieldcat.
l_pos = l_pos + 1.
x_fieldcat-fieldname = 'MATNR'.
x_fieldcat-tabname = 'IT_ITEM'.
x_fieldcat-outputlen = 18.
x_fieldcat-seltext_m = 'Material number'(012).
x_fieldcat-col_pos = l_pos.
append x_fieldcat to it_fieldcat.
clear x_fieldcat.
l_pos = l_pos + 1.
x_fieldcat-fieldname = 'MAKTX'.
x_fieldcat-tabname = 'IT_ITEM'.
x_fieldcat-outputlen = 40.
x_fieldcat-seltext_m = 'Material Description'(013).
x_fieldcat-col_pos = l_pos.
append x_fieldcat to it_fieldcat.
clear x_fieldcat.
endmethod. "fill_fieldcat
*--Fill the events table
method fill_events.
*- Top of page
x_events-name = 'TOP_OF_PAGE'.
x_events-form = 'TOP_OF_PAGE'.
append x_events to it_events.
endmethod. "fill_events
"fill_events
method top_of_page.
*- Call Steelcase Standard Header
write 'top_of_page here'.
endmethod. "top_of_page
endclass. "lcl_bill_complete IMPLEMENTATION
start-of-selection.
data: obj type ref to lcl_bill_complete.
create object obj.
call method obj->get_header_data.
call method obj->get_item_data.
call method obj->fill_fieldcat.
call method obj->fill_events.
call method obj->show_data.
*&---------------------------------------------------------------------*
*& Form top_of_page
*&---------------------------------------------------------------------*
* TOP_OF_PAGE
*----------------------------------------------------------------------*
form top_of_page.
*-To show the top of page
call method obj->top_of_page.
endform. "top_of_pageRegards
vijay
2006 Jun 28 1:20 PM
Hi,
The data in hierarchical-sequential lists is displayed by calling function module
REUSE_ALV_HIERSEQ_LIST_DISPLAY.
Two (only) hierarchy levels - header and item - can be represented.
Minimum parameters to be transferred to the function:
An internal table with the header information to output
An internal table with the item information to output
A structure with general layout information for list design (optional)
A field catalogue in the form of an internal table.
A structure with links between the fields in the header and item tables.
CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
EXPORTING
I_TABNAME_HEADER = 'GT_OUTTAB_HEADER'
I_TABNAME_ITEM = 'GT_OUTTAB_ITEM'
I_STRUCTURE_NAME_HEADER = 'SCARR'
I_STRUCTURE_NAME_ITEM = 'SPFLI'
IT_FIELDCAT = GT_FIELDCAT
IS_KEYINFO = GS_KEYINFO
TABLES
T_OUTTAB_HEADER = GT_OUTTAB_HEADER
T_OUTTAB_ITEM = GT_OUTTAB_ITEM.
<b>Linking Header and Item Fields</b>
is_keyinfo forms the link between the header table and the item table.
This structure contains the corresponding field names of the common keys between the header and item tables.
The foreign keys are recorded in fields is_keyinfo-headerxx and is_keyinfo-itemxx (where xx can be 01 to 05).
Thus the key between the header and the detail can be specified with upto 5 fields.
<b>Example</b>
TYPE-POOLS : slis.
DATA: i_VBRK TYPE STANDARD TABLE OF YVBRK_LIST
INITIAL SIZE 0 WITH HEADER LINE.
DATA: i_VBRP TYPE STANDARD TABLE OF YVBRP_LIST
INITIAL SIZE 0 WITH HEADER LINE.
DATA: KEY_INFO TYPE SLIS_KEYINFO_ALV,
REPORT_ID LIKE SY-REPID,
TABLE_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE,
GT_EVENTS TYPE SLIS_T_EVENT,
GT_SORT TYPE SLIS_T_SORTINFO_ALV WITH HEADER LINE,
GS_LAYOUT TYPE SLIS_LAYOUT_ALV,
GT_LIST_TOP_OF_PAGE TYPE SLIS_T_LISTHEADER,
G_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE 'TOP_OF_PAGE',
G_TOP_OF_LIST TYPE SLIS_FORMNAME VALUE 'TOP_OF_LIST'.
INITIALIZATION.
REPORT_ID = SY-REPID.
KEY_INFO-HEADER01 = 'VBELN'.
KEY_INFO-ITEM01 = 'VBELN'.
KEY_INFO-HEADER02 = SPACE.
KEY_INFO-ITEM02 = 'NETWR'.
GS_LAYOUT-GROUP_CHANGE_EDIT = 'X'.
GT_SORT-FIELDNAME = 'VBELN'.
GT_SORT-TABNAME = '1'.
GT_SORT-SPOS = 1.
GT_SORT-UP = 'X'.
GT_SORT-SUBTOT = 'X'.
GT_SORT-GROUP = '*'.
APPEND GT_SORT.
GT_SORT-FIELDNAME = 'POSNR'.
GT_SORT-TABNAME = '2'.
GT_SORT-SPOS = 2.
GT_SORT-UP = 'X'.
GT_SORT-SUBTOT = 'X'.
GT_SORT-GROUP = ''.
APPEND GT_SORT.
TABLE_FIELDCAT-FIELDNAME = 'VBELN'.
TABLE_FIELDCAT-TABNAME = '1'.
TABLE_FIELDCAT-COL_POS = '1'.
TABLE_FIELDCAT-OUTPUTLEN = 17.
TABLE_FIELDCAT-DO_SUM = ' '.
APPEND TABLE_FIELDCAT.
TABLE_FIELDCAT-FIELDNAME = 'POSNR'.
TABLE_FIELDCAT-TABNAME = '2'.
TABLE_FIELDCAT-COL_POS = '1'.
TABLE_FIELDCAT-OUTPUTLEN = 14.
TABLE_FIELDCAT-DO_SUM = ' '.
APPEND TABLE_FIELDCAT.
TABLE_FIELDCAT-FIELDNAME = 'NETWR'.
TABLE_FIELDCAT-TABNAME = '2'.
TABLE_FIELDCAT-COL_POS = '2'.
TABLE_FIELDCAT-OUTPUTLEN = 15.
TABLE_FIELDCAT-DO_SUM = 'X'.
APPEND TABLE_FIELDCAT.
PERFORM EVENTTAB_BUILD USING GT_EVENTS[].
START-OF-SELECTION.
Select VBELN
FKART
BELNR
into CORRESPONDING FIELDS OF table i_vbrk
from vbrk
where vbeln > '0090000121' and vbeln < '0090000135'.
Select VBELN
POSNR
NETWR
into CORRESPONDING FIELDS OF table i_vbrp
from vbrp
for all entries in i_vbrk
where vbeln = i_vbrk-vbeln.
PERFORM write_report.
FORM EVENTTAB_BUILD USING RT_EVENTS TYPE SLIS_T_EVENT.
*"Registration of events to happen during list display
DATA: LS_EVENT TYPE SLIS_ALV_EVENT.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
I_LIST_TYPE = 0
IMPORTING
ET_EVENTS = RT_EVENTS.
READ TABLE RT_EVENTS WITH KEY NAME = SLIS_EV_TOP_OF_PAGE
INTO LS_EVENT.
IF SY-SUBRC = 0.
MOVE G_TOP_OF_PAGE TO LS_EVENT-FORM.
APPEND LS_EVENT TO RT_EVENTS.
ENDIF.
ENDFORM.
FORM TOP_OF_PAGE.
DATA: LS_LINE TYPE SLIS_LISTHEADER.
* Header Data
REFRESH GT_LIST_TOP_OF_PAGE.
CLEAR LS_LINE.
LS_LINE-TYP = 'H'.
LS_LINE-INFO = 'Hierarchical Lists'.
APPEND LS_LINE TO GT_LIST_TOP_OF_PAGE.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
IT_LIST_COMMENTARY = GT_LIST_TOP_OF_PAGE.
ENDFORM.
Form write_report.
CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = REPORT_ID
IS_LAYOUT = GS_LAYOUT
IT_FIELDCAT = TABLE_FIELDCAT[]
IT_SORT = GT_SORT[]
IT_EVENTS = GT_EVENTS[]
I_TABNAME_HEADER = '1'
I_TABNAME_ITEM = '2'
I_STRUCTURE_NAME_HEADER = 'YVBRK_LIST'
I_STRUCTURE_NAME_ITEM = 'YVBRP_LIST'
IS_KEYINFO = KEY_INFO
TABLES
T_OUTTAB_HEADER = I_VBRK
T_OUTTAB_ITEM = I_VBRP.
ENDFORM.
<b>Reward Points and Mark helpful Answers</b>
2006 Jun 28 1:21 PM
Hi praveen kumar ,
here is a sample hierarchial Tree Programming .
REPORT ZVVMUR12 .
TABLES: KNVH.
TYPES: BEGIN OF WORKTYPE,
LEVEL(2),
HKUNNR LIKE KNVH-KUNNR,
KUNNR LIKE KNVH-HKUNNR,
END OF WORKTYPE.
DATA: IT_KNVH TYPE TABLE OF WORKTYPE,
WA_KNVH LIKE LINE OF IT_KNVH,
IT_TEMP TYPE TABLE OF WORKTYPE,
WA_TEMP LIKE LINE OF IT_TEMP,
IT_WORK TYPE TABLE OF WORKTYPE,
WA_WORK LIKE LINE OF IT_WORK.
DATA : BEGIN OF IT_NODES OCCURS 0.
INCLUDE STRUCTURE SNODETEXT.
DATA : END OF IT_NODES.
CONSTANTS: NUMBER_OF_LEVELS TYPE I VALUE 6.
PARAMETER: P_HKUNNR LIKE KNVH-HKUNNR.
START-OF-SELECTION.
Parent = 1. hierarchy node
WA_TEMP-KUNNR = P_HKUNNR.
APPEND WA_TEMP TO IT_TEMP.
WA_WORK-KUNNR = WA_TEMP-KUNNR.
WA_WORK-LEVEL = 1.
APPEND WA_WORK TO IT_WORK.
Reading customer hierarchy (max. 6 level)
DO NUMBER_OF_LEVELS TIMES.
CHECK NOT IT_TEMP IS INITIAL.
SELECT KUNNR HKUNNR
FROM KNVH
INTO CORRESPONDING FIELDS OF TABLE IT_KNVH
FOR ALL ENTRIES IN IT_TEMP
WHERE HKUNNR = IT_TEMP-KUNNR.
LOOP AT IT_KNVH INTO WA_KNVH.
WA_KNVH-LEVEL = SY-INDEX + 1.
APPEND WA_KNVH TO IT_WORK.
ENDLOOP.
IT_TEMP[] = IT_KNVH[].
ENDDO.
Hierarchy nodes -> tree control
LOOP AT IT_WORK INTO WA_WORK WHERE LEVEL = 1.
PERFORM MAKE_NODE.
LOOP AT IT_WORK INTO WA_WORK WHERE LEVEL = 2 AND
HKUNNR = WA_WORK-KUNNR.
PERFORM MAKE_NODE.
LOOP AT IT_WORK INTO WA_WORK WHERE LEVEL = 3 AND
HKUNNR = WA_WORK-KUNNR.
PERFORM MAKE_NODE.
LOOP AT IT_WORK INTO WA_WORK WHERE LEVEL = 4 AND
HKUNNR = WA_WORK-KUNNR.
PERFORM MAKE_NODE.
LOOP AT IT_WORK INTO WA_WORK WHERE LEVEL = 5 AND
HKUNNR = WA_WORK-KUNNR.
PERFORM MAKE_NODE.
LOOP AT IT_WORK INTO WA_WORK WHERE LEVEL = 6 AND
HKUNNR = WA_WORK-KUNNR.
PERFORM MAKE_NODE.
ENDLOOP.
ENDLOOP.
ENDLOOP.
ENDLOOP.
ENDLOOP.
ENDLOOP.
Making the tree control
CALL FUNCTION 'RS_TREE_CONSTRUCT'
TABLES
NODETAB = IT_NODES
EXCEPTIONS
TREE_FAILURE = 1.
Display the tree control
DATA : F15 TYPE C.
CALL FUNCTION 'RS_TREE_LIST_DISPLAY'
EXPORTING
CALLBACK_PROGRAM = SY-REPID
IMPORTING
F15 = F15 .
FORM MAKE_NODE.
IT_NODES-NAME = WA_WORK-KUNNR.
IT_NODES-COLOR = 1.
IT_NODES-INTENSIV = 1.
IT_NODES-TEXT = WA_WORK-KUNNR.
IT_NODES-TLENGTH = 16.
IT_NODES-TLEVEL = WA_WORK-LEVEL.
IT_NODES-TCOLOR = 1.
IT_NODES-TINTENSIV = 1.
APPEND IT_NODES.
ENDFORM.
Regards,
kiran B
2006 Jun 28 1:27 PM
See this report,
Rgds,
TM
REPORT z_alv NO STANDARD PAGE HEADING LINE-SIZE 220
MESSAGE-ID zsree.
TYPE-POOLS: slis. " SAP standard type pools
TYPES: BEGIN OF t_tab,
vbeln TYPE vbak-vbeln, " Sales and distribution document number
erdat TYPE vbak-erdat, " Date on which the record was created
kunnr TYPE vbak-kunnr, " Sold-to party 1
vdatu TYPE vbak-vdatu, " Requested delivery date
END OF t_tab.
TYPES: BEGIN OF t_tab1,
vbeln TYPE vbap-vbeln, " Sales and distribution
" document number
posnr TYPE vbap-posnr, " Sales document item
matnr TYPE vbap-matnr, " Material number
arktx TYPE vbap-arktx, " Short text for sales order item
kwmeng TYPE vbap-kwmeng, " Cumulative order quantity
" in sales units
END OF t_tab1.
TYPES: BEGIN OF t_tab2,
bstkd TYPE vbkd-bstkd, " Customer purchase order number
vbeln TYPE vbkd-vbeln, " Sales and distribution document number
END OF t_tab2.
TYPES: BEGIN OF t_tab3,
vbeln TYPE vbep-vbeln, " Sales and distribution document number
posnr TYPE vbep-posnr, " Sales document item
etenr TYPE vbep-etenr, " Schedule line
bddat TYPE vbep-bddat, " Requirement date
" (deadline for procurement)
bmeng TYPE vbep-bmeng, " Confirmed quantity
vrkme TYPE vbep-vrkme, " Sales unit
END OF t_tab3.
TYPES: BEGIN OF t_tab4,
kunnr TYPE kna1-kunnr, " Customer number
name1 TYPE kna1-name1, " Name
END OF t_tab4.
TYPES: BEGIN OF t_tab5,
vbeln TYPE vbuk-vbeln, " Sales and distribution document number
lfgsk TYPE vbuk-lfgsk, " Overall delivery status for all items
END OF t_tab5.
TYPES: BEGIN OF t_tab6,
vbeln TYPE vbup-vbeln, " Sales and distribution document number
posnr TYPE vbup-posnr, " Item number of the SD document
END OF t_tab6.
TYPES: BEGIN OF t_tab8,
vbeln TYPE vbak-vbeln, " Sales and distribution document number
END OF t_tab8.
***********************************************************************
* G L O B A L V A R I A B L E S
***********************************************************************
DATA: v_repid TYPE sy-repid, " Program name
*--- To store the internal table name
v_tabname TYPE slis_tabname,
*--- Internal table to get PO catalog details
it_fieldcat1 TYPE slis_t_fieldcat_alv,
*--- Internal table to get SO catalog details
it_fieldcat2 TYPE slis_t_fieldcat_alv,
*--- Internal table to get SE catalog details
it_fieldcat3 TYPE slis_t_fieldcat_alv,
*--- Work area to change field catalog.
wa_fieldcat1 TYPE slis_fieldcat_alv,
*--- Internal table to get Events
it_events TYPE slis_t_event,
*--- Internal table to get Events
it_events1 TYPE slis_t_event,
*--- Internal table to get Events
it_events2 TYPE slis_t_event,
*--- Work area for Events
wa_events TYPE slis_alv_event,
*--- Work area for Layout
wa_layout TYPE slis_layout_alv,
*--- Internal table for Keyinfo
it_keyinfo TYPE slis_keyinfo_alv,
*--- To store the selected field value
v_selfield_value TYPE slis_selfield-value,
*--- To store the variant types
i_variant LIKE disvariant,
*--- To store the hierarchical layout types
i_variant1 LIKE disvariant,
*--- To get the total lines of table IT_VBEP1
v_linc TYPE i.
***********************************************************************
* V A R I A B L E S F O R S E L E C T - O P T I O N S
***********************************************************************
DATA: v_auart TYPE vbak-auart, " Sales document
v_erdat TYPE vbak-erdat, " Date on which the record was created
v_ernam TYPE vbak-ernam, " Name of person who created the object
v_vkorg TYPE vbak-vkorg, " Sales organization
v_vtweg TYPE vbak-vtweg, " Distribution channel
v_spart TYPE vbak-spart, " Division
v_vbeln TYPE vbak-vbeln, " Sales document
v_bstkd TYPE vbkd-bstkd, " Customer purchase order number
v_kunnr TYPE vbak-kunnr, " Customer number 1
v_werks TYPE vbap-werks, " Plant (own or external)
v_lifsk TYPE vbak-lifsk, " Delivery block
v_lfgsk TYPE vbuk-lfgsk, " Delivery block (Document Header)
v_lfgsa TYPE vbup-lfgsa, " Overall delivery status of the item
v_spart1 TYPE vbap-spart, " Division
v_prctr TYPE vbap-prctr. " Profit Center
***********************************************************************
* F L A G S D E C L A R A T I O N
***********************************************************************
DATA: fg_error. " Flag to check whether the data populated or not
***********************************************************************
* I N T E R N A L T A B L E S D E C L A R A T I O N
***********************************************************************
*---Declaring Internal Table IT_VBAK Of type T_TAB
DATA: it_vbak TYPE STANDARD TABLE OF t_tab WITH HEADER LINE.
*---Declaring Internal Table IT_VBAP Of type T_TAB1
DATA: it_vbap TYPE STANDARD TABLE OF t_tab1 WITH HEADER LINE.
*---Declaring Internal Table IT_VBKD Of type T_TAB2
DATA: it_vbkd TYPE STANDARD TABLE OF t_tab2 WITH HEADER LINE.
*---Declaring Internal Table IT_VBEP Of type T_TAB3
DATA: it_vbep TYPE STANDARD TABLE OF t_tab3 WITH HEADER LINE.
*---Declaring Internal Table IT_VBEP1 Of Type T_TAB3
DATA: it_vbep1 TYPE STANDARD TABLE OF t_tab3 WITH HEADER LINE.
*---Declaring Internal Table IT_KNA1 Of type T_TAB4
DATA: it_kna1 TYPE STANDARD TABLE OF t_tab4 WITH HEADER LINE.
*---Declaring Internal Table IT_VBUK Of type T_TAB5
DATA: it_vbuk TYPE STANDARD TABLE OF t_tab5 WITH HEADER LINE.
*---Declaring Internal Table IT_VBUP Of type T_TAB6
DATA: it_vbup TYPE STANDARD TABLE OF t_tab6 WITH HEADER LINE.
*---Declaring Internal Table of type VBAK
DATA: it_vbak1 TYPE STANDARD TABLE OF t_tab8 WITH HEADER LINE.
*---Declaring a final internal table which contains PO details
DATA: BEGIN OF it_final1 OCCURS 0,
bstkd LIKE vbkd-bstkd, " Customer purchase order number
kunnr LIKE vbak-kunnr, " Customer number
name1 LIKE kna1-name1, " Name
vdatu LIKE vbak-vdatu, " Requested delivery date
END OF it_final1.
*---Declaring a final internal table which contains SO details
DATA: BEGIN OF it_final2 OCCURS 0,
vbeln LIKE vbak-vbeln, " Sales and distribution document number
vdatu LIKE vbak-vdatu, " Requested delivery date
erdat LIKE vbak-erdat, " Date on which the record was created
lfgsk LIKE vbuk-lfgsk, " Overall delivery status for all items
check,
END OF it_final2.
*---Declaring a final internal table which contains SE details
DATA: BEGIN OF it_final3 OCCURS 0,
vbeln LIKE vbep-vbeln, " Sales and distribution
" document number
posnr LIKE vbep-posnr, " Sales document item
etenr LIKE vbep-etenr, " Schedule line
matnr LIKE vbap-matnr, " Material number
arktx LIKE vbap-arktx, " Short text for sales order item
bddat LIKE vbep-bddat, " Requirement date
" (deadline for procurement)
kwmeng LIKE vbap-kwmeng, " Cumulative order quantity
" in sales units
bmeng LIKE vbep-bmeng, " Confirmed quantity
END OF it_final3.
*---Declaring an internal table which contains SO details of selected PO
DATA: BEGIN OF it_final4 OCCURS 0,
vbeln LIKE vbak-vbeln, " Sales and distribution
" document number
vdatu LIKE vbak-vdatu, " Requested delivery date
erdat LIKE vbak-erdat, " Date on which the record was created
lfgsk LIKE vbuk-lfgsk, " Overall delivery status for all items
check,
END OF it_final4.
*---Declaring an internal table which contains SE details of selected PO
DATA: BEGIN OF it_final5 OCCURS 0,
vbeln LIKE vbep-vbeln, " Sales and distribution
" document number
posnr LIKE vbep-posnr, " Item number of the SD document
etenr LIKE vbep-etenr, " Schedule line
matnr LIKE vbap-matnr, " Material number
arktx LIKE vbap-arktx, " Short text for sales order item
bddat LIKE vbep-bddat, " Requirement date
" (deadline for procurement)
kwmeng LIKE vbap-kwmeng, " Cumulative order quantity in
" sales unit
bmeng LIKE vbep-bmeng, " Confirmed quantity
END OF it_final5.
***********************************************************************
* S E L E C T I O N S C R E E N
***********************************************************************
*---Selection screen tab 1
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
SELECT-OPTIONS: s_auart FOR v_auart, " Sales document type
s_erdat FOR v_erdat, " Date on which the
" record was created
s_ernam FOR v_ernam NO INTERVALS NO-EXTENSION.
" Name of Person who Created the Object
SELECTION-SCREEN END OF BLOCK b1.
*---Selection screen tab 2
SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text-002.
SELECT-OPTIONS: s_vkorg FOR v_vkorg, " Sales organization
s_vtweg FOR v_vtweg, " Distribution channel
s_spart FOR v_spart. " Division
SELECTION-SCREEN END OF BLOCK b2.
*---Subscreen 1
SELECTION-SCREEN BEGIN OF SCREEN 110 AS SUBSCREEN.
SELECTION-SCREEN BEGIN OF BLOCK b3 WITH FRAME.
SELECT-OPTIONS: s_vbeln FOR v_vbeln, " Sales document
s_bstkd FOR v_bstkd, " Customer purchase
" order number
s_kunnr FOR v_kunnr, " Customer number
s_werks FOR v_werks, " Plant (Own or External)
s_lifsk FOR v_lifsk. " Delivery block
" (document header)
SELECTION-SCREEN END OF BLOCK b3.
SELECTION-SCREEN END OF SCREEN 110.
*---Subscreen 2
SELECTION-SCREEN BEGIN OF SCREEN 120 AS SUBSCREEN.
SELECTION-SCREEN BEGIN OF BLOCK b4 WITH FRAME.
SELECT-OPTIONS: s_lfgsk FOR v_lfgsk, " Delivery block
" (document header)
s_lfgsa FOR v_lfgsa, " Overall delivery
" status of the item
s_spart1 FOR v_spart1, " Division
s_prctr FOR v_prctr. " Profit center
SELECTION-SCREEN END OF BLOCK b4.
SELECTION-SCREEN END OF SCREEN 120.
*---Tab 3 for Selection screen
SELECTION-SCREEN: BEGIN OF TABBED BLOCK mytab FOR 7 LINES,
TAB (20) button1 USER-COMMAND push1,
TAB (20) button2 USER-COMMAND push2,
END OF BLOCK mytab.
*---Selection screen to choose the type of the list to be displayed
SELECTION-SCREEN BEGIN OF BLOCK b6 WITH FRAME TITLE text-005.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(18) text-006 FOR FIELD p_radio1.
PARAMETERS: p_radio1 RADIOBUTTON GROUP g1 DEFAULT 'X' USER-COMMAND sree.
SELECTION-SCREEN COMMENT 35(20) text-007 FOR FIELD p_radio2.
PARAMETERS: p_radio2 RADIOBUTTON GROUP g1.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK b6.
*---Selection screen to choose the list typr from a variant
SELECTION-SCREEN BEGIN OF BLOCK b7 WITH FRAME TITLE text-008.
PARAMETERS: p_var TYPE disvariant-variant MODIF ID abc.
SELECTION-SCREEN END OF BLOCK b7.
***********************************************************************
* I N I T I A L I Z A T I O N
***********************************************************************
INITIALIZATION.
PERFORM initialization. " Initializes different fields
***********************************************************************
* A T S E L E C T I O N S C R E E N
***********************************************************************
AT SELECTION-SCREEN.
PERFORM at_selection_screen. " At selection screen validations
***********************************************************************
* A T S E L E C T I O N S C R E E N O U T P U T
***********************************************************************
AT SELECTION-SCREEN OUTPUT.
*---If radio button 1 is clicked disables the parameter P_VAR
IF p_radio1 = 'X'.
LOOP AT SCREEN.
CHECK screen-group1 = 'ABC'.
screen-active = 0.
MODIFY SCREEN.
ENDLOOP.
ENDIF.
***********************************************************************
* A T S E L E C T I O N S C R E E N O N V A L U E R E Q U E S T
***********************************************************************
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_var.
PERFORM f4_for_variant. " Gets the variant to select the layout
***********************************************************************
* S T A R T O F S E L E C T I O N
***********************************************************************
START-OF-SELECTION.
PERFORM get_data. " Gets the data into the internal tables
PERFORM get_final_data. " Gets the final data to be displayed
IF it_vbkd[] IS INITIAL. " If no data found gives an information msg
MESSAGE i003.
fg_error = 'X'.
STOP.
ENDIF.
***********************************************************************
* E N D O F S E L E C T I O N
***********************************************************************
END-OF-SELECTION.
PERFORM key_info. " Gets the header and item key info
IF NOT fg_error = 'X'.
IF p_radio1 = 'X'.
PERFORM get_events. " Gets the events
v_tabname = 'IT_FINAL1'.
*--- Populates the field catalog for PO details using table IT_FINAL1
PERFORM fieldcatalog_merge1 USING v_tabname
it_fieldcat1.
*--- Modifies the field catalog for PO details
PERFORM modify_fldcat.
v_tabname = 'IT_FINAL2'.
*--- Populates the field catalog for SO details using table IT_FINAL2
PERFORM fieldcatalog_merge1 USING v_tabname
it_fieldcat2.
v_tabname = 'IT_FINAL3'.
*--- Populates the field catalog for SE details using table IT_FINAL3
PERFORM fieldcatalog_merge1 USING v_tabname
it_fieldcat2.
*--- Gets the User command and sets the pf-status
PERFORM alv_init.
*--- Modifies the layout into alternative colors
wa_layout-zebra = 'X'.
v_tabname = 'IT_FINAL1'.
*--- Populates the Blocked List info for PO details
PERFORM block_list USING wa_layout
it_fieldcat1
v_tabname
it_events.
*--- Gets the events for the Hierarchical list of SO and SE details
PERFORM get_events1.
*--- Modifies the field catalog for Hierarchical list
PERFORM modify_fieldcat_hirarchical.
*--- Appends the Hierarchical list to the Blocked list
PERFORM block_list_hs.
*--- Displays the Blocked list
PERFORM block_display.
ELSEIF p_radio2 = 'X'.
*--- Makes the hierarchical list in expand all mode
wa_layout-expand_fieldname = 'CHECK'.
*--- Gets the events of the Hierarchical list
PERFORM get_events2.
v_tabname = 'IT_FINAL2'.
*--- Populates the field catalog for SO details using table IT_FINAL2
PERFORM fieldcatalog_merge1 USING v_tabname
it_fieldcat2.
v_tabname = 'IT_FINAL3'.
*--- Populates the field catalog for SE details using table IT_FINAL3
PERFORM fieldcatalog_merge1 USING v_tabname
it_fieldcat2.
*--- Modifies the field catalog for Hierarchical list
PERFORM modify_fieldcat_hirarchical.
*--- Displays SO and SE details in a Hierarchical list format
PERFORM hierarchical_display TABLES it_final2
it_final3
USING it_fieldcat2
it_events2
'IT_FINAL2'
'IT_FINAL3'.
ENDIF.
ENDIF.
*&---------------------------------------------------------------------*
*& Form INITIALIZATION
*&---------------------------------------------------------------------*
* Initializes the selection screen
*----------------------------------------------------------------------*
FORM initialization .
button1 = text-003. " Button1 Text
button2 = text-004. " Button2 Text
mytab-prog = sy-repid. " Program Name
mytab-dynnr = 110. " Default Screen
mytab-activetab = 'BUTTON1'. " Default Tab
PERFORM variant_init.
ENDFORM. " INITIALIZATION
*&---------------------------------------------------------------------*
*& Form AT_SELECTION_SCREEN
*&---------------------------------------------------------------------*
* Chooses a particular screen when clicking on a particular button
*----------------------------------------------------------------------*
FORM at_selection_screen .
CASE sy-ucomm.
WHEN 'PUSH1'.
mytab-dynnr = 110.
mytab-activetab = 'BUTTON1'.
WHEN 'PUSH2'.
mytab-dynnr = 120.
mytab-activetab = 'BUTTON2'.
ENDCASE.
ENDFORM. " AT_SELECTION_SCREEN
*&---------------------------------------------------------------------*
*& Form GET_DATA
*&---------------------------------------------------------------------*
* Populates the Internal tables
*----------------------------------------------------------------------*
FORM get_data .
*---Selecting the VBELN from VBAK into a temporary table to reduce
*--- database access
SELECT vbeln " Sales and distribution document number
FROM vbak
INTO TABLE it_vbak1
WHERE vbeln IN s_vbeln
AND erdat IN s_erdat
AND ernam IN s_ernam
AND auart IN s_auart
AND lifsk IN s_lifsk
AND vkorg IN s_vkorg
AND vtweg IN s_vtweg
AND spart IN s_spart
AND kunnr IN s_kunnr.
*---Selecting VBELN POSNR ETENR BDDAT WMENG BMENG VRKME from VBEP Into
*--- IT_VBEP
IF NOT it_vbak1[] IS INITIAL.
SELECT vbeln " Sales and distribution document number
posnr " Sales document item
etenr " Schedule line
bddat " Requirement date (Deadline for procurement)
bmeng " Confirmed quantity
vrkme " Sales unit
FROM vbep
INTO TABLE it_vbep
FOR ALL ENTRIES IN it_vbak1
WHERE vbeln = it_vbak1-vbeln.
ENDIF.
*---Selecting VBELN POSNR MATNR ARKTX from VBAP Into IT_VBAP
IF NOT it_vbep[] IS INITIAL.
SELECT vbeln " Sales and distribution document number
posnr " Sales document item
matnr " Material number
arktx " Short text for sales order item
kwmeng " Cumulative order quantity in sales units
FROM vbap
INTO TABLE it_vbap
FOR ALL ENTRIES IN it_vbep
WHERE vbeln = it_vbep-vbeln
AND posnr = it_vbep-posnr
AND werks IN s_werks
AND spart IN s_spart1
AND prctr IN s_prctr.
ENDIF.
*---Selecting VBELN POSNR from VBUP Into IT_VBUP
IF NOT it_vbap[] IS INITIAL.
SELECT vbeln " Sales and distribution document number
posnr " Item number of the SD document
FROM vbup
INTO TABLE it_vbup
FOR ALL ENTRIES IN it_vbap
WHERE vbeln = it_vbap-vbeln
AND posnr = it_vbap-posnr
AND lfgsa IN s_lfgsa.
ENDIF.
*---Selecting VBELN ERDAT VDATU KUNNR from VBAK Into IT_VBAK
IF NOT it_vbup[] IS INITIAL.
SELECT vbeln
erdat
kunnr
vdatu
FROM vbak
INTO TABLE it_vbak
FOR ALL ENTRIES IN it_vbup
WHERE vbeln = it_vbup-vbeln
AND erdat IN s_erdat
AND ernam IN s_ernam
AND auart IN s_auart
AND vkorg IN s_vkorg
AND vtweg IN s_vtweg
AND spart IN s_spart
AND kunnr IN s_kunnr
AND lifsk IN s_lifsk.
IF sy-subrc = 0.
SORT it_vbak BY vbeln DESCENDING.
ENDIF.
ENDIF.
*---Selecting VBELN LFGSK from VBUK Into IT_VBUK
IF NOT it_vbak[] IS INITIAL.
SELECT vbeln
lfgsk
FROM vbuk
INTO TABLE it_vbuk
FOR ALL ENTRIES IN it_vbak
WHERE vbeln = it_vbak-vbeln
AND lfgsk IN s_lfgsk.
SELECT kunnr
name1
FROM kna1
INTO TABLE it_kna1
FOR ALL ENTRIES IN it_vbak
WHERE kunnr = it_vbak-kunnr.
ENDIF.
*---Selecting BSTKD VBELN from VBKD Into IT_VBKD
IF NOT it_vbuk[] IS INITIAL.
SELECT bstkd
vbeln
FROM vbkd
INTO TABLE it_vbkd
FOR ALL ENTRIES IN it_vbuk
WHERE vbeln = it_vbuk-vbeln
AND bstkd IN s_bstkd.
IF sy-subrc = 0.
SORT it_vbkd BY vbeln bstkd DESCENDING.
DELETE ADJACENT DUPLICATES FROM it_vbkd COMPARING vbeln.
SORT it_vbkd BY bstkd DESCENDING.
ENDIF.
ENDIF.
ENDFORM. " GET_DATA
*&---------------------------------------------------------------------*
*& Form GET_FINAL_DATA
*&---------------------------------------------------------------------*
* Populates the final data to be displayed into internal tables
*----------------------------------------------------------------------*
FORM get_final_data .
*---Moving the PO details into a final table IT_FINAL1
DATA: lv_tabix TYPE sy-tabix.
LOOP AT it_vbkd.
AT NEW bstkd.
lv_tabix = sy-tabix.
CLEAR it_vbkd.
READ TABLE it_vbkd INDEX lv_tabix.
IF sy-subrc = 0.
CLEAR it_vbak.
READ TABLE it_vbak WITH KEY vbeln = it_vbkd-vbeln.
CLEAR it_kna1.
READ TABLE it_kna1 WITH KEY kunnr = it_vbak-kunnr.
IF sy-subrc = 0.
it_final1-bstkd = it_vbkd-bstkd.
it_final1-kunnr = it_vbak-kunnr.
it_final1-name1 = it_kna1-name1.
it_final1-vdatu = it_vbak-vdatu.
APPEND it_final1.
CLEAR it_final1.
ENDIF.
ENDIF.
ENDAT.
ENDLOOP.
*---Moving the SO details into a final table IT_FINAL2
LOOP AT it_vbkd.
LOOP AT it_vbak WHERE vbeln = it_vbkd-vbeln.
CLEAR it_vbuk.
READ TABLE it_vbuk WITH KEY vbeln = it_vbak-vbeln.
it_final2-vbeln = it_vbak-vbeln.
it_final2-vdatu = it_vbak-vdatu.
it_final2-erdat = it_vbak-erdat.
it_final2-lfgsk = it_vbuk-lfgsk.
it_final2-check = 'X'.
APPEND it_final2.
CLEAR it_final2.
ENDLOOP.
ENDLOOP.
*---Moving the SE details into a final table IT_FINAL3
REFRESH it_vbep1.
CLEAR it_vbep1.
LOOP AT it_vbap.
LOOP AT it_vbep WHERE vbeln = it_vbap-vbeln
AND posnr = it_vbap-posnr.
it_vbep1 = it_vbep.
APPEND it_vbep1.
CLEAR it_vbep1.
ENDLOOP.
DESCRIBE TABLE it_vbep1 LINES v_linc.
IF v_linc = 1.
CLEAR it_vbep1.
READ TABLE it_vbep1 INDEX 1.
it_final3-vbeln = it_vbep-vbeln.
it_final3-posnr = it_vbep1-posnr.
it_final3-etenr = it_vbep1-etenr.
it_final3-matnr = it_vbap-matnr.
it_final3-arktx = it_vbap-arktx.
it_final3-bddat = it_vbep1-bddat.
it_final3-kwmeng = it_vbap-kwmeng.
it_final3-bmeng = it_vbep1-bmeng.
APPEND it_final3.
CLEAR it_final3.
ELSE.
LOOP AT it_vbep1 WHERE bmeng <> 0.
it_final3-vbeln = it_vbep-vbeln.
it_final3-posnr = it_vbep1-posnr.
it_final3-etenr = it_vbep1-etenr.
it_final3-matnr = it_vbap-matnr.
it_final3-arktx = it_vbap-arktx.
it_final3-bddat = it_vbep1-bddat.
it_final3-kwmeng = it_vbap-kwmeng.
it_final3-bmeng = it_vbep1-bmeng.
APPEND it_final3.
CLEAR it_final3.
ENDLOOP.
ENDIF.
REFRESH it_vbep1.
CLEAR it_vbep1.
ENDLOOP.
ENDFORM. " GET_FINAL_DATA
*&---------------------------------------------------------------------*
*& Form FIELDCATALOG_MERGE1
*&---------------------------------------------------------------------*
* Fills the field catalog by depending on the tables given
*----------------------------------------------------------------------*
FORM fieldcatalog_merge1 USING v_tab TYPE slis_tabname
v_field TYPE slis_t_fieldcat_alv.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_program_name = v_repid
i_internal_tabname = v_tab
i_inclname = v_repid
CHANGING
ct_fieldcat = v_field
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDFORM. " FIELDCATALOG_MERGE1
*&---------------------------------------------------------------------*
*& Form KEY_INFO
*&---------------------------------------------------------------------*
* Gets the Header and Item key into details
*----------------------------------------------------------------------*
FORM key_info .
it_keyinfo-header01 = 'VBELN'.
it_keyinfo-item01 = 'VBELN'.
ENDFORM. " KEY_INFO
*&---------------------------------------------------------------------*
*& Form HIERARCHICAL_DISPLAY
*&---------------------------------------------------------------------*
* Displays the SO & SE details in a hierarchical list format
*----------------------------------------------------------------------*
FORM hierarchical_display TABLES p_tab1 p_tab2
USING p_fieldcat TYPE slis_t_fieldcat_alv
p_events TYPE slis_t_event
p_table1 TYPE slis_tabname
p_table2 TYPE slis_tabname.
i_variant1-variant = p_var.
CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
EXPORTING
i_callback_program = v_repid
i_callback_pf_status_set = 'PF_STATUS'
is_layout = wa_layout
* I_CALLBACK_USER_COMMAND = ' '
it_fieldcat = p_fieldcat
i_save = 'X'
is_variant = i_variant1
it_events = p_events
i_tabname_header = p_table1
i_tabname_item = p_table2
is_keyinfo = it_keyinfo
TABLES
t_outtab_header = p_tab1
t_outtab_item = p_tab2
EXCEPTIONS
program_error = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDFORM. " HIERARCHICAL_DISPLAY
*&---------------------------------------------------------------------*
*& Form ALV_INIT
*&---------------------------------------------------------------------*
* Gets the User command and sets the pf-status
*----------------------------------------------------------------------*
FORM alv_init .
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_INIT'
EXPORTING
i_callback_program = v_repid
i_callback_pf_status_set = 'PF_STATUS'
i_callback_user_command = 'PO_USER_COMMAND'.
ENDFORM. " ALV_INIT
*&---------------------------------------------------------------------*
*& Form BLOCK_LIST
*&---------------------------------------------------------------------*
* Appends the PO details into the Blocked list
*----------------------------------------------------------------------*
FORM block_list USING p_wa_layout TYPE slis_layout_alv
p_it_fieldcat1 TYPE slis_t_fieldcat_alv
p_v_tabname TYPE slis_tabname
p_it_events TYPE slis_t_event.
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'
EXPORTING
is_layout = p_wa_layout
it_fieldcat = p_it_fieldcat1
i_tabname = p_v_tabname
it_events = p_it_events
TABLES
t_outtab = it_final1
EXCEPTIONS
program_error = 1
maximum_of_appends_reached = 2
OTHERS = 3.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
wa_layout-expand_fieldname = 'CHECK'.
ENDFORM. " BLOCK_LIST
*&---------------------------------------------------------------------*
*& Form BLOCK_LIST_HS
*&---------------------------------------------------------------------*
* Appends the SO & SE details to the blocked list
*----------------------------------------------------------------------*
FORM block_list_hs .
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_HS_APPEND'
EXPORTING
is_layout = wa_layout
it_fieldcat = it_fieldcat2
is_keyinfo = it_keyinfo
i_header_tabname = 'IT_FINAL2'
i_item_tabname = 'IT_FINAL3'
it_events = it_events1
TABLES
t_outtab_header = it_final2
t_outtab_item = it_final3
EXCEPTIONS
program_error = 1
maximum_of_appends_reached = 2
OTHERS = 3.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDFORM. " BLOCK_LIST_HS
*&---------------------------------------------------------------------*
*& Form BLOCK_DISPLAY
*&---------------------------------------------------------------------*
* Displays the Blocked list
*----------------------------------------------------------------------*
FORM block_display .
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_DISPLAY'
EXCEPTIONS
program_error = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDFORM. " BLOCK_DISPLAY
*&---------------------------------------------------------------------*
*& Form MODIFY_FLDCAT
*&---------------------------------------------------------------------*
* Modifies the field catalog of PO details
*----------------------------------------------------------------------*
FORM modify_fldcat .
LOOP AT it_fieldcat1 INTO wa_fieldcat1 .
CASE wa_fieldcat1-fieldname .
WHEN 'BSTKD' .
wa_fieldcat1-seltext_l = 'PO Number'(010).
wa_fieldcat1-outputlen = 35 .
wa_fieldcat1-ddictxt = 'L' .
WHEN 'KUNNR' .
wa_fieldcat1-outputlen = 15 .
wa_fieldcat1-seltext_l = 'Sold-To Pt.'(011).
wa_fieldcat1-ddictxt = 'L' .
WHEN 'NAME1' .
wa_fieldcat1-outputlen = 35 .
wa_fieldcat1-seltext_l = 'Name1'(012).
wa_fieldcat1-ddictxt = 'L' .
WHEN 'VDATU' .
wa_fieldcat1-outputlen = 15 .
wa_fieldcat1-seltext_l = 'Req.Dlv.Dt.'(013).
wa_fieldcat1-ddictxt = 'L' .
ENDCASE .
MODIFY it_fieldcat1 FROM wa_fieldcat1 .
ENDLOOP.
ENDFORM. " MODIFY_FLDCAT
*&---------------------------------------------------------------------*
*& Form MODIFY_FIELDCAT_HIRARCHICAL
*&---------------------------------------------------------------------*
* Modifies the field catalog of SO & SE details
*----------------------------------------------------------------------*
FORM modify_fieldcat_hirarchical.
LOOP AT it_fieldcat2 INTO wa_fieldcat1.
CASE wa_fieldcat1-fieldname.
WHEN 'VBELN' .
wa_fieldcat1-outputlen = 20.
wa_fieldcat1-seltext_m = 'SD Doc'(014).
wa_fieldcat1-ddictxt = 'M'.
WHEN 'VDATU' .
wa_fieldcat1-outputlen = 20.
wa_fieldcat1-seltext_m = 'Req.Dlv.Dt'(015).
wa_fieldcat1-ddictxt = 'M'.
WHEN 'ERDAT' .
wa_fieldcat1-outputlen = 20.
wa_fieldcat1-seltext_m = 'Rec Created Date'(016).
wa_fieldcat1-ddictxt = 'M'.
WHEN 'LFGSK' .
wa_fieldcat1-outputlen = 20.
wa_fieldcat1-seltext_m = 'Dlv Status'(017).
wa_fieldcat1-ddictxt = 'M'.
WHEN 'CHECK'.
wa_fieldcat1-no_out = 'X'.
ENDCASE .
MODIFY it_fieldcat2 FROM wa_fieldcat1.
ENDLOOP.
ENDFORM. " MODIFY_FIELDCAT_HIRARCHICAL
*&---------------------------------------------------------------------*
*& Form GET_EVENTS
*&---------------------------------------------------------------------*
* Gets the events for the list
*----------------------------------------------------------------------*
FORM get_events.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
i_list_type = 2
IMPORTING
et_events = it_events
EXCEPTIONS
list_type_wrong = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
READ TABLE it_events INTO wa_events
WITH KEY name = slis_ev_top_of_list.
IF sy-subrc = 0.
wa_events-form = 'TOP_OF_LIST'.
MODIFY it_events FROM wa_events INDEX sy-tabix.
ENDIF.
READ TABLE it_events INTO wa_events
WITH KEY name = slis_ev_user_command.
IF sy-subrc = 0.
wa_events-form = 'PO_USER_COMMAND'.
MODIFY it_events FROM wa_events INDEX sy-tabix.
ENDIF.
ENDFORM. " GET_EVENTS
*&---------------------------------------------------------------------*
*& Form GET_EVENTS1
*&---------------------------------------------------------------------*
* Gets the events for the list
*----------------------------------------------------------------------*
FORM get_events1 .
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
i_list_type = 3
IMPORTING
et_events = it_events1
EXCEPTIONS
list_type_wrong = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
CLEAR wa_events.
READ TABLE it_events1 INTO wa_events
WITH KEY name = slis_ev_top_of_list.
IF sy-subrc = 0.
wa_events-form = 'TOP_OF_LIST1'.
MODIFY it_events1 FROM wa_events INDEX sy-tabix.
ENDIF.
ENDFORM. " GET_EVENTS1
*---------------------------------------------------------------------*
* T O P - O F - L I S T
*---------------------------------------------------------------------*
* Displays the Top of list of PO details
*----------------------------------------------------------------------*
FORM top_of_list.
SKIP.
WRITE 'SYRATECH CORPORATION'(025).
SKIP.
WRITE:/ 'System :'(021), sy-mandt,
/ 'User :'(022), sy-uname,
/ 'Date :'(023), sy-datum,
/ 'Time :'(024), sy-uzeit.
SKIP.
WRITE:/ 'PO DETAILS'(019).
ENDFORM. "TOP_OF_LIST
*---------------------------------------------------------------------*
* T O P O F L I S T 1
*---------------------------------------------------------------------*
* Displays the Top of list of SO & SE details
*----------------------------------------------------------------------*
FORM top_of_list1.
WRITE:/ 'SO & SE DETAILS'(020).
ENDFORM. "TOP_OF_LIST1
*---------------------------------------------------------------------*
* P F - S T A T U S
*---------------------------------------------------------------------*
* Sets the Pf-Status
*----------------------------------------------------------------------*
FORM pf_status USING rt_extab TYPE slis_t_extab.
SET PF-STATUS 'ZSREEPO'.
ENDFORM. "PF_STATUS
*---------------------------------------------------------------------*
* U S E R C O M M A N D
*---------------------------------------------------------------------*
* Gets the user command and perform different operations
*----------------------------------------------------------------------*
FORM po_user_command USING p_ucomm TYPE sy-ucomm
p_selfield TYPE slis_selfield.
CASE p_selfield-tabname.
WHEN 'IT_FINAL1'.
*---If user clicks on PO number, displays the SO and SE details of that
*--- particular PO number
v_selfield_value = p_selfield-value.
*--- Gets the current layout details and process appropriate action
PERFORM display_secondary_list.
WHEN 'IT_FINAL2'.
*---If user clicks on the sales order number in the SO level the
*--- transaction VA03 will open in a new window
IF p_selfield-fieldname = 'VBELN'.
PERFORM call_transaction_va03. " Calls the transaction in a
" separate window
ENDIF.
WHEN 'IT_FINAL3'.
*---If user clicks on the sales order number in the Line Item the
*--- Intelligroup home page will open in a new browser
IF p_selfield-fieldname = 'VBELN'.
PERFORM open_browser. " Opens the Browser in a new window
ENDIF.
ENDCASE.
ENDFORM. "USER_COMMAND
*&---------------------------------------------------------------------*
*& Form CALL_TRANSACTION_VA03
*&---------------------------------------------------------------------*
* Calls the transaction VA03 in a new session
*----------------------------------------------------------------------*
FORM call_transaction_va03 .
CALL FUNCTION 'ABAP4_CALL_TRANSACTION' STARTING NEW TASK 'TEST'
DESTINATION 'NONE'
EXPORTING
tcode = 'VA03'
EXCEPTIONS
call_transaction_denied = 1
tcode_invalid = 2
OTHERS = 3.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDFORM. " CALL_TRANSACTION_VL10
*&---------------------------------------------------------------------*
*& Form GET_EVENTS2
*&---------------------------------------------------------------------*
* Gets the events for SO & SE details
*----------------------------------------------------------------------*
FORM get_events2 .
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
i_list_type = 1
IMPORTING
et_events = it_events2
EXCEPTIONS
list_type_wrong = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
CLEAR wa_events.
READ TABLE it_events2 INTO wa_events
WITH KEY name = slis_ev_top_of_list.
IF sy-subrc = 0.
wa_events-form = 'TOP_OF_LIST1'.
MODIFY it_events2 FROM wa_events INDEX sy-tabix.
ENDIF.
READ TABLE it_events2 INTO wa_events
WITH KEY name = slis_ev_user_command.
IF sy-subrc = 0.
wa_events-form = 'PO_USER_COMMAND'.
MODIFY it_events2 FROM wa_events INDEX sy-tabix.
ENDIF.
ENDFORM. " GET_EVENTS2
*&---------------------------------------------------------------------*
*& Form OPEN_BROWSER
*&---------------------------------------------------------------------*
* Opens the Intelligroup home page in a new browser
*----------------------------------------------------------------------*
FORM open_browser .
CALL FUNCTION 'CALL_BROWSER'
EXPORTING
url = 'WWW.INTELLIGROUP.COM'
new_window = 'X'
EXCEPTIONS
frontend_not_supported = 1
frontend_error = 2
prog_not_found = 3
no_batch = 4
unspecified_error = 5
OTHERS = 6.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDFORM. " OPEN_BROWSER
*&---------------------------------------------------------------------*
*& Form DISPLAY_SO_SE_DETAILS
*&---------------------------------------------------------------------*
* Displays the
*----------------------------------------------------------------------*
FORM display_so_se_details USING p_selfield TYPE slis_selfield-value.
REFRESH: it_final4, it_final5.
*---Moving the SO details into a final table IT_FINAL4
LOOP AT it_vbkd WHERE bstkd = p_selfield.
LOOP AT it_vbak WHERE vbeln = it_vbkd-vbeln.
CLEAR it_vbuk.
READ TABLE it_vbuk WITH KEY vbeln = it_vbak-vbeln.
it_final4-vbeln = it_vbak-vbeln.
it_final4-vdatu = it_vbak-vdatu.
it_final4-erdat = it_vbak-erdat.
it_final4-lfgsk = it_vbuk-lfgsk.
it_final4-check = 'X'.
APPEND it_final4.
CLEAR it_final4.
ENDLOOP.
ENDLOOP.
LOOP AT it_final4.
LOOP AT it_vbap WHERE vbeln = it_final4-vbeln.
LOOP AT it_vbep WHERE vbeln = it_vbap-vbeln
AND posnr = it_vbap-posnr.
it_vbep1 = it_vbep.
APPEND it_vbep1.
CLEAR it_vbep1.
ENDLOOP.
*---Moving the SE details into a final table IT_FINAL5
DESCRIBE TABLE it_vbep1 LINES v_linc.
IF v_linc = 1.
CLEAR it_vbep1.
READ TABLE it_vbep1 INDEX 1.
it_final5-vbeln = it_vbep-vbeln.
it_final5-posnr = it_vbep1-posnr.
it_final5-etenr = it_vbep1-etenr.
it_final5-matnr = it_vbap-matnr.
it_final5-arktx = it_vbap-arktx.
it_final5-bddat = it_vbep1-bddat.
it_final5-kwmeng = it_vbap-kwmeng.
it_final5-bmeng = it_vbep1-bmeng.
APPEND it_final5.
CLEAR it_final5.
ELSE.
LOOP AT it_vbep1 WHERE bmeng <> 0.
it_final5-vbeln = it_vbep-vbeln.
it_final5-posnr = it_vbep1-posnr.
it_final5-etenr = it_vbep1-etenr.
it_final5-matnr = it_vbap-matnr.
it_final5-arktx = it_vbap-arktx.
it_final5-bddat = it_vbep1-bddat.
it_final5-kwmeng = it_vbap-kwmeng.
it_final5-bmeng = it_vbep1-bmeng.
APPEND it_final5.
CLEAR it_final5.
ENDLOOP.
ENDIF.
REFRESH it_vbep1.
CLEAR it_vbep1.
ENDLOOP.
ENDLOOP.
v_tabname = 'IT_FINAL4'.
*---Populates the field catalog for SO details
PERFORM fieldcatalog_merge1 USING v_tabname
it_fieldcat3.
v_tabname = 'IT_FINAL5'.
*---Populates the field catalog for SE details
PERFORM fieldcatalog_merge1 USING v_tabname
it_fieldcat3.
PERFORM modify_fieldcat_hirarchical2.
*---Displays the SO & SE details in a hierarchical format
PERFORM hierarchical_display TABLES it_final4
it_final5
USING it_fieldcat3
it_events2
'IT_FINAL4'
'IT_FINAL5'.
ENDFORM. " GET_SECLIST_DATA
*&---------------------------------------------------------------------*
*& Form VARIANT_INIT
*&---------------------------------------------------------------------*
* Gets the variant
*----------------------------------------------------------------------*
FORM variant_init.
v_repid = sy-repid.
CLEAR i_variant.
i_variant-report = v_repid.
ENDFORM. " VARIANT_INIT
*&---------------------------------------------------------------------*
*& Form F4_FOR_VARIANT
*&---------------------------------------------------------------------*
* Gets the variant to select the layout
*----------------------------------------------------------------------*
FORM f4_for_variant.
DATA: lv_save(1) TYPE c, " To save the variant
lv_exit(1) TYPE c. " To get Dialog cancelled by user
CALL FUNCTION 'REUSE_ALV_VARIANT_F4'
EXPORTING
is_variant = i_variant
i_save = lv_save
IMPORTING
e_exit = lv_exit
es_variant = i_variant1
EXCEPTIONS
not_found = 1
program_error = 2
OTHERS = 3.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ELSE.
IF lv_exit = space.
p_var = i_variant1-variant.
ENDIF.
ENDIF.
ENDFORM. " F4_FOR_VARIANT
*&---------------------------------------------------------------------*
*& Form DISPLAY_SECONDARY_LIST
*&---------------------------------------------------------------------*
* Gets the current layout and process appropriate action
*----------------------------------------------------------------------*
FORM display_secondary_list .
DATA: i_fieldcat1 TYPE slis_t_fieldcat_alv, " Internal table for
"temporary field catalog
lv_fieldcat TYPE slis_fieldcat_alv, " Work area for temporary
" field catalog
lv_colpos TYPE i, " To store the column position
lv_colpos1 TYPE i, " To store the column position
lv_layout1 TYPE slis_layout_alv. " Work Area for Layout
CLEAR i_fieldcat1.
REFRESH i_fieldcat1.
CALL FUNCTION 'REUSE_ALV_LIST_LAYOUT_INFO_GET'
IMPORTING
es_layout = lv_layout1
et_fieldcat = i_fieldcat1
EXCEPTIONS
no_infos = 1
program_error = 2
OTHERS = 3.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
CLEAR: lv_colpos1, lv_colpos.
lv_colpos1 = 2.
lv_colpos = 2.
*--- After changing the field catalog of PO details, user can get the
*--- list of SO & Line item details in Hierarchical list form by
*--- clicking only on the Purchase Order number.
LOOP AT i_fieldcat1 INTO lv_fieldcat.
IF lv_fieldcat-no_out <> 'X'.
lv_colpos1 = lv_colpos1 + lv_fieldcat-outputlen + 1.
IF lv_fieldcat-fieldname = 'BSTKD'.
IF sy-cucol >= lv_colpos AND sy-cucol <= lv_colpos1.
PERFORM display_so_se_details USING v_selfield_value.
CLEAR v_selfield_value.
EXIT.
ENDIF.
ENDIF.
lv_colpos = lv_colpos + lv_fieldcat-outputlen + 1.
ENDIF.
ENDLOOP.
ENDFORM. " DISPLAY_SECONDARY_LIST
*&---------------------------------------------------------------------*
*& Form MODIFY_FIELDCAT_HIRARCHICAL2
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM modify_fieldcat_hirarchical2 .
LOOP AT it_fieldcat3 INTO wa_fieldcat1.
CASE wa_fieldcat1-fieldname.
WHEN 'VBELN' .
wa_fieldcat1-outputlen = 20.
wa_fieldcat1-seltext_m = 'SD Doc'(014).
wa_fieldcat1-ddictxt = 'M'.
WHEN 'VDATU' .
wa_fieldcat1-outputlen = 20.
wa_fieldcat1-seltext_m = 'Req.Dlv.Dt'(015).
wa_fieldcat1-ddictxt = 'M'.
WHEN 'ERDAT' .
wa_fieldcat1-outputlen = 20.
wa_fieldcat1-seltext_m = 'Rec Created Date'(016).
wa_fieldcat1-ddictxt = 'M'.
WHEN 'LFGSK' .
wa_fieldcat1-outputlen = 20.
wa_fieldcat1-seltext_m = 'Dlv Status'(017).
wa_fieldcat1-ddictxt = 'M'.
WHEN 'CHECK'.
wa_fieldcat1-no_out = 'X'.
ENDCASE .
MODIFY it_fieldcat3 FROM wa_fieldcat1.
ENDLOOP.
ENDFORM. " MODIFY_FIELDCAT_HIRARCHICAL2
2006 Jun 28 1:30 PM
Hi praveen,
check this code. hope this helps u.
REPORT ZKEERTHI_ALV4 .
&----
*& tables declaration
&----
tables: vbak.
&----
*& type-pools declaration
&----
type-pools: slis.
&----
*& data declaration
&----
data: g_repid type sy-repid.
DATA : IT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV, "mara
WA_FIELDCAT TYPE SLIS_FIELDCAT_ALV,
X_KEYINFO TYPE SLIS_KEYINFO_ALV,
IT_HEADER TYPE SLIS_TABNAME,
IT_ITEM TYPE SLIS_TABNAME. .
DATA: BEGIN OF IT_VBAK occurs 0,
VBELN LIKE VBAK-VBELN,
AUDAT LIKE VBAK-AUDAT,
AUART LIKE VBAK-AUART,
NETWR LIKE VBAK-NETWR,
END OF IT_VBAK.
DATA: BEGIN OF IT_VBAP OCCURS 0,
VBELN LIKE VBAP-VBELN,
POSNR LIKE VBAP-POSNR,
MATNR LIKE VBAP-MATNR,
CHARG LIKE VBAP-CHARG,
PSTYV LIKE VBAP-PSTYV,
END OF IT_VBAP.
&----
*& initialisation
&----
initialization.
g_repid = sy-repid.
IT_HEADER = 'IT_VBAK'.
IT_ITEM = 'IT_VBAP'.
CLEAR X_KEYINFO.
X_KEYINFO-HEADER01 = 'VBELN'.
" comparing the keys and relating the header and item internal tables
X_KEYINFO-ITEM01 = 'VBELN'.
X_KEYINFO-HEADER02 = SPACE.
X_KEYINFO-ITEM02 = 'POSNR'.
&----
*& selection screen
&----
selection-screen begin of block b with frame title text-001.
select-options: s_vbeln for vbak-vbeln,
s_auart for vbak-auart.
selection-screen end of block b.
&----
*& start of selection
&----
start-of-selection.
perform get_vbak.
perform get_vbap.
&----
*& Form get_vbak
&----
text
----
--> p1 text
<-- p2 text
----
FORM get_vbak .
select vbeln
audat
auart
netwr from vbak
into table it_vbak
where vbeln in s_vbeln and
auart in s_auart.
ENDFORM. " get_vbak
&----
*& Form get_vbap
&----
text
----
--> p1 text
<-- p2 text
----
FORM get_vbap .
select vbeln
posnr
matnr
charg
pstyv from vbap
into table it_vbap
for all entries in it_vbak
where vbeln = it_vbak-vbeln.
ENDFORM. " get_vbap
&----
*& end of selection
&----
end-of-selection.
perform modify_fieldcat.
PERFORM HIERARCHICAL_LIST.
&----
*& Form modify_fieldcat
&----
text
----
--> p1 text
<-- p2 text
----
FORM modify_fieldcat .
clear wa_fieldcat.
WA_FIELDCAT-TABNAME = 'IT_VBAK'.
WA_FIELDCAT-FIELDNAME = 'VBELN'.
WA_FIELDCAT-SELTEXT_L = 'DOC NO'.
WA_FIELDCAT-COL_POS = 1.
WA_FIELDCAT-OUTPUTLEN = 10.
APPEND WA_FIELDCAT TO IT_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-TABNAME = 'IT_VBAK'.
WA_FIELDCAT-FIELDNAME = 'AUDAT'.
WA_FIELDCAT-SELTEXT_L = 'DOC DATE'.
WA_FIELDCAT-COL_POS = 2.
WA_FIELDCAT-OUTPUTLEN = 8.
APPEND WA_FIELDCAT TO IT_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-TABNAME = 'IT_VBAK'.
WA_FIELDCAT-FIELDNAME = 'AUART'.
WA_FIELDCAT-SELTEXT_L = 'DOC TYPE'.
WA_FIELDCAT-COL_POS = 3.
WA_FIELDCAT-OUTPUTLEN = 4.
APPEND WA_FIELDCAT TO IT_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-TABNAME = 'IT_VBAK'.
WA_FIELDCAT-FIELDNAME = 'NETWR'.
WA_FIELDCAT-SELTEXT_L = 'DOC NO'.
WA_FIELDCAT-COL_POS = 4.
WA_FIELDCAT-OUTPUTLEN = 15.
APPEND WA_FIELDCAT TO IT_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-TABNAME = 'IT_VBAP'.
WA_FIELDCAT-FIELDNAME = 'VBELN'.
WA_FIELDCAT-SELTEXT_L = 'DOC NO'.
WA_FIELDCAT-OUTPUTLEN = 10.
APPEND WA_FIELDCAT TO IT_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-TABNAME = 'IT_VBAP'.
WA_FIELDCAT-FIELDNAME = 'POSNR'.
WA_FIELDCAT-SELTEXT_L = 'SALES ITEM'.
WA_FIELDCAT-OUTPUTLEN = 6.
APPEND WA_FIELDCAT TO IT_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-TABNAME = 'IT_VBAP'.
WA_FIELDCAT-FIELDNAME = 'MATNR'.
WA_FIELDCAT-SELTEXT_L = 'MAT NO'.
WA_FIELDCAT-OUTPUTLEN = 18.
APPEND WA_FIELDCAT TO IT_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-TABNAME = 'IT_VBAP'.
WA_FIELDCAT-FIELDNAME = 'CHARG'.
WA_FIELDCAT-SELTEXT_L = 'BATCH NO'.
WA_FIELDCAT-OUTPUTLEN = 10.
APPEND WA_FIELDCAT TO IT_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-TABNAME = 'IT_VBAP'.
WA_FIELDCAT-FIELDNAME = 'PSTYV'.
WA_FIELDCAT-SELTEXT_L = 'ITEM CAT'.
WA_FIELDCAT-OUTPUTLEN = 4.
APPEND WA_FIELDCAT TO IT_FIELDCAT.
CLEAR WA_FIELDCAT.
ENDFORM. " modify_fieldcat
&----
*& Form HIERARCHICAL_LIST
&----
text
----
--> p1 text
<-- p2 text
----
FORM HIERARCHICAL_LIST .
CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = ' '
I_CALLBACK_PROGRAM = G_REPID
I_CALLBACK_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND = ' '
IS_LAYOUT =
IT_FIELDCAT = IT_FIELDCAT
IT_EXCLUDING =
IT_SPECIAL_GROUPS =
IT_SORT =
IT_FILTER =
IS_SEL_HIDE =
I_SCREEN_START_COLUMN = 0
I_SCREEN_START_LINE = 0
I_SCREEN_END_COLUMN = 0
I_SCREEN_END_LINE = 0
I_DEFAULT = 'X'
I_SAVE = ' '
IS_VARIANT =
IT_EVENTS =
IT_EVENT_EXIT =
I_TABNAME_HEADER = IT_HEADER
I_TABNAME_ITEM = IT_ITEM
I_STRUCTURE_NAME_HEADER =
I_STRUCTURE_NAME_ITEM =
IS_KEYINFO = X_KEYINFO
IS_PRINT =
IS_REPREP_ID =
I_BYPASSING_BUFFER =
I_BUFFER_ACTIVE =
IMPORTING
E_EXIT_CAUSED_BY_CALLER =
ES_EXIT_CAUSED_BY_USER =
TABLES
T_OUTTAB_HEADER = it_vbak
T_OUTTAB_ITEM = it_vbap
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2
.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. " HIERARCHICAL_LIST
reward if helpful.
regards,
keerthi.
2006 Jun 28 1:55 PM
2006 Jun 28 2:17 PM
Hi Praveen,
<b>1</b>.
<b>Hierarchical ALV</b> :Displaying Output header records and corresponding item records.
<b>2</b>.
Ex:U want to display for every Plant and Storage location and materials and their quantities.
<b>1000 1000</b>
mat1 20
mat2 30
mat3 40
<b>1000 10001</b>
mat11 20
mat22 30
mat33 40
<b>1000 1002</b>
mat111 20
mat222 30
mat333 40
<b>3</b>.
For this take 2 ITABs one for HEADER and seccond for ITEMS records.
Both should have common key .
That common key should be specified in is_keyinfo = x_key in the Function module
REUSE_ALV_HIERSEQ_LIST_DISPLAY.
<b>4</b>.
have a look at above example given by members.
I hope that u get some idea
<b>Thanks,
Venkat.O</b>
| User | Count |
|---|---|
| 4 | |
| 2 | |
| 2 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |