2007 Feb 19 11:59 AM
HI,
Can any one send some hierarchial alv progrms.
with warm regards,
khadar.
2007 Feb 19 12:02 PM
Hi,
report zwmr_pick_status_report no standard page heading
message-id zw.
************************************************************************
Type Pools *
************************************************************************
type-pools: icon, slis.
************************************************************************
Tables *
************************************************************************
tables: tvst,
likp,
t30b,
vekp,
zpallettr,
zvantr.
************************************************************************
Types *
************************************************************************
types:
begin of ty_data,
lgtor like likp-lgtor, " door
vbeln like likp-vbeln, " delivery
wbstk like vbuk-wbstk, " Goods movement status
kostk like vbuk-kostk, " Picking status
posnr like lips-posnr, " item
route like likp-route, " route
wadat like likp-wadat, " goods issue date
lvsta like vbup-lvsta, " warehouse status
packvorschr like vekp-packvorschr, " pack mnemonic
exidv like vekp-exidv, " handling unit
zpallet_no(10), "like zpallettr-zpallet_no, " pallet no
zcount_check like zpallettr-zcount_check," count check flag
zvan_no(10), "like zvantr-zvan_no, " van no
zvan_print like zvantr-zvan_print, " van manifest print
zeod_print like zvantr-zeod_print, " eod manifest print
zzpackclass like vekp-zzpackclass, " package class
zzti like vekp-zzti, " T.I. value
end of ty_data.
************************************************************************
Data *
************************************************************************
ranges: r_del for likp-vbeln,
r_lgtor for likp-lgtor.
ranges: r_vanno for zvantr-zvan_no,
r_palno for zpallettr-zpallet_no.
data: begin of number_range occurs 0,
mark(1),
id(3),
num(10) type n,
desc like zpalletmd-zdesc,
end of number_range.
data: t_disp_tab type standard table of zpickdisp,
t_data_tab type ty_data occurs 0 with header line,
t_disp_head type standard table of zpickhead.
data: w_numrnge like number_range,
w_number(10) type n.
data: t_likp like likp occurs 0 with header line,
t_lips like lips occurs 0 with header line,
t_vbuk like vbuk occurs 0 with header line,
t_vbup like vbup occurs 0 with header line,
t_vepo like vepo occurs 0 with header line,
t_vekp like vekp occurs 0 with header line,
t_vantr like zvantr occurs 0 with header line,
t_pallettr like zpallettr occurs 0 with header line,
w_likp like likp,
w_lips like lips,
w_vbuk like vbuk,
w_vbup like vbup,
w_vepo like vepo,
w_vekp like vekp.
ALV DATA *****
data:
g_grid type ref to cl_gui_alv_grid,
g_sort type slis_t_sortinfo_alv,
g_custom_container type ref to cl_gui_custom_container,
g_layout type slis_layout_alv,
gt_fieldcat type slis_t_fieldcat_alv,
t_fldcat like line of gt_fieldcat,
g_keyinfo type slis_keyinfo_alv,
gt_events type slis_t_event,
gs_event type slis_alv_event,
w_sy_repid like sy-repid.
data: begin of seltab occurs 0.
include structure rsparams.
data: end of seltab.
SYSTEM GENERATED TABLE CONTROL DATA ********
DECLARATION OF TABLECONTROL 'TC_TABCON' ITSELF
controls: tc_tabcon type tableview using screen 0100.
LINES OF TABLECONTROL 'TC_TABCON'
data: g_tc_tabcon_lines like sy-loopc.
data: ok_code like sy-ucomm.
*****************************************************
************************************************************************
Constants *
************************************************************************
constants: c_data_class like klah-class value 'DG_DATA',
c_mat_class like rmclf-klart value '001',
c_pack like lips-mtart value 'VERP',
c_a(1) value 'A',
c_b(1) value 'B',
c_c(1) value 'C',
c_yes(1) value 'X',
c_no(1) value ' '.
************************************************************************
Selection screen *
************************************************************************
standard report select options block
selection-screen begin of block a with frame title text-002.
select-options:
s_wadat for likp-wadat no-extension obligatory. " Goods Issue Date
*parameters: "TR01-
p_vstel like tvst-vstel obligatory. " Shipping Point "TR01-
select-options: "TR01+
p_vstel for tvst-vstel. " Shipping Point "TR01+
select-options:
s_lfart for likp-lfart, " Delivery type
s_lgtor for t30b-lgtor, " Door selection
s_exidv for vekp-exidv, " Handling Unit
s_vbeln for likp-vbeln. " Delivery
parameters:
p_exdata as checkbox. " Show extra columns flag
selection-screen end of block a.
van/pallet specific select options block
selection-screen begin of block b with frame title text-001.
select-options:
s_palno for zpallettr-zpallet_no, " no-extension,
s_vanno for zvantr-zvan_no. " no-extension.
selection-screen end of block b.
************************************************************************
Value Request Events *
************************************************************************
at selection-screen on value-request for s_palno-low.
clear: number_range, w_number .
refresh number_range.
select numbers and display pop up screen for selection
perform select_pal_nos.
s_palno-low = w_number.
at selection-screen on value-request for s_palno-high.
clear: number_range, w_number .
refresh number_range.
select numbers and display pop up screen for selection
perform select_pal_nos.
s_palno-high = w_number.
at selection-screen on value-request for s_vanno-low.
clear: number_range, w_number .
refresh number_range.
select numbers and display pop up screen for selection
perform select_van_nos.
s_vanno-low = w_number.
at selection-screen on value-request for s_vanno-high.
clear: number_range, w_number .
refresh number_range.
select numbers and display pop up screen for selection
perform select_van_nos.
s_vanno-high = w_number.
************************************************************************
At Selection Screen *
************************************************************************
at selection-screen.
perform validate_selections.
************************************************************************
Initialization *
************************************************************************
initialization.
************************************************************************
Start of selection *
************************************************************************
start-of-selection.
clear all data tables
clear: t_likp,
t_lips,
t_vbuk,
t_vbup,
t_vepo,
t_vantr,
t_pallettr,
w_likp,
w_lips,
w_vbuk,
w_vbup,
w_vepo,
w_vekp.
refresh: t_likp,
t_lips,
t_vbuk,
t_vbup,
t_vepo,
t_vantr,
t_pallettr.
select data for ALV
due to different input parameters being used, to streamline the data
selection process, different selection methods are required
if not s_vanno is initial
or not s_palno is initial.
if selecting by van/pallet number, need to select the data from the
handling unit upwards to delivery
perform select_data_up.
else.
otherwise the data can be selected from the delivery downwards
perform select_data_down.
endif.
************************************************************************
End of selection *
************************************************************************
end-of-selection.
call hierarchical ALV display function module
call function 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
exporting
i_callback_program = 'ZWMR_PICK_STATUS_REPORT'
i_callback_pf_status_set = 'SET_STATUS'
i_callback_user_command =
'USER_COMMAND' "custom gui status form
is_layout = g_layout "user command form
it_fieldcat = gt_fieldcat
it_sort = g_sort
it_events = gt_events
i_tabname_header = 't_disp_head'
i_tabname_item = 't_disp_tab'
i_structure_name_header = 'ZPICKHEAD'
i_structure_name_item = 'ZPICKDISP'
is_keyinfo = g_keyinfo
tables
t_outtab_header = t_disp_head
t_outtab_item = t_disp_tab.
if sy-subrc <> 0.
message id sy-msgid type sy-msgty number sy-msgno
with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
endif.
************************************************************************
************************************************************************
FORMS *
************************************************************************
************************************************************************
Includes inserted by Screen Painter Wizard. DO NOT CHANGE THIS LINE!
include zwmr_pick_status_reporto01 .
include zwmr_pick_status_reporti01 .
include zwmr_pick_status_reportf01 .
&----
*& Form select_pal_nos
&----
select pallet numbers for search help
----
form select_pal_nos.
data: begin of t_palno occurs 0,
zpallet_no like zpallettr-zpallet_no,
end of t_palno.
select all available pallet numbers
select distinct zpallet_no from zpallettr
into corresponding fields of table t_palno.
loop at t_palno.
get pallet id
select single zpallet_id from zpallettr
into number_range-id
where zpallet_no = t_palno-zpallet_no.
get pallet description
select single zdesc from zpalletmd
into number_range-desc
where zpallet_id = number_range-id.
number_range-num = t_palno-zpallet_no.
append to search help table
append number_range.
endloop.
call pop up dialog box
call screen 0100 starting at 5 5.
endform. " select_pal_nos
*
&----
*& Form select_van_nos
&----
select van numbers for search help
----
form select_van_nos.
data: begin of t_vanno occurs 0,
zvan_no like zvantr-zvan_no,
end of t_vanno.
select available van numbers
select distinct zvan_no from zvantr
into corresponding fields of table t_vanno.
loop at t_vanno.
select van id
select single zvan_id from zvantr
into number_range-id
where zvan_no = t_vanno-zvan_no.
select van description (maintained in pallet tables)
select single zdesc from zpalletmd
into number_range-desc
where zpallet_id = number_range-id.
number_range-num = t_vanno-zvan_no.
append to search help table
append number_range.
endloop.
call pop up dialog box
call screen 0100 starting at 5 5.
endform. " select_van_nos
&----
*& Form select_data_down
&----
select data if selecting from delivery down
----
form select_data_down.
select all deliveries from LIKP that fulfill selection criteria
select * from likp into table t_likp
where vbeln in s_vbeln
and vstel eq p_vstel "TR01-
and vstel in p_vstel
and lgtor in s_lgtor
and wadat in s_wadat
and lfart in s_lfart.
if sy-subrc ne 0.
no data found
message i007.
exit.
endif.
if not t_likp[] is initial.
select sales document headers from VBUK
select * from vbuk into table t_vbuk
for all entries in t_likp
where vbeln eq t_likp-vbeln.
select all relevant delivery items from LIPS
select * from lips into table t_lips
for all entries in t_likp
where vbeln eq t_likp-vbeln
and pstyv ne 'ZPAC'
and pstyv ne 'ZGDP' "TR02+
and lfimg gt 0. "TR01+
endif.
if not t_lips[] is initial.
select all sales document line items from VBUP
select * from vbup into table t_vbup
for all entries in t_lips
where vbeln eq t_lips-vbeln
and posnr = t_lips-posnr.
select corresponding handling unit ID's (venum)
*----
TR03 Replace start
select * from vepo appending corresponding fields of table t_vepo
for all entries in t_lips
where vbeln = t_lips-vbeln
and posnr = t_lips-posnr
and matnr = t_lips-matnr
and charg = t_lips-charg.
select * from vepo
inner join vekp on vepovenum = vekpvenum
appending corresponding fields of table t_vepo
for all entries in t_lips
where vepo~vbeln = t_lips-vbeln
and vepo~posnr = t_lips-posnr
and vepo~matnr = t_lips-matnr
and vepo~charg = t_lips-charg
and vekp~exidv in s_exidv.
*----
TR03 Replace end
endif.
build process table
perform move_to_table.
endform. "select_data_down
&----
*& Form select_data_up
&----
select data if selecting from van/pallet up
----
form select_data_up.
if not s_vanno is initial.
if van then select van numbers and hence pallet numbers
select * from zvantr into table t_vantr
where zvan_no in s_vanno.
and vstel eq p_vstel."TR01-
if not t_vantr[] is initial.
select * from zpallettr into table t_pallettr
for all entries in t_vantr
where zpallet_no eq t_vantr-zpallet_no.
and vstel eq p_vstel."TR01-
endif.
else.
otherwise can get pallet numbers directly
select * from zpallettr into table t_pallettr
where zpallet_no in s_palno.
and vstel eq p_vstel."TR01-
endif.
if not t_pallettr[] is initial.
from the pallet nos. we can select the handling units
select * from vekp into table t_vekp
for all entries in t_pallettr
where exidv eq t_pallettr-exidv
and exidv ne space
and exidv in s_exidv "TR03+
and ( exida = 'E' "TR01+
or exida = 'F' ). "TR01+
endif.
if not t_vekp[] is initial.
build vbeln range from t_vekp.
loop at t_vekp.
r_del-sign = 'I'.
r_del-option = 'EQ'.
r_del-low = t_vekp-vpobjkey.
append r_del.
endloop.
select all deliveries from LIKP that correspond to HU's
select * from likp into table t_likp
where vbeln in r_del
and wadat in s_wadat
and lfart in s_lfart.
endif.
if not t_likp[] is initial.
select sales document headers from VBUK
select * from vbuk into table t_vbuk
for all entries in t_likp
where vbeln eq t_likp-vbeln.
select all relevant delivery items from LIPS
select * from lips into table t_lips
for all entries in t_likp
where vbeln eq t_likp-vbeln
and pstyv ne 'ZPAC'
and pstyv ne 'ZGDP' "TR02+
and lfimg gt 0. "TR01+
endif.
if not t_lips[] is initial.
select all sales document line items from VBUP
select * from vbup into table t_vbup
for all entries in t_lips
where vbeln eq t_lips-vbeln
and posnr = t_lips-posnr.
select corresponding handling unit ID's (venum)
select * from vepo appending corresponding fields of table t_vepo
for all entries in t_lips
where vbeln = t_lips-vbeln
and posnr = t_lips-posnr
and matnr = t_lips-matnr
and charg = t_lips-charg.
endif.
build process table
perform move_to_table.
endform. "select_data_up
&----
*& Form move_to_table
&----
move data to processing table
----
form move_to_table.
loop at t_vepo.
clear t_data_tab.
delivery lines.
clear w_lips.
read table t_lips with key vbeln = t_vepo-vbeln
posnr = t_vepo-posnr
into w_lips.
move-corresponding w_lips to t_data_tab.
sales document line items
clear w_vbup.
read table t_vbup with key vbeln = t_vepo-vbeln
posnr = t_vepo-posnr
into w_vbup.
if w_vbup-kosta = space. "TR01-
not relevant for picking
delete t_vepo. "TR01-
continue. "TR01-
else. "TR01-
move-corresponding w_vbup to t_data_tab.
endif. "TR01-
sales doc header
clear w_vbuk.
read table t_vbuk with key vbeln = t_vepo-vbeln
into w_vbuk.
move-corresponding w_vbuk to t_data_tab.
delivery header
clear w_likp.
read table t_likp with key vbeln = t_vepo-vbeln
into w_likp.
move-corresponding w_likp to t_data_tab.
select handling unit info using vepo entry
clear w_vekp.
if t_vekp[] is initial.
select single * from vekp into w_vekp
where venum = t_vepo-venum.
else.
read table t_vekp with key venum = t_vepo-venum
into w_vekp.
if sy-subrc ne 0.
select single * from vekp into w_vekp
where venum = t_vepo-venum.
endif.
endif.
move-corresponding w_vekp to t_data_tab.
select pallet / van load information
select single zpallet_no zcount_check from zpallettr
into (t_data_tab-zpallet_no,
t_data_tab-zcount_check)
where exidv eq w_vekp-exidv.
if not t_data_tab-zpallet_no in s_palno. "TR01+
continue. "TR01+
endif. "TR01+
if sy-subrc = 0.
select single zvan_no zvan_print zeod_print from zvantr
into (t_data_tab-zvan_no,
t_data_tab-zvan_print,
t_data_tab-zeod_print)
where zpallet_no eq t_data_tab-zpallet_no.
if not t_data_tab-zvan_no in s_vanno. "TR01+
continue. "TR01+
endif. "TR01+
endif.
append t_data_tab.
endloop.
*-----> TR01+ start
If the delivery has yet to be packed, then need to include in report
Thus delete t_lips here and if any entries left after looping through
t_vepo, these will also need to be added to t_data_tab
if the selection is by handling unit though we do not want these"TR03+
if s_exidv is initial. "TR03+
loop at t_vepo.
read table t_lips with key vbeln = t_vepo-vbeln
posnr = t_vepo-posnr.
if sy-subrc = 0.
delete t_lips index sy-tabix.
endif.
endloop.
if not t_lips[] is initial.
move any unpacked items to the data table
perform move_lips_to_table.
endif.
endif. "TR03+
*<---- TR01+ End
get relevant status icons
perform select_icons.
prepare ALV data
perform prepare_alv.
endform. " select_data
&----
*& Form select_icons
&----
select icons for display and move data to display table
----
form select_icons.
data: w_disp_tab like zpickdisp,
w_disp_head like zpickhead,
w_color like zpickdisp-color,
ov_icon like zpickdisp-ov_icon,
gi_icon like zpickdisp-gi_icon,
to_icon like zpickdisp-to_icon,
lp_icon like zpickdisp-lp_icon,
pc_icon like zpickdisp-pc_icon,
lv_icon like zpickdisp-lv_icon,
vm_icon like zpickdisp-vm_icon,
em_icon like zpickdisp-em_icon,
t_ovst_tab like t_disp_tab with header line.
constants: c_col1(3) value 'C10',
c_col2(3) value 'C20'.
sort t_data_tab by lgtor vbeln.
w_color = c_col2.
loop at t_data_tab.
at new lgtor.
fill ALV header table
clear w_disp_head.
w_disp_head-lgtor = t_data_tab-lgtor.
append w_disp_head to t_disp_head.
endat.
goods issue status & overall amber/green only
case t_data_tab-wbstk.
when c_c.
move icon_green_light to gi_icon.
move icon_green_light to ov_icon.
when others.
move icon_red_light to gi_icon.
move icon_yellow_light to ov_icon.
endcase.
transfer order status
case t_data_tab-lvsta.
when c_a.
move icon_red_light to to_icon.
when c_b.
move icon_yellow_light to to_icon.
when c_c.
move icon_green_light to to_icon.
when space.
write N/A
to_icon = 'N/A'.
endcase.
loaded to pallet status
if not t_data_tab-zpallet_no is initial.
move icon_green_light to lp_icon.
else.
move icon_red_light to lp_icon.
endif.
pallet count status
if not t_data_tab-zcount_check is initial.
move icon_green_light to pc_icon.
else.
move icon_red_light to pc_icon.
endif.
loaded to van status
if not t_data_tab-zvan_no is initial.
move icon_green_light to lv_icon.
else.
move icon_red_light to lv_icon.
endif.
van manifest status
if not t_data_tab-zvan_print is initial.
move icon_green_light to vm_icon.
else.
move icon_red_light to vm_icon.
endif.
end of day manifest status
if not t_data_tab-zeod_print is initial.
move icon_green_light to em_icon.
else.
move icon_red_light to em_icon.
endif.
move working data table to display table
move-corresponding t_data_tab to w_disp_tab.
w_disp_tab-ov_icon = ov_icon.
w_disp_tab-gi_icon = gi_icon.
w_disp_tab-to_icon = to_icon.
w_disp_tab-lp_icon = lp_icon.
w_disp_tab-pc_icon = pc_icon.
w_disp_tab-lv_icon = lv_icon.
w_disp_tab-vm_icon = vm_icon.
w_disp_tab-em_icon = em_icon.
w_disp_tab-color = w_color.
fill N/A values for initial fields for display
if w_disp_tab-packvorschr is initial.
w_disp_tab-packvorschr = 'N/A'.
endif.
if w_disp_tab-exidv is initial.
w_disp_tab-exidv = 'N/A'.
endif.
if w_disp_tab-zpallet_no is initial.
write 'N/A' to w_disp_tab-zpallet_no.
endif.
if w_disp_tab-zvan_no is initial.
write 'N/A' to w_disp_tab-zvan_no.
endif.
display different color for new doc number
at end of vbeln.
if w_color = c_col1.
w_color = c_col2.
elseif w_color = c_col2.
w_color = c_col1.
endif.
endat.
append w_disp_tab to t_disp_tab.
clear w_disp_tab.
endloop.
we have all the icons in display but need to check the overall status
as this refers to the line items
green and amber statuses already set and use the same criteria as the
goods issue status unless detected as red here
data: ov_stat_red(1).
clear w_disp_tab.
sort t_disp_tab by vbeln.
loop at t_disp_tab into w_disp_tab.
at new vbeln.
check all line items for delivery
loop at t_data_tab where vbeln = w_disp_tab-vbeln.
if t_data_tab-lvsta = c_a.
set overall status to red
ov_stat_red = c_yes.
exit.
else.
leave green/amber status icon as previosly determined
endif.
endloop.
if ov_stat_red = c_yes.
set overall status to red for all items in that delivery
clear ov_stat_red.
move icon_red_light to w_disp_tab-ov_icon.
modify t_disp_tab from w_disp_tab transporting ov_icon
where vbeln = w_disp_tab-vbeln.
endif.
endat.
endloop.
endform. " select_icons
&----
*& Form fill_layout
&----
fill ALV layout parameters
----
form fill_layout.
clear g_layout.
g_layout-colwidth_optimize = c_yes. " column width optimisation
g_layout-zebra = space. " alternate line colors
g_layout-box_fieldname = 'MARK'. " checkbox fieldname
g_layout-info_fieldname = 'COLOR'. " highlight row indicator
g_layout-no_vline = space. " vertical line
g_layout-key_hotspot = space. " hotspot field
g_layout-f2code = 'PICK'. " F2 ok_code
g_layout-numc_sum = c_yes. " sum numc fields
g_layout-box_tabname = 't_disp_head'. " checkbox table name
g_layout-expand_fieldname = 'EXPAND'. " expand field name
endform. " fill_layout
&----
*& Form fill_sort
&----
fill ALV sort table
----
form fill_sort.
data: w_g_sort type slis_sortinfo_alv.
w_g_sort-spos = 1.
w_g_sort-fieldname = 'LGTOR'.
w_g_sort-tabname = 't_disp_tab'.
w_g_sort-up = c_yes.
append w_g_sort to g_sort.
w_g_sort-spos = 2.
w_g_sort-fieldname = 'VBELN'.
w_g_sort-tabname = 't_disp_tab'.
w_g_sort-up = c_yes.
append w_g_sort to g_sort.
w_g_sort-spos = 3.
w_g_sort-fieldname = 'POSNR'.
w_g_sort-tabname = 't_disp_tab'.
w_g_sort-up = c_yes.
append w_g_sort to g_sort.
w_g_sort-spos = 4.
w_g_sort-fieldname = 'WADAT'.
w_g_sort-tabname = 't_disp_tab'.
w_g_sort-up = c_yes.
append w_g_sort to g_sort.
endform. " fill_sort
&----
*& Form fill_fieldcat
&----
Fill field category structure for ALV
----
form fill_fieldcat.
clear t_fldcat.
create field catalogue for header table
call function 'REUSE_ALV_FIELDCATALOG_MERGE'
exporting
i_program_name = 'ZWMR_PICK_STATUS_REPORT'
i_internal_tabname = 't_disp_head'
i_structure_name = 'ZPICKHEAD'
i_client_never_display = c_yes
changing
ct_fieldcat = gt_fieldcat[].
if sy-subrc <> 0.
message id sy-msgid type sy-msgty number sy-msgno
with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
endif.
ceate field catalogue for items table
call function 'REUSE_ALV_FIELDCATALOG_MERGE'
exporting
i_program_name = 'ZWMR_PICK_STATUS_REPORT'
i_internal_tabname = 't_disp_tab'
i_structure_name = 'ZPICKDISP'
i_client_never_display = c_yes
changing
ct_fieldcat = gt_fieldcat[].
if sy-subrc <> 0.
message id sy-msgid type sy-msgty number sy-msgno
with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
endif.
modify field catalogue for this report
set no display flag if not requested on selection screen
if p_exdata ne c_yes.
t_fldcat-no_out = c_yes.
modify gt_fieldcat from t_fldcat transporting no_out
where fieldname eq 'PACKVORSCHR'
or fieldname eq 'EXIDV'
or fieldname eq 'ZPALLET_NO'
or fieldname eq 'ZVAN_NO'
or fieldname eq 'ZZPACKCLASS'
or fieldname eq 'ZZTI'.
endif.
set no display flag for item level LGTOR field
t_fldcat-no_out = c_yes.
modify gt_fieldcat from t_fldcat transporting no_out
where fieldname eq 'LGTOR'
and tabname eq 't_disp_tab'.
prevent display of technical fields
t_fldcat-tech = c_yes.
modify gt_fieldcat from t_fldcat transporting tech
where fieldname eq 'EXPAND'
or fieldname eq 'SELKZ'.
set vbeln as key
t_fldcat-key = c_yes.
modify gt_fieldcat from t_fldcat transporting key
where fieldname eq 'VBELN'.
prevent scrolling for info fields
t_fldcat-fix_column = c_yes.
modify gt_fieldcat from t_fldcat transporting fix_column
where fieldname eq 'VBELN'.
endform. " fill_fieldcat
&----
*& Form prepare_ALV
&----
Fill ALV parameters
----
form prepare_alv.
fill ALV key info
g_keyinfo-header01 = 'LGTOR'.
g_keyinfo-item01 = 'LGTOR'.
fill ALV events
gs_event-name = 'TOP_OF_PAGE'.
gs_event-form = 'TOP_OF_PAGE'.
append gs_event to gt_events.
fill ALV sort table
perform fill_sort.
fill ALV layout structure
perform fill_layout.
fill ALV field category
perform fill_fieldcat.
endform. " prepare_ALV
&----
*& Form user_command
&----
form called on user command from ALV list
----
form user_command using r_ucomm like sy-ucomm
rs_selfield type slis_selfield.
data: index type i,
w_disp_head like line of t_disp_head,
w_door like likp-lgtor.
clear r_lgtor. refresh r_lgtor.
case r_ucomm.
when 'PICK'. " Double click line
when 'VANM'. " Van Manifest button
read the header table where has been selected
loop at t_disp_head into w_disp_head where mark = c_yes.
r_lgtor-sign = 'I'.
r_lgtor-option = 'EQ'.
r_lgtor-low = w_disp_head-lgtor.
append r_lgtor.
endloop.
print the van manifest
perform print_van_manifest tables r_lgtor.
when 'EODM'. " EOD Manifest button
read the header table where has been selected
loop at t_disp_head into w_disp_head where mark = c_yes.
r_lgtor-sign = 'I'.
r_lgtor-option = 'EQ'.
r_lgtor-low = w_disp_head-lgtor.
append r_lgtor.
endloop.
print the end of day manifest
perform print_eod_manifest tables r_lgtor.
when 'REFR'. "Refresh
refresh display
w_sy_repid = sy-repid.
call function 'RS_REFRESH_FROM_SELECTOPTIONS'
exporting
curr_report = w_sy_repid
tables
selection_table = seltab.
exceptions
not_found = 1
no_report = 2
others = 3.
if sy-subrc = 0.
submit (w_sy_repid) with selection-table seltab.
endif.
endcase.
endform.
&----
*& Form set_status
&----
form used to set custom gui status for ALV
----
form set_status using rt_extab type slis_t_extab.
data: t_stat_excl type slis_t_extab,
w_stat_excl like line of t_stat_excl.
w_stat_excl-fcode = '&RNT'.
append w_stat_excl to t_stat_excl.
set pf-status 'ZSTANDARD' excluding t_stat_excl.
endform.
&----
*& Form validate_selections
&----
text
----
form validate_selections.
if not s_lgtor is initial.
if not s_exidv is initial
or not s_vbeln is initial
or not s_palno is initial
or not s_vanno is initial.
message e020.
exit.
endif.
endif.
if not s_exidv is initial.
if not s_lgtor is initial
or not s_vbeln is initial
or not s_palno is initial
or not s_vanno is initial.
message e020.
exit.
endif.
endif.
if not s_vbeln is initial.
if not s_exidv is initial
or not s_lgtor is initial
or not s_palno is initial
or not s_vanno is initial.
message e020.
exit.
endif.
endif.
if not s_palno is initial.
if not s_exidv is initial
or not s_vbeln is initial
or not s_lgtor is initial
or not s_vanno is initial.
message e020.
exit.
endif.
endif.
if not s_vanno is initial.
if not s_exidv is initial
or not s_vbeln is initial
or not s_palno is initial
or not s_lgtor is initial.
message e020.
exit.
endif.
endif.
endform. " validate_selections
&----
*& Form top_of_page
&----
form called by ALV genarator for top_of_page event
----
form top_of_page.
sort s_vbeln by sign descending option descending.
sort s_palno by sign descending option descending.
sort s_vanno by sign descending option descending.
sort s_wadat by sign descending option descending.
sort s_exidv by sign descending option descending.
Van Number summary
loop at s_vanno.
at new sign.
if s_vanno-sign = 'I'.
format color 5 on.
write:/ 'Van Numbers Included:'(003).
format color off.
elseif s_vanno-sign = 'E'.
format color 6 on.
write:/ 'Van Numbers Excluded:'(004).
format color off.
endif.
endat.
case s_vanno-option.
when 'EQ'.
write:/ 'Equal to'(013), 15 s_vanno-low.
when 'NE'.
write:/ 'Not equal to'(014), 15 s_vanno-low.
when 'BT'.
write:/ 'Between'(015), 15 s_vanno-low, ' and '(016),
s_vanno-high.
endcase.
at last.
skip.
endat.
endloop.
Pallet Number summary
loop at s_palno.
at new sign.
if s_palno-sign = 'I'.
format color 5 on.
write:/ 'Pallet Numbers Included:'(005).
format color off.
elseif s_palno-sign = 'E'.
format color 6 on.
write:/ 'Pallet Numbers Excluded:'(006).
format color off.
endif.
endat.
case s_palno-option.
when 'EQ'.
write:/ 'Equal to'(013), 15 s_palno-low.
when 'NE'.
write:/ 'Not equal to'(014), 15 s_palno-low.
when 'BT'.
write:/ 'Between'(015), 15 s_palno-low, ' and '(016),
s_palno-high.
endcase.
at last.
skip.
endat.
endloop.
Delivery Number summary
loop at s_vbeln.
at new sign.
if s_vbeln-sign = 'I'.
format color 5 on.
write:/ 'Delivery Numbers Included:'(007).
format color off.
elseif s_vanno-sign = 'E'.
format color 6 on.
write:/ 'Delivery Numbers Excluded:'(008).
format color off.
endif.
endat.
case s_vbeln-option.
when 'EQ'.
write:/ 'Equal to'(013), 15 s_vbeln-low.
when 'NE'.
write:/ 'Not equal to'(014), 15 s_vbeln-low.
when 'BT'.
write:/ 'Between'(015), 15 s_vbeln-low, ' and '(016),
s_vbeln-high.
endcase.
at last.
skip.
endat.
endloop.
HU Number summary
loop at s_exidv.
at new sign.
if s_exidv-sign = 'I'.
format color 5 on.
write:/ 'Handling Unit Numbers Included:'(009).
format color off.
elseif s_vanno-sign = 'E'.
format color 6 on.
write:/ 'Handling Unit Numbers Excluded:'(010).
format color off.
endif.
endat.
case s_exidv-option.
when 'EQ'.
write:/ 'Equal to'(013), 15 s_exidv-low.
when 'NE'.
write:/ 'Not equal to'(014), 15 s_exidv-low.
when 'BT'.
write:/ 'Between'(015), 15 s_exidv-low, ' and '(016),
s_exidv-high.
endcase.
at last.
skip.
endat.
endloop.
Date range summary
check not s_wadat is initial.
format color 5 on.
write:/ 'Date Range: '(011), s_wadat-low, ' to '(012).
if s_wadat-option = 'BT'.
write s_wadat-high.
else.
write s_wadat-low.
endif.
format color off.
endform. " top_of_page
&----
*& Form print_van_manifest
&----
submit the van manifest report to a printer
----
form print_van_manifest tables p_lgtor structure r_lgtor.
clear: r_vanno, r_palno.
refresh: r_vanno, r_palno.
data: vans type i.
fill selection screen parameters for van manifest
loop at t_data_tab where lgtor in p_lgtor.
if not t_data_tab-zvan_no is initial " it is loaded to van
and t_data_tab-kostk eq 'C' " pick status C = Complete
"TR01-
and ( t_data_tab-kostk eq 'C' "TR01+
or t_data_tab-kostk eq space ). "TR01+
begin TR01-
and t_data_tab-zvan_print ne c_yes " no van manifest has been
" printed
and t_data_tab-zeod_print ne c_yes. " no eod manifest has been
" printed
end TR01-
fill van number range
r_vanno-sign = 'I'.
r_vanno-option = 'EQ'.
r_vanno-low = t_data_tab-zvan_no.
append r_vanno.
fill pallet number range
r_palno-sign = 'I'.
r_palno-option = 'EQ'.
r_palno-low = t_data_tab-zpallet_no.
append r_palno.
endif.
endloop.
delete adjacent duplicates from r_vanno comparing low.
describe table r_vanno lines vans.
if vans = 0.
error no vans available for van manifest report
message e025(zw).
else.
submit van manifest report straight to printer
submit zwmr_manifest_reports to sap-spool
with s_vanno in r_vanno
commented out pending decision on CR 140 solution design ***
with s_date in s_wadat
and return.
endif.
on completion of the van manifest, the shipment status 'loading end'
needs to be set if any of the handling units on the van are the last
in a particular shipment to be despatched
perform load_end_validate tables r_palno.
endform. " print_van_manifest
&----
*& Form print_eod_manifest
&----
submit the end of day manifest report to a printer
----
form print_eod_manifest tables p_lgtor structure r_lgtor.
ranges: r_vanno for zvantr-zvan_no.
data: vans type i.
fill selection screen parameters for van manifest
loop at t_data_tab where lgtor in p_lgtor.
if not t_data_tab-zvan_no is initial " it is loaded to van
and t_data_tab-kostk eq 'C' " pick status C = Complete
and t_data_tab-zeod_print ne c_yes. " no eod manifest has been
" printed
fill van number range
r_vanno-sign = 'I'.
r_vanno-option = 'EQ'.
r_vanno-low = t_data_tab-zvan_no.
append r_vanno.
endif.
endloop.
delete adjacent duplicates from r_vanno comparing low.
describe table r_vanno lines vans.
if vans = 0.
error no vans available for eod manifest report
message e027(zw).
else.
submit van manifest report straight to printer
submit zwmr_manifest_reports to sap-spool
with s_vanno in r_vanno
with p_repflg eq c_yes
commented out pending decision on CR 140 solution design ***
with s_date in s_wadat
and return.
endif.
endform. " print_eod_manifest
&----
*& Form load_end_validate
&----
Determine on van manifest print whether or not any of the
handling units on the vans in quection are the last of a
particular shipment to be loaded. If so set the 'loading end'
status of that shipment.
----
-->P_PALNO pallet number range
----
form load_end_validate tables p_palno structure r_palno.
local data
ranges: r_vbeln for likp-vbeln,
r_tknum for vttk-tknum,
r_ldend for vttk-tknum.
data: l_t_paltr like standard table of zpallettr with header line,
l_t_vekp like standard table of vekp with header line,
l_t_likp like standard table of likp with header line,
l_t_vepo like standard table of vepo with header line,
l_t_vantr like standard table of zvantr with header line,
l_t_lips like standard table of lips with header line,
l_t_vttp like standard table of vttp with header line.
data: not_last(1) type c. " not last flag
data: w_stlad like vttk-stlad. "TR01+
get all pallets on the vans
select * from zpallettr into table l_t_paltr
where zpallet_no in p_palno.
check not l_t_paltr[] is initial.
get all handling units on the pallets
select * from vekp into table l_t_vekp
for all entries in l_t_paltr
where exidv = l_t_paltr-exidv
and ( exida = 'E'
or exida = 'F' ).
check not l_t_vekp[] is initial.
build range of deliveries from vekp-vpobjkey
loop at l_t_vekp.
r_vbeln-sign = 'I'.
r_vbeln-option = 'EQ'.
r_vbeln-low = l_t_vekp-vpobjkey.
append r_vbeln.
endloop.
select all deliveries associated with the handling units
select * from likp into table l_t_likp
where vbeln in r_vbeln.
check not l_t_likp[] is initial.
select shipment line items that correspond to deliveries
select * from vttp into table l_t_vttp
for all entries in l_t_likp
where vbeln = l_t_likp-vbeln.
check not l_t_vttp[] is initial.
get associated shipment numbers.
loop at l_t_vttp.
if status already set, do not include "TR01+
select single stlad from vttk into w_stlad "TR01+
where tknum = l_t_vttp-tknum. "TR01+
if w_stlad ne c_yes. "TR01+
clear w_stlad.
r_tknum-sign = 'I'.
r_tknum-option = 'EQ'.
r_tknum-low = l_t_vttp-tknum.
append r_tknum.
endif. "TR01+
endloop.
sort r_tknum by low.
delete adjacent duplicates from r_tknum comparing low.
we now have a list of shipment numbers affected by the printing
of the van manifest just carried out.
next we need to get a complete list of handling units associated with
these shipments, and check if they have been loaded firstly to a
pallet and then to a van, and if so check that the van manifest report
has been printed
if all handling units for a particular shipment have been loaded and
the van manifest printed, then we need to update the status flag of
the shipment to "Loading End"
data: lin type i,
ind type i,
w_tknum like vttk-tknum.
make sure we have all items for all shipments
select * from vttp appending corresponding fields of table l_t_vttp
where tknum in r_tknum.
check not l_t_vttp[] is initial.
sort l_t_vttp by tknum vbeln.
delete duplicate lines
delete adjacent duplicates from l_t_vttp comparing tknum vbeln.
now get all delivery items.
select * from lips into table l_t_lips
for all entries in l_t_vttp
where vbeln = l_t_vttp-vbeln
and pstyv ne 'ZPAC'
and pstyv ne 'ZGDP'. "TR02+
check not l_t_lips[] is initial.
now get handling units
select * from vepo into table l_t_vepo
for all entries in l_t_lips
where vbeln = l_t_lips-vbeln
and posnr = l_t_lips-posnr
and matnr = l_t_lips-matnr
and charg = l_t_lips-charg.
check not l_t_vepo[] is initial.
select * from vekp appending corresponding fields of table l_t_vekp
for all entries in l_t_vepo
where venum = l_t_vepo-venum.
sort l_t_vekp by exidv.
check not l_t_vekp[] is initial.
delete duplicate lines
delete adjacent duplicates from l_t_vekp comparing exidv.
now get pallet data
select * from zpallettr
appending corresponding fields of table l_t_paltr
for all entries in l_t_vekp
where exidv = l_t_vekp-exidv
and zload = c_yes. " loaded to van
check not l_t_paltr[] is initial.
delete duplicate lines
delete adjacent duplicates from l_t_paltr comparing exidv.
now get van data
select * from zvantr into table l_t_vantr
for all entries in l_t_paltr
where zpallet_no = l_t_paltr-zpallet_no
and zvan_print = c_yes. " van manifest printed
we now have all delivery, handling unit, pallet and van
information, so can now check each shipment in turn for complete
loading
describe table r_tknum lines lin.
r_ldend[] = r_tknum[].
sort l_t_vttp by tknum vbeln.
ind = 1.
do lin times.
read table r_tknum index ind.
w_tknum = r_tknum-low.
for this shipment we need to find all hu's and determine
whether loaded and van manifest printed
shipment item
loop at l_t_vttp where tknum = w_tknum.
delivery item
loop at l_t_vepo where vbeln = l_t_vttp-vbeln.
read HU item
clear l_t_vekp.
read table l_t_vekp with key venum = l_t_vepo-venum.
read pallet
clear l_t_paltr.
read table l_t_paltr with key exidv = l_t_vekp-exidv.
if sy-subrc = 0.
read van
clear l_t_vantr.
read table l_t_vantr
with key zpallet_no = l_t_paltr-zpallet_no.
if sy-subrc = 0.
HU has been loaded to a van that has had the van manifest
printed
else.
if l_t_paltr-zpallet_no in p_palno.
database table not yet updated but HU is loaded
else.
pallet not on van, or van manifest not printed for van
not_last = c_yes.
exit.
endif.
endif.
else.
HU or pallet not loaded
not_last = c_yes.
exit.
endif.
endloop.
if not_last = yes, then the last HU has NOT been loaded therefore
we can exit the looping for this shipment
if not_last = c_yes.
exit.
endif.
endloop.
if not_last = c_yes.
remove shipment from load end range
delete r_ldend where low = w_tknum.
not_last = c_no.
endif.
add 1 to ind.
enddo.
if we have any shipments in the load end range (r_ldend) then submit
update status report
check not r_ldend[] is initial.
submit ztrr_rv56trsl with p_aload = c_yes
with p_cship = c_no
with k_tknum in r_ldend.
endform. " load_end_validate
*----
> TR01+ start
&----
*& Form move_lips_to_table
&----
This form mirrors the move_to_table functionality for items
that have not been packed (i.e. without an entry in VEPO)
----
form move_lips_to_table.
loop at t_lips.
clear t_data_tab.
delivery line items
move-corresponding t_lips to t_data_tab.
sales document line items
clear w_vbup.
read table t_vbup with key vbeln = t_lips-vbeln
posnr = t_lips-posnr
into w_vbup.
move-corresponding w_vbup to t_data_tab.
sales doc header
clear w_vbuk.
read table t_vbuk with key vbeln = t_lips-vbeln
into w_vbuk.
move-corresponding w_vbuk to t_data_tab.
delivery header
clear w_likp.
read table t_likp with key vbeln = t_lips-vbeln
into w_likp.
move-corresponding w_likp to t_data_tab.
append t_data_tab.
endloop.
endform. " move_lips_to_table
*<----
TR01+ end
Reward for the useful help.
Regards,
Anji
2007 Feb 19 12:04 PM
Hi khadhar,
below are the links which are self explanatory for alv hierarchial reports....
http://www.geocities.com/mpioud/Z_ALV_HIERSEQ_LIST.html
http://www.sap-img.com/abap/how-to-use-alv-for-hierarchical-lists.htm
http://www.sap-img.com/abap/line-color-in-alv-example.htm
also check this in se38
BCALV_TEST_HIERSEQ_LIST
hope this helps u a bit,
all the best,
regards,
sampath
mark helpful answers
Message was edited by:
sampath pilla
2007 Feb 19 12:13 PM
hi,
REPORT ZALV2 NO STANDARD PAGE HEADING.
TABLES: VBAK,VBAP.
TYPE-POOLS: SLIS.
TYPE-POOLS: ICON.
***DATA DECLN.
DATA: V_VBELN LIKE VBAK-VBELN,
V_AUART LIKE VBAK-AUART,
V_TABIX LIKE SY-TABIX.
***FIELD CATALOG.
DATA: ITAB_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE,
ITAB_FIELDCAT1 TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE,
WA_FLDCAT TYPE SLIS_FIELDCAT_ALV,
IT_COLOR TYPE SLIS_COLTYPES occurs 0 with header line,
WA_COLOR TYPE SLIS_COLTYPES.
***SORTING
DATA: ITAB_SORT TYPE SLIS_T_SORTINFO_ALV,
WA_SORT TYPE SLIS_SORTINFO_ALV.
***events
DATA: IT_EVENTS TYPE SLIS_T_EVENT WITH HEADER LINE,
***VARIANTS
IT_VARIANT LIKE DISVARIANT OCCURS 0 WITH HEADER LINE.
FOR LAYOUT
DATA: WA_LAYOUT TYPE SLIS_LAYOUT_ALV,
WA_KEYINFO TYPE SLIS_KEYINFO_ALV,
WA_USER TYPE SLIS_EXIT_BY_USER.
DATA : V_REPID TYPE SY-REPID,
V_CALL TYPE C.
***INTERNAL TABLE DECLN.
DATA: BEGIN OF IT_VBAK OCCURS 0,
VBELN LIKE VBAK-VBELN,
AUDAT LIKE VBAK-AUDAT,
AUART LIKE VBAK-AUART,
NETWR LIKE VBAK-NETWR,
EXPAND(1),
END OF IT_VBAK.
DATA: BEGIN OF IT_VBAP OCCURS 0,
VBELN LIKE VBAP-VBELN,
POSNR LIKE VBAP-POSNR,
MATNR LIKE VBAP-MATNR,
PSTYV LIKE VBAP-PSTYV,
CHARG LIKE VBAP-CHARG,
END OF IT_VBAP.
***SELECTION-SCREEN.
SELECTION-SCREEN: BEGIN OF BLOCK B1 WITH FRAME.
SELECT-OPTIONS: S_VBELN FOR VBAK-VBELN.
SELECT-OPTIONS: S_AUART FOR VBAK-AUART.
SELECTION-SCREEN: END OF BLOCK B1.
***AT SELECTION-SCREEN.
AT SELECTION-SCREEN.
IF S_VBELN IS NOT INITIAL.
SELECT SINGLE VBELN
INTO V_VBELN
FROM VBAK
WHERE VBELN IN S_VBELN.
ENDIF.
IF S_AUART IS NOT INITIAL.
SELECT SINGLE AUART
INTO V_AUART
FROM VBAK
WHERE AUART IN S_AUART.
ENDIF.
*****START-OF-SELECTION.
START-OF-SELECTION.
V_REPID = SY-REPID.
PERFORM GET_DATA_VBAK.
PERFORM GET_DATA_VBAP.
***END-OF-SELECTION.
END-OF-SELECTION.
PERFORM GET_FIELCAT.
PERFORM MODIFY_FLDCAT.
PERFORM MOD_LAYOUT.
PERFORM COL_TYPES.
PERFORM SORT_TAB.
PERFORM HIER_DISP.
&----
*& Form GET_DATA_VBAP
&----
text
----
--> p1 text
<-- p2 text
----
FORM GET_DATA_VBAK .
SELECT VBELN
AUDAT
AUART
NETWR FROM VBAK
INTO TABLE IT_VBAK
WHERE VBELN IN S_VBELN
AND AUART IN S_AUART.
ENDFORM. " GET_DATA
&----
*& Form GET_DATA_VBAP
&----
text
----
--> p1 text
<-- p2 text
----
FORM GET_DATA_VBAP .
SELECT VBELN
POSNR
MATNR
PSTYV
CHARG
FROM VBAP
INTO CORRESPONDING FIELDS OF TABLE IT_VBAP
FOR ALL ENTRIES IN IT_VBAK
WHERE VBELN = IT_VBAK-VBELN.
ENDFORM. " GET_DATA_VBAP
&----
*& Form GET_FIELCAT
&----
text
----
--> p1 text
<-- p2 text
----
FORM GET_FIELCAT .
CLEAR WA_FLDCAT.
WA_FLDCAT-FIELDNAME = 'Sales Doc.No.'.
WA_FLDCAT-TABNAME = it_vbap.
WA_FLDCAT-NO_OUT = 'X'.
WA_FLDCAT-NO_SUM = 'X'.
APPEND WA_FLDCAT TO ITAB_FIELDCAT.
CLEAR WA_FLDCAT.
WA_FLDCAT-FIELDNAME = 'Sales Item No.'.
WA_FLDCAT-TABNAME = it_vbap.
WA_FLDCAT-NO_OUT = 'X'.
WA_FLDCAT-NO_SUM = 'X'.
APPEND WA_FLDCAT TO ITAB_FIELDCAT.
*
CLEAR WA_FLDCAT.
WA_FLDCAT-FIELDNAME = 'Material No.'.
WA_FLDCAT-TABNAME = it_vbap.
WA_FIELDCAT-TECH = 'X'.
APPEND WA_FLDCAT TO ITAB_FIELDCAT.
*
CLEAR WA_FLDCAT.
WA_FLDCAT-FIELDNAME = 'PSTYV'.
WA_FLDCAT-TABNAME = it_vbap.
WA_FLDCAT-NO_OUT = 'X'.
APPEND WA_FLDCAT TO ITAB_FIELDCAT.
CLEAR WA_FLDCAT.
WA_FLDCAT-FIELDNAME = 'CHARG'.
WA_FLDCAT-TABNAME = it_vbap.
WA_FLDCAT-NO_OUT = 'X'.
APPEND WA_FLDCAT TO ITAB_FIELDCAT.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
I_PROGRAM_NAME = V_REPID
I_INTERNAL_TABNAME = 'IT_VBAK'
I_STRUCTURE_NAME = VBAK
I_CLIENT_NEVER_DISPLAY = 'X'
I_INCLNAME = V_REPID
I_BYPASSING_BUFFER =
I_BUFFER_ACTIVE =
CHANGING
CT_FIELDCAT = ITAB_FIELDCAT[]
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.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
I_PROGRAM_NAME = SY-REPID
I_INTERNAL_TABNAME = 'IT_VBAP'
I_STRUCTURE_NAME = 'VBAP'
I_CLIENT_NEVER_DISPLAY = 'X'
I_INCLNAME = SY-REPID
I_BYPASSING_BUFFER =
I_BUFFER_ACTIVE =
CHANGING
CT_FIELDCAT = ITAB_FIELDCAT[]
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. " GET_FIELCAT
&----
*& Form HIER_DISP
&----
text
----
--> p1 text
<-- p2 text
----
FORM HIER_DISP .
IT_VARIANT-REPORT = SY-REPID.
SORT IT_VBAK BY VBELN.
SORT IT_VBAP BY VBELN.
CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = SY-REPID
IS_LAYOUT = WA_LAYOUT
IT_FIELDCAT = ITAB_FIELDCAT[]
IT_SORT = ITAB_SORT
IS_VARIANT = IT_VARIANT
IT_EVENTS = IT_EVENTS[]
I_TABNAME_HEADER = 'IT_VBAK'
I_TABNAME_ITEM = 'IT_VBAP'
IS_KEYINFO = WA_KEYINFO
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. " HIER_DISP
&----
*& Form MODIFY_FLDCAT
&----
text
----
--> p1 text
<-- p2 text
----
FORM MODIFY_FLDCAT .
LOOP AT ITAB_FIELDCAT INTO WA_FLDCAT.
IF WA_FLDCAT-FIELDNAME = 'EXPAND'.
IF WA_FLDCAT-TABNAME = 'IT_VBAK'.
WA_FLDCAT-NO_OUT = 'X'.
ENDIF.
ENDIF.
MODIFY ITAB_FIELDCAT FROM WA_FLDCAT.
CLEAR WA_FLDCAT.
ENDLOOP.
ENDFORM. " MODIFY_FLDCAT
&----
*& Form MOD_LAYOUT
&----
text
----
--> p1 text
<-- p2 text
----
FORM MOD_LAYOUT .
WA_LAYOUT-DEFAULT_ITEM = 'X'.
WA_LAYOUT-ZEBRA = 'X'.
WA_LAYOUT-EXPAND_FIELDNAME = 'EXPAND'.
ENDFORM. " MOD_LAYOUT
&----
*& Form SORT_TAB
&----
text
----
--> p1 text
<-- p2 text
----
FORM SORT_TAB .
CLEAR WA_SORT.
WA_SORT-SPOS = '01'.
WA_SORT-FIELDNAME = 'VBELN' .
WA_SORT-TABNAME = 'IT_VBAK'.
WA_SORT-UP = 'X'.
APPEND WA_SORT TO ITAB_SORT.
CLEAR WA_SORT.
WA_SORT-SPOS = '02'.
WA_SORT-FIELDNAME = 'POSNR' .
WA_SORT-TABNAME = 'IT_VBAP'.
WA_SORT-UP = 'X'.
APPEND WA_SORT TO ITAB_SORT.
ENDFORM. " SORT_TAB
&----
*& Form COL_TYPES
&----
text
----
--> p1 text
<-- p2 text
----
FORM COL_TYPES .
clear wa_color.
wa_color-hearowfir-col = '6'.
wa_color-hearownex-col = '5'.
append wa_color to it_color.
ENDFORM. " COL_TYPES
check these too...
https://forums.sdn.sap.com///click.jspa?searchID=1237890&messageID=2781816
do reward if it helps,
priya.