Top of Page Sequential/Hierarchical ALV using Class
Hi Experts.
I'd like to ask some codes on how to have the top-of-page function of the Sequential ALV using the CLASS cl_salv_hierseq_table.
Points would be rewarded.
Thanks!
Message was edited by:
Jay Cruz
Message was edited by:
Jay Cruz
Hi Jay,
Plz check out this code.
REPORT BALVHT01 NO STANDARD PAGE HEADING.
ALV
TYPE-POOLS: SLIS.
DB-Table
TABLES: SCARR, SPFLI.
Includes
INCLUDE .
CONSTANTS:
GC_FORMNAME_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE 'TOP_OF_PAGE'.
DATA: GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
GS_LAYOUT TYPE SLIS_LAYOUT_ALV,
GS_KEYINFO TYPE SLIS_KEYINFO_ALV,
GT_SORT TYPE SLIS_T_SORTINFO_ALV,
GT_SP_GROUP TYPE SLIS_T_SP_GROUP_ALV,
GT_EVENTS TYPE SLIS_T_EVENT.
Data to be displayed
DATA: BEGIN OF GT_SPFLI OCCURS 0.
INCLUDE STRUCTURE SPFLI.
DATA: ADD1,
BOX,
WERT TYPE P,
LIGHTS.
DATA: END OF GT_SPFLI.
DATA: BEGIN OF GT_SCARR OCCURS 0.
INCLUDE STRUCTURE SCARR.
DATA: BOX,
LIGHTS,
EXPAND.
DATA: END OF GT_SCARR.
DATA: G_REPID LIKE SY-REPID.
DATA: GT_LIST_TOP_OF_PAGE TYPE SLIS_T_LISTHEADER.
Report Selections
SELECT-OPTIONS CARRID FOR SCARR-CARRID.
SELECTION-SCREEN SKIP 1.
Parameters
PARAMETERS: P_MAXROW TYPE I DEFAULT 50.
SELECTION-SCREEN SKIP 1.
Variante
SELECTION-SCREEN BEGIN OF BLOCK 0 WITH FRAME TITLE TEXT-064.
PARAMETERS: P_VARI LIKE DISVARIANT-VARIANT.
SELECTION-SCREEN END OF BLOCK 0.
Layout
SELECTION-SCREEN BEGIN OF BLOCK A WITH FRAME TITLE TEXT-060.
PARAMETERS:
P_ZEBRA AS CHECKBOX DEFAULT ' ',
P_NOCOLH AS CHECKBOX DEFAULT ' ',
P_COLOPT AS CHECKBOX DEFAULT ' ',
P_KEYHOT AS CHECKBOX DEFAULT ' ',
P_NOINPT AS CHECKBOX DEFAULT ' '.
SELECTION-SCREEN END OF BLOCK A.
SELECTION-SCREEN BEGIN OF BLOCK B WITH FRAME TITLE TEXT-061.
PARAMETERS:
P_LIGHTS AS CHECKBOX DEFAULT ' ',
P_LIGHTC AS CHECKBOX DEFAULT ' '.
SELECTION-SCREEN END OF BLOCK B.
SELECTION-SCREEN BEGIN OF BLOCK C WITH FRAME TITLE TEXT-062.
PARAMETERS:
P_TOTONL AS CHECKBOX DEFAULT ' ',
P_TOTEXT(60),
P_STTEXT(60).
SELECTION-SCREEN END OF BLOCK C.
SELECTION-SCREEN BEGIN OF BLOCK D WITH FRAME TITLE TEXT-063.
PARAMETERS:
P_GPCE AS CHECKBOX DEFAULT ' ',
P_CHKBOX AS CHECKBOX DEFAULT ' ',
P_EXPAND AS CHECKBOX DEFAULT ' ',
P_DETPOP AS CHECKBOX DEFAULT ' '.
SELECTION-SCREEN END OF BLOCK D.
DATA: G_BOXNAM TYPE SLIS_FIELDNAME VALUE 'BOX',
G_EXPANDNAME TYPE SLIS_FIELDNAME VALUE 'EXPAND',
P_F2CODE LIKE SY-UCOMM VALUE '&ETA',
P_LIGNAM TYPE SLIS_FIELDNAME VALUE 'LIGHTS',
G_SAVE(1) TYPE C,
G_TABNAME_HEADER TYPE SLIS_TABNAME,
G_TABNAME_ITEM TYPE SLIS_TABNAME,
g_default(1) type c,
G_EXIT(1) TYPE C,
GX_VARIANT LIKE DISVARIANT,
G_VARIANT LIKE DISVARIANT.
INITIALIZATION.
G_REPID = SY-REPID.
G_TABNAME_HEADER = 'GT_SCARR'.
G_TABNAME_ITEM = 'GT_SPFLI'.
define keyinfo
CLEAR GS_KEYINFO.
GS_KEYINFO-HEADER01 = 'CARRID'.
GS_KEYINFO-ITEM01 = 'CARRID'.
PERFORM E01_FIELDCAT_INIT USING GT_FIELDCAT[].
PERFORM E03_EVENTTAB_BUILD USING GT_EVENTS[].
PERFORM E04_COMMENT_BUILD USING GT_LIST_TOP_OF_PAGE[].
PERFORM E06_T_SORT_BUILD USING GT_SORT[].
PERFORM E07_SP_GROUP_BUILD USING GT_SP_GROUP[].
Schalter Varianten benutzerspezifisch/allgemein speicherbar setzen
Set Options: save variants userspecific or general
G_SAVE = 'A'.
PERFORM VARIANT_INIT.
Get default variant
GX_VARIANT = G_VARIANT.
CALL FUNCTION 'REUSE_ALV_VARIANT_DEFAULT_GET'
EXPORTING
I_SAVE = G_SAVE
CHANGING
CS_VARIANT = GX_VARIANT
EXCEPTIONS
NOT_FOUND = 2.
IF SY-SUBRC = 0.
P_VARI = GX_VARIANT-VARIANT.
ENDIF.
Process on value request
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_VARI.
PERFORM F4_FOR_VARIANT.
PAI
AT SELECTION-SCREEN.
PERFORM PAI_OF_SELECTION_SCREEN.
START-OF-SELECTION.
PERFORM SELECTION.
END-OF-SELECTION.
PERFORM E05_LAYOUT_BUILD USING GS_LAYOUT. "wg. Parameters
Call ABAP/4 List Viewer
CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = G_REPID
I_CALLBACK_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND = ' '
IS_LAYOUT = GS_LAYOUT
IT_FIELDCAT = GT_FIELDCAT[]
IT_EXCLUDING =
IT_SPECIAL_GROUPS = GT_SP_GROUP[]
IT_SORT = GT_SORT[]
IT_FILTER =
IS_SEL_HIDE =
I_SCREEN_START_COLUMN = 0
I_SCREEN_START_LINE = 0
I_SCREEN_END_COLUMN = 0
I_SCREEN_END_LINE = 0
i_default = g_default
I_SAVE = G_SAVE
IS_VARIANT = G_VARIANT
IT_EVENTS = GT_EVENTS[]
IT_EVENT_EXIT =
I_TABNAME_HEADER = G_TABNAME_HEADER
I_TABNAME_ITEM = G_TABNAME_ITEM
IS_KEYINFO = GS_KEYINFO
IS_PRINT =
IMPORTING
E_EXIT_CAUSED_BY_CALLER =
TABLES
T_OUTTAB_HEADER = GT_SCARR
T_OUTTAB_ITEM = GT_SPFLI.
FORM E01_FIELDCAT_INIT *
--> E01_LT_FIELDCAT *
FORM E01_FIELDCAT_INIT USING E01_LT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV.
DATA: LS_FIELDCAT TYPE SLIS_FIELDCAT_ALV.
CLEAR LS_FIELDCAT.
LS_FIELDCAT-FIELDNAME = 'ADD1'.
LS_FIELDCAT-TABNAME = G_TABNAME_ITEM.
LS_FIELDCAT-REPTEXT_DDIC = '?'.
LS_FIELDCAT-OUTPUTLEN = 1.
LS_FIELDCAT-NO_OUT = 'X'.
LS_FIELDCAT-INPUT = 'X'.
LS_FIELDCAT-SP_GROUP = 'A'.
APPEND LS_FIELDCAT TO E01_LT_FIELDCAT.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
I_PROGRAM_NAME =
I_INTERNAL_TABNAME = G_TABNAME_HEADER
I_STRUCTURE_NAME = 'SCARR'
I_CLIENT_NEVER_DISPLAY = 'X'
CHANGING
CT_FIELDCAT = E01_LT_FIELDCAT[].
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
I_PROGRAM_NAME =
I_INTERNAL_TABNAME = G_TABNAME_ITEM
I_STRUCTURE_NAME = 'SPFLI'
I_CLIENT_NEVER_DISPLAY = 'X'
CHANGING
CT_FIELDCAT = E01_LT_FIELDCAT[].
geht am Anfang nicht !!!!
CLEAR LS_FIELDCAT.
LS_FIELDCAT-FIELDNAME = 'WERT'.
LS_FIELDCAT-TABNAME = G_TABNAME_ITEM.
LS_FIELDCAT-REPTEXT_DDIC = 'Wert'(070).
LS_FIELDCAT-OUTPUTLEN = 4.
LS_FIELDCAT-INTTYPE ='P'.
APPEND LS_FIELDCAT TO E01_LT_FIELDCAT.
ENDFORM.
FORM E02_DATA_ADD *
--> E02_LT_SFLIGHT *
FORM E02_DATA_ADD TABLES E02_LT_SPFLI STRUCTURE GT_SPFLI.
LOOP AT E02_LT_SPFLI.
IF SY-TABIX > 10.
E02_LT_SPFLI-ADD1 = 'A'.
E02_LT_SPFLI-BOX = 'X'.
E02_LT_SPFLI-LIGHTS = '3'.
ELSE.
IF SY-TABIX = 1.
E02_LT_SPFLI-LIGHTS = '2'.
ELSE.
E02_LT_SPFLI-LIGHTS = '1'.
ENDIF.
ENDIF.
E02_LT_SPFLI-WERT = SY-TABIX MOD 5.
MODIFY E02_LT_SPFLI.
ENDLOOP.
ENDFORM.
FORM E03_EVENTTAB_BUILD *
--> E03_LT_EVENTS *
FORM E03_EVENTTAB_BUILD USING E03_LT_EVENTS TYPE SLIS_T_EVENT.
DATA: LS_EVENT TYPE SLIS_ALV_EVENT.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
I_LIST_TYPE = 1
IMPORTING
ET_EVENTS = E03_LT_EVENTS.
READ TABLE E03_LT_EVENTS WITH KEY NAME = SLIS_EV_TOP_OF_PAGE
INTO LS_EVENT.
IF SY-SUBRC = 0.
MOVE GC_FORMNAME_TOP_OF_PAGE TO LS_EVENT-FORM.
APPEND LS_EVENT TO E03_LT_EVENTS.
ENDIF.
ENDFORM.
FORM E04_COMMENT_BUILD *
--> E04_LT_TOP_OF_PAGE *
FORM E04_COMMENT_BUILD USING E04_LT_TOP_OF_PAGE TYPE SLIS_T_LISTHEADER.
DATA: LS_LINE TYPE SLIS_LISTHEADER.
Listenüberschrift: Typ H
CLEAR LS_LINE.
LS_LINE-TYP = 'H'.
LS_LINE-KEY: not used for this type
LS_LINE-INFO = TEXT-001.
APPEND LS_LINE TO E04_LT_TOP_OF_PAGE.
Kopfinfo: Typ S
CLEAR LS_LINE.
LS_LINE-TYP = 'S'.
LS_LINE-KEY = TEXT-050.
LS_LINE-INFO = TEXT-010.
APPEND LS_LINE TO E04_LT_TOP_OF_PAGE.
LS_LINE-KEY = TEXT-051.
APPEND LS_LINE TO E04_LT_TOP_OF_PAGE.
Aktionsinfo: Typ A
CLEAR LS_LINE.
LS_LINE-TYP = 'A'.
LS_LINE-KEY: not used for this type
LS_LINE-INFO = TEXT-002.
APPEND LS_LINE TO E04_LT_TOP_OF_PAGE.
ENDFORM.
FORM E05_LAYOUT_BUILD *
<-> E05_LS_LAYOUT *
FORM E05_LAYOUT_BUILD USING E05_LS_LAYOUT TYPE SLIS_LAYOUT_ALV.
E05_LS_LAYOUT-F2CODE = P_F2CODE.
E05_LS_LAYOUT-ZEBRA = P_ZEBRA.
E05_LS_LAYOUT-COLWIDTH_OPTIMIZE = P_COLOPT.
IF P_CHKBOX = 'X'.
E05_LS_LAYOUT-BOX_FIELDNAME = G_BOXNAM.
E05_LS_LAYOUT-BOX_TABNAME = G_TABNAME_ITEM.
ELSE.
CLEAR E05_LS_LAYOUT-BOX_FIELDNAME.
CLEAR E05_LS_LAYOUT-BOX_TABNAME.
ENDIF.
IF P_EXPAND = 'X'.
E05_LS_LAYOUT-EXPAND_FIELDNAME = G_EXPANDNAME.
ELSE.
CLEAR E05_LS_LAYOUT-EXPAND_FIELDNAME.
ENDIF.
E05_LS_LAYOUT-NO_INPUT = P_NOINPT.
E05_LS_LAYOUT-NO_COLHEAD = P_NOCOLH.
IF P_LIGHTS = 'X' OR P_LIGHTC = 'X'.
E05_LS_LAYOUT-LIGHTS_FIELDNAME = P_LIGNAM.
E05_LS_LAYOUT-LIGHTS_TABNAME = G_TABNAME_ITEM.
ELSE.
CLEAR E05_LS_LAYOUT-LIGHTS_FIELDNAME.
CLEAR E05_LS_LAYOUT-LIGHTS_TABNAME.
ENDIF.
IF P_GPCE = 'X'.
E05_LS_LAYOUT-GROUP_CHANGE_EDIT = 'X'.
ENDIF.
E05_LS_LAYOUT-LIGHTS_CONDENSE = P_LIGHTC.
E05_LS_LAYOUT-TOTALS_TEXT = P_TOTEXT.
E05_LS_LAYOUT-SUBTOTALS_TEXT = P_STTEXT.
E05_LS_LAYOUT-TOTALS_ONLY = P_TOTONL.
E05_LS_LAYOUT-KEY_HOTSPOT = P_KEYHOT.
E05_LS_LAYOUT-DETAIL_POPUP = P_DETPOP.
ENDFORM.
FORM E06_T_SORT_BUILD *
--> E06_LT_SORT *
FORM E06_T_SORT_BUILD USING E06_LT_SORT TYPE SLIS_T_SORTINFO_ALV.
DATA: LS_SORT TYPE SLIS_SORTINFO_ALV.
CLEAR LS_SORT.
LS_SORT-FIELDNAME = 'CARRID'.
LS_SORT-TABNAME = G_TABNAME_HEADER.
LS_SORT-SPOS = 1.
LS_SORT-UP = 'X'.
APPEND LS_SORT TO E06_LT_SORT.
CLEAR LS_SORT.
LS_SORT-FIELDNAME = 'CONNID'.
LS_SORT-TABNAME = G_TABNAME_ITEM.
LS_SORT-SPOS = 2.
LS_SORT-DOWN = 'X'.
APPEND LS_SORT TO E06_LT_SORT.
ENDFORM.
FORM E07_SP_GROUP_BUILD *
--> E07_LT_SP_GROUP *
FORM E07_SP_GROUP_BUILD USING E07_LT_SP_GROUP TYPE SLIS_T_SP_GROUP_ALV.
DATA: LS_SP_GROUP TYPE SLIS_SP_GROUP_ALV.
CLEAR LS_SP_GROUP.
LS_SP_GROUP-SP_GROUP = 'A'.
LS_SP_GROUP-TEXT = TEXT-005.
APPEND LS_SP_GROUP TO E07_LT_SP_GROUP.
ENDFORM.
FORM SELECTION *
FORM SELECTION.
SELECT * FROM SCARR INTO CORRESPONDING FIELDS OF TABLE GT_SCARR
WHERE CARRID IN CARRID.
SELECT * FROM SPFLI INTO CORRESPONDING FIELDS OF TABLE GT_SPFLI
UP TO P_MAXROW ROWS
WHERE CARRID IN CARRID.
LOOP AT GT_SCARR.
READ TABLE GT_SPFLI WITH KEY CARRID = GT_SCARR-CARRID.
IF SY-SUBRC NE 0.
DELETE GT_SCARR.
ENDIF.
ENDLOOP.
PERFORM E02_DATA_ADD TABLES GT_SPFLI.
ENDFORM.
FORM TOP_OF_PAGE *
FORM TOP_OF_PAGE.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
IT_LIST_COMMENTARY = GT_LIST_TOP_OF_PAGE.
ENDFORM.
FORM F4_FOR_VARIANT *
FORM F4_FOR_VARIANT.
CALL FUNCTION 'REUSE_ALV_VARIANT_F4'
EXPORTING
IS_VARIANT = G_VARIANT
I_SAVE = G_SAVE
I_TABNAME_HEADER = G_TABNAME_HEADER
I_TABNAME_ITEM = G_TABNAME_ITEM
it_default_fieldcat =
IMPORTING
E_EXIT = G_EXIT
ES_VARIANT = GX_VARIANT
EXCEPTIONS
NOT_FOUND = 2.
IF SY-SUBRC = 2.
MESSAGE ID SY-MSGID TYPE 'S' NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ELSE.
IF G_EXIT = SPACE.
P_VARI = GX_VARIANT-VARIANT.
ENDIF.
ENDIF.
ENDFORM.
*& Form PAI_OF_SELECTION_SCREEN
text
FORM PAI_OF_SELECTION_SCREEN.
IF NOT P_VARI IS INITIAL.
MOVE G_VARIANT TO GX_VARIANT.
MOVE P_VARI TO GX_VARIANT-VARIANT.
CALL FUNCTION 'REUSE_ALV_VARIANT_EXISTENCE'
EXPORTING
I_SAVE = G_SAVE
CHANGING
CS_VARIANT = GX_VARIANT.
G_VARIANT = GX_VARIANT.
ELSE.
PERFORM VARIANT_INIT.
ENDIF.
ENDFORM. " PAI_OF_SELECTION_SCREEN
*& Form VARIANT_INIT
text
--> p1 text
<-- p2 text
FORM VARIANT_INIT.
CLEAR G_VARIANT.
G_VARIANT-REPORT = G_REPID.
ENDFORM. " VARIANT_INIT
Regards,
Kiran
Similar Messages
-
I want define a header like Top Of Page proprty of Reuse ALV in my OO ALV. But I can give only grid title. Can I define a logo and a few subheader in my OO ALV? (Set_Table_For_First_Display)
ThanksHi Mehmet,
i did one sample code, just check it, i documented all required things.
REPORT ZTEST1234_ALV_TOP MESSAGE-ID ZZ .
DATA: G_GRID TYPE REF TO CL_GUI_ALV_GRID.
DATA: L_VALID TYPE C,
V_FLAG,
V_DATA_CHANGE,
V_ROW TYPE LVC_S_ROW,
V_COLUMN TYPE LVC_S_COL,
V_ROW_NUM TYPE LVC_S_ROID.
DATA: IT_ROW_NO TYPE LVC_T_ROID,
X_ROW_NO TYPE LVC_S_ROID.
DATA:BEGIN OF ITAB OCCURS 0,
VBELN LIKE LIKP-VBELN,
POSNR LIKE LIPS-POSNR,
CELLCOLOR TYPE LVC_T_SCOL, "required for color
DROP(10),
END OF ITAB.
"The Below Definitions Must.....
DATA:
* Reference to document
DG_DYNDOC_ID TYPE REF TO CL_DD_DOCUMENT,
* Reference to split container
DG_SPLITTER TYPE REF TO CL_GUI_SPLITTER_CONTAINER,
* Reference to grid container
DG_PARENT_GRID TYPE REF TO CL_GUI_CONTAINER,
* Reference to html container
DG_HTML_CNTRL TYPE REF TO CL_GUI_HTML_VIEWER,
* Reference to html container
DG_PARENT_HTML TYPE REF TO CL_GUI_CONTAINER.
"up to here
* CLASS lcl_event_handler DEFINITION
CLASS LCL_EVENT_HANDLER DEFINITION .
PUBLIC SECTION .
METHODS:
**Hot spot Handler
HANDLE_HOTSPOT_CLICK FOR EVENT HOTSPOT_CLICK OF CL_GUI_ALV_GRID
IMPORTING E_ROW_ID E_COLUMN_ID ES_ROW_NO,
**Double Click Handler
HANDLE_DOUBLE_CLICK FOR EVENT DOUBLE_CLICK OF CL_GUI_ALV_GRID
IMPORTING E_ROW E_COLUMN ES_ROW_NO,
TOP_OF_PAGE FOR EVENT TOP_OF_PAGE "event handler
OF CL_GUI_ALV_GRID
IMPORTING E_DYNDOC_ID.
* END_OF_LIST FOR EVENT end_of_list "event handler
* OF CL_GUI_ALV_GRID
* IMPORTING E_DYNDOC_ID.
ENDCLASS. "lcl_event_handler DEFINITION
* CLASS lcl_event_handler IMPLEMENTATION
CLASS LCL_EVENT_HANDLER IMPLEMENTATION.
*Handle Hotspot Click
METHOD HANDLE_HOTSPOT_CLICK .
CLEAR: V_ROW,V_COLUMN,V_ROW_NUM.
V_ROW = E_ROW_ID.
V_COLUMN = E_COLUMN_ID.
V_ROW_NUM = ES_ROW_NO.
* MESSAGE I000 WITH V_ROW 'clicked'.
CLEAR IT_ROW_NO[].
X_ROW_NO-ROW_ID = V_ROW.
APPEND X_ROW_NO TO IT_ROW_NO .
CALL METHOD G_GRID->SET_SELECTED_ROWS
EXPORTING
IT_ROW_NO = IT_ROW_NO.
ENDMETHOD. "lcl_event_handler
*Handle Double Click
METHOD HANDLE_DOUBLE_CLICK.
CLEAR: V_ROW,V_COLUMN,V_ROW_NUM.
V_ROW = E_ROW.
V_COLUMN = E_COLUMN.
V_ROW_NUM = ES_ROW_NO.
IF E_COLUMN = 'VBELN'.
SET PARAMETER ID 'VL' FIELD ITAB-VBELN.
CALL TRANSACTION 'VL03N' AND SKIP FIRST SCREEN.
ENDIF.
IF E_COLUMN = 'POSNR'.
SET PARAMETER ID 'VL' FIELD ITAB-VBELN.
CALL TRANSACTION 'VL03N' AND SKIP FIRST SCREEN."
ENDIF.
ENDMETHOD. "handle_double_click
* METHOD END_OF_LIST. "implementation
** Top-of-page event
* PERFORM EVENT_TOP_OF_PAGE USING DG_DYNDOC_ID.
* ENDMETHOD. "top_of_page
METHOD TOP_OF_PAGE. "implementation
* Top-of-page event
PERFORM EVENT_TOP_OF_PAGE USING DG_DYNDOC_ID.
ENDMETHOD. "top_of_page
ENDCLASS. "LCL_EVENT_HANDLER IMPLEMENTATION
*& Global Definitions
DATA: G_CUSTOM_CONTAINER TYPE REF TO CL_GUI_CUSTOM_CONTAINER,"Container1
G_HANDLER TYPE REF TO LCL_EVENT_HANDLER. "handler
DATA: OK_CODE LIKE SY-UCOMM,
SAVE_OK LIKE SY-UCOMM,
G_CONTAINER1 TYPE SCRFNAME VALUE 'TEST',
GS_LAYOUT TYPE LVC_S_LAYO.
data: v_lines type i.
data: v_line(3) type c.
*- Fieldcatalog for First and second Report
DATA: IT_FIELDCAT TYPE LVC_T_FCAT,
X_FIELDCAT TYPE LVC_S_FCAT,
LS_VARI TYPE DISVARIANT.
* START-OF_SELECTION
START-OF-SELECTION.
SELECT VBELN
POSNR
FROM LIPS
UP TO 20 ROWS
INTO CORRESPONDING FIELDS OF TABLE ITAB.
describe table itab lines v_lines.
END-OF-SELECTION.
IF NOT ITAB[] IS INITIAL.
CALL SCREEN 100.
ELSE.
MESSAGE I002 WITH 'NO DATA FOR THE SELECTION'(004).
ENDIF.
*& Form CREATE_AND_INIT_ALV
* text
FORM CREATE_AND_INIT_ALV .
DATA: LT_EXCLUDE TYPE UI_FUNCTIONS.
"attention.....from here
"split your container here...into two parts
"create the container
CREATE OBJECT G_CUSTOM_CONTAINER
EXPORTING CONTAINER_NAME = G_CONTAINER1.
"this is for top of page
* Create TOP-Document
CREATE OBJECT DG_DYNDOC_ID
EXPORTING STYLE = 'ALV_GRID'.
* Create Splitter for custom_container
CREATE OBJECT DG_SPLITTER
EXPORTING PARENT = G_CUSTOM_CONTAINER
ROWS = 2
COLUMNS = 1.
* Split the custom_container to two containers and move the reference
* to receiving containers g_parent_html and g_parent_grid
"i am allocating the space for grid and top of page
CALL METHOD DG_SPLITTER->GET_CONTAINER
EXPORTING
ROW = 1
COLUMN = 1
RECEIVING
CONTAINER = DG_PARENT_HTML.
CALL METHOD DG_SPLITTER->GET_CONTAINER
EXPORTING
ROW = 2
COLUMN = 1
RECEIVING
CONTAINER = DG_PARENT_GRID.
* CALL METHOD DG_SPLITTER->GET_CONTAINER
* EXPORTING
* ROW = 2
* COLUMN = 1
* RECEIVING
* CONTAINER = DG_PARENT_HTML.
* CALL METHOD DG_SPLITTER->GET_CONTAINER
* EXPORTING
* ROW = 1
* COLUMN = 1
* RECEIVING
* CONTAINER = DG_PARENT_GRID.
"you can set the height of it
* Set height for g_parent_html
CALL METHOD DG_SPLITTER->SET_ROW_HEIGHT
EXPORTING
ID = 1
HEIGHT = 5.
"from here as usual..you need to specify parent as splitter part
"which we alloted for grid
CREATE OBJECT G_GRID
EXPORTING I_PARENT = DG_PARENT_GRID.
* Set a titlebar for the grid control
CLEAR GS_LAYOUT.
GS_LAYOUT-GRID_TITLE = TEXT-003.
GS_LAYOUT-ZEBRA = SPACE.
GS_LAYOUT-CWIDTH_OPT = 'X'.
GS_LAYOUT-NO_ROWMARK = 'X'.
GS_LAYOUT-CTAB_FNAME = 'CELLCOLOR'.
CALL METHOD G_GRID->REGISTER_EDIT_EVENT
EXPORTING
I_EVENT_ID = CL_GUI_ALV_GRID=>MC_EVT_ENTER.
CREATE OBJECT G_HANDLER.
SET HANDLER G_HANDLER->HANDLE_DOUBLE_CLICK FOR G_GRID.
SET HANDLER G_HANDLER->HANDLE_HOTSPOT_CLICK FOR G_GRID.
* SET HANDLER G_HANDLER->END_OF_LIST FOR G_GRID.
SET HANDLER G_HANDLER->TOP_OF_PAGE FOR G_GRID.
DATA: LS_CELLCOLOR TYPE LVC_S_SCOL. "required for color
DATA: L_INDEX TYPE SY-TABIX.
"Here i am changing the color of line 1,5,10...
"so you can change the color of font conditionally
LOOP AT ITAB.
L_INDEX = SY-TABIX.
IF L_INDEX = 1 OR L_INDEX = 5 OR L_INDEX = 10.
LS_CELLCOLOR-FNAME = 'VBELN'.
LS_CELLCOLOR-COLOR-COL = '6'.
LS_CELLCOLOR-COLOR-INT = '0'.
LS_CELLCOLOR-COLOR-INV = '1'.
APPEND LS_CELLCOLOR TO ITAB-CELLCOLOR.
MODIFY ITAB INDEX L_INDEX TRANSPORTING CELLCOLOR.
LS_CELLCOLOR-FNAME = 'POSNR'.
LS_CELLCOLOR-COLOR-COL = '6'.
LS_CELLCOLOR-COLOR-INT = '0'.
LS_CELLCOLOR-COLOR-INV = '1'.
APPEND LS_CELLCOLOR TO ITAB-CELLCOLOR.
MODIFY ITAB INDEX L_INDEX TRANSPORTING CELLCOLOR.
ENDIF.
ENDLOOP.
* setting focus for created grid control
CALL METHOD CL_GUI_CONTROL=>SET_FOCUS
EXPORTING
CONTROL = G_GRID.
* Build fieldcat and set editable for date and reason code
* edit enabled. Assign a handle for the dropdown listbox.
PERFORM BUILD_FIELDCAT.
PERFORM SET_DRDN_TABLE.
* Optionally restrict generic functions to 'change only'.
* (The user shall not be able to add new lines).
PERFORM EXCLUDE_TB_FUNCTIONS CHANGING LT_EXCLUDE.
**Vaiant to save the layout
LS_VARI-REPORT = SY-REPID.
LS_VARI-HANDLE = SPACE.
LS_VARI-LOG_GROUP = SPACE.
LS_VARI-USERNAME = SPACE.
LS_VARI-VARIANT = SPACE.
LS_VARI-TEXT = SPACE.
LS_VARI-DEPENDVARS = SPACE.
**Calling the Method for ALV output
CALL METHOD G_GRID->SET_TABLE_FOR_FIRST_DISPLAY
EXPORTING
IT_TOOLBAR_EXCLUDING = LT_EXCLUDE
IS_VARIANT = LS_VARI
IS_LAYOUT = GS_LAYOUT
I_SAVE = 'A'
CHANGING
IT_FIELDCATALOG = IT_FIELDCAT
IT_OUTTAB = ITAB[].
"do these..{
* Initializing document
CALL METHOD DG_DYNDOC_ID->INITIALIZE_DOCUMENT.
* Processing events
CALL METHOD G_GRID->LIST_PROCESSING_EVENTS
EXPORTING
I_EVENT_NAME = 'TOP_OF_PAGE'
I_DYNDOC_ID = DG_DYNDOC_ID.
"end }
* Set editable cells to ready for input initially
CALL METHOD G_GRID->SET_READY_FOR_INPUT
EXPORTING
I_READY_FOR_INPUT = 1.
ENDFORM. "CREATE_AND_INIT_ALV
*& Form EXCLUDE_TB_FUNCTIONS
* text
* -->PT_EXCLUDE text
FORM EXCLUDE_TB_FUNCTIONS CHANGING PT_EXCLUDE TYPE UI_FUNCTIONS.
* Only allow to change data not to create new entries (exclude
* generic functions).
DATA LS_EXCLUDE TYPE UI_FUNC.
LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_COPY_ROW.
APPEND LS_EXCLUDE TO PT_EXCLUDE.
LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_DELETE_ROW.
APPEND LS_EXCLUDE TO PT_EXCLUDE.
LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_APPEND_ROW.
APPEND LS_EXCLUDE TO PT_EXCLUDE.
LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_INSERT_ROW.
APPEND LS_EXCLUDE TO PT_EXCLUDE.
LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_MOVE_ROW.
APPEND LS_EXCLUDE TO PT_EXCLUDE.
LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_COPY.
APPEND LS_EXCLUDE TO PT_EXCLUDE.
LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_CUT.
APPEND LS_EXCLUDE TO PT_EXCLUDE.
LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_PASTE.
APPEND LS_EXCLUDE TO PT_EXCLUDE.
LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_PASTE_NEW_ROW.
APPEND LS_EXCLUDE TO PT_EXCLUDE.
LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_UNDO.
APPEND LS_EXCLUDE TO PT_EXCLUDE.
ENDFORM. " EXCLUDE_TB_FUNCTIONS
*& Form build_fieldcat
* Fieldcatalog
FORM BUILD_FIELDCAT .
DATA: L_POS TYPE I.
L_POS = L_POS + 1.
X_FIELDCAT-SCRTEXT_M = 'Delivery'(024).
X_FIELDCAT-FIELDNAME = 'VBELN'.
X_FIELDCAT-TABNAME = 'IT_FINAL'.
X_FIELDCAT-COL_POS = L_POS.
X_FIELDCAT-NO_ZERO = 'X'.
X_FIELDCAT-OUTPUTLEN = '10'.
X_FIELDCAT-HOTSPOT = 'X'.
APPEND X_FIELDCAT TO IT_FIELDCAT.
CLEAR X_FIELDCAT.
L_POS = L_POS + 1.
X_FIELDCAT-SCRTEXT_M = 'Item'(025).
X_FIELDCAT-FIELDNAME = 'POSNR'.
X_FIELDCAT-TABNAME = 'IT_FINAL'.
X_FIELDCAT-COL_POS = L_POS.
X_FIELDCAT-OUTPUTLEN = '5'.
APPEND X_FIELDCAT TO IT_FIELDCAT.
CLEAR X_FIELDCAT.
L_POS = L_POS + 1.
X_FIELDCAT-SCRTEXT_M = 'Drop'(025).
X_FIELDCAT-FIELDNAME = 'DROP'.
X_FIELDCAT-TABNAME = 'IT_FINAL'.
X_FIELDCAT-COL_POS = L_POS.
X_FIELDCAT-OUTPUTLEN = '5'.
X_FIELDCAT-EDIT = 'X'.
X_FIELDCAT-DRDN_HNDL = '1'.
X_FIELDCAT-DRDN_ALIAS = 'X'.
APPEND X_FIELDCAT TO IT_FIELDCAT.
CLEAR X_FIELDCAT.
ENDFORM. " build_fieldcat
*& Module STATUS_0100 OUTPUT
* text
MODULE STATUS_0100 OUTPUT.
SET PF-STATUS 'MAIN100'.
SET TITLEBAR 'MAIN100'.
IF G_CUSTOM_CONTAINER IS INITIAL.
**Initializing the grid and calling the fm to Display the O/P
PERFORM CREATE_AND_INIT_ALV.
ENDIF.
ENDMODULE. " STATUS_0100 OUTPUT
*& Module USER_COMMAND_0100 INPUT
* text
MODULE USER_COMMAND_0100 INPUT.
CASE SY-UCOMM.
WHEN 'BACK'.
LEAVE TO SCREEN 0.
ENDCASE.
ENDMODULE. " USER_COMMAND_0100 INPUT
*& Form SET_DRDN_TABLE
* text
FORM SET_DRDN_TABLE.
DATA:LT_DRAL TYPE LVC_T_DRAL,
LS_DRAL TYPE LVC_S_DRAL.
LOOP AT ITAB .
* First listbox (handle '1').
IF SY-INDEX = 1.
LS_DRAL-HANDLE = '1'.
LS_DRAL-VALUE = ' '.
LS_DRAL-INT_VALUE = ' '.
ELSE.
LS_DRAL-HANDLE = '1'.
LS_DRAL-VALUE = ITAB-POSNR.
LS_DRAL-INT_VALUE = ITAB-POSNR.
ENDIF.
APPEND LS_DRAL TO LT_DRAL.
ENDLOOP.
**Setting the Drop down table for Reason Code
CALL METHOD G_GRID->SET_DROP_DOWN_TABLE
EXPORTING
IT_DROP_DOWN_ALIAS = LT_DRAL.
ENDFORM. " set_drdn_table
*& Form EVENT_TOP_OF_PAGE
* text
* -->DG_DYNDOC_ID text
FORM EVENT_TOP_OF_PAGE USING DG_DYNDOC_ID TYPE REF TO CL_DD_DOCUMENT.
"this is more clear.....check it
"first add text, then pass it to comentry write fm
DATA : DL_TEXT(255) TYPE C. "Text
* Populating header to top-of-page
CALL METHOD DG_DYNDOC_ID->ADD_TEXT
EXPORTING
TEXT = 'Test Report'
SAP_STYLE = CL_DD_AREA=>HEADING.
* Add new-line
CALL METHOD DG_DYNDOC_ID->NEW_LINE.
CLEAR : DL_TEXT.
* Move program ID
CONCATENATE 'Program Name :' SY-REPID
INTO DL_TEXT SEPARATED BY SPACE.
* Add Program Name to Document
PERFORM ADD_TEXT USING DL_TEXT.
* Add new-line
CALL METHOD DG_DYNDOC_ID->NEW_LINE.
CLEAR : DL_TEXT.
* Move User ID
CONCATENATE 'User ID :' SY-UNAME INTO DL_TEXT SEPARATED BY SPACE
* Add User ID to Document
PERFORM ADD_TEXT USING DL_TEXT.
* Add new-line
CALL METHOD DG_DYNDOC_ID->NEW_LINE.
CLEAR : DL_TEXT.
* Move count (no of records).
move v_lines to v_line.
CONCATENATE 'No of records :' v_line INTO DL_TEXT SEPARATED BY SPACE.
* Add Client to Document
PERFORM ADD_TEXT USING DL_TEXT.
* Add new-line
CALL METHOD DG_DYNDOC_ID->NEW_LINE.
CLEAR : DL_TEXT.
* Move date
WRITE SY-DATUM TO DL_TEXT.
CONCATENATE 'Date :' DL_TEXT INTO DL_TEXT SEPARATED BY SPACE.
* Add Date to Document
PERFORM ADD_TEXT USING DL_TEXT.
* Add new-line
CALL METHOD DG_DYNDOC_ID->NEW_LINE.
CLEAR : DL_TEXT.
* Move time
WRITE SY-UZEIT TO DL_TEXT.
CONCATENATE 'Time :' DL_TEXT INTO DL_TEXT SEPARATED BY SPACE.
* Add Time to Document
PERFORM ADD_TEXT USING DL_TEXT.
* Add new-line
CALL METHOD DG_DYNDOC_ID->NEW_LINE.
* Populating data to html control
PERFORM HTML.
ENDFORM. " EVENT_TOP_OF_PAGE
*& Form ADD_TEXT
* To add Text
FORM ADD_TEXT USING P_TEXT TYPE SDYDO_TEXT_ELEMENT.
* Adding text
CALL METHOD DG_DYNDOC_ID->ADD_TEXT
EXPORTING
TEXT = P_TEXT
SAP_EMPHASIS = CL_DD_AREA=>HEADING.
ENDFORM. " ADD_TEXT
*& Form HTML
* text
FORM HTML.
DATA : DL_LENGTH TYPE I, " Length
DL_BACKGROUND_ID TYPE SDYDO_KEY VALUE SPACE. " Background_id
* Creating html control
IF DG_HTML_CNTRL IS INITIAL.
CREATE OBJECT DG_HTML_CNTRL
EXPORTING
PARENT = DG_PARENT_HTML.
ENDIF.
* Reuse_alv_grid_commentary_set
CALL FUNCTION 'REUSE_ALV_GRID_COMMENTARY_SET'
EXPORTING
DOCUMENT = DG_DYNDOC_ID
BOTTOM = SPACE
IMPORTING
LENGTH = DL_LENGTH.
* Get TOP->HTML_TABLE ready
CALL METHOD DG_DYNDOC_ID->MERGE_DOCUMENT.
* Set wallpaper
CALL METHOD DG_DYNDOC_ID->SET_DOCUMENT_BACKGROUND
EXPORTING
PICTURE_ID = DL_BACKGROUND_ID.
* Connect TOP document to HTML-Control
DG_DYNDOC_ID->HTML_CONTROL = DG_HTML_CNTRL.
* Display TOP document
CALL METHOD DG_DYNDOC_ID->DISPLAY_DOCUMENT
EXPORTING
REUSE_CONTROL = 'X'
PARENT = DG_PARENT_HTML
EXCEPTIONS
HTML_DISPLAY_ERROR = 1.
IF SY-SUBRC NE 0.
MESSAGE I999 WITH 'Error in displaying top-of-page'(036).
ENDIF.
ENDFORM. " HTML
Regards
vijay -
Problem with top of page in interactive ALV
Hello all,
I am displaying 2 level ALV list.
If List heading for the first page is 'First level' and for Second level list is 'Second level'.
but when I come back to first level list from second level using back button first level list shows me top of page as 'Second page'.
How to resolve this?
I am using function module approach.
Thanks and Regards,
AnupHello Clemens,
I've only one top of page event. what I am doing is for the first list I am populating a internal table (say A), slis_listheader with 'First level' and passing this to top-of-page event and outputting using REUSE_ALV_COMMENTARY_WRITE.display using REUSE_ALV_GRID_DISPLAY_LVC.
for the second list (at user command 'Double click' ) I am populating another internal table (say B), and slis_listheader with 'Second level'. display using REUSE_ALV_GRID_DISPLAY_LVC.
It works fine till this point. Problem is when i click back button on second level list I get 'Second level' again in top of page for the first level.
where do i set ps_selfield-refresh = 'X'?
Regards,
Anup -
Grouping and Page Break in ALV using Function Modules
Hi all,
I am trying to develop an ALV Report that will be grouped by vendor, some vendor information to be displayed on header. And, after each vendor;s records there should be a page break.
It should be something like this:
Vendor Number: 00012345454
Vendor Name: ABC Technologies, Inc
Vendor Country: USA
Item....Price...... Descriptopm
123....100,00......this is description
124....120.00......this is another description
PAGE BREAK
Vendor Number: 000123456545
Vendor Name: My Bank
Vendor Country: USA
Item....Price..... Descriptopm
223....32,00......this is my description
224....120.00......this is another description
Can anybody give some sample code for it ? I have tried a few codes from web, but they are not working.
Thanks.Hi,
Try the following:
1. Build your sorting criteria. Pass this to ALV FM.
gs_sort-fieldname = 'VENDOR'.
gs_sort-group = '*'. "new page
gs_sort-up = 'X'.
APPEND gs_sort TO gt_sort.
2. Add event group level change. Pass this to ALV FM
gs_event-name = 'GROUPLEVEL_CHANGE'.
gs_event-form = 'GROUPLEVEL_CHANGE'.
APPEND gs_event TO gt_event.
Inside the form, retrieve your vendor details.
FORM grouplevel_change USING gs_lineinfo
gs_groups TYPE kkblo_grouplevels.
DATA: l_index TYPE i.
IF gs_groups-level = 1.
l_index = gs_groups-index_to + 1.
READ TABLE gt_display INDEX l_index INTO gw_display.
ENDIF.
3. In the event top-of-page, display vendor details using write statements. For the first record, your structure (gw_display) will be blank, read from your data table first
FORM top_of_page.
IF gw_display IS INITIAL.
READ TABLE gt_display INDEX 1 INTO l_display.
IF sy-subrc = 0.
WRITE: / l_display-vendor
ENDIF.
ELSE.
WRITE: / gw_display-vendor.
CLEAR: gw_display.
ENDIF.
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
i_callback_program = sy-repid
i_callback_pf_status_set = 'SET_STATUS'
i_callback_user_command = 'USER_COMMAND'
is_layout = gs_layout
it_fieldcat = gt_fcat[]
it_sort = gt_sort[]
i_save = 'A'
it_events = gt_event
TABLES
t_outtab = gt_display[]
EXCEPTIONS
program_error = 1
OTHERS = 2.
Hope this helps. -
Download Option Not Working in ALV Using Classes
Hi,
Can anyone let me know what im missing since i get only my header downloaded when i download my output to EXCEL.
Im using ALV using CLASSES.
Thanks,
AnitaREPORT ZTMM_STOCK MESSAGE-ID zmsg
LINE-SIZE 270
LINE-COUNT 58
NO STANDARD PAGE HEADING.
tables: YGFMLINV, "Material Ledger - Inventory Data Extract
lfa1, "Vendor Master (General Section)
setheader, "Set Header and Directory(checking profit center grp)
mseg,
t001w,
mslbh,
mslb,
t001.
Internal Tables Declaration
data: begin of i_ygfmlinv occurs 0,
BDATJ like ygfmlinv-bdatj, "Posting date YYYY
POPER like ygfmlinv-poper, "Posting period
BUKRS like ygfmlinv-bukrs, "Company Code
PRCTR like ygfmlinv-prctr, "Profit center
WERKS like ygfmlinv-werks, "Plant
BKLAS like ygfmlinv-bklas, "Valuation class
MATNR like ygfmlinv-matnr, "Material number
BWTAR like ygfmlinv-bwtar, "Valuation type
STOCK_IND like ygfmlinv-stock_ind, "Stock indicators
MEINS like ygfmlinv-meins, "Base unit of measure
MLAST like ygfmlinv-mlast, "Material Price Dtermination: Control
LBKUM like ygfmlinv-lbkum, "Total valuated stock
vprsv like ygfmlinv-vprsv, "Price control indicator
lc_mvp_prc like ygfmlinv-lc_mvp_prc, "LC:Moving Avg/Periodic Prc
LC_CURTP like ygfmlinv-LC_CURTP, "Currency Type
LC_CURRENCY like ygfmlinv-lc_currency, "Currency Key
gc_curtp like ygfmlinv-gc_curtp, "Grp.Curr Type
gc_currency like ygfmlinv-gc_currency, " Grp.Curr
LC_TOT_AMT like ygfmlinv-lc_tot_amt, "LC: Total Amount
KONTS LIKE T030-KONTS, "G/L Account No
XBILK LIKE SKA1-XBILK,
lc_cogs like ygfmlinv-lc_var_amt,
lifnr like mslbh-lifnr,
lc_trfix_amt like ygfmlinv-lc_trfix_amt,
lc_lofix_amt like ygfmlinv-lc_lofix_amt,
lc_var_amt like ygfmlinv-lc_var_amt,
lc_utp_amt like ygfmlinv-lc_utp_amt,
end of i_ygfmlinv.
data: begin of i_mslbh occurs 0,
MATNR like mslbh-matnr, "Material number
SOBKZ like mslbh-sobkz, "Special stock indicator
LIFNR like mslbh-lifnr, "Account number of vendor or creditor
WERKS like mslbh-werks, "Plant
CHARG like mslbh-charg, "Batch number
LFGJA like mslbh-lfgja, "Fiscal year of current period
LFMON like mslbh-lfmon, "Current period (posting period)
LBLAB like mslbh-lblab, "Current period (posting period)
LBINS like mslbh-lbins, "Stock in quality inspection
end of i_mslbh.
data: begin of i_MSLB occurs 0,
MATNR like mslb-matnr,
WERKS like mslb-werks,
SOBKZ like mslb-sobkz,
LIFNR like mslb-lifnr,
LFGJA like mslb-lfgja,
LFMON like mslb-lfmon,
LBLAB like mslb-lblab,
LBINS like mslb-lbins,
LBEIN like mslb-lbein,
end of i_mslb.
*data: begin of i_t030 occurs 0,
KTOPL like t030-ktopl,
BKLAS like t030-bklas,
KONTS like t030-konts,
end of i_t030.
*data: begin of i_ska1 occurs 0,
SAKNR like ska1-saknr,
XBILK like ska1-xbilk,
end of i_ska1.
DATA : BEGIN OF i_non_subc OCCURS 0,
MATNR LIKE YGFMLINV-MATNR, "Material
WERKS LIKE YGFMLINV-WERKS, "Plant,
bukrs like ygfmlinv-bukrs, "Company Code
BKLAS LIKE YGFMLINV-BKLAS, "Val Class
PRCTR LIKE YGFMLINV-PRCTR, "Profit Center
BWTAR LIKE YGFMLINV-BWTAR, "Val Type
LBKUM LIKE YGFMLINV-LBKUM, "QTY
PEINH LIKE YGFMLINV-PEINH, "Price Unit
MEINS LIKE YGFMLINV-MEINS, "Unit of Measure
lc_currency like ygfmlinv-lc_currency,
lc_curtp like ygfmlinv-lc_curtp,
gc_currency like ygfmlinv-gc_currency,
gc_curtp like ygfmlinv-gc_currency,
LC_VAR_AMT LIKE YGFMLINV-LC_VAR_AMT, "LC :Variable Amt
LC_TRFIX_AMT LIKE YGFMLINV-LC_TRFIX_AMT, "LC :Trnsfer Fixed Amt
LC_LOFIX_AMT LIKE YGFMLINV-LC_LOFIX_AMT, "LC:Local Fixed Amt.
LC_COGS LIKE YGFMLINV-LC_VAR_AMT, "Total LC fixed COGS
"added as per CC01507
LC_UTP_AMT LIKE YGFMLINV-LC_UTP_AMT, "LC:UTP Amount.
LC_TR_VAL LIKE YGFMLINV-LC_LOFIX_AMT,"TotalLC Transfer value
XBILK LIKE SKA1-XBILK, "Balance Indicator
gc_var_amt like ygfmlinv-gc_var_amt,
gc_trfix_amt like ygfmlinv-gc_trfix_amt,
gc_lofix_amt like ygfmlinv-gc_lofix_amt,
gc_cogs like ygfmlinv-gc_var_amt,
gc_utp_amt like ygfmlinv-gc_utp_amt,
gc_tr_val like ygfmlinv-gc_lofix_amt,
END OF i_non_subc.
Final Output Table
types: begin of t_output,
matnr like ygfmlinv-matnr,
lifnr like mslbh-lifnr,
werks like ygfmlinv-werks,
spstk like mslbh-lblab,
totstk like ygfmlinv-lbkum,
lc_currency like ygfmlinv-LC_CURRENCY,
lc_curtp like ygfmlinv-lc_curtp,
gc_curtp like ygfmlinv-gc_curtp,
gc_currency like ygfmlinv-gc_currency,
name1 like lfa1-name1,
vprsv like ygfmlinv-vprsv,
bukrs like ygfmlinv-bukrs,
mlast like ygfmlinv-mlast,
meins like ygfmlinv-meins,
bklas like ygfmlinv-bklas,
maktx like makt-maktx,
stdprice(18),
totval like ygfmlinv-lc_tot_amt,
sobkz like mslbh-sobkz,
end of t_output.
Work Area for Final Output Table
data: wa_output type t_output.
ALV Display
Name of Custom Container added on the screen
data: G_CONTAINER TYPE SCRFNAME VALUE 'ZGRID_CTRL',
ALV GRID Instance Reference
G_GRID1 TYPE REF TO CL_GUI_ALV_GRID, "Grid
Instance Reference to Custom Container
G_CUSTOM_CONTAINER TYPE REF TO CL_GUI_CUSTOM_CONTAINER.
PBO Status
data: ok_code like sy-ucomm,
Field Catalog Table
gT_FIELDCAT TYPE LVC_T_FCAT,
Layout Structure
gs_layout type lvc_s_layo,
Sorting anf Subtotal
gt_sort TYPE lvc_s_sort occurs 0,
gt_output type standard table of t_output.
data: g_curr(2).
CLASS lcl_event_receiver DEFINITION
class lcl_event_receiver definition.
public section.
Add SUB TOTAL TEXT to the ALV DISPLAY
methods handle_subtotal_text
for event subtotal_text of cl_gui_alv_grid
importing es_subtottxt_info ep_subtot_line e_event_data.
endclass.
Declaration for EVENT Receiver
data: event_receiver type ref to lcl_event_receiver,
l_subtxt(60) value 'Subtotal Text'.
field-symbols: <fs> type t_output,
<fs1>.
CLASS LCL_EVENT_RECEIVER IMPLEMENTATION
CLASS LCL_EVENT_RECEIVER IMPLEMENTATION.
METHOD HANDLE_SUBTOTAL_TEXT.
FIELD for which the SUBTOTAL is Calculated
if es_subtottxt_info-criteria = 'MATNR'.
ASSIGN EP_SUBTOT_LINE->* TO <FS1>.
ASSIGN E_EVENT_DATA->M_DATA->* TO <FS>.
CONCATENATE es_subtottxt_info-keyword ':MATERIAL'
<fs>-matnr INTO <fs1>.
ENDIF.
ENDMETHOD. "HANDLE_SUBTOTAL_TEXT
ENDCLASS. "LCL_EVENT_RECEIVER IMPLEMENTATION
Constants
constants: c_eb(2) value 'EB',
c_m value 'M',
C_KTOPL(4) VALUE 'TCOA',
C_KTOSL(3) VALUE 'BSX',
C_KONTS(4) VALUE '002%'.
Selection Screen
selection-screen:begin of block b1 with frame title text-001.
select-options: s_lifnr for lfa1-lifnr , "Vendor
s_werks for YGFMLINV-werks obligatory, "Plant
s_prctr for YGFMLINV-prctr, "Pr.Ctr
s_matnr for ygfmlinv-matnr, "Mat.No
s_bwtar for mseg-bwtar no-display.
parameters: p_bukrs like YGFMLINV-bukrs obligatory, "C.Code
p_pctrgp like SETHEADER-SETNAME, "Pf.ct.Grp
p_poper like YGFMLINV-poper obligatory, " Period
p_bdatj like YGFMLINV-bdatj obligatory, " Year
r_ccode radiobutton group rad1 default 'X',
r_grpcur radiobutton group rad1.
selection-screen: end of block b1.
Ranges Declaration
RANGES : R_PROFIT_CTR FOR CEPC-PRCTR.
INITIALIZATON
*initialization.
Validations for Selection Screen
Validation for Vendor
at selection-screen on s_lifnr.
select single lifnr
from lfa1
into lfa1-lifnr
where lifnr in s_lifnr.
if sy-subrc ne 0.
message e039.
endif.
Validation for Plant
at selection-screen on s_werks.
select single werks
from t001w
into t001w-werks
where werks in s_werks.
if sy-subrc ne 0.
message e040.
endif.
Validation for Profit Center
at selection-screen on s_prctr.
select single prctr
from ygfmlinv
into ygfmlinv-prctr
where prctr in s_prctr.
if sy-subrc ne 0.
message e041.
endif.
Validation for Company Code
at selection-screen on p_bukrs.
select single bukrs
from t001
into t001-bukrs
where bukrs eq p_bukrs.
if sy-subrc ne 0.
message e042.
endif.
Validation for Profit Center Group
at selection-screen on p_pctrgp.
if not p_pctrgp is initial.
select single setname
from setheader
into setheader-setname
where setname eq p_pctrgp.
if sy-subrc ne 0.
message e043.
endif.
endif.
Validation for Fiscal Period
*at selection-screen on p_poper.
select single poper
from YGFMLINV
into YGFMLINV-poper
where poper eq p_poper.
if sy-subrc ne 0.
message e045.
endif.
Validation for Fiscal Year
*at selection-screen on p_bdatj.
select single bdatj
from YGFMLINV
into YGFMLINV-bdatj
where bdatj eq p_bdatj.
if sy-subrc ne 0.
message e046.
endif.
start-of-selection.
if p_pctrgp ne ' '.
perform f_profit_center_select.
endif.
perform f_data_selection. "using p_profit_center..
end-of-selection.
call screen 100.
*& Form f_data_selection
text
--> p1 text
<-- p2 text
FORM f_data_selection.
data: l_flg,
l_lblab like mslbh-lblab,
l_name1 like lfa1-name1,
l_rate like mslbh-lblab,
l_maktx like makt-maktx,
l_diff_stk like mslbh-lblab,
l_totval like ygfmlinv-lc_tot_amt.
From profit center group get Profit Center
LOOP AT R_PROFIT_CTR.
IF R_PROFIT_CTR-LOW EQ R_PROFIT_CTR-HIGH.
R_PROFIT_CTR-OPTION = 'EQ'.
R_PROFIT_CTR-HIGH = SPACE.
MODIFY R_PROFIT_CTR.
ENDIF.
ENDLOOP.
if r_ccode eq 'X'.
g_curr = '10'.
else.
g_curr = '30'.
endif.
if g_curr eq '10'.
Fetch TOTAL STOCK ,VALUE from ML - Inv. Data Extract Table
select BDATJ POPER BUKRS PRCTR WERKS BKLAS MATNR
BWTAR STOCK_IND MEINS MLAST LBKUM
vprsv lc_mvp_prc LC_CURTP
LC_CURRENCY LC_TOT_AMT
lc_var_amt LC_UTP_AMT
lc_trfix_amt lc_lofix_amt
gc_curtp gc_currency
from YGFMLINV
into corresponding fields of table i_YGFMLINV
where bdatj eq p_bdatj and
poper eq p_poper and
bukrs eq p_bukrs and
werks in s_werks and
matnr in s_matnr and
STOCK_IND eq c_m and
trans_type eq c_eb and
lc_curtp eq g_curr.
else.
Fetch TOTAL STOCK ,VALUE from ML - Inv. Data Extract Table
select BDATJ POPER BUKRS PRCTR WERKS BKLAS MATNR
BWTAR STOCK_IND MEINS MLAST LBKUM
vprsv lc_mvp_prc LC_CURTP
LC_CURRENCY LC_TOT_AMT
lc_var_amt LC_UTP_AMT
lc_trfix_amt lc_lofix_amt
gc_curtp gc_currency
from YGFMLINV
into corresponding fields of table i_YGFMLINV
where bdatj eq p_bdatj and
poper eq p_poper and
bukrs eq p_bukrs and
werks in s_werks and
matnr in s_matnr and
STOCK_IND eq c_m and
trans_type eq c_eb and
gc_curtp eq g_curr.
endif.
Delete Entries not in Profit Center range
LOOP AT I_YGFMLINV.
IF NOT I_YGFMLINV-PRCTR IN R_PROFIT_CTR.
DELETE I_YGFMLINV.
ENDIF.
ENDLOOP.
if not i_ygfmlinv[] is initial.
data l_date like mkpf-budat.
move : p_bdatj to l_date(4),
p_poper to l_date+4(2),
'31' to l_date+6(2).
Get the TOTAL STOCK for Vendor and Material
SELECT MATNR
WERKS
CHARG
SOBKZ
LIFNR
LFGJA
LFMON
LBLAB
LBINS
FROM MSLBH INTO corresponding fields of TABLE I_MSLBH
for all entries in i_ygfmlinv
WHERE MATNR eq i_ygfmlinv-matnr and
WERKS EQ i_ygfmlinv-WERKS AND
SOBKZ in p_stkind AND
LIFNR in s_LIFNR AND
LFGJA GE P_BDATJ and
lfmon eq p_poper.
if sy-subrc eq 0.
DELETE I_MSLBH WHERE LFGJA EQ P_BDATJ AND
LFMON LT P_POPER.
endif.
endif.
sort i_mslbh by matnr lifnr werks lfgja lfmon.
sort i_ygfmlinv by matnr werks bdatj poper.
loop at i_mslbh.
l_lblab = l_lblab + i_mslbh-lblab.
at end of lifnr.
l_flg = 'X'.
endat.
read table i_ygfmlinv with key matnr = i_mslbh-matnr
werks = i_mslbh-werks
bdatj = i_mslbh-lfgja
poper = i_mslbh-lfmon
binary search.
if sy-subrc eq 0.
select single name1 from lfa1 into l_name1
where lifnr eq i_mslbh-lifnr.
if sy-subrc eq 0.
select single maktx
from makt
into l_maktx
where matnr eq i_mslbh-matnr and
spras eq sy-langu.
if l_flg eq 'X'.
Subtract Total stk from Special Stock Vendor to get the difference
l_diff_stk = i_ygfmlinv-lbkum - l_lblab.
move : i_mslbh-matnr to wa_output-matnr,
i_mslbh-lifnr to wa_output-lifnr,
i_mslbh-werks to wa_output-werks,
l_lblab to wa_output-totstk,
l_name1 to wa_output-name1,
i_ygfmlinv-vprsv to wa_output-vprsv,
i_ygfmlinv-meins to wa_output-meins,
i_ygfmlinv-lc_mvp_prc to wa_output-stdprice,
i_ygfmlinv-mlast to wa_output-mlast,
i_ygfmlinv-bukrs to wa_output-bukrs,
i_ygfmlinv-bklas to wa_output-bklas,
i_mslbh-sobkz to wa_output-sobkz.
if g_curr eq '10'.
move: i_ygfmlinv-lc_curtp to wa_output-lc_curtp,
i_ygfmlinv-lc_currency to wa_output-lc_currency.
else.
move: i_ygfmlinv-gc_curtp to wa_output-gc_curtp,
i_ygfmlinv-gc_currency to wa_output-gc_currency.
endif.
if wa_output-totstk ne 0.
l_rate = i_ygfmlinv-LC_TOT_AMT / i_ygfmlinv-lbkum.
wa_output-totval = l_rate * l_lblab.
endif.
append wa_output to gt_output.
move wa_output-totval to l_totval.
clear: l_rate,wa_output.
if l_diff_stk ne 0.
wa_output-totval = i_ygfmlinv-LC_TOT_AMT - l_totval.
move: i_mslbh-matnr to wa_output-matnr,
*Included - Remove
i_mslbh-matnr to wa_output-matnr,
i_mslbh-werks to wa_output-werks,
l_diff_stk to wa_output-totstk,
i_ygfmlinv-vprsv to wa_output-vprsv,
i_ygfmlinv-meins to wa_output-meins,
i_ygfmlinv-lc_mvp_prc to wa_output-stdprice,
i_ygfmlinv-mlast to wa_output-mlast,
i_ygfmlinv-bukrs to wa_output-bukrs,
i_ygfmlinv-bklas to wa_output-bklas.
if g_curr eq '10'.
move: i_ygfmlinv-lc_curtp to wa_output-lc_curtp,
i_ygfmlinv-lc_currency to wa_output-lc_currency.
else.
move: i_ygfmlinv-gc_curtp to wa_output-gc_curtp,
i_ygfmlinv-gc_currency to wa_output-gc_currency.
endif.
append wa_output to gt_output.
clear: i_ygfmlinv,l_flg,l_lblab,l_name1,wa_output,
i_mslbh.
endif.
endif.
endif.
endif.
endloop.
sort: i_ygfmlinv by matnr werks,
i_mslbh by matnr werks.
LOOP AT I_YGFMLINV.
read table i_mslbh with key matnr = i_ygfmlinv-matnr
binary search.
if sy-subrc eq 0.
delete i_ygfmlinv.
clear i_ygfmlinv.
else.
MOVE-CORRESPONDING I_YGFMLINV TO i_non_subc.
APPEND i_non_subc.
CLEAR I_YGFMLINV.
endif.
ENDLOOP.
sort i_non_subc by matnr werks.
data: l_lc_cogs(16) type p decimals 2,
l_lc_tr_val(16) type p decimals 2,
l_gc_cogs(16) type p decimals 2,
l_gc_tr_val(16) type p decimals 2.
LOOP AT i_non_subc.
if g_curr eq '10'.
l_LC_COGS = i_non_subc-LC_TRFIX_AMT +
i_non_subc-LC_LOFIX_AMT.
l_LC_TR_VAL = i_non_subc-LC_VAR_AMT + l_LC_COGS +
i_non_subc-LC_UTP_AMT.
else.
l_gc_cogs = i_non_subc-gc_trfix_amt + i_non_subc-gc_lofix_amt.
l_gc_tr_val = i_non_subc-gc_var_amt + i_non_subc-gc_cogs +
i_non_subc-gc_utp_amt.
endif.
at end of matnr.
l_flg = 'X'.
endat.
if l_flg eq 'X'.
move: i_non_subc-matnr to wa_output-matnr,
i_non_subc-werks to wa_output-werks,
i_non_subc-lbkum to wa_output-totstk,
i_non_subc-meins to wa_output-meins,
i_non_subc-bukrs to wa_output-bukrs,
i_non_subc-bklas to wa_output-bklas,
i_non_subc-lc_curtp to wa_output-lc_curtp,
i_non_subc-lc_currency to wa_output-lc_currency,
i_non_subc-gc_curtp to wa_output-gc_curtp,
i_non_subc-gc_currency to wa_output-gc_currency.
if g_curr eq '10'.
move l_lc_tr_val to wa_output-totval.
else.
move l_gc_tr_val to wa_output-totval.
endif.
i_non_subc-mlast to wa_output-mlast.
select single maktx
from makt
into l_maktx
where matnr eq i_non_subc-matnr and
spras eq sy-langu.
if sy-subrc eq 0.
move l_maktx to wa_output-maktx.
append wa_output to gt_output .
clear: wa_output,l_flg,l_lc_tr_val,l_lc_cogs,
l_gc_cogs,l_gc_tr_val.
endif.
endif.
ENDLOOP.
ENDFORM. " f_data_selection
*& Module STATUS_0100 OUTPUT
text
MODULE STATUS_0100 OUTPUT.
SET PF-STATUS 'ZPF_STATUS'.
SET TITLEBAR 'ZTITLE'.
ENDMODULE. " STATUS_0100 OUTPUT
*& Module alv_display OUTPUT
text
MODULE alv_display OUTPUT.
data: total type ref to data,
subtotal1 type ref to data.
field-symbols <total> like gt_output .
field-symbols <subtotal1> like gt_output.
if g_grid1 is initial.
perform f_create_objects.
perform f_build_field_catalog changing gt_fieldcat.
perform f_prepare_layout changing gs_layout.
perform f_sort_sub_total changing gt_sort.
CALL METHOD G_GRID1->GET_SORT_CRITERIA
IMPORTING
ET_SORT = gt_sort[] .
CALL METHOD g_grid1->GET_SUBTOTALS
IMPORTING
EP_COLLECT00 = total
EP_COLLECT01 = subtotal1 .
EP_COLLECT02 =
EP_COLLECT03 =
EP_COLLECT04 =
EP_COLLECT05 =
EP_COLLECT06 =
EP_COLLECT07 =
EP_COLLECT08 =
EP_COLLECT09 =
ET_GROUPLEVELS = .
assign total->* to <total>.
assign subtotal1->* to <subtotal1>.
*ALV Display - Specify Sorting,Filtering Criteria
if gt_output[] is initial.
message i015.
endif.
CALL METHOD G_GRID1->SET_TABLE_FOR_FIRST_DISPLAY
EXPORTING
I_BYPASSING_BUFFER =
I_BUFFER_ACTIVE =
I_CONSISTENCY_CHECK =
I_STRUCTURE_NAME =
IS_VARIANT =
I_SAVE =
I_DEFAULT = 'X'
IS_LAYOUT = gs_layout
IS_PRINT =
IT_SPECIAL_GROUPS =
IT_TOOLBAR_EXCLUDING =
IT_HYPERLINK =
IT_ALV_GRAPHICS =
IT_EXCEPT_QINFO =
CHANGING
IT_OUTTAB = gt_output[]
IT_FIELDCATALOG = gt_fieldcat
IT_SORT = gt_sort[]
IT_FILTER =
EXCEPTIONS
INVALID_PARAMETER_COMBINATION = 1
PROGRAM_ERROR = 2
TOO_MANY_LINES = 3
others = 4 .
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
else.
CALL METHOD G_GRID1->REFRESH_TABLE_DISPLAY
EXPORTING
IS_STABLE =
I_SOFT_REFRESH =
EXCEPTIONS
FINISHED = 1
others = 2 .
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
endif.
ENDMODULE. " alv_display OUTPUT
*& Module USER_COMMAND_0100 INPUT
text
MODULE USER_COMMAND_0100 INPUT.
case ok_code.
when 'BACK'.
set screen '0'.
leave screen.
when 'EXIT' or 'CANCEL'.
PERFORM EXIT_PROGRAM.
endcase.
clear ok_code.
ENDMODULE. " USER_COMMAND_0100 INPUT
*& Form f_create_objects
text
--> p1 text
<-- p2 text
FORM f_create_objects.
Creating Custom Container Objects and GRID
IF G_grid1 IS INITIAL.
*Creating Custom Container Instance
Pass the name of the control that you have created on the screen
CREATE OBJECT G_CUSTOM_CONTAINER
EXPORTING CONTAINER_NAME = 'ZGRID_CTRL'.
*Creating ALV Grid Instance
CREATE OBJECT G_GRID1 EXPORTING I_PARENT = G_CUSTOM_CONTAINER.
endif.
ENDFORM. " f_create_objects
*& Form f_build_field_catalog
text
--> p1 text
<-- p2 text
FORM f_build_field_catalog changing pt_fieldcat type lvc_t_fcat.
data ls_fcat type lvc_s_fcat.
Val Type
ls_fcat-fieldname = 'BUKRS'.
ls_fcat-inttype = 'C'.
ls_fcat-outputlen = '4'.
ls_fcat-coltext = 'Val.Type'.
ls_fcat-seltext = 'Val.Type'.
ls_fcat-col_pos = '1'.
append ls_fcat to pt_fieldcat.
clear ls_fcat.
Val.Class
ls_fcat-fieldname = 'BKLAS'.
ls_fcat-TABNAME = 'YGFMLINV'.
ls_fcat-outputlen = '4'.
ls_fcat-coltext = 'Val.Class'.
ls_fcat-seltext = 'Val.Class'.
ls_fcat-col_pos = '2'.
append ls_fcat to pt_fieldcat.
clear ls_fcat.
*Plant
ls_fcat-fieldname = 'WERKS'.
ls_fcat-TABNAME = 'YGFMLINV'.
ls_fcat-outputlen = '4'.
ls_fcat-coltext = 'Plant'.
ls_fcat-seltext = 'Plant'.
ls_fcat-col_pos = '3'.
append ls_fcat to pt_fieldcat.
clear ls_fcat.
*Material
ls_fcat-fieldname = 'MATNR'.
ls_fcat-TABNAME = 'YGFMLINV'.
ls_fcat-outputlen = '18'.
ls_fcat-coltext = 'Material'.
ls_fcat-seltext = 'Material'.
ls_fcat-col_pos = '4'.
append ls_fcat to pt_fieldcat.
clear ls_fcat.
*Description
ls_fcat-fieldname = 'MAKTX'.
ls_fcat-TABNAME = 'MAKT'.
ls_fcat-outputlen = '40'.
ls_fcat-coltext = 'Description'.
ls_fcat-seltext = 'Description'.
ls_fcat-col_pos = '5'.
append ls_fcat to pt_fieldcat.
clear ls_fcat.
*Price Control
ls_fcat-fieldname = 'VPRSV'.
ls_fcat-TABNAME = 'YGFMLINV'.
ls_fcat-outputlen = '1'.
ls_fcat-coltext = 'Price Control'.
ls_fcat-seltext = 'Price Control'.
ls_fcat-col_pos = '6'.
append ls_fcat to pt_fieldcat.
clear ls_fcat.
*Price Determination
ls_fcat-fieldname = 'MLAST'.
ls_fcat-TABNAME = 'YGFMLINV'.
ls_fcat-outputlen = '1'.
ls_fcat-coltext = 'Price Determination'.
ls_fcat-seltext = 'Price Determination'.
ls_fcat-col_pos = '7'.
append ls_fcat to pt_fieldcat.
clear ls_fcat.
Total Stock
ls_fcat-fieldname = 'TOTSTK'.
ls_fcat-REF_TABLE = 'YGFMLINV'.
ls_fcat-REF_FIELD = 'LBKUM'.
ls_fcat-QFIELDNAME = 'MEINS'.
ls_fcat-IFIELDNAME = 'YGFMLINV'.
ls_fcat-coltext = 'Total Stock'.
ls_fcat-seltext = 'Total Stock'.
ls_fcat-col_pos = '8'.
ls_fcat-do_sum = 'X'.
append ls_fcat to pt_fieldcat.
clear ls_fcat.
Std. Price
ls_fcat-fieldname = 'STDPRICE'.
ls_fcat-TABNAME = 'YGFMLINV'.
ls_fcat-REF_TABLE = 'YGFMLINV'.
ls_fcat-ref_field = 'LC_MVP_PRC'.
ls_fcat-coltext = 'Std.Price'.
ls_fcat-col_pos = '9'.
append ls_fcat to pt_fieldcat.
clear ls_fcat.
if g_curr eq '10'.
Currency Type
ls_fcat-fieldname = 'LC_CURTP'.
ls_fcat-TABNAME = 'YGFMLINV'.
ls_fcat-coltext = 'Currency Type'.
ls_fcat-seltext = 'Currency Type'.
ls_fcat-col_pos = '10'.
append ls_fcat to pt_fieldcat.
clear ls_fcat.
else.
Currency Type
ls_fcat-fieldname = 'GC_CURTP'.
ls_fcat-TABNAME = 'YGFMLINV'.
ls_fcat-coltext = 'Currency Type'.
ls_fcat-seltext = 'Currency Type'.
ls_fcat-col_pos = '10'.
append ls_fcat to pt_fieldcat.
clear ls_fcat.
endif.
*Per Unit Price
ls_fcat-fieldname = 'STDPRICE'.
ls_fcat-TABNAME = 'YGFMLINV'.
ls_fcat-ref_table = 'YGFMLINV'.
ls_fcat-ref_field = 'LC_MVP_PRC'.
ls_fcat-currency = 'LC_CURRENCY'.
ls_fcat-coltext = 'Per.Unit.Price'.
ls_fcat-seltext = 'Per.Unit.Price'.
ls_fcat-col_pos = '11'.
append ls_fcat to pt_fieldcat.
clear ls_fcat.
Quantity Measurement
ls_fcat-fieldname = 'MEINS'.
ls_fcat-TABNAME = 'YGFMLINV'.
ls_fcat-coltext = 'Base Unit'.
ls_fcat-seltext = 'Base Unit'.
ls_fcat-col_pos = '12'.
append ls_fcat to pt_fieldcat.
clear ls_fcat.
*Total Value
ls_fcat-fieldname = 'TOTVAL'.
ls_fcat-TABNAME = 'YGFMLINV'.
ls_fcat-currency = 'GC_CURRENCY'.
ls_fcat-coltext = 'Total Value'.
ls_fcat-seltext = 'Total Value'.
ls_fcat-col_pos = '13'.
ls_fcat-do_sum = 'X'.
append ls_fcat to pt_fieldcat.
clear ls_fcat.
*Value/period
ls_fcat-fieldname = 'TOTVAL'.
ls_fcat-TABNAME = 'YGFMLINV'.
ls_fcat-currency = 'GC_CURRENCY'.
ls_fcat-coltext = 'Value/Period'.
ls_fcat-seltext = 'Value/Period'.
ls_fcat-col_pos = '14'.
append ls_fcat to pt_fieldcat.
clear ls_fcat.
*Vendor
ls_fcat-fieldname = 'LIFNR'.
ls_fcat-TABNAME = 'LFA1'.
ls_fcat-coltext = 'Vendor'.
ls_fcat-seltext = 'Vendor'.
ls_fcat-col_pos = '15'.
append ls_fcat to pt_fieldcat.
clear ls_fcat.
*Vendor Description
ls_fcat-fieldname = 'NAME1'.
ls_fcat-TABNAME = 'LFA1'.
ls_fcat-coltext = 'Vend.Desc'.
ls_fcat-seltext = 'Vend.Desc'.
ls_fcat-col_pos = '16'.
append ls_fcat to pt_fieldcat.
clear ls_fcat.
*Special Stock Indicator
ls_fcat-fieldname = 'SOBKZ'.
ls_fcat-TABNAME = 'MSLBH'.
ls_fcat-coltext = 'Spl.Stock Ind'.
ls_fcat-seltext = 'Spl.Stock Ind'.
ls_fcat-col_pos = '17'.
append ls_fcat to pt_fieldcat.
clear ls_fcat.
ENDFORM. " f_build_field_catalog
*& Form f_prepare_layout
text
<--P_GS_LAYOUT text
FORM f_prepare_layout CHANGING P_GS_LAYOUT type lvc_s_layo.
p_gs_layout-zebra = 'X'.
p_gs_layout-grid_title = 'Material List: Prices and Inventory Values'.
p_gs_layout-smalltitle ='X'.
p_gs_layout-no_totline = 'X'.
p_gs_layout-no_totarr = 'X'.
p_gs_layout-no_totexp = 'X'.
p_gs_layout-totals_bef = 'X'.
ENDFORM. " f_prepare_layout
*& Form f_profit_center_select
Validate the Profit Center Groups with Profit Center
--> p1 text
<-- p2 text
FORM f_profit_center_select.
DATA:V_RETCODE LIKE BAPIRET2,
V_GROUPNAME LIKE BAPICO_GROUP-GROUPNAME ,
p_kokrs like CEPC-KOKRS value 'DU01',
I_HIERARCHYNODES LIKE BAPISET_HIER OCCURS 0 WITH HEADER LINE,
I_PRCTR LIKE BAPI1116_VALUES OCCURS 0 WITH HEADER LINE.
V_GROUPNAME = P_PCTRGP.
CALL FUNCTION 'BAPI_PROFITCENTERGRP_GETDETAIL'
EXPORTING
CONTROLLINGAREA = P_KOKRS
GROUPNAME = V_GROUPNAME
IMPORTING
RETURN = V_RETCODE
TABLES
HIERARCHYNODES = I_HIERARCHYNODES
HIERARCHYVALUES = I_PRCTR.
LOOP AT I_PRCTR.
R_PROFIT_CTR-LOW = I_PRCTR-VALFROM.
R_PROFIT_CTR-HIGH = I_PRCTR-VALTO.
R_PROFIT_CTR-SIGN = 'I'.
R_PROFIT_CTR-OPTION = 'BT'.
APPEND R_PROFIT_CTR.
ENDLOOP.
ENDFORM. " f_profit_center_select
*& Form f_sort_sub_total
text
<--P_GT_SORT text
FORM f_sort_sub_total CHANGING P_GT_SORT.
DATA: ls_sort TYPE lvc_s_sort occurs 0 with header line.
ls_sort-spos = '1' .
ls_sort-fieldname = 'MATNR'.
ls_sort-up = 'X'.
ls_sort-subtot = 'X'.
ls_sort-expa ='X'.
ls_sort-group = 'UL'.
append ls_sort TO gt_sort.
ENDFORM. " f_sort_sub_total
*& Form EXIT_PROGRAM
text
--> p1 text
<-- p2 text
FORM EXIT_PROGRAM.
data: g_repid like sy-repid.
g_repid = sy-repid.
CALL METHOD G_CUSTOM_CONTAINER->FREE.
CALL METHOD CL_GUI_CFW=>FLUSH.
IF SY-SUBRC NE 0.
add your handling, for example
CALL FUNCTION 'POPUP_TO_INFORM'
EXPORTING
TITEL = G_REPID
TXT2 = SY-SUBRC
TXT1 = 'Error in Flush'(009).
ENDIF.
LEAVE PROGRAM.
ENDFORM. " EXIT_PROGRAM -
Dynamic Header(TOP-OF-PAGE) In HIERSEQ ALV
Hi Experts,
My Requirment is to develop a customer ledger in which the top of page is the detailed customer address follwed by list doc no...
please suggest me how to get the Dynamic top-of page in HIERSEQ ALV ...
Thanks in advance,
With regards,
PrakashHi Prakash,
Try this way.
<font color=blue><b><pre>REPORT ZTEST_NOTEPAD.
DATA: BEGIN OF IT_EKKO OCCURS 0,
EBELN TYPE EKKO-EBELN,
BUKRS TYPE EKKO-BUKRS,
BSTYP TYPE EKKO-BSTYP,
BSART TYPE EKKO-BSART,
END OF IT_EKKO.
DATA: BEGIN OF IT_EKPO OCCURS 0,
EBELN TYPE EKPO-EBELN,
EBELP TYPE EKPO-EBELP,
LOEKZ TYPE EKPO-LOEKZ,
TXZ01 TYPE EKPO-TXZ01,
MATNR TYPE EKPO-MATNR,
END OF IT_EKPO.
TYPE-POOLS : SLIS.
DATA : IT_EVENTS TYPE SLIS_T_EVENT,
WA_EVENTS TYPE SLIS_ALV_EVENT,
IT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
WA_FIELDCAT LIKE LINE OF IT_FIELDCAT,
LIST_LAYOUT TYPE SLIS_LAYOUT_ALV,
GS_KEYINFO TYPE SLIS_KEYINFO_ALV.
DATA:PROGRAM TYPE SY-REPID.
START-OF-SELECTION.
PROGRAM = SY-REPID.
SELECT * FROM EKKO INTO CORRESPONDING FIELDS OF TABLE IT_EKKO UP TO 100 ROWS.
IF NOT IT_EKKO[] IS INITIAL.
SELECT * INTO CORRESPONDING FIELDS OF TABLE IT_EKPO FROM EKPO FOR ALL ENTRIES IN IT_EKKO
WHERE EBELN = IT_EKKO-EBELN.
ENDIF.
WA_EVENTS-NAME = 'TOP_OF_PAGE'.
WA_EVENTS-FORM = 'TOP_OF_PAGE'.
APPEND WA_EVENTS TO IT_EVENTS.
GS_KEYINFO-HEADER01 = 'EBELN'.
GS_KEYINFO-ITEM01 = 'EBELN'.
DEFINE FIELDCATALOG.
WA_FIELDCAT-COL_POS = &1.
WA_FIELDCAT-FIELDNAME = &2.
WA_FIELDCAT-TABNAME = &3.
WA_FIELDCAT-SELTEXT_M = &4.
APPEND WA_FIELDCAT TO IT_FIELDCAT.
CLEAR WA_FIELDCAT.
END-OF-DEFINITION.
FIELDCATALOG: '1' 'EBELN' 'IT_EKKO' 'EKKO-EBELN',
'2' 'BUKRS' 'IT_EKKO' 'EKKO-BUKRS',
'3' 'BSTYP' 'IT_EKKO' 'EKKO-BSTYP',
'4' 'BSART' 'IT_EKKO' 'EKKO-BSART'.
FIELDCATALOG: '1' 'EBELN' 'IT_EKPO' 'EKPO-EBELN',
'2' 'EBELP' 'IT_EKPO' 'EKPO-EBELP',
'3' 'LOEKZ' 'IT_EKPO' 'EKPO-LOEKZ',
'4' 'TXZ01' 'IT_EKPO' 'EKPO-TXZ01',
'5' 'MATNR' 'IT_EKPO' 'EKPO-MATNR'.
CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = PROGRAM
IT_FIELDCAT = IT_FIELDCAT
I_TABNAME_HEADER = 'IT_EKKO'
I_TABNAME_ITEM = 'IT_EKPO'
IT_EVENTS = IT_EVENTS
IS_KEYINFO = GS_KEYINFO
TABLES
T_OUTTAB_HEADER = IT_EKKO
T_OUTTAB_ITEM = IT_EKPO.
*& Form TOP-OF-page
FORM TOP_OF_PAGE.
WRITE: SY-TITLE,
/ SY-REPID.
WRITE: SY-DATUM, SY-UZEIT.
WRITE sy-uline.
ENDFORM. "TOP-OF-page</pre></b></font>
Thanks
Venkat.O -
Reg..ALV using classes
i have displayed a ALV report with a push button 'HST'.
When i select a particular line(vbeln) and click on pushbutton 'HST' it has to display me a interactive report based on the condition vbeln and posnr.
can anyone help me with the detail code using classes..
answers will be rewarded....
regards,
kumarHi,
Class ALV Specification
Classes used:
CL_GUI_ALV_GRID
Example of ALV using Classes
DATA: lcl_alv TYPE REF TO cl_gui_alv_grid,
t_flights TYPE STANDARD TABLE OF FLIGHTS.
SELECT * FROM flights INTO TABLE t_flights.
CREATE OBJECT lcl_alv
EXPORTING I_PARENT = cl_gui_container=>screen0.
CALL METHOD lcl_alv->set_table_for_first_display
EXPORTING
I_STRUCTURE_NAME = 'FLIGHTS'
CHANGING
IT_OUTTAB = t_flights.
CALL SCREEN 100.
Example Details
This is a simple example of the class ALV, we do not need to create, in this case, a field catalog because we are using the whole table of FLIGHTS and we will show all the fields that this table contains, we do this at the I_STRUCTURE_NAME = 'FLIGHTS' statement.
The CL_GUI_ALV_GRID constructor needs the I_PARENT parameter to define where it will be show, in the example we set the entire screen to place the ALV.
reward if helpful -
List display for ALV using class and methods
Hi friends
I want the list display for the ALV using Class and methods
which class and methods i can use.
Here we can't use the REUSE_ALV_LIST_DISPLAY and also GRID
I was done GRID display using class and methods but i want only list display for using class.
plz Give me sample code of list display not for grid.
Thanks
Nani.hi
please check with this code...
declare grid and container.
DATA : o_alvgrid TYPE REF TO cl_gui_alv_grid,
o_dockingcontainer TYPE REF TO cl_gui_docking_container,
i_fieldcat TYPE lvc_t_fcat,"fieldcatalogue
w_layout TYPE lvc_s_layo."layout
If any events like double click,etc., are needed we have to add additional functionality.
call the screen in program.
Then , create the container as follows
IF cl_gui_alv_grid=>offline( ) IS INITIAL.
CREATE OBJECT o_dockingcontainer
EXPORTING
ratio = '95'
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
create_error = 3
lifetime_error = 4
lifetime_dynpro_dynpro_link = 5
others = 6.
ENDIF.
CREATE OBJECT o_alvgrid
EXPORTING
i_parent = o_dockingcontainer.
Build the fieldcatalog
create a output structure in SEll for the ALV output
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
i_structure_name = <alv output>
CHANGING
ct_fieldcat = i_fieldcat[]
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3.
IF sy-subrc <> 0.
MESSAGE i030."Error in building the field catalogue
LEAVE LIST-PROCESSING.
ENDIF.
*If you need to modify the field catalog,modify it using field sysmbols
*setting the layout
w_layout-grid_title = title.
w_layout-zebra = 'X'.
then displaying the output
CALL METHOD o_alvgrid->set_table_for_first_display
EXPORTING
i_save = 'A'
is_layout = w_layout
CHANGING
it_outtab = i_output[]
it_fieldcatalog = i_fieldcat[]
EXCEPTIONS
invalid_parameter_combination = 1
program_error = 2
too_many_lines = 3
OTHERS = 4.
IF sy-subrc <> 0.
MESSAGE i032 ."Error in Displaying
LEAVE LIST-PROCESSING.
ENDIF.
*After that in PAI of the screen, you need to free the *object while going back from the screen(according to *your requirement)
MODULE user_command_9001 INPUT.
CASE sy-ucomm.
WHEN 'EXIT' OR 'CANC'.
PERFORM f9600_free_objects:
USING o_alvgrid 'ALV' text-e02,
USING o_dockingcontainer 'DOCKING'
text-e01.
LEAVE PROGRAM.
ENDCASE.
ENDMODULE. " USER_COMMAND_9001 INPUT
*in the program, write the follwoing code
FORM f9600_free_objects USING pobject
value(ptype)
value(ptext).
DATA: l_objectalv TYPE REF TO cl_gui_alv_grid.
CASE ptype.
WHEN 'ALV'.
l_objectalv = pobject.
IF NOT ( l_objectalv IS INITIAL ).
CALL METHOD l_objectalv->free
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
OTHERS = 3.
CLEAR: pobject, l_objectalv.
PERFORM f9700_error_handle USING ptext.
ENDIF.
WHEN 'DOCKING'.
DATA: lobjectdock TYPE REF TO cl_gui_docking_container.
lobjectdock = pobject.
IF NOT ( lobjectdock IS INITIAL ).
CALL METHOD lobjectdock->free
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
OTHERS = 3.
CLEAR: pobject, lobjectdock.
PERFORM f9700_error_handle USING ptext.
ENDIF.
WHEN 'CONTAINER'.
DATA: lobjectcontainer TYPE REF TO cl_gui_container.
lobjectcontainer = pobject.
IF NOT ( lobjectcontainer IS INITIAL ).
CALL METHOD lobjectcontainer->free
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
OTHERS = 3.
CLEAR: pobject, lobjectcontainer.
PERFORM f9700_error_handle USING ptext.
ENDIF.
WHEN OTHERS.
sy-subrc = 1.
PERFORM f9700_error_handle USING
text-e04.
ENDCASE.
ENDFORM. " f9600_free_objects
FORM f9700_error_handle USING value(ptext).
IF sy-subrc NE 0.
CALL FUNCTION 'POPUP_TO_INFORM'
EXPORTING
titel = text-e03
txt2 = sy-subrc
txt1 = ptext.
ENDIF.
endform.
also check with this
http://help.sap.com/printdocu/core/Print46c/en/data/pdf/BCSRVALV/BCSRVALV.pdf
Hope this helps
if it helped, you can acknowledge the same by rewarding
regards
dinesh -
Provide me Helpful Links/Documents on ALV using Classes
Dear all,
Could you guys provide me with some Helpful Links/Documents on ALV using Classes.
Thanks in Advance,
Joseph ReddyHi,
Check these out:
Check this for basic concepts of OOPS
https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/com.sap.km.cm.docs/library/webas/abap/abap code samples/abap objects/abap code sample to learn basic concept of object-oriented programming.doc
https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/com.sap.km.cm.docs/library/webas/abap/abap code samples/alv grid/abap code sample to display data in alv grid using object oriented programming.doc
Tabstrip
https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/com.sap.km.cm.docs/library/webas/abap/abap code samples/alv grid/abap code sample for tab strip in alv.pdf
Editable ALV
https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/com.sap.km.cm.docs/library/webas/abap/abap code samples/alv grid/abap code sample to edit alv grid.doc
Tree
http://www.sapdevelopment.co.uk/reporting/alv/alvtree/alvtree_usrint.htm
General Tutorial for OOPS
https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/com.sap.km.cm.docs/library/webas/abap/an easy reference for alv grid control.pdf
http://www.geocities.com/mpioud/Abap_programs.html
Best Regards,
Anjali -
hi all,
How to create a ALV report using Classes....?
any links or feedback will be appreciated.
Thanks in Advance.Please Don't Duplicate the same Question. and Don't Corss Post.
close this one. -
Using row selection in ALV using class cl_salv
Hi,
how to use row selection by using cl_salv classes...
I need to display scarr table in the basic list in ALV wthout using screens and function modules...
On multiple selection of carrid from ALV, need to display flight details from sflight.
Also how to get the selection buttons for corresponding rows.
NOTE : Using class cl_salv*
Thanks,
SiddarthYou may need to look into Rich's example code by the following thread
https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/cda3992d-0e01-0010-90b2-c4e1f899ac01
a® -
Dynamically determine the height of Top-of-page of an ALV report
Hi all,
I wanted to know if there is a way to determine and set the height of an HTML-TOP-OF-PAGE based on it contents?
Thanks in advance
Shabirthis is the final option for you. try with this..
REPORT ZTEST_ALV_001.
TYPE-POOLS: SLIS.
data: it_sort type SLIS_T_SORTINFO_ALV,
wa_sort like line of it_sort.
data: it_flight type standard table of sflight.
DATA: IT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
WA_FCAT LIKE LINE OF IT_FIELDCAT.
data: o_grid TYPE REF TO cl_gui_alv_grid.
start-of-selection.
select * from sflight
into table it_flight
up to 20 rows.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
I_PROGRAM_NAME = SY-REPID
I_STRUCTURE_NAME = 'SFLIGHT'
CHANGING
ct_fieldcat = IT_FIELDCAT
EXCEPTIONS
INCONSISTENT_INTERFACE = 1
PROGRAM_ERROR = 2
OTHERS = 3
IF sy-subrc NE 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = SY-REPID
I_CALLBACK_html_TOP_OF_PAGE = 'TOP_OF_PAGE'
I_STRUCTURE_NAME = 'SFLIGHT'
IT_FIELDCAT = IT_FIELDCAT
TABLES
t_outtab = IT_FLIGHT
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2
IF sy-subrc NE 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
FORM top_of_page USING header TYPE REF TO cl_dd_document.
DATA: ls_text TYPE sdydo_text_element,
meth(14) TYPE c VALUE 'SET_ROW_HEIGHT'.
if o_grid is initial.
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
IMPORTING
e_grid = o_grid.
CALL METHOD o_grid->parent->parent->(meth)
EXPORTING
id = 3
height = 14. "<-----set the height here..
"using the add_text method you can show the texts
"in the top of page
ls_text = 'Top of page:'.
CALL METHOD header->add_text
EXPORTING
text = ls_text
sap_emphasis = 'strong'.
"for new lines
CALL METHOD header->new_line.
CALL METHOD header->new_line.
endif.
break-point.
ENDFORM. -
Capturing data changes in alv using classes
Hello All,
Currently am working on alv report using classes..,In this report am displaying 3 grids in the output in 3 different containers(cl_gui_custom_container)...,Am able to handle the data changes done in the grid at the run time using event data_changed ...,
Now the requirement + problem is ...if i do the changes in all the grids ,,,,,and if i click(hotspot event) on any of the rows/records in any of the grids ...,, I need to be able to capture all the data changes done in all the other grids....,,
for example:-
if i modify some records in all the 3 grids ,,, and if I click any of the row in any of the grid at a time,,, all the changes done in all the grids should be captured.....( in simple words one click all changes )
I tried using data_changed event....., am only able to capture the changes of the grid on which i clicked ( ie.hotspot event) but not the changes which i have done on other grids.....Pls. help me out with the possibilities
Hope am clear..
Thanks
JohnHi friend,
METHOD handle_user_command.
CASE e_ucomm.
WHEN 'UPDATE'.
CALL METHOD r_grid->get_selected_rows
IMPORTING
ET_INDEX_ROWS =
et_row_no = it_rows.
LOOP AT it_rows INTO wa_rows.
*****modify the first container data***********
endloop.
CALL METHOD r_grid1->get_selected_rows
IMPORTING
ET_INDEX_ROWS =
et_row_no = it_rows1.
LOOP AT it_rows1 INTO wa_rows1.
*****modify the second container data***********
endloop.
CALL METHOD r_grid1->get_selected_rows
IMPORTING
ET_INDEX_ROWS =
et_row_no = it_rows2.
LOOP AT it_rows2 INTO wa_rows2.
*****modify the third container data***********
endloop.
endcase.
Now we can create three container and three different grid class object but we are using same method.
UPDATE buttton is common to all three containers.
But one important point when u change the records in container we must select the rows then only selected rows r come to the internal table otherwise it is not come.
CREATE OBJECT r_container
EXPORTING
container_name = 'CONTAINER_1'
CREATE OBJECT r_container2
EXPORTING
container_name = 'CONTAINER_2'
CREATE OBJECT r_container3
EXPORTING
container_name = 'CONTAINER_3'
CREATE OBJECT r_grid
EXPORTING
i_parent = r_container
CREATE OBJECT r_grid1
EXPORTING
i_parent = r_container2
CREATE OBJECT r_grid2
EXPORTING
i_parent = r_container3
NOW WE CAN CALL THE METHOD.
CREATE OBJECT event_receiver1.
SET HANDLER event_receiver1->handle_before_user_command FOR r_grid.
CREATE OBJECT event_receiver1.
SET HANDLER event_receiver1->handle_before_user_command FOR r_grid2.
CREATE OBJECT event_receiver1.
SET HANDLER event_receiver1->handle_before_user_command FOR r_grid3
I thing it should be possible.But u must remeber u must select the records when u modifie in three containersBUT UPDATE button is common to all three containers.
Regards,
MURALII -
Create simple ALV using Classes
hi all,
How to create a ALV report using Classes....?
any links or feedback will be appreciated.
Thanks in Advance.Check this Sample code using Docking container. In case of docking container no need of custom container required on screen.
REPORT ztest_oo_a.
DATA: it_flight TYPE sflight_tab1.
DATA: dock TYPE REF TO cl_gui_docking_container,
grid TYPE REF TO cl_gui_alv_grid.
SELECT *
FROM sflight
INTO TABLE it_flight
UP TO 20 ROWS.
CALL SCREEN 100.
*& Module STATUS_0100 OUTPUT
* text
MODULE status_0100 OUTPUT.
SET PF-STATUS 'SATR'.
CREATE OBJECT dock
EXPORTING
repid = sy-repid
dynnr = '100'
extension = '1500'
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
create_error = 3
lifetime_error = 4
lifetime_dynpro_dynpro_link = 5
OTHERS = 6
IF sy-subrc ne 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
CREATE OBJECT grid EXPORTING i_parent = dock.
CALL METHOD grid->set_table_for_first_display
EXPORTING
i_structure_name = 'SFLIGHT'
CHANGING
it_outtab = it_flight
EXCEPTIONS
invalid_parameter_combination = 1
program_error = 2
too_many_lines = 3
OTHERS = 4.
IF sy-subrc ne 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDMODULE. " STATUS_0100 OUTPUT
*& Module USER_COMMAND_0100 INPUT
* text
MODULE user_command_0100 INPUT.
CASE sy-ucomm.
WHEN 'BACK'.
LEAVE TO SCREEN 0.
ENDCASE.
ENDMODULE. " USER_COMMAND_0100 INPUT
Flow Logic
PROCESS BEFORE OUTPUT.
MODULE STATUS_0100.
PROCESS AFTER INPUT.
MODULE USER_COMMAND_0100. -
Disablig Sorting functinoality in ALV using Classes
Hi,
How can I disable the ALV sorting functionality using classes? I disabled the buttons on the ALV. But when I select a column and press right click, the sorting functionality is available. How can I disable the right click functionality in alv.
Thanks in advance.
Regards,
Suvan.Hi Sridhar,
Here is the requested code:
<u><i><b>PBO:</b></i></u>
gs_LAYOUT-SGL_CLK_HD = 'X'.
CALL METHOD grid_ref->set_table_for_first_display
EXPORTING
i_structure_name = 'SPFLI'
is_variant = grid_layout
i_save = 'U'
IS_LAYOUT = gs_layout
IT_TOOLBAR_EXCLUDING = lt_exclude[]
CHANGING
it_outtab = t_spfli[]
EXCEPTIONS
invalid_parameter_combination = 1
program_error = 2
too_many_lines = 3
OTHERS = 4
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
CREATE OBJECT event_receiver.
SET HANDLER event_receiver->handle_context
FOR grid_ref.
<u><i><b>
Class Definition:</b></i></u>
CLASS my_receiver DEFINITION.
PUBLIC SECTION.
METHODS:
handle_context for event context_menu_request
of cl_gui_alv_grid importing e_object.
endclass.
<u>
<i><b>Method Implementation:</b></i></u>
method handle_right_click.
data:
t_fcode_list type UI_FUNCTIONS.
if t_fcode_list is initial.
append CL_GUI_ALV_GRID=>MC_FC_SORT_ASC
TO T_FCODE_LIST.
append CL_GUI_ALV_GRID=>MC_FC_SORT_DSC
TO T_FCODE_LIST.
endif.
CALL METHOD OBJ_CT->HIDE_FUNCTIONS
EXPORTING
FCODES = t_fcode_list.
call method cl_gui_cfw=>flush.
endmethod.
Thanks,
Suvan.
Maybe you are looking for
-
IP address on MP keeps resetting
*H/W Involved:* '06 MP (connected to an Airport Express via Ethernet. APX is set up as remote) '08 MBP '09 MBP '09 Airport Extreme (dual band model, set up with independent dual bands, DCHP) OS: 10.6.2 Problem: periodically my MP will display 2 messa
-
How to integrate multiple applications for single project as single appl
Hi, I'm struggling to find out about that how to combine all the applications developed by my team members. We all created each application having many pages, how to combine all this pages to create as a single appl. Can anyone please tell me how to
-
How to create a Tray dynamically
Hi All I have tried to develop a method where I can create a tray dynamically. I have embedded this code in the method WDDOINIT of my View called 'MAIN_VIEW'. My longer term plan is to create x number of trays where x is dictated by the number of
-
Any one pls send me documentation on blocked and hierachi alv with example
hi experts, any one pls send me documentation on blocked and hierachi alv with example rewad points.........
-
How to run Excel Macros using JDBC-ODBC
Hi, I want to run the excel macros in the excel file, after I connected to excel file, using JDBC-ODBC bridge. How macros treated here? Help needed please.......... - Ramesh