Hi Rajkumar,
Here is my code and the subtotal works but it does not show the text.
TABLES: mard.
TYPE-POOLS: sdydo, icon, slis.
* ALV required data objects.
DATA: w_title TYPE lvc_title,
w_repid TYPE sy-repid,
w_comm TYPE slis_formname,
w_status TYPE slis_formname,
x_layout TYPE slis_layout_alv,
ls_events TYPE LINE OF slis_t_event,
t_events TYPE slis_t_event,
t_fieldcat TYPE slis_t_fieldcat_alv,
x_sort type LINE OF slis_t_sortinfo_alv,
t_sort TYPE slis_t_sortinfo_alv,
ls_heading TYPE slis_listheader,
t_heading TYPE slis_t_listheader,
ls_fieldcat TYPE slis_fieldcat_alv,
gs_variant LIKE disvariant.
DATA:
wa_layout TYPE slis_layout_alv,
wa_events TYPE slis_alv_event,
wa_sort TYPE slis_sortinfo_alv.
DATA: is_print TYPE slis_print_alv,
gset TYPE lvc_s_glay,
%runmode TYPE aqlimode.
DATA: BEGIN OF it_mard OCCURS 0,
matnr LIKE mard-matnr,
werks LIKE mard-werks,
lgort LIKE mard-lgort,
ebeln LIKE ekpo-ebeln,
ebelp LIKE ekpo-ebelp,
bstyp LIKE ekpo-bstyp,
labst LIKE mard-labst.
DATA: END OF it_mard.
DATA: wa_mard LIKE it_mard.
DATA: BEGIN OF it_ekpo OCCURS 0,
matnr LIKE mard-matnr, "Material
ebeln LIKE ekpo-ebeln, "PO Number
ebelp LIKE ekpo-ebelp, "Line Item
bstyp LIKE ekko-bstyp, "Type
bsart LIKE ekko-bsart, "Category
ekgrp LIKE ekko-ekgrp, "Purchasing Group
aedat LIKE ekpo-aedat, "Doc Date
reswk LIKE ekko-reswk, "Vendor/Supplying Plant
matkl LIKE ekpo-matkl, "Material Group
pstyp LIKE ekpo-pstyp, "Item Category
werks LIKE ekpo-werks, "Plant
menge LIKE ekpo-menge, "Order Quantity
meins LIKE ekpo-meins, "not sure for field
"quantity in SKU
lmein LIKE ekpo-lmein,
netpr LIKE ekpo-netpr, "net Price
"curreny
peinh LIKE ekpo-peinh, "price unit
ktmng LIKE ekpo-ktmng, "Target Quantity
"open target quantity
"to be del(qty)
"to be del(value)
"to be invoiced(qty)
"to be invoiced(value)
labst LIKE mard-labst. "Available Quantity
DATA: END OF it_ekpo.
DATA: wa_ekpo LIKE it_ekpo.
DATA: BEGIN OF it_data OCCURS 0,
matnr LIKE mard-matnr, "Material
ebeln LIKE ekpo-ebeln, "PO Number
ebelp LIKE ekpo-ebelp, "Line Item
bstyp LIKE ekko-bstyp, "Type
bsart LIKE ekko-bsart, "Category
ekgrp LIKE ekko-ekgrp, "Purchasing Group
aedat LIKE ekpo-aedat, "Doc Date
reswk LIKE ekko-reswk, "Vendor/Supplying Plant
matkl LIKE ekpo-matkl, "Material Group
pstyp LIKE ekpo-pstyp, "Item Category
werks LIKE ekpo-werks, "Plant
menge LIKE ekpo-menge, "Order Quantity
meins LIKE ekpo-meins, "not sure for field
"quantity in SKU
lmein LIKE ekpo-lmein,
netpr LIKE ekpo-netpr, "net Price
"curreny
peinh LIKE ekpo-peinh, "price unit
ktmng LIKE ekpo-ktmng, "Target Quantity
"open target quantity
"to be del(qty)
"to be del(value)
"to be invoiced(qty)
"to be invoiced(value)
labst LIKE mard-labst. "Available Quantity
DATA: END OF it_data.
DATA: wa_data LIKE it_data.
DATA: BEGIN OF it_final OCCURS 0,
matnr LIKE mard-matnr, "Material
ebeln LIKE ekpo-ebeln, "PO Number
ebelp LIKE ekpo-ebelp, "Line Item
bstyp LIKE ekko-bstyp, "Type
bsart LIKE ekko-bsart, "Category
ekgrp LIKE ekko-ekgrp, "Purchasing Group
aedat LIKE ekpo-aedat, "Doc Date
reswk LIKE ekko-reswk, "Vendor/Supplying Plant
matkl LIKE ekpo-matkl, "Material Group
pstyp LIKE ekpo-pstyp, "Item Category
werks LIKE ekpo-werks, "Plant
menge LIKE ekpo-menge, "Order Quantity
meins LIKE ekpo-meins, "not sure for field
"quantity in SKU
lmein LIKE ekpo-lmein,
netpr LIKE ekpo-netpr, "net Price
"curreny
peinh LIKE ekpo-peinh, "price unit
ktmng LIKE ekpo-ktmng, "Target Quantity
"open target quantity
"to be del(qty)
"to be del(value)
"to be invoiced(qty)
"to be invoiced(value)
labst LIKE mard-labst. "Available Quantity
DATA: END OF it_final.
DATA: wa_final LIKE it_final.
DATA :v_tabix TYPE sy-tabix.
SELECT-OPTIONS: p_matnr FOR mard-matnr,
p_plant FOR mard-werks.
START-OF-SELECTION.
PERFORM get_data.
PERFORM display_report.
FORM get_data.
SELECT matnr werks
INTO CORRESPONDING FIELDS OF TABLE it_mard
FROM mard
WHERE labst NE '0.000'.
DELETE it_mard WHERE matnr NOT IN p_matnr.
SELECT matnr ebeln ebelp werks bstyp pstyp audat matkl aedat matkl menge meins lmein netpr peinh ktmng
INTO CORRESPONDING FIELDS OF TABLE it_ekpo
FROM ekpo
WHERE bstyp EQ 'F'
AND loekz NE 'L'.
DELETE it_ekpo WHERE matnr NOT IN p_matnr.
it_data[] = it_ekpo[].
LOOP AT it_mard.
READ TABLE it_data WITH KEY werks = it_mard-werks.
IF sy-subrc NE 0.
it_data-matnr = it_mard-matnr.
it_data-werks = it_mard-werks.
APPEND it_data. CLEAR it_data.
ENDIF.
ENDLOOP.
SORT it_data BY matnr ebeln ASCENDING.
LOOP AT it_data INTO wa_data.
it_final-matnr = wa_data-matnr.
it_final-ebeln = wa_data-ebeln.
it_final-ebelp = wa_data-ebelp.
it_final-bstyp = wa_data-bstyp.
it_final-aedat = wa_data-aedat.
it_final-matkl = wa_data-matkl.
it_final-werks = wa_data-werks.
it_final-menge = wa_data-menge.
it_final-meins = wa_data-meins.
it_final-lmein = wa_data-lmein.
it_final-netpr = wa_data-netpr.
it_final-peinh = wa_data-peinh.
it_final-ktmng = wa_data-ktmng.
it_final-bstyp = wa_data-bstyp.
SELECT SINGLE epstp
INTO it_final-pstyp
FROM t163x
WHERE pstyp EQ wa_data-pstyp
AND spras EQ 'EN'.
SELECT SINGLE bsart ekgrp reswk
INTO (it_final-bsart, it_final-ekgrp, it_final-reswk)
FROM ekko
WHERE ebeln = wa_data-ebeln.
DATA: avlqty TYPE i.
SELECT labst
INTO avlqty
FROM mard
WHERE matnr EQ wa_data-matnr
AND werks EQ wa_data-werks.
it_final-labst = it_final-labst + avlqty.
ENDSELECT.
APPEND it_final. CLEAR it_final.
ENDLOOP.
SORT it_final by matnr ebeln ASCENDING.
ENDFORM.
FORM display_report.
is_print-no_print_selinfos = 'X'.
is_print-no_print_listinfos = 'X'.
is_print-print_ctrl = 'X'.
PERFORM pf_write_fieldcat USING:
'MATNR' 'it_data' 'Material Number' ' ',
'EBELN' 'it_data' 'PO Number' ' ',
'EBELP' 'it_data' 'Line Item' ' ',
'BSART' 'it_data' 'Type' ' ',
'BSTYP' 'it_data' 'Category' ' ',
'EKGRP' 'it_data' 'Purchasing Group' ' ',
'AEDAT' 'it_data' 'Doc. Date' ' ',
'RESWK' 'it_data' 'Vendor/Supplying Plant' ' ',
'MATKL' 'it_data' 'Material Group' ' ',
'PSTYP' 'it_data' 'Item Category' ' ',
'WERKS' 'it_data' 'Plant' ' ',
'MENGE' 'it_data' 'Order Quantity' ' ',
'MEINS' 'it_data' 'Order Unit' ' ',
* '' 'it_data' '' ' ',
'LMEIN' 'it_data' 'SKU' ' ',
'NETPR' 'it_data' 'Net Price' ' ',
* '' 'it_data' '' ' ',
'PEINH' 'it_data' 'Price Unit' ' ',
'KTMNG' 'it_data' 'Target Quantity' ' ',
* '' 'it_data' '' ' ',
* '' 'it_data' '' ' ',
* '' 'it_data' '' ' ',
* '' 'it_data' '' ' ',
'LABST' 'it_data' 'Available Quantity' ' '.
* '' 'it_data' '' ' '.
* Layout
x_layout-zebra = 'X'.
x_layout-no_keyfix = ' '.
x_layout-colwidth_optimize = 'X'.
* GUI Status
w_status = 'SET_PF_STATUS'.
w_repid = sy-repid.
* User commands
w_comm = 'USER_COMMAND'.
gs_variant-report = sy-repid.
gs_variant-username = sy-uname.
gset-no_colwopt = 'X'.
PERFORM build_events.
PERFORM sub_populate_sort.
PERFORM sub_get_event.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy-repid
it_fieldcat = t_fieldcat
is_layout = x_layout
* it_sort = it_sortcat
it_sort = t_sort
it_events = t_events
is_variant = gs_variant
i_save = 'A'
is_print = is_print
i_default = 'X'
TABLES
t_outtab = it_final
EXCEPTIONS
program_error = 1
OTHERS = 2.
ENDFORM. " display_report
FORM pf_write_fieldcat USING fname
tname
text
len.
ls_fieldcat-fieldname = fname.
ls_fieldcat-tabname = tname.
ls_fieldcat-seltext_l = text.
ls_fieldcat-outputlen = len.
IF fname = 'NETPR'.
ls_fieldcat-do_sum = 'X'.
ENDIF.
IF len = '0'.
ls_fieldcat-outputlen = '1'.
ls_fieldcat-no_out = 'X'.
ENDIF.
APPEND ls_fieldcat TO t_fieldcat.
CLEAR ls_fieldcat.
ENDFORM.
FORM sub_get_event .
CONSTANTS : c_formname_subtotal_text TYPE slis_formname VALUE 'SUBTOTAL_TEXT'.
DATA: l_s_event TYPE slis_alv_event.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
i_list_type = 4
IMPORTING
et_events = t_events
EXCEPTIONS
list_type_wrong = 0
OTHERS = 0.
* Subtotal
READ TABLE t_events INTO l_s_event
WITH KEY name = slis_ev_subtotal_text.
IF sy-subrc = 0.
MOVE c_formname_subtotal_text TO l_s_event-form.
MODIFY t_events FROM l_s_event INDEX sy-tabix.
ENDIF.
ENDFORM. " sub_get_event
FORM subtotal_text CHANGING
p_total TYPE any
p_subtot_text TYPE slis_subtot_text.
"Data Declarations
DATA: L_DOC TYPE CHAR50 VALUE 'PURCHASE DOCUMENT',
L_TEMP TYPE CHAR30.
"Get the Subtotal document number
L_TEMP = p_subtot_text-display_text_for_subtotal.
"Append Purchase document word
CONCATENATE L_DOC L_TEMP INTO L_DOC SEPARATED BY SPACE.
p_subtot_text-display_text_for_subtotal = 'Purchase Document'."L_DOC.
ENDFORM.
FORM sub_populate_sort .
* Sort on material
wa_sort-spos = '01' .
wa_sort-fieldname = 'MATNR'.
wa_sort-tabname = 'IT_FINAL'.
wa_sort-up = 'X'.
wa_sort-subtot = 'X'.
APPEND wa_sort TO t_sort .
CLEAR wa_sort.
* Sort on plant
wa_sort-spos = '02'.
wa_sort-fieldname = 'EBELN'.
wa_sort-tabname = 'IT_FINAL'.
wa_sort-up = 'X'.
wa_sort-subtot = 'X'.
APPEND wa_sort TO t_sort .
CLEAR wa_sort.
ENDFORM.
FORM build_events.
CLEAR:
wa_events, t_events[].
wa_events-name = 'SUBTOTAL_TEXT'.
wa_events-form = 'SUBTOTAL_TEXT'.
APPEND wa_events TO t_events.
CLEAR wa_events.
ENDFORM.