2008 Jul 03 5:46 AM
Hi Gurus,
I developed ALV Report(Grid Dispalay)
I am getting Subtotals but I am not getting SubTotal Text.
for Subtotal text I used REUSE_ALV_EVENTS_GET
and I am passing the form name for the Subtotal Text.
but the form is not calling by ALV
give me the sollution for this problem
program.
REPORT zrpp33a NO STANDARD PAGE HEADING.
*******************************************************************
T Y P E P O O L S **********
*******************************************************************
TYPE-POOLS: slis.
*******************************************************************
T Y P E S **********
*******************************************************************
***...Types for Materilas
TYPES: BEGIN OF type_mat,
matnr TYPE mara-matnr, "Material Number
matkl TYPE mara-matkl, "Material Group
maktx TYPE makt-maktx, "Material Description (Short Text)
meinh TYPE marm-meinh, "Alternative Unit of Measure for Stockkeeping Unit
umrez TYPE marm-umrez, "Numerator for Conversion to Base Units of Measure
umren TYPE marm-umren, "Denominator for conversion to base units of measure
END OF type_mat.
***...Types for MATKL
TYPES: BEGIN OF type_matkl,
matnr TYPE mara-matnr,
matkl TYPE mara-matkl,
END OF type_matkl.
***...Types for MRP
TYPES: BEGIN OF type_mrp,
matnr TYPE mara-matnr, "Material Number
werks TYPE marc-werks, "Plant
dispo TYPE marc-dispo, "MRP Controller (Materials Planner)
END OF type_mrp.
TYPES: BEGIN OF type_t024d,
werks TYPE t024d-werks, "Plant
dispo TYPE t024d-dispo, "MRP Controller (Materials Planner)
dsnam TYPE t024d-dsnam, "Name MRP controller
END OF type_t024d.
***...Types for CAUFV
TYPES: BEGIN OF type_caufv,
aufnr TYPE caufv-aufnr, "Order Number
auart TYPE caufv-auart, "Order Type
werks TYPE caufv-werks, "Plant
ftrmi TYPE caufv-ftrmi, "Actual release date
plnbez TYPE caufv-plnbez, "Material Number
END OF type_caufv.
***...Types for AUFM
TYPES: BEGIN OF type_aufm,
mblnr TYPE aufm-mblnr, "Number of Material Document
zeile TYPE aufm-zeile, "Item in Material Document
budat TYPE aufm-budat, "Posting Date in the Document
bwart TYPE aufm-bwart, "Movement Type (Inventory Management)
matnr TYPE aufm-matnr, "Material Number(Component Number)
lgort TYPE aufm-lgort, "Storage Location
charg TYPE aufm-charg, "Batch Number
shkzg TYPE aufm-shkzg, "Debit/Credit Indicator
erfmg TYPE aufm-erfmg, "Quantity in Unit of Entry
erfme TYPE aufm-erfme, "Unit of Entry
aufnr TYPE aufm-aufnr, "Order Number
END OF type_aufm.
***...Types for AFRU
TYPES:BEGIN OF type_afru,
grund TYPE afru-grund, "Reason for Variance
wablnr TYPE afru-wablnr, "Number of Material Document
budat TYPE afru-budat, "Posting date
END OF type_afru.
TYPES: BEGIN OF type_mseg,
mblnr TYPE mseg-mblnr, "Number of Material Document
zeile TYPE mseg-zeile, "Item in Material Document
bwart TYPE mseg-bwart, "Movement Type (Inventory Management)
sgtxt TYPE mseg-sgtxt, "Item Text
grund TYPE mseg-grund, "Reason for Movement
END OF type_mseg.
TYPES: BEGIN OF type_t157e,
bwart TYPE t157e-bwart, "Movement Type (Inventory Management)
grund TYPE t157e-grund, "Reason for Movement
grtxt TYPE t157e-grtxt, "Text: Reason for Goods Movement
END OF type_t157e.
***...Types for Output Table
TYPES: BEGIN OF type_outtab,
post_date TYPE afru-budat, "Posting Date
shift TYPE t157e-grtxt, "Text: Reason for Goods Movement
mrp_cntrl TYPE marc-dispo, "MRP Controller (Materials Planner)
name_cntrl TYPE v_t024d-dsnam, "Name of MRP controller
ord_type TYPE caufv-auart, "Order Type
plant TYPE marc-werks , "Plant
mat_group TYPE mara-matkl, "Material Group
prod_ord TYPE aufm-aufnr, "Order Numbers
ord_release TYPE caufv-ftrmi, "Actual release date
move_type TYPE aufm-bwart, "Movement Type (Inventory Management)
stor_loc TYPE aufm-lgort, "Storage Location
comp_number TYPE aufm-matnr, "Material Number
comp_desc TYPE makt-maktx, "Material Description (Short Text)
comp_qty TYPE aufm-erfmg, "Quantity in Unit of Entry
uoe TYPE aufm-erfme, "Unit of Entry
comp_qtype_alt TYPE aufm-erfmg, "Quantity in Unit of Entry(Alternative)
uom_alt TYPE marm-meinh, "Unit of Entry((Alternative))
reas_cobb TYPE aufm-charg, "Batch Number
reas_cobb TYPE mseg-sgtxt, "Item Text
act_each TYPE aufm-erfmg, "Quantity in Unit of Entry(Alternative)
act_uom TYPE aufm-erfme, "Unit of Entry
END OF type_outtab.
*******************************************************************
C O N S T A N T S **********
*******************************************************************
***...Constant to store 'X'
CONSTANTS:c_x TYPE char1 VALUE 'X',
***...Constant to store 'E' for Error Message
c_error TYPE char1 VALUE 'E',
***...Constant to store 'I' for Information Message
c_inf TYPE char1 VALUE 'I',
***...Constant to store Output Table Name 'GIT_OUTTAB',
c_outtab TYPE slis_fieldcat_alv-tabname VALUE 'GIT_OUTTAB',
***...Constant to store Quantity Field Name 'COMP_QTY',
c_comp_qty TYPE slis_fieldcat_alv-fieldname VALUE 'COMP_QTY',
***...Constant to store Unit of Entry Field Name 'UOE'
c_uoe TYPE slis_fieldcat_alv-fieldname VALUE 'UOE',
***...Constant to store Alternative Component Quantity field name 'COMP_QTYPE_ALT'
c_comp_qtype_alt TYPE slis_fieldcat_alv-fieldname VALUE 'COMP_QTYPE_ALT',
***...Constant to store Ulternative Unit of Measurement field name 'UOM_ALT'
c_uom_alt TYPE slis_fieldcat_alv-fieldname VALUE 'UOM_ALT',
***...Constant to store Actual Each Field name 'ACT_EACH',
c_act_each TYPE slis_fieldcat_alv-fieldname VALUE 'ACT_EACH',
***...Constant to store Actual Unit of Measurement Field Name 'ACT_UOM'
c_act_uom TYPE slis_fieldcat_alv-fieldname VALUE 'ACT_UOM' ,
***...Constant for Movement Type '261'
c_261 TYPE aufm-bwart VALUE '261',
***...Constant for Movement Type '262'
c_262 TYPE aufm-bwart VALUE '262',
***...Constant for Movement Type '531'
c_531 TYPE aufm-bwart VALUE '531',
***...Constant for Movement Type '532'
c_532 TYPE aufm-bwart VALUE '532'.
*******************************************************************
W O R K A R E A **********
*******************************************************************
***...Work Area for SELECT-OPTIONS Material Group
DATA: BEGIN OF gs_matkl,
matkl TYPE t023-matkl,
END OF gs_matkl.
***...Work Area for SELECT-OPTIONS Plant
DATA: BEGIN OF gs_werks,
werks TYPE t001w-werks,
END OF gs_werks.
***...Work Area for SELECT-OPTIONS Order type
DATA:BEGIN OF gs_auart,
auart TYPE t003o-auart,
END OF gs_auart.
***...Work Area for SELECT-OPTIONS Acutal release Date
DATA: BEGIN OF gs_ftrmi,
ftrmi TYPE caufv-ftrmi,
END OF gs_ftrmi.
***...Work Area for ALV Layout
DATA: gs_layout TYPE slis_layout_alv.
*******************************************************************
I N T E R N A L T A B L E S **********
*******************************************************************
DATA:git_mat TYPE STANDARD TABLE OF type_mat,
git_matkl TYPE STANDARD TABLE OF type_matkl,
git_mrp TYPE STANDARD TABLE OF type_mrp,
git_t024d TYPE STANDARD TABLE OF type_t024d,
git_caufv TYPE STANDARD TABLE OF type_caufv,
git_aufm TYPE STANDARD TABLE OF type_aufm ,
git_afru TYPE STANDARD TABLE OF type_afru,
git_mseg TYPE STANDARD TABLE OF type_mseg,
git_t157e TYPE STANDARD TABLE OF type_t157e,
git_outtab TYPE STANDARD TABLE OF type_outtab,
git_fieldcat TYPE STANDARD TABLE OF slis_fieldcat_alv,
git_event TYPE STANDARD TABLE OF slis_alv_event,
git_sort TYPE slis_t_sortinfo_alv.
*******************************************************************
F I E L D S Y M B O L S **********
*******************************************************************
*******************************************************************
S E L E C T I O N - S C R E E N **********
*******************************************************************
SELECTION-SCREEN: BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
SELECT-OPTIONS: s_matkl FOR gs_matkl-matkl OBLIGATORY,
s_werks FOR gs_werks-werks NO INTERVALS NO-EXTENSION DEFAULT '1000' ,
s_auart FOR gs_auart-auart OBLIGATORY,
s_ftrmi FOR gs_ftrmi-ftrmi OBLIGATORY.
SELECTION-SCREEN: END OF BLOCK b1.
*******************************************************************
I N I T I A L I Z A T I O N **********
*******************************************************************
INITIALIZATION.
PERFORM check_authority.
*******************************************************************
A T S E L E C T I O N - S C R E E N **********
*******************************************************************
AT SELECTION-SCREEN.
PERFORM input_validation.
*******************************************************************
S T A R T - O F - S E L E C T I O N **********
*******************************************************************
START-OF-SELECTION.
PERFORM get_data.
PERFORM populate_outtab.
*******************************************************************
E N D - O F - S E L E C T I O N **********
*******************************************************************
END-OF-SELECTION.
PERFORM display.
*******************************************************************
S U B R O U T I N E **********
*******************************************************************
&----
*& Form CHECK_AUTHORITY
&----
text:Subroutine to Check authority
----
FORM check_authority .
CALL FUNCTION 'AUTHORITY_CHECK_TCODE'
EXPORTING
tcode = sy-tcode
EXCEPTIONS
ok = 1
not_ok = 2
OTHERS = 3.
IF sy-subrc <> 1.
MESSAGE e077(s#) WITH sy-tcode.
ENDIF.
ENDFORM. " CHECK_AUTHORITY
&----
*& Form input_validation
&----
text:Subroutine to validate the selection-screen inputs
----
FORM input_validation .
DATA: lv_matkl TYPE t023-matkl, "#EC
lv_werks TYPE t001w-werks, "#EC
lv_auart TYPE t003o. "#EC
SELECT matkl
UP TO 1 ROWS
FROM t023
INTO lv_matkl
WHERE matkl IN s_matkl.
ENDSELECT.
IF sy-subrc <> 0.
MESSAGE text-002 TYPE c_error.
ELSE.
IF NOT lv_matkl IS INITIAL.
CLEAR lv_matkl.
ENDIF.
ENDIF.
SELECT werks
UP TO 1 ROWS
FROM t001w
INTO lv_werks
WHERE werks IN s_werks.
ENDSELECT.
IF sy-subrc <> 0.
MESSAGE text-003 TYPE c_error.
ELSE.
IF NOT lv_werks IS INITIAL.
CLEAR lv_werks.
ENDIF.
ENDIF.
SELECT auart
UP TO 1 ROWS
FROM t003o
INTO lv_auart
WHERE auart IN s_auart.
ENDSELECT.
IF sy-subrc <> 0.
MESSAGE text-004 TYPE c_error.
ELSE.
IF NOT lv_auart IS INITIAL.
CLEAR lv_auart.
ENDIF.
ENDIF.
ENDFORM. " input_validation
&----
*& Form get_data
&----
text:Subroutine to get the data from DB Tables
----
FORM get_data .
***...Constant for Movement type 321
***...Select for Materials for given Material Group
SELECT matnr
matkl
FROM mara
INTO TABLE git_matkl
WHERE matkl IN s_matkl.
***...Select for Production Order Number, Plant, Material for given Order type, Plant, Actual release Date,
and Material
IF git_matkl IS NOT INITIAL.
SORT git_matkl BY matnr.
SELECT aufnr
auart
werks
ftrmi
plnbez
FROM caufv
INTO TABLE git_caufv
FOR ALL ENTRIES IN git_matkl
WHERE auart IN s_auart
AND werks IN s_werks
AND ftrmi IN s_ftrmi
AND plnbez = git_matkl-matnr.
ENDIF.
***...Select for Material Document Number, Movement type, Material Number, Storage Location, Debit Credit Indicator,
Quantity, Unit of entry and Production Order Number
IF git_caufv IS NOT INITIAL.
SORT git_caufv BY aufnr.
SELECT mblnr
zeile
budat
bwart
matnr
lgort
charg
shkzg
erfmg
erfme
aufnr
FROM aufm
INTO TABLE git_aufm
FOR ALL ENTRIES IN git_caufv
WHERE aufnr = git_caufv-aufnr.
IF sy-subrc = 0.
***...Only Movement type 261, 262 and 531 and 532 is needed
DELETE git_aufm WHERE bwart <> c_261
AND bwart <> c_262
AND bwart <> c_531
AND bwart <> c_532 .
ENDIF.
ENDIF.
IF git_aufm IS NOT INITIAL.
SELECT mblnr
zeile
bwart
sgtxt
grund
FROM mseg
INTO TABLE git_mseg
FOR ALL ENTRIES IN git_aufm
WHERE mblnr = git_aufm-mblnr
AND zeile = git_aufm-zeile
AND werks IN s_werks.
IF git_mseg IS NOT INITIAL.
SORT:git_mseg BY bwart grund.
SELECT bwart
grund
grtxt
FROM t157e
INTO TABLE git_t157e
FOR ALL ENTRIES IN git_mseg
WHERE spras = sy-langu
AND bwart = git_mseg-bwart
AND grund = git_mseg-grund.
ENDIF.
SORT: git_aufm BY matnr.
***...select for Material Description, Alternative unit of measurement, Numerator for Conversion to Base Units of Measure
and Denominator for conversion to base units of measure
SELECT a~matnr
a~matkl
b~maktx
c~meinh
c~umrez
c~umren
INTO TABLE git_mat
FROM mara AS a
INNER JOIN makt AS b
ON bmatnr = amatnr
AND b~spras = sy-langu
INNER JOIN marm AS c
ON cmatnr = amatnr
FOR ALL ENTRIES IN git_aufm
WHERE a~matnr = git_aufm-matnr.
IF git_mat IS NOT INITIAL.
SORT:git_mat BY matnr.
***...Select for MRP Controller (Materials Planner) and Name of MRP controller
SELECT matnr
werks
dispo
INTO TABLE git_mrp
FROM marc
FOR ALL ENTRIES IN git_mat
WHERE matnr = git_mat-matnr
AND werks IN s_werks.
IF git_mrp IS NOT INITIAL.
SORT:git_mrp BY werks dispo.
SELECT werks
dispo
dsnam
FROM t024d
INTO TABLE git_t024d
FOR ALL ENTRIES IN git_mrp
WHERE werks = git_mrp-werks
AND dispo = git_mrp-dispo.
ENDIF.
ENDIF.
ENDIF.
ENDFORM. " get_data
&----
*& Form populate_outtab
&----
text:Subroutine to build output table
----
FORM populate_outtab .
DATA: ls_outtab TYPE type_outtab,
lv_index TYPE sy-tabix,
lv_uom_alt TYPE aufm-erfme,
lit_aufm TYPE STANDARD TABLE OF type_aufm .
FIELD-SYMBOLS: <lfs_aufm> TYPE type_aufm,
<lfs_mseg> TYPE type_mseg,
<lfs_caufv> TYPE type_caufv,
<lfs_mrp> TYPE type_mrp,
<lfs_t024d> TYPE type_t024d,
<lfs_mat> TYPE type_mat,
<lfs_matkl> TYPE type_matkl,
<lfs_t157e> TYPE type_t157e.
***..Constant for Credit Indicator
CONSTANTS: lc_credit TYPE char1 VALUE 'H',
***...Constant for Debit Indicator
lc_debit TYPE char1 VALUE 'S',
***...Constant for Material 'COBBLED BLOOM'
lc_matnr TYPE mara-matnr VALUE 'COBBLED BLOOM',
***...Constant for Material Measurement "EACH"
lc_each TYPE marm-meinh VALUE 'EA',
***...Constant for Material 'PP_COBBLED_BLOOM'
lc_pp_cobled_bloom TYPE mara-matnr VALUE 'PP_COBBLED_BLOOM'.
DELETE git_aufm WHERE ( bwart = c_531 OR bwart = c_532 )
AND ( matnr <> lc_matnr ) .
SORT:git_aufm BY bwart matnr.
LOOP AT git_aufm ASSIGNING <lfs_aufm>.
IF ( <lfs_aufm>-bwart = c_531 OR <lfs_aufm>-bwart = c_532 )
AND ( <lfs_aufm>-matnr = lc_matnr OR <lfs_aufm>-matnr = lc_pp_cobled_bloom ).
APPEND <lfs_aufm> TO lit_aufm.
ELSEIF <lfs_aufm>-bwart < c_531 OR <lfs_aufm>-bwart > c_532 .
APPEND <lfs_aufm> TO lit_aufm.
ENDIF.
ENDLOOP.
DELETE git_aufm WHERE ( bwart = c_531 OR bwart = c_532 )
AND ( matnr <> lc_matnr OR matnr <> lc_pp_cobled_bloom ) .
AND matnr in ('a','b') .
CLEAR:git_aufm.
UNASSIGN:<lfs_aufm>.
SORT: lit_aufm BY aufnr mblnr zeile,
git_mseg BY mblnr zeile,
git_caufv BY aufnr,
git_caufv BY aufnr,
git_mrp BY matnr,
git_t024d BY werks dispo,
git_afru BY wablnr,
git_mat BY matnr,
git_t157e BY bwart grund.
LOOP AT lit_aufm ASSIGNING <lfs_aufm>.
***...Production Order
ls_outtab-prod_ord = <lfs_aufm>-aufnr.
***Movement Type
ls_outtab-move_type = <lfs_aufm>-bwart.
***...Storage Location
ls_outtab-stor_loc = <lfs_aufm>-lgort.
***...Component Number
ls_outtab-comp_number = <lfs_aufm>-matnr.
***...Reason for Cobble for component 'COBBLED BLOOM' only
IF <lfs_aufm>-matnr = lc_matnr.
ls_outtab-reas_cobb = <lfs_aufm>-charg.
ENDIF.
***...Component Quantity
IF <lfs_aufm>-shkzg = lc_credit. "Check for Credit Indicator
IF <lfs_aufm>-matnr <> lc_matnr. "Check for not COBBLED BLOOM Material
ls_outtab-comp_qty = - ( <lfs_aufm>-erfmg ) .
ELSEIF <lfs_aufm>-matnr = lc_matnr AND ( <lfs_aufm>-bwart = c_531 OR <lfs_aufm>-bwart = c_532 ) .
ls_outtab-comp_qty = ( <lfs_aufm>-erfmg ) .
ENDIF.
ELSEIF <lfs_aufm>-shkzg = lc_debit. "Check for Debit Indicator
IF <lfs_aufm>-matnr = lc_matnr AND ( <lfs_aufm>-bwart = c_531 OR <lfs_aufm>-bwart = c_532 ). "Check for COBBLED BLOOM Material
ls_outtab-comp_qty = - ( <lfs_aufm>-erfmg ) .
ELSE.
ls_outtab-comp_qty = ( <lfs_aufm>-erfmg ) .
ENDIF.
ENDIF.
***...for movement type 261 for credit indicator the quantity should be +ve
and for Debit indicator quantity should be -ve
IF <lfs_aufm>-shkzg = lc_credit AND <lfs_aufm>-bwart = c_261.
IF ls_outtab-comp_qty < 0.
ls_outtab-comp_qty = - ls_outtab-comp_qty.
ENDIF.
ELSEIF <lfs_aufm>-shkzg = lc_credit AND <lfs_aufm>-bwart = c_261.
IF ls_outtab-comp_qty > 0.
ls_outtab-comp_qty = - ls_outtab-comp_qty.
ENDIF.
ENDIF.
***...Unit of Entry
ls_outtab-uoe = <lfs_aufm>-erfme.
UNASSIGN: <lfs_mat>.
READ TABLE git_mat ASSIGNING <lfs_mat> WITH KEY matnr = <lfs_aufm>-matnr
BINARY SEARCH.
IF <lfs_mat> IS ASSIGNED.
lv_index = sy-tabix + 1.
***...Material Description
ls_outtab-comp_desc = <lfs_mat>-maktx.
***...Calculatting Alternative Quantity of Component
***...for Credit Indicator Quantity should be -ve but not for Material Number 'COBBLED BLOOM'(+ve)
***...for Debit Indicator Quantity should be +ve but not for Material Number 'COBBLED BLOOM'(-ve)
IF <lfs_mat>-umrez <> 0.
IF <lfs_mat>-umren <> 0.
IF <lfs_aufm>-shkzg = lc_credit . "Check for Credit Indicator
IF <lfs_aufm>-matnr <> lc_matnr. "Check for Material 'COBBLED BLOOM'
ls_outtab-comp_qtype_alt = - ( ( <lfs_aufm>-erfmg * <lfs_mat>-umren ) / <lfs_mat>-umrez ).
ls_outtab-comp_qtype_alt = - ( ( <lfs_aufm>-erfmg * <lfs_mat>-umrez ) / <lfs_mat>-umren ).
ELSE.
ls_outtab-comp_qtype_alt = ( ( <lfs_aufm>-erfmg * <lfs_mat>-umren ) / <lfs_mat>-umrez ).
ls_outtab-comp_qtype_alt = ( ( <lfs_aufm>-erfmg * <lfs_mat>-umrez ) / <lfs_mat>-umren ) .
ENDIF.
ELSEIF <lfs_aufm>-shkzg = lc_debit. "Check for Debit Indicator
IF <lfs_aufm>-matnr = lc_matnr. "Check for Material 'COBBLE BLOOM'
ls_outtab-comp_qtype_alt = - ( ( <lfs_aufm>-erfmg * <lfs_mat>-umren ) / <lfs_mat>-umrez ).
ls_outtab-comp_qtype_alt = - ( ( <lfs_aufm>-erfmg * <lfs_mat>-umrez ) / <lfs_mat>-umren ).
ELSE.
ls_outtab-comp_qtype_alt = ( ( <lfs_aufm>-erfmg * <lfs_mat>-umren ) / <lfs_mat>-umrez ).
ls_outtab-comp_qtype_alt = ( ( <lfs_aufm>-erfmg * <lfs_mat>-umrez ) / <lfs_mat>-umren ).
ENDIF.
ENDIF. "Check for Credit and Debit Indicator
ENDIF.
***...for movement type 261 for credit indicator the quantity should be +ve
and for Debit indicator quantity should be -ve
IF <lfs_aufm>-shkzg = lc_credit AND <lfs_aufm>-bwart = c_261.
IF ls_outtab-comp_qtype_alt < 0.
ls_outtab-comp_qtype_alt = - ls_outtab-comp_qtype_alt.
ENDIF.
ELSEIF <lfs_aufm>-shkzg = lc_debit AND <lfs_aufm>-bwart = c_261.
IF ls_outtab-comp_qtype_alt > 0.
ls_outtab-comp_qtype_alt = - ls_outtab-comp_qtype_alt.
ENDIF.
ENDIF.
***...Alternative unit of measurement
***************************************************************************************
lv_uom_alt = <lfs_mat>-meinh.
IF <lfs_aufm>-erfme <> <lfs_mat>-meinh. "Check for Unit of entry and alternative Unit of Measurement are not equal
ls_outtab-uom_alt = lv_uom_alt.
ELSE.
UNASSIGN: <lfs_mat>.
READ TABLE git_mat ASSIGNING <lfs_mat> INDEX lv_index.
IF <lfs_mat> IS ASSIGNED .
IF <lfs_mat>-matnr = <lfs_aufm>-matnr.
ls_outtab-uom_alt = <lfs_mat>-meinh.
ELSE.
ls_outtab-uom_alt = lv_uom_alt .
ENDIF.
ENDIF.
ENDIF.
**************************************************************************************
CLEAR:lv_index,
lv_uom_alt.
ENDIF.
READ TABLE git_caufv ASSIGNING <lfs_caufv> WITH KEY aufnr = <lfs_aufm>-aufnr
BINARY SEARCH.
IF <lfs_caufv> IS ASSIGNED.
***...Order Type
ls_outtab-ord_type = <lfs_caufv>-auart.
***...Plant
ls_outtab-plant = <lfs_caufv>-werks.
***...Order release Date
ls_outtab-ord_release = <lfs_caufv>-ftrmi.
****...Posting Date
ls_outtab-post_date = <lfs_aufm>-budat.
ls_outtab-post_date = <lfs_caufv>-ftrmi.
***...Material Group
READ TABLE git_matkl ASSIGNING <lfs_matkl> WITH KEY matnr = <lfs_caufv>-plnbez
BINARY SEARCH.
IF <lfs_matkl> IS ASSIGNED.
ls_outtab-mat_group = <lfs_matkl>-matkl.
UNASSIGN:<lfs_matkl>.
ENDIF.
UNASSIGN:<lfs_caufv>.
ENDIF.
****...Posting Date
*
READ TABLE git_mseg ASSIGNING <lfs_mseg> WITH KEY mblnr = <lfs_aufm>-mblnr
zeile = <lfs_aufm>-zeile
BINARY SEARCH .
IF <lfs_mseg> IS ASSIGNED.
IF <lfs_aufm>-matnr = lc_pp_cobled_bloom .
ls_outtab-reas_cobb = <lfs_mseg>-sgtxt. "Item Text
ENDIF.
READ TABLE git_t157e ASSIGNING <lfs_t157e> WITH KEY bwart = <lfs_mseg>-bwart
grund = <lfs_mseg>-grund
BINARY SEARCH.
IF <lfs_t157e> IS ASSIGNED.
***...Shift
ls_outtab-shift = <lfs_t157e>-grtxt.
ENDIF.
UNASSIGN:<lfs_mseg>,
<lfs_t157e> .
ENDIF.
READ TABLE git_mrp ASSIGNING <lfs_mrp> WITH KEY matnr = <lfs_aufm>-matnr
BINARY SEARCH.
IF <lfs_mrp> IS ASSIGNED.
***...MRP Controller
ls_outtab-mrp_cntrl = <lfs_mrp>-dispo.
READ TABLE git_t024d ASSIGNING <lfs_t024d> WITH KEY werks = <lfs_mrp>-werks
dispo = <lfs_mrp>-dispo
BINARY SEARCH.
IF <lfs_t024d> IS ASSIGNED.
***...Name of MRP Controller
ls_outtab-name_cntrl = <lfs_t024d>-dsnam.
UNASSIGN:<lfs_t024d>.
ENDIF.
UNASSIGN:<lfs_mrp>.
ENDIF.
***...Actual Each
IF ls_outtab-uoe = lc_each. "Check for EACH
ls_outtab-act_each = ls_outtab-comp_qty .
ls_outtab-act_uom = ls_outtab-uoe .
ELSEIF ls_outtab-uom_alt = lc_each.
ls_outtab-act_each = ls_outtab-comp_qtype_alt .
ls_outtab-act_uom = ls_outtab-uom_alt.
ENDIF.
APPEND ls_outtab TO git_outtab.
CLEAR: ls_outtab.
ENDLOOP.
SORT:git_outtab BY post_date .
***...These tables no further needed
CLEAR:git_aufm,
git_mat,
git_mrp,
git_t024d,
git_caufv,
git_mseg,
git_afru,
git_t157e,
ls_outtab.
ENDFORM. " populate_outtab
&----
*& Form display
&----
text:perform to build field catalog, events and layout
----
FORM display .
IF git_outtab IS NOT INITIAL.
PERFORM build_fieldcat.
PERFORM build_sort.
PERFORM build_layout.
PERFORM build_events.
PERFORM display_output.
ELSE.
MESSAGE text-024 TYPE c_inf.
ENDIF.
ENDFORM. " display_output
&----
*& Form build_fieldcat
&----
text:Subroutine to Build the Field Catalog
----
FORM build_fieldcat .
PERFORM fieldcat USING 'POST_DATE' 1 c_x text-005 10
CHANGING git_fieldcat.
PERFORM fieldcat USING 'SHIFT' 2 '' text-006 20
CHANGING git_fieldcat.
PERFORM fieldcat USING 'MRP_CNTRL' 3 '' text-007 3
CHANGING git_fieldcat.
PERFORM fieldcat USING 'NAME_CNTRL' 4 '' text-008 18
CHANGING git_fieldcat.
PERFORM fieldcat USING 'ORD_TYPE' 5 '' text-009 4
CHANGING git_fieldcat.
PERFORM fieldcat USING 'PLANT' 6 '' text-010 4
CHANGING git_fieldcat.
PERFORM fieldcat USING 'MAT_GROUP' 7 '' text-011 9
CHANGING git_fieldcat.
PERFORM fieldcat USING 'PROD_ORD' 8 '' text-012 12
CHANGING git_fieldcat.
PERFORM fieldcat USING 'ORD_RELEASE' 9 '' text-013 10
CHANGING git_fieldcat.
PERFORM fieldcat USING 'MOVE_TYPE' 10 '' text-014 3
CHANGING git_fieldcat.
PERFORM fieldcat USING 'STOR_LOC' 11 '' text-015 4
CHANGING git_fieldcat.
PERFORM fieldcat USING 'COMP_NUMBER' 12 '' text-016 18
CHANGING git_fieldcat.
PERFORM fieldcat USING 'COMP_DESC' 13 '' text-017 40
CHANGING git_fieldcat.
PERFORM fieldcat USING 'COMP_QTY' 14 '' text-018 17
CHANGING git_fieldcat.
PERFORM fieldcat USING 'UOE' 15 '' text-019 3
CHANGING git_fieldcat.
PERFORM fieldcat USING 'COMP_QTYPE_ALT' 16 '' text-020 17
CHANGING git_fieldcat.
PERFORM fieldcat USING 'UOM_ALT' 17 '' text-021 3
CHANGING git_fieldcat.
PERFORM fieldcat USING 'REAS_COBB' 18 '' text-022 50
CHANGING git_fieldcat.
PERFORM fieldcat USING 'ACT_EACH' 19 '' text-026 17
CHANGING git_fieldcat.
ENDFORM. " build_fieldcat
&----
*& Form fieldcat
&----
text:Subroutine to populate Fieldcatalog internal Table
----
-->P_FIELDNAME text: Field Name
-->P_COL_POS text:Column Position
-->P_KEY text:Key
-->P_SELTEXT text:Sel Text
<--P_GIT_fieldcat text:Field catalog internal Table
----
FORM fieldcat USING p_fieldname TYPE slis_fieldcat_alv-fieldname
p_col_pos TYPE slis_fieldcat_alv-col_pos
p_key TYPE char1
p_seltext TYPE rs38m-itex132
p_outputlen TYPE dd03p-outputlen
CHANGING p_git_fieldcat TYPE slis_t_fieldcat_alv.
DATA: ls_fieldcat TYPE slis_fieldcat_alv.
ls_fieldcat-ROW_POS = '01'.
ls_fieldcat-fieldname = p_fieldname.
ls_fieldcat-col_pos = p_col_pos.
ls_fieldcat-key = p_key.
ls_fieldcat-seltext_s = p_seltext.
ls_fieldcat-seltext_m = p_seltext.
ls_fieldcat-seltext_l = p_seltext.
ls_fieldcat-tabname = c_outtab.
ls_fieldcat-outputlen = p_outputlen.
IF ls_fieldcat-fieldname = c_comp_qty .
ls_fieldcat-do_sum = c_x.
ls_fieldcat-tabname = c_outtab.
ls_fieldcat-qfieldname = c_uoe.
ls_fieldcat-qtabname = c_outtab.
ENDIF.
IF ls_fieldcat-fieldname = c_comp_qtype_alt .
ls_fieldcat-do_sum = c_x.
ls_fieldcat-tabname = c_outtab.
ls_fieldcat-qfieldname = c_uom_alt.
ls_fieldcat-qtabname = c_outtab.
ENDIF.
IF ls_fieldcat-fieldname = c_act_each .
ls_fieldcat-do_sum = c_x.
ls_fieldcat-tabname = c_outtab.
ls_fieldcat-qfieldname = c_act_uom .
ls_fieldcat-qtabname = c_outtab.
ENDIF.
APPEND ls_fieldcat TO p_git_fieldcat.
CLEAR: ls_fieldcat.
ENDFORM. " fieldcat
&----
*& Form build_events
&----
text:Subroutine to build events
----
FORM build_events .
FIELD-SYMBOLS:<lfs_event> TYPE slis_alv_event.
BREAK-POINT.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
i_list_type = 0
IMPORTING
et_events = git_event
EXCEPTIONS
list_type_wrong = 1
OTHERS = 2.
CHECK sy-subrc = 0.
SORT git_event BY name.
READ TABLE git_event ASSIGNING <lfs_event> WITH KEY name = slis_ev_top_of_page
BINARY SEARCH.
IF sy-subrc = 0.
<lfs_event>-form = slis_ev_top_of_page.
UNASSIGN <lfs_event>.
ENDIF.
READ TABLE git_event ASSIGNING <lfs_event> WITH KEY name = slis_ev_subtotal_text
BINARY SEARCH.
CHECK sy-subrc = 0.
<lfs_event>-form = slis_ev_subtotal_text.
UNASSIGN:<lfs_event>.
ENDFORM. " build_events
&----
*& Form build_layout
&----
text
----
FORM build_layout .
gs_layout-zebra = c_x.
gs_layout-colwidth_optimize = c_x.
gs_layout-no_totalline = c_x.
ENDFORM. " build_layout
&----
*& Form build_sort
&----
text:Subroutine to Build Sort Table
----
FORM build_sort .
DATA:ls_sort TYPE slis_sortinfo_alv.
ls_sort-spos = '01'.
ls_sort-fieldname = 'POST_DATE'.
ls_sort-tabname = 'GIT_OUTTAB'.
ls_sort-UP = c_x.
ls_sort-subtot = c_x.
ls_sort-up = c_x.
APPEND ls_sort TO git_sort.
CLEAR:ls_sort.
ls_sort-spos = '02'.
ls_sort-fieldname = 'MOVE_TYPE'.
ls_sort-tabname = 'GIT_OUTTAB'.
ls_sort-subtot = c_x.
ls_sort-UP = c_x.
ls_sort-subtot = c_x.
APPEND ls_sort TO git_sort.
ENDFORM. " build_sort
&----
*& Form display_output
&----
text:Subroutine to display output
----
FORM display_output .
DATA:lv_repid TYPE sy-repid.
CONSTANTS:lc_save TYPE char1 VALUE 'A'.
lv_repid = sy-repid.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = lv_repid
is_layout = gs_layout
it_fieldcat = git_fieldcat[]
it_sort = git_sort
i_default = c_x
i_save = lc_save
it_events = git_event[]
TABLES
t_outtab = git_outtab[]
EXCEPTIONS
program_error = 1
OTHERS = 2.
CHECK sy-subrc <> 0.
MESSAGE text-025 TYPE c_inf.
LEAVE LIST-PROCESSING.
ENDFORM. " display_output
&----
*& Form top_of_page
&----
text:Subroutine to build top of page event to display
----
FORM top_of_page. "#EC CALLED
DATA: ls_list TYPE slis_listheader,
lit_list TYPE slis_t_listheader.
BREAK-POINT.
ls_list-typ = 'H'.
ls_list-info = text-023.
APPEND ls_list TO lit_list.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = lit_list.
ENDFORM. "top_of_page
&----
*& Form SUBTOTAL_TEXT
&----
text:Subroutine for Sub Total Text
----
p_total :Totals
p_subtotal_text:SubTotals
----
FORM subtotal_text CHANGING p_total TYPE any
p_subtotal_text TYPE slis_subtot_text. "#EC CALLED
BREAK-POINT.
IF p_subtotal_text-criteria = 'POST_DATE'.
p_subtotal_text-display_text_for_subtotal = text-027.
ENDIF.
IF p_subtotal_text-criteria = 'MOVE_TYPE'.
p_subtotal_text-display_text_for_subtotal = text-028.
ENDIF.
ENDFORM. "SUBTOTAL_TEXT
Edited by: Shashikumar Guntuka on Jul 3, 2008 6:53 AM
Edited by: Shashikumar Guntuka on Jul 3, 2008 6:54 AM
Hi Gurus,
I developed ALV Report(Grid Dispalay)
I am getting Subtotals but I am not getting SubTotal Text.
for Subtotal text I used REUSE_ALV_EVENTS_GET
and I am passing the form name for the Subtotal Text.
but the form is not calling by ALV
give me the sollution for this problem
program.
REPORT zrpp33a NO STANDARD PAGE HEADING.
*******************************************************************
T Y P E P O O L S **********
*******************************************************************
TYPE-POOLS: slis.
*******************************************************************
T Y P E S **********
*******************************************************************
***...Types for Materilas
TYPES: BEGIN OF type_mat,
matnr TYPE mara-matnr, "Material Number
matkl TYPE mara-matkl, "Material Group
maktx TYPE makt-maktx, "Material Description (Short Text)
meinh TYPE marm-meinh, "Alternative Unit of Measure for Stockkeeping Unit
umrez TYPE marm-umrez, "Numerator for Conversion to Base Units of Measure
umren TYPE marm-umren, "Denominator for conversion to base units of measure
END OF type_mat.
***...Types for MATKL
TYPES: BEGIN OF type_matkl,
matnr TYPE mara-matnr,
matkl TYPE mara-matkl,
END OF type_matkl.
***...Types for MRP
TYPES: BEGIN OF type_mrp,
matnr TYPE mara-matnr, "Material Number
werks TYPE marc-werks, "Plant
dispo TYPE marc-dispo, "MRP Controller (Materials Planner)
END OF type_mrp.
TYPES: BEGIN OF type_t024d,
werks TYPE t024d-werks, "Plant
dispo TYPE t024d-dispo, "MRP Controller (Materials Planner)
dsnam TYPE t024d-dsnam, "Name MRP controller
END OF type_t024d.
***...Types for CAUFV
TYPES: BEGIN OF type_caufv,
aufnr TYPE caufv-aufnr, "Order Number
auart TYPE caufv-auart, "Order Type
werks TYPE caufv-werks, "Plant
ftrmi TYPE caufv-ftrmi, "Actual release date
plnbez TYPE caufv-plnbez, "Material Number
END OF type_caufv.
***...Types for AUFM
TYPES: BEGIN OF type_aufm,
mblnr TYPE aufm-mblnr, "Number of Material Document
zeile TYPE aufm-zeile, "Item in Material Document
budat TYPE aufm-budat, "Posting Date in the Document
bwart TYPE aufm-bwart, "Movement Type (Inventory Management)
matnr TYPE aufm-matnr, "Material Number(Component Number)
lgort TYPE aufm-lgort, "Storage Location
charg TYPE aufm-charg, "Batch Number
shkzg TYPE aufm-shkzg, "Debit/Credit Indicator
erfmg TYPE aufm-erfmg, "Quantity in Unit of Entry
erfme TYPE aufm-erfme, "Unit of Entry
aufnr TYPE aufm-aufnr, "Order Number
END OF type_aufm.
***...Types for AFRU
TYPES:BEGIN OF type_afru,
grund TYPE afru-grund, "Reason for Variance
wablnr TYPE afru-wablnr, "Number of Material Document
budat TYPE afru-budat, "Posting date
END OF type_afru.
TYPES: BEGIN OF type_mseg,
mblnr TYPE mseg-mblnr, "Number of Material Document
zeile TYPE mseg-zeile, "Item in Material Document
bwart TYPE mseg-bwart, "Movement Type (Inventory Management)
sgtxt TYPE mseg-sgtxt, "Item Text
grund TYPE mseg-grund, "Reason for Movement
END OF type_mseg.
TYPES: BEGIN OF type_t157e,
bwart TYPE t157e-bwart, "Movement Type (Inventory Management)
grund TYPE t157e-grund, "Reason for Movement
grtxt TYPE t157e-grtxt, "Text: Reason for Goods Movement
END OF type_t157e.
***...Types for Output Table
TYPES: BEGIN OF type_outtab,
post_date TYPE afru-budat, "Posting Date
shift TYPE t157e-grtxt, "Text: Reason for Goods Movement
mrp_cntrl TYPE marc-dispo, "MRP Controller (Materials Planner)
name_cntrl TYPE v_t024d-dsnam, "Name of MRP controller
ord_type TYPE caufv-auart, "Order Type
plant TYPE marc-werks , "Plant
mat_group TYPE mara-matkl, "Material Group
prod_ord TYPE aufm-aufnr, "Order Numbers
ord_release TYPE caufv-ftrmi, "Actual release date
move_type TYPE aufm-bwart, "Movement Type (Inventory Management)
stor_loc TYPE aufm-lgort, "Storage Location
comp_number TYPE aufm-matnr, "Material Number
comp_desc TYPE makt-maktx, "Material Description (Short Text)
comp_qty TYPE aufm-erfmg, "Quantity in Unit of Entry
uoe TYPE aufm-erfme, "Unit of Entry
comp_qtype_alt TYPE aufm-erfmg, "Quantity in Unit of Entry(Alternative)
uom_alt TYPE marm-meinh, "Unit of Entry((Alternative))
reas_cobb TYPE aufm-charg, "Batch Number
reas_cobb TYPE mseg-sgtxt, "Item Text
act_each TYPE aufm-erfmg, "Quantity in Unit of Entry(Alternative)
act_uom TYPE aufm-erfme, "Unit of Entry
END OF type_outtab.
*******************************************************************
C O N S T A N T S **********
*******************************************************************
***...Constant to store 'X'
CONSTANTS:c_x TYPE char1 VALUE 'X',
***...Constant to store 'E' for Error Message
c_error TYPE char1 VALUE 'E',
***...Constant to store 'I' for Information Message
c_inf TYPE char1 VALUE 'I',
***...Constant to store Output Table Name 'GIT_OUTTAB',
c_outtab TYPE slis_fieldcat_alv-tabname VALUE 'GIT_OUTTAB',
***...Constant to store Quantity Field Name 'COMP_QTY',
c_comp_qty TYPE slis_fieldcat_alv-fieldname VALUE 'COMP_QTY',
***...Constant to store Unit of Entry Field Name 'UOE'
c_uoe TYPE slis_fieldcat_alv-fieldname VALUE 'UOE',
***...Constant to store Alternative Component Quantity field name 'COMP_QTYPE_ALT'
c_comp_qtype_alt TYPE slis_fieldcat_alv-fieldname VALUE 'COMP_QTYPE_ALT',
***...Constant to store Ulternative Unit of Measurement field name 'UOM_ALT'
c_uom_alt TYPE slis_fieldcat_alv-fieldname VALUE 'UOM_ALT',
***...Constant to store Actual Each Field name 'ACT_EACH',
c_act_each TYPE slis_fieldcat_alv-fieldname VALUE 'ACT_EACH',
***...Constant to store Actual Unit of Measurement Field Name 'ACT_UOM'
c_act_uom TYPE slis_fieldcat_alv-fieldname VALUE 'ACT_UOM' ,
***...Constant for Movement Type '261'
c_261 TYPE aufm-bwart VALUE '261',
***...Constant for Movement Type '262'
c_262 TYPE aufm-bwart VALUE '262',
***...Constant for Movement Type '531'
c_531 TYPE aufm-bwart VALUE '531',
***...Constant for Movement Type '532'
c_532 TYPE aufm-bwart VALUE '532'.
*******************************************************************
W O R K A R E A **********
*******************************************************************
***...Work Area for SELECT-OPTIONS Material Group
DATA: BEGIN OF gs_matkl,
matkl TYPE t023-matkl,
END OF gs_matkl.
***...Work Area for SELECT-OPTIONS Plant
DATA: BEGIN OF gs_werks,
werks TYPE t001w-werks,
END OF gs_werks.
***...Work Area for SELECT-OPTIONS Order type
DATA:BEGIN OF gs_auart,
auart TYPE t003o-auart,
END OF gs_auart.
***...Work Area for SELECT-OPTIONS Acutal release Date
DATA: BEGIN OF gs_ftrmi,
ftrmi TYPE caufv-ftrmi,
END OF gs_ftrmi.
***...Work Area for ALV Layout
DATA: gs_layout TYPE slis_layout_alv.
*******************************************************************
I N T E R N A L T A B L E S **********
*******************************************************************
DATA:git_mat TYPE STANDARD TABLE OF type_mat,
git_matkl TYPE STANDARD TABLE OF type_matkl,
git_mrp TYPE STANDARD TABLE OF type_mrp,
git_t024d TYPE STANDARD TABLE OF type_t024d,
git_caufv TYPE STANDARD TABLE OF type_caufv,
git_aufm TYPE STANDARD TABLE OF type_aufm ,
git_afru TYPE STANDARD TABLE OF type_afru,
git_mseg TYPE STANDARD TABLE OF type_mseg,
git_t157e TYPE STANDARD TABLE OF type_t157e,
git_outtab TYPE STANDARD TABLE OF type_outtab,
git_fieldcat TYPE STANDARD TABLE OF slis_fieldcat_alv,
git_event TYPE STANDARD TABLE OF slis_alv_event,
git_sort TYPE slis_t_sortinfo_alv.
*******************************************************************
F I E L D S Y M B O L S **********
*******************************************************************
*******************************************************************
S E L E C T I O N - S C R E E N **********
*******************************************************************
SELECTION-SCREEN: BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
SELECT-OPTIONS: s_matkl FOR gs_matkl-matkl OBLIGATORY,
s_werks FOR gs_werks-werks NO INTERVALS NO-EXTENSION DEFAULT '1000' ,
s_auart FOR gs_auart-auart OBLIGATORY,
s_ftrmi FOR gs_ftrmi-ftrmi OBLIGATORY.
SELECTION-SCREEN: END OF BLOCK b1.
*******************************************************************
I N I T I A L I Z A T I O N **********
*******************************************************************
INITIALIZATION.
PERFORM check_authority.
*******************************************************************
A T S E L E C T I O N - S C R E E N **********
*******************************************************************
AT SELECTION-SCREEN.
PERFORM input_validation.
*******************************************************************
S T A R T - O F - S E L E C T I O N **********
*******************************************************************
START-OF-SELECTION.
PERFORM get_data.
PERFORM populate_outtab.
*******************************************************************
E N D - O F - S E L E C T I O N **********
*******************************************************************
END-OF-SELECTION.
PERFORM display.
*******************************************************************
S U B R O U T I N E **********
*******************************************************************
&----
*& Form CHECK_AUTHORITY
&----
text:Subroutine to Check authority
----
FORM check_authority .
CALL FUNCTION 'AUTHORITY_CHECK_TCODE'
EXPORTING
tcode = sy-tcode
EXCEPTIONS
ok = 1
not_ok = 2
OTHERS = 3.
IF sy-subrc <> 1.
MESSAGE e077(s#) WITH sy-tcode.
ENDIF.
ENDFORM. " CHECK_AUTHORITY
&----
*& Form input_validation
&----
text:Subroutine to validate the selection-screen inputs
----
FORM input_validation .
DATA: lv_matkl TYPE t023-matkl, "#EC
lv_werks TYPE t001w-werks, "#EC
lv_auart TYPE t003o. "#EC
SELECT matkl
UP TO 1 ROWS
FROM t023
INTO lv_matkl
WHERE matkl IN s_matkl.
ENDSELECT.
IF sy-subrc <> 0.
MESSAGE text-002 TYPE c_error.
ELSE.
IF NOT lv_matkl IS INITIAL.
CLEAR lv_matkl.
ENDIF.
ENDIF.
SELECT werks
UP TO 1 ROWS
FROM t001w
INTO lv_werks
WHERE werks IN s_werks.
ENDSELECT.
IF sy-subrc <> 0.
MESSAGE text-003 TYPE c_error.
ELSE.
IF NOT lv_werks IS INITIAL.
CLEAR lv_werks.
ENDIF.
ENDIF.
SELECT auart
UP TO 1 ROWS
FROM t003o
INTO lv_auart
WHERE auart IN s_auart.
ENDSELECT.
IF sy-subrc <> 0.
MESSAGE text-004 TYPE c_error.
ELSE.
IF NOT lv_auart IS INITIAL.
CLEAR lv_auart.
ENDIF.
ENDIF.
ENDFORM. " input_validation
&----
*& Form get_data
&----
text:Subroutine to get the data from DB Tables
----
FORM get_data .
***...Constant for Movement type 321
***...Select for Materials for given Material Group
SELECT matnr
matkl
FROM mara
INTO TABLE git_matkl
WHERE matkl IN s_matkl.
***...Select for Production Order Number, Plant, Material for given Order type, Plant, Actual release Date,
and Material
IF git_matkl IS NOT INITIAL.
SORT git_matkl BY matnr.
SELECT aufnr
auart
werks
ftrmi
plnbez
FROM caufv
INTO TABLE git_caufv
FOR ALL ENTRIES IN git_matkl
WHERE auart IN s_auart
AND werks IN s_werks
AND ftrmi IN s_ftrmi
AND plnbez = git_matkl-matnr.
ENDIF.
***...Select for Material Document Number, Movement type, Material Number, Storage Location, Debit Credit Indicator,
Quantity, Unit of entry and Production Order Number
IF git_caufv IS NOT INITIAL.
SORT git_caufv BY aufnr.
SELECT mblnr
zeile
budat
bwart
matnr
lgort
charg
shkzg
erfmg
erfme
aufnr
FROM aufm
INTO TABLE git_aufm
FOR ALL ENTRIES IN git_caufv
WHERE aufnr = git_caufv-aufnr.
IF sy-subrc = 0.
***...Only Movement type 261, 262 and 531 and 532 is needed
DELETE git_aufm WHERE bwart <> c_261
AND bwart <> c_262
AND bwart <> c_531
AND bwart <> c_532 .
ENDIF.
ENDIF.
IF git_aufm IS NOT INITIAL.
SELECT mblnr
zeile
bwart
sgtxt
grund
FROM mseg
INTO TABLE git_mseg
FOR ALL ENTRIES IN git_aufm
WHERE mblnr = git_aufm-mblnr
AND zeile = git_aufm-zeile
AND werks IN s_werks.
IF git_mseg IS NOT INITIAL.
SORT:git_mseg BY bwart grund.
SELECT bwart
grund
grtxt
FROM t157e
INTO TABLE git_t157e
FOR ALL ENTRIES IN git_mseg
WHERE spras = sy-langu
AND bwart = git_mseg-bwart
AND grund = git_mseg-grund.
ENDIF.
SORT: git_aufm BY matnr.
***...select for Material Description, Alternative unit of measurement, Numerator for Conversion to Base Units of Measure
and Denominator for conversion to base units of measure
SELECT a~matnr
a~matkl
b~maktx
c~meinh
c~umrez
c~umren
INTO TABLE git_mat
FROM mara AS a
INNER JOIN makt AS b
ON bmatnr = amatnr
AND b~spras = sy-langu
INNER JOIN marm AS c
ON cmatnr = amatnr
FOR ALL ENTRIES IN git_aufm
WHERE a~matnr = git_aufm-matnr.
IF git_mat IS NOT INITIAL.
SORT:git_mat BY matnr.
***...Select for MRP Controller (Materials Planner) and Name of MRP controller
SELECT matnr
werks
dispo
INTO TABLE git_mrp
FROM marc
FOR ALL ENTRIES IN git_mat
WHERE matnr = git_mat-matnr
AND werks IN s_werks.
IF git_mrp IS NOT INITIAL.
SORT:git_mrp BY werks dispo.
SELECT werks
dispo
dsnam
FROM t024d
INTO TABLE git_t024d
FOR ALL ENTRIES IN git_mrp
WHERE werks = git_mrp-werks
AND dispo = git_mrp-dispo.
ENDIF.
ENDIF.
ENDIF.
ENDFORM. " get_data
&----
*& Form populate_outtab
&----
text:Subroutine to build output table
----
FORM populate_outtab .
DATA: ls_outtab TYPE type_outtab,
lv_index TYPE sy-tabix,
lv_uom_alt TYPE aufm-erfme,
lit_aufm TYPE STANDARD TABLE OF type_aufm .
FIELD-SYMBOLS: <lfs_aufm> TYPE type_aufm,
<lfs_mseg> TYPE type_mseg,
<lfs_caufv> TYPE type_caufv,
<lfs_mrp> TYPE type_mrp,
<lfs_t024d> TYPE type_t024d,
<lfs_mat> TYPE type_mat,
<lfs_matkl> TYPE type_matkl,
<lfs_t157e> TYPE type_t157e.
***..Constant for Credit Indicator
CONSTANTS: lc_credit TYPE char1 VALUE 'H',
***...Constant for Debit Indicator
lc_debit TYPE char1 VALUE 'S',
***...Constant for Material 'COBBLED BLOOM'
lc_matnr TYPE mara-matnr VALUE 'COBBLED BLOOM',
***...Constant for Material Measurement "EACH"
lc_each TYPE marm-meinh VALUE 'EA',
***...Constant for Material 'PP_COBBLED_BLOOM'
lc_pp_cobled_bloom TYPE mara-matnr VALUE 'PP_COBBLED_BLOOM'.
DELETE git_aufm WHERE ( bwart = c_531 OR bwart = c_532 )
AND ( matnr <> lc_matnr ) .
SORT:git_aufm BY bwart matnr.
LOOP AT git_aufm ASSIGNING <lfs_aufm>.
IF ( <lfs_aufm>-bwart = c_531 OR <lfs_aufm>-bwart = c_532 )
AND ( <lfs_aufm>-matnr = lc_matnr OR <lfs_aufm>-matnr = lc_pp_cobled_bloom ).
APPEND <lfs_aufm> TO lit_aufm.
ELSEIF <lfs_aufm>-bwart < c_531 OR <lfs_aufm>-bwart > c_532 .
APPEND <lfs_aufm> TO lit_aufm.
ENDIF.
ENDLOOP.
DELETE git_aufm WHERE ( bwart = c_531 OR bwart = c_532 )
AND ( matnr <> lc_matnr OR matnr <> lc_pp_cobled_bloom ) .
AND matnr in ('a','b') .
CLEAR:git_aufm.
UNASSIGN:<lfs_aufm>.
SORT: lit_aufm BY aufnr mblnr zeile,
git_mseg BY mblnr zeile,
git_caufv BY aufnr,
git_caufv BY aufnr,
git_mrp BY matnr,
git_t024d BY werks dispo,
git_afru BY wablnr,
git_mat BY matnr,
git_t157e BY bwart grund.
LOOP AT lit_aufm ASSIGNING <lfs_aufm>.
***...Production Order
ls_outtab-prod_ord = <lfs_aufm>-aufnr.
***Movement Type
ls_outtab-move_type = <lfs_aufm>-bwart.
***...Storage Location
ls_outtab-stor_loc = <lfs_aufm>-lgort.
***...Component Number
ls_outtab-comp_number = <lfs_aufm>-matnr.
***...Reason for Cobble for component 'COBBLED BLOOM' only
IF <lfs_aufm>-matnr = lc_matnr.
ls_outtab-reas_cobb = <lfs_aufm>-charg.
ENDIF.
***...Component Quantity
IF <lfs_aufm>-shkzg = lc_credit. "Check for Credit Indicator
IF <lfs_aufm>-matnr <> lc_matnr. "Check for not COBBLED BLOOM Material
ls_outtab-comp_qty = - ( <lfs_aufm>-erfmg ) .
ELSEIF <lfs_aufm>-matnr = lc_matnr AND ( <lfs_aufm>-bwart = c_531 OR <lfs_aufm>-bwart = c_532 ) .
ls_outtab-comp_qty = ( <lfs_aufm>-erfmg ) .
ENDIF.
ELSEIF <lfs_aufm>-shkzg = lc_debit. "Check for Debit Indicator
IF <lfs_aufm>-matnr = lc_matnr AND ( <lfs_aufm>-bwart = c_531 OR <lfs_aufm>-bwart = c_532 ). "Check for COBBLED BLOOM Material
ls_outtab-comp_qty = - ( <lfs_aufm>-erfmg ) .
ELSE.
ls_outtab-comp_qty = ( <lfs_aufm>-erfmg ) .
ENDIF.
ENDIF.
***...for movement type 261 for credit indicator the quantity should be +ve
and for Debit indicator quantity should be -ve
IF <lfs_aufm>-shkzg = lc_credit AND <lfs_aufm>-bwart = c_261.
IF ls_outtab-comp_qty < 0.
ls_outtab-comp_qty = - ls_outtab-comp_qty.
ENDIF.
ELSEIF <lfs_aufm>-shkzg = lc_credit AND <lfs_aufm>-bwart = c_261.
IF ls_outtab-comp_qty > 0.
ls_outtab-comp_qty = - ls_outtab-comp_qty.
ENDIF.
ENDIF.
***...Unit of Entry
ls_outtab-uoe = <lfs_aufm>-erfme.
UNASSIGN: <lfs_mat>.
READ TABLE git_mat ASSIGNING <lfs_mat> WITH KEY matnr = <lfs_aufm>-matnr
BINARY SEARCH.
IF <lfs_mat> IS ASSIGNED.
lv_index = sy-tabix + 1.
***...Material Description
ls_outtab-comp_desc = <lfs_mat>-maktx.
***...Calculatting Alternative Quantity of Component
***...for Credit Indicator Quantity should be -ve but not for Material Number 'COBBLED BLOOM'(+ve)
***...for Debit Indicator Quantity should be +ve but not for Material Number 'COBBLED BLOOM'(-ve)
IF <lfs_mat>-umrez <> 0.
IF <lfs_mat>-umren <> 0.
IF <lfs_aufm>-shkzg = lc_credit . "Check for Credit Indicator
IF <lfs_aufm>-matnr <> lc_matnr. "Check for Material 'COBBLED BLOOM'
ls_outtab-comp_qtype_alt = - ( ( <lfs_aufm>-erfmg * <lfs_mat>-umren ) / <lfs_mat>-umrez ).
ls_outtab-comp_qtype_alt = - ( ( <lfs_aufm>-erfmg * <lfs_mat>-umrez ) / <lfs_mat>-umren ).
ELSE.
ls_outtab-comp_qtype_alt = ( ( <lfs_aufm>-erfmg * <lfs_mat>-umren ) / <lfs_mat>-umrez ).
ls_outtab-comp_qtype_alt = ( ( <lfs_aufm>-erfmg * <lfs_mat>-umrez ) / <lfs_mat>-umren ) .
ENDIF.
ELSEIF <lfs_aufm>-shkzg = lc_debit. "Check for Debit Indicator
IF <lfs_aufm>-matnr = lc_matnr. "Check for Material 'COBBLE BLOOM'
ls_outtab-comp_qtype_alt = - ( ( <lfs_aufm>-erfmg * <lfs_mat>-umren ) / <lfs_mat>-umrez ).
ls_outtab-comp_qtype_alt = - ( ( <lfs_aufm>-erfmg * <lfs_mat>-umrez ) / <lfs_mat>-umren ).
ELSE.
ls_outtab-comp_qtype_alt = ( ( <lfs_aufm>-erfmg * <lfs_mat>-umren ) / <lfs_mat>-umrez ).
ls_outtab-comp_qtype_alt = ( ( <lfs_aufm>-erfmg * <lfs_mat>-umrez ) / <lfs_mat>-umren ).
ENDIF.
ENDIF. "Check for Credit and Debit Indicator
ENDIF.
***...for movement type 261 for credit indicator the quantity should be +ve
and for Debit indicator quantity should be -ve
IF <lfs_aufm>-shkzg = lc_credit AND <lfs_aufm>-bwart = c_261.
IF ls_outtab-comp_qtype_alt < 0.
ls_outtab-comp_qtype_alt = - ls_outtab-comp_qtype_alt.
ENDIF.
ELSEIF <lfs_aufm>-shkzg = lc_debit AND <lfs_aufm>-bwart = c_261.
IF ls_outtab-comp_qtype_alt > 0.
ls_outtab-comp_qtype_alt = - ls_outtab-comp_qtype_alt.
ENDIF.
ENDIF.
***...Alternative unit of measurement
***************************************************************************************
lv_uom_alt = <lfs_mat>-meinh.
IF <lfs_aufm>-erfme <> <lfs_mat>-meinh. "Check for Unit of entry and alternative Unit of Measurement are not equal
ls_outtab-uom_alt = lv_uom_alt.
ELSE.
UNASSIGN: <lfs_mat>.
READ TABLE git_mat ASSIGNING <lfs_mat> INDEX lv_index.
IF <lfs_mat> IS ASSIGNED .
IF <lfs_mat>-matnr = <lfs_aufm>-matnr.
ls_outtab-uom_alt = <lfs_mat>-meinh.
ELSE.
ls_outtab-uom_alt = lv_uom_alt .
ENDIF.
ENDIF.
ENDIF.
**************************************************************************************
CLEAR:lv_index,
lv_uom_alt.
ENDIF.
READ TABLE git_caufv ASSIGNING <lfs_caufv> WITH KEY aufnr = <lfs_aufm>-aufnr
BINARY SEARCH.
IF <lfs_caufv> IS ASSIGNED.
***...Order Type
ls_outtab-ord_type = <lfs_caufv>-auart.
***...Plant
ls_outtab-plant = <lfs_caufv>-werks.
***...Order release Date
ls_outtab-ord_release = <lfs_caufv>-ftrmi.
****...Posting Date
ls_outtab-post_date = <lfs_aufm>-budat.
ls_outtab-post_date = <lfs_caufv>-ftrmi.
***...Material Group
READ TABLE git_matkl ASSIGNING <lfs_matkl> WITH KEY matnr = <lfs_caufv>-plnbez
BINARY SEARCH.
IF <lfs_matkl> IS ASSIGNED.
ls_outtab-mat_group = <lfs_matkl>-matkl.
UNASSIGN:<lfs_matkl>.
ENDIF.
UNASSIGN:<lfs_caufv>.
ENDIF.
****...Posting Date
*
READ TABLE git_mseg ASSIGNING <lfs_mseg> WITH KEY mblnr = <lfs_aufm>-mblnr
zeile = <lfs_aufm>-zeile
BINARY SEARCH .
IF <lfs_mseg> IS ASSIGNED.
IF <lfs_aufm>-matnr = lc_pp_cobled_bloom .
ls_outtab-reas_cobb = <lfs_mseg>-sgtxt. "Item Text
ENDIF.
READ TABLE git_t157e ASSIGNING <lfs_t157e> WITH KEY bwart = <lfs_mseg>-bwart
grund = <lfs_mseg>-grund
BINARY SEARCH.
IF <lfs_t157e> IS ASSIGNED.
***...Shift
ls_outtab-shift = <lfs_t157e>-grtxt.
ENDIF.
UNASSIGN:<lfs_mseg>,
<lfs_t157e> .
ENDIF.
READ TABLE git_mrp ASSIGNING <lfs_mrp> WITH KEY matnr = <lfs_aufm>-matnr
BINARY SEARCH.
IF <lfs_mrp> IS ASSIGNED.
***...MRP Controller
ls_outtab-mrp_cntrl = <lfs_mrp>-dispo.
READ TABLE git_t024d ASSIGNING <lfs_t024d> WITH KEY werks = <lfs_mrp>-werks
dispo = <lfs_mrp>-dispo
BINARY SEARCH.
IF <lfs_t024d> IS ASSIGNED.
***...Name of MRP Controller
ls_outtab-name_cntrl = <lfs_t024d>-dsnam.
UNASSIGN:<lfs_t024d>.
ENDIF.
UNASSIGN:<lfs_mrp>.
ENDIF.
***...Actual Each
IF ls_outtab-uoe = lc_each. "Check for EACH
ls_outtab-act_each = ls_outtab-comp_qty .
ls_outtab-act_uom = ls_outtab-uoe .
ELSEIF ls_outtab-uom_alt = lc_each.
ls_outtab-act_each = ls_outtab-comp_qtype_alt .
ls_outtab-act_uom = ls_outtab-uom_alt.
ENDIF.
APPEND ls_outtab TO git_outtab.
CLEAR: ls_outtab.
ENDLOOP.
SORT:git_outtab BY post_date .
***...These tables no further needed
CLEAR:git_aufm,
git_mat,
git_mrp,
git_t024d,
git_caufv,
git_mseg,
git_afru,
git_t157e,
ls_outtab.
ENDFORM. " populate_outtab
&----
*& Form display
&----
text:perform to build field catalog, events and layout
----
FORM display .
IF git_outtab IS NOT INITIAL.
PERFORM build_fieldcat.
PERFORM build_sort.
PERFORM build_layout.
PERFORM build_events.
PERFORM display_output.
ELSE.
MESSAGE text-024 TYPE c_inf.
ENDIF.
ENDFORM. " display_output
&----
*& Form build_fieldcat
&----
text:Subroutine to Build the Field Catalog
----
FORM build_fieldcat .
PERFORM fieldcat USING 'POST_DATE' 1 c_x text-005 10
CHANGING git_fieldcat.
PERFORM fieldcat USING 'SHIFT' 2 '' text-006 20
CHANGING git_fieldcat.
PERFORM fieldcat USING 'MRP_CNTRL' 3 '' text-007 3
CHANGING git_fieldcat.
PERFORM fieldcat USING 'NAME_CNTRL' 4 '' text-008 18
CHANGING git_fieldcat.
PERFORM fieldcat USING 'ORD_TYPE' 5 '' text-009 4
CHANGING git_fieldcat.
PERFORM fieldcat USING 'PLANT' 6 '' text-010 4
CHANGING git_fieldcat.
PERFORM fieldcat USING 'MAT_GROUP' 7 '' text-011 9
CHANGING git_fieldcat.
PERFORM fieldcat USING 'PROD_ORD' 8 '' text-012 12
CHANGING git_fieldcat.
PERFORM fieldcat USING 'ORD_RELEASE' 9 '' text-013 10
CHANGING git_fieldcat.
PERFORM fieldcat USING 'MOVE_TYPE' 10 '' text-014 3
CHANGING git_fieldcat.
PERFORM fieldcat USING 'STOR_LOC' 11 '' text-015 4
CHANGING git_fieldcat.
PERFORM fieldcat USING 'COMP_NUMBER' 12 '' text-016 18
CHANGING git_fieldcat.
PERFORM fieldcat USING 'COMP_DESC' 13 '' text-017 40
CHANGING git_fieldcat.
PERFORM fieldcat USING 'COMP_QTY' 14 '' text-018 17
CHANGING git_fieldcat.
PERFORM fieldcat USING 'UOE' 15 '' text-019 3
CHANGING git_fieldcat.
PERFORM fieldcat USING 'COMP_QTYPE_ALT' 16 '' text-020 17
CHANGING git_fieldcat.
PERFORM fieldcat USING 'UOM_ALT' 17 '' text-021 3
CHANGING git_fieldcat.
PERFORM fieldcat USING 'REAS_COBB' 18 '' text-022 50
CHANGING git_fieldcat.
PERFORM fieldcat USING 'ACT_EACH' 19 '' text-026 17
CHANGING git_fieldcat.
ENDFORM. " build_fieldcat
&----
*& Form fieldcat
&----
text:Subroutine to populate Fieldcatalog internal Table
----
-->P_FIELDNAME text: Field Name
-->P_COL_POS text:Column Position
-->P_KEY text:Key
-->P_SELTEXT text:Sel Text
<--P_GIT_fieldcat text:Field catalog internal Table
----
FORM fieldcat USING p_fieldname TYPE slis_fieldcat_alv-fieldname
p_col_pos TYPE slis_fieldcat_alv-col_pos
p_key TYPE char1
p_seltext TYPE rs38m-itex132
p_outputlen TYPE dd03p-outputlen
CHANGING p_git_fieldcat TYPE slis_t_fieldcat_alv.
DATA: ls_fieldcat TYPE slis_fieldcat_alv.
ls_fieldcat-ROW_POS = '01'.
ls_fieldcat-fieldname = p_fieldname.
ls_fieldcat-col_pos = p_col_pos.
ls_fieldcat-key = p_key.
ls_fieldcat-seltext_s = p_seltext.
ls_fieldcat-seltext_m = p_seltext.
ls_fieldcat-seltext_l = p_seltext.
ls_fieldcat-tabname = c_outtab.
ls_fieldcat-outputlen = p_outputlen.
IF ls_fieldcat-fieldname = c_comp_qty .
ls_fieldcat-do_sum = c_x.
ls_fieldcat-tabname = c_outtab.
ls_fieldcat-qfieldname = c_uoe.
ls_fieldcat-qtabname = c_outtab.
ENDIF.
IF ls_fieldcat-fieldname = c_comp_qtype_alt .
ls_fieldcat-do_sum = c_x.
ls_fieldcat-tabname = c_outtab.
ls_fieldcat-qfieldname = c_uom_alt.
ls_fieldcat-qtabname = c_outtab.
ENDIF.
IF ls_fieldcat-fieldname = c_act_each .
ls_fieldcat-do_sum = c_x.
ls_fieldcat-tabname = c_outtab.
ls_fieldcat-qfieldname = c_act_uom .
ls_fieldcat-qtabname = c_outtab.
ENDIF.
APPEND ls_fieldcat TO p_git_fieldcat.
CLEAR: ls_fieldcat.
ENDFORM. " fieldcat
&----
*& Form build_events
&----
text:Subroutine to build events
----
FORM build_events .
FIELD-SYMBOLS:<lfs_event> TYPE slis_alv_event.
BREAK-POINT.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
i_list_type = 0
IMPORTING
et_events = git_event
EXCEPTIONS
list_type_wrong = 1
OTHERS = 2.
CHECK sy-subrc = 0.
SORT git_event BY name.
READ TABLE git_event ASSIGNING <lfs_event> WITH KEY name = slis_ev_top_of_page
BINARY SEARCH.
IF sy-subrc = 0.
<lfs_event>-form = slis_ev_top_of_page.
UNASSIGN <lfs_event>.
ENDIF.
READ TABLE git_event ASSIGNING <lfs_event> WITH KEY name = slis_ev_subtotal_text
BINARY SEARCH.
CHECK sy-subrc = 0.
<lfs_event>-form = slis_ev_subtotal_text.
UNASSIGN:<lfs_event>.
ENDFORM. " build_events
&----
*& Form build_layout
&----
text
----
FORM build_layout .
gs_layout-zebra = c_x.
gs_layout-colwidth_optimize = c_x.
gs_layout-no_totalline = c_x.
ENDFORM. " build_layout
&----
*& Form build_sort
&----
text:Subroutine to Build Sort Table
----
FORM build_sort .
DATA:ls_sort TYPE slis_sortinfo_alv.
ls_sort-spos = '01'.
ls_sort-fieldname = 'POST_DATE'.
ls_sort-tabname = 'GIT_OUTTAB'.
ls_sort-UP = c_x.
ls_sort-subtot = c_x.
ls_sort-up = c_x.
APPEND ls_sort TO git_sort.
CLEAR:ls_sort.
ls_sort-spos = '02'.
ls_sort-fieldname = 'MOVE_TYPE'.
ls_sort-tabname = 'GIT_OUTTAB'.
ls_sort-subtot = c_x.
ls_sort-UP = c_x.
ls_sort-subtot = c_x.
APPEND ls_sort TO git_sort.
ENDFORM. " build_sort
&----
*& Form display_output
&----
text:Subroutine to display output
----
FORM display_output .
DATA:lv_repid TYPE sy-repid.
CONSTANTS:lc_save TYPE char1 VALUE 'A'.
lv_repid = sy-repid.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = lv_repid
is_layout = gs_layout
it_fieldcat = git_fieldcat[]
it_sort = git_sort
i_default = c_x
i_save = lc_save
it_events = git_event[]
TABLES
t_outtab = git_outtab[]
EXCEPTIONS
program_error = 1
OTHERS = 2.
CHECK sy-subrc <> 0.
MESSAGE text-025 TYPE c_inf.
LEAVE LIST-PROCESSING.
ENDFORM. " display_output
&----
*& Form top_of_page
&----
text:Subroutine to build top of page event to display
----
FORM top_of_page. "#EC CALLED
DATA: ls_list TYPE slis_listheader,
lit_list TYPE slis_t_listheader.
BREAK-POINT.
ls_list-typ = 'H'.
ls_list-info = text-023.
APPEND ls_list TO lit_list.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = lit_list.
ENDFORM. "top_of_page
&----
*& Form SUBTOTAL_TEXT
&----
text:Subroutine for Sub Total Text
----
p_total :Totals
p_subtotal_text:SubTotals
----
FORM subtotal_text CHANGING p_total TYPE any
p_subtotal_text TYPE slis_subtot_text. "#EC CALLED
BREAK-POINT.
IF p_subtotal_text-criteria = 'POST_DATE'.
p_subtotal_text-display_text_for_subtotal = text-027.
ENDIF.
IF p_subtotal_text-criteria = 'MOVE_TYPE'.
p_subtotal_text-display_text_for_subtotal = text-028.
ENDIF.
ENDFORM. "SUBTOTAL_TEXT
Edited by: Shashikumar Guntuka on Jul 3, 2008 6:53 AM
Edited by: Shashikumar Guntuka on Jul 3, 2008 6:54 AM
2008 Jul 03 5:58 AM
Hi,
Check this sample
DATA: I_LAYOUT TYPE TABLE OF SLIS_LAYOUT_ALV WITH
NON-UNIQUE DEFAULT KEY WITH HEADER LINE INITIAL SIZE 0.
DATA: I_SORT TYPE SLIS_T_SORTINFO_ALV,
X_SORT LIKE LINE OF I_SORT.
X_SORT-SPOS = 41.
X_SORT-FIELDNAME = 'PERSG'.
X_SORT-UP = 'X'.
X_SORT-SUBTOT = 'X'.
APPEND X_SORT TO I_SORT.
I_LAYOUT-ZEBRA = 'X'.
I_LAYOUT-SUBTOTALS_TEXT = 'SUBTOTAL'.
and pass that i_layout to the FM.
if ur using any other function module,then change I_LAYOUT to that FM type and pass it.
Regards,
Raj.
2008 Jul 03 6:10 AM
Hi,
Try this code,
DATA: I_LAYOUT TYPE TABLE OF SLIS_LAYOUT_ALV WITH
NON-UNIQUE DEFAULT KEY WITH HEADER LINE INITIAL SIZE 0.
DATA: I_SORT TYPE SLIS_T_SORTINFO_ALV,
X_SORT LIKE LINE OF I_SORT.
X_SORT-SPOS = 41.
X_SORT-FIELDNAME = 'PERSG'.
X_SORT-UP = 'X'.
X_SORT-SUBTOT = 'X'.
APPEND X_SORT TO I_SORT.
I_LAYOUT-ZEBRA = 'X'.
I_LAYOUT-SUBTOTALS_TEXT = 'SUBTOTAL'.
and pass the I_layout to the function module.
Thanks & Regards,
Y.R.Prem Kumar
| User | Count |
|---|---|
| 3 | |
| 2 | |
| 2 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |