Application Development 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: 

ALV using clases and methods

Former Member
0 Kudos

Hi all

how can i use alv 's for reading data from table mara and dispyaing 10 records on out put screen as a grid using classes or methods

thanks in advance

3 REPLIES 3

Former Member
0 Kudos

Please refer the ALV programs available in SAP

USE SE38 and search for the program name contains the word ALV ( ALV )

Former Member
0 Kudos

Hi,

look into the sample code:

----


  • TYPE-POOLS *

----


TYPE-POOLS: slis.

----


  • TRANSPARENT TABLES *

----


TABLES: rbkp,rbco,sscrfields,t009b.

----


  • CLASS cl_event_receiver DEFINITION

----


CLASS cl_event_receiver DEFINITION.

PUBLIC SECTION.

METHODS: handle_double_click

FOR EVENT double_click OF cl_gui_alv_grid

IMPORTING e_row e_column,

handle_top_of_page

FOR EVENT print_top_of_page OF cl_gui_alv_grid.

PRIVATE SECTION.

ENDCLASS.

----


  • CLASS CL_EVENT_RECEIVER IMPLEMENTATION

----


CLASS cl_event_receiver IMPLEMENTATION.

*--Method double click

METHOD :handle_double_click.

PERFORM drill_down USING e_column-fieldname

e_row-index .

ENDMETHOD.

*--Method top of page

METHOD handle_top_of_page.

PERFORM event_top_of_page.

ENDMETHOD. "top_of_page

ENDCLASS.

DATA: event_receiver TYPE REF TO cl_event_receiver.

----


  • Global Variables *

----


DATA:

v_xblnr LIKE rbkp-xblnr, " Refernce Doc No

v_lifnr LIKE lfa1-lifnr, " Vendor

v_bukrs LIKE t001-bukrs, " Company Code

v_zzmprd LIKE mara-matnr, " MPM

v_monat LIKE t009b-poper. " Fiscal Period

----


  • GLOBAL TYPES *

----


*-Structure for Invoice details

TYPES:BEGIN OF y_invoice,

belnr LIKE rbkp-belnr, " Invoice Doc No

gjahr LIKE rbkp-gjahr, " Fiscal Year

blart LIKE rbkp-blart, " Document type

bldat LIKE rbkp-bldat, " Document date

budat LIKE rbkp-budat, " Posting date

xblnr LIKE rbkp-xblnr, " Refernce Doc no

bukrs LIKE rbkp-bukrs, " Company Code

lifnr LIKE rbkp-lifnr, " Vendor

waers LIKE rbkp-waers, " Local Currency

bktxt LIKE rbkp-bktxt, " Doc header text

zlspr LIKE rbkp-zlspr, " payment block

buzei LIKE rseg-buzei, " Invoice Item No

ebeln LIKE rseg-ebeln, " PO

ebelp LIKE rseg-ebelp, " PO line item

matnr LIKE rseg-matnr, " SAP Material

bwtar LIKE rseg-bwtar, " Valuation type

wrbtr LIKE rseg-wrbtr, " Inv Value

menge LIKE rseg-menge, " Inv Qty

END OF y_invoice,

*-Structure for Material details

BEGIN OF y_material,

matnr LIKE mara-matnr, " Material No

normt LIKE mara-normt, " Article Number

ismconttype LIKE mara-ismconttype, " Window

ismdesign LIKE mara-ismdesign, " No of disc in MPM

werks LIKE marc-werks, " Plant

mfrgr LIKE marc-mfrgr, " Product Line

END OF y_material,

  • Structure for Costtype data

BEGIN OF y_costtype,

bukrs LIKE zsn0325_costtype-bukrs, " Company Code

land1 LIKE zsn0325_costtype-land1, " Country key

window LIKE zsn0325_costtype-window, " Window

ewlnr LIKE zsn0325_costtype-ewlnr, " Cost type

distmeth LIKE zsn0325_costtype-distmeth, " Distribution type

zvalfrom LIKE zsn0325_costtype-zvalfrom, " Posting date from

zvalto LIKE zsn0325_costtype-zvalto, " Posting Date TO

disc1pr LIKE zsn0325_costtype-disc1pr, " Disc price

disc2pr LIKE zsn0325_costtype-disc2pr, " Disc price

END OF y_costtype,

  • Structure for Distmeth data

BEGIN OF y_distmeth,

distmeth LIKE zsn0325_distmeth-distmeth, " Distribution Methods

distext LIKE zsn0325_distmeth-distext, " Description

END OF y_distmeth,

*-structure for rbco

BEGIN OF y_rbco,

belnr LIKE rbco-belnr, " Account Doc#

gjahr LIKE rbco-gjahr, " Fiscal year

buzei LIKE rbco-buzei, " Doc item in inv doc

cobl_nr LIKE rbco-cobl_nr, " 4 Character

" Seq No for Coding

wrbtr LIKE rbco-wrbtr, " Amt in doc currency

saknr LIKE rbco-saknr, " G/L Account Number

sgtxt LIKE rbco-sgtxt, " Item text

zzcou LIKE rbco-zzcou, " Country

zzmprd LIKE rbco-zzmprd, " MPM Product

menge LIKE rbco-menge, " Quantity

bukrs LIKE rbco-bukrs, " Company Code

xnegp LIKE rbco-xnegp, " Variance Flag

matnr LIKE mara-matnr, " MPM Product

land1 LIKE zsop_fame-sop_cnt, " SOP country code

END OF y_rbco,

*-structure for rbco_tmp

BEGIN OF y_rbco_tmp,

bukrs LIKE rbco-bukrs, " Company Code

sgtxt LIKE rbco-sgtxt, " Item text

ewlnr LIKE zsn0325_costtype-ewlnr, " Cost type

distmeth LIKE zsn0325_costtype-distmeth, " Distribution type

land1 LIKE zsop_fame-sop_cnt, " SOP country code

END OF y_rbco_tmp,

*-Structure for setleaf

BEGIN OF y_setleaf,

setname LIKE setleaf-setname,

valsign LIKE setleaf-valsign,

valoption LIKE setleaf-valoption,

valfrom LIKE setleaf-valfrom,

valto LIKE setleaf-valto,

END OF y_setleaf,

*-Structure for Output data

BEGIN OF y_output,

bukrs LIKE rbkp-bukrs, " Company Code

gjahr LIKE rbkp-gjahr, " Fiscal year

lifnr LIKE rbkp-lifnr, " Vendor

zlspr LIKE rbkp-zlspr, " Payment block

xblnr LIKE rbkp-xblnr, " Refernece Doc no

bldat LIKE rbkp-bldat, " Document date

budat LIKE rbkp-budat, " Posting date

belnr LIKE rbkp-belnr, " Invoice Doc No

bktxt LIKE rbkp-bktxt, " Invoice Type

normt LIKE mara-normt, " Article Number

ismconttype LIKE mara-ismconttype, " Window

zzcou LIKE rbco-zzcou, " Country

zzmprd LIKE rbco-zzmprd, " MPM Product

xnegp LIKE rbco-xnegp, " Cost type variance

cobl_nr LIKE rbco-cobl_nr, " 4 Character

" Seq No for Coding

invfqty LIKE rbco-menge, " Inventory Fee Qty

discqty LIKE rbco-menge, " Dist Cost Qty

disrqty LIKE rbco-menge, " Dist Return Qty

sseqty LIKE rbco-menge, " Special Services Qty

sgtxt LIKE rbco-sgtxt, " Item Text

ismdesign LIKE mara-ismdesign, " No of disc on MPM

mfrgr LIKE marc-mfrgr, " Product Line

ddeal(3), " Distribution DEAL

distmeth LIKE zsn0325_costtype-distmeth, " Distribution type

distext LIKE zsn0325_distmeth-distext, " Description

ndisc(2) TYPE c, " NO of disc on INV

rifval LIKE rbco-wrbtr, " Inv fee value

stdrif LIKE zsn0325_costtype-disc1pr, " STD Inv fee

rfvar LIKE zsn0325_costtype-disc1pr, " Inv Fee Variance

dicval LIKE rbco-wrbtr, " Dist cost Value

stddico LIKE zsn0325_costtype-disc1pr, " STD Dis cost

dicvar LIKE zsn0325_costtype-disc1pr, " Dist Cost Variance

disrev LIKE rbco-wrbtr, " Dist Return Value

stdirco LIKE zsn0325_costtype-disc1pr, " STD Dis Return cost

drevar LIKE zsn0325_costtype-disc1pr, " Dist Ret Variance

adj_qty_ct LIKE rbco-menge, " Adjustments Qty

adj_pr_ct LIKE rbco-wrbtr, " Adjustments Value

ssval LIKE rbco-wrbtr, " Special Value

color_cell TYPE lvc_t_scol, " Cell Color

END OF y_output,

*-Structure for Temporary Output data

BEGIN OF y_output_tmp,

bukrs LIKE rbkp-bukrs, " Company Code

gjahr LIKE rbkp-gjahr, " Fiscal year

lifnr LIKE rbkp-lifnr, " Vendor

zlspr LIKE rbkp-zlspr, " Payment block

xblnr LIKE rbkp-xblnr, " Refernece Doc no

bldat(10) TYPE c, " Document Date

budat(10) TYPE c, " Posting date

belnr LIKE rbkp-belnr, " Invoice Doc No

bktxt LIKE rbkp-bktxt, " Invoice Type

normt(18) TYPE c, " Article Number

ismconttype LIKE mara-ismconttype, " Window

zzcou LIKE rbco-zzcou, " Country

zzmprd LIKE rbco-zzmprd, " MPM Product

xnegp LIKE rbco-xnegp, " Cost type variance

cobl_nr LIKE rbco-cobl_nr, " 4 Character

" Seq No for Coding

invfqty LIKE rbco-menge, " Inventory Fee Qty

discqty LIKE rbco-menge, " Dist Cost Qty

disrqty LIKE rbco-menge, " Dist Return Qty

sseqty LIKE rbco-menge, " Special Services Qty

sgtxt LIKE rbco-sgtxt, " Item Text

ismdesign(2) TYPE c, " No of disc on MPM

mfrgr LIKE marc-mfrgr, " Product Line

ddeal(3), " Distribution DEAL

distmeth LIKE zsn0325_costtype-distmeth, " Distribution type

distext LIKE zsn0325_distmeth-distext, " Description

ndisc(2) TYPE c, " NO of disc on INV

rifval LIKE rbco-wrbtr, " Inv fee value

stdrif LIKE zsn0325_costtype-disc1pr, " STD Inv fee

rfvar LIKE zsn0325_costtype-disc1pr, " Inv Fee Variance

dicval LIKE rbco-wrbtr, " Dist cost Value

stddico LIKE zsn0325_costtype-disc1pr, " STD Dis cost

dicvar LIKE zsn0325_costtype-disc1pr, " Dist Cost Variance

disrev LIKE rbco-wrbtr, " Dist Return Value

stdirco LIKE zsn0325_costtype-disc1pr, " STD Dis Return cost

drevar LIKE zsn0325_costtype-disc1pr, " Dist Ret Variance

adj_qty_ct LIKE rbco-menge, " Adjustments Qty

adj_pr_ct LIKE rbco-wrbtr, " Adjustments Value

ssval LIKE rbco-wrbtr, " Special Value

color_cell TYPE lvc_t_scol, " Cell Color

END OF y_output_tmp.

----


  • GLOBAL DATA -INTERNAL TABLES *

----


DATA: i_invoice TYPE STANDARD TABLE OF y_invoice,

i_output TYPE STANDARD TABLE OF y_output,

i_output_tmp TYPE STANDARD TABLE OF y_output_tmp,

i_rbco TYPE STANDARD TABLE OF y_rbco,

i_rbco_tmp TYPE STANDARD TABLE OF y_rbco_tmp,

i_setleaf TYPE STANDARD TABLE OF y_setleaf,

i_material TYPE STANDARD TABLE OF y_material,

i_costtype TYPE STANDARD TABLE OF y_costtype,

i_distmeth TYPE STANDARD TABLE OF y_distmeth,

i_toolbar_excluding TYPE ui_functions,

i_fieldcatalog TYPE lvc_t_fcat.

----


  • WORK AREAS *

----


DATA: w_invoice TYPE y_invoice,

w_material TYPE y_material,

w_output TYPE y_output,

w_output_tmp TYPE y_output_tmp,

w_costtype TYPE y_costtype,

w_distmeth TYPE y_distmeth,

w_rbco TYPE y_rbco,

w_rbco_tmp TYPE y_rbco_tmp,

w_setleaf TYPE y_setleaf,

w_toolbar_excluding TYPE ui_func,

w_fieldcatalog TYPE lvc_s_fcat.

*--Ranges

RANGES: r_setinv FOR setleaf-valfrom,

r_matnr FOR mara-matnr.

----


  • DATA DECLARATION FOR ALV *

----


*--Data declaration for ALV Grid

DATA :w_alvgrid TYPE REF TO cl_gui_alv_grid,

w_ccontainer TYPE REF TO cl_gui_custom_container,

w_okcode LIKE sy-ucomm.

*--Color cell

DATA: i_color TYPE lvc_t_scol,

w_color TYPE lvc_s_scol.

*--- Layout structure

DATA w_layout TYPE lvc_s_layo .

----


  • SELECTION SCREEN *

----


SELECTION-SCREEN BEGIN OF BLOCK blk1 WITH FRAME TITLE text-055.

SELECT-OPTIONS:

s_bukrs FOR rbkp-bukrs, " Company Code

s_lifnr FOR rbkp-lifnr, " Vendor

s_xblnr FOR rbkp-xblnr, " Reference Doc No

s_gjahr FOR rbkp-gjahr OBLIGATORY, " Fiscal Year

s_monat FOR t009b-poper, " Period

s_budat FOR rbkp-budat, " Posting date

s_bldat FOR rbkp-bldat, " Document date

s_zzmprd FOR rbco-zzmprd. " MPM

SELECTION-SCREEN END OF BLOCK blk1.

----


  • AT SELECTION SCREEN *

----


  • Validating Company Code

AT SELECTION-SCREEN ON s_bukrs.

IF NOT s_bukrs[] IS INITIAL.

SELECT bukrs " Company Code

UP TO 1 ROWS

INTO v_bukrs

FROM t001

WHERE bukrs IN s_bukrs.

ENDSELECT.

IF sy-subrc NE 0.

MESSAGE e000 WITH 'Invalid Company Code'(e06).

ENDIF.

ENDIF.

  • Validating ODS Invoice Document No.

AT SELECTION-SCREEN ON s_xblnr.

IF NOT s_xblnr[] IS INITIAL.

SELECT xblnr " Reference Document number

UP TO 1 ROWS

INTO v_xblnr

FROM rbkp

WHERE xblnr IN s_xblnr.

ENDSELECT.

IF sy-subrc NE 0.

MESSAGE e000 WITH 'Invalid ODS Invoice No.'(e05).

ENDIF.

ENDIF.

  • Validating Vendor Number

AT SELECTION-SCREEN ON s_lifnr.

IF NOT s_lifnr[] IS INITIAL.

SELECT lifnr " Vendor Number

UP TO 1 ROWS

INTO v_lifnr

FROM lfa1

WHERE lifnr IN s_lifnr.

ENDSELECT.

IF sy-subrc NE 0.

MESSAGE e000 WITH 'Invalid Vendor Number'(e04).

ENDIF.

ENDIF.

  • Validating MPM

AT SELECTION-SCREEN ON s_zzmprd.

REFRESH r_matnr.

LOOP AT s_zzmprd.

MOVE-CORRESPONDING s_zzmprd TO r_matnr.

IF NOT s_zzmprd IS INITIAL.

CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT'

EXPORTING

input = s_zzmprd-low

IMPORTING

output = r_matnr-low

EXCEPTIONS

length_error = 1

OTHERS = 2.

CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT'

EXPORTING

input = s_zzmprd-high

IMPORTING

output = r_matnr-high

EXCEPTIONS

length_error = 1

OTHERS = 2.

APPEND r_matnr.

ENDIF.

ENDLOOP.

SELECT matnr " MPM

UP TO 1 ROWS

INTO v_zzmprd

FROM mara

WHERE matnr IN r_matnr.

ENDSELECT.

IF sy-subrc NE 0.

MESSAGE e000 WITH 'Invalid MPM'(e09).

ENDIF.

  • Validating Fiscal Period

IF NOT s_monat[] IS INITIAL.

SELECT poper " Fiscal Period

UP TO 1 ROWS

INTO v_monat

FROM t009b

WHERE periv = 'K4'

AND poper IN s_monat

AND bdatj IN s_gjahr.

ENDSELECT.

IF sy-subrc NE 0.

MESSAGE e000 WITH 'Invalid Fiscal Period'(e02).

ENDIF.

ENDIF.

*For Company Code & Vendor

AT SELECTION-SCREEN.

MOVE sy-ucomm TO sscrfields-ucomm.

IF sy-ucomm EQ 'ONLI'

AND s_bukrs[] IS INITIAL

AND s_lifnr[] IS INITIAL.

MESSAGE i000 WITH

'Either Company code or Vendor must be selected'(e03).

STOP.

ENDIF.

IF ( NOT s_budat[] IS INITIAL OR NOT s_bldat IS INITIAL )

AND NOT s_monat[] IS INITIAL.

MESSAGE i000 WITH

'Select either Period or Posting date,Document date'(e01).

STOP.

ENDIF.

----


  • START OF SELECTION *

----


START-OF-SELECTION.

*-Retrieve Invoice Details from RBKP & RSEG

PERFORM get_invoice.

IF NOT i_invoice[] IS INITIAL.

*-Retrieve Invoice Details from RBCO

PERFORM get_rbco.

ENDIF.

IF NOT i_rbco[] IS INITIAL.

*-Retrieve Material Document details from MARA & MARC

PERFORM get_material.

ENDIF.

IF NOT i_invoice[] IS INITIAL.

*-Retrieve costtype details from zsn0325_costtype & zsn0325_distmeth

PERFORM get_costtype.

PERFORM get_distmeth.

ENDIF.

*-Populate internal table for output

PERFORM populate_output.

----


  • END OF SELECTION *

----


END-OF-SELECTION.

*-TO Display Output

IF NOT i_invoice[] IS INITIAL

AND NOT i_output[] IS INITIAL.

PERFORM display_report.

CALL SCREEN 100.

ENDIF.

&----


*& Form get_Invoice

&----


  • Retrieve Invoice Details from RBKP & RSEG

----


FORM get_invoice.

DATA : lv_monat LIKE bkpf-monat.

*-Get Value form set zsn_doc_types_inv

SELECT setname

valsign

valoption

valfrom

valto

FROM setleaf

INTO TABLE i_setleaf

WHERE setclass = '0000'

AND setname = 'ZSN_DOC_TYPES_INV'.

IF sy-subrc = 0.

LOOP AT i_setleaf INTO w_setleaf.

r_setinv-sign = w_setleaf-valsign.

r_setinv-option = w_setleaf-valoption.

r_setinv-low = w_setleaf-valfrom.

r_setinv-high = w_setleaf-valto.

APPEND r_setinv.

ENDLOOP.

ENDIF.

  • Get Invoice Doc details

SELECT a~belnr " Document number of an invoice

a~gjahr " Fiscal Year

a~blart " Document type

a~bldat " Document Date in Document

a~budat " Posting Date in the Document

a~xblnr " Reference Document Number

a~bukrs " Company Code

a~lifnr " Different invoicing party

a~waers " Currency Key

a~bktxt " Document header text

a~zlspr " Payment Block Key

b~buzei " Document item in invoice

b~ebeln " Purchasing Document Number

b~ebelp " Item Number of PO Document

b~matnr " Material Number

b~bwtar " Valuation type

b~wrbtr " Amount in document currency

b~menge " Quantity

INTO TABLE i_invoice

FROM rbkp AS a

LEFT OUTER JOIN rseg AS b

ON abelnr EQ bbelnr

WHERE a~bukrs IN s_bukrs

AND a~gjahr IN s_gjahr

AND a~bldat IN s_bldat

AND a~blart IN r_setinv

AND a~budat IN s_budat

AND a~xblnr IN s_xblnr

AND a~lifnr IN s_lifnr.

IF sy-subrc NE 0.

MESSAGE i000 WITH 'No Invoice exists for this selection'(e07)

'criteria'(e08).

STOP.

ELSE.

SORT i_invoice BY belnr gjahr.

LOOP AT i_invoice INTO w_invoice.

CALL FUNCTION 'FI_PERIOD_DETERMINE'

EXPORTING

i_budat = w_invoice-budat

i_bukrs = w_invoice-bukrs

i_periv = 'K4'

i_gjahr = w_invoice-gjahr

  • I_MONAT = 00

  • X_XMO16 = ' '

IMPORTING

  • E_GJAHR =

e_monat = lv_monat

  • E_POPER =

EXCEPTIONS

fiscal_year = 1

period = 2

period_version = 3

posting_period = 4

special_period = 5

version = 6

posting_date = 7

OTHERS = 8.

IF sy-subrc <> 0.

DELETE i_invoice.

ELSE.

IF lv_monat IN s_monat.

ELSE.

DELETE i_invoice.

ENDIF.

ENDIF.

ENDLOOP.

IF i_invoice[] IS INITIAL.

MESSAGE i000 WITH 'No Invoice exists for this selection'(e07)

'criteria'(e08).

STOP.

ENDIF.

ENDIF.

ENDFORM. " get_Invoice

&----


*& Form get_rbco

&----


  • Retrieve Invoice Details from RBCO

----


FORM get_rbco.

SELECT belnr

gjahr

buzei

cobl_nr

wrbtr

saknr

sgtxt

zzcou

zzmprd

menge

bukrs

xnegp

FROM rbco

INTO TABLE i_rbco

FOR ALL ENTRIES IN i_invoice

WHERE belnr = i_invoice-belnr

AND gjahr = i_invoice-gjahr

AND wrbtr <> 0

AND zzmprd IN s_zzmprd.

IF sy-subrc NE 0.

MESSAGE i000 WITH 'No Distribution Data Exists'(e10).

STOP.

ELSE.

SORT i_rbco BY belnr gjahr.

ENDIF.

ENDFORM. " get_rbco

&----


*& Form get_material

&----


  • Retrieve Material Document details from MARA & MARC

----


FORM get_material.

LOOP AT i_rbco INTO w_rbco.

SELECT SINGLE sop_cnt

INTO w_rbco_tmp-land1

FROM zsop_fame

WHERE fame_cnt = w_rbco-zzcou.

IF sy-subrc = 0.

w_rbco_tmp-bukrs = w_rbco-bukrs.

w_rbco_tmp-ewlnr = w_rbco-sgtxt+7(2).

w_rbco_tmp-distmeth = w_rbco-sgtxt+0(3).

ENDIF.

w_rbco-land1 = w_rbco_tmp-land1.

APPEND w_rbco_tmp TO i_rbco_tmp.

CLEAR w_rbco_tmp.

CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT'

EXPORTING

input = w_rbco-zzmprd

IMPORTING

output = w_rbco-matnr

EXCEPTIONS

length_error = 1

OTHERS = 2.

MODIFY i_rbco FROM w_rbco.

CLEAR w_rbco.

ENDLOOP.

SELECT a~matnr " Material Number

a~normt " Article Number

a~ismconttype " Window

a~ismdesign " No of discs in MPM

b~werks " Plant

b~mfrgr " Product Line

INTO TABLE i_material

FROM mara AS a

INNER JOIN

marc AS b

ON amatnr = bmatnr

FOR ALL ENTRIES IN i_rbco

WHERE a~matnr = i_rbco-matnr.

IF sy-subrc = 0.

SORT i_material BY matnr.

ENDIF.

ENDFORM. " get_material

&----


*& Form get_costtype

&----


  • Retrieve costtype details from zsn0325_costtype

----


FORM get_costtype.

SELECT bukrs " Company code

land1 " Country key

window " Window

ewlnr " Cost type

distmeth " Distribution type

zvalfrom " Invoice date

zvalto " Invoice date

disc1pr " Disc Price

disc2pr " Additional DiscPrice

FROM zsn0325_costtype

INTO TABLE i_costtype

FOR ALL ENTRIES IN i_rbco_tmp

WHERE bukrs = i_rbco_tmp-bukrs

AND ewlnr = i_rbco_tmp-ewlnr

AND distmeth = i_rbco_tmp-distmeth

AND land1 = i_rbco_tmp-land1.

IF sy-subrc = 0.

SORT i_costtype BY bukrs land1 window ewlnr distmeth.

ENDIF.

ENDFORM. " get_costtype

&----


*& Form get_distmeth

&----


  • Retrieve costtype details from zsn0325_distmeth

----


FORM get_distmeth.

SELECT distmeth

distext

FROM zsn0325_distmeth

INTO TABLE i_distmeth

FOR ALL ENTRIES IN i_costtype

WHERE distmeth = i_costtype-distmeth.

IF sy-subrc = 0.

SORT i_distmeth BY distmeth.

ENDIF.

ENDFORM. " get_distmeth

&----


*& Form display_report

&----


  • TO Display Output

----


FORM display_report.

IF NOT i_output[] IS INITIAL.

SORT i_output BY xblnr.

PERFORM build_fieldcat.

ENDIF.

ENDFORM. " display_report

&----


*& Form build_fieldcat

&----


  • Build Field Catalog

----


FORM build_fieldcat.

PERFORM fill_fieldcat USING 'BUKRS' 'I_OUTPUT'

'Company Code'(001) 12.

PERFORM fill_fieldcat USING 'LIFNR' 'I_OUTPUT'

'Vendor'(002) 6.

PERFORM fill_fieldcat USING 'ZLSPR' 'I_OUTPUT'

'Payment Block'(003) 13.

PERFORM fill_fieldcat USING 'XBLNR' 'I_OUTPUT'

'Vendor Invoice No'(004) 17.

PERFORM fill_fieldcat USING 'BLDAT' 'I_OUTPUT'

'Invoice Date'(005) 12.

PERFORM fill_fieldcat USING 'BUDAT' 'I_OUTPUT'

'Posting Date'(006) 12.

PERFORM fill_fieldcat USING 'BKTXT' 'I_OUTPUT'

'Invoice Type'(007) 12.

PERFORM fill_fieldcat USING 'BELNR' 'I_OUTPUT'

'R/3 Invoice No'(008) 14.

PERFORM fill_fieldcat USING 'COBL_NR' 'I_OUTPUT'

'Line Item'(009) 9.

PERFORM fill_fieldcat USING 'NORMT' 'I_OUTPUT'

'Article No'(010) 10.

PERFORM fill_fieldcat USING 'ZZMPRD' 'I_OUTPUT'

'MPM Product'(034) 11.

PERFORM fill_fieldcat USING 'ISMCONTTYPE' 'I_OUTPUT'

'Window'(011) 6.

PERFORM fill_fieldcat USING 'NDISC' 'I_OUTPUT'

'No of Discs on invoice'(012) 22.

PERFORM fill_fieldcat USING 'ISMDESIGN' 'I_OUTPUT'

'No of discs on MPM'(013) 10.

PERFORM fill_fieldcat USING 'DISTMETH' 'I_OUTPUT'

'Distribution type'(014) 17.

PERFORM fill_fieldcat USING 'DISTEXT' 'I_OUTPUT'

'Description'(015) 11.

PERFORM fill_fieldcat USING 'DDEAL' 'I_OUTPUT'

'Distribution Deal'(016) 17.

PERFORM fill_fieldcat USING 'MFRGR' 'I_OUTPUT'

'MPM Product Line'(017) 16.

PERFORM fill_fieldcat USING 'ZZCOU' 'I_OUTPUT'

'Country'(018) 7.

PERFORM fill_fieldcat USING 'XNEGP' 'I_OUTPUT'

'Qty Var flag'(019) 12.

PERFORM fill_fieldcat USING 'INVFQTY' 'I_OUTPUT'

'Inv fee Qty'(020) 11.

PERFORM fill_fieldcat USING 'RIFVAL' 'I_OUTPUT'

'Inv fee Value'(021) 13.

PERFORM fill_fieldcat USING 'STDRIF' 'I_OUTPUT'

'Std Inv fee'(022) 11.

PERFORM fill_fieldcat USING 'RFVAR' 'I_OUTPUT'

'Inv fee Var'(023) 11.

PERFORM fill_fieldcat USING 'DISCQTY' 'I_OUTPUT'

'Dis cost Qty'(024) 11.

PERFORM fill_fieldcat USING 'DICVAL' 'I_OUTPUT'

'Dist Cost Value'(025) 15.

PERFORM fill_fieldcat USING 'STDDICO' 'I_OUTPUT'

'Std Dist Cost'(026) 11.

PERFORM fill_fieldcat USING 'DICVAR' 'I_OUTPUT'

'Dist Cost Var'(027) 13.

PERFORM fill_fieldcat USING 'DISRQTY' 'I_OUTPUT'

'Dis Ret Qty'(028) 11.

PERFORM fill_fieldcat USING 'DISREV' 'I_OUTPUT'

'Dis Ret Value'(029) 11.

PERFORM fill_fieldcat USING 'STDIRCO' 'I_OUTPUT'

'Std Dis Ret cost'(030) 11.

PERFORM fill_fieldcat USING 'DREVAR' 'I_OUTPUT'

'Dis Ret Var'(031) 11.

PERFORM fill_fieldcat USING 'ADJ_QTY_CT' 'I_OUTPUT'

'Adjustments Qty'(035) 15.

PERFORM fill_fieldcat USING 'ADJ_PR_CT' 'I_OUTPUT'

'Adjustments Value'(036) 17.

PERFORM fill_fieldcat USING 'SSEQTY' 'I_OUTPUT'

'Special Ser Qty'(032) 15.

PERFORM fill_fieldcat USING 'SSVAL' 'I_OUTPUT'

'Special Ser Value'(033) 17.

ENDFORM. " build_fieldcat

&----


*& Form fill_fieldcat

&----


  • Fill fieldcatalog for ALV *

----


FORM fill_fieldcat USING value(p_fieldname)

value(p_tabname)

value(p_seltext_m)

value(p_outputlen).

w_fieldcatalog-fieldname = p_fieldname.

w_fieldcatalog-ref_table = p_tabname.

w_fieldcatalog-coltext = p_seltext_m.

w_fieldcatalog-outputlen = p_outputlen.

APPEND w_fieldcatalog TO i_fieldcatalog.

CLEAR w_fieldcatalog.

ENDFORM. " fill_fieldcat

&----


*& Module STATUS_0100 OUTPUT

&----


  • Process Before output

----


MODULE status_0100 OUTPUT.

SET PF-STATUS 'SCREEN1'.

SET TITLEBAR 'TITLE'.

ENDMODULE. " STATUS_0100 OUTPUT

&----


*& Module alV_display OUTPUT

&----


  • ALv Display in PBO *

----


MODULE alv_display OUTPUT.

IF w_ccontainer IS INITIAL.

PERFORM create_objects.

  • Excluding unnecessary function codes from the grid

PERFORM exclude_fcodes.

PERFORM display_alv_grid.

ENDIF.

ENDMODULE. " alV_display OUTPUT

&----


*& Form create_objects

&----


  • Create ALV Objects

----


FORM create_objects.

IF w_alvgrid IS INITIAL .

*----Creating custom container instance

CREATE OBJECT w_ccontainer

EXPORTING

container_name = 'CONTAINER'

EXCEPTIONS

cntl_error = 1

cntl_system_error = 2

create_error = 3

lifetime_error = 4

lifetime_dynpro_dynpro_link = 5

others = 6 .

IF sy-subrc <> 0.

*--Exception handling

ENDIF.

*----Creating ALV Grid instance

CREATE OBJECT w_alvgrid

EXPORTING

i_parent = w_ccontainer

EXCEPTIONS

error_cntl_create = 1

error_cntl_init = 2

error_cntl_link = 3

error_dp_create = 4

others = 5 .

IF sy-subrc <> 0.

*--Exception handling

ENDIF.

*--Create Event Receiver

CREATE OBJECT event_receiver.

SET HANDLER event_receiver->handle_top_of_page FOR w_alvgrid.

ENDIF.

ENDFORM. " create_objects

&----


*& Form display_alv_grid

&----


  • Display ALV Grid

----


FORM display_alv_grid.

w_layout-grid_title = 'Distribution Report'(042).

IF NOT w_alvgrid IS INITIAL .

MOVE 'COLOR_CELL' TO w_layout-ctab_fname.

CALL METHOD w_alvgrid->set_table_for_first_display

EXPORTING

is_layout = w_layout

it_toolbar_excluding = i_toolbar_excluding[]

  • I_DEFAULT = 'X'

CHANGING

it_outtab = i_output_tmp[]

it_fieldcatalog = i_fieldcatalog[]

EXCEPTIONS

invalid_parameter_combination = 1

program_error = 2

too_many_lines = 3

OTHERS = 4 .

IF sy-subrc <> 0.

*--Exception handling

ENDIF.

ELSE .

CALL METHOD w_alvgrid->refresh_table_display

EXCEPTIONS

finished = 1

OTHERS = 2 .

IF sy-subrc <> 0.

ENDIF.

ENDIF .

*--handler for ALV grid

SET HANDLER event_receiver->handle_double_click FOR w_alvgrid.

ENDFORM. " display_alv_grid

&----


*& Module USER_COMMAND_0100 INPUT

&----


  • At User Command

----


MODULE user_command_0100 INPUT.

MOVE sy-ucomm TO w_okcode.

CASE w_okcode.

WHEN 'BACK'.

LEAVE TO SCREEN 0.

WHEN 'EXIT'.

LEAVE PROGRAM.

ENDCASE.

ENDMODULE. " USER_COMMAND_0100 INPUT

&----


*& Form populate_output

&----


  • Populate internal table for output

----


FORM populate_output.

DATA: lv_invval TYPE rbco-wrbtr.

LOOP AT i_rbco INTO w_rbco.

*-Check whether ndisc is numeric value.

IF w_rbco-sgtxt+4(2) CO '0123456789'.

MOVE: w_rbco-sgtxt+4(2) TO w_output-ndisc.

ENDIF.

MOVE:w_rbco-cobl_nr TO w_output-cobl_nr,

w_rbco-zzcou TO w_output-zzcou,

w_rbco-zzmprd TO w_output-zzmprd,

w_rbco-xnegp TO w_output-xnegp.

  • For Invoice

READ TABLE i_invoice INTO w_invoice WITH KEY belnr = w_rbco-belnr

gjahr = w_rbco-gjahr

BINARY SEARCH.

IF sy-subrc = 0.

MOVE: w_invoice-bukrs TO w_output-bukrs,

w_invoice-lifnr TO w_output-lifnr,

w_invoice-zlspr TO w_output-zlspr,

w_invoice-xblnr TO w_output-xblnr,

w_invoice-bldat TO w_output-bldat,

w_invoice-budat TO w_output-budat,

w_invoice-bktxt TO w_output-bktxt,

w_invoice-belnr TO w_output-belnr.

ENDIF.

*-Calculate standard cost type value and cost type variance

IF w_rbco-menge NE 0

AND w_output-ndisc NE 0.

lv_invval = ( w_rbco-wrbtr / w_rbco-menge ) /

w_output-ndisc.

ENDIF.

  • For Material

READ TABLE i_material INTO w_material WITH KEY

matnr = w_rbco-matnr

BINARY SEARCH.

IF sy-subrc = 0.

MOVE: w_material-normt TO w_output-normt,

w_material-ismconttype TO w_output-ismconttype,

w_material-ismdesign TO w_output-ismdesign(2),

w_material-mfrgr TO w_output-mfrgr.

MOVE : w_rbco-sgtxt+0(3) TO w_output-distmeth,

w_rbco-sgtxt+10(3) TO w_output-ddeal.

  • For Costtype

CLEAR w_costtype.

READ TABLE i_costtype INTO w_costtype WITH KEY

bukrs = w_rbco-bukrs

land1 = w_rbco-land1

window = w_output-ismconttype

ewlnr = w_rbco-sgtxt+7(2)

distmeth = w_rbco-sgtxt+0(3)

BINARY SEARCH.

IF sy-subrc = 0.

ENDIF.

*For Distmeth

READ TABLE i_distmeth INTO w_distmeth WITH KEY

distmeth = w_rbco-sgtxt+0(3)

BINARY SEARCH.

IF sy-subrc = 0.

MOVE: w_distmeth-distext TO w_output-distext.

ENDIF.

*-For Inv fee

IF w_rbco-sgtxt+7(2) = 'IF'.

MOVE : w_rbco-menge TO w_output-invfqty.

IF w_output-ndisc NE 0.

w_output-rifval = w_rbco-wrbtr.

w_output-stdrif = w_costtype-disc1pr

+ ( ( w_output-ndisc - 1 ) * w_costtype-disc2pr ).

w_output-rfvar = w_output-stdrif - lv_invval.

ENDIF.

ENDIF.

*-For Distribution cost

IF w_rbco-sgtxt+7(2) = 'DC'.

MOVE : w_rbco-menge TO w_output-discqty.

IF w_output-ndisc NE 0.

w_output-dicval = w_rbco-wrbtr.

w_output-stddico = w_costtype-disc1pr

+ ( ( w_output-ndisc - 1 ) * w_costtype-disc2pr ).

w_output-dicvar = w_output-stddico - lv_invval.

ENDIF.

ENDIF.

*-For Dist Return Values

IF w_rbco-sgtxt+7(2) = 'DR'.

MOVE : w_rbco-menge TO w_output-disrqty.

IF w_output-ndisc NE 0.

w_output-disrev = w_rbco-wrbtr.

w_output-stdirco = w_costtype-disc1pr

+ ( ( w_output-ndisc - 1 ) * w_costtype-disc2pr ).

w_output-drevar = w_output-stddico - lv_invval.

ENDIF.

ENDIF.

*-For MC Adjustments

IF ( w_rbco-sgtxt7(2) EQ 'AG' OR w_rbco-sgtxt7(2) EQ 'AF' ).

MOVE : w_rbco-menge TO w_output-adj_qty_ct.

IF w_output-ndisc NE 0.

MOVE : w_rbco-wrbtr TO w_output-adj_pr_ct.

ENDIF.

ENDIF.

*-For Special service

IF w_rbco-sgtxt+7(2) = 'SS'.

MOVE : w_rbco-menge TO w_output-sseqty.

IF w_output-ndisc NE 0.

MOVE : w_rbco-wrbtr TO w_output-ssval.

ENDIF.

ENDIF.

ENDIF.

APPEND w_output TO i_output.

CLEAR: w_rbco,w_output.

ENDLOOP.

PERFORM color_cell.

ENDFORM. " populate_output

&----


*& Form drill_down

&----


  • Drill down from alv Report *

----


FORM drill_down USING p_e_column_fieldname

p_e_row_index .

DATA : lv_invoice LIKE rbkp-xblnr.

READ TABLE i_output_tmp INTO w_output_tmp INDEX p_e_row_index.

IF sy-subrc = 0.

CASE p_e_column_fieldname.

WHEN 'BELNR'.

lv_invoice = w_output_tmp-belnr.

SET PARAMETER ID : 'RBN' FIELD lv_invoice,

'GJR' FIELD w_output_tmp-gjahr.

CALL TRANSACTION 'MIR4' AND SKIP FIRST SCREEN.

ENDCASE. " case r_ucomm

ENDIF.

ENDFORM. " drill_down

&----


*& Form color_cell

&----


  • Coloring the cell which are having variance

----


FORM color_cell.

DATA: len TYPE i.

DATA: lv_ismdesign(4) TYPE c.

LOOP AT i_output INTO w_output.

REFRESH i_color.

*-Color cell

IF w_output-rfvar LT 0.

MOVE:

'RFVAR' TO w_color-fname,

'6' TO w_color-color-col,

'1' TO w_color-color-int,

'1' TO w_color-color-inv.

APPEND w_color TO i_color.

ENDIF.

IF w_output-dicvar LT 0.

MOVE:

'DICVAR' TO w_color-fname,

'6' TO w_color-color-col,

'1' TO w_color-color-int,

'1' TO w_color-color-inv.

APPEND w_color TO i_color.

ENDIF.

IF w_output-drevar LT 0.

MOVE:

'DREVAR' TO w_color-fname,

'6' TO w_color-color-col,

'1' TO w_color-color-int,

'1' TO w_color-color-inv.

APPEND w_color TO i_color.

ENDIF.

lv_ismdesign = w_output-ismdesign.

len = strlen( lv_ismdesign ).

IF len = '1'.

CONCATENATE '0' lv_ismdesign INTO lv_ismdesign.

ENDIF.

IF w_output-ndisc NE lv_ismdesign.

MOVE:

'NDISC' TO w_color-fname,

'6' TO w_color-color-col,

'1' TO w_color-color-int,

'1' TO w_color-color-inv.

APPEND w_color TO i_color.

MOVE:

'ISMDESIGN' TO w_color-fname,

'6' TO w_color-color-col,

'1' TO w_color-color-int,

'1' TO w_color-color-inv.

APPEND w_color TO i_color.

ENDIF.

w_output-color_cell[] = i_color[].

MODIFY i_output FROM w_output.

MOVE-CORRESPONDING w_output TO w_output_tmp.

CLEAR: w_output_tmp-bldat, w_output_tmp-budat.

WRITE: w_output-bldat TO w_output_tmp-bldat,

w_output-budat TO w_output_tmp-budat.

APPEND w_output_tmp TO i_output_tmp.

ENDLOOP.

SORT i_output_tmp BY xblnr.

ENDFORM. " color_cell

&----


*& Form event_top_of_page

&----


  • Top of page

----


FORM event_top_of_page.

DATA: lv_date LIKE rbkp-bldat,

lv_lines(3) TYPE c.

MOVE sy-datum TO lv_date.

  • Total No. of Records Selected

DESCRIBE TABLE i_output LINES lv_lines.

WRITE: /15 'Program : Distribution Report'(041),

/15 'Company :'(046),'NBC Universal'(052),

/15 'Date : '(043),lv_date,

/15 'SAP User : '(044),sy-uname,

/15 'Total number of Records selected : '(045),lv_lines.

ENDFORM. " event_top_of_page

&----


*& Form exclude_fcodes

&----


  • Excluding unnecessary function codes from the grid text *

----


FORM exclude_fcodes.

REFRESH i_toolbar_excluding.

w_toolbar_excluding = cl_gui_alv_grid=>mc_mb_sum.

APPEND w_toolbar_excluding TO i_toolbar_excluding.

w_toolbar_excluding = cl_gui_alv_grid=>mc_fc_subtot.

APPEND w_toolbar_excluding TO i_toolbar_excluding.

ENDFORM. " exclude_fcodes

Regards,

Shalini

Former Member
0 Kudos