0% found this document useful (0 votes)
1K views

Alv Functionality

This document provides instructions for configuring and displaying an ALV grid in ABAP. It schedules a background job to display a daily report. It defines data structures and references for an ALV table and layout. It then programs various settings and configurations for the ALV grid such as column properties, sorting, filtering, and aggregations before displaying the final output.

Uploaded by

Kabil Rocky
Copyright
© © All Rights Reserved
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
1K views

Alv Functionality

This document provides instructions for configuring and displaying an ALV grid in ABAP. It schedules a background job to display a daily report. It defines data structures and references for an ALV table and layout. It then programs various settings and configurations for the ALV grid such as column properties, sorting, filtering, and aggregations before displaying the final output.

Uploaded by

Kabil Rocky
Copyright
© © All Rights Reserved
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 8

http://benxbrain.

com/en/sap/transaction/SM36-How-to-schedule-a-background-job-fo
r-several-time-Daily-thread-1-3261952.htm
F:\usr\sap\ECD\DVEBMGS00\data\Weigh_bridge
DATA: GT_TABLE
ns
GR_LAYOUT
layouts of the
KEY

TYPE REF TO CL_SALV_TABLE,

"Hold Factory method functio

TYPE REF TO CL_SALV_LAYOUT,


ALV grid
TYPE SALV_S_LAYOUT_KEY.

"Allow the user to manage

LO_REPORT->GENERATE_OUTPUT( ).

DATA: GO_LEVENTS TYPE REF TO LCL_REPORT,


GO_CEVENTS TYPE REF TO CL_SALV_EVENTS_TABLE.
DATA: LV_FUNCTIONS TYPE REF TO CL_SALV_FUNCTIONS_LIST.
IF GT_FINAL[] IS INITIAL.
MESSAGE 'List Contains no data' TYPE 'I'.
RETURN.
ENDIF.
TRY.
CL_SALV_TABLE=>FACTORY(
IMPORTING
R_SALV_TABLE = GT_TABLE
CHANGING
T_TABLE
= GT_FINAL ).
CATCH CX_SALV_MSG.
ENDTRY.
* activate ALV generic Functions

01 - EXT
02 - ENT
if vbak-zvbeln IS NOT INITIAL.
SELECT SINGLE ZVBELN
FROM vbak
INTO vbak
WHERE ZVBELN = vbak-vbeln.
IF sy-subrc ne 0 .
MESSAGE 'Enter Valid Sales Order No.' TYPE 'S' DISPLAY LIKE 'E'.
SET SCREEN SYST-DYNNR.
LEAVE SCREEN.
ENDIF.

ENDIF.

SELECT SINGLE ZVBELN


FROM vbak
INTO vbak
WHERE ZVBELN = vbak-vbeln.
IF sy-subrc ne 0.
MESSAGE 'Enter Valid Sales Order No.' TYPE 'E'.
ENDIF.

SELECT SINGLE VBELN


FROM vbak
INTO vbak
WHERE ZVBELN = vbak-vbeln.
IF sy-subrc ne 0 AND vbak-zvbeln IS NOT INITIAL.
MESSAGE 'Enter Valid Sales Order No.' TYPE 'E'.
ENDIF.
LV_FUNCTIONS = GT_TABLE->GET_FUNCTIONS( ).
LV_FUNCTIONS->SET_ALL( ABAP_TRUE ).
**Allow the user to manage layouts of the ALV grid
GR_LAYOUT = GT_TABLE->GET_LAYOUT( ).
KEY-REPORT = SY-REPID.
GR_LAYOUT->SET_KEY( KEY ).
GR_LAYOUT->SET_SAVE_RESTRICTION( CL_SALV_LAYOUT=>RESTRICT_NONE ).
DATA : LR_COL TYPE REF TO CL_SALV_COLUMN_TABLE. "column instance
DATA: LV_COLUMNS TYPE REF TO CL_SALV_COLUMNS_TABLE,
LV_COLUMN TYPE REF TO CL_SALV_COLUMN_TABLE.
LV_COLUMNS = GT_TABLE->GET_COLUMNS( ).
LV_COLUMNS->SET_OPTIMIZE( ABAP_TRUE ).
*
*

To Freeze the column in alv output


LV_COLUMNS->SET_KEY_FIXATION( VALUE = ABAP_TRUE ).
To Freeze the column in alv output

TRY.
LV_COLUMN ?= LV_COLUMNS->GET_COLUMN( 'VBELN' ).
GT_TABLE->GET_COLUMNS( )->SET_COLUMN_POSITION( COLUMNNAME = 'VBELN'
POSITION = 1 ).
LV_COLUMN->SET_LONG_TEXT( 'Sales Order No.' ).
LV_COLUMN->SET_MEDIUM_TEXT( ' ' ).
LV_COLUMN->SET_SHORT_TEXT( ' ' ).
LV_COLUMN->SET_KEY( IF_SALV_C_BOOL_SAP=>TRUE ).
CATCH CX_SALV_NOT_FOUND.
"#EC NO_HANDLER

ENDTRY.
TRY.
LV_COLUMN ?= LV_COLUMNS->GET_COLUMN( 'AUFNR' ).
GT_TABLE->GET_COLUMNS( )->SET_COLUMN_POSITION( COLUMNNAME = 'AUFNR'
POSITION = 2 ).
LV_COLUMN->SET_LONG_TEXT( 'Production Order No.' ).
LV_COLUMN->SET_MEDIUM_TEXT( ' ' ).
LV_COLUMN->SET_SHORT_TEXT( ' ' ).
LV_COLUMN->SET_KEY( IF_SALV_C_BOOL_SAP=>TRUE ).
CATCH CX_SALV_NOT_FOUND.
"#EC NO_HANDLER
ENDTRY.
TRY.
LV_COLUMN ?= LV_COLUMNS->GET_COLUMN( 'KUNNR' ).
GT_TABLE->GET_COLUMNS( )->SET_COLUMN_POSITION( COLUMNNAME = 'KUNNR'
POSITION = 3 ).
LV_COLUMN->SET_LONG_TEXT( 'Customer No.' ).
LV_COLUMN->SET_MEDIUM_TEXT( ' ' ).
LV_COLUMN->SET_SHORT_TEXT( ' ' ).
CATCH CX_SALV_NOT_FOUND.
"#EC NO_HANDLER
ENDTRY.
TRY.
LV_COLUMN ?= LV_COLUMNS->GET_COLUMN( 'NAME1' ).
GT_TABLE->GET_COLUMNS( )->SET_COLUMN_POSITION( COLUMNNAME = 'NAME1'
POSITION = 4 ).
LV_COLUMN->SET_LONG_TEXT( 'Customer Name' ).
LV_COLUMN->SET_MEDIUM_TEXT( ' ' ).
LV_COLUMN->SET_SHORT_TEXT( ' ' ).
CATCH CX_SALV_NOT_FOUND.
"#EC NO_HANDLER
ENDTRY.
TRY.
LV_COLUMN ?= LV_COLUMNS->GET_COLUMN( 'MATNR' ).
GT_TABLE->GET_COLUMNS( )->SET_COLUMN_POSITION( COLUMNNAME = 'MATNR'
POSITION = 5 ).
LV_COLUMN->SET_LONG_TEXT( 'Components' ).
LV_COLUMN->SET_MEDIUM_TEXT( ' ' ).
LV_COLUMN->SET_SHORT_TEXT( ' ' ).
CATCH CX_SALV_NOT_FOUND.
"#EC NO_HANDLER
ENDTRY.

TRY.
LV_COLUMN ?= LV_COLUMNS->GET_COLUMN( 'MAKTX' ).
GT_TABLE->GET_COLUMNS( )->SET_COLUMN_POSITION( COLUMNNAME = 'MAKTX'
POSITION = 6 ).
LV_COLUMN->SET_LONG_TEXT( 'Components Description' ).
LV_COLUMN->SET_MEDIUM_TEXT( ' ' ).
LV_COLUMN->SET_SHORT_TEXT( ' ' ).
CATCH CX_SALV_NOT_FOUND.
ENDTRY.

"#EC NO_HANDLER

TRY.
LV_COLUMN ?= LV_COLUMNS->GET_COLUMN( 'ZPLPR' ).
GT_TABLE->GET_COLUMNS( )->SET_COLUMN_POSITION( COLUMNNAME = 'ZPLPR'
POSITION = 7 ).
LV_COLUMN->SET_LONG_TEXT( 'Estimate price' ).
LV_COLUMN->SET_MEDIUM_TEXT( ' ' ).
LV_COLUMN->SET_SHORT_TEXT( ' ' ).
CATCH CX_SALV_NOT_FOUND.
ENDTRY.

"#EC NO_HANDLER

TRY.
LV_COLUMN ?= LV_COLUMNS->GET_COLUMN( 'MENGE' ).
GT_TABLE->GET_COLUMNS( )->SET_COLUMN_POSITION( COLUMNNAME = 'MENGE'
POSITION = 8 ).
LV_COLUMN->SET_LONG_TEXT( 'Actual qty' ).
LV_COLUMN->SET_MEDIUM_TEXT( ' ' ).
LV_COLUMN->SET_SHORT_TEXT( ' ' ).
CATCH CX_SALV_NOT_FOUND.
ENDTRY.

"#EC NO_HANDLER

TRY.
LV_COLUMN ?= LV_COLUMNS->GET_COLUMN( 'DMBTR' ).
GT_TABLE->GET_COLUMNS( )->SET_COLUMN_POSITION( COLUMNNAME = 'DMBTR'
POSITION = 9 ).
LV_COLUMN->SET_LONG_TEXT( 'Actual price' ).
LV_COLUMN->SET_MEDIUM_TEXT( ' ' ).
LV_COLUMN->SET_SHORT_TEXT( ' ' ).
CATCH CX_SALV_NOT_FOUND.
ENDTRY.

"#EC NO_HANDLER

TRY.
LV_COLUMN ?= LV_COLUMNS->GET_COLUMN( 'VARIA' ).
GT_TABLE->GET_COLUMNS( )->SET_COLUMN_POSITION( COLUMNNAME = 'VARIA'
POSITION = 10 ).
LV_COLUMN->SET_LONG_TEXT( 'Variance' ).
LV_COLUMN->SET_MEDIUM_TEXT( ' ' ).
LV_COLUMN->SET_SHORT_TEXT( ' ' ).
CATCH CX_SALV_NOT_FOUND.
ENDTRY.

"#EC NO_HANDLER

TRY.
LV_COLUMN ?= LV_COLUMNS->GET_COLUMN( 'PERCE' ).
GT_TABLE->GET_COLUMNS( )->SET_COLUMN_POSITION( COLUMNNAME = 'PERCE'
POSITION = 11 ).
LV_COLUMN->SET_LONG_TEXT( 'Variance Percentage' ).
LV_COLUMN->SET_MEDIUM_TEXT( ' ' ).
LV_COLUMN->SET_SHORT_TEXT( ' ' ).
CATCH CX_SALV_NOT_FOUND.
ENDTRY.
*hotspot on Material Document & Purchase Order Number
CALL METHOD GT_TABLE->GET_COLUMNS "get all columns
RECEIVING

"#EC NO_HANDLER

VALUE = LV_COLUMNS.
IF LV_COLUMNS IS NOT INITIAL.
TRY.
LR_COL ?= LV_COLUMNS->GET_COLUMN( 'VBELN' ). "get Sales Document colum
ns to insert hotspot
CATCH CX_SALV_NOT_FOUND.
ENDTRY.
TRY.
CALL METHOD LR_COL->SET_CELL_TYPE "set cell type hotspot
EXPORTING
VALUE = IF_SALV_C_CELL_TYPE=>HOTSPOT.
CATCH CX_SALV_DATA_ERROR .
ENDTRY.
ENDIF.

TRY.
LR_COL ?= LV_COLUMNS->GET_COLUMN( 'AUFNR' ). "get Purchase Order columns
to insert hotspot
CATCH CX_SALV_NOT_FOUND.
ENDTRY.
TRY.
CALL METHOD LR_COL->SET_CELL_TYPE "set cell type hotspot
EXPORTING
VALUE = IF_SALV_C_CELL_TYPE=>HOTSPOT.
CATCH CX_SALV_DATA_ERROR .
ENDTRY.
GO_CEVENTS = GT_TABLE->GET_EVENT( ).
CREATE OBJECT GO_LEVENTS.
SET HANDLER GO_LEVENTS->ON_LINE_CLICK FOR GO_CEVENTS.
*Handle hotspot on Purchase Order Number click
GO_CEVENTS = GT_TABLE->GET_EVENT( ).
CREATE OBJECT GO_LEVENTS.
SET HANDLER GO_LEVENTS->ON_LINE_CLICK FOR GO_CEVENTS.
*Handle hotspot on Purchase Order Number click
*TOP-OF-Page Details Below
CREATE OBJECT LR_GRID_LAYOUT.
L_TEXT = 'Plan Vs Actual Report' .
LR_GRID_LAYOUT->CREATE_HEADER_INFORMATION( "create header for grid
ROW
= 1
COLUMN = 12
TEXT
= L_TEXT
TOOLTIP = L_TEXT ).
*2nd row 1st column
LR_GRID_LAYOUT->ADD_ROW( ). "add row
LR_LABEL = LR_GRID_LAYOUT->CREATE_LABEL(
ROW
= 2
COLUMN = 1
TEXT
= 'Plant'
TOOLTIP = 'Plant' ).

*2nd row 2nd column


L_TEXT = GV_WERKS.
LR_TEXT = LR_GRID_LAYOUT->CREATE_TEXT(
ROW
= 2
COLUMN = 2
TEXT
= L_TEXT
TOOLTIP = L_TEXT ).
LR_LABEL->SET_LABEL_FOR( LR_TEXT ).
*3rd row 1st column
LR_LABEL = LR_GRID_LAYOUT->CREATE_LABEL(
ROW
= 3
COLUMN = 1
TEXT
= 'Material No.'
TOOLTIP = 'Material No.' ).
*3rd row 2nd column
L_TEXT = GV_MATNR.
LR_TEXT = LR_GRID_LAYOUT->CREATE_TEXT(
ROW
= 3
COLUMN = 2
TEXT
= L_TEXT
TOOLTIP = L_TEXT ).
LR_LABEL->SET_LABEL_FOR( LR_TEXT ).
*4th row 1st column
LR_LABEL = LR_GRID_LAYOUT->CREATE_LABEL(
ROW
= 4
COLUMN = 1
TEXT
= 'Order No.'
TOOLTIP = 'Order No.' ).
*4th row 2nd column
L_TEXT = GV_AUFNR.
LR_TEXT = LR_GRID_LAYOUT->CREATE_TEXT(
ROW
= 4
COLUMN = 2
TEXT
= L_TEXT
TOOLTIP = L_TEXT ).
LR_LABEL->SET_LABEL_FOR( LR_TEXT ).

LR_HEADER = LR_GRID_LAYOUT.
CALL METHOD GT_TABLE->SET_TOP_OF_LIST "set top of list
EXPORTING
VALUE = LR_HEADER.

DATA: LO_AGGRS TYPE REF TO CL_SALV_AGGREGATIONS.


LO_AGGRS = GT_TABLE->GET_AGGREGATIONS( ). "get aggregations
Add TOTAL for COLUMN NETWR

TRY.
CALL METHOD LO_AGGRS->ADD_AGGREGATION "add aggregation
EXPORTING
COLUMNNAME = 'ZPLPR' "aggregation column name
AGGREGATION = IF_SALV_C_AGGREGATION=>TOTAL. "aggregation type
CATCH CX_SALV_DATA_ERROR .
CATCH CX_SALV_NOT_FOUND .
CATCH CX_SALV_EXISTING .
ENDTRY.

"#EC NO_HANDLER
"#EC NO_HANDLER
"#EC NO_HANDLER

TRY.
CALL METHOD LO_AGGRS->ADD_AGGREGATION "add aggregation
EXPORTING
COLUMNNAME = 'DMBTR' "aggregation column name
AGGREGATION = IF_SALV_C_AGGREGATION=>TOTAL. "aggregation type
CATCH CX_SALV_DATA_ERROR .
CATCH CX_SALV_NOT_FOUND .
CATCH CX_SALV_EXISTING .
ENDTRY.

"#EC NO_HANDLER
"#EC NO_HANDLER
"#EC NO_HANDLER

TRY.
CALL METHOD LO_AGGRS->ADD_AGGREGATION "add aggregation
EXPORTING
COLUMNNAME = 'VARIA' "aggregation column name
AGGREGATION = IF_SALV_C_AGGREGATION=>TOTAL. "aggregation type
CATCH CX_SALV_DATA_ERROR .
CATCH CX_SALV_NOT_FOUND .
CATCH CX_SALV_EXISTING .
ENDTRY.

"#EC NO_HANDLER
"#EC NO_HANDLER
"#EC NO_HANDLER

Bring the total line to top


DATA : LR_SORT TYPE REF TO CL_SALV_SORTS. "ALV sorts
CALL METHOD GT_TABLE->GET_SORTS "get sorts
RECEIVING
VALUE = LR_SORT.
DATA : LR_SORT_COLUMN TYPE REF TO CL_SALV_SORT. "column sort
CALL METHOD LR_SORT->ADD_SORT "add column sort
EXPORTING
COLUMNNAME = 'VBELN' "sort column always keyfield
SEQUENCE = IF_SALV_C_SORT=>SORT_DOWN
RECEIVING
VALUE
= LR_SORT_COLUMN.
CALL METHOD LR_SORT->ADD_SORT "add column sort
EXPORTING

COLUMNNAME = 'AUFNR' "sort column always keyfield


SEQUENCE = IF_SALV_C_SORT=>SORT_DOWN
RECEIVING
VALUE
= LR_SORT_COLUMN.
CALL METHOD LR_SORT->ADD_SORT "add column sort
EXPORTING
COLUMNNAME = 'KUNNR' "sort column always keyfield
SEQUENCE = IF_SALV_C_SORT=>SORT_DOWN
RECEIVING
VALUE
= LR_SORT_COLUMN.
CALL METHOD LR_SORT->ADD_SORT "add column sort
EXPORTING
COLUMNNAME = 'NAME1' "sort column always keyfield
SEQUENCE = IF_SALV_C_SORT=>SORT_DOWN
RECEIVING
VALUE
= LR_SORT_COLUMN.
TRY.
CALL METHOD LR_SORT_COLUMN->SET_SUBTOTAL "add subtotal
EXPORTING
VALUE = IF_SALV_C_BOOL_SAP=>TRUE.
CATCH CX_SALV_DATA_ERROR .
"#EC NO_HANDLER
CATCH CX_SALV_NOT_FOUND .
"#EC NO_HANDLER
CATCH CX_SALV_EXISTING .
"#EC NO_HANDLER
ENDTRY.
*display the table
GT_TABLE->DISPLAY( ).

vbeln TYPE vbak-vbeln, " Sales Order Number


zvbeln TYPE vbak-zvbeln," Sales Order Number
kunnr TYPE vbak-kunnr, " Customer Number
matnr TYPE vbap-matnr, " Material Number
name1 TYPE kna1-name1, " Customer Name
bstkd TYPE vbkd-bstkd, " Purchase Order No.
kdgrp TYPE vbkd-kdgrp, " Classification
cmgst TYPE char05, " Credit Limit (MT)
zterm TYPE vbkd-zterm, " Payment Type
ENDMETHOD.
"generate_output

You might also like