REUSE_ALV_HIERSEQ_LIST_DISPLAY i_interface_check
hello,
I the function "REUSE_ALV_HIERSEQ_LIST_DISPLAY" exists an parameter "i_interface_check" to check the interface.
It doesn´t work, when I use the function "REUSE_ALV_GRID_DISPLAY", but when I use "REUSE_ALV_LIST_DISPLAY" it works.
Has anyone an idea?
Kind regards
Jens
Hi
I am attaching a code which uses both "REUSE_ALV_GRID_DISPLAY and "REUSE_ALV_LIST_DISPLAY
I think it will be helpful if you investigate the code.
tables used -
tables: mkpf,
mseg,
lfa1,
makt.
global hashed tables used
data: begin of wa_mkpf, "header
mblnr like mkpf-mblnr,
mjahr like mkpf-mjahr,
budat like mkpf-budat,
xblnr like mkpf-xblnr,
end of wa_mkpf.
data: ht_mkpf like hashed table of wa_mkpf
with unique key mblnr mjahr
with header line.
data: st_mkpf like standard table of wa_mkpf
with header line.
data: begin of wa_mseg, " line items
mblnr like mseg-mblnr,
mjahr like mseg-mjahr,
zeile like mseg-zeile,
bwart like mseg-bwart,
charg like mseg-charg,
matnr like mseg-matnr,
lifnr like mseg-lifnr,
erfmg like mseg-erfmg,
erfme like mseg-erfme,
end of wa_mseg.
data ht_mseg like hashed table of wa_mseg
with unique key mblnr mjahr zeile
with header line.
data st_mseg like standard table of wa_mseg
with header line.
cache structure for lfa1 records
data: begin of wa_lfa1,
lifnr like lfa1-lifnr,
name1 like lfa1-name1,
end of wa_lfa1.
data ht_lfa1 like hashed table of wa_lfa1
with unique key lifnr
with header line.
cache structure for material related data
data: begin of wa_material,
matnr like makt-matnr,
maktx like makt-maktx,
end of wa_material.
data: ht_material like hashed table of wa_material
with unique key matnr
with header line.
result table
data: begin of wa_lst, "
budat like mkpf-budat,
mblnr like mseg-mblnr,
lifnr like mseg-lifnr,
name1 like lfa1-name1,
xblnr like mkpf-xblnr,
zeile like mseg-zeile,
charg like mseg-charg,
matnr like mseg-matnr,
maktx like makt-maktx,
erfmg like mseg-erfmg,
erfme like mseg-erfme,
mjahr like mseg-mjahr,
end of wa_lst.
data: ht_lst like hashed table of wa_lst
with unique key mblnr mjahr zeile
with header line.
data: begin of wa_lst1, " sumary by material
matnr like mseg-matnr,
maktx like makt-maktx,
erfmg like mseg-erfmg,
erfme like mseg-erfme,
color_line(4) TYPE c, " Line color
color_cell TYPE lvc_t_scol, " Cell color
celltab type LVC_T_STYL,
end of wa_lst1.
data: ht_lst1 like hashed table of wa_lst1
with unique key matnr
with header line.
structures for alv grid display.
itabs
type-pools: slis.
data: it_lst like standard table of wa_lst with header line,
it_fieldcat_lst type slis_t_fieldcat_alv with header line,
it_sort_lst type slis_t_sortinfo_alv,
it_lst1 like standard table of wa_lst1 with header line,
it_fieldcat_lst1 type slis_t_fieldcat_alv with header line,
it_sort_lst1 type slis_t_sortinfo_alv.
structures
data: wa_sort type slis_sortinfo_alv,
ls_layout type slis_layout_alv.
color management.
DATA : wa_color TYPE lvc_s_scol.
Internal table for color management.
DATA : it_color TYPE TABLE OF lvc_s_scol.
itab for input enabling.
DATA: lt_celltab TYPE lvc_t_styl. "
global varialbes
data: g_lines type i.
data: g_repid like sy-repid,
ok_code like sy-ucomm.
selection-screen
"text: Dates:
select-options: so_budat for mkpf-budat default sy-datum.
"text: Material numbers.
select-options: so_matnr for mseg-matnr.
selection-screen uline.
selection-screen skip 1.
"Text: show summary by material.
parameters: gp_bymat as checkbox default ''.
parameters: gp_hier as checkbox default 'X'.
start-of-selection.
perform get_data.
perform show_data.
end-of-selection.
FORM get_data *
form get_data.
select mblnr mjahr budat xblnr
into table ht_mkpf
from mkpf
where budat in so_budat. " make use of std index.
have we retrieved data from mkpf?
describe table ht_mkpf lines g_lines.
if g_lines > 0.
if true then retrieve all related records from mseg.
Doing this way we make sure that the access is by primary key
of mseg.
The reason is that is faster to filter them in memory
than to allow the db server to do it.
select mblnr mjahr zeile bwart charg
matnr lifnr erfmg erfme
into table ht_mseg
from mseg
for all entries in ht_mkpf
where mblnr = ht_mkpf-mblnr
and mjahr = ht_mkpf-mjahr.
endif.
fill t_lst or t_lst1 according to user's choice.
if gp_bymat = ' '.
perform fill_ht_lst.
else.
perform fill_ht_lst1.
endif.
endform.
form fill_ht_lst.
refresh ht_lst.
Example: how to discard unwanted data in an efficient way.
loop at ht_mseg.
filter unwanted data
check ht_mseg-bwart = '101' or ht_mseg-bwart = '901'.
check ht_mseg-matnr in so_matnr.
read header line.
read table ht_mkpf with table key mblnr = ht_mseg-mblnr
mjahr = ht_mseg-mjahr.
clear ht_lst.
* note : this may be faster if you specify field by field.
move-corresponding ht_mkpf to ht_lst.
move-corresponding ht_mseg to ht_lst.
perform read_lfa1 using ht_mseg-lifnr changing ht_lst-name1.
perform read_material using ht_mseg-matnr changing ht_lst-maktx.
insert table ht_lst.
endloop.
endform.
form fill_ht_lst1.
data: colorear.
refresh ht_lst1.
Example: how to discard unwanted data in an efficient way.
hot to simulate a collect in a faster way
loop at ht_mseg.
filter unwanted data
check ht_mseg-bwart = '101' or ht_mseg-bwart = '901'.
check ht_mseg-matnr in so_matnr.
* note : this may be faster if you specify field by field.
read table ht_lst1 with table key matnr = ht_mseg-matnr
transporting erfmg.
if sy-subrc <> 0. " if matnr doesn't exist in sumary table
" insert a new record
clear ht_lst1.
ht_lst1-matnr = ht_mseg-matnr.
perform read_material using ht_mseg-matnr changing ht_lst1-maktx.
ht_lst1-erfmg = ht_mseg-erfmg.
ht_lst1-erfme = ht_mseg-erfme.
if colorear = ''.
colorear = 'X'.
refresh it_color.
ht_lst1-color_cell[] = it_color[].
MOVE 'C410' TO ht_lst1-color_line.
else.
colorear = ' '.
refresh it_color. clear it_color.
MOVE 'MATNR' TO wa_color-fname.
MOVE '6' TO wa_color-color-col.
MOVE '1' TO wa_color-color-int.
MOVE '1' TO wa_color-color-inv.
APPEND wa_color TO it_color.
MOVE 'MAKTX' TO wa_color-fname.
MOVE '3' TO wa_color-color-col.
MOVE '1' TO wa_color-color-int.
MOVE '1' TO wa_color-color-inv.
APPEND wa_color TO it_color.
MOVE 'ERFMG' TO wa_color-fname.
MOVE '5' TO wa_color-color-col.
MOVE '1' TO wa_color-color-int.
MOVE '1' TO wa_color-color-inv.
APPEND wa_color TO it_color.
ht_lst1-color_cell[] = it_color[].
clear ht_lst1-color_line.
endif.
insert table ht_lst1.
else." a record was found.
" collect erfmg. To do so, fill in the unique key and add
" the numeric fields.
ht_lst1-matnr = ht_mseg-matnr.
add ht_mseg-erfmg to ht_lst1-erfmg.
modify table ht_lst1 transporting erfmg.
endif.
endloop.
endform.
implementation of cache for lfa1.
form read_lfa1 using p_lifnr changing p_name1.
read table ht_lfa1 with table key lifnr = p_lifnr
transporting name1.
if sy-subrc <> 0.
clear ht_lfa1.
ht_lfa1-lifnr = p_lifnr.
select single name1
into ht_lfa1-name1
from lfa1
where lifnr = p_lifnr.
if sy-subrc <> 0. ht_lfa1-name1 = 'n/a in lfa1'. endif.
insert table ht_lfa1.
endif.
p_name1 = ht_lfa1-name1.
endform.
implementation of cache for material data
form read_material using p_matnr changing p_maktx.
read table ht_material with table key matnr = p_matnr
transporting maktx.
if sy-subrc <> 0.
ht_material-matnr = p_matnr.
select single maktx into ht_material-maktx
from makt
where spras = sy-langu
and matnr = p_matnr.
if sy-subrc <> 0. ht_material-maktx = 'n/a in makt'. endif.
insert table ht_material.
endif.
p_maktx = ht_material-maktx.
endform.
form show_data.
if gp_hier = 'X'. "no anda.
perform show_hierarchicalALV.
else.
if gp_bymat = ' '.
perform show_ht_lst.
else.
perform show_ht_lst1.
endif.
endif.
endform.
form show_hierarchicalALV.
st_mkpf[] = ht_mkpf[].
st_mseg[] = ht_mseg[].
call function 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
exporting
I_INTERFACE_CHECK = ' '
I_CALLBACK_PROGRAM =
I_CALLBACK_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND = ' '
IS_LAYOUT =
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 =
i_tabname_item =
I_STRUCTURE_NAME_HEADER =
I_STRUCTURE_NAME_ITEM =
is_keyinfo =
IS_PRINT =
IS_REPREP_ID =
I_BUFFER_ACTIVE =
I_BYPASSING_BUFFER =
IMPORTING
E_EXIT_CAUSED_BY_CALLER =
ES_EXIT_CAUSED_BY_USER =
tables
t_outtab_header = st_mkpf
t_outtab_item = st_mseg
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.
form show_ht_lst.
"needed because the FM can't use a hashed table.
it_lst[] = ht_lst[].
perform fill_layout using 'full display'
changing ls_layout.
perform fill_columns_lst.
perform sort_lst.
g_repid = sy-repid.
call function 'REUSE_ALV_GRID_DISPLAY'
exporting
i_callback_program = g_repid
i_callback_pf_status_set = 'SET_PF_STATUS'
is_layout = ls_layout
it_fieldcat = it_fieldcat_lst[]
it_sort = it_sort_lst
tables
t_outtab = it_lst
exceptions
program_error = 1
others = 2.
endform.
form show_ht_lst1.
"needed because the FM can't use a hashed table.
it_lst1[] = ht_lst1[].
perform fill_layout using 'Sumary by matnr'
changing ls_layout.
perform fill_columns_lst1.
perform sort_lst.
g_repid = sy-repid.
call function 'REUSE_ALV_GRID_DISPLAY'
exporting
i_callback_program = g_repid
i_callback_pf_status_set = 'SET_PF_STATUS'
is_layout = ls_layout
it_fieldcat = it_fieldcat_lst1[]
it_sort = it_sort_lst
tables
t_outtab = it_lst1
exceptions
program_error = 1
others = 2.
endform.
form fill_layout using p_window_titlebar
changing cs_layo type slis_layout_alv.
clear cs_layo.
cs_layo-window_titlebar = p_window_titlebar.
cs_layo-edit = 'X'.
cs_layo-edit_mode = space.
MOVE 'COLOR_LINE' TO cs_layo-info_fieldname.
Field that identify cell color in inetrnal table
MOVE 'COLOR_CELL' TO cs_layo-coltab_fieldname.
move 'CELLTAB' TO cs_layo-stylefname.
endform. " armar_layout_stock
form set_pf_status using rt_extab type slis_t_extab.
create a new status
and then select extras -> adjust template -> listviewer
set pf-status 'VISTA'.
endform. "set_pf_status
define add_lst.
clear it_fieldcat_lst.
it_fieldcat_lst-fieldname = &1.
it_fieldcat_lst-outputlen = &2.
it_fieldcat_lst-ddictxt = 'L'.
it_fieldcat_lst-seltext_l = &1.
it_fieldcat_lst-seltext_m = &1.
it_fieldcat_lst-seltext_m = &1.
if &1 = 'MATNR'.
it_fieldcat_lst-emphasize = 'C111'.
endif.
append it_fieldcat_lst.
end-of-definition.
define add_lst1.
clear it_fieldcat_lst.
it_fieldcat_lst1-fieldname = &1.
it_fieldcat_lst1-outputlen = &2.
it_fieldcat_lst1-ddictxt = 'L'.
it_fieldcat_lst1-seltext_l = &1.
it_fieldcat_lst1-seltext_m = &1.
it_fieldcat_lst1-seltext_m = &1.
append it_fieldcat_lst1.
end-of-definition.
form fill_columns_lst.
set columns for output.
refresh it_fieldcat_lst.
add_lst 'BUDAT' 10.
add_lst 'MBLNR' 10.
add_lst 'LIFNR' 10.
add_lst 'NAME1' 35.
add_lst 'XBLNR' 15.
add_lst 'ZEILE' 5.
add_lst 'CHARG' 10.
add_lst 'MATNR' 18.
add_lst 'MAKTX' 30.
add_lst 'ERFMG' 17.
add_lst 'ERFME' 5.
add_lst 'MJAHR' 4.
endform.
form fill_columns_lst1.
set columns for output.
refresh it_fieldcat_lst1.
add_lst1 'MATNR' 18.
add_lst1 'MAKTX' 30.
add_lst1 'ERFMG' 17.
add_lst1 'ERFME' 5..
endform.
Regards
Praneeth
Reward helpful answers
Similar Messages
-
Fields in ALV that is showing FM REUSE_ALV_HIERSEQ_LIST_DISPLAY
Hello:
I have problems with ALV that FM ALV FM <b>REUSE_ALV_HIERSEQ_LIST_DISPLAY </b>is showing.
Problem 1:
I have got a input field (fieldcat-input = 'X') but when this field is modified in ALV (in screen) it is not modified in internal table!.
Problem 2:
When user select or deselect a checkbox in ALV's any rows I need verify some things, but after this, no event is executed where I could set my source code.
Checkbox is a field of the ALV.
CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
EXPORTING
* I_INTERFACE_CHECK = ' '
i_callback_program = g_repid
* I_CALLBACK_PF_STATUS_SET = ' '
<b>I_CALLBACK_USER_COMMAND = 'USER_COMMAND' </b>
is_layout = gs_layout
it_fieldcat = gt_fieldcat[]
* IT_EXCLUDING =
* IT_SPECIAL_GROUPS =
* IT_SORT =
* IT_FILTER =
* IS_SEL_HIDE =
* I_DEFAULT = 'X'
I_SAVE = 'A'
* IS_VARIANT =
IT_EVENTS = d_eventcat
* IT_EVENT_EXIT =
i_tabname_header = 'GT_HEADER'
i_tabname_item = 'GT_ITEM'
* I_STRUCTURE_NAME_HEADER =
* I_STRUCTURE_NAME_ITEM =
is_keyinfo = gs_key
* IS_PRINT =
* IS_REPREP_ID =
* I_BUFFER_ACTIVE =
* I_BYPASSING_BUFFER =
* IMPORTING
* E_EXIT_CAUSED_BY_CALLER =
* ES_EXIT_CAUSED_BY_USER =
TABLES
t_outtab_header = gt_header[]
t_outtab_item = gt_item[]
* 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.
FORM user_command USING r_ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfield.
MESSAGE S398(00) WITH r_ucomm.
CASE r_ucomm.
ENDCASE.
ENDFORM. "user_command
<b>I have tried with 'LIST_MODIFY' event and 'DATA_CHANGED' event too:</b>
d_eventcat-name = 'LIST_MODIFY'.
d_eventcat-form = 'LIST_MODIFY'.
APPEND d_eventca.
d_eventcat-name = 'DATA_CHANGED'.
d_eventcat-form = 'DATA_CHANGED'.
APPEND d_eventca.
<b>Are OK these definitions? :</b>
FORM LIST_MODIFY
USING P_tabname TYPE SLIS_TABNAME
P_index type sy-tabix
P_index_slave type sy-tabix
P_index_sum type sy-tabix.
endform. "LIST_MODIFY
FORM DATA_CHANGED USING rr_data_changed TYPE REF TO
cl_alv_changed_data_protocol.
ENDFORM.
Help me please!. Thank's
JoseIn field catalog pass:
wa_alv_fieldcat-outputlen = p_len
Set p_len as 30.
'FIELD' text-001 '01' 'X' '30' 'L' -
User-command in 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
Hai all,
I am trying to include a checkbox coloum in 'REUSE_ALV_HIERSEQ_LIST_DISPLAY' in edit mode and process the rows which are selected.
i am successful in editing the check box ,but user-command is not working and also the List is not displayed (remains only on the selection screen) if i am uncommenting the exporting parameter
I_CALLBACK_USER_COMMAND = 'F_USER_COMMAND' .
The value of sy-subrc for the FM is 1 . If the above exporting parameter is commented then sy-subrc = 0 .
Please let me know to proceed.I need to process only the rows which are selected / checked
CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = ' '
i_callback_program = report_name
I_CALLBACK_PF_STATUS_SET = ' '
<b>**{ Begin of Changes
I_CALLBACK_USER_COMMAND = ' '
I_CALLBACK_USER_COMMAND = 'F_USER_COMMAND'
**} End of Changes</b>
is_layout = alvlo_stb
it_fieldcat = stb_fields_tb[]
IT_EXCLUDING =
IT_SPECIAL_GROUPS =
IT_SORT =
it_filter = g_t_slis_filt[]
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 = g_f_dflt
i_save = 'A' "alvvr_sav_all
is_variant = alvvr
it_events = alv_evnt_tb_cmpl
IT_EVENT_EXIT =
i_tabname_header = 'ALV_STB'
i_tabname_item = 'G_T_PLPO'
I_STRUCTURE_NAME_HEADER =
I_STRUCTURE_NAME_ITEM =
is_keyinfo = g_f_keyinfo
IS_PRINT =
IS_REPREP_ID =
I_BUFFER_ACTIVE =
I_BYPASSING_BUFFER =
IMPORTING
E_EXIT_CAUSED_BY_CALLER = exit_by_caller
ES_EXIT_CAUSED_BY_USER = exit_by_user
TABLES
t_outtab_header = alv_stb
t_outtab_item = g_t_plpo
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.
MOD0001}
ENDFORM.
FORM F_USER_COMMAND USING r_ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfield.
some operation
ENDFORM.Hai,
I have declared
DATA: report_name LIKE sy-repid,
and also
DATA: F_USER_COMMAND TYPE SY-UCOMM.
in the program.But still i am getting the same problem.
sy-subrc = 1. unable to execute 'REUSE_ALV_HIERSEQ_LIST_DISPLAY' sucessfully -
Hello Experts,
I am having problems using the said FM. Based on my code below, can you please tell
me what am I doing wrong. Hope you can help me guys. Thank you and take care!
[code]
*& Report ZFI_CASH_PROOF_SHEET
*& PROGRAM TYPE : Report
*& RICEF ID : 149
*& TITLE : ZFI_CASH_PROOF_SHEET
*& SAP Module : FI
*& CREATION DATE : 10/24/2007
*& AUTHOR : Aris Hidalgo
*& DESIGNER : Aris Hidalgo
*& DESCRIPTION :
$*********************************************************************
*$ CHANGE HISTORY
*$----
*$ DATE | T-Num | Description | Reference
| | |
$*********************************************************************
REPORT zfi_cash_proof_sheet
NO STANDARD PAGE HEADING
MESSAGE-ID zfi.
Data Dictionary Table/s *
TABLES: t012k.
TYPE-POOLS *
TYPE-POOLS: slis.
SELECTION-SCREEN *
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
SELECT-OPTIONS: s_bukrs FOR t012k-bukrs OBLIGATORY,
s_hbkid FOR t012k-hbkid,
s_hktid FOR t012k-hktid.
PARAMETERS: p_budat TYPE bsak-budat OBLIGATORY.
SELECTION-SCREEN END OF BLOCK b1.
*/ CLASS DEFINITION/S */
CLASS lcl_alv_routines DEFINITION DEFERRED.
CLASS lcl_data_def DEFINITION
CLASS lcl_data_def DEFINITION ABSTRACT.
PUBLIC SECTION.
TYPES: BEGIN OF t_t012k,
bukrs TYPE t012k-bukrs,
hbkid TYPE t012k-hbkid,
hktid TYPE t012k-hktid,
hkont TYPE t012k-hkont,
END OF t_t012k.
TYPES: BEGIN OF t_bsis_bsas,
bukrs TYPE bsis-bukrs,
hkont TYPE bsis-hkont,
belnr TYPE bsis-belnr,
buzei TYPE bsis-buzei,
gjahr TYPE bsis-gjahr,
budat TYPE bsis-budat,
blart TYPE bsis-blart,
dmbtr TYPE bsis-dmbtr,
shkzg TYPE bsis-shkzg,
END OF t_bsis_bsas.
TYPES: BEGIN OF t_bsid_bsad,
bukrs TYPE bsid-bukrs,
belnr TYPE bsid-belnr,
gjahr TYPE bsid-gjahr,
blart TYPE bsid-blart,
buzei TYPE bsid-buzei,
budat TYPE bsid-budat,
dmbtr TYPE bsid-dmbtr,
shkzg TYPE bsid-shkzg,
END OF t_bsid_bsad.
TYPES: BEGIN OF t_cash_in_bank,
bukrs TYPE bsis-bukrs,
hkont TYPE bsis-hkont,
dmbtr TYPE bsis-dmbtr,
END OF t_cash_in_bank.
TYPES: BEGIN OF t_outs_trade_coll,
bukrs TYPE bsis-bukrs,
hkont TYPE bsis-hkont,
one_day TYPE bsis-dmbtr,
two_days TYPE bsis-dmbtr,
more_than_two_days TYPE bsis-dmbtr,
END OF t_outs_trade_coll.
TYPES: BEGIN OF t_zcheck_monitor,
zzbukr TYPE zcheck_monitor-zzbukr,
zhbkid TYPE zcheck_monitor-zhbkid,
zhktid TYPE zcheck_monitor-zhktid,
zubhkt TYPE zcheck_monitor-zubhkt,
zrwbtr TYPE zcheck_monitor-zrwbtr,
zrlsvd TYPE zcheck_monitor-zrlsvd,
zrlsdt TYPE zcheck_monitor-zrlsdt,
END OF t_zcheck_monitor.
TYPES: BEGIN OF t_zcheck_monitor_collect,
zzbukr TYPE zcheck_monitor-zzbukr,
zubhkt TYPE zcheck_monitor-zubhkt,
zrwbtr TYPE zcheck_monitor-zrwbtr,
END OF t_zcheck_monitor_collect.
TYPES: BEGIN OF t_company,
bukrs TYPE t001-bukrs,
butxt TYPE t001-butxt,
END OF t_company.
TYPES: BEGIN OF t_header,
bukrs TYPE t001-bukrs,
butxt TYPE t001-butxt,
hbkid TYPE t012k-hbkid,
END OF t_header.
TYPES: BEGIN OF t_output,
bukrs TYPE bsis-bukrs,
hktid TYPE t012k-hktid,
cash_in_bank TYPE bsis-dmbtr,
one_day TYPE bsis-dmbtr,
two_days TYPE bsis-dmbtr,
more_than_two_days TYPE bsis-dmbtr,
misc_collection TYPE bsis-dmbtr,
outs_rel_checks TYPE bsis-dmbtr,
treas_transactions TYPE bsis-dmbtr,
tot_cash_bal TYPE bsis-dmbtr,
outs_unrel_checks TYPE bsis-dmbtr,
imp_docs_due TYPE bsis-dmbtr,
est_cash_balance TYPE bsis-dmbtr,
END OF t_output.
DATA: gt_t012k TYPE HASHED TABLE OF t_t012k
WITH UNIQUE KEY bukrs hbkid hktid,
gt_bsis TYPE STANDARD TABLE OF t_bsis_bsas,
gt_bsis_dum LIKE gt_bsis,
wa_bsis LIKE LINE OF gt_bsis,
gt_bsas LIKE gt_bsis,
gt_bsis_bsas LIKE gt_bsas,
gt_bsid_bsad TYPE SORTED TABLE OF t_bsid_bsad
WITH NON-UNIQUE KEY bukrs belnr gjahr blart,
gt_bsik LIKE gt_bsid_bsad,
gt_cash_in_bank TYPE HASHED TABLE OF t_cash_in_bank
WITH UNIQUE KEY bukrs hkont,
gt_misc_collection LIKE gt_cash_in_bank,
wa_misc_collection LIKE LINE OF gt_misc_collection,
gt_importation_docs_due LIKE gt_cash_in_bank,
wa_importation_docs_due LIKE LINE OF gt_importation_docs_due,
wa_cash_in_bank LIKE LINE OF gt_cash_in_bank,
gt_outs_trade_coll TYPE HASHED TABLE OF t_outs_trade_coll
WITH UNIQUE KEY bukrs hkont,
wa_outs_trade_coll LIKE LINE OF gt_outs_trade_coll,
gt_zcheck_monitor TYPE STANDARD TABLE OF t_zcheck_monitor,
gt_zcheck_monitor_collect TYPE HASHED TABLE OF t_zcheck_monitor_collect
WITH UNIQUE KEY zzbukr zubhkt,
wa_zcheck_monitor_collect LIKE LINE OF gt_zcheck_monitor_collect,
gt_outs_rel_checks LIKE gt_cash_in_bank,
wa_outs_rel_checks LIKE LINE OF gt_outs_rel_checks,
gt_company TYPE HASHED TABLE OF t_company
WITH UNIQUE KEY bukrs,
wa_company LIKE LINE OF gt_company,
gt_header TYPE STANDARD TABLE OF t_header,
wa_header LIKE LINE OF gt_header,
gt_output TYPE STANDARD TABLE OF t_output,
wa_output LIKE LINE OF gt_output.
ENDCLASS. "lcl_data_def DEFINITION
CLASS lcl_get_data DEFINITION
CLASS lcl_get_data DEFINITION INHERITING FROM lcl_data_def.
PUBLIC SECTION.
METHODS: get_bank_details,
get_gl_balances,
get_cust_items,
get_vend_items,
sum_gl_accounts,
monday_routines
IMPORTING
im_date TYPE bsis-budat
im_bukrs TYPE bsis-bukrs
im_hkont TYPE bsis-hkont
im_budat TYPE bsis-budat
im_dmbtr TYPE bsis-dmbtr,
sunday_routines
IMPORTING
im_date TYPE bsis-budat
im_bukrs TYPE bsis-bukrs
im_hkont TYPE bsis-hkont
im_budat TYPE bsis-budat
im_dmbtr TYPE bsis-dmbtr,
tuesday_routines
IMPORTING
im_date TYPE bsis-budat
im_bukrs TYPE bsis-bukrs
im_hkont TYPE bsis-hkont
im_budat TYPE bsis-budat
im_dmbtr TYPE bsis-dmbtr,
other_days_routines
IMPORTING
im_date TYPE bsis-budat
im_bukrs TYPE bsis-bukrs
im_hkont TYPE bsis-hkont
im_budat TYPE bsis-budat
im_dmbtr TYPE bsis-dmbtr,
difference_in_days
IMPORTING
im_date TYPE bsis-budat
im_budat TYPE bsis-budat
EXPORTING
ex_diff TYPE vtbbewe-atage,
outs_check_released,
process_data.
PRIVATE SECTION.
CONSTANTS: lc_credit TYPE bsis-shkzg VALUE 'H',
lc_debit TYPE bsis-shkzg VALUE 'S',
lc_nt TYPE bsis-blart VALUE 'NT',
lc_gl_zero TYPE bsis-hkont VALUE '+++++++++0',
lc_gl_one TYPE bsis-hkont VALUE '+++++++++1',
lc_gl_three TYPE bsis-hkont VALUE '+++++++++3',
lc_monday TYPE dtresr-weekday VALUE 'Monday',
lc_tuesday TYPE dtresr-weekday VALUE 'Tuesday',
lc_sunday TYPE dtresr-weekday VALUE 'Sunday'.
CONSTANTS: lc_k3 TYPE bsik-blart VALUE 'K3',
lc_k4 TYPE bsik-blart VALUE 'K4',
lc_k5 TYPE bsik-blart VALUE 'K5',
lc_k6 TYPE bsik-blart VALUE 'K6',
lc_k7 TYPE bsik-blart VALUE 'K7',
lc_kb TYPE bsik-blart VALUE 'KB',
lc_kd TYPE bsik-blart VALUE 'KD'.
DATA: lv_hkont TYPE bsis-hkont,
lr_hkont TYPE RANGE OF bsis-hkont,
wa_hkont LIKE LINE OF lr_hkont,
lr_blart TYPE RANGE OF bsik-blart,
wa_blart LIKE LINE OF lr_blart,
lv_hkont_new TYPE bsis-hkont,
lv_hkont_old TYPE bsis-hkont,
lv_date TYPE vtbbewe-atage,
lv_budat TYPE bsis-budat,
lv_day TYPE dtresr-weekday,
o_lcl_alv_routines TYPE REF TO lcl_alv_routines.
ENDCLASS. "lcl_get_data DEFINITION
CLASS alv_routines DEFINITION
CLASS lcl_alv_routines DEFINITION INHERITING FROM lcl_get_data.
PUBLIC SECTION.
DATA: gt_fieldcat TYPE slis_t_fieldcat_alv,
wa_fieldcat LIKE LINE OF gt_fieldcat,
gs_layout TYPE slis_layout_alv,
gs_keyinfo TYPE slis_keyinfo_alv,
gv_repid TYPE syst-repid,
gv_tabname_header TYPE slis_tabname,
gv_tabname_item TYPE slis_tabname.
METHODS: alv_init,
build_fieldcat,
display_data
IMPORTING
im_header LIKE gt_header
im_output LIKE gt_output.
ENDCLASS. "lcl_alv_routines DEFINITION
*/ CLASS IMPLEMENTATION/S */
CLASS lcl_get_data IMPLEMENTATION
CLASS lcl_get_data IMPLEMENTATION.
METHOD get_bank_details.
FIELD-SYMBOLS: <fs_t012k> LIKE LINE OF gt_t012k.
Get bank account/s and their corresponding G/L account/s
SELECT bukrs hbkid
hktid hkont
FROM t012k
INTO TABLE gt_t012k
WHERE bukrs IN s_bukrs
AND hbkid IN s_hbkid
AND hktid IN s_hktid.
IF NOT gt_t012k[] IS INITIAL.
SORT gt_t012k BY bukrs hbkid hktid hkont.
Get company name
SELECT bukrs butxt
FROM t001
INTO TABLE gt_company
FOR ALL ENTRIES IN gt_t012k
WHERE bukrs = gt_t012k-bukrs.
LOOP AT gt_t012k ASSIGNING <fs_t012k>.
wa_hkont-sign = 'I'.
wa_hkont-option = 'EQ'.
wa_hkont-low = <fs_t012k>-hkont.
SHIFT wa_hkont-low LEFT DELETING LEADING space.
APPEND wa_hkont TO lr_hkont.
CLEAR wa_hkont.
lv_hkont_new = <fs_t012k>-hkont.
IF lv_hkont_new <> lv_hkont_old.
CLEAR lv_hkont.
lv_hkont = <fs_t012k>-hkont.
DO 4 TIMES.
ADD 1 TO lv_hkont.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = lv_hkont
IMPORTING
output = lv_hkont.
wa_hkont-sign = 'I'.
wa_hkont-option = 'EQ'.
wa_hkont-low = lv_hkont.
SHIFT wa_hkont-low LEFT DELETING LEADING space.
APPEND wa_hkont TO lr_hkont.
CLEAR wa_hkont.
ENDDO.
ENDIF.
lv_hkont_old = lv_hkont_new.
ENDLOOP.
CALL METHOD me->get_gl_balances.
ENDIF.
ENDMETHOD. "get_bank_details
METHOD get_gl_balances.
Get G/L line items(Open items)
SELECT bukrs hkont belnr
buzei gjahr budat
blart dmbtr shkzg
FROM bsis
INTO TABLE gt_bsis
FOR ALL ENTRIES IN gt_t012k
WHERE bukrs = gt_t012k-bukrs
AND hkont IN lr_hkont
AND budat <= p_budat.
Get G/L line items(Cleared items)
SELECT bukrs hkont belnr
buzei gjahr budat
blart dmbtr shkzg
FROM bsas
INTO TABLE gt_bsas
FOR ALL ENTRIES IN gt_t012k
WHERE bukrs = gt_t012k-bukrs
AND hkont IN lr_hkont
AND budat <= p_budat.
APPEND LINES OF gt_bsis TO gt_bsis_bsas.
APPEND LINES OF gt_bsas TO gt_bsis_bsas.
IF NOT gt_bsis_bsas[] IS INITIAL.
CALL METHOD me->get_cust_items.
CALL METHOD me->get_vend_items.
CALL METHOD me->sum_gl_accounts.
ENDIF.
ENDMETHOD. "get_gl_balances
METHOD get_cust_items.
Get customer line items(Open items)
SELECT bukrs belnr gjahr blart
buzei budat dmbtr shkzg
FROM bsid
INTO TABLE gt_bsid_bsad
FOR ALL ENTRIES IN gt_bsis_bsas
WHERE bukrs = gt_bsis_bsas-bukrs
AND gjahr = gt_bsis_bsas-gjahr
AND belnr = gt_bsis_bsas-belnr.
Get customer line items(Cleared items)
SELECT bukrs belnr gjahr blart
buzei budat dmbtr shkzg
FROM bsad
APPENDING TABLE gt_bsid_bsad
FOR ALL ENTRIES IN gt_bsis_bsas
WHERE bukrs = gt_bsis_bsas-bukrs
AND gjahr = gt_bsis_bsas-gjahr
AND belnr = gt_bsis_bsas-belnr.
ENDMETHOD. "get_cust_items
METHOD get_vend_items.
Get vendor line items(Open items)
SELECT bukrs belnr gjahr blart
buzei budat dmbtr shkzg
FROM bsik
INTO TABLE gt_bsik
FOR ALL ENTRIES IN gt_bsis_bsas
WHERE bukrs = gt_bsis_bsas-bukrs
AND gjahr = gt_bsis_bsas-gjahr
AND belnr = gt_bsis_bsas-belnr.
DEFINE m_blart.
wa_blart-sign = 'I'.
wa_blart-option = 'EQ'.
wa_blart-low = &1.
append wa_blart to lr_blart.
clear wa_blart.
END-OF-DEFINITION.
m_blart lc_k3.
m_blart lc_k4.
m_blart lc_k5.
m_blart lc_k6.
m_blart lc_k7.
m_blart lc_kb.
m_blart lc_kd.
IF NOT gt_bsik[] IS INITIAL AND NOT lr_blart[] IS INITIAL.
DELETE gt_bsik WHERE blart NOT IN lr_blart[].
ENDIF.
ENDMETHOD. "get_vend_items
METHOD sum_gl_accounts.
FIELD-SYMBOLS: <fs_bsis_bsas> LIKE LINE OF gt_bsis_bsas,
<fs_bsis> LIKE LINE OF gt_bsis,
<fs_bsid_bsad> LIKE LINE OF gt_bsid_bsad,
<fs_bsik> LIKE LINE OF gt_bsik,
<fs_outs_rel_checks> LIKE LINE OF gt_outs_rel_checks.
SORT gt_bsis_bsas BY bukrs hkont belnr.
LOOP AT gt_bsis_bsas ASSIGNING <fs_bsis_bsas>.
IF <fs_bsis_bsas>-shkzg = lc_credit. "H
MULTIPLY <fs_bsis_bsas>-dmbtr BY -1.
ENDIF.
*/Routine for cash in bank
IF <fs_bsis_bsas>-hkont CP lc_gl_zero.
MOVE-CORRESPONDING <fs_bsis_bsas> TO wa_cash_in_bank.
COLLECT wa_cash_in_bank INTO gt_cash_in_bank.
CLEAR wa_cash_in_bank.
ENDIF.
*/Routine for miscellaneous collection
IF <fs_bsis_bsas>-blart = lc_nt AND
<fs_bsis_bsas>-shkzg = lc_debit AND
<fs_bsis_bsas>-hkont CP lc_gl_one.
READ TABLE gt_bsid_bsad ASSIGNING <fs_bsid_bsad> WITH TABLE KEY bukrs = <fs_bsis_bsas>-bukrs
belnr = <fs_bsis_bsas>-belnr
gjahr = <fs_bsis_bsas>-gjahr
blart = <fs_bsis_bsas>-blart.
IF sy-subrc = 0.
MOVE-CORRESPONDING <fs_bsis_bsas> TO wa_misc_collection.
COLLECT wa_misc_collection INTO gt_misc_collection.
CLEAR wa_misc_collection.
ENDIF.
ENDIF.
*/Routine for outstanding released checks
IF <fs_bsis_bsas>-hkont CP lc_gl_three AND <fs_bsis_bsas>-shkzg = lc_debit.
MOVE-CORRESPONDING <fs_bsis_bsas> TO wa_outs_rel_checks.
COLLECT wa_outs_rel_checks INTO gt_outs_rel_checks.
CLEAR wa_outs_rel_checks.
ENDIF.
*/Routine for importation docs.due
IF <fs_bsis_bsas>-shkzg = lc_credit.
READ TABLE gt_bsik ASSIGNING <fs_bsik> WITH TABLE KEY bukrs = <fs_bsis_bsas>-bukrs
belnr = <fs_bsis_bsas>-belnr
gjahr = <fs_bsis_bsas>-gjahr
blart = <fs_bsis_bsas>-blart.
IF sy-subrc = 0.
MOVE-CORRESPONDING <fs_bsis_bsas> TO wa_importation_docs_due.
COLLECT wa_importation_docs_due INTO gt_importation_docs_due.
CLEAR gt_importation_docs_due.
ENDIF.
ENDIF.
ENDLOOP.
*/Routine for outstanding trade collection
IF NOT gt_bsis[] IS INITIAL.
DELETE gt_bsis WHERE shkzg = lc_credit.
DELETE gt_bsis WHERE blart = lc_nt.
IF NOT gt_bsis[] IS INITIAL.
lv_budat = p_budat.
CALL FUNCTION 'DATE_TO_DAY'
EXPORTING
date = lv_budat
IMPORTING
weekday = lv_day.
LOOP AT gt_bsis ASSIGNING <fs_bsis>.
IF lv_day = lc_monday.
CALL METHOD me->monday_routines
EXPORTING
im_date = p_budat
im_bukrs = <fs_bsis>-bukrs
im_hkont = <fs_bsis>-hkont
im_budat = <fs_bsis>-budat
im_dmbtr = <fs_bsis>-dmbtr.
ELSEIF lv_day = lc_sunday.
CALL METHOD me->sunday_routines
EXPORTING
im_date = p_budat
im_bukrs = <fs_bsis>-bukrs
im_hkont = <fs_bsis>-hkont
im_budat = <fs_bsis>-budat
im_dmbtr = <fs_bsis>-dmbtr.
ELSEIF lv_day = lc_tuesday.
CALL METHOD me->tuesday_routines
EXPORTING
im_date = p_budat
im_bukrs = <fs_bsis>-bukrs
im_hkont = <fs_bsis>-hkont
im_budat = <fs_bsis>-budat
im_dmbtr = <fs_bsis>-dmbtr.
ELSE.
CALL METHOD me->other_days_routines
EXPORTING
im_date = p_budat
im_bukrs = <fs_bsis>-bukrs
im_hkont = <fs_bsis>-hkont
im_budat = <fs_bsis>-budat
im_dmbtr = <fs_bsis>-dmbtr.
ENDIF.
ENDLOOP.
ENDIF.
ENDIF.
*/Routine for outstanding released check/s
*/this routine will get all records from custom table zcheck_monitor
*/where status is released to vendor
CALL METHOD me->outs_check_released.
IF NOT gt_outs_rel_checks[] IS INITIAL.
LOOP AT gt_outs_rel_checks ASSIGNING <fs_outs_rel_checks>.
CLEAR wa_zcheck_monitor_collect.
READ TABLE gt_zcheck_monitor_collect INTO wa_zcheck_monitor_collect
WITH TABLE KEY zzbukr = <fs_outs_rel_checks>-bukrs
zubhkt = <fs_outs_rel_checks>-hkont.
IF sy-subrc = 0.
<fs_outs_rel_checks>-dmbtr = <fs_outs_rel_checks>-dmbtr - ABS( wa_zcheck_monitor_collect-zrwbtr ).
ENDIF.
ENDLOOP.
ENDIF.
Move records to output table
CALL METHOD me->process_data.
ENDMETHOD. "sum_gl_accounts
METHOD monday_routines.
wa_outs_trade_coll-bukrs = im_bukrs.
wa_outs_trade_coll-hkont = im_hkont.
CLEAR lv_date.
CALL METHOD me->difference_in_days
EXPORTING
im_date = im_date
im_budat = im_budat
IMPORTING
ex_diff = lv_date.
One day
IF lv_date = 3.
wa_outs_trade_coll-one_day = im_dmbtr.
Two days
ELSEIF lv_date = 4.
wa_outs_trade_coll-two_days = im_dmbtr.
More than two days
ELSEIF lv_date > 4.
wa_outs_trade_coll-more_than_two_days = im_dmbtr.
ENDIF.
COLLECT wa_outs_trade_coll INTO gt_outs_trade_coll.
CLEAR wa_outs_trade_coll.
ENDMETHOD. "monday_routines
METHOD sunday_routines.
wa_outs_trade_coll-bukrs = im_bukrs.
wa_outs_trade_coll-hkont = im_hkont.
CLEAR lv_date.
CALL METHOD me->difference_in_days
EXPORTING
im_date = im_date
im_budat = im_budat
IMPORTING
ex_diff = lv_date.
One day
IF lv_date = 2.
wa_outs_trade_coll-one_day = im_dmbtr.
Two days
ELSEIF lv_date = 3.
wa_outs_trade_coll-two_days = im_dmbtr.
More than two days
ELSEIF lv_date > 3.
wa_outs_trade_coll-more_than_two_days = im_dmbtr.
ENDIF.
COLLECT wa_outs_trade_coll INTO gt_outs_trade_coll.
CLEAR wa_outs_trade_coll.
ENDMETHOD. "sunday_routines
METHOD tuesday_routines.
wa_outs_trade_coll-bukrs = im_bukrs.
wa_outs_trade_coll-hkont = im_hkont.
CLEAR lv_date.
CALL METHOD me->difference_in_days
EXPORTING
im_date = im_date
im_budat = im_budat
IMPORTING
ex_diff = lv_date.
One day
IF lv_date = 1.
wa_outs_trade_coll-one_day = im_dmbtr.
Two days
ELSEIF lv_date = 4.
wa_outs_trade_coll-two_days = im_dmbtr.
More than two days
ELSEIF lv_date > 4.
wa_outs_trade_coll-more_than_two_days = im_dmbtr.
ENDIF.
COLLECT wa_outs_trade_coll INTO gt_outs_trade_coll.
CLEAR wa_outs_trade_coll.
ENDMETHOD. "tuesday_routines
METHOD other_days_routines.
wa_outs_trade_coll-bukrs = im_bukrs.
wa_outs_trade_coll-hkont = im_hkont.
CLEAR lv_date.
CALL METHOD me->difference_in_days
EXPORTING
im_date = im_date
im_budat = im_budat
IMPORTING
ex_diff = lv_date.
One day
IF lv_date = 1.
wa_outs_trade_coll-one_day = im_dmbtr.
Two days
ELSEIF lv_date = 2.
wa_outs_trade_coll-two_days = im_dmbtr.
More than two days
ELSEIF lv_date > 3.
wa_outs_trade_coll-more_than_two_days = im_dmbtr.
ENDIF.
COLLECT wa_outs_trade_coll INTO gt_outs_trade_coll.
CLEAR wa_outs_trade_coll.
ENDMETHOD. "other_days_routines
METHOD difference_in_days.
CALL FUNCTION 'FIMA_DAYS_AND_MONTHS_AND_YEARS'
EXPORTING
i_date_from = im_budat
I_KEY_DAY_FROM =
i_date_to = im_date
I_KEY_DAY_TO =
I_FLG_SEPARATE = ' '
IMPORTING
e_days = ex_diff.
E_MONTHS =
E_YEARS =
ENDMETHOD. "difference_in_days
METHOD outs_check_released.
FIELD-SYMBOLS: <fs_zcheck_monitor> LIKE LINE OF gt_zcheck_monitor.
SELECT zzbukr zhbkid zhktid
zubhkt zrwbtr zrlsvd
zrlsdt
FROM zcheck_monitor
INTO TABLE gt_zcheck_monitor
WHERE zrlsvd <> space.
IF NOT gt_zcheck_monitor[] IS INITIAL.
LOOP AT gt_zcheck_monitor ASSIGNING <fs_zcheck_monitor>.
MOVE-CORRESPONDING <fs_zcheck_monitor> TO wa_zcheck_monitor_collect.
COLLECT wa_zcheck_monitor_collect INTO gt_zcheck_monitor_collect.
CLEAR wa_zcheck_monitor_collect.
ENDLOOP.
ENDIF.
ENDMETHOD. "outs_check_released
METHOD process_data.
FIELD-SYMBOLS: <fs_t012k> LIKE LINE OF gt_t012k,
<fs_company> LIKE LINE OF gt_company,
<fs_cash_in_bank> LIKE LINE OF gt_cash_in_bank,
<fs_outs_trade_coll> LIKE LINE OF gt_outs_trade_coll,
<fs_misc_collection> LIKE LINE OF gt_misc_collection,
<fs_outs_rel_checks> LIKE LINE OF gt_outs_rel_checks.
LOOP AT gt_t012k ASSIGNING <fs_t012k>.
READ TABLE gt_company ASSIGNING <fs_company>
WITH TABLE KEY bukrs = <fs_t012k>-bukrs.
IF sy-subrc = 0.
wa_header-bukrs = <fs_company>-bukrs.
wa_header-butxt = <fs_company>-butxt.
wa_header-hbkid = <fs_t012k>-hbkid.
APPEND wa_header TO gt_header.
CLEAR wa_header.
ENDIF.
wa_output-bukrs = <fs_t012k>-bukrs.
wa_output-hktid = <fs_t012k>-hktid.
Move cash in bank
READ TABLE gt_cash_in_bank ASSIGNING <fs_cash_in_bank>
WITH TABLE KEY bukrs = <fs_t012k>-bukrs
hkont = <fs_t012k>-hkont.
IF sy-subrc = 0.
wa_output-cash_in_bank = <fs_cash_in_bank>-dmbtr.
ADD wa_output-cash_in_bank TO wa_output-tot_cash_bal.
ENDIF.
CLEAR lv_hkont.
lv_hkont = <fs_t012k>-hkont.
ADD 1 TO lv_hkont.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = lv_hkont
IMPORTING
output = lv_hkont.
Move outstanding trade collection(Deposit in transit)
READ TABLE gt_outs_trade_coll ASSIGNING <fs_outs_trade_coll>
WITH TABLE KEY bukrs = <fs_t012k>-bukrs
hkont = lv_hkont.
IF sy-subrc = 0.
wa_output-one_day = <fs_outs_trade_coll>-one_day.
ADD wa_output-one_day TO wa_output-tot_cash_bal.
wa_output-two_days = <fs_outs_trade_coll>-two_days.
ADD wa_output-two_days TO wa_output-tot_cash_bal.
wa_output-more_than_two_days = <fs_outs_trade_coll>-more_than_two_days.
ADD wa_output-more_than_two_days TO wa_output-tot_cash_bal.
ENDIF.
Move miscellaneous collection
READ TABLE gt_misc_collection ASSIGNING <fs_misc_collection>
WITH TABLE KEY bukrs = <fs_t012k>-bukrs
hkont = lv_hkont.
IF sy-subrc = 0.
wa_output-misc_collection = <fs_misc_collection>-dmbtr.
ADD wa_output-misc_collection TO wa_output-tot_cash_bal.
ENDIF.
Move outstanding checks released
CLEAR lv_hkont.
lv_hkont = <fs_t012k>-hkont.
ADD 3 TO lv_hkont.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = lv_hkont
IMPORTING
output = lv_hkont.
READ TABLE gt_outs_rel_checks ASSIGNING <fs_outs_rel_checks>
WITH TABLE KEY bukrs = <fs_t012k>-bukrs
hkont = <fs_t012k>-hkont.
IF sy-subrc = 0.
wa_output-outs_rel_checks = <fs_outs_rel_checks>-dmbtr.
ENDIF.
Move outstanding unreleased checks
CLEAR wa_zcheck_monitor_collect.
READ TABLE gt_zcheck_monitor_collect INTO wa_zcheck_monitor_collect
WITH TABLE KEY zzbukr = <fs_t012k>-bukrs
zubhkt = lv_hkont
TRANSPORTING zrwbtr.
IF sy-subrc = 0.
wa_output-outs_unrel_checks = wa_zcheck_monitor_collect-zrwbtr.
ENDIF.
Move importation docs. due
CLEAR wa_importation_docs_due.
READ TABLE gt_importation_docs_due INTO wa_importation_docs_due
WITH TABLE KEY bukrs = <fs_t012k>-bukrs
hkont = <fs_t012k>-hkont
TRANSPORTING dmbtr.
IF sy-subrc = 0.
wa_output-imp_docs_due = wa_importation_docs_due-dmbtr.
ENDIF.
APPEND wa_output TO gt_output.
CLEAR wa_output.
ENDLOOP.
IF NOT gt_output[] IS INITIAL.
CREATE OBJECT o_lcl_alv_routines.
CALL METHOD o_lcl_alv_routines->display_data
EXPORTING
im_header = gt_header
im_output = gt_output.
ENDIF.
ENDMETHOD. "process_data
ENDCLASS. "lcl_get_data IMPLEMENTATION
CLASS alv_routines IMPLEMENTATION
CLASS lcl_alv_routines IMPLEMENTATION.
METHOD alv_init.
gv_repid = sy-repid.
gs_layout-subtotals_text = text-a01.
gs_layout-key_hotspot = 'X'.
gs_layout-expand_fieldname = text-a02.
gs_keyinfo-header01 = text-a03.
gs_keyinfo-item01 = text-a03.
ENDMETHOD. "alv_init
METHOD build_fieldcat.
DEFINE m_fieldcat.
add 1 to wa_fieldcat-col_pos.
wa_fieldcat-fieldname = &1.
wa_fieldcat-tabname = &2.
wa_fieldcat-rollname = &3.
wa_fieldcat-outputlen = &4.
wa_fieldcat-fix_column = &5.
wa_fieldcat-just = &6.
wa_fieldcat-do_sum = &7.
wa_fieldcat-emphasize = &8.
wa_fieldcat-hotspot = &9.
append wa_fieldcat to gt_fieldcat.
clear wa_fieldcat.
END-OF-DEFINITION.
m_fieldcat 'BUKRS' 'gt_output' text-a04 '' '' '' '' '' ''.
m_fieldcat 'HKTID' 'gt_output' text-a05 '' '' '' '' '' ''.
m_fieldcat 'CASH_IN_BANK' 'gt_output' text-a06 '' '' '' '' '' ''.
m_fieldcat 'ONE_DAY' 'gt_output' text-a07 '' '' '' '' '' ''.
m_fieldcat 'TWO_DAYS' 'gt_output' text-a08 '' '' '' '' '' ''.
m_fieldcat 'MORE_THAN_TWO_DAYS' 'gt_output' text-a09 '' '' '' '' '' ''.
m_fieldcat 'MISC_COLLECTION' 'gt_output' text-a10 '' '' '' '' '' ''.
m_fieldcat 'OUTS_REL_CHECKS' 'gt_output' text-a11 '' '' '' '' '' ''.
m_fieldcat 'TREAS_TRANSACTIONS' 'gt_output' text-a12 '' '' '' '' '' ''.
m_fieldcat 'TOT_CASH_BAL' 'gt_output' text-a13 '' '' '' '' '' ''.
m_fieldcat 'TOTS_UNREL_CHECKS' 'gt_output' text-a14 '' '' '' '' '' ''.
m_fieldcat 'IMP_DOCS_DUE' 'gt_output' text-a15 '' '' '' '' '' ''.
m_fieldcat 'EST_CASH_BALANCE' 'gt_output' text-a16 '' '' '' '' '' ''.
ENDMETHOD. "build_fieldcat
METHOD display_data.
CALL METHOD me->alv_init.
CALL METHOD me->build_fieldcat.
gv_tabname_header = 'GT_HEADER'.
gv_tabname_item = 'GT_OUTPUT'.
gt_header[] = im_header[].
gt_output[] = im_output[].
CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = ' '
i_callback_program = gv_repid
I_CALLBACK_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND = ' '
is_layout = gs_layout
it_fieldcat = gt_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 = gv_tabname_header
i_tabname_item = gv_tabname_item
I_STRUCTURE_NAME_HEADER =
I_STRUCTURE_NAME_ITEM =
is_keyinfo = gs_keyinfo
IS_PRINT =
IS_REPREP_ID =
I_BYPASSING_BUFFER =
I_BUFFER_ACTIVE =
IR_SALV_HIERSEQ_ADAPTER =
IT_EXCEPT_QINFO =
I_SUPPRESS_EMPTY_DATA = ABAP_FALSE
IMPORTING
E_EXIT_CAUSED_BY_CALLER =
ES_EXIT_CAUSED_BY_USER =
TABLES
t_outtab_header = gt_header
t_outtab_item = gt_output
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.
ENDMETHOD. "display_data
ENDCLASS. "alv_routines IMPLEMENTATION
START-OF-SELECTION *
START-OF-SELECTION.
DATA: o_lcl_get_data TYPE REF TO lcl_get_data.
CREATE OBJECT o_lcl_get_data.
CALL METHOD o_lcl_get_data->get_bank_details.
[/code]Thanks anyways...
-
Hi,
unable to see output....
Please help me where is the error ..
Thanks in Advance,
kiran.
TABLES:EKKO,EKPO.
TYPE-POOLS:SLIS.
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS: SO_EKORG FOR EKKO-EKORG,
SO_EBELN FOR EKKO-EBELN,
SO_AEDAT FOR EKKO-AEDAT.
PARAMETERS: R1 RADIOBUTTON GROUP RAD1,
R2 RADIOBUTTON GROUP RAD1,
R3 RADIOBUTTON GROUP RAD1.
SELECTION-SCREEN END OF BLOCK B1.
TYPES:BEGIN OF TY_EKKO,
EBELN TYPE EKKO-EBELN,
EKORG TYPE EKKO-EKORG,
AEDAT TYPE EKKO-AEDAT,
LIFNR TYPE EKKO-LIFNR,
END OF TY_EKKO.
TYPES:BEGIN OF TY_EKPO,
EBELP TYPE EKPO-EBELP,
MATNR TYPE EKPO-MATNR,
WERKS TYPE EKPO-WERKS,
TXZ01 TYPE EKPO-TXZ01,
MENGE TYPE EKPO-MENGE,
END OF TY_EKPO.
DATA: IT_EKPO TYPE TABLE OF TY_EKPO,
WA_EKPO TYPE TY_EKPO.
DATA: IT_EKKO TYPE TABLE OF TY_EKKO,
WA_EKKO TYPE TY_EKKO.
DATA: IT_FCAT TYPE SLIS_T_FIELDCAT_ALV,
WA_FCAT TYPE SLIS_FIELDCAT_ALV.
DATA: REPID LIKE SY-REPID,
KEY TYPE SLIS_KEYINFO_ALV.
DATA: G_EKKO TYPE SLIS_TABNAME VALUE 'IT_EKKO',
G_EKPO TYPE SLIS_TABNAME VALUE 'IT_EKPO'.
INITIALIZATION.
REPID = 'ZSAP1_PRAC'.
START-OF-SELECTION.
PERFORM GET_DATA.
PERFORM FIELD_CAT.
PERFORM FM_HIR_DIS.
*& Form GET_DATA
text
--> p1 text
<-- p2 text
FORM GET_DATA .
SELECT EBELN
EKORG
AEDAT
LIFNR
FROM EKKO
INTO TABLE IT_EKKO
WHERE EKORG IN SO_EKORG AND
EBELN IN SO_EBELN AND
AEDAT IN SO_AEDAT.
SELECT EBELP
MATNR
WERKS
TXZ01
MENGE
FROM EKPO
INTO TABLE IT_EKPO
FOR ALL ENTRIES IN IT_EKKO
WHERE EBELN = IT_EKKO-EBELN.
ENDFORM. " GET_DATA
*& Form FIELD_CAT
text
--> p1 text
<-- p2 text
FORM FIELD_CAT .
CLEAR WA_FCAT.
WA_FCAT-TABNAME = 'EKKO'.
WA_FCAT-FIELDNAME = 'EBELN'.
WA_FCAT-COL_POS = '1'.
WA_FCAT-KEY = 'X'.
WA_FCAT-SELTEXT_L = 'PO ORDER NUMBER'.
APPEND WA_FCAT TO IT_FCAT.
CLEAR WA_FCAT.
WA_FCAT-TABNAME = 'EKKO'.
WA_FCAT-FIELDNAME = 'EKORG'.
WA_FCAT-COL_POS = '2'.
WA_FCAT-SELTEXT_L = 'PO ORG'.
APPEND WA_FCAT TO IT_FCAT.
CLEAR WA_FCAT.
WA_FCAT-TABNAME = 'EKKO'.
WA_FCAT-FIELDNAME = 'AEDAT'.
WA_FCAT-COL_POS = '3'.
WA_FCAT-SELTEXT_L = 'DATE'.
APPEND WA_FCAT TO IT_FCAT.
CLEAR WA_FCAT.
WA_FCAT-TABNAME = 'EKKO'.
WA_FCAT-FIELDNAME = 'LIFNR'.
WA_FCAT-COL_POS = '4'.
WA_FCAT-SELTEXT_L = 'VENDOR'.
APPEND WA_FCAT TO IT_FCAT.
CLEAR WA_FCAT.
WA_FCAT-TABNAME = 'EKKO'.
WA_FCAT-FIELDNAME = 'NAME1'.
WA_FCAT-COL_POS = '5'.
WA_FCAT-SELTEXT_L = 'NAME OF VENDOR'.
APPEND WA_FCAT TO IT_FCAT.
CLEAR WA_FCAT.
WA_FCAT-TABNAME = 'EKPO'.
WA_FCAT-FIELDNAME = 'EBELP'.
WA_FCAT-COL_POS = '6'.
WA_FCAT-KEY = 'X'.
WA_FCAT-SELTEXT_L = 'ITEMS'.
APPEND WA_FCAT TO IT_FCAT.
CLEAR WA_FCAT.
WA_FCAT-TABNAME = 'EKPO'.
WA_FCAT-FIELDNAME = 'MATNR'.
WA_FCAT-COL_POS = '7'.
WA_FCAT-SELTEXT_L = 'MATERIAL'.
APPEND WA_FCAT TO IT_FCAT.
CLEAR WA_FCAT.
WA_FCAT-TABNAME = 'EKPO'.
WA_FCAT-FIELDNAME = 'WERKS'.
WA_FCAT-COL_POS = '8'.
WA_FCAT-SELTEXT_L = 'PLANT'.
APPEND WA_FCAT TO IT_FCAT.
CLEAR WA_FCAT.
WA_FCAT-TABNAME = 'EKPO'.
WA_FCAT-FIELDNAME = 'TXZ01'.
WA_FCAT-COL_POS = '9'.
WA_FCAT-SELTEXT_L = 'SHORT TEXT'.
APPEND WA_FCAT TO IT_FCAT.
CLEAR WA_FCAT.
WA_FCAT-TABNAME = 'EKPO'.
WA_FCAT-FIELDNAME = 'MENGE'.
WA_FCAT-COL_POS = '10'.
WA_FCAT-SELTEXT_L = 'QUANTITY'.
APPEND WA_FCAT TO IT_FCAT.
CLEAR WA_FCAT.
ENDFORM. " FIELD_CAT
*& Form FM_HIR_DIS
text
--> p1 text
<-- p2 text
FORM FM_HIR_DIS .
CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = ' '
I_CALLBACK_PROGRAM = REPID
I_CALLBACK_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND = ' '
IS_LAYOUT =
IT_FIELDCAT = IT_FCAT
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 = 'G_EKKO'
I_TABNAME_ITEM = 'G_EKPO'
I_STRUCTURE_NAME_HEADER =
I_STRUCTURE_NAME_ITEM =
IS_KEYINFO = KEY
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_EKKO
T_OUTTAB_ITEM = IT_EKPO
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. " FM_HIR_DIS
Edited by: Kiran B on May 14, 2009 8:50 AMTABLES:EKKO,EKPO.
TYPE-POOLS:SLIS.
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS: SO_EKORG FOR EKKO-EKORG,
SO_EBELN FOR EKKO-EBELN,
SO_AEDAT FOR EKKO-AEDAT.
PARAMETERS: R1 RADIOBUTTON GROUP RAD1,
R2 RADIOBUTTON GROUP RAD1,
R3 RADIOBUTTON GROUP RAD1.
SELECTION-SCREEN END OF BLOCK B1.
TYPES:BEGIN OF TY_EKKO,
EBELN TYPE EKKO-EBELN,
EKORG TYPE EKKO-EKORG,
AEDAT TYPE EKKO-AEDAT,
LIFNR TYPE EKKO-LIFNR,
END OF TY_EKKO.
TYPES:BEGIN OF TY_EKPO,
EBELP TYPE EKPO-EBELP,
MATNR TYPE EKPO-MATNR,
WERKS TYPE EKPO-WERKS,
TXZ01 TYPE EKPO-TXZ01,
MENGE TYPE EKPO-MENGE,
END OF TY_EKPO.
DATA: IT_EKPO TYPE TABLE OF TY_EKPO,
WA_EKPO TYPE TY_EKPO.
DATA: IT_EKKO TYPE TABLE OF TY_EKKO,
WA_EKKO TYPE TY_EKKO.
DATA: IT_FCAT TYPE SLIS_T_FIELDCAT_ALV,
WA_FCAT TYPE SLIS_FIELDCAT_ALV.
DATA: REPID LIKE SY-REPID,
KEY TYPE SLIS_KEYINFO_ALV.
DATA: G_EKKO TYPE SLIS_TABNAME VALUE 'IT_EKKO',
G_EKPO TYPE SLIS_TABNAME VALUE 'IT_EKPO'.
INITIALIZATION.
REPID = 'ZSAP1_PRAC'.
START-OF-SELECTION.
PERFORM GET_DATA.
PERFORM FIELD_CAT.
PERFORM FM_HIR_DIS.
*& Form GET_DATA
* text
* --> p1 text
* <-- p2 text
FORM GET_DATA .
SELECT EBELN
EKORG
AEDAT
LIFNR
FROM EKKO
INTO TABLE IT_EKKO
WHERE EKORG IN SO_EKORG AND
EBELN IN SO_EBELN AND
AEDAT IN SO_AEDAT.
SELECT EBELP
MATNR
WERKS
TXZ01
MENGE
FROM EKPO
INTO TABLE IT_EKPO
FOR ALL ENTRIES IN IT_EKKO
WHERE EBELN = IT_EKKO-EBELN.
ENDFORM. " GET_DATA
*& Form FIELD_CAT
* text
* --> p1 text
* <-- p2 text
FORM FIELD_CAT .
CLEAR WA_FCAT.
WA_FCAT-TABNAME = 'EKKO'.
WA_FCAT-FIELDNAME = 'EBELN'.
WA_FCAT-COL_POS = '1'.
WA_FCAT-KEY = 'X'.
WA_FCAT-SELTEXT_L = 'PO ORDER NUMBER'.
APPEND WA_FCAT TO IT_FCAT.
CLEAR WA_FCAT.
WA_FCAT-TABNAME = 'EKKO'.
WA_FCAT-FIELDNAME = 'EKORG'.
WA_FCAT-COL_POS = '2'.
WA_FCAT-SELTEXT_L = 'PO ORG'.
APPEND WA_FCAT TO IT_FCAT.
CLEAR WA_FCAT.
WA_FCAT-TABNAME = 'EKKO'.
WA_FCAT-FIELDNAME = 'AEDAT'.
WA_FCAT-COL_POS = '3'.
WA_FCAT-SELTEXT_L = 'DATE'.
APPEND WA_FCAT TO IT_FCAT.
CLEAR WA_FCAT.
WA_FCAT-TABNAME = 'EKKO'.
WA_FCAT-FIELDNAME = 'LIFNR'.
WA_FCAT-COL_POS = '4'.
WA_FCAT-SELTEXT_L = 'VENDOR'.
APPEND WA_FCAT TO IT_FCAT.
CLEAR WA_FCAT.
WA_FCAT-TABNAME = 'EKKO'.
WA_FCAT-FIELDNAME = 'NAME1'.
WA_FCAT-COL_POS = '5'.
WA_FCAT-SELTEXT_L = 'NAME OF VENDOR'.
APPEND WA_FCAT TO IT_FCAT.
CLEAR WA_FCAT.
WA_FCAT-TABNAME = 'EKPO'.
WA_FCAT-FIELDNAME = 'EBELP'.
WA_FCAT-COL_POS = '6'.
WA_FCAT-KEY = 'X'.
WA_FCAT-SELTEXT_L = 'ITEMS'.
APPEND WA_FCAT TO IT_FCAT.
CLEAR WA_FCAT.
WA_FCAT-TABNAME = 'EKPO'.
WA_FCAT-FIELDNAME = 'MATNR'.
WA_FCAT-COL_POS = '7'.
WA_FCAT-SELTEXT_L = 'MATERIAL'.
APPEND WA_FCAT TO IT_FCAT.
CLEAR WA_FCAT.
WA_FCAT-TABNAME = 'EKPO'.
WA_FCAT-FIELDNAME = 'WERKS'.
WA_FCAT-COL_POS = '8'.
WA_FCAT-SELTEXT_L = 'PLANT'.
APPEND WA_FCAT TO IT_FCAT.
CLEAR WA_FCAT.
WA_FCAT-TABNAME = 'EKPO'.
WA_FCAT-FIELDNAME = 'TXZ01'.
WA_FCAT-COL_POS = '9'.
WA_FCAT-SELTEXT_L = 'SHORT TEXT'.
APPEND WA_FCAT TO IT_FCAT.
CLEAR WA_FCAT.
WA_FCAT-TABNAME = 'EKPO'.
WA_FCAT-FIELDNAME = 'MENGE'.
WA_FCAT-COL_POS = '10'.
WA_FCAT-SELTEXT_L = 'QUANTITY'.
APPEND WA_FCAT TO IT_FCAT.
CLEAR WA_FCAT.
ENDFORM. " FIELD_CAT
*& Form FM_HIR_DIS
* text
* --> p1 text
* <-- p2 text
FORM FM_HIR_DIS .
CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
EXPORTING
* I_INTERFACE_CHECK = ' '
I_CALLBACK_PROGRAM = REPID
* I_CALLBACK_PF_STATUS_SET = ' '
* I_CALLBACK_USER_COMMAND = ' '
* IS_LAYOUT =
IT_FIELDCAT = IT_FCAT
* 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 = 'G_EKKO'
I_TABNAME_ITEM = 'G_EKPO'
* I_STRUCTURE_NAME_HEADER =
* I_STRUCTURE_NAME_ITEM =
IS_KEYINFO = KEY
* 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_EKKO
T_OUTTAB_ITEM = IT_EKPO
* 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. " FM_HIR_DIS -
REUSE_ALV_HIERSEQ_LIST_DISPLAY and new Page
Hi all,
I am using FM REUSE_ALV_HIERSEQ_LIST_DISPLAY to display ALV List. Now, i want to print a New page on every Header record , is it possible?if Yes, then how?
thanks in advance.Hi VIpin,
Please find the code and function module ..
*& Report Z8AS_PROGRAM_ALV
REPORT Z8AS_PROGRAM_ALV.
TABLES : STKO,STPO,MAKT,MAST.
TYPE-POOLS : SLIS.
DATA : BEGIN OF ISTKO OCCURS 0,
STLNR LIKE STKO-STLNR,
DATUV LIKE STKO-DATUV,
MATNR LIKE MAST-MATNR,
BMENG LIKE STKO-BMENG,
BMEIN LIKE STKO-BMEIN,
END OF ISTKO.
DATA : BEGIN OF ISTPO OCCURS 0,
STLNR LIKE STPO-STLNR,
IDNRK LIKE STPO-IDNRK,
MENGE LIKE STPO-MENGE,
MEINS LIKE STPO-MEINS,
MAKTX LIKE MAKT-MAKTX,
END OF ISTPO.
DATA : BEGIN OF IMAKT OCCURS 0,
MATNR LIKE MAKT-MATNR,
MAKTX LIKE MAKT-MAKTX,
END OF IMAKT.
DATA : BEGIN OF IMAST OCCURS 0,
MATNR LIKE MAST-MATNR,
STLNR LIKE MAST-STLNR,
END OF IMAST.
DATA : IFIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
WFIELDCAT TYPE SLIS_FIELDCAT_ALV,
ILAYOUT TYPE SLIS_LAYOUT_ALV,
IKEYINFO TYPE SLIS_KEYINFO_ALV,
IEVENT TYPE SLIS_T_EVENT,
WEVENT TYPE SLIS_ALV_EVENT.
PARAMETERS : P_NUM TYPE I .
START-OF-SELECTION.
PERFORM GETDATA.
PERFORM GETHEADERMAT.
PERFORM GET_MAT_DESC.
PERFORM BUILD_FCAT_HEAD.
PERFORM BUILD_FCAT_ITEM.
PERFORM BUILD_KEYINFO.
PERFORM BUILD_EVENT_TAB.
PERFORM BUILD_LAYOUT.
PERFORM DISPLAY_DATA.
*& Form GETDATA
text
--> p1 text
<-- p2 text
FORM GETDATA .
SELECT STLNR DATUV BMENG BMEIN INTO CORRESPONDING FIELDS OF TABLE ISTKO
FROM STKO UP TO P_NUM ROWS.
IF NOT ISTKO[] IS INITIAL.
SELECT STLNR IDNRK MENGE MEINS INTO TABLE ISTPO FROM STPO FOR ALL ENTRIES IN ISTKO
WHERE STLNR = ISTKO-STLNR AND POSTP = 'L'.
ENDIF.
ENDFORM. " GETDATA
*& Form BUILD_FCAT_HEAD
text
--> p1 text
<-- p2 text
FORM BUILD_FCAT_HEAD .
WFIELDCAT-TABNAME = 'ISTKO'.
WFIELDCAT-FIELDNAME = 'STLNR'.
WFIELDCAT-SELTEXT_L = 'BOM no'.
WFIELDCAT-OUTPUTLEN = 15.
APPEND WFIELDCAT TO IFIELDCAT.
CLEAR WFIELDCAT.
WFIELDCAT-TABNAME = 'ISTKO'.
WFIELDCAT-FIELDNAME = 'DATUV'.
WFIELDCAT-SELTEXT_L = 'BOM date'.
WFIELDCAT-OUTPUTLEN = 15.
APPEND WFIELDCAT TO IFIELDCAT.
CLEAR WFIELDCAT.
WFIELDCAT-TABNAME = 'ISTKO'.
WFIELDCAT-FIELDNAME = 'MATNR'.
WFIELDCAT-SELTEXT_L = 'Header mat no'.
WFIELDCAT-OUTPUTLEN = 18.
APPEND WFIELDCAT TO IFIELDCAT.
CLEAR WFIELDCAT.
WFIELDCAT-TABNAME = 'ISTKO'.
WFIELDCAT-FIELDNAME = 'BMENG'.
WFIELDCAT-SELTEXT_L = 'Base qty'.
WFIELDCAT-OUTPUTLEN = 15.
APPEND WFIELDCAT TO IFIELDCAT.
CLEAR WFIELDCAT.
WFIELDCAT-TABNAME = 'ISTKO'.
WFIELDCAT-FIELDNAME = 'BMEIN'.
WFIELDCAT-SELTEXT_L = 'UOM'.
WFIELDCAT-OUTPUTLEN = 3.
APPEND WFIELDCAT TO IFIELDCAT.
CLEAR WFIELDCAT.
ENDFORM. " BUILD_FCAT_HEAD
*& Form BUILD_FCAT_ITEM
text
--> p1 text
<-- p2 text
FORM BUILD_FCAT_ITEM .
WFIELDCAT-TABNAME = 'ISTPO'.
WFIELDCAT-FIELDNAME = 'IDNRK'.
WFIELDCAT-SELTEXT_L = 'Material no'.
*WFIELDCAT-HOTSPOT = 'X'.
WFIELDCAT-OUTPUTLEN = 18.
APPEND WFIELDCAT TO IFIELDCAT.
CLEAR WFIELDCAT.
WFIELDCAT-TABNAME = 'ISTPO'.
WFIELDCAT-FIELDNAME = 'MAKTX'.
WFIELDCAT-SELTEXT_L = 'Material desc'.
WFIELDCAT-JUST = 'C'.
WFIELDCAT-OUTPUTLEN = 30.
APPEND WFIELDCAT TO IFIELDCAT.
CLEAR WFIELDCAT.
WFIELDCAT-TABNAME = 'ISTPO'.
WFIELDCAT-FIELDNAME = 'MENGE'.
WFIELDCAT-SELTEXT_L = 'Item qty'.
WFIELDCAT-OUTPUTLEN = 15.
APPEND WFIELDCAT TO IFIELDCAT.
CLEAR WFIELDCAT.
WFIELDCAT-TABNAME = 'ISTPO'.
WFIELDCAT-FIELDNAME = 'MEINS'.
WFIELDCAT-SELTEXT_L = 'UOM'.
WFIELDCAT-OUTPUTLEN = 3.
APPEND WFIELDCAT TO IFIELDCAT.
CLEAR WFIELDCAT.
ENDFORM. " BUILD_FCAT_ITEM
*& Form BUILD_KEYINFO
text
--> p1 text
<-- p2 text
FORM BUILD_KEYINFO .
IKEYINFO-HEADER01 = 'STLNR'.
IKEYINFO-ITEM01 = 'STLNR'.
ENDFORM. " BUILD_KEYINFO
*& Form DISPLAY_DATA
text
--> p1 text
<-- p2 text
FORM DISPLAY_DATA .
CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = ' '
I_CALLBACK_PROGRAM = SY-REPID
I_CALLBACK_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND = 'USER_COM'
IS_LAYOUT = ILAYOUT
IT_FIELDCAT = IFIELDCAT[]
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 = IEVENT[]
IT_EVENT_EXIT =
I_TABNAME_HEADER = 'ISTKO'
I_TABNAME_ITEM = 'ISTPO'
I_STRUCTURE_NAME_HEADER =
I_STRUCTURE_NAME_ITEM =
IS_KEYINFO = IKEYINFO
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 = ISTKO
T_OUTTAB_ITEM = ISTPO
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. " DISPLAY_DATA
*& Form GET_MAT_DESC
text
--> p1 text
<-- p2 text
FORM GET_MAT_DESC .
IF NOT ISTPO[] IS INITIAL.
SELECT MATNR MAKTX INTO TABLE IMAKT FROM MAKT FOR ALL ENTRIES IN ISTPO
WHERE MATNR = ISTPO-IDNRK.
ENDIF.
LOOP AT ISTPO.
READ TABLE IMAKT WITH KEY MATNR = ISTPO-IDNRK.
IF SY-SUBRC = 0.
ISTPO-MAKTX = IMAKT-MAKTX.
ENDIF.
MODIFY ISTPO.
ENDLOOP.
ENDFORM. " GET_MAT_DESC
*& Form BUILD_LAYOUT
text
--> p1 text
<-- p2 text
FORM BUILD_LAYOUT .
ILAYOUT-ZEBRA = 'X'.
ILAYOUT-COLWIDTH_OPTIMIZE = 'X'.
ENDFORM. " BUILD_LAYOUT
*FORM USER_COM USING PUCOM LIKE SY-UCOMM PSELFIELD TYPE SLIS_SELFIELD.
*CASE PUCOM.
*WHEN '&IC1'.
SET PARAMETER ID 'MAT' FIELD PSELFIELD-VALUE.
CALL TRANSACTION 'MM03' AND SKIP FIRST SCREEN.
*ENDCASE.
*ENDFORM.
*& Form BUILD_EVENT_TAB
text
--> p1 text
<-- p2 text
FORM BUILD_EVENT_TAB .
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
I_LIST_TYPE = 0
IMPORTING
ET_EVENTS = IEVENT
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 IEVENT INTO WEVENT WITH KEY NAME = 'TOP_OF_PAGE'.
IF SY-SUBRC = 0.
WEVENT-FORM = 'TOPOFPAGE'.
MODIFY IEVENT FROM WEVENT INDEX SY-TABIX.
ENDIF.
ENDFORM. " BUILD_EVENT_TAB
*& Form TOPOFPAGE
text
FORM TOPOFPAGE.
DATA : ILISTHEAD TYPE SLIS_T_LISTHEADER,
WLISTHEAD TYPE SLIS_LISTHEADER.
WLISTHEAD-INFO = 'Its a test hierarchical sequential alv dispaly'.
WLISTHEAD-TYP = 'H'.
APPEND WLISTHEAD TO ILISTHEAD.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
IT_LIST_COMMENTARY = ILISTHEAD
I_LOGO = ''
I_END_OF_LIST_GRID =
ENDFORM.
*& Form GETHEADERMAT
text
--> p1 text
<-- p2 text
FORM GETHEADERMAT .
IF NOT ISTKO[] IS INITIAL.
SELECT MATNR STLNR INTO TABLE IMAST FROM MAST FOR ALL ENTRIES IN ISTKO
WHERE STLNR = ISTKO-STLNR.
ENDIF.
LOOP AT ISTKO.
READ TABLE IMAST WITH KEY STLNR = ISTKO-STLNR.
IF SY-SUBRC = 0.
ISTKO-MATNR = IMAST-MATNR.
ENDIF.
MODIFY ISTKO.
ENDLOOP.
ENDFORM. " GETHEADERMAT
What more you can do is go to that function module in se37 , and inside that function module you can use At New
command , like at new matnr or ebeln .
Reward points if helpful
Regards,
Amber S
Message was edited by:
Amber Soni -
Hi All,
I am working with REUSE_ALV_HIERSEQ_LIST_DISPLAY function module to diaplay hierarchial list. Now my requirement is to color particular cells in the output based on condition. Can any one help me in this regard.
Thanks and Regards,
Srinadh.hi ,
try this..
* FIELD CATALOG
DATA : it_field TYPE slis_t_fieldcat_alv, "internal table for field catalog
wa_field TYPE slis_fieldcat_alv. "work area for field catalog
* FOR LAYOUT OF ALV GRID
DATA : wa_layout TYPE slis_layout_alv. "work area for layout design
*& Form SET_LAYOUT
* SUB-ROUTINE SET_LAYOUT IS USED TO SET THE DISPLAY OF THE
* ALV GRID LINES IN ALTERNATIVE COLOURS
FORM set_layout .
wa_layout-zebra = 'X'.
ENDFORM. " SET_LAYOUT
*& Form ALV_DISPLAY
* SUB-ROUTINE ALV_DISPLAY IS USED TO SET THE PARAMETERS
* FOR THE FUNCTION MODULE REUSE_ALV_GRID_DISPLAY
* AND PASS THE INTERNAL TABLE EXISTING THE RECORDS TO BE
* DISPLAYED IN THE GRID FORMAT
FORM alv_display .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
* I_INTERFACE_CHECK = ' '
* I_BYPASSING_BUFFER = ' '
* I_BUFFER_ACTIVE = ' '
i_callback_program = 'SY-REPID '
* I_CALLBACK_PF_STATUS_SET = ' '
* I_CALLBACK_USER_COMMAND = ' '
* I_CALLBACK_TOP_OF_PAGE = ' '
* I_CALLBACK_HTML_TOP_OF_PAGE = ' '
* I_CALLBACK_HTML_END_OF_LIST = ' '
* I_STRUCTURE_NAME =
* I_BACKGROUND_ID = ' '
* I_GRID_TITLE =
* I_GRID_SETTINGS =
is_layout = wa_layout
it_fieldcat = it_field
* IT_EXCLUDING =
* IT_SPECIAL_GROUPS =
* IT_SORT =
* IT_FILTER =
* IS_SEL_HIDE =
* I_DEFAULT = 'X'
* I_SAVE = ' '
* IS_VARIANT =
* IT_EVENTS =
* IT_EVENT_EXIT =
* IS_PRINT =
* IS_REPREP_ID =
* I_SCREEN_START_COLUMN = 0
* I_SCREEN_START_LINE = 0
* I_SCREEN_END_COLUMN = 0
* I_SCREEN_END_LINE = 0
* I_HTML_HEIGHT_TOP = 0
* I_HTML_HEIGHT_END = 0
* IT_ALV_GRAPHICS =
* IT_HYPERLINK =
* IT_ADD_FIELDCAT =
* IT_EXCEPT_QINFO =
* IR_SALV_FULLSCREEN_ADAPTER =
* IMPORTING
* E_EXIT_CAUSED_BY_CALLER =
* ES_EXIT_CAUSED_BY_USER =
TABLES
t_outtab = it_final
* 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. "alv_display
regards
Ritesh J -
Taking tooo much time when using FM REUSE_ALV_HIERSEQ_LIST_DISPLAY
Hi Guys,
I using FM REUSE_ALV_HIERSEQ_LIST_DISPLAY in my report ,
In my internal table more than 200000 reords are there when was displaying it , taking tooooo much time plz advice me how to over come it
Thanks,
Prasad.Hi
In select stetements it is fetching valus very faslty
afetr that passing those values to
fallowing FM it was taking tooo much time for display
CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = ' '
i_callback_program = repid
I_CALLBACK_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND = ' '
IS_LAYOUT =
it_fieldcat = i_fieldcat
IT_EXCLUDING =
IT_SPECIAL_GROUPS =
it_sort = sort_info[]
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 = hdr_tab_name
i_tabname_item = item_tab_name
I_STRUCTURE_NAME_HEADER =
I_STRUCTURE_NAME_ITEM =
is_keyinfo = key_info
IS_PRINT =
IS_REPREP_ID =
I_BYPASSING_BUFFER =
I_BUFFER_ACTIVE =
IR_SALV_HIERSEQ_ADAPTER =
IT_EXCEPT_QINFO =
I_SUPPRESS_EMPTY_DATA = ABAP_FALSE
IMPORTING
E_EXIT_CAUSED_BY_CALLER =
ES_EXIT_CAUSED_BY_USER =
TABLES
t_outtab_header = it_header
t_outtab_item = it_item.
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.
any inputs plz.......
*is *it* possible hierarchical list using reuse_alv_list_display FM -
Hello Experts,
I am having problems using the said FM. It says MOVE_TO_LIT_NOTALLOWED_NODATA. Below is my
code:
CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
EXPORTING
* I_INTERFACE_CHECK = ' '
i_callback_program = gv_repid
* I_CALLBACK_PF_STATUS_SET = ' '
* I_CALLBACK_USER_COMMAND = ' '
is_layout = gs_layout
it_fieldcat = gt_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 = gv_tabname_header
i_tabname_item = gv_tabname_item
* I_STRUCTURE_NAME_HEADER =
* I_STRUCTURE_NAME_ITEM =
is_keyinfo = gs_keyinfo
* IS_PRINT =
* IS_REPREP_ID =
* I_BYPASSING_BUFFER =
* I_BUFFER_ACTIVE =
* IR_SALV_HIERSEQ_ADAPTER =
* IT_EXCEPT_QINFO =
* I_SUPPRESS_EMPTY_DATA = ABAP_FALSE
* IMPORTING
* E_EXIT_CAUSED_BY_CALLER =
* ES_EXIT_CAUSED_BY_USER =
TABLES
t_outtab_header = im_header
t_outtab_item = im_output
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.
Hope you can help me guys. Thank you and take care!...
-
USER_COMMAND in the 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
HAI Experts ,
Can anyone pls give me a sample code which displays some operation using USER_COMMAND in the 'REUSE_ALV_HIERSEQ_LIST_DISPLAY' .
Any small sample program will be helpful.
Regards,
Devendranhi
Check this code:
REPORT Z_RE_ALV_JERARQUIA .
*****TABLAS
TABLES : MARA, MAKT.
****TIPOS
TYPE-POOLS: SLIS.
****TABLAS INTERNAS
DATA: IT_MARA LIKE MARA OCCURS 0 WITH HEADER LINE,
WA_MARA LIKE LINE OF IT_MARA ,
BEGIN OF IT_HEADER OCCURS 0,
TIPO LIKE MARA-MTART,
END OF IT_HEADER,
BEGIN OF IT_ITEM OCCURS 0,
TIPO LIKE MARA-MTART,
MATERIAL LIKE MARA-MATNR,
MATKL LIKE MARA-MATKL,
MEINS LIKE MARA-MEINS,
MAKTX LIKE MAKT-MAKTX,
END OF IT_ITEM.
*****ALV
DATA: IT_KEYINFO type SLIS_KEYINFO_ALV OCCURS 0 WITH HEADER LINE,
G_REPID LIKE SY-REPID,
IT_LAYOUT TYPE SLIS_LAYOUT_ALV,
IT_FIELD TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE,
IT_EVENTS TYPE SLIS_T_EVENT WITH HEADER LINE,
IT_LIST_TOP_OF_PAGE TYPE SLIS_T_LISTHEADER,
IT_LIST_END_OF_PAGE TYPE SLIS_T_LISTHEADER,
IT_SORT TYPE SLIS_T_SORTINFO_ALV WITH HEADER LINE,
IT_FILTER TYPE SLIS_T_FILTER_ALV WITH HEADER LINE,
GT_SP_GROUP TYPE SLIS_T_SP_GROUP_ALV,
ls_event type slis_alv_event,
LS_LINE TYPE slis_listheader.
*****VARIABLES
DATA: TEXT(60).
****CONSTANTES
CONSTANTS:
GC_FORMNAME_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE 'TOP_OF_PAGE',
GC_FORMNAME_END_OF_PAGE TYPE SLIS_FORMNAME VALUE 'END_OF_PAGE'.
****INITIALIZATION
INITIALIZATION.
G_REPID = SY-REPID.
IT_LAYOUT-ZEBRA = 'X'.
IT_LAYOUT-no_hotspot = ' '.
IT_layout-colwidth_optimize = 'X'.
****START OF SELECTION
START-OF-SELECTION.
SELECT-OPTIONS: TIPO FOR MARA-MTART OBLIGATORY.
SELECT *
FROM MARA
INTO TABLE IT_MARA
WHERE MTART IN TIPO.
IF NOT IT_MARA[] IS INITIAL.
PERFORM FO_PROCESAR.
PERFORM FO_KEY_INFO.
PERFORM FO_IMPRIMIR_CABECERA USING IT_LIST_TOP_OF_PAGE[].
PERFORM FO_SORT.
PERFORM FO_FIELDCAT.
PERFORM FO_FILTRAR.
PERFORM FO_EVENTOS USING IT_events[].
PERFORM FO_MOSTRAR_ALV_JER.
ELSE.
MESSAGE S000(SU) WITH TEXT-001.
ENDIF.
*& Form FO_PROCESAR
FORM FO_PROCESAR.
SORT IT_MARA BY MTART ASCENDING.
LOOP AT IT_MARA.
MOVE-CORRESPONDING IT_MARA TO WA_MARA.
MOVE WA_MARA-MTART TO IT_HEADER-TIPO.
APPEND IT_HEADER.
MOVE: IT_MARA-MTART TO IT_ITEM-TIPO,
IT_MARA-MATNR TO IT_ITEM-MATERIAL,
IT_MARA-MATKL TO IT_ITEM-MATKL,
IT_MARA-MEINS TO IT_ITEM-MEINS.
SELECT SINGLE MAKTX INTO IT_ITEM-MAKTX
FROM MAKT
WHERE MATNR EQ IT_MARA-MATNR
AND SPRAS EQ 'S'.
APPEND IT_ITEM.
CLEAR: IT_MARA, WA_MARA, IT_ITEM, IT_HEADER.
ENDLOOP.
SORT IT_HEADER BY TIPO ASCENDING.
DELETE ADJACENT DUPLICATES FROM IT_HEADER COMPARING TIPO.
ENDFORM. " FO_PROCESAR
*& Form FO_MOSTRAR_ALV_JER
FORM FO_MOSTRAR_ALV_JER.
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 = 'USER_COMMAND'
IS_LAYOUT = IT_LAYOUT
IT_FIELDCAT = IT_FIELD[]
IT_EXCLUDING =
IT_SPECIAL_GROUPS =
IT_SORT = IT_SORT[]
IT_FILTER = IT_FILTER[]
IS_SEL_HIDE =
I_SCREEN_START_COLUMN = 10
I_SCREEN_START_LINE = 5
I_SCREEN_END_COLUMN = 45
I_SCREEN_END_LINE = 30
I_DEFAULT = 'X'
I_SAVE = 'X'
IS_VARIANT =
IT_EVENTS = 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 = IT_KEYINFO
IS_PRINT =
IS_REPREP_ID =
I_BUFFER_ACTIVE =
I_BYPASSING_BUFFER =
IMPORTING
E_EXIT_CAUSED_BY_CALLER =
ES_EXIT_CAUSED_BY_USER =
TABLES
T_OUTTAB_HEADER = IT_HEADER
T_OUTTAB_ITEM = IT_ITEM
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. " FO_MOSTRAR_ALV_JER
*& Form FO_KEY_INFO
FORM FO_KEY_INFO.
REFRESH IT_KEYINFO. CLEAR IT_KEYINFO.
IT_KEYINFO-header01 = 'TIPO'.
IT_KEYINFO-item01 = 'TIPO'.
APPEND IT_KEYINFO.
ENDFORM. " FO_KEY_INFO
*& Form FO_IMPRIMIR_CABECERA
FORM FO_IMPRIMIR_CABECERA USING TEXTO_REPORT TYPE SLIS_T_LISTHEADER.
CLEAR: LS_line, text.
LS_line-typ = 'H'.
WRITE: sy-title TO text.
LS_line-info = text.
APPEND LS_line TO TEXTO_REPORT.
CLEAR: LS_line, text.
LS_line-typ = 'A'.
WRITE: 'Fecha de Ejecución:' to text,
sy-DATUM TO text+20(20).
LS_line-info = text.
APPEND LS_line TO TEXTO_REPORT.
CLEAR: LS_line, text.
LS_line-typ = 'A'.
WRITE: 'Usuario:' to text,
sy-uname TO text+20(20).
LS_line-info = text.
APPEND LS_line TO TEXTO_REPORT.
CLEAR LS_LINE.
APPEND LS_line TO TEXTO_REPORT.
ENDFORM. " FO_IMPRIMIR_CABECERA
*& Form FO_SORT
FORM FO_SORT.
IT_SORT-FIELDNAME = 'TIPO'.
IT_SORT-TABNAME = 'IT_HEADER'.
IT_SORT-GROUP = 'X'.
IT_SORT-UP = 'X'.
IT_SORT-DOWN = ' '.
IT_SORT-SUBTOT = ' '.
APPEND IT_SORT. CLEAR IT_SORT.
ENDFORM. " FO_SORT
*& Form FO_FIELDCAT
FORM FO_FIELDCAT.
CLEAR IT_FIELD.
IT_FIELD-TABNAME = 'IT_ITEM'.
IT_FIELD-FIELDNAME = 'TIPO'.
IT_FIELD-COL_POS = '1'.
IT_FIELD-JUST = 'L'.
IT_FIELD-SELTEXT_L = 'Tipo Material'.
IT_FIELD-KEY = 'X'.
APPEND IT_FIELD.
CLEAR IT_FIELD.
IT_FIELD-TABNAME = 'IT_ITEM'.
IT_FIELD-FIELDNAME = 'MATERIAL'.
IT_FIELD-COL_POS = '2'.
IT_FIELD-JUST = 'L'.
IT_FIELD-SELTEXT_L = 'Codigo Material'.
APPEND IT_FIELD.
CLEAR IT_FIELD.
IT_FIELD-TABNAME = 'IT_ITEM'.
IT_FIELD-FIELDNAME = 'MATKL'.
IT_FIELD-COL_POS = '3'.
IT_FIELD-JUST = 'L'.
IT_FIELD-SELTEXT_L = 'Grupo De Articulos'.
APPEND IT_FIELD.
CLEAR IT_FIELD.
IT_FIELD-TABNAME = 'IT_ITEM'.
IT_FIELD-FIELDNAME = 'MEINS'.
IT_FIELD-COL_POS = '4'.
IT_FIELD-JUST = 'L'.
IT_FIELD-SELTEXT_L = 'Uni. Med. Base'.
APPEND IT_FIELD.
CLEAR IT_FIELD.
IT_FIELD-TABNAME = 'IT_ITEM'.
IT_FIELD-FIELDNAME = 'MAKTX'.
IT_FIELD-COL_POS = '5'.
IT_FIELD-JUST = 'L'.
IT_FIELD-outputlen = '40'.
IT_FIELD-SELTEXT_L = 'Descriptivo'.
APPEND IT_FIELD.
ENDFORM. " FO_FIELDCAT
*& Form FO_EVENTOS
FORM FO_EVENTOS USING PIT_EVENTS type slis_t_event.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
I_LIST_TYPE = 0
IMPORTING
ET_EVENTS = PIT_EVENTS
EXCEPTIONS
LIST_TYPE_WRONG = 1
OTHERS = 2.
read table PIT_EVENTS with key name = SLIS_EV_TOP_OF_PAGE
into ls_event.
if sy-subrc = 0.
move gc_formname_top_of_page to ls_event-form.
append ls_event to pIT_EVENTS.
endif.
CLEAR LS_EVENT.
ENDFORM. " FO_EVENTOS
*& FORM top_of_page *
FORM TOP_OF_PAGE.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
i_logo = 'ZLOGO_GRUPO_POLAR'
IT_LIST_COMMENTARY = IT_LIST_TOP_OF_PAGE.
ENDFORM. "TOP_OF_PAGE
*& Form FO_FILTRAR
FORM FO_FILTRAR.
*IT_FILTER-FIELDNAME = 'TIPO'.
*IT_FILTER-TABNAME = 'IT_HEADER'.
*APPEND IT_FILTER. CLEAR IT_FILTER.
ENDFORM. " FO_FILTRAR
*& Form USER_COMMAND
FORM USER_COMMAND USING ucomm LIKE sy-ucomm
selfield TYPE slis_selfield.
READ TABLE IT_ITEM INDEX SELFIELD-TABINDEX.
IF SY-SUBRC EQ 0.
ENDIF.
ENDFORM. " USER_COMMAND
Regards
Gregory -
Dynamic ALV using REUSE_ALV_HIERSEQ_LIST_DISPLAY
Hi All,
My requirement is to display a dynamic output table using REUSE_ALV_HIERSEQ_LIST_DISPLAY.
I was able to successfully display the dynamic output in grid display using REUSE_ALV_GRID_DISPLAY. But when I try to display the hierarchial list, then only the T_OUTTAB_HEADER data is getting displayed. The T_OUTTAB_ITEM is not getting displayed.
I am creating the dynamic table using
CALL METHOD CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE
EXPORTING
IT_FIELDCATALOG = I_FIELDCAT_DYN
IMPORTING
EP_TABLE = I_DYNTABLE
ALV Display:
CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = G_INTERFACE_CHECK
I_CALLBACK_PROGRAM = ALV_REPID
I_CALLBACK_PF_STATUS_SET = 'SET_STATUS'
I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
IS_LAYOUT = ALV_LAYOUT
IS_PRINT = ALV_PRINT
IT_FIELDCAT = FC_HIER[]
I_DEFAULT = 'X'
I_SAVE = 'A'
IS_VARIANT = ALV_VARIANT
IT_EVENTS = GT_EVENTS[]
I_TABNAME_HEADER = 'HEADER'
I_TABNAME_ITEM = 'LIST'
IS_KEYINFO = ALV_KEYINFO
TABLES
T_OUTTAB_HEADER = HEADER[]
T_OUTTAB_ITEM = <I_FS_DYNOUT>
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2.
Any pointers in this regard will be helpful. Also any existing code for dynamic ALV for grid display, will be helpful.
Thanks & Regards,
Sonali.Hi All,
Thanks for your inputs.
All those demo programs are for displaying static output table. I need to display dynamic internal table.
Also the table name LIST / <I_FS_DYNOUT> does not make a difference.
Actually there is an existing tcode MB51. In this report first there is a list display, then when u click on detail button, then there is a grid display.
I had to modify this report to add some more columns.
So I made a copy and added few more columns to the output table dynamically.
now when I pass data for list display to REUSE_ALV_HIERSEQ_LIST_DISPLAY, then my list display shows only header data. And when I click on u201Cdetailsu201Dbutton, then the grid display that comes, shows all the data. So the grid display is displaying the dynamic output table contents correctly.
But the same output table isnt getting displayed in list display.
Any pointers?
Thanks & Regards,
Sonali Gupta. -
Subtotal for line item in REUSE_ALV_HIERSEQ_LIST_DISPLAY
Hi Abapers,
Is it possible to have subtotal functionality for line item for
REUSE_ALV_HIERSEQ_LIST_DISPLAY.
when i select particular line item and press subtotal button
system displaying information mesage
"Subtotals cannot be calculated using item
characteristics"
Even when i executed standard hie program same message displaying for line item.
please provide any sample code for subtotal for line item .
regards,
Hari priyajust copy the program and execute
*& Report Z_HIERSEQ_REP2 *
*& author : ramesh.k *
*& title : hierseq list in alv format *
REPORT z_hierseq_rep2 MESSAGE-ID zrae.
TYPE-POOLS : slis.
*structure declarations
*structure for likp
TYPES : BEGIN OF ty_likp,
vbeln TYPE vbeln_vl,
vkorg TYPE vkorg,
END OF ty_likp.
*structure for lips
TYPES : BEGIN OF ty_lips,
vbeln TYPE vbeln_vl,
posnr TYPE posnr_vl,
matnr TYPE matnr,
matkl TYPE matkl,
ntgew TYPE ntgew_15,
END OF ty_lips.
*internal table declarations
DATA : t_likp TYPE STANDARD TABLE OF ty_likp INITIAL SIZE 0,
t_lips TYPE STANDARD TABLE OF ty_lips INITIAL SIZE 0.
DATA : t_fieldcat TYPE slis_t_fieldcat_alv,
t_sortinfo TYPE slis_t_sortinfo_alv,
i_events TYPE slis_t_event.
*workareas
DATA : w_likp TYPE ty_likp,
w_lips TYPE ty_lips,
w_fieldcat TYPE slis_fieldcat_alv,
w_keyinfo TYPE slis_keyinfo_alv,
w_sortinfo TYPE slis_sortinfo_alv,
W_event TYPE slis_alv_event ,
sub_text type slis_subtot_text.
*global declarations.
DATA : g_vbeln like likp-vbeln.
*selection-screen declarations
SELECTION-SCREEN BEGIN OF BLOCK blk1 WITH FRAME.
SELECT-OPTIONS : s_vbeln FOR g_vbeln.
SELECTION-SCREEN END OF BLOCK blk1.
AT SELECTION-SCREEN.
SELECT SINGLE
vbeln
FROM likp
INTO (w_likp-vbeln)
WHERE vbeln IN s_vbeln.
IF sy-subrc NE 0.
MESSAGE i001 WITH 'vbeln not found'.
ENDIF.
START-OF-SELECTION.
get_data_likp
PERFORM sub_getdata_likp.
get_data_lips
PERFORM sub_getdata_lips.
fieldcatlog_build
PERFORM build_fieldcatlog.
*SORTINFO FOR SUBTOTALS
PERFORM get_sortinfo.
*KEYINFORMATION
PERFORM get_keyinfo.
*LIST DISPLAY
PERFORM alv_list_display.
*& Form sub_getdata_likp
extracting the data from likp.
--> p1 text
<-- p2 text
FORM sub_getdata_likp .
SELECT vbeln
vkorg
FROM likp
INTO TABLE t_likp
WHERE vbeln IN s_vbeln.
ENDFORM. " sub_getdata_likp
*& Form sub_getdata_lips
extracting data from lips.
--> p1 text
<-- p2 text
FORM sub_getdata_lips .
SELECT vbeln
posnr
matnr
matkl
ntgew
FROM lips
INTO TABLE t_lips
FOR ALL ENTRIES IN t_likp
WHERE vbeln = t_likp-vbeln.
ENDFORM. " sub_getdata_lips
*& Form build_fieldcatlog
text
--> p1 text
<-- p2 text
FORM build_fieldcatlog .
*FIELDCATLOG FOR HEADER TABLE
PERFORM build_fieldcatlog1 USING :
'1' 'VBELN' 'DELIVERY NO' 'T_LIKP' ' ' ' ' ' ',
'2' 'VKORG' 'GROUP' 'T_LIKP' ' ' ' ' ' ',
*FIELDCATLOAG FOR ITEM TABLE
'1' 'POSNR' 'ITEM NO' 'T_LIPS' ' ' ' ' ' ',
'2' 'MATNR' 'MAT NO' 'T_LIPS' ' ' ' ' ' ',
'3' 'MATKL' 'GROUP' 'T_LIPS' ' ' ' ' ' ',
'4' 'NTGEW' 'QUAN' 'T_LIPS' 'X' 'X' 'X'.
ENDFORM. " build_fieldcatlog
*& Form build_fieldcatlog1
text
-->P_0185 text
-->P_0186 text
-->P_0187 text
-->P_0188 text
FORM build_fieldcatlog1 USING
pcol TYPE char2
pfldname TYPE char8
pseltext TYPE char20
ptabname TYPE char10
psum TYPE char10
PQUAN TYPE CHAR15
PSUBTOTAL TYPE CHAR40.
w_fieldcat-col_pos = pcol.
w_fieldcat-fieldname = pfldname.
w_fieldcat-seltext_m = pseltext.
w_fieldcat-tabname = ptabname.
w_fieldcat-do_sum = psum.
W_FIELDCAT-qfieldname = PQUAN.
W_FIELDCAT-subtotals_text = PSUBTOTAL.
APPEND w_fieldcat TO t_fieldcat.
ENDFORM. " build_fieldcatlog1
*& Form GET_KEYINFO
text
--> p1 text
<-- p2 text
FORM get_keyinfo .
w_keyinfo-header01 = 'VBELN'.
w_keyinfo-item01 = 'VBELN'.
ENDFORM. " GET_KEYINFO
*& Form ALV_LIST_DISPLAY
text
FORM alv_list_display .
DATA : S_REPID TYPE SY-REPID.
S_REPID = SY-REPID.
DATA W_LAYOUT TYPE SLIS_LAYOUT_ALV.
W_LAYOUT-totals_text = 'G.TOTAL'.
W_LAYOUT-subtotals_text = 'SUBTOTAL_TEXT'.
*FORM subtotal_text CHANGING p_total TYPE any
p_subtot_text TYPE slis_subtot_text.
p_subtot_text-criteria = 'VBELN'.
*p_subtot_text-max_len = 40.
*p_subtot_text-display_text_for_subtotal
*= 'SUBTOTAL'.
**ENDIF.
*ENDFORM.
CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = ' '
i_callback_program = S_REPID
I_CALLBACK_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND = ' '
IS_LAYOUT = W_LAYOUT
it_fieldcat = t_fieldcat
IT_EXCLUDING =
IT_SPECIAL_GROUPS =
it_sort = t_sortinfo
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 = 'X'
IS_VARIANT =
IT_EVENTS = i_eventS
IT_EVENT_EXIT =
i_tabname_header = 'T_LIKP'
i_tabname_item = 'T_LIPS'
I_STRUCTURE_NAME_HEADER =
I_STRUCTURE_NAME_ITEM =
is_keyinfo = w_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 = t_likp
t_outtab_item = t_lips
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. " ALV_LIST_DISPLAY
*& Form GET_SORTINFO
text
--> p1 text
<-- p2 text
FORM get_sortinfo .
w_sortinfo-fieldname = 'VBELN'.
w_sortinfo-tabname = 'T_LIKP'.
W_SORTINFO-group = TEXT-001.
w_sortinfo-subtot = 'X'.
APPEND w_sortinfo TO t_sortinfo.
ENDFORM. " GET_SORTINFO -
Items are not displayed --- REUSE_ALV_HIERSEQ_LIST_DISPLAY
Hi experts,
i'm stuck in this weird problem.
Items (it_items) are not displayed in table. I've cheked with debugger and it_items contains lines.
Thanks in advance.
REPORT z_hier.
TYPE-POOLS: slis.
DATA: fieldcatalog TYPE slis_t_fieldcat_alv.
DATA: it_header LIKE STANDARD TABLE OF zvend_header WITH HEADER LINE,
it_items LIKE STANDARD TABLE OF zvend_items WITH HEADER LINE,
g_tabname_header TYPE slis_tabname,
g_tabname_item TYPE slis_tabname,
gs_keyinfo TYPE slis_keyinfo_alv.
PARAMETERS: lifnr LIKE lfa1-lifnr.
INITIALIZATION.
CLEAR gs_keyinfo.
gs_keyinfo-header01 = 'LIFNR'.
gs_keyinfo-item01 = 'IDNLF'.
g_tabname_header = 'it_header'.
g_tabname_item = 'it_items'.
START-OF-SELECTION.
PERFORM retrieve_data.
END-OF-SELECTION.
PERFORM build_fieldcatalog.
PERFORM display_list.
FORM build_fieldcatalog.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
* I_PROGRAM_NAME =
i_internal_tabname = g_tabname_header
i_structure_name = 'ZVEND_HEADER'
i_client_never_display = 'X'
* I_INCLNAME =
* I_BYPASSING_BUFFER =
* I_BUFFER_ACTIVE =
CHANGING
ct_fieldcat = fieldcatalog
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 =
i_internal_tabname = g_tabname_item
i_structure_name = 'ZVEND_ITEMS'
i_client_never_display = 'X'
* I_INCLNAME =
* I_BYPASSING_BUFFER =
* I_BUFFER_ACTIVE =
CHANGING
ct_fieldcat = fieldcatalog
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. "build_fieldcatalogHi Dan M.,
Please follow this...
CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
EXPORTING
i_callback_program = w_repid
I_CALLBACK_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND = ' '
is_layout = wa_layout
it_fieldcat = i_fieldcat
IT_EXCLUDING =
IT_SPECIAL_GROUPS =
IT_SORT = I_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 = i_event
IT_EVENT_EXIT =
i_tabname_header = 'i_ekpo' <----
Pass here header table name
i_tabname_item = 'i_eket' <----
pass here item table name
I_STRUCTURE_NAME_HEADER =
I_STRUCTURE_NAME_ITEM =
is_keyinfo = wa_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 = i_ekpo -<<----
Pass here header internal table
t_outtab_item = i_eket <<----
Pass here item internl table
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2
for wa_keyinfo:
You need to use common fields between header & item.
for ex:
wa_keyinfo-header01 = 'EBELN'.
wa_keyinfo-item01 = 'EBELN'.
wa_keyinfo-header02 = 'EBELP'.
wa_keyinfo-item02 = 'EBELP'.
Hope this can solve your problems.
Regards,
Tutun -
Need a key field in REUSE_ALV_HIERSEQ_LIST_DISPLAY output
Hi all.
i have report to display the output with help of ,REUSE_ALV_HIERSEQ_LIST_DISPLAY' function module.
i have a scenario to download the output in a excel sheet where we can filter the output.
so i need to add a key field in the alv output.
it can be a simple index field where first header and item data have index 1
second header and item data have index 2
and so on
so that after downloading it in excel sheet we can filter the data based on this key field
can any one tell me the solution for the problem.
Thanks in advance.Set the Key fields in Internal table
1) Create PF-Status.
2) Create a Button for download Name the Button %PC.
It will automatically Give you popup to save the list to Excel.
Regards,
Gurpreet -
How to select a color of cell in REUSE_ALV_HIERSEQ_LIST_DISPLAY
Hi.
I need to select a color of a cell in REUSE_ALV_HIERSEQ_LIST_DISPLAY.
I have found an example, but
It shows how to select a color of sell in REUSE_ALV_LIST_DISPLAY.
Can you give me an example of code?
Thanks.Here ia a simple example of the method how to paint a cell / line / column using REUSE_ALV_HIERSEQ_LIST_DISPLAY function.
Programm: zalv_hierseq_color
Paint a line, a colomn, or a cell
using REUSE_ALV_HIERSEQ_LIST_DISPLAY
Victor Stupin, Russia 2009
REPORT zalv_hierseq_color.
TABLES: spfli.
TYPE-POOLS: slis.
SELECTION-SCREEN BEGIN OF BLOCK rad1.
PARAMETERS:
p_row TYPE i,
p_col TYPE i.
SELECTION-SCREEN SKIP.
SELECTION-SCREEN ULINE.
SELECTION-SCREEN COMMENT /1(50) comm1.
SELECTION-SCREEN COMMENT /1(50) comm2.
SELECTION-SCREEN COMMENT /1(50) comm3.
SELECTION-SCREEN END OF BLOCK rad1.
INITIALIZATION.
comm1 = 'Paint a line: fill ONLY p_row (p_col is empty)'.
comm2 = 'Paint a colomn: fill ONLY p_col (r_row is empty)'.
comm3 = 'Paint a cell: fill P_COL and R_ROW'.
DATA:
t_fieldcat TYPE slis_t_fieldcat_alv,
fs_fieldcat LIKE LINE OF t_fieldcat,
fs_layout TYPE slis_layout_alv ,
w_color(4) ,
w_row TYPE i,
w_fieldname(20),
w_prog TYPE sy-repid.
DATA:
BEGIN OF t_spfli OCCURS 0,
color(4),
checkbox ,
cell TYPE slis_t_specialcol_alv,
carrid TYPE spfli-carrid,
connid TYPE spfli-connid,
cityfrom TYPE spfli-cityfrom,
cityto TYPE spfli-cityto,
distance TYPE spfli-distance,
keyln TYPE int4,
box TYPE char1,
lineno TYPE int4,
END OF t_spfli.
DATA:
fs_cell LIKE LINE OF t_spfli-cell.
DATA: gt_item LIKE TABLE OF t_spfli WITH HEADER LINE,
gt_header LIKE TABLE OF t_spfli WITH HEADER LINE,
gs_keyinfo TYPE slis_keyinfo_alv.
START-OF-SELECTION.
SELECT *
FROM spfli
INTO CORRESPONDING FIELDS OF TABLE t_spfli.
fs_fieldcat-row_pos = 1.
fs_fieldcat-col_pos = 1.
fs_fieldcat-tabname = 'GT_HEADER'.
fs_fieldcat-fieldname = 'CARRID'.
fs_fieldcat-ref_tabname = 'SPFLI'.
fs_fieldcat-key = 'X'.
fs_fieldcat-hotspot = 'X'.
APPEND fs_fieldcat TO t_fieldcat.
CLEAR fs_fieldcat .
fs_fieldcat-row_pos = 1.
fs_fieldcat-col_pos = 2.
fs_fieldcat-tabname = 'GT_HEADER'.
fs_fieldcat-fieldname = 'CONNID'.
fs_fieldcat-ref_tabname = 'SPFLI'.
fs_fieldcat-key = 'X'.
fs_fieldcat-hotspot = 'X'.
APPEND fs_fieldcat TO t_fieldcat.
CLEAR fs_fieldcat .
fs_fieldcat-row_pos = 1.
fs_fieldcat-col_pos = 3.
fs_fieldcat-tabname = 'GT_HEADER'.
fs_fieldcat-fieldname = 'DISTANCE'.
fs_fieldcat-key = ' '.
fs_fieldcat-edit = 'X'.
APPEND fs_fieldcat TO t_fieldcat.
CLEAR fs_fieldcat.
fs_fieldcat-row_pos = 1.
fs_fieldcat-col_pos = 4.
fs_fieldcat-tabname = 'GT_HEADER'.
fs_fieldcat-fieldname = 'CITYFROM'.
fs_fieldcat-ref_tabname = 'SPFLI'.
fs_fieldcat-key = ' '.
APPEND fs_fieldcat TO t_fieldcat.
CLEAR fs_fieldcat .
fs_fieldcat-row_pos = 1.
fs_fieldcat-col_pos = 5.
fs_fieldcat-tabname = 'GT_ITEM'.
fs_fieldcat-fieldname = 'CARRID'.
fs_fieldcat-ref_tabname = 'SPFLI'.
fs_fieldcat-key = 'X'.
fs_fieldcat-hotspot = 'X'.
APPEND fs_fieldcat TO t_fieldcat.
CLEAR fs_fieldcat .
fs_fieldcat-row_pos = 1.
fs_fieldcat-col_pos = 6.
fs_fieldcat-tabname = 'GT_ITEM'.
fs_fieldcat-fieldname = 'CONNID'.
fs_fieldcat-ref_tabname = 'SPFLI'.
fs_fieldcat-key = 'X'.
fs_fieldcat-hotspot = 'X'.
APPEND fs_fieldcat TO t_fieldcat.
CLEAR fs_fieldcat.
fs_fieldcat-row_pos = 1.
fs_fieldcat-col_pos = 7.
fs_fieldcat-tabname = 'GT_ITEM'.
fs_fieldcat-fieldname = 'DISTANCE'.
fs_fieldcat-key = ' '.
fs_fieldcat-edit = 'X'.
APPEND fs_fieldcat TO t_fieldcat.
CLEAR fs_fieldcat.
fs_fieldcat-row_pos = 1.
fs_fieldcat-col_pos = 8.
fs_fieldcat-tabname = 'GT_ITEM'.
fs_fieldcat-fieldname = 'CITYFROM'.
fs_fieldcat-ref_tabname = 'SPFLI'.
fs_fieldcat-key = ' '.
APPEND fs_fieldcat TO t_fieldcat.
p_col = p_col + 4.
LOOP AT t_fieldcat INTO fs_fieldcat WHERE tabname = 'GT_ITEM'.
IF fs_fieldcat-col_pos EQ p_col.
fs_fieldcat-emphasize = 'C600'.
w_fieldname = fs_fieldcat-fieldname.
IF p_row IS INITIAL AND p_col GT 0. " <---- paint only column if p_row is empty
MODIFY t_fieldcat FROM fs_fieldcat TRANSPORTING emphasize.
ENDIF.
ENDIF.
ENDLOOP.
fs_cell-fieldname = w_fieldname .
fs_cell-color-col = 6.
fs_cell-nokeycol = 'X'.
APPEND fs_cell TO t_spfli-cell.
IF p_row IS NOT INITIAL AND p_col IS NOT INITIAL. " <---- paint a cell
MODIFY t_spfli INDEX p_row TRANSPORTING cell.
ENDIF.
fs_layout-info_fieldname = 'COLOR'.
fs_layout-coltab_fieldname = 'CELL'.
fs_layout-f2code = '&ETA'.
gs_keyinfo-header01 = 'KEYLN'.
gs_keyinfo-item01 = 'KEYLN'.
LOOP AT t_spfli INTO gt_item.
gt_item-keyln = 1.
gt_item-lineno = gt_item-lineno + 1.
APPEND gt_item.
ENDLOOP.
READ TABLE t_spfli INDEX 1 INTO gt_header.
gt_header-keyln = 1.
gt_header-lineno = 0.
APPEND gt_header.
CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
EXPORTING
is_layout = fs_layout
it_fieldcat = t_fieldcat
i_tabname_header = 'GT_HEADER'
i_tabname_item = 'GT_ITEM'
is_keyinfo = gs_keyinfo
TABLES
t_outtab_header = gt_header
t_outtab_item = gt_item
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.
Maybe you are looking for
-
Process order creation with out BOM
Hi I have an requirement... material A is finished good i create process order for material A but i dont use BOM... with out BOM can i create process order . after creating process order cani isuue components against order ? is it possible please ca
-
How to use the function ebh:getEBMHeaderSenderSystemNode ?
I'm trying to use the fuction ebh:getEBMHeaderSenderSystemNode to populate my EBMHeader/Sender node, but i don't know how to obtain the values for the two parameters expected. xsl snippet: <xsl:variable name="senderNode" select="ebh:getEBMHeaderSende
-
I just want to make sure this is correct and that I'm not misinterpreting what I'm seeing on my call summary (I just started doing this, so haven't gotten an actual bill yet). I have a non-Verizon Friends and Family number that I set up to forward to
-
I'm giving the trial version of FM 12 a quick test. One thing I noticed right away is that I can't seem to actually open the new Quick Element toolbar. Selecting View > Toolbars > Quick Element Toolbar does nothing except place a (second) Help button
-
Mail in On My Mac disappeared after Mavericks install
Yesterday, after making a complete SuperDuper backup, I installed Mavericks on my lovely bride’s MacBook Pro Retina (Mountain Lion). Everything went smoothly, and all of her various email archives in On My Mac subfolders appeared and were readable. S