Subtotal in Blocked ALV
Hi All,
I am facing the problem in displaying the subtotal in Blocked ALV.
My requirement is, I need to display the subtotals in 3 lines like below.
for ex:
subtotal: 7 <above total>
(5)<coming from someother field>
2
from the above: 7 is total of that column.
5 is coming from some other field.
2 is substraction of above 2.
Could anyone please help me in the above.
Many thanks in advance.
Regards,
venkat.
Hi Vaibhav,
Thanks for your response.
and one thing here in my above example is, the value 5 is neither total nor subtotal. its just a different value coming from some other field.
only the 7 is total of that column.
and if I write that logic manually, It may not able display as the position of that column is around 500. because write statment may display upto 252nd position in the output, I guess.
thank you very much.
Regards,
Venkat.
Edited by: venkat reddy on Jan 18, 2010 8:45 PM
Similar Messages
-
hi experts,
i have tried to subtotal in blocked alv. i used the coding for sorting in grid display. its working in FM reuse_alv_grid_display.
but its not working in blocked alv, i.e., in FM reuse_alv_block_list_append .
so what to do ?
kind regards,
debendrahi all,
yes my question has been answered.
as per below.
have to maintain this line : WA_SORT-TABNAME = 'IT_MUSTER'
where IT_MUSTER is the table name.
FORM APPEND USING FTAB TYPE C FDATA TYPE STANDARD TABLE.
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'
EXPORTING
IS_LAYOUT = layout
IT_FIELDCAT = it_fcat
I_TABNAME = FTAB
IT_EVENTS = it_event
IT_SORT = IT_SORT
TABLES
T_OUTTAB = FDATA.
ENDFORM.
Form sort.
WA_SORT-TABNAME = 'IT_MUSTER'.
wa_sort-fieldname = 'MON'.
wa_sort-SUBTOT = 'X'.
append wa_sort to it_sort.
clear wa_sort.
Endform.
ragards,
debendra -
hi experts,
i have created blocked ALV program.
in the o/p , it displays list of recors for open items,then list of records for cleared items.
now i want it to display sum of both open and cleared items of particular column.
in grid display it is displaying total for open and cleared items.
but in blocked alv it is not displaying total for open and closed items separately.
and also i need grand total of both.
if any body knows please tell me..Hi Sridevi
Refer this code as an example.
This code calculates the occupied column from sflight table.
TYPE-POOLS: slis.
DATA:it_fieldcat TYPE slis_t_fieldcat_alv,
is_layout TYPE slis_layout_alv,
it_events TYPE slis_t_event ,
it_sort TYPE slis_t_sortinfo_alv .
DATA: wa_fcat LIKE LINE OF it_fieldcat,
wa_sort LIKE LINE OF it_sort.
DATA: i_flight TYPE sflight_tab1.
SELECT * FROM sflight
INTO TABLE i_flight
UP TO 10 ROWS.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_program_name = sy-repid
i_structure_name = 'SFLIGHT'
CHANGING
ct_fieldcat = it_fieldcat
EXCEPTIONS
inconsistent_interface = 1
program_error = 2.
wa_fcat-do_sum = 'X'.
MODIFY it_fieldcat FROM wa_fcat
TRANSPORTING do_sum WHERE fieldname = 'SEATSOCC'.
wa_sort-up = 'X'.
wa_sort-fieldname = 'CARRID'.
wa_sort-subtot = 'X'.
APPEND wa_sort TO it_sort.
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_INIT'
EXPORTING
i_callback_program = sy-repid.
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'
EXPORTING
is_layout = is_layout
it_fieldcat = it_fieldcat
i_tabname = 'I_FLIGHT'
it_events = it_events
it_sort = it_sort
* I_TEXT = ' '
TABLES
t_outtab = i_flight
EXCEPTIONS
program_error = 1
maximum_of_appends_reached = 2
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'
EXPORTING
is_layout = is_layout
it_fieldcat = it_fieldcat
i_tabname = 'I_FLGIHT'
it_events = it_events
it_sort = it_sort
* I_TEXT = ' '
TABLES
t_outtab = i_flight
EXCEPTIONS
program_error = 1
maximum_of_appends_reached = 2
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_DISPLAY'
Thanks and Regards -
How to calculate totals in Blocked ALV Report
Hi All,
Can any body tell how to calculate totals & sub totals in
Blocked ALV Report[Blocked List].
Thanks in advance
Thanks & Regards,
Rayeezuddin.read this it might help
Sums
15. No_sumchoice(1) TYPE c : This parameter allows the choice for summing up
Only by fieldcatalog.
Value set: SPACE, 'X'
'X' = fields which are to be summed, passed by the calling program (FIELDCAT-DO_SUM = 'X'). The user should not be able to change this value interactively.
16. No_totalline(1) TYPE c : Removes the option of having totals after sub-totals.
Value set: SPACE, 'X'
'X' = no total record is to be output. Subtotals can still be calculated and output. The fields in the subtotals are flagged DO_SUM = 'X' in the field list.
17. No_subchoice(1) TYPE c : Does not allow the user to interactively change the field chosen for subtotals.
Value set: SPACE, 'X'
'X' = value whose change triggers subtotals, provided by the calling program. The user should not be able to change this value interactively.
18. No_subtotals(1) TYPE c : No subtotals possible
Value set: SPACE, 'X'
'X' = no subtotals.
19. Numc_sum(1) TYPE c : Totals only possible for NUMC-Fields.
20. No_unit_splitting TYPE c: No separate total lines by inh.units
21.totals_before_items TYPE c: Display totals before the items
22. Totals_only(1) TYPE c : Show only totals
Value set: SPACE, 'X'
'X' = only total records are output.
23. Totals_text(60) TYPE c : Text for 1st col. in totals
Value set: SPACE, string (max.60)
' ' = The first column in the total record contains an appropriate number of '*'s to indicate the total by default. If the first column is wide enough, the string 'Total' is output after the asterisks.
'String = The string passed is output after the total indicated by '*', if the column is wide enough.
24. Subtotals_text(60) TYPE c : Texts for subtotals
Value set: SPACE, string (max.60)
' ' = In the first column of subtotal records, the subtotal is indicated by an appropriate number of '*' by default. If the first column is not a subtotal criterion, the string 'Total' is output after the asterisks, if the column is wide enough.
'String = the string passed is output after the subtotal indicated by '*', if the column is wide enough and the first column is not a subtotal criterion. If it is a subtotal criterion, its value is repeated after the total, if the column is wide enough.
ELSE TELL ME I WILL PASTE COMPLETE HELP
regards -
How to get subtotal value in ALV list display
Hi all,
How to give condition on the value of subtotal line in ALV list display,
i.e.if value of subtotal of plan quantity = actual quantity (in red oval) it should show the message
'ON TIME DELIVERY' else it should not show messagee.In my case(shown in red oval) its
showing for each subtotal value. I know how to change the subtotal text but i want to change
with respect to value of the subtotal.(plz refer attachment)
Any input regard to this will be achieved great.
Many thanks in advance.
samadhan shinde.Hi Samadhan,
I am awaiting for solution for this problem.....but as i think dynamically displaying sub total based on
matching actual quantity and planned quantity is bit complicated.
My idea is to display matched quantities in one block and unmatched quantities in another. I mean using blocked list.
awaiting suggestions.
regards, -
HI ALL,
could any one send me how to display the subtotal Text in ALV grid output with code sample.
with thanks.
kannanhi,
means u want to print some text instead of star ( coming in subtotal) ?
If so than try like,
*& Report ZALV_LIST
REPORT zalv_list.
TABLES : mseg.
TYPE-POOLS : slis.
DATA : BEGIN OF itab OCCURS 0,
mblnr LIKE mseg-mblnr,
matnr LIKE mseg-matnr,
werks LIKE mseg-werks,
menge LIKE mseg-menge,
line_color(4) TYPE c,
END OF itab.
DATA : BEGIN OF itab1 OCCURS 0,
mblnr LIKE mseg-mblnr,
matnr LIKE mseg-matnr,
werks LIKE mseg-werks,
menge LIKE mseg-menge,
line_color(4) TYPE c,
END OF itab1.
DATA : t_fcat TYPE slis_t_fieldcat_alv,
t_eve TYPE slis_t_event,
t_subtot TYPE slis_t_sortinfo_alv,
subtot LIKE LINE OF t_subtot,
wa_fcat LIKE LINE OF t_fcat,
gd_layout TYPE slis_layout_alv.
DATA : gt_menge LIKE mseg-menge,
st_menge LIKE mseg-menge.
SELECTION-SCREEN : BEGIN OF BLOCK blk1 WITH FRAME TITLE text-001.
SELECT-OPTIONS : doc FOR mseg-mblnr.
SELECTION-SCREEN : END OF BLOCK blk1.
INITIALIZATION.
PERFORM build_cat USING t_fcat.
PERFORM build_eve.
PERFORM build_layout.
START-OF-SELECTION.
PERFORM get_data.
PERFORM display.
*& Form build_cat
text
-->TEMP_FCAT text
FORM build_cat USING temp_fcat TYPE slis_t_fieldcat_alv.
wa_fcat-tabname = 'ITAB'.
wa_fcat-fieldname = 'MBLNR'.
wa_fcat-seltext_m = 'Material Doc.'.
APPEND wa_fcat TO temp_fcat.
CLEAR wa_fcat.
wa_fcat-tabname = 'ITAB'.
wa_fcat-fieldname = 'MATNR'.
wa_fcat-seltext_m = 'Material'.
APPEND wa_fcat TO temp_fcat.
CLEAR wa_fcat.
wa_fcat-tabname = 'ITAB'.
wa_fcat-fieldname = 'WERKS'.
wa_fcat-seltext_m = 'Plant'.
APPEND wa_fcat TO temp_fcat.
CLEAR wa_fcat.
wa_fcat-tabname = 'ITAB'.
wa_fcat-fieldname = 'MENGE'.
wa_fcat-seltext_m = 'Quantity'.
wa_fcat-do_sum = 'Y'.
APPEND wa_fcat TO temp_fcat.
CLEAR wa_fcat.
subtot-spos = 1.
subtot-fieldname = 'MBLNR'.
subtot-tabname = 'ITAB'.
subtot-up = 'X'.
subtot-group = 'X'.
subtot-subtot = 'X'.
subtot-expa = 'X'.
APPEND subtot TO t_subtot.
ENDFORM. "build_cat
*& Form build_eve
text
FORM build_eve.
DATA : wa_eve TYPE slis_alv_event.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
i_list_type = 0
IMPORTING
et_events = t_eve
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 t_eve WITH KEY name = slis_ev_top_of_page
INTO wa_eve.
IF sy-subrc = 0.
MOVE 'TOP_OF_PAGE' TO wa_eve-form.
APPEND wa_eve TO t_eve.
ENDIF.
ENDFORM. "build_eve
*& Form build_layout
text
FORM build_layout.
gd_layout-no_input = 'X'.
gd_layout-colwidth_optimize = 'X'.
gd_layout-info_fieldname = 'LINE_COLOR'.
gd_layout-subtotals_text = 'Sub Total'.
ENDFORM. " BUILD_LAYOUT
*& Form get_data
text
FORM get_data.
SELECT mblnr matnr werks menge FROM mseg INTO CORRESPONDING FIELDS OF TABLE itab
WHERE mblnr IN doc.
SORT itab BY mblnr.
LOOP AT itab.
AT NEW mblnr.
LOOP AT itab WHERE mblnr = itab-mblnr.
st_menge = st_menge + itab-menge.
itab1-mblnr = itab-mblnr.
itab1-matnr = itab-matnr.
itab1-werks = itab-werks.
itab1-menge = itab-menge.
APPEND itab1.
ENDLOOP.
itab1-mblnr = 'Sub_Total'.
itab1-matnr = ''.
itab1-werks = ''.
itab1-menge = st_menge.
itab1-line_color = 'C710'.
APPEND itab1.
itab1-line_color = ''.
CLEAR st_menge.
ENDAT.
ENDLOOP.
LOOP AT itab.
gt_menge = gt_menge + itab-menge.
ENDLOOP.
itab1-mblnr = 'Total'.
itab1-matnr = ''.
itab1-werks = ''.
itab1-menge = gt_menge.
itab1-line_color = 'C310'.
APPEND itab1.
ENDFORM. "get_data
*& Form display
text
FORM display.
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
i_callback_program = 'ZALV_LIST'
is_layout = gd_layout
it_fieldcat = t_fcat
it_sort = t_subtot
it_events = t_eve
TABLES
t_outtab = itab1
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
*& Form top_of_page
text
FORM top_of_page.
WRITE:/ 'Data'.
ENDFORM. "top_of_page
reward if useful....
Edited by: Dhwani shah on Dec 20, 2007 1:20 PM -
hi,
I'm working with Blocked ALV. In my program, passed the Fieldcatlog-do_sum = 'X' . But then also i'm not getting totals. For that what i want to do in Blocked ALV.
Regards,
BabHi,
For ALV Totals you can try doing,
DATA : it_field TYPE slis_t_fieldcat_alv,
wa_field TYPE slis_fieldcat_alv.
DATA: itab_sort TYPE slis_t_sortinfo_alv,
wa_sort TYPE slis_sortinfo_alv.
wa_field-fieldname = 'MENGE'.
wa_field-tabname = 'IT_TAB'.
wa_field-outputlen = 20.
wa_field-seltext_l ='Quantity'.
wa_field-input = ' '.
wa_field-edit = ' '.
wa_field-col_pos = '4'.
wa_field-hotspot = 'X'.
wa_field-do_sum = 'X'. "For totalling
APPEND wa_field TO it_field.
CLEAR wa_field.
*Manintainig internal table for sorting
wa_sort-spos = 1.
wa_sort-fieldname = 'EBELP'.
wa_sort-tabname = 'IT_tab'.
wa_sort-up = 'X'.
wa_sort-subtot = 'X'. "For totalling
APPEND wa_sort TO itab_sort.
CLEAR wa_sort.
Then you can pass these two internal tables in Reuse ALV grid Function Module.
Hope it helps
Regards
Mansi -
hi experts,
i have made an block alv, it gettimg shortdump, showing
'The ABAP program lines are wider than the internal table.'
how to resolve it?
my code is:
*& Report ZGATEPASS
REPORT zgatepass.
*************tables declaration****************
TABLES: likp.
***************type groups declaration*********
TYPE-POOLS: slis.
**************INTERNAL TABLE DECLARATION*****************
DATA: BEGIN OF it_likp_lips OCCURS 0,
vbeln TYPE likp-vbeln," do no
erdat TYPE likp-erdat," date
kunnr TYPE likp-kunnr,"Ship-to party
traid TYPE likp-traid,"Transport ID
vbtyp TYPE likp-vbtyp,
matnr TYPE lips-matnr,"item
vrkme TYPE lips-vrkme,"UOM
charg TYPE lips-charg," batch
lfimg TYPE lips-lfimg," quantity
arktx TYPE lips-arktx,"sku CODE
END OF it_likp_lips.
DATA: BEGIN OF it_kna1 OCCURS 0,
kunnr TYPE kna1-kunnr,
name1 TYPE kna1-name1,"party name
END OF it_kna1.
DATA: BEGIN OF itab1 OCCURS 0,
vbeln TYPE likp-vbeln," do no
erdat TYPE likp-erdat," date
kunnr TYPE likp-kunnr,"Ship-to party
traid TYPE likp-traid,"Transport ID
text TYPE string,
vbtyp TYPE likp-vbtyp,
matnr TYPE lips-matnr,"item
vrkme TYPE lips-vrkme,"UOM
charg TYPE lips-charg," batch
lfimg TYPE lips-lfimg," quantity
quantity TYPE char15,"lips-lfimg,
arktx TYPE lips-arktx,"sku
name1 TYPE kna1-name1,"party name
END OF itab1.
DATA:itab2 LIKE TABLE OF itab1 WITH HEADER LINE.
*---Reference table
DATA: BEGIN OF itab1_ref OCCURS 0,
arktx TYPE lips-arktx,"sku
name1 TYPE kna1-name1,"party name
vbeln TYPE likp-vbeln," do no
erdat TYPE likp-erdat," date
kunnr TYPE likp-kunnr,"Ship-to party
traid TYPE likp-traid,"Transport ID
text TYPE string,
vbtyp TYPE likp-vbtyp,
matnr TYPE lips-matnr,"item
vrkme TYPE lips-vrkme,"UOM
charg TYPE lips-charg," batch
* lfimg TYPE char15,"lips-lfimg," quantity
lfimg TYPE lips-lfimg," quantity
quantity TYPE char15,"lips-lfimg,
END OF itab1_ref.
DATA: BEGIN OF itab1_ref1 OCCURS 0,
arktx TYPE lips-arktx,"sku
name1 TYPE kna1-name1,"party name
vbeln TYPE likp-vbeln," do no
erdat TYPE likp-erdat," date
kunnr TYPE likp-kunnr,"Ship-to party
traid TYPE likp-traid,"Transport ID
text TYPE string,
vbtyp TYPE likp-vbtyp,
matnr TYPE lips-matnr,"item
vrkme TYPE lips-vrkme,"UOM
charg TYPE lips-charg," batch
lfimg TYPE lips-lfimg," quantity
quantity TYPE char15,"lips-lfimg,
END OF itab1_ref1.
******************for 2nd block****************
DATA: BEGIN OF itab OCCURS 0,
text TYPE string,
arktx TYPE lips-arktx,
lfimg TYPE lips-lfimg,
vrkme TYPE lips-vrkme,
sum TYPE lips-lfimg,
END OF itab.
DATA: BEGIN OF itab3 OCCURS 0,
arktx TYPE lips-arktx,"sku
* traid TYPE likp-traid,"Transport ID
text TYPE string,
lfimg TYPE lips-lfimg," quantity
vrkme TYPE lips-vrkme,"UOM
sum TYPE lips-lfimg,
matnr TYPE lips-matnr,
END OF itab3.
*--add truck wise material sum
DATA: BEGIN OF itab3_ref OCCURS 0,
text TYPE string,
arktx TYPE lips-arktx,"sku
* traid TYPE likp-traid,"Transport ID
lfimg TYPE lips-lfimg," quantity
vrkme TYPE lips-vrkme,"UOM
sum TYPE lips-lfimg,
matnr TYPE lips-matnr,
END OF itab3_ref.
DATA: BEGIN OF itab3_ref1 OCCURS 0,
matnr TYPE lips-matnr,
text TYPE string,
arktx TYPE lips-arktx,"sku
* traid TYPE likp-traid,"Transport ID
lfimg TYPE lips-lfimg," quantity
vrkme TYPE lips-vrkme,"UOM
sum TYPE lips-lfimg,
END OF itab3_ref1.
*---end of truck wise material sum
**************************ALV DATA DECLARATION********************
DATA: it_fcat TYPE slis_t_fieldcat_alv, " FIELDCAT DECLARATION
wa_fcat TYPE slis_fieldcat_alv,
**local work area of event catalog********
it_event TYPE slis_t_event,
wa_event TYPE slis_alv_event,
****************STRUCTURE FOR LAYOUT****
is_layout TYPE slis_layout_alv,"LAYOUT
is1_layout TYPE slis_layout_alv,"LAYOUT
************ALV SORTING******************
it_sort TYPE slis_t_sortinfo_alv,
wa_sort TYPE slis_sortinfo_alv,
repid TYPE sy-repid.
DATA idx TYPE sy-tabix.
repid = sy-repid." PROGRAM NAME
**************************** SELECTION-SCREEN design***************************
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
SELECT-OPTIONS: date FOR likp-erdat ,
truck_no FOR likp-traid OBLIGATORY." truck no
SELECTION-SCREEN END OF BLOCK b1.
************************START-OF-SELECTION**************************
START-OF-SELECTION.
PERFORM get_likp_lips_data.
IF NOT it_likp_lips[] IS INITIAL.
PERFORM get_kna1_data.
ENDIF.
PERFORM get_itab1.
PERFORM get_itab3.
*********************SUBROUTINE FOR ALV LAYOUT***********
PERFORM build_layout_alv.
************************ SUBROUTINE FOR ALV EVENT **********
PERFORM build_events.
*****************subroutine for fieldcatalog**********
PERFORM build_fcat1.
******************ALV SORTING*******************************
PERFORM alv_sort_info.
END-OF-SELECTION.
PERFORM alv_grid_display.
*& Form GET_LIKP_LIPS_DATA
* text
* --> p1 text
* <-- p2 text
FORM get_likp_lips_data .
SELECT likp~vbeln likp~erdat likp~kunnr likp~traid likp~vbtyp lips~matnr lips~vrkme lips~charg lips~lfimg lips~arktx
INTO CORRESPONDING FIELDS OF TABLE it_likp_lips
FROM likp JOIN lips
ON likp~vbeln EQ lips~vbeln
WHERE
likp~traid IN truck_no AND
likp~erdat IN date AND likp~vbtyp = 'J'.
IF sy-subrc <> 0.
* MESSAGE 'NO DATA IN IT_LIKP_LIPS..' TYPE 'E'.
ELSE.
SORT it_likp_lips BY vbeln.
DELETE it_likp_lips WHERE lfimg EQ '0.0'.
* DELETE ADJACENT DUPLICATES FROM IT_LIKP_LIPS.
ENDIF.
ENDFORM. " GET_LIKP_LIPS_DATA
*& Form GET_KNA1_DATA
* text
* --> p1 text
* <-- p2 text
FORM get_kna1_data .
SELECT
kunnr
name1
INTO CORRESPONDING FIELDS OF TABLE it_kna1
FROM kna1
FOR ALL ENTRIES IN it_likp_lips
WHERE kunnr = it_likp_lips-kunnr.
IF sy-subrc <> 0.
* MESSAGE 'NO DATA IN IT_KNA1.' TYPE 'E'.
ELSE.
SORT it_kna1 BY kunnr.
* DELETE ADJACENT DUPLICATES FROM IT_LIKP_LIPS.
ENDIF.
ENDFORM. " GET_KNA1_DATA
*& Form GET_ITAB1
* text
* --> p1 text
* <-- p2 text
FORM get_itab1 .
*---ADD CODE
LOOP AT it_likp_lips.
itab1-vbeln = it_likp_lips-vbeln.
PERFORM delete_leading_zeros USING itab1-vbeln .
itab1-erdat = it_likp_lips-erdat.
itab1-kunnr = it_likp_lips-kunnr.
itab1-traid = it_likp_lips-traid.
itab1-text = itab1-traid.
itab1-matnr = it_likp_lips-matnr.
itab1-vrkme = it_likp_lips-vrkme.
itab1-lfimg = it_likp_lips-lfimg.
* ITAB1-quantity = it_likp_lips-lfimg.
itab1-arktx = it_likp_lips-arktx.
READ TABLE it_kna1 WITH KEY kunnr = it_likp_lips-kunnr BINARY SEARCH.
IF sy-subrc = 0.
itab1-name1 = it_kna1-name1.
ENDIF.
APPEND itab1.
ENDLOOP.
LOOP AT itab1.
MOVE-CORRESPONDING :itab1 TO itab1_ref1.
APPEND :itab1_ref1.
ENDLOOP.
DELETE ADJACENT DUPLICATES FROM itab1 COMPARING vbeln.
LOOP AT itab1.
LOOP AT itab1_ref1 WHERE vbeln EQ itab1-vbeln.
MOVE-CORRESPONDING itab1_ref1 TO itab1_ref.
APPEND itab1_ref.
LOOP AT itab1_ref WHERE vbeln EQ itab1-vbeln AND matnr EQ itab1_ref1-matnr.
idx = sy-tabix.
AT END OF arktx.
* MOVE-CORRESPONDING itab2 TO itab1_ref1.
DO 5 TIMES.
itab1_ref-text = ' '.
itab1_ref-vbeln = ' '.
itab1_ref-name1 = ' '.
itab1_ref-arktx = ' '.
itab1_ref-lfimg = ' '.
itab1_ref-vrkme = ' '.
itab1_ref-charg = ' '.
itab1_ref-quantity = ' '.
APPEND itab1_ref.
CLEAR :itab1_ref.
* MODIFY itab1_ref INDEX idx TRANSPORTING text vbeln name1 arktx lfimg vrkme charg quantity.
ENDDO.
ENDAT.
ENDLOOP.
ENDLOOP.
ENDLOOP.
REFRESH itab1.
LOOP AT itab1_ref.
MOVE-CORRESPONDING itab1_ref TO itab1.
APPEND itab1.
ENDLOOP.
ENDFORM. " GET_ITAB1
*& Form GET_ITAB3
* text
* --> p1 text
* <-- p2 text
FORM get_itab3 .
DATA: sum TYPE lips-lfimg.
SORT itab1_ref BY text.
LOOP AT itab1_ref.
MOVE-CORRESPONDING itab1_ref TO itab3.
* MOVE itab1_ref-matnr TO itab3-matnr.
APPEND itab3.
CLEAR itab3.
DELETE itab3 WHERE text = ''.
ENDLOOP.
SORT itab3 BY matnr arktx text .
* LOOP AT itab3.
* sum = sum + itab3-lfimg.
* AT END OF arktx.
* itab-text = itab3-text.
* itab-arktx = itab3-arktx.
** itab-lfimg = itab3-lfimg.
* itab-sum = sum.
* itab-vrkme = itab3-vrkme.
* APPEND itab.
* CLEAR itab.
* ENDAT.
* ENDLOOP.
LOOP AT itab3.
MOVE-CORRESPONDING itab3 TO itab3_ref.
APPEND itab3_ref.
MOVE-CORRESPONDING itab3 TO itab3_ref1.
APPEND itab3_ref1.
ENDLOOP.
*---sort required for truck wise material qty
SORT itab3_ref BY text.
DELETE ADJACENT DUPLICATES FROM itab3_ref COMPARING text.
SORT itab3_ref1 BY matnr text.
LOOP AT itab3_ref .
LOOP AT itab3_ref1 WHERE text EQ itab3_ref-text.
sum = sum + itab3_ref1-lfimg.
AT END OF arktx.
itab-text = itab3_ref1-text.
itab-arktx = itab3_ref1-arktx.
* itab-lfimg = itab3-lfimg.
itab-sum = sum.
itab-vrkme = itab3_ref1-vrkme.
APPEND itab.
CLEAR :itab,sum.
ENDAT.
ENDLOOP.
ENDLOOP.
ENDFORM. " GET_ITAB12
*& Form BUILD_LAYOUT_ALV
* text
* --> p1 text
* <-- p2 text
FORM build_layout_alv .
is_layout-colwidth_optimize = 'X'.
ENDFORM. " BUILD_LAYOUT_ALV
*& Form BUILD_EVENTS
* text
* --> p1 text
* <-- p2 text
FORM build_events .
* CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
* EXPORTING
* i_list_type = 0
* IMPORTING
* et_events = it_event
* EXCEPTIONS
* list_type_wrong = 1
* OTHERS = 2.
* IF sy-subrc <> 0.
* MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
* WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
* ENDIF.
* READ TABLE it_event INTO wa_event WITH KEY name =
* slis_ev_top_of_page.
* IF sy-subrc EQ 0.
* wa_event-form = 'TOP'.
* MODIFY it_event FROM wa_event INDEX sy-tabix TRANSPORTING form.
* ENDIF.
ENDFORM. " BUILD_EVENTS
*& Form TOP
* text
FORM top.
**Alv list header decleration
* DATA: it_header TYPE STANDARD TABLE OF slis_listheader,
* wa_header TYPE slis_listheader.
**Title
* wa_header-typ = 'H'.
* wa_header-info = 'GATEPASS'.
* APPEND wa_header TO it_header.
**Date
* wa_header-typ = 'S'.
* wa_header-key = 'Date:'.
* CONCATENATE sy-datum+6(2) '.'
* sy-datum+4(2) '.'
* sy-datum(4)
* INTO wa_header-info.
* APPEND wa_header TO it_header.
**Username
* wa_header-typ = 'S'.
* wa_header-key = 'User:'.
* wa_header-info = sy-uname.
* APPEND wa_header TO it_header.
**Time
* wa_header-typ = 'S'.
* wa_header-key = 'Time:'.
* CONCATENATE sy-uzeit(2)':'
* sy-uzeit+2(2)':'
* sy-uzeit+4(2)'.'
* INTO wa_header-info.
** LWA_HEADER-INFO = SY-UZEIT.
* APPEND wa_header TO it_header.
* wa_header-typ = 'A'.
* APPEND wa_header TO it_header.
* CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
* EXPORTING
* it_list_commentary = it_header
* i_logo = 'KAL_LOGO'.
** I_END_OF_LIST_GRID =
ENDFORM. "top
*& Form BUILD_FCAT1
* text
* -->P_0215 text
* -->P_0216 text
* -->P_0217 text
* -->P_0218 text
FORM build_fcat1 .
wa_fcat-col_pos = 1.
wa_fcat-tabname = 'ITAB1'.
wa_fcat-fieldname = 'TEXT'.
wa_fcat-emphasize = 'C701'.
*WA_FCAT-key = 'X'.
wa_fcat-seltext_m = 'TRUCKNO'.
APPEND wa_fcat TO it_fcat.
CLEAR wa_fcat.
wa_fcat-col_pos = 2.
wa_fcat-tabname = 'ITAB1'.
wa_fcat-fieldname = 'VBELN'.
wa_fcat-emphasize = 'C501'.
wa_fcat-key = 'X'.
wa_fcat-seltext_m = 'DONO'.
APPEND wa_fcat TO it_fcat.
CLEAR wa_fcat.
wa_fcat-col_pos = 3.
wa_fcat-tabname = 'ITAB1'.
wa_fcat-fieldname = 'NAME1'.
wa_fcat-emphasize = 'C401'.
*WA_FCAT-key = 'X'.
wa_fcat-seltext_m = 'PARTY NAME'.
APPEND wa_fcat TO it_fcat.
CLEAR wa_fcat.
wa_fcat-col_pos = 4.
wa_fcat-tabname = 'ITAB1'.
wa_fcat-fieldname = 'ARKTX'.
wa_fcat-emphasize = 'C301'.
*WA_FCAT-key = 'X'.
wa_fcat-seltext_m = 'SKUCODE'.
APPEND wa_fcat TO it_fcat.
CLEAR wa_fcat.
wa_fcat-col_pos = 5.
wa_fcat-tabname = 'ITAB1'.
wa_fcat-fieldname = 'LFIMG'.
wa_fcat-emphasize = 'C701'.
*WA_FCAT-key = 'X'.
* wa_fcat-do_sum = 'X'.
wa_fcat-seltext_m = 'QUANTITY'.
APPEND wa_fcat TO it_fcat.
CLEAR wa_fcat.
wa_fcat-col_pos = 6.
wa_fcat-tabname = 'ITAB1'.
wa_fcat-fieldname = 'VRKME'.
wa_fcat-emphasize = 'C401'.
*WA_FCAT-key = 'X'.
wa_fcat-seltext_m = 'UOM'.
APPEND wa_fcat TO it_fcat.
CLEAR wa_fcat.
wa_fcat-col_pos = 7.
wa_fcat-tabname = 'ITAB1'.
wa_fcat-fieldname = 'CHARG'.
wa_fcat-emphasize = 'C601'.
*WA_FCAT-key = 'X'.
wa_fcat-seltext_m = 'BATCH'.
APPEND wa_fcat TO it_fcat.
CLEAR wa_fcat.
wa_fcat-col_pos = 8.
wa_fcat-tabname = 'ITAB1'.
wa_fcat-fieldname = 'QUANTITY'.
wa_fcat-emphasize = 'C701'.
*WA_FCAT-key = 'X'.
wa_fcat-seltext_m = 'QUANTITY'.
APPEND wa_fcat TO it_fcat.
CLEAR wa_fcat.
ENDFORM. " BUILD_FCAT1
*& Form ALV_SORT_INFO
* text
* --> p1 text
* <-- p2 text
FORM alv_sort_info .
** wa_sort-spos = 1.
** wa_sort-fieldname = 'TEXT'.
** wa_sort-tabname = 'ITAB1'.
** wa_sort-down = 'X'.
** APPEND wa_sort TO it_sort.
** CLEAR wa_sort.
** wa_sort-spos = 2.
** wa_sort-fieldname = 'VBELN'.
** wa_sort-tabname = 'ITAB1'.
** wa_sort-up = 'X'.
** APPEND wa_sort TO it_sort.
** CLEAR wa_sort.
** wa_sort-spos = 4.
** wa_sort-fieldname = 'ARKTX'.
** wa_sort-tabname = 'ITAB1'.
** wa_sort-down = 'X'.
** APPEND wa_sort TO it_sort.
** CLEAR wa_sort.
** wa_sort-spos = 5.
** wa_sort-fieldname = 'LFIMG'.
** wa_sort-tabname = 'ITAB1'.
** wa_sort-down = 'X'.
** APPEND wa_sort TO it_sort.
** CLEAR wa_sort.
**lw_sort-fieldname = 'CONNID'. "sort depending on which field
** lw_sort-subtot = 'X'. "sub calculate depending on this field
** lw_sort-up = 'X'. "ascending sequence
** APPEND lw_sort TO pi_sort.
** CLEAR lw_sort.
* wa_sort-spos = 5.
* wa_sort-fieldname = 'LFIMG'.
* wa_sort-tabname = 'ITAB1'.
* wa_sort-down = 'X'.
* WA_SORT-SUBTOT = 'X'.
* APPEND wa_sort TO it_sort.
* CLEAR wa_sort.
** wa_sort-spos = 7.
** wa_sort-fieldname = 'CHARG'.
** wa_sort-tabname = 'ITAB1'.
** wa_sort-down = 'X'.
** APPEND wa_sort TO it_sort.
** CLEAR wa_sort.
ENDFORM. " ALV_SORT_INFO
*& Form ALV_GRID_DISPLAY
* text
* --> p1 text
* <-- p2 text
FORM alv_grid_display .
DATA:repid TYPE sy-repid VALUE sy-repid.
repid = sy-repid." PROGRAM NAME
*--------------- ADD INTERNAL TABLE ITAB1
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_program_name = sy-repid
i_internal_tabname = 'ITAB1'
* I_STRUCTURE_NAME =
* I_CLIENT_NEVER_DISPLAY = 'X'
i_inclname = sy-repid
* I_BYPASSING_BUFFER =
* I_BUFFER_ACTIVE =
CHANGING
ct_fieldcat = it_fcat
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_BLOCK_LIST_APPEND'
EXPORTING
is_layout = is_layout
it_fieldcat = it_fcat
i_tabname = 'ITAB1'
it_events = it_event
TABLES
t_outtab = itab1
EXCEPTIONS
program_error = 1
maximum_of_appends_reached = 2
OTHERS = 3.
*------------------- ADD INTERNAL TABLE ITAB
REFRESH it_fcat[].
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_program_name = sy-repid
i_internal_tabname = 'ITAB'
i_inclname = sy-repid
CHANGING
ct_fieldcat = it_fcat.
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'
EXPORTING
is_layout = is_layout
it_fieldcat = it_fcat
i_tabname = 'ITAB'
it_events = it_event
TABLES
t_outtab = itab
EXCEPTIONS
program_error = 1
maximum_of_appends_reached = 2
OTHERS = 3.
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_DISPLAY'
EXCEPTIONS
program_error = 1
OTHERS = 2.
* CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
* EXPORTING
** I_INTERFACE_CHECK = ' '
** I_BYPASSING_BUFFER = ' '
** I_BUFFER_ACTIVE = ' '
* i_callback_program = 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 = is_layout
* it_fieldcat = it_fcat
** IT_EXCLUDING =
** IT_SPECIAL_GROUPS =
* it_sort = it_sort
** IT_FILTER =
** IS_SEL_HIDE =
** I_DEFAULT = 'X'
** I_SAVE = ' '
** IS_VARIANT =
* it_events = it_event
** 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 = itab1
* 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_GRID_DISPLAY
*& Form DELETE_LEADING_ZEROS
* text
* -->P_ITAB1_VBELN text
FORM delete_leading_zeros USING p_var.
SHIFT p_var LEFT DELETING LEADING '0' .
ENDFORM. " DELETE_LEADING_ZEROSSEE THE FOLLOWING EXAMPLE:
REPORT ZBLOCK_ALV.
CONSTANTS :
c_x VALUE 'X'.
* Macro definition
DEFINE m_fieldcat.
ls_fieldcat-fieldname = &1.
ls_fieldcat-ref_tabname = &2.
ls_fieldcat-tabname = &3.
append ls_fieldcat to lt_fieldcat.
END-OF-DEFINITION.
DEFINE m_sort.
ls_sort-fieldname = &1.
ls_sort-up = c_x.
append ls_sort to lt_sort.
END-OF-DEFINITION.
TYPE-POOLS: slis. " ALV Global types
TYPES:
* 1st Table
BEGIN OF ty_kna1,
kunnr TYPE kna1-kunnr, " Customer number
ernam TYPE kna1-ernam, " Name of Person who Created
erdat TYPE kna1-erdat, " Creation date
name1 TYPE kna1-name1, " Name 1 .
END OF ty_kna1,
* 2nd Table
BEGIN OF ty_mara,
matnr TYPE mara-matnr, " Material number
ernam TYPE mara-ernam, " Name of Person who Created
ersda TYPE mara-ersda, " Creation date
mtart TYPE mara-mtart, " Material type
matkl TYPE mara-matkl, " Material group
END OF ty_mara,
* 3rd Table
BEGIN OF ty_vbak,
vbeln TYPE vbak-vbeln, " Sales document
vkorg TYPE vbak-vkorg, " Sales organization
vtweg TYPE vbak-vtweg, " Distribution channel
kunnr TYPE vbak-kunnr, " Sold-to party
erdat TYPE vbak-erdat, " Creation date
END OF ty_vbak.
DATA:
gs_layout TYPE slis_layout_alv,
gt_kna1 TYPE TABLE OF ty_kna1,
gt_mara TYPE TABLE OF ty_mara,
gt_vbak TYPE TABLE OF ty_vbak.
SELECTION-SCREEN :
SKIP, BEGIN OF LINE,COMMENT 5(27) v_1 FOR FIELD p_max. "#EC NEEDED
PARAMETERS p_max(2) TYPE n DEFAULT '02' OBLIGATORY.
SELECTION-SCREEN END OF LINE.
INITIALIZATION.
v_1 = 'Maximum of records to read'.
START-OF-SELECTION.
* Read data
SELECT kunnr ernam erdat name1
FROM kna1
UP TO p_max ROWS
INTO TABLE gt_kna1.
SELECT matnr ernam ersda mtart matkl
FROM mara
UP TO p_max ROWS
INTO TABLE gt_mara.
SELECT vbeln vkorg vtweg kunnr erdat
FROM vbak
UP TO p_max ROWS
INTO TABLE gt_vbak.
END-OF-SELECTION.
PERFORM f_display_data.
* FORM USER_COMMAND *
FORM user_command USING u_ucomm TYPE sy-ucomm
us_selfield TYPE slis_selfield. "#EC CALLED
DATA:
ls_vbak TYPE ty_vbak.
CASE u_ucomm.
WHEN '&IC1'. " Pick
CASE us_selfield-tabname.
WHEN 'GT_MARA'.
WHEN 'GT_KNA1'.
WHEN 'GT_VBAK'.
READ TABLE gt_vbak INDEX us_selfield-tabindex INTO ls_vbak.
IF sy-subrc EQ 0.
SET PARAMETER ID 'AUN' FIELD ls_vbak-vbeln.
CALL TRANSACTION 'VA03' AND SKIP FIRST SCREEN.
ENDIF.
ENDCASE.
ENDCASE.
ENDFORM. " USER_COMMAND
* Form f_display_data
FORM f_display_data.
DATA :
ls_fieldcat TYPE slis_fieldcat_alv,
lt_fieldcat TYPE slis_t_fieldcat_alv, " Field catalog
ls_sort TYPE slis_sortinfo_alv,
lt_sort TYPE slis_t_sortinfo_alv, " Sort table
lt_events TYPE slis_t_event,
ls_event TYPE slis_alv_event.
gs_layout-group_change_edit = c_x.
gs_layout-colwidth_optimize = c_x.
gs_layout-zebra = c_x.
gs_layout-detail_popup = c_x.
gs_layout-get_selinfos = c_x.
* Build field catalog and sort table
m_fieldcat 'KUNNR' 'KNA1' 'GT_KNA1'.
m_fieldcat 'ERNAM' 'KNA1' 'GT_KNA1'.
m_fieldcat 'ERDAT' 'KNA1' 'GT_KNA1'.
m_fieldcat 'NAME1' 'KNA1' 'GT_KNA1'.
m_sort 'KUNNR'.
* Build Event Table
MOVE 'TOP_OF_PAGE' TO ls_event-name.
MOVE 'TOP_OF_PAGE' TO ls_event-form.
APPEND ls_event TO lt_events.
MOVE 'END_OF_LIST' TO ls_event-name.
MOVE 'END_OF_LIST' TO ls_event-form.
APPEND ls_event TO lt_events.
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
i_callback_program = sy-cprog
i_callback_user_command = 'USER_COMMAND'
it_fieldcat = lt_fieldcat
is_layout = gs_layout
it_events = lt_events
it_sort = lt_sort
i_save = 'A'
TABLES
t_outtab = gt_kna1.
ENDFORM. " F_DISPLAY_DATA
* FORM top_of_page *
FORM top_of_page. "#EC CALLED
ULINE.
WRITE : sy-uname, sy-title(56) CENTERED, sy-datum.
ULINE.
ENDFORM. " TOP_OF_PAGE
* FORM End_of_list *
FORM end_of_list. "#EC CALLED
DATA :
ls_fieldcat TYPE slis_fieldcat_alv,
lt_fieldcat TYPE slis_t_fieldcat_alv, " Field catalog
ls_sort TYPE slis_sortinfo_alv,
lt_sort TYPE slis_t_sortinfo_alv, " Sort table
lt_events TYPE slis_t_event,
ls_event TYPE slis_alv_event.
* Build field catalog and sort table
m_fieldcat 'MATNR' 'MARA' 'GT_MARA'.
m_fieldcat 'ERNAM' 'MARA' 'GT_MARA'.
m_fieldcat 'ERSDA' 'MARA' 'GT_MARA'.
m_fieldcat 'MTART' 'MARA' 'GT_MARA'.
m_fieldcat 'MATKL' 'MARA' 'GT_MARA'.
m_sort 'MATNR'.
* Build Event Table
MOVE 'END_OF_LIST' TO ls_event-name.
MOVE 'END_OF_LIST_2' TO ls_event-form.
APPEND ls_event TO lt_events.
gs_layout-list_append = c_x.
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
i_callback_program = sy-cprog
it_fieldcat = lt_fieldcat
is_layout = gs_layout
it_sort = lt_sort
it_events = lt_events
i_save = 'A'
TABLES
t_outtab = gt_mara.
ENDFORM. " END_OF_LIST
* FORM End_of_list_2 *
FORM end_of_list_2. "#EC CALLED
DATA :
ls_fieldcat TYPE slis_fieldcat_alv,
lt_fieldcat TYPE slis_t_fieldcat_alv, " Field catalog
ls_sort TYPE slis_sortinfo_alv,
lt_sort TYPE slis_t_sortinfo_alv, " Sort table
lt_events TYPE slis_t_event,
ls_event TYPE slis_alv_event.
* Build field catalog and sort table
m_fieldcat 'VBELN' 'VBAK' 'GT_VBAK'.
m_fieldcat 'VKORG' 'VBAK' 'GT_VBAK'.
m_fieldcat 'VTWEG' 'VBAK' 'GT_VBAK'.
m_fieldcat 'KUNNR' 'VBAK' 'GT_VBAK'.
m_fieldcat 'ERDAT' 'VBAK' 'GT_VBAK'.
m_sort 'VBELN'.
* Build Event Table
MOVE 'TOP_OF_PAGE' TO ls_event-name.
MOVE 'TOP_OF_PAGE' TO ls_event-form.
APPEND ls_event TO lt_events.
gs_layout-list_append = c_x.
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
i_callback_program = sy-cprog
it_fieldcat = lt_fieldcat
is_layout = gs_layout
it_sort = lt_sort
it_events = lt_events
i_save = 'A'
TABLES
t_outtab = gt_vbak.
ENDFORM. " END_OF_LIST_2 -
Hi Experts,
Can i achieve sorting in Blocked ALV report as we can do in ALV Grid Display.???
If so, how can this be achieved????
For example, if there are 3 records with the same value for a field.....say thfreee rows with name 'Gaurav'.
I want to show 'Gaurav' only in the first row and the other two rows must be empty.
Gaurav 1 2 3
Gaurav 4 5 6
Gaurav 7 8 9
Should be seen as
Gaurav 1 2 3
4 5 6
7 8 9
Thanks and regards
Gaurav raghavHere is the code.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_program_name = sy-repid
i_structure_name = 'ZCRM_ACTIVITY_REPORT'
CHANGING
ct_fieldcat = gt_fieldcatalog[]
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3.
IF sy-subrc EQ 0.
CLEAR gs_sort.
gs_sort-fieldname = 'ORG'.
gs_sort-tabname = 'GT_ITAB'.
gs_sort-spos = '1'.
gs_sort-up = 'X'.
APPEND gs_sort TO gt_sort.
CLEAR gs_sort.
gs_sort-fieldname = 'EMPLOYEE'.
gs_sort-tabname = 'GT_ITAB'.
gs_sort-spos = '2'.
gs_sort-up = 'X'.
APPEND gs_sort TO gt_sort.
ENDIF.
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'
EXPORTING
is_layout = gt_layout
it_fieldcat = gt_fieldcatalog
i_tabname = 'GT_ITAB'
it_events = gt_events
it_sort = gt_sort
i_text = 'Report 1 '
TABLES
t_outtab = gt_itab
EXCEPTIONS
program_error = 1
maximum_of_appends_reached = 2
OTHERS = 3.
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_DISPLAY'. -
Hi to all,
Iam displaying out put in BLOCKEd ALV using 2 internal tables.
Each table has 10 fields.
When I double click on particular column entry, it should call Transaction iw33.
Other 9 columns should not call transacton if i select entry from the column.
But iam able to call transaction for all the other column entries.
Iam tried using this with slis_selfield structure.
In the run time this structure is not capturing the fieldname.
How can i capture field name.
kindly send yr valuable replys.Hi naveen,
1. I also tried the same thing, but its not returning the column name
on which we click.
2. One workaround can be
a) we get the VALUE in slis_selfield structure.
b) loop at the internal table where COLUMN1 = VALUE
c) if found, then we can somehow deduce that column1 has been clicked.
(It can happen that other columns can contain the same value,
then it can be confusing)
regards,
amit m. -
Page Number - Total Page number in Blocked ALV
Hi Gurus,
I need to print the page numbers like 1 of 5 in the ALV footer. Am able to print the current page number but am unable to print the total page number in the footer of the Blocked ALV. Can any one guide me how to display the total number of pages.
Points will be awarded
Thanks
RaviHi,
Please refer to the link below :
http://www.sapdev.co.uk/reporting/alv/alvgrid_events.htm
Thanks,
Sri. -
Seperate ALV Properties in Blocked ALV
Hi All,
I have created a blocked ALV. The standard ALV functionalities like Sort ,Filter etc is working only for the first list.
Is there any techniques to give seperate functionalities for each list?
Iam using reuse_alv_grid_display .
and LAYOUT-LIST_APPEND to show the blocked ALV.
thanks and regards,
Subeesh KannottilHi Yawa Ding,
I have 3 lists .The standard ALV unctionality works only for the first list.
I want all these properties to be applied to all lists
Thanks and Regards,
Subeesh Kannottil -
Header and Logo in Blocked ALV
Is It possible to put header and logo in Blocked ALV Report.
Is yes shall I go with the same way we put the Header and Logo in ALV Grid report.
Thanks in Advance.Hi,
You can put the haeder and logo same like we have used to do in classical ALV's....
sample code snippet..
REPORT ZALV_BLOCKEDALV .
*provide tables
TABLES: MARA, MAKT, MARD.
*provide type-pools
TYPE-POOLS: SLIS.
*provide select-options
SELECT-OPTIONS: S_MATNR FOR MARA-MATNR.
*provide data objects
DATA: V_REPID TYPE SY-REPID,
WA_MARA_FIELD TYPE SLIS_FIELDCAT_ALV, "it is for field catalog
WA_MAKT_FIELD TYPE SLIS_FIELDCAT_ALV,
WA_MARD_FIELD TYPE SLIS_FIELDCAT_ALV,
WA_MARA TYPE MARA,
WA_MAKT TYPE MAKT,
WA_MARD TYPE MARD, IT_MARA_FIELD TYPE SLIS_T_FIELDCAT_ALV,
IT_MAKT_FIELD TYPE SLIS_T_FIELDCAT_ALV,
IT_MARD_FIELD TYPE SLIS_T_FIELDCAT_ALV,
IT_MARA TYPE TABLE OF MARA,
IT_MAKT TYPE TABLE OF MAKT,
IT_MARD TYPE TABLE OF MARD, V_LAYOUT TYPE SLIS_LAYOUT_ALV,
IT_EVENTS TYPE SLIS_T_EVENT, "it is for events
WA_EVENTS TYPE SLIS_ALV_EVENT.V_REPID = SY-REPID.
*provide field catalog perform
PERFORM FIELD_CAT.
*call the initial function module
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_INIT'
EXPORTING
I_CALLBACK_PROGRAM = V_REPID
* I_CALLBACK_PF_STATUS_SET = ' '
* I_CALLBACK_USER_COMMAND = ' '
* IT_EXCLUDING =
*provide perform for select the data
PERFORM SELECT_DATA.
*call mara append list
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'
EXPORTING
IS_LAYOUT = V_LAYOUT
IT_FIELDCAT = IT_MARA_FIELD[]
I_TABNAME = 'MARA'
IT_EVENTS = IT_EVENTS[]
* IT_SORT =
* I_TEXT = ' '
TABLES
T_OUTTAB = IT_MARA
EXCEPTIONS
PROGRAM_ERROR = 1
MAXIMUM_OF_APPENDS_REACHED = 2
OTHERS = 3.
*call makt append list
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'
EXPORTING
IS_LAYOUT = V_LAYOUT
IT_FIELDCAT = IT_MAKT_FIELD
I_TABNAME = 'MAKT'
IT_EVENTS = IT_EVENTS
* IT_SORT =
* I_TEXT = ' '
TABLES
T_OUTTAB = IT_MAKT
EXCEPTIONS
PROGRAM_ERROR = 1
MAXIMUM_OF_APPENDS_REACHED = 2
OTHERS = 3.
*call mard append list
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'
EXPORTING
IS_LAYOUT = V_LAYOUT
IT_FIELDCAT = IT_MARD_FIELD
I_TABNAME = 'MARD'
IT_EVENTS = IT_EVENTS
* IT_SORT =
* I_TEXT = ' '
TABLES
T_OUTTAB = IT_MARD
EXCEPTIONS
PROGRAM_ERROR = 1
MAXIMUM_OF_APPENDS_REACHED = 2
OTHERS = 3.
*display the data
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_DISPLAY'
* EXPORTING
* I_INTERFACE_CHECK = ' '
* IS_PRINT =
* I_SCREEN_START_COLUMN = 0
* I_SCREEN_START_LINE = 0
* I_SCREEN_END_COLUMN = 0
* I_SCREEN_END_LINE = 0
* IMPORTING
* E_EXIT_CAUSED_BY_CALLER =
* ES_EXIT_CAUSED_BY_USER =
* EXCEPTIONS
* PROGRAM_ERROR = 1
* OTHERS = 2.
*& Form TOP_PAGE
* text
FORM TOP_PAGE. WRITE:/ 'THIS IS BLOCKED ALV REPORT PROGRAM BASED ON 3 BLOCKS' COLOR
5.ENDFORM. "TOP_PAGE
*& Form FIELD_CAT
* text
* --> p1 text
* <-- p2 text
FORM FIELD_CAT .WA_MARA_FIELD-COL_POS = 1.
WA_MARA_FIELD-FIELDNAME = 'MATNR'.
WA_MARA_FIELD-REF_TABNAME = 'MARA'.
APPEND WA_MARA_FIELD TO IT_MARA_FIELD.
CLEAR WA_MARA_FIELD.WA_MARA_FIELD-COL_POS = 2.
WA_MARA_FIELD-FIELDNAME = 'ERSDA'.
WA_MARA_FIELD-REF_TABNAME = 'MARA'.
APPEND WA_MARA_FIELD TO IT_MARA_FIELD.
CLEAR WA_MARA_FIELD.WA_MARA_FIELD-COL_POS = 3.
WA_MARA_FIELD-FIELDNAME = 'ERNAM'.
WA_MARA_FIELD-REF_TABNAME = 'MARA'.
APPEND WA_MARA_FIELD TO IT_MARA_FIELD.
CLEAR WA_MARA_FIELD.WA_MARA_FIELD-COL_POS = 4.
WA_MARA_FIELD-FIELDNAME = 'LAEDA'.
WA_MARA_FIELD-REF_TABNAME = 'MARA'.
APPEND WA_MARA_FIELD TO IT_MARA_FIELD.
CLEAR WA_MARA_FIELD.WA_MAKT_FIELD-COL_POS = '1'.
WA_MAKT_FIELD-FIELDNAME = 'MATNR'.
WA_MAKT_FIELD-REF_TABNAME = 'MAKT'.
APPEND WA_MAKT_FIELD TO IT_MAKT_FIELD.
CLEAR WA_MAKT_FIELD.WA_MAKT_FIELD-COL_POS = 2.
WA_MAKT_FIELD-FIELDNAME = 'MAKTX'.
WA_MAKT_FIELD-REF_TABNAME = 'MAKT'.
APPEND WA_MAKT_FIELD TO IT_MAKT_FIELD.
CLEAR WA_MAKT_FIELD.WA_MAKT_FIELD-COL_POS = 3.
WA_MAKT_FIELD-FIELDNAME = 'MAKTG'.
WA_MAKT_FIELD-REF_TABNAME = 'MAKT'.
APPEND WA_MAKT_FIELD TO IT_MAKT_FIELD.
CLEAR WA_MAKT_FIELD.WA_MARD_FIELD-COL_POS = 1.
WA_MARD_FIELD-FIELDNAME = 'MATNR'.
WA_MARD_FIELD-REF_TABNAME = 'MARD'.
APPEND WA_MARD_FIELD TO IT_MARD_FIELD.
CLEAR WA_MARD_FIELD.WA_MARD_FIELD-COL_POS = 2.
WA_MARD_FIELD-FIELDNAME = 'WERKS'.
WA_MARD_FIELD-REF_TABNAME = 'MARD'.
APPEND WA_MARD_FIELD TO IT_MARD_FIELD.
CLEAR WA_MARD_FIELD.WA_MARD_FIELD-COL_POS = 3.
WA_MARD_FIELD-FIELDNAME = 'LGORT'.
WA_MARD_FIELD-REF_TABNAME = 'MARD'.
APPEND WA_MARD_FIELD TO IT_MARD_FIELD.
CLEAR WA_MARD_FIELD.WA_EVENTS-FORM = 'TOP_PAGE'.
WA_EVENTS-NAME = 'TOP_OF_PAGE'.
APPEND WA_EVENTS TO IT_EVENTS.ENDFORM. " FIELD_CAT
*& Form SELECT_DATA
* text
* --> p1 text
* <-- p2 text
FORM SELECT_DATA .SELECT *
FROM MARA
INTO TABLE IT_MARA
WHERE MATNR IN S_MATNR.SELECT *
FROM MAKT
INTO TABLE IT_MAKT
WHERE MATNR IN S_MATNR.SELECT *
FROM MARD
INTO TABLE IT_MARD
WHERE MATNR IN S_MATNR.ENDFORM. " SELECT_DATA
hope this will help you
regards,
kiran
Edited by: kiran kumar on Aug 23, 2010 1:43 PM -
How to handle Events in Blocked ALV report
Hi All,
I have a Blocked ALV report, I have a requirement where if I double click a row in blocked ALV report, it should branch off to MM01 transaction code and the material number and change number should get populated with the material number and change number in my program.
Is there any idea how to do this.
Thanks,
Vishal.hi anil,
I have used user_command1 as the function module however the field details are not getting captured.
How can we use set get parameters in this aspect.
Please elaborate your answer.
Thanks,
Vishal. -
Hi!
In Block AlV we r using Fun Mod
REUSE_ALV_BLOCK_LIST_APPEND
To display data in blocks and called again to display other data in block in same screen.
I want to know REUSE_ALV_BLOCK_LIST_DISPLAY Fun mod is optional or mandatory
without using this also shall i get the required o/p.
Looking for your reply.
Rahul.REUSE_ALV_BLOCK_LIST_DISPLAY is mandatory, without calling this FM, you will not get any disply.
In the below ALV if you comment out t REUSE_ALV_BLOCK_LIST_DISPLAY FM call call you will not get disply.
REPORT ztest1 .
TABLES: ekko, mara.
TYPE-POOLS: slis.
*Data Declaration
TYPES: BEGIN OF t_ekko,
ebeln TYPE ekpo-ebeln,
ebelp TYPE ekpo-ebelp,
statu TYPE ekpo-statu,
aedat TYPE ekpo-aedat,
matnr TYPE ekpo-matnr,
menge TYPE ekpo-menge,
meins TYPE ekpo-meins,
netpr TYPE ekpo-netpr,
peinh TYPE ekpo-peinh,
END OF t_ekko.
TYPES: BEGIN OF t_mara,
matnr TYPE mara-matnr,
mtart TYPE mara-mtart,
matkl TYPE mara-matkl,
END OF t_mara.
DATA: it_ekko TYPE STANDARD TABLE OF t_ekko INITIAL SIZE 0,
it_mara TYPE STANDARD TABLE OF t_mara INITIAL SIZE 0.
*ALV data declarations
DATA: fieldcatalog1 TYPE slis_t_fieldcat_alv WITH HEADER LINE,
fieldcatalog2 TYPE slis_t_fieldcat_alv WITH HEADER LINE,
gd_layout TYPE slis_layout_alv,
gt_events_ekko TYPE slis_t_event,
xs_event TYPE slis_alv_event,
gt_events_mara TYPE slis_t_event,
gd_repid TYPE sy-repid,
gt_print TYPE slis_print_alv.
* START-OF-SELECTION
START-OF-SELECTION.
PERFORM data_retrival.
PERFORM build_fieldcat.
PERFORM build_layout.
PERFORM events_ekko.
PERFORM events_mara.
PERFORM display_alv_report.
*SUBROUTINES
*& Form data_retrival
FORM data_retrival .
SELECT ebeln ebelp statu aedat matnr menge meins netpr peinh
UP TO 10 ROWS
FROM ekpo
INTO TABLE it_ekko.
SELECT matnr mtart matkl
UP TO 10 ROWS
FROM mara
INTO TABLE it_mara.
ENDFORM. " data_retrival
*& Form build_fieldcat
FORM build_fieldcat .
* FOR EKKO
fieldcatalog1-fieldname = 'EBELN'.
fieldcatalog1-seltext_m = 'Purchase Order'.
fieldcatalog1-col_pos = 0.
fieldcatalog1-outputlen = 10.
fieldcatalog1-emphasize = 'X'.
fieldcatalog1-key = 'X'.
APPEND fieldcatalog1 TO fieldcatalog1.
CLEAR fieldcatalog1.
fieldcatalog1-fieldname = 'EBELP'.
fieldcatalog1-seltext_m = 'PO Item'.
fieldcatalog1-col_pos = 1.
APPEND fieldcatalog1 TO fieldcatalog1.
CLEAR fieldcatalog1.
fieldcatalog1-fieldname = 'STATU'.
fieldcatalog1-seltext_m = 'Status'.
fieldcatalog1-col_pos = 2.
APPEND fieldcatalog1 TO fieldcatalog1.
CLEAR fieldcatalog1.
fieldcatalog1-fieldname = 'AEDAT'.
fieldcatalog1-seltext_m = 'Item change date'.
fieldcatalog1-col_pos = 3.
APPEND fieldcatalog1 TO fieldcatalog1.
CLEAR fieldcatalog1.
fieldcatalog1-fieldname = 'MATNR'.
fieldcatalog1-seltext_m = 'Material Number'.
fieldcatalog1-col_pos = 4.
APPEND fieldcatalog1 TO fieldcatalog1.
CLEAR fieldcatalog1.
fieldcatalog1-fieldname = 'MENGE'.
fieldcatalog1-seltext_m = 'PO quantity'.
fieldcatalog1-col_pos = 5.
APPEND fieldcatalog1 TO fieldcatalog1.
CLEAR fieldcatalog1.
fieldcatalog1-fieldname = 'MEINS'.
fieldcatalog1-seltext_m = 'Order Unit'.
fieldcatalog1-col_pos = 6.
APPEND fieldcatalog1 TO fieldcatalog1.
CLEAR fieldcatalog1.
fieldcatalog1-fieldname = 'NETPR'.
fieldcatalog1-seltext_m = 'Net Price'.
fieldcatalog1-col_pos = 7.
fieldcatalog1-outputlen = 15.
fieldcatalog1-do_sum = 'X'. "Display column total
fieldcatalog1-datatype = 'CURR'.
APPEND fieldcatalog1 TO fieldcatalog1.
CLEAR fieldcatalog1.
fieldcatalog1-fieldname = 'PEINH'.
fieldcatalog1-seltext_m = 'Price Unit'.
fieldcatalog1-col_pos = 8.
APPEND fieldcatalog1 TO fieldcatalog1.
CLEAR fieldcatalog1.
* FOR MARA
fieldcatalog2-fieldname = 'MATNR'.
fieldcatalog2-seltext_m = 'Material No'.
fieldcatalog2-col_pos = 0.
fieldcatalog2-outputlen = 10.
fieldcatalog2-emphasize = 'X'.
fieldcatalog2-key = 'X'.
APPEND fieldcatalog2 TO fieldcatalog2.
CLEAR fieldcatalog1.
fieldcatalog2-fieldname = 'MTART'.
fieldcatalog2-seltext_m = 'Material type'.
fieldcatalog2-col_pos = 1.
APPEND fieldcatalog2 TO fieldcatalog2.
CLEAR fieldcatalog2.
fieldcatalog2-fieldname = 'MATKL'.
fieldcatalog2-seltext_m = 'Material Group'.
fieldcatalog2-col_pos = 2.
APPEND fieldcatalog2 TO fieldcatalog2.
CLEAR fieldcatalog2.
ENDFORM. " build_fieldcat
*& Form build_layout
FORM build_layout .
gd_layout-no_input = 'X'.
gd_layout-colwidth_optimize = 'X'.
gd_layout-totals_text = 'Totals'(201).
ENDFORM. " build_layout
*& Form events_ekko
FORM events_ekko .
CLEAR xs_event.
xs_event-name = slis_ev_top_of_page.
xs_event-form = 'TOP_OF_PAGE-EKKO'.
APPEND xs_event TO gt_events_ekko.
CLEAR xs_event.
xs_event-name = slis_ev_end_of_list.
xs_event-form = 'END_OF_LIST_EKKO'.
APPEND xs_event TO gt_events_ekko.
ENDFORM. " events_ekko
*& Form TOP_OF_PAGE-EKKO
FORM top_of_page-ekko.
WRITE: / 'TOP OF PAGE : Purchase Order'.
ENDFORM. "XTOP_OF_PAGE
*& Form END_OF_LIST_EKKO
FORM end_of_list_ekko.
WRITE: / 'end OF list : Purchase Order'.
ENDFORM. "END_OF_LIST_EKKO
*& Form events_mara
FORM events_mara .
CLEAR xs_event.
xs_event-name = slis_ev_top_of_list.
xs_event-form = 'TOP_OF_LIST-MARA'.
APPEND xs_event TO gt_events_mara.
CLEAR xs_event.
xs_event-name = slis_ev_end_of_page.
xs_event-form = 'END_OF_PAGE_MARA'.
APPEND xs_event TO gt_events_mara.
ENDFORM. "events_mara
*& Form TOP_OF_LIST-MARA
FORM top_of_list-mara.
WRITE: / 'TOP OF LIST : Material Master'.
ENDFORM. "TOP_OF_LIST-MARA
*& Form END_OF_PAGE_MARA
FORM end_of_page_mara.
WRITE: / 'End OF Page : Material Master'.
ENDFORM. "END_OF_PAGE_MARA
*& Form display_alv_report
FORM display_alv_report .
gd_repid = sy-repid.
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_INIT'
EXPORTING
i_callback_program = sy-repid.
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'
EXPORTING
is_layout = gd_layout
it_fieldcat = fieldcatalog1[]
i_tabname = 'it_ekko'
it_events = gt_events_ekko
TABLES
t_outtab = it_ekko
EXCEPTIONS
program_error = 1
maximum_of_appends_reached = 2
OTHERS = 3
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'
EXPORTING
is_layout = gd_layout
it_fieldcat = fieldcatalog2[]
i_tabname = 'it_mara'
it_events = gt_events_mara
TABLES
t_outtab = it_mara
EXCEPTIONS
program_error = 1
maximum_of_appends_reached = 2
OTHERS = 3
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
gt_print-reserve_lines = 2.
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_DISPLAY'
EXPORTING
is_print = gt_print.
ENDFORM. " display_alv_report
Maybe you are looking for
-
MIRO - How to block all invoices from a certain vendor?
Hi, I would like to block alll invoices from a certain vendor. In XK02 (change vendor) --> company code data --> payment transactions, I have tried a A and a * and a M in the field 'Payment Block', but it doens't make any difference. If I receive an
-
Images lost in converting Word 2007 file to PDF
I have a Word 2007 document (docx), with inserted JPGs. If the text wrapping of the images is set to anything but "in line with text", the images do not appear in the PDF file created from the docx. I have tried many different combinations of Acrob
-
Windows support software could not be saved to the selected folder?
Hi all I am trying to install windows 7 using bootcamp on my I5 Mac mini but every time bootcamp moves on to downloading the windows support files i get the error "Windows support software could not be saved to the selcted folder" my usb drive is an
-
Apple TV screen is smaller than TV size
Hello. We just installed a sound bar on our TV and now the HDMI cable for the Apple TV is plugged directly into the receiver, vs the TV. Now the Apple TV screen is a smaller box centered in the middle of the TV, about half the size as the actual TV.
-
SOAP adapter and WS with rpc/encoded
Hi All, Does anyone know if and how the SAP XI 3.0 SOAP Adapter supports WebServices which expects XML messages in rpc/encoded. Cheers, FRank