Creating layouts in ALV report
Hi all,
I have created a report when a user creates a layout in the report it should save the variant(layout) and display in the selection-screen with alv_variant and search help.Its working properly.
But I have to create different layouts like the following:
Layout with sort and subtotals,
layout with sort and filter conditions like that.
Can anybody help me regarding this matter.
with regards
chandu
Sai,
Here is a little sample program which shows you how to recall saved ALV Layouts. It requires the user to run the report, create their own variants, and this program allwos them to recall it from the selection screen.
You can create gobal layouts (for your sorts, and totals) which canbe accessed by any user.
Hope this helps.
Cheers,
Pat.
*& Report ZPATS_ALV *
REPORT zpats_alv .
TABLES: kna1.
TYPE-POOLS: kkblo.
* structures *
DATA: st_fieldcat TYPE slis_fieldcat_alv.
DATA: st_variant1 LIKE disvariant.
DATA: st_variant2 LIKE disvariant.
* internal tables *
DATA: BEGIN OF tbl_kna1 OCCURS 0,
kunnr LIKE kna1-kunnr,
name1 LIKE kna1-name1,
stras LIKE kna1-stras,
telf1 LIKE kna1-telf1,
ort01 LIKE kna1-ort01,
pstlz LIKE kna1-pstlz,
sortl LIKE kna1-sortl,
ernam LIKE kna1-ernam,
spras LIKE kna1-spras,
END OF tbl_kna1.
DATA: tbl_fieldcat TYPE slis_t_fieldcat_alv.
* global variables *
DATA: fieldname(30) TYPE c.
DATA: variant_exit(1) TYPE c,
variant_save(1) TYPE c,
variant_def(1) TYPE c.
* Seelction Screen
PARAMETERS: p_vari LIKE disvariant-variant.
* Initialization Event
INITIALIZATION.
PERFORM variant_init USING st_variant1.
st_variant2 = st_variant1.
CALL FUNCTION 'REUSE_ALV_VARIANT_DEFAULT_GET'
EXPORTING
i_save = 'A'
CHANGING
cs_variant = st_variant2
EXCEPTIONS
not_found = 2.
IF sy-subrc = 0.
p_vari = st_variant2-variant.
ENDIF.
* At Selection Screen On Value Request
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_vari.
PERFORM f4_for_variant.
* Start of Selection Event
START-OF-SELECTION.
SELECT kunnr name1 stras telf1 ort01 pstlz sortl ernam spras
INTO CORRESPONDING FIELDS OF TABLE tbl_kna1
FROM kna1.
* End of Selection Event
END-OF-SELECTION.
PERFORM get_fieldcat.
PERFORM create_report.
*& Form get_fieldcat
* text
* --> p1 text
* <-- p2 text
FORM get_fieldcat.
PERFORM write_fieldcat USING 'KUNNR' 'X' 1.
PERFORM write_fieldcat USING 'NAME1' 'X' 2.
PERFORM write_fieldcat USING 'STRAS' ' ' 3.
PERFORM write_fieldcat USING 'TELF1' ' ' 4.
PERFORM write_fieldcat USING 'ORT01' ' ' 5.
PERFORM write_fieldcat USING 'PSTLZ' ' ' 6.
PERFORM write_fieldcat USING 'SORTL' ' ' 7.
PERFORM write_fieldcat USING 'ERNAM' ' ' 8.
PERFORM write_fieldcat USING 'SPRAS' ' ' 9.
ENDFORM. " get_fieldcat
*& Form write_fieldcat
* text
* -->P_0060 text
* -->P_0061 text
* -->P_0062 text
* -->P_0063 text
* -->P_1 text
FORM write_fieldcat USING name
key
pos.
st_fieldcat-fieldname = name.
st_fieldcat-tabname = 'TBL_KNA1'.
st_fieldcat-ref_tabname = 'KNA1'.
st_fieldcat-key = key.
st_fieldcat-col_pos = pos.
IF name = 'PSTLZ'.
st_fieldcat-row_pos = '2'.
ENDIF.
APPEND st_fieldcat TO tbl_fieldcat.
CLEAR st_fieldcat.
ENDFORM. " write_fieldcat
*& Form create_report
* text
* --> p1 text
* <-- p2 text
FORM create_report.
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
i_interface_check = ' '
i_callback_program = 'ZPATS_ALV'
i_callback_user_command = 'USER_COMMANDS'
it_fieldcat = tbl_fieldcat
i_default = 'X'
i_save = 'A'
is_variant = st_variant2
TABLES
t_outtab = tbl_kna1
EXCEPTIONS
program_error = 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.
ENDFORM. " create_report
*& Form USER_COMMANDS
* text
* --> p1 text
* <-- p2 text
FORM user_commands USING syst-ucomm LIKE syst-ucomm
selfield TYPE slis_selfield.
CASE syst-ucomm.
WHEN '&IC1'.
READ TABLE tbl_kna1 INDEX selfield-tabindex.
SET PARAMETER ID 'KUN' FIELD tbl_kna1-kunnr.
CALL TRANSACTION 'XD03' AND SKIP FIRST SCREEN.
WHEN OTHERS.
ENDCASE.
ENDFORM. " USER_COMMANDS
*& Form VARIANT_INIT
FORM variant_init USING g_variant LIKE disvariant.
* Initialise the Variant Structure
CLEAR g_variant.
g_variant-report = sy-repid.
ENDFORM. " VARIANT_INIT
*& Form f4_for_variant
FORM f4_for_variant.
CLEAR st_variant1.
st_variant1-report = sy-repid.
CALL FUNCTION 'REUSE_ALV_VARIANT_F4'
EXPORTING
is_variant = st_variant1
i_save = 'A'
IMPORTING
e_exit = variant_exit
es_variant = st_variant2.
IF variant_exit = space.
p_vari = st_variant2-variant.
ENDIF.
ENDFORM. " f4_for_variant
Similar Messages
-
Create a Procedural ALV Report with editable fields and save the changes
Hi,
I am new to ABAP. I have created a Procedural ALV Report with 3 fields. I want to make 2 fields editable. When executed, if the fields are modified, I want to save the changes. All this I want to do without using OO concepts. Please help . Also, I checked out the forum and also the examples
BCALV_TEST_GRID_EDIT_01
BCALV_TEST_GRID_EDIT_02
BCALV_TEST_GRID_EDIT_04_FORMS
BCALV_TEST_GRID_EDITABLE
BCALV_EDIT_01
BCALV_EDIT_02
BCALV_EDIT_03
BCALV_EDIT_04
BCALV_EDIT_05
BCALV_EDIT_06
BCALV_EDIT_07
BCALV_EDIT_08
BCALV_FULLSCREEN_GRID_EDIT
But all these are using OO Concepts.
Please help.
Regards,
SmruthiTABLES: ekko.
TYPE-POOLS: slis. "ALV Declarations
*Data Declaration
TYPES: BEGIN OF t_ekko,
ebeln TYPE ekpo-ebeln,
ebelp TYPE ekpo-ebelp,
statu TYPE ekpo-statu,
aedat TYPE ekpo-aedat,
matnr TYPE ekpo-matnr,
menge TYPE ekpo-menge,
meins TYPE ekpo-meins,
netpr TYPE ekpo-netpr,
peinh TYPE ekpo-peinh,
line_color(4) TYPE c, "Used to store row color attributes
END OF t_ekko.
DATA: it_ekko TYPE STANDARD TABLE OF t_ekko INITIAL SIZE 0,
wa_ekko TYPE t_ekko.
*ALV data declarations
DATA: fieldcatalog TYPE slis_t_fieldcat_alv WITH HEADER LINE,
gd_tab_group TYPE slis_t_sp_group_alv,
gd_layout TYPE slis_layout_alv,
gd_repid LIKE sy-repid.
START-OF-SELECTION.
PERFORM data_retrieval.
PERFORM build_fieldcatalog.
PERFORM build_layout.
PERFORM display_alv_report.
*& Form BUILD_FIELDCATALOG
Build Fieldcatalog for ALV Report
FORM build_fieldcatalog.
fieldcatalog-fieldname = 'EBELN'.
fieldcatalog-seltext_m = 'Purchase Order'.
fieldcatalog-col_pos = 0.
fieldcatalog-outputlen = 10.
fieldcatalog-emphasize = 'X'.
fieldcatalog-key = 'X'.
fieldcatalog-do_sum = 'X'.
fieldcatalog-no_zero = 'X'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'EBELP'.
fieldcatalog-seltext_m = 'PO Item'.
fieldcatalog-col_pos = 1.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'STATU'.
fieldcatalog-seltext_m = 'Status'.
fieldcatalog-col_pos = 2.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'AEDAT'.
fieldcatalog-seltext_m = 'Item change date'.
fieldcatalog-col_pos = 3.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'MATNR'.
fieldcatalog-seltext_m = 'Material Number'.
fieldcatalog-col_pos = 4.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'MENGE'.
fieldcatalog-seltext_m = 'PO quantity'.
fieldcatalog-edit = 'X'
fieldcatalog-col_pos = 5.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'MEINS'.
fieldcatalog-seltext_m = 'Order Unit'.
fieldcatalog-col_pos = 6.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'NETPR'.
fieldcatalog-seltext_m = 'Net Price'.
fieldcatalog-col_pos = 7.
fieldcatalog-outputlen = 15.
fieldcatalog-datatype = 'CURR'.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
fieldcatalog-fieldname = 'PEINH'.
fieldcatalog-seltext_m = 'Price Unit'.
fieldcatalog-col_pos = 8.
APPEND fieldcatalog TO fieldcatalog.
CLEAR fieldcatalog.
ENDFORM. " BUILD_FIELDCATALOG
*& Form BUILD_LAYOUT
Build layout for ALV grid report
FORM build_layout.
gd_layout-no_input = 'X'.
gd_layout-colwidth_optimize = 'X'.
gd_layout-totals_text = 'Totals'(201).
gd_layout-info_fieldname = 'LINE_COLOR'.
ENDFORM. " BUILD_LAYOUT
*& Form DISPLAY_ALV_REPORT
Display report using ALV grid
FORM display_alv_report.
gd_repid = sy-repid.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = gd_repid
i_callback_pf_status_set = 'STATUS'
i_callback_top_of_page = 'TOP-OF-PAGE'
i_callback_user_command = 'USER_COMMAND'
i_grid_title = outtext
is_layout = gd_layout
it_fieldcat = fieldcatalog[]
it_special_groups = gd_tabgroup
IT_EVENTS = GT_XEVENTS
i_save = 'X'
is_variant = z_template
TABLES
t_outtab = it_ekko
EXCEPTIONS
program_error = 1
OTHERS = 2.
ENDFORM. " DISPLAY_ALV_REPORT
*& Form DATA_RETRIEVAL
Retrieve data form EKPO table and populate itab it_ekko
FORM data_retrieval.
DATA: ld_color(1) TYPE c.
SELECT ebeln ebelp statu aedat matnr menge meins netpr peinh
UP TO 10 ROWS
FROM ekpo
INTO TABLE it_ekko.
LOOP AT it_ekko INTO wa_ekko.
ld_color = ld_color + 1.
IF ld_color = 8.
ld_color = 1.
ENDIF.
CONCATENATE 'C' ld_color '10' INTO wa_ekko-line_color.
MODIFY it_ekko FROM wa_ekko.
ENDLOOP.
ENDFORM. " DATA_RETRIEVAL
FORM top-of-page *
FORM top-of-page.
WRITE:/ 'This is First Line of the Page'.
ENDFORM.
FORM status *
FORM status USING rt_extab TYPE slis_t_extab. .
SET PF-STATUS 'ALV'.
ENDFORM.
FORM USER_COMMAND *
--> RF_UCOMM *
--> RS *
FORM user_command USING rf_ucomm LIKE sy-ucomm
rs TYPE slis_selfield.
DATA ref1 TYPE REF TO cl_gui_alv_grid.
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
IMPORTING
e_grid = ref1.
CALL METHOD ref1->check_changed_data.
CASE rf_ucomm.
when 'SAVE'.
get all the modified entries and store them in an internal table and udpate them in to the required transaction or your custom table.
endcase.
endform.
ENDFORM.
here u need to 2 performs for PF status and USER_COMMAND in the ALV parameters.
create a custom PF status and create push buttons and assign your ok codes in your PF status.
if the field has to be edited in the ALV then pass EDIT = 'X' for that field in the fieldcatlog preparation.
Hope this will help you.
Regards,
phani. -
How to create an interactive alv report in which some parameters
hi all,
i want to create an interactive alv report in which some parameters in selection screen
& when fill those & press f8 then an alv list display will show & when user double click on
any row then those contents get shown in header details of module pool program which call by
tcode mentioned in same alv .And same an interactive alv report used for change & display.
please help me give me some code same as required above.
ketan
abap consultant.
Edited by: ketan pande on Feb 14, 2009 6:09 AMHi Ketan,
Please find Sample Code.
TYPE-POOLS:slis.
DATA:
w_carrid TYPE scarr-carrid,
it_fieldcat TYPE slis_t_fieldcat_alv,
fs_fieldcat LIKE LINE OF it_fieldcat,
it_eventcat TYPE slis_t_event,
fs_eventcat LIKE LINE OF it_fieldcat.
DATA:
t_spfli LIKE STANDARD TABLE OF spfli,
fs_spfli LIKE LINE OF t_spfli,
t_sflight LIKE STANDARD TABLE OF sflight,
fs_sflight LIKE LINE OF t_sflight.
SELECT-OPTIONS:
s_carrid FOR w_carrid.
START-OF-SELECTION.
SELECT * FROM spfli INTO TABLE t_spfli WHERE carrid IN s_carrid.
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
i_callback_program = sy-repid
i_callback_user_command = 'PICK'
i_structure_name = 'SPFLI'
TABLES
t_outtab = t_spfli
EXCEPTIONS
program_error = 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.
*& Form PICK
FORM pick USING command LIKE sy-ucomm
selfield TYPE slis_selfield.
READ TABLE t_spfli INTO fs_spfli INDEX selfield-tabindex.
CASE command.
WHEN '&IC1'.
SELECT * FROM sflight
INTO TABLE t_sflight
WHERE carrid = fs_spfli-carrid
and connid = fs_spfli-connid.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_program_name = sy-repid
I_INTERNAL_TABNAME =
i_structure_name = 'SFLIGHT'
I_CLIENT_NEVER_DISPLAY = 'X'
I_INCLNAME =
I_BYPASSING_BUFFER =
I_BUFFER_ACTIVE =
CHANGING
ct_fieldcat = it_fieldcat
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3
IF sy-subrc <> 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_LIST_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = ' '
I_BYPASSING_BUFFER =
I_BUFFER_ACTIVE = ' '
i_callback_program = sy-repid
I_CALLBACK_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND = ' '
I_STRUCTURE_NAME =
IS_LAYOUT =
it_fieldcat = it_fieldcat
IT_EXCLUDING =
IT_SPECIAL_GROUPS =
IT_SORT =
IT_FILTER =
IS_SEL_HIDE =
I_DEFAULT = 'X'
I_SAVE = ' '
IS_VARIANT =
it_events = it_eventcat
IT_EVENT_EXIT =
IS_PRINT =
IS_REPREP_ID =
I_SCREEN_START_COLUMN = 0
I_SCREEN_START_LINE = 0
I_SCREEN_END_COLUMN = 0
I_SCREEN_END_LINE = 0
IR_SALV_LIST_ADAPTER =
IT_EXCEPT_QINFO =
I_SUPPRESS_EMPTY_DATA = ABAP_FALSE
IMPORTING
E_EXIT_CAUSED_BY_CALLER =
ES_EXIT_CAUSED_BY_USER =
TABLES
t_outtab = t_sflight
EXCEPTIONS
program_error = 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.
ENDCASE.
ENDFORM. "pick
Hope this will Be Helpful
Thanks
Kalyan -
Hi everyone, I have created an ALV report, and now I've been ask to upgrade this report putting a parameter in the selection screen where the user can select a layout, and then execute the report so when the data is display appear as the layout already chosen by the user.
Can anyone tell me how to add this functionality to my alv report.
Thanks in advanced,
FidelHI Fidel,
Here is example program for List and Grid
whichever u choose that report format will be displayed
check this once.
*& Report ZLAXMI_ALVEXER2 *
*& NAME : VENKATA LAXMI *
*& DATE : 24-02-2006 *
*& PROGRAM TO PRINT THE REPORT IN ALV LIST FORMAT AND GRID FORMAT *
*& WITH TRAFFIC LIGHTS *
REPORT ZLAXMI_ALVEXER2 MESSAGE-ID ZZ .
*& TABLES DECLARATION *
TABLES: VBAK.
*& TYPE POOLS DECLARATION *
TYPE-POOLS: SLIS.
*& INTERNAL TABLE DECLARATION *
DATA: BEGIN OF ITAB OCCURS 0,
ICON TYPE ICON-ID,
VBELN LIKE VBAK-VBELN,
AUDAT LIKE VBAK-AUDAT,
VBTYP LIKE VBAK-VBTYP,
AUART LIKE VBAK-AUART,
AUGRU LIKE VBAK-AUGRU,
NETWR LIKE VBAK-NETWR,
WAERK LIKE VBAK-WAERK,
END OF ITAB.
*INTERNAL TABLE FOR FIELD CATALOG
DATA: WA_FIELDCAT TYPE SLIS_FIELDCAT_ALV,
IT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV.
IT_FIELDCAT TYPE STANDARD TABLE OF SLIS_FIELDCAT_ALV
WITH HEADER LINE,
*INTERNAL TABLE FOR EVENTS
DATA: IT_EVENT TYPE SLIS_T_EVENT,
WA_EVENT TYPE SLIS_ALV_EVENT,
*INTERNAL TABLE FOR SORTING
IT_SORT TYPE SLIS_T_SORTINFO_ALV,
WA_SORT TYPE SLIS_SORTINFO_ALV,
*INTERNAL TABLE FOR LAYOUT
WA_LAYOUT TYPE SLIS_LAYOUT_ALV.
*& VARIABLE DECLARATION *
DATA : V_REPID TYPE SY-REPID,
V_PAGNO(4) TYPE N,
V_DATE(8) TYPE C.
*& CONSTANTS *
CONSTANTS: C_X TYPE C VALUE 'X'.
*& SELECTION SCREEN *
SELECTION-SCREEN: BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS: S_VBELN FOR VBAK-VBELN,
S_VBTYP FOR VBAK-VBTYP DEFAULT 'C'.
SELECTION-SCREEN: END OF BLOCK B1.
SELECTION-SCREEN: BEGIN OF BLOCK B2 WITH FRAME TITLE TEXT-002.
*SELECTION-SCREEN : BEGIN OF LINE.
*SELECTION-SCREEN COMMENT 1(20) TEXT-003.
PARAMETERS: P_LIST RADIOBUTTON GROUP RAD1 DEFAULT 'X'.
*SELECTION-SCREEN : END OF LINE.
*SELECTION-SCREEN : BEGIN OF LINE.
*SELECTION-SCREEN COMMENT 1(20) TEXT-004.
PARAMETERS: P_GRID RADIOBUTTON GROUP RAD1.
*SELECTION-SCREEN : END OF LINE.
SELECTION-SCREEN: END OF BLOCK B2.
AT SELECTION-SCREEN.
PERFORM VALIDATE_SCREEN.
*& START OF SELECTION *
START-OF-SELECTION.
CLEAR: ITAB, ITAB[].
V_REPID = SY-REPID.
PERFORM GET_DATA.
PERFORM DISPLAY_DATA.
*& END OF SELECTION *
END-OF-SELECTION.
*--DO ALV Process
V_REPID = SY-REPID.
*--Sort the Output Fields
PERFORM SORT_FIELDS.
*--Build Field catalog for the Output fields
PERFORM BUILD_FIELDCAT.
*--Set the Layout for ALV
PERFORM SET_LAYOUT.
*& Form GET_DATA
text
TO GET THE DATA FROM TABLES INTO ITAB
FORM GET_DATA .
SELECT VBELN
AUDAT
VBTYP
AUART
AUGRU
NETWR
WAERK
INTO CORRESPONDING FIELDS OF TABLE ITAB
FROM VBAK
WHERE VBELN IN S_VBELN AND
AUDAT > '04.04.2005'
AND NETWR > 0.
LOOP AT ITAB.
IF ITAB-NETWR < 10000.
ITAB-ICON = '@08@'.
ELSEIF ITAB-NETWR > 10000 AND ITAB-NETWR < 100000.
ITAB-ICON = '@09@'.
ELSEIF ITAB-NETWR > 100000.
ITAB-ICON = '@0A@'.
ENDIF.
MODIFY ITAB INDEX SY-TABIX.
ENDLOOP.
ENDFORM. " GET_DATA
*& Form sort_fields
FORM SORT_FIELDS .
CLEAR WA_SORT.
WA_SORT-FIELDNAME = 'VBTYP'.
WA_SORT-SPOS = '1'.
WA_SORT-UP = 'X'.
APPEND WA_SORT TO IT_SORT.
CLEAR WA_SORT.
WA_SORT-FIELDNAME = 'NETWR'.
WA_SORT-SPOS = '2'.
WA_SORT-UP = 'X'.
WA_SORT-SUBTOT = 'X'.
APPEND WA_SORT TO IT_SORT.
ENDFORM. " sort_fields
*& Form build_fieldcat
*FORM BUILD_FIELDCAT .
IT_FIELDCAT-COL_POS = '1'.
IT_FIELDCAT-FIELDNAME = 'ICON'.
IT_FIELDCAT-KEY = 'X'.
IT_FIELDCAT-OUTPUTLEN = '10'.
IT_FIELDCAT-SELTEXT_L = 'LIGHT'.
APPEND IT_FIELDCAT.
CLEAR IT_FIELDCAT.
IT_FIELDCAT-COL_POS = '2'.
IT_FIELDCAT-FIELDNAME = 'VBELN'.
IT_FIELDCAT-KEY = 'X'.
IT_FIELDCAT-OUTPUTLEN = '10'.
IT_FIELDCAT-SELTEXT_L = 'SALES DOC NUMBER'(009).
APPEND IT_FIELDCAT.
CLEAR IT_FIELDCAT.
IT_FIELDCAT-COL_POS = '3'.
IT_FIELDCAT-FIELDNAME = 'AUDAT'.
IT_FIELDCAT-KEY = 'X'.
IT_FIELDCAT-OUTPUTLEN = '4'.
IT_FIELDCAT-SELTEXT_L = 'DOCUMENT DATE'(010).
APPEND IT_FIELDCAT.
CLEAR IT_FIELDCAT.
IT_FIELDCAT-COL_POS = '4'.
IT_FIELDCAT-FIELDNAME = 'VBTYP'.
IT_FIELDCAT-KEY = 'X'.
IT_FIELDCAT-OUTPUTLEN = '4'.
IT_FIELDCAT-SELTEXT_L = 'CATEGORY'(011).
APPEND IT_FIELDCAT.
CLEAR IT_FIELDCAT.
IT_FIELDCAT-COL_POS = '5'.
IT_FIELDCAT-FIELDNAME = 'AUART'.
IT_FIELDCAT-OUTPUTLEN = '4'.
IT_FIELDCAT-SELTEXT_L = 'DOCUMENT TYPE'(012).
APPEND IT_FIELDCAT.
CLEAR IT_FIELDCAT.
IT_FIELDCAT-COL_POS = '6'.
IT_FIELDCAT-FIELDNAME = 'AUGRU'.
IT_FIELDCAT-OUTPUTLEN = '12'.
IT_FIELDCAT-SELTEXT_L = 'Order reason'(013).
APPEND IT_FIELDCAT.
CLEAR IT_FIELDCAT.
IT_FIELDCAT-COL_POS = '7'.
IT_FIELDCAT-FIELDNAME = 'NETWR'.
IT_FIELDCAT-OUTPUTLEN = '12'.
IT_FIELDCAT-SELTEXT_L = 'NET VALUE'(014).
APPEND IT_FIELDCAT.
CLEAR IT_FIELDCAT.
IT_FIELDCAT-COL_POS = '8'.
IT_FIELDCAT-FIELDNAME = 'WAERK'.
IT_FIELDCAT-OUTPUTLEN = '12'.
IT_FIELDCAT-SELTEXT_L = 'SD DOC CURR'(015).
APPEND IT_FIELDCAT.
CLEAR IT_FIELDCAT.
*ENDFORM. " build_fieldcat
*& Form set_layout
FORM SET_LAYOUT .
IF P_LIST = C_X .
WA_LAYOUT-WINDOW_TITLEBAR = 'LIST DISPLAY'(016).
WA_LAYOUT-ZEBRA = 'X'.
*-- ALV LIST DISPLAY
PERFORM LIST_DISPLAY TABLES ITAB.
*-- ALV GRID DISPLAY
ELSEIF P_GRID = C_X.
WA_LAYOUT-WINDOW_TITLEBAR = 'GRID DISPLAY'(017).
WA_LAYOUT-ZEBRA = 'X'.
PERFORM GRID_DISPLAY TABLES ITAB.
ENDIF.
ENDFORM. " set_layout
*& Form list_display
FORM LIST_DISPLAY TABLES P_ITAB .
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = V_REPID
IS_LAYOUT = WA_LAYOUT
IT_FIELDCAT = IT_FIELDCAT[]
IT_SORT = IT_SORT[]
I_SAVE = 'U'
TABLES
T_OUTTAB = ITAB
EXCEPTIONS
PROGRAM_ERROR = 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.
ENDFORM. " list_display
*& Form GRID_DISPLAY
FORM GRID_DISPLAY TABLES P_ITAB .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = V_REPID
IS_LAYOUT = WA_LAYOUT
IT_FIELDCAT = IT_FIELDCAT[]
IT_SORT = IT_SORT[]
IT_EVENTS = IT_EVENT
TABLES
T_OUTTAB = ITAB
EXCEPTIONS
PROGRAM_ERROR = 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.
ENDFORM. " GRID_DISPLAY
*& Form VALIDATE_SCREEN
text
--> p1 text
<-- p2 text
FORM VALIDATE_SCREEN .
DATA: LV_VBELN LIKE VBAK-VBELN.
IF NOT S_VBELN IS INITIAL.
SELECT VBELN
INTO LV_VBELN
UP TO 1 ROWS
FROM VBAK
WHERE VBELN IN S_VBELN.
ENDSELECT.
IF SY-SUBRC <> 0.
MESSAGE E000 WITH 'INVALID SALES DOC'.
ENDIF.
ENDIF.
ENDFORM. " VALIDATE_SCREEN
*& Form display_data
text
--> p1 text
<-- p2 text
FORM DISPLAY_DATA .
DEFINE M_FIELDCAT.
ADD 1 TO WA_FIELDCAT-COL_POS.
WA_FIELDCAT-FIELDNAME = &1.
WA_FIELDCAT-REF_TABNAME = 'VBAK'.
WA_FIELDCAT-DO_SUM = &2.
WA_FIELDCAT-CFIELDNAME = &3.
APPEND WA_FIELDCAT TO IT_FIELDCAT.
END-OF-DEFINITION.
DATA:
ls_fieldcat TYPE slis_fieldcat_alv,
lt_fieldcat TYPE slis_t_fieldcat_alv.
m_fieldcat 'ICON' '' ''.
m_fieldcat 'VBELN' '' ''.
m_fieldcat 'AUDAT' '' ''.
m_fieldcat 'VBTYP' '' ''.
m_fieldcat 'AUART' '' ''.
m_fieldcat 'AUGRU' '' ''.
m_fieldcat 'NETWR' 'C' 'WAERK'.
m_fieldcat 'WAERK' '' ''.
ENDFORM. " display_data
Regards,
Laxmi -
How to create Status in ALV reports?
Hi experts,
I need to create a status in a alv report. but i am not getting how to create it. i have declared a variable type slis_formname. and appended the events with it. now how to create the status in form.answers will be rewarded.
Thanks in advance,
RamanaHello Venkat,
Copy the standard pf status of the ALV in SE41 and do the following.
DATA: IT_EVENTS TYPE SLIS_T_EVENT,
WA_EVENTS LIKE LINE OF IT_EVENTS.
REFRESH: IT_EVENTS.
CLEAR: WA_EVENTS,IT_EVENTS.
WA_EVENTS-NAME = 'PF_STATUS_SET'.
WA_EVENTS-FORM = 'STATUS'.
APPEND WA_EVENTS TO IT_EVENTS .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = IT_VARIANT-REPORT
I_CALLBACK_TOP_OF_PAGE = 'TOP_OF_PAGE'
I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
IT_FIELDCAT = IT_FIELDCAT
I_SAVE = 'A'
IS_VARIANT = IT_VARIANT
IT_SORT = IT_SORT
IT_EVENTS = IT_EVENTS
TABLES
T_OUTTAB = G_T_OUTTAB
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2.
FORM status *
FORM STATUS USING RT_EXTAB TYPE SLIS_T_EXTAB.
SET PF-STATUS 'STANDARD' EXCLUDING RT_EXTAB.
ENDFORM.
If useful reward.
Vasanth -
ABAP webdynpro :Creating column in alv report
I have generated a dynamic alv report when ever unwanted columns appear i deleted column using IF_SALV_WD_COLUMN_SETTINGS~DELETE_COLUMN.
some times I want to create columns in alv .
how to do that ?code sample will be much usefull.Hi,
the same interface you used to delete has the create_column method.
IF_SALV_WD_COLUMN_SETTINGS~CREATE_COLUMN( id = 'id of the column' ).
" create the cell_editor.
data:
lr_text type ref to cl_salv_wd_uie_text_view.
create object lr_text.
lr_text->set_text_fieldname( ls_fields-fieldname ).
lr_column->set_cell_editor( lr_text ). -
Creating a simple ALV report based on join condition
Dear All
SAP Version: ECC6 EHP7
I wan to create simple ALV report based on join condition. can anyone provide me the complete steps to create this report.
Regards,Hi Syed,
Please check the link,
ALV report - Joining 2 tables
Regards,
Prakash. -
Creating spool for ALV report in background
Hi,
Can we create a spool request if we run in background/forgorund? please help me..
I am very much thankful for your quick responses.Yes we can create it. Execute the report in background using SM36 and then u can view the output using SM35 or the spool request number and tcode SP01.
I hope it helps.
Best Regards,
Vibha
*Please mark all the helpful answers -
Display Layouts for ALV reports
Client is on 4.7 and it appears that the list of display layouts is out of wack for program RPTBAL00. When choosing a particular layout an error messages returns with "template not found in BDS" then the program crashes. Other layouts work as expected. Any ideas on what could be causing the problem?
There is an OSS Note associated with this. If I am not mistaken it is <b>696069</b> and two excel files(one of them is sap_mm.xls) have to be imported in client 00.
Also check note <b>414920</b>.
Please check service.sap.com and let us know if you did find any solution for this.
Regards,
Subramanian V.
Message was edited by: Subramanian Venkateswaran -
Re: Regarding ALV report
Hi experts,
Please help me out as i am new to abap.My problem is how to create a an ALV Report that will show the details of order like order no, order date, customer, product code & description, order quantity and value along with the details of dispatch of those orders like invoice no, invoice date, invoice quantity and pending order quantity.
Replies will be highly appreciated.
Thanks,
PankajHi,
Have a look on the following ALV Grid report.Later find the fields and tables for your requirement.
Use that fields and tables in this report.
Follow the below step for uploading the image file:
Steps for uploading Logo :-:
1. Goto the transaction OAER
2. Enter the class name as 'PICTURES'
3. Enter the class type as 'OT'
4. Enter the object key as the name of the logo(e.g. tripodsm.gif) you wish to give
5. Execute
6. Then in the new screen select Standard doc. types in bottom window
Click on the Screen icon
Now, it will ask for the file path where you have to upload the logo
7. Now you can use this logo in REUSE_ALV_COMMENTARY_WRITE
call function 'REUSE_ALV_COMMENTARY_WRITE'
exporting
it_list_commentary = i_header
i_logo = 'tripodsm.gif'.
TABLES VBAK.
TYPE-POOLS SLIS.
Data Declaration
TYPES: BEGIN OF T_VBAK,
VBELN TYPE VBAK-VBELN,
ERDAT TYPE VBAK-ERDAT,
ERNAM TYPE VBAK-ERNAM,
AUDAT TYPE VBAK-AUDAT,
VBTYP TYPE VBAK-VBTYP,
NETWR TYPE VBAK-NETWR,
VKORG TYPE VBAK-VKORG,
VKGRP TYPE VBAK-VKGRP,
LINE_COLOR(4) TYPE C,
END OF T_VBAK.
DATA: IT_VBAK TYPE STANDARD TABLE OF T_VBAK INITIAL SIZE 0,
WA_VBAK TYPE T_VBAK.
ALV Data Declaration
DATA: FLDCAT TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE,
GD_LAYOUT TYPE SLIS_LAYOUT_ALV,
GD_REPID TYPE SY-REPID.
START-OF-SELECTION.
PERFORM DATA_RETRIEVAL.
PERFORM BLD_FLDCAT.
PERFORM BLD_LAYOUT.
PERFORM DISPLAY_ALV_REPORT.
Build Field Catalog for ALV Report
FORM BLD_FLDCAT.
FLDCAT-FIELDNAME = 'VBELN'.
FLDCAT-SELTEXT_M = 'Sales Document'.
FLDCAT-COL_POS = 0.
*FLDCAT-EMPHASIZE = 'C411'.
FLDCAT-OUTPUTLEN = 20.
FLDCAT-KEY = 'X'.
APPEND FLDCAT TO FLDCAT.
CLEAR FLDCAT.
FLDCAT-FIELDNAME = 'ERDAT'.
FLDCAT-SELTEXT_L = 'Record Date created'.
FLDCAT-COL_POS = 1.
FLDCAT-KEY = 'X'.
APPEND FLDCAT TO FLDCAT.
CLEAR FLDCAT.
FLDCAT-FIELDNAME = 'ERNAM'.
FLDCAT-SELTEXT_L = 'Cteated Object Person Name'.
APPEND FLDCAT TO FLDCAT.
CLEAR FLDCAT.
FLDCAT-FIELDNAME = 'AUDAT'.
FLDCAT-SELTEXT_M = 'Document Date'.
FLDCAT-COL_POS = 3.
FLDCAT-EMPHASIZE = 'C110'.
APPEND FLDCAT TO FLDCAT.
CLEAR FLDCAT.
FLDCAT-FIELDNAME = 'VBTYP'.
FLDCAT-SELTEXT_L = 'SD Document category'.
FLDCAT-COL_POS = 4.
APPEND FLDCAT TO FLDCAT.
CLEAR FLDCAT.
FLDCAT-FIELDNAME = 'NETWR'.
FLDCAT-SELTEXT_L = 'Net Value of the SO in Document Currency'.
FLDCAT-COL_POS = 5.
FLDCAT-OUTPUTLEN = 60.
FLDCAT-DO_SUM = 'X'.
FLDCAT-DATATYPE = 'CURR'.
APPEND FLDCAT TO FLDCAT.
CLEAR FLDCAT.
FLDCAT-FIELDNAME = 'VKORG'.
FLDCAT-SELTEXT_L = 'Sales Organization'.
FLDCAT-COL_POS = 6.
APPEND FLDCAT TO FLDCAT.
CLEAR FLDCAT.
FLDCAT-FIELDNAME = 'VKGRP'.
FLDCAT-SELTEXT_M = 'Sales Group'.
FLDCAT-COL_POS = 7.
FLDCAT-EMPHASIZE = 'C801'.
APPEND FLDCAT TO FLDCAT.
CLEAR FLDCAT.
ENDFORM.
Build Layout for ALV Grid Report
FORM BLD_LAYOUT.
GD_LAYOUT-NO_INPUT = 'X'.
GD_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.
GD_LAYOUT-INFO_FIELDNAME = 'LINE_COLOR'.
GD_LAYOUT-WINDOW_TITLEBAR = 'GRID DISPLAY'.
GD_LAYOUT-CONFIRMATION_PROMPT = 'X'. This asks the confirmation
before leaving the screen.
ENDFORM.
Display report using ALV grid
FORM DISPLAY_ALV_REPORT.
GD_REPID = SY-REPID.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = GD_REPID
IS_LAYOUT = GD_LAYOUT
I_CALLBACK_TOP_OF_PAGE = 'TOP_OF_PAGE'
I_GRID_TITLE = 'SALES DOCUMENT HEADER'
IT_FIELDCAT = FLDCAT[]
I_SAVE = 'X'
TABLES
T_OUTTAB = IT_VBAK
EXCEPTIONS
PROGRAM_ERROR = 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.
ENDFORM.
Retrieve data from VBAK table and populate itab IT_VBAK
FORM DATA_RETRIEVAL.
DATA LD_COLOR(1) TYPE C.
SELECT VBELN ERDAT ERNAM AUDAT VBTYP NETWR VKORG
UP TO 20 ROWS
FROM VBAK
INTO TABLE IT_VBAK.
LOOP AT IT_VBAK INTO WA_VBAK.
LD_COLOR = LD_COLOR + 1.
IF LD_COLOR = 8.
LD_COLOR = 1.
ENDIF.
CONCATENATE 'C' LD_COLOR '10' INTO WA_VBAK-LINE_COLOR.
MODIFY IT_VBAK FROM WA_VBAK.
ENDLOOP.
ENDFORM.
FORM TOP_OF_PAGE.
DATA: T_HEADER TYPE SLIS_T_LISTHEADER,
W_HEADER TYPE SLIS_LISTHEADER.
W_HEADER-TYP = 'H'.
W_HEADER-INFO = 'WELCOME HEADER LIST'.
APPEND W_HEADER TO T_HEADER.
W_HEADER-TYP = 'S'.
W_HEADER-KEY = 'REPORT:'.
W_HEADER-INFO = SY-REPID.
APPEND W_HEADER TO T_HEADER.
W_HEADER-TYP = 'S'.
W_HEADER-KEY = 'DATE:'.
CONCATENATE SY-DATUM6(2) ' / ' SY-DATUM4(2) ' / ' SY-DATUM(4) INTO W_HEADER-INFO.
APPEND W_HEADER TO T_HEADER.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
IT_LIST_COMMENTARY = T_HEADER
I_LOGO = TRIPODSM.GIF.
ENDFORM.
Reward,if useful.
Thanks,
Chandu -
Authorization of alv report based on plants
I have created a new alv report for sale order statement.The problem is which can be seen in all plants
irespective of the user.Suppose our company has 5 palnt
Plant 1100 to 1500
The problem is suppose a user he has only rights in a prticular plant but he can see all the palnt sale order details
How can we authorize this particular alv report based on the plantsHello,
My assumption: You have Company Code(T001-BUKRS) in the selection-screen.
Plz check the code snippet below:
DATA:
IT_PLANT TYPE STANDARD TABLE OF WERKS,
WA_PLANT LIKE LINE OF IT_PLANT.
DATA:
IT_R_WERKS TYPE RANGE_T_WERKS_D,
R_WERKS TYPE RANGE_S_WERKS_D.
SELECT BWKEY INTO TABLE IT_PLANT
FROM T001K
WHERE BUKRS = '1000'. "--> Here you have to use your sel. scr. parameter
IF SY-SUBRC = 0.
SORT IT_PLANT BY WERKS.
ENDIF.
LOOP AT IT_PLANT INTO WA_PLANT.
* Check the authority for the plant
AUTHORITY-CHECK OBJECT 'M_MSEG_WMB'
ID 'ACTVT' FIELD '03'
ID 'WERKS' FIELD WA_PLANT-WERKS.
IF SY-SUBRC = 0.
R_WERKS-SIGN = 'I'.
R_WERKS-OPTION = 'EQ'.
R_WERKS-LOW = WA_PLANT-WERKS.
APPEND R_WERKS TO IT_R_WERKS.
CLEAR R_WERKS.
ENDIF.
ENDLOOP.
IF IT_R_WERKS IS NOT INITIAL.
"Select data using the Plants for which user is authorised
ELSE.
"User has no authority to display any Plant data
ENDIF.
Hope this is of some help to you.
BR,
Suhas
Edited by: Suhas Saha on Mar 18, 2009 10:18 AM -
Regarding Conversion of the Charecter field Into Lowercase in an ALV REPORT
HI ALL,
I have created an editable alv Report. In which i have a coloumn with charecter field where i can enter 64 charecters. when ever i have enter and moved to another Tab its converting into Capital Letters. I need to stop it conversion. Can any one suggest me Regarding It. I am Using the Docking Container and method set_table_for_first_display for displaying the Grid.
Please give some suggestion in order to control conversion of charecters.
Thanks in Advance.
NareshWhat Kind of Dataelement/Domain you are using? CHAR60? Then try TEXT60 f.e.
Maybe you check this out
http://help.sap.com/saphelp_erp2005/helpdata/DE/bf/3bd1369f2d280ee10000009b38f889/frameset.htm
and there the FC option lowercase..
Edited by: Mathias Maerker on Apr 23, 2009 2:14 PM -
Hi Experts,
I am new to ALV Reports, can any one provide some inputs on how to create an Interactive ALV Reports using OOPS Concept.
I am getting the data from SFLIGHT on first ALV and i want that when i single click any cell or row or any check box associated with the row i should get the corresponding booking details from table SBOOK.
Thanks
RaviHi dude,
Go through this Link: [http://www.sap-img.com/abap/an-interactive-alv-report.htm]
for more information search in SDN only..
Re: Interactive ALV Report Using Function...? -
Hi Friends,
I have created a Hierarchial ALV report using OOP concept (Class Builder). The output is OK but it is displaying the unwanted columns in the header part.
The code written is as follows.
=====================================================
REPORT ZMMSTKH.
DATA: G_ALV_TREE TYPE REF TO CL_GUI_ALV_TREE,
G_CUSTOM_CONTAINER TYPE REF TO CL_GUI_CUSTOM_CONTAINER.
DATA: GT_ZSD_BILLINFO TYPE ZSD_BILLINFO OCCURS 0, "Output-Table
OK_CODE LIKE SY-UCOMM,
SAVE_OK LIKE SY-UCOMM, "OK-Code
G_MAX TYPE I VALUE 255.
DATA CCONTAINER1.
DATA LS_FIELDCAT TYPE LVC_S_FCAT.
DATA GT_FIELDCAT_LVC TYPE LVC_S_FCAT OCCURS 0.
DATA IT_FIELDCATALOG TYPE LVC_S_FCAT OCCURS 0.
END-OF-SELECTION.
CALL SCREEN 100.
*& Module PBO OUTPUT
process before output
MODULE PBO OUTPUT.
SET PF-STATUS 'MAIN100'.
SET TITLEBAR 'MAINTITLE'.
IF G_ALV_TREE IS INITIAL.
PERFORM INIT_TREE.
CALL METHOD CL_GUI_CFW=>FLUSH
EXCEPTIONS
CNTL_SYSTEM_ERROR = 1
CNTL_ERROR = 2.
IF SY-SUBRC NE 0.
CALL FUNCTION 'POPUP_TO_INFORM'
EXPORTING
TITEL = 'Automation Queue failure'(801)
TXT1 = 'Internal error:'(802)
TXT2 = 'A method in the automation queue'(803)
TXT3 = 'caused a failure.'(804).
ENDIF.
ENDIF.
ENDMODULE. " PBO OUTPUT
*& Module PAI INPUT
process after input
MODULE PAI INPUT.
SAVE_OK = OK_CODE.
CLEAR OK_CODE.
CASE SAVE_OK.
WHEN 'EXIT' OR 'BACK' OR 'CANC'.
PERFORM EXIT_PROGRAM.
WHEN OTHERS.
CALL METHOD CL_GUI_CFW=>DISPATCH.
ENDCASE.
CALL METHOD CL_GUI_CFW=>FLUSH.
ENDMODULE. " PAI INPUT
*& Form init_tree
text
--> p1 text
<-- p2 text
FORM INIT_TREE.
DATA: L_TREE_CONTAINER_NAME(30) TYPE C.
L_TREE_CONTAINER_NAME = 'CCONTAINER1'(001).
CREATE OBJECT G_CUSTOM_CONTAINER
EXPORTING
CONTAINER_NAME = L_TREE_CONTAINER_NAME
EXCEPTIONS
CNTL_ERROR = 1
CNTL_SYSTEM_ERROR = 2
CREATE_ERROR = 3
LIFETIME_ERROR = 4
LIFETIME_DYNPRO_DYNPRO_LINK = 5.
IF SY-SUBRC <> 0.
MESSAGE X208(00) WITH 'ERROR'(100).
ENDIF.
CREATE OBJECT G_ALV_TREE
EXPORTING
PARENT = G_CUSTOM_CONTAINER
NODE_SELECTION_MODE = CL_GUI_COLUMN_TREE=>NODE_SEL_MODE_SINGLE
ITEM_SELECTION = 'X'
NO_HTML_HEADER = 'X'
NO_TOOLBAR = ''
EXCEPTIONS
CNTL_ERROR = 1
CNTL_SYSTEM_ERROR = 2
CREATE_ERROR = 3
LIFETIME_ERROR = 4
ILLEGAL_NODE_SELECTION_MODE = 5
FAILED = 6
ILLEGAL_COLUMN_NAME = 7.
IF SY-SUBRC <> 0.
MESSAGE X208(00) WITH 'ERROR'. "#EC NOTEXT
ENDIF.
DATA L_HIERARCHY_HEADER TYPE TREEV_HHDR.
PERFORM BUILD_HIERARCHY_HEADER CHANGING L_HIERARCHY_HEADER.
PERFORM ZF_CREATE_FIELDCAT.
CALL METHOD G_ALV_TREE->SET_TABLE_FOR_FIRST_DISPLAY
EXPORTING
I_STRUCTURE_NAME = 'zsd_billinfo'
IS_HIERARCHY_HEADER = L_HIERARCHY_HEADER
CHANGING
IT_OUTTAB = GT_ZSD_BILLINFO. "table must be empty !
IT_FIELDCATALOG = GT_FIELDCAT_LVC[].
PERFORM CREATE_HIERARCHY.
CALL METHOD G_ALV_TREE->FRONTEND_UPDATE.
ENDFORM. " init_tree
*& Form build_hierarchy_header
FORM BUILD_HIERARCHY_HEADER CHANGING
P_HIERARCHY_HEADER TYPE TREEV_HHDR.
P_HIERARCHY_HEADER-HEADING = 'Region / Material'(300).
p_hierarchy_header-tooltip = 'PO No'(400).
P_HIERARCHY_HEADER-WIDTH = 30.
P_HIERARCHY_HEADER-WIDTH_PIX = ' '.
ENDFORM. " build_hierarchy_header
*& Form exit_program
free object and leave program
FORM EXIT_PROGRAM.
CALL METHOD G_CUSTOM_CONTAINER->FREE.
LEAVE PROGRAM.
ENDFORM. " exit_program
*& Form create_hierarchy
text
--> p1 text
<-- p2 text
FORM CREATE_HIERARCHY.
DATA: LS_ZSD_BILLINFO TYPE ZSD_BILLINFO,
LT_ZSD_BILLINFO TYPE ZSD_BILLINFO OCCURS 0,
l_bukrs like zsd_billinfo-bukrs,
l_vbeln like zsd_billinfo-vbeln,
l_fkdat like zsd_billinfo-fkdat,
l_fkart like zsd_billinfo-fkart,
l_vkorg like zsd_billinfo-vkorg,
l_spart like zsd_billinfo-spart,
L_BZIRK LIKE ZSD_BILLINFO-BZIRK,
L_BZIRK_LAST LIKE ZSD_BILLINFO-BZIRK,
l_vkbur like zsd_billinfo-vkbur,
L_WERKS LIKE ZSD_BILLINFO-WERKS,
L_WERKS_LAST LIKE ZSD_BILLINFO-WERKS,
L_MATNR LIKE ZSD_BILLINFO-MATNR,
L_MATNR_LAST LIKE ZSD_BILLINFO-MATNR,
L_FKIMG LIKE ZSD_BILLINFO-FKIMG,
L_NETWR LIKE ZSD_BILLINFO-NETWR.
DATA: L_BUKRS_KEY TYPE LVC_NKEY,
L_BZIRK_KEY TYPE LVC_NKEY,
L_WERKS_KEY TYPE LVC_NKEY,
L_MATNR_KEY TYPE LVC_NKEY,
l_vbeln_key type lvc_nkey,
L_LAST_KEY TYPE LVC_NKEY.
SELECT BUKRS BZIRK WERKS MATNR FKIMG FROM ZSD_BILLINFO
INTO CORRESPONDING FIELDS OF
TABLE LT_ZSD_BILLINFO
WHERE SPART = 'CT' AND
FKART = 'ZVAT'.
select * from zsd_billinfo into table lt_zsd_billinfo
where spart = 'CT' and
fkart = 'ZVAT'.
SORT LT_ZSD_BILLINFO BY BZIRK WERKS MATNR.
LOOP AT LT_ZSD_BILLINFO INTO LS_ZSD_BILLINFO.
L_BZIRK = LS_ZSD_BILLINFO-BZIRK.
L_WERKS = LS_ZSD_BILLINFO-WERKS.
L_MATNR = LS_ZSD_BILLINFO-MATNR.
IF L_BZIRK <> L_BZIRK_LAST.
L_BZIRK_LAST = L_BZIRK.
PERFORM ADD_BZIRK USING L_BZIRK
CHANGING L_BZIRK_KEY.
CLEAR L_WERKS_LAST.
ENDIF.
IF L_WERKS <> L_WERKS_LAST.
L_WERKS_LAST = L_WERKS.
PERFORM ADD_WERKS_LINE USING LS_ZSD_BILLINFO
L_WERKS_KEY
CHANGING L_WERKS_KEY.
IF L_MATNR <> L_MATNR_LAST.
L_MATNR_LAST = L_MATNR.
PERFORM ADD_MATNR_LINE USING LS_ZSD_BILLINFO
L_MATNR_KEY
CHANGING L_MATNR_KEY.
ENDIF.
PERFORM ADD_COMPLETE_LINE USING LS_ZSD_BILLINFO
L_MATNR_KEY
CHANGING L_LAST_KEY.
ENDIF.
*if l_matnr <> l_matnr_last.
l_matnr_last = l_matnr.
perform add_matnr_line using ls_zsd_billinfo
l_matnr_key
changing l_matnr_key.
endif.
perform add_complete_line using ls_zsd_billinfo
l_matnr_key
changing l_last_key.
ENDLOOP.
ENDFORM. " create_hierarchy
*& Form add_month
*& Form add_ebeln
FORM ADD_BZIRK USING P_BZIRK TYPE C
P_RELAT_KEY TYPE LVC_NKEY
CHANGING P_NODE_KEY TYPE LVC_NKEY.
DATA: L_NODE_TEXT TYPE LVC_VALUE,
LS_ZSD_BILLINFO TYPE ZSD_BILLINFO,
L_BZIRK(12) TYPE C. "output string for month
CALL METHOD G_ALV_TREE->ADD_NODE
EXPORTING
I_RELAT_NODE_KEY = P_RELAT_KEY
I_RELATIONSHIP = CL_GUI_COLUMN_TREE=>RELAT_LAST_CHILD
I_NODE_TEXT = L_NODE_TEXT
IS_OUTTAB_LINE = LS_ZSD_BILLINFO
IMPORTING
E_NEW_NODE_KEY = P_NODE_KEY.
ENDFORM. " add_month
FORM ADD_WERKS_LINE USING PS_ZSD_BILLINFO TYPE ZSD_BILLINFO
P_RELAT_KEY TYPE LVC_NKEY
CHANGING P_NODE_KEY TYPE LVC_NKEY.
DATA: L_NODE_TEXT TYPE LVC_VALUE,
LS_ZSD_BILLINFO TYPE ZSD_BILLINFO.
L_NODE_TEXT = PS_ZSD_BILLINFO-WERKS.
CALL METHOD G_ALV_TREE->ADD_NODE
EXPORTING
I_RELAT_NODE_KEY = P_RELAT_KEY
I_RELATIONSHIP = CL_GUI_COLUMN_TREE=>RELAT_LAST_CHILD
I_NODE_TEXT = L_NODE_TEXT
IS_OUTTAB_LINE = LS_ZSD_BILLINFO
IMPORTING
E_NEW_NODE_KEY = P_NODE_KEY.
ENDFORM. " add_carrid_line
FORM ADD_MATNR_LINE USING PS_ZSD_BILLINFO TYPE ZSD_BILLINFO
P_RELAT_KEY TYPE LVC_NKEY
CHANGING P_NODE_KEY TYPE LVC_NKEY.
DATA: L_NODE_TEXT TYPE LVC_VALUE,
LS_ZSD_BILLINFO TYPE ZSD_BILLINFO.
L_NODE_TEXT = PS_ZSD_BILLINFO-MATNR.
CALL METHOD G_ALV_TREE->ADD_NODE
EXPORTING
I_RELAT_NODE_KEY = P_RELAT_KEY
I_RELATIONSHIP = CL_GUI_COLUMN_TREE=>RELAT_LAST_CHILD
I_NODE_TEXT = L_NODE_TEXT
IS_OUTTAB_LINE = LS_ZSD_BILLINFO
IMPORTING
E_NEW_NODE_KEY = P_NODE_KEY.
ENDFORM. " add_carrid_line
**& Form add_complete_line
FORM ADD_COMPLETE_LINE USING PS_ZSD_BILLINFO TYPE ZSD_BILLINFO
P_RELAT_KEY TYPE LVC_NKEY
CHANGING P_NODE_KEY TYPE LVC_NKEY.
DATA: L_NODE_TEXT TYPE LVC_VALUE.
WRITE PS_ZSD_BILLINFO-BZIRK TO L_NODE_TEXT.
CALL METHOD G_ALV_TREE->ADD_NODE
EXPORTING
I_RELAT_NODE_KEY = P_RELAT_KEY
I_RELATIONSHIP = CL_GUI_COLUMN_TREE=>RELAT_LAST_CHILD
IS_OUTTAB_LINE = PS_ZSD_BILLINFO
I_NODE_TEXT = L_NODE_TEXT
IMPORTING
E_NEW_NODE_KEY = P_NODE_KEY.
ENDFORM. " add_complete_line
*& Form zf_create_fieldcat
text
FORM ZF_CREATE_FIELDCAT.
CLEAR LS_FIELDCAT.
LS_FIELDCAT-FIELDNAME = 'FKIMG'.
LS_FIELDCAT-REF_TABLE = 'zsd_billinfo'.
LS_FIELDCAT-NO_OUT = 'X'.
LS_FIELDCAT-KEY = ''.
APPEND LS_FIELDCAT TO GT_FIELDCAT_LVC.
ENDFORM. " ZF_CREATE_FIELDCAT
=================================================
Kindly look into the code and guide me the solution.
TIA.
Regards,
Mark Khi
good
i tried your ALV report but it is giving some error due to some ztable you have used in your progam,
you can go to se38 and give there BCALV* and press f4, you ll find lots of ALV example related to OOP concept, you can test them and use them as per your requirement.
thnaks
mrutyun^ -
Hi,
I have created an ALV report using the class CL_GUI_ALV_GRID. The report has a toolbar which allows the layout of the report to be changed. But, it doesn't have any provision to save layouts. How do I enable this functionality?
Any help would be appreciated.
Thanks,
DivyamanHi,
while calling method grid1->set_table_for_first_display
pass parameter i_save = 'A'.
CALL METHOD grid1->set_table_for_first_display
EXPORTING
i_structure_name = 'ZCA0FCSTFTOP'
is_layout = grid_layout
is_variant = s_variant
i_save = 'A'
CHANGING
it_outtab = t_zca0fcstftop
it_fieldcatalog = fieldcat.
regards,
vikas.
plz reward if helpful...
Maybe you are looking for
-
How to hide the specified rows in the output of the report?
Hello all, I have a requirement where i have to hide some of the lines (<b>initial 6 lines</b> that is <b>6 rows</b>) in the output of the report. How would I go about doing this? Thanks for you time.
-
"500 internal server error" when trying to use F4 help in the variable sele
Hi Experts, I am getting "500 internal server error" when trying to use F4 help in the variable selection screen (in WAD). How could this be resolved? Quick reply would be very helpfull. Thanks in advance !!
-
Video Track for Broadcast Safe
I I have a project that has a duration of 28 minutes - is there a way to insert in one of my empty video tracks above the existing clips - a continuous (28 minute) empty track in which I could dump a Broadcast Safe filter and control that function gl
-
Database ID is showing different host name in live cache backup
Hello All , While triggering the live cache backup , the database id is showing different one. i have build the system using cloning method from production. the server name is showing correct one but database id still showing the source system. Pleas
-
Smartforms: Option of Printing Specific Pages Only
Dear forum-ers, I have a requirement to print several agent statements in smartform based on the logic from the print program. Each of the page for the single form have a unique statement. Under different scenarios, the form must print out different