Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

No Subtotal Text

Former Member
0 Likes
693

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

2 REPLIES 2
Read only

Former Member
0 Likes
542

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.

Read only

Former Member
0 Likes
542

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