‎2008 Jan 28 2:04 PM
‎2008 Jan 28 2:13 PM
‎2008 Jan 28 3:01 PM
TABLES: vbak .
TABLES: mara .
TYPES: BEGIN OF tp_vbak ,
vbeln TYPE vbak-vbeln,
erdat TYPE vbak-erdat,
erzet TYPE vbak-erzet,
ernam TYPE vbak-ernam,
vbtyp TYPE vbak-vbtyp,
trvog TYPE vbak-trvog,
auart TYPE vbak-auart,
lifsk TYPE vbak-lifsk,
faksk TYPE vbak-faksk,
waerk TYPE vbak-waerk,
vkorg TYPE vbak-vkorg,
kunnr TYPE vbak-kunnr,
vgbel TYPE vbak-vgbel,
vgtyp TYPE vbak-vgtyp,
END OF tp_vbak .
TYPES: BEGIN OF tp_mara ,
matnr TYPE mara-matnr,
END OF tp_mara .
TYPES: BEGIN OF tp_alv1_data.
INCLUDE TYPE tp_vbak .
TYPES: END OF tp_alv1_data.
TYPES: BEGIN OF tp_alv2_data.
INCLUDE TYPE tp_mara .
TYPES: END OF tp_alv2_data.
TYPE-POOLS: slis.
DATA: gt_vbak TYPE STANDARD TABLE OF tp_vbak WITH HEADER LINE.
DATA: gt_mara TYPE STANDARD TABLE OF tp_mara WITH HEADER LINE.
DATA: gs_variant LIKE disvariant.
DATA: gt_alv1_data TYPE STANDARD TABLE OF tp_alv1_data WITH HEADER LINE.
DATA: gt_alv2_data TYPE STANDARD TABLE OF tp_alv2_data WITH HEADER LINE.
*----
*
SELECTION-SCREEN *
*----
*
*----
*
BLOCK b0 *
*----
*
SELECTION-SCREEN BEGIN OF BLOCK b0 WITH FRAME.
SELECT-OPTIONS: s_vbeln FOR vbak-vbeln. "
SELECTION-SCREEN END OF BLOCK b0.
*----
*
BLOCK bvar *
*----
*
SELECTION-SCREEN BEGIN OF BLOCK bvar WITH FRAME.
PARAMETERS: p_vari LIKE disvariant-variant.
SELECTION-SCREEN END OF BLOCK bvar.
*----
*
BLOCK bbox *
*----
*
SELECTION-SCREEN BEGIN OF BLOCK bbox WITH FRAME.
PARAMETERS: p_box_up RADIOBUTTON GROUP b1,
p_box_do RADIOBUTTON GROUP b1 DEFAULT 'X',
p_box_no RADIOBUTTON GROUP b1.
SELECTION-SCREEN END OF BLOCK bbox.
*----
*
AT SELECTION-SCREEN ON P_VARI *
*----
*
AT SELECTION-SCREEN ON p_vari.
PERFORM alv_variant_existence USING p_vari
CHANGING gs_variant.
*----
*
AT SELECTION-SCREEN ON VALUE REQUEST FOR P_VARI *
*----
*
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_vari.
PERFORM alv_variant_f4 CHANGING p_vari
gs_variant.
*----
*
INITIALIZATION *
*----
*
INITIALIZATION.
*----
*
START-OF-SELECTION *
*----
*
START-OF-SELECTION.
PERFORM authority_check.
PERFORM get_control_data.
PERFORM get_transaction_data.
PERFORM process_transaction_data.
*----
*
END-OF-SELECTION *
*----
*
END-OF-SELECTION.
PERFORM output_data.
*----
*
F O R M S *
*----
*
*----
*
FORM AUTHORITY_CHECK *
*----
*
Perform authority checks for the report *
*----
*
FORM authority_check.
!!! Note: authorisation checks are application-dependent.
· !!! Some common cases are listed below - please select one of them
· !!! or add new authorisation checks.
· !!! If the report is creating batch input session or using LDB
· !!! it may be sufficient to use automatic SAP auth.checks.
Authorisation for displaying documents in a single company code
· -
-
· authority-check object 'F_BKPF_BUK'
· id 'BUKRS' field p_bukrs
· id 'ACTVT' field '03'.
· if sy-subrc 0.
· message e001(z9) with 'No authorisation to display documents'
· 'in company code' p_bukrs.
· endif.
Displaying documents from a list of company codes (select-options)
· -
-
· call function 'Y_BUKRS_AUTHORITY_CHECK'
· EXPORTING
· ACTVT = '03'
· NOMESSAGE = ' '
· tables
· s_bukrs = s_bukrs.
ENDFORM. " AUTHORITY_CHECK
*----
*
FORM GET_CONTROL_DATA *
*----
*
Read configuration etc. *
*----
*
FORM get_control_data.
ENDFORM. " GET_CONTROL_DATA
*----
*
FORM GET_TRANSACTION_DATA *
*----
*
Read documents etc. *
*----
*
FORM get_transaction_data.
!!! Data selection statement below has been generated automatically.
· !!! Please check if it is correct and complete.
· !!! Use table joins or 'SELECT FOR ALL ENTRIES' when selecting data
· !!! from related tables.
SELECT
vbeln
erdat
erzet
ernam
FROM vbak
INTO CORRESPONDING FIELDS OF TABLE gt_vbak
.
CHECK NOT gt_vbak[] IS INITIAL.
SELECT
matnr
FROM mara
INTO CORRESPONDING FIELDS OF TABLE gt_mara
FOR ALL ENTRIES IN gt_vbak
WHERE ernam = gt_vbak-ernam
.
ENDFORM. " GET_TRANSACTION_DATA
*----
*
FORM PROCESS_TRANSACTION_DATA *
*----
*
........ *
*----
*
FORM process_transaction_data.
LOOP AT gt_vbak .
MOVE-CORRESPONDING gt_vbak TO gt_alv1_data .
APPEND gt_alv1_data .
ENDLOOP.
FREE gt_vbak .
LOOP AT gt_mara .
MOVE-CORRESPONDING gt_mara TO gt_alv2_data .
APPEND gt_alv2_data .
ENDLOOP.
FREE gt_mara .
ENDFORM. " PROCESS_TRANSACTION_DATA
*----
*
FORM OUTPUT_DATA *
*----
*
........ *
*----
*
FORM output_data.
PERFORM alv_list_display.
ENDFORM. " OUTPUT_DATA
*----
*
FORM DISPLAY_RECORD *
*----
*
Display object associated with the current ALV line *
*----
*
FORM display_record USING is_selfield TYPE slis_selfield.
READ TABLE gt_alv1_data INDEX is_selfield-tabindex.
CHECK sy-subrc = 0.
!!! SAMPLE IMPLEMENTATION FOR DISPLAYING FI DOCUMENTS:
SET PARAMETER ID 'BUK' FIELD gt_alv1_data-vbeln.
set parameter id 'BLN' field gt_alv1_data-belnr.
· set parameter id 'GJR' field gt_alv1_data-gjahr.
CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN.
ENDFORM. " DISPLAY_RECORD
*----
*
FORM ALV_LIST_DISPLAY *
*----
*
Invoke main ALV function to format and show the report *
*----
*
FORM alv_list_display.
DATA: ls_layout TYPE slis_layout_alv,
ls_print TYPE slis_print_alv,
ls_keyinfo TYPE slis_keyinfo_alv,
lt_fieldcat TYPE slis_t_fieldcat_alv,
lt_exctab TYPE slis_t_extab,
lt_sorttab TYPE slis_t_sortinfo_alv,
lt_events TYPE slis_t_event.
PERFORM alv_init_report_events TABLES lt_events.
PERFORM alv_init_report_layout TABLES lt_fieldcat
lt_exctab
lt_sorttab
CHANGING ls_layout
ls_print
ls_keyinfo.
CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
EXPORTING
i_interface_check = ' '
i_callback_program = sy-cprog
is_layout = ls_layout
it_fieldcat = lt_fieldcat
it_excluding = lt_exctab
IT_SPECIAL_GROUPS =
it_sort = lt_sorttab
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 = 'X'
i_save = 'A'
is_variant = gs_variant
it_events = lt_events
IT_EVENT_EXIT =
i_tabname_header = 'GT_ALV1_DATA'
i_tabname_item = 'GT_ALV2_DATA'
I_STRUCTURE_NAME_HEADER =
· I_STRUCTURE_NAME_ITEM =
is_keyinfo = ls_keyinfo
is_print = ls_print
IS_REPREP_ID =
· IMPORTING
· E_EXIT_CAUSED_BY_CALLER =
· ES_EXIT_CAUSED_BY_USER =
TABLES
t_outtab_header = gt_alv1_data
t_outtab_item = gt_alv2_data.
EXCEPTIONS
· PROGRAM_ERROR = 1
· OTHERS = 2
ENDFORM. " ALV_LIST_DISPLAY
*----
*
FORM ALV_INIT_REPORT_LAYOUT *
*----
*
Set up report layout definition for ALV_LIST_DISPLAY *
*----
*
<-- OT_FIELDCAT list of fields *
· <-- OT_EXCTAB excluded menu options *
· <-- OT_SORTTAB sorting/grouping definition *
· <-- OS_LAYOUT global report layout settings *
· <-- OS_PRINT global report printout settings *
· <-- OS_KEYINFO itab key fields (required only for hier.lists) *
*----
*
FORM alv_init_report_layout TABLES ot_fieldcat TYPE slis_t_fieldcat_alv
ot_exctab TYPE slis_t_extab
ot_sorttab TYPE slis_t_sortinfo_alv
CHANGING cs_layout TYPE slis_layout_alv
cs_print TYPE slis_print_alv
cs_keyinfo TYPE slis_keyinfo_alv.
add menu items to be excluded to ot_exctab.
REFRESH ot_exctab.
REFRESH ot_fieldcat.
REFRESH ot_sorttab.
!!!
· !!! List all ALV data fields for display here:
· !!!
· DD-struct = data dictionary structure name
· DD-field = field of data dictionary structure
· itab = internal table for output data
· itab-field = internal table field name
· key = set to 'X' if key field
· sum = set to 'X' for totals
· hid = set to 'X' if field is initially hidden
· row = list row number (multi-line list if >1)
*
DD-struct DD-field itab itab-field key sum hid row
· -
-
PERFORM alv_build_fieldcat TABLES ot_fieldcat USING:
'VBAK' 'VBELN' 'GT_ALV1_DATA' 'VBELN' ' ' ' ' ' ' 1 ,
'VBAK' 'ERDAT' 'GT_ALV1_DATA' 'ERDAT' ' ' ' ' ' ' 1 ,
'VBAK' 'ERZET' 'GT_ALV1_DATA' 'ERZET' ' ' ' ' ' ' 1 ,
'VBAK' 'ERNAM' 'GT_ALV1_DATA' 'ERNAM' ' ' ' ' ' ' 1.
PERFORM alv_build_fieldcat TABLES ot_fieldcat USING:
'MARA' 'MATNR' 'GT_ALV2_DATA' 'MATNR' ' ' ' ' ' ' 1 .
!!!
· !!! List all ALV data fields for sorting/grouping here
· !!!
· itab = internal table for output data
· itab-field = internal table field name
· up = sort ascending
· down = sort descending
· grp = group by
· comp = group initially compressed
· pos = field position in sort sequence
*
itab field up down grp comp pos
· -
-
PERFORM alv_build_sorttab TABLES ot_sorttab USING:
'GT_ALV1_DATA' 'VBELN' 'X' ' ' ' ' ' ' 1.
PERFORM alv_build_sorttab TABLES ot_sorttab USING:
'GT_ALV2_DATA' 'MATNR' 'X' ' ' ' ' ' ' 1.
!!! key definition - required only for hierarchical display (2 itabs)
cs_keyinfo-header01 = 'VBELN' .
cs_keyinfo-item01 = 'MATNR' .
!!! See the declaration of type SLIS_LAYOUT_ALV and set the fields
· !!! of OS_LAYOUT record to change list-level attributes
os_layout-no_colhead = 'X'. " no headings
cs_layout-zebra = 'X'. " stripped pattern
os_layout-no_vline = 'X'. " columns separated by space
· os_layout-totals_only = 'X'. " show only totals
· os_layout-totals_text = 'Total'. " totals line label
· os_layout-subtotals_text = 'Subtotal'. " subtotals line label
· os_layout-subtotals_text = 'Subtotal'. " subtotals line label
· os_layout-key_hotspot = 'X'. " keys as hotspot
· os_layout-expand_all = 'X'. " Expand all positions
· os_layout...
cs_print-no_print_selinfos = 'X'. " Skip selection statistics
cs_print-no_print_listinfos = 'X'. " Skip list statistics
os_print-...
ENDFORM. " INIT_REPORT_LAYOUT
*----
*
FORM ALV_BUILD_FIELDCAT *
*----
*
Format a single line for ALV_INIT_REPORT_LAYOUT *
*----
*
FORM alv_build_fieldcat TABLES ot_fieldcat
USING iv_ref_tabname "ref to a table/field
iv_ref_fieldname
iv_tabname "actual table/field name
iv_fieldname
iv_key
iv_do_sum
iv_no_out
iv_row_pos.
status variables for auto-numbering of field column position
· (column number reset when a new table or row begins)
STATICS: sv_last_tabname TYPE slis_tabname,
sv_last_row_pos TYPE i,
sv_current_col TYPE i.
IF sv_last_tabname iv_tabname OR sv_last_row_pos iv_row_pos.
sv_current_col = 1.
ELSE.
ADD 1 TO sv_current_col.
ENDIF.
sv_last_tabname = iv_tabname.
sv_last_row_pos = iv_row_pos.
DATA: ls_fieldcat TYPE slis_fieldcat_alv.
DATA: lv_fieldname TYPE slis_fieldname.
lv_fieldname = iv_fieldname.
!!!
· !!! List all the special formatting requirements in cases below
· !!!
· case lv_fieldname.
· when 'WRBTR'. "<-- link with currency required
· ls_fieldcat-cfieldname = 'WAERS'.
· ls_fieldcat-ctabname = iv_tabname.
*
when 'HKONT'. "<-- change default column header
· ls_fieldcat-seltext_s = 'GL Acc.'.
· ls_fieldcat-ddictxt = 'S'. " (S)hort (M)iddle (L)ong
*
when 'SOME_NUMBER' "<-- change number formatting
· ls_fieldcat-nosign = 'X'.
· ls_fieldcat-nozero = 'X'.
· ls_fieldcat-just = 'L'. " (L)eft (R)ight (C)enter
· endcase.
ls_fieldcat-ref_tabname = iv_ref_tabname.
ls_fieldcat-ref_fieldname = iv_ref_fieldname.
ls_fieldcat-tabname = iv_tabname.
ls_fieldcat-fieldname = iv_fieldname.
ls_fieldcat-key = iv_key.
ls_fieldcat-do_sum = iv_do_sum.
ls_fieldcat-no_out = iv_no_out.
ls_fieldcat-row_pos = iv_row_pos.
ls_fieldcat-col_pos = sv_current_col.
APPEND ls_fieldcat TO ot_fieldcat.
ENDFORM. " ALV_BUILD_FIELDCAT
*----
*
FORM ALV_BUILD_SORTTAB *
*----
*
Set up sorting information for ALV_INIT_REPORT_LAYOUT *
*----
*
FORM alv_build_sorttab TABLES ot_sorttab TYPE slis_t_sortinfo_alv
USING iv_tabname TYPE slis_fieldname
iv_fieldname TYPE slis_fieldname
iv_up TYPE c
iv_down TYPE c
iv_subtot TYPE c
iv_comp TYPE c
iv_spos TYPE n.
ot_sorttab-spos = iv_spos.
ot_sorttab-fieldname = iv_fieldname.
ot_sorttab-tabname = iv_tabname.
ot_sorttab-up = iv_up.
ot_sorttab-down = iv_down.
ot_sorttab-subtot = iv_subtot.
ot_sorttab-comp = iv_comp.
APPEND ot_sorttab.
ENDFORM. " ALV_BUILD_SORTTAB
*----
*
FORM ALV_INIT_REPORT_EVENTS *
*----
*
Set up program events for ALV_LIST_DISPLAY *
*----
*
<-- OT_EVENTS list of events and associated report subroutines *
*----
*
FORM alv_init_report_events TABLES ot_events TYPE slis_t_event.
CLEAR ot_events.
REFRESH ot_events.
ot_events-name = slis_ev_user_command.
ot_events-form = 'USER_COMMAND'.
APPEND ot_events.
ot_events-name = slis_ev_pf_status_set.
ot_events-form = ''. "'PF_STATUS_SET'.
APPEND ot_events.
ot_events-name = slis_ev_top_of_list.
ot_events-form = 'TOP_OF_LIST'.
APPEND ot_events.
ot_events-name = slis_ev_end_of_list.
ot_events-form = 'END_OF_LIST'.
APPEND ot_events.
ot_events-name = slis_ev_top_of_page.
ot_events-form = 'TOP_OF_PAGE'.
APPEND ot_events.
ot_events-name = slis_ev_end_of_page.
ot_events-form = 'END_OF_PAGE'.
APPEND ot_events.
ot_events-name = slis_ev_foreign_top_of_page.
ot_events-form = ''.
APPEND ot_events.
ot_events-name = slis_ev_foreign_end_of_page.
ot_events-form = ''.
APPEND ot_events.
ot_events-name = slis_ev_top_of_coverpage.
ot_events-form = ''.
APPEND ot_events.
ot_events-name = slis_ev_end_of_coverpage.
ot_events-form = ''.
APPEND ot_events.
ot_events-name = slis_ev_before_line_output.
ot_events-form = ''.
APPEND ot_events.
ot_events-name = slis_ev_after_line_output.
ot_events-form = ''.
APPEND ot_events.
ot_events-name = slis_ev_caller_exit_at_start.
ot_events-form = ''.
APPEND ot_events.
ot_events-name = slis_ev_list_modify.
ot_events-form = ''.
APPEND ot_events.
ot_events-name = slis_ev_subtotal_text.
ot_events-form = ''.
APPEND ot_events.
ENDFORM. " ALV_INIT_REPORT_EVENTS
*----
*
FORM USER_COMMAND *
*----
*
Subroutine attached as callback form to ABAP List Viewer *
· --> UCOMM - user command code passed from ALV *
· --> SELFIELD - information record describing current line/field *
*----
*
FORM user_command USING value(iv_ucomm) LIKE sy-ucomm
is_selfield TYPE slis_selfield.
CASE iv_ucomm.
WHEN '&IC1'. "ALV record selection
PERFORM display_record USING is_selfield.
when ...
· ...
ENDCASE.
ENDFORM. " USER_COMMAND
*----
*
FORM PF_STATUS_SET *
*----
*
Subroutine attached as callback form to ABAP List Viewer, *
· allows setting alternative menu. If necessary: *
· 1. Copy 'STANDARD' menu from SAPLKKBL and modify as required, *
· 2. Activate callback *
*----
*
FORM pf_status_set USING it_exctab TYPE slis_t_extab.
set pf-status 'STANDARD' excluding it_exctab.
ENDFORM. " PF_STATUS_SET
*----
*
FORM TOP_OF_LIST *
*----
*
Subroutine attached as callback form to ABAP List Viewer, *
· executed once at the start of list output. *
*----
*
FORM top_of_list.
DATA: lt_seltab TYPE STANDARD TABLE OF rsparams WITH HEADER LINE.
DATA: lv_report LIKE sy-repid.
lv_report = sy-repid. "do not pass sy-repid to function!
IF p_box_up = 'X'. "display select options at report start
CALL FUNCTION 'RS_REFRESH_FROM_SELECTOPTIONS'
EXPORTING
curr_report = lv_report
TABLES
selection_table = lt_seltab.
remove 'technical' parameters with 'DELETE LT_SELTAB WHERE...'
· before display, if necessary
CALL FUNCTION 'RS_LIST_SELECTION_TABLE'
EXPORTING
report = lv_report
seltext = 'X'
dyn_range =
newpage = ' '
screennr = 1000
TABLES
sel_tab = lt_seltab
EXCEPTIONS
sel_tab_empty = 1.
ENDIF. "p_box_up = 'X'
ENDFORM. " TOP_OF_LIST
*----
*
FORM END_OF_LIST *
*----
*
Subroutine attached as callback form to ABAP List Viewer *
· executed once at the end of list output. *
*----
*
FORM end_of_list.
DATA: lt_seltab TYPE STANDARD TABLE OF rsparams WITH HEADER LINE.
DATA: lv_report LIKE sy-repid.
lv_report = sy-repid. "do not pass sy-repid to function!
IF p_box_do = 'X'. "display select options at report end
CALL FUNCTION 'RS_REFRESH_FROM_SELECTOPTIONS'
EXPORTING
curr_report = lv_report
TABLES
selection_table = lt_seltab.
remove 'technical' parameters with 'DELETE LT_SELTAB WHERE...'
· before display, if necessary
CALL FUNCTION 'RS_LIST_SELECTION_TABLE'
EXPORTING
report = lv_report
seltext = 'X'
dyn_range =
newpage = ' '
screennr = 1000
TABLES
sel_tab = lt_seltab
EXCEPTIONS
sel_tab_empty = 1.
ENDIF. "p_box_do = 'X'
ENDFORM. " END_OF_LIST
*----
*
FORM TOP_OF_PAGE *
*----
*
Subroutine attached as callback form to ABAP List Viewer *
*----
*
FORM top_of_page.
standard Ingram Micro report page heading
DATA: lv_coco_pos TYPE i, "CurPos of 'Company confidential'
lv_title_pos TYPE i, "CurPos of report title
lv_title(70) TYPE c, "Truncated report title
lv_page_pos TYPE i, "CurPos of page number
lv_date_pos TYPE i, "CurPos of date and time
lv_page_no(10) TYPE c,
lv_date(25) TYPE c,
lv_time(20) TYPE c,
lv_page(10) TYPE c.
We may need to truncate title if the line size is < 81.
IF sy-linsz < 81.
lv_title = sy-title+0(50).
ELSE.
lv_title = sy-title.
ENDIF.
Decide on positioning of text depending on width of page
lv_title_pos = ( sy-linsz / 2 ) - ( STRLEN( lv_title ) / 2 ).
lv_coco_pos = sy-linsz - 20.
FORMAT COLOR COL_HEADING INTENSIFIED ON.
WRITE: / 'Ingram Micro',
AT lv_title_pos lv_title,
AT lv_coco_pos 'Company Confidential'.
Setup data correctly in the correct format for the display fields.
lv_page = sy-pagno.
SHIFT lv_page LEFT DELETING LEADING ' '.
CONCATENATE sy-datum6(2) sy-datum4(2) sy-datum+0(4)
INTO lv_date SEPARATED BY '.'.
CONCATENATE sy-uzeit0(2) ':' sy-uzeit2(2) INTO lv_time.
CONCATENATE lv_date lv_time INTO lv_date SEPARATED BY ' '.
CONCATENATE 'Page' lv_page INTO lv_page_no SEPARATED BY ' '.
Decide on positioning of text depending on width of page.
lv_page_pos = sy-linsz - ( STRLEN( lv_page_no ) ).
WRITE: / lv_date,
AT lv_page_pos lv_page_no.
ULINE.
ENDFORM. " TOP_OF_PAGE
*----
*
FORM END_OF_PAGE *
*----
*
Subroutine attached as callback form to ABAP List Viewer *
*----
*
FORM end_of_page.
ENDFORM. " END_OF_PAGE
*----
-
Form ALV_VARIANT_EXISTENCE
*----
-
Reads ALV variant definition
*----
-
FORM alv_variant_existence USING iv_variant LIKE disvariant-variant
CHANGING os_variant LIKE disvariant.
CHECK NOT iv_variant IS INITIAL.
os_variant-report = sy-repid.
os_variant-variant = iv_variant.
IF iv_variant CP '/*'. "user-specific variants begin with slash
os_variant-username = sy-uname.
ENDIF.
CALL FUNCTION 'REUSE_ALV_VARIANT_EXISTENCE'
EXPORTING
i_save = 'A'
CHANGING
cs_variant = os_variant
EXCEPTIONS
wrong_input = 1
not_found = 2
program_error = 3
OTHERS = 4.
IF sy-subrc 0.
MESSAGE e001(z9) WITH 'Please select a valid display variant.'.
ENDIF.
ENDFORM. " ALV_VARIANT_EXISTENCE
*----
*
FORM ALV_VARIANT_F4 *
*----
*
Display list of layout variants on report selection screen *
*----
*
FORM alv_variant_f4 CHANGING cv_varname LIKE disvariant-variant
cs_variant LIKE disvariant.
DATA: lv_exit(1) TYPE c.
cs_variant-report = sy-repid.
CALL FUNCTION 'REUSE_ALV_VARIANT_F4'
EXPORTING
is_variant = cs_variant
i_save = 'A'
it_default_fieldcat =
IMPORTING
e_exit = lv_exit
es_variant = cs_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 lv_exit = space.
cv_varname = cs_variant-variant.
ENDIF.
ENDIF.
or check this coding too
· Global ALV Data Declarations
type-pools: slis.
Internal Tables
data: begin of itab occurs 0,
matnr type mara-matnr,
maktx type makt-maktx,
end of itab.
start-of-selection.
perform get_data.
perform call_alv.
*********************************************************************
Form GET_DATA
*********************************************************************
form get_data.
select maramatnr maktmaktx
into corresponding fields of table itab
from mara
inner join makt
on maramatnr = maktmatnr
up to 20 rows.
endform.
************************************************************************
CALL_ALV
************************************************************************
form call_alv.
data: ifc type slis_t_fieldcat_alv.
data: xfc type slis_fieldcat_alv.
data: repid type sy-repid.
repid = sy-repid.
clear xfc. refresh ifc.
clear xfc.
xfc-reptext_ddic = 'Material Number'.
xfc-fieldname = 'MATNR'.
xfc-tabname = 'ITAB'.
xfc-outputlen = '18'.
append xfc to ifc.
clear xfc.
xfc-reptext_ddic = 'Material Description'.
xfc-fieldname = 'MAKTX'.
xfc-tabname = 'ITAB'.
xfc-outputlen = '40'.
append xfc to ifc.
Call ABAP List Viewer (ALV)
call function 'REUSE_ALV_GRID_DISPLAY'
exporting
i_callback_program = repid
i_callback_user_command = 'HANDLE_USER_COMMAND'
it_fieldcat = ifc
tables
t_outtab = itab.
endform.
***********************************************************************
FORM handle_User_Command *
***********************************************************************
form handle_user_command using r_ucomm like sy-ucomm
rs_selfield type slis_selfield.
case r_ucomm.
when '&IC1'.
case rs_selfield-FIELDNAME.
when 'MATNR'.
set parameter id 'MAT' field rs_selfield-value.
call transaction 'MD04' and skip first screen.
endcase.
endcase.
endform.
plz reward if useful
keep rockin
vivek
‎2008 Jan 29 6:14 AM
hi sandeep,
refer to this simple code to understand the all the basic FM used in calling and using ALV LAYOUT VARIANTS
-
Work Areas *
-
DATA : wa_variant TYPE disvariant, "Work area for variant
wa_variant1 TYPE disvariant, "Work area for variant
wa_layout TYPE slis_layout_alv, "Work area for layout
wa_print TYPE slis_print_alv, "Work area for print
wa_mara TYPE t_mara, "Work area for mara
wa_makt TYPE t_makt, "Work area for makt
wa_lqua TYPE t_lqua, "Work area for lqua
wa_mchb TYPE t_mchb, "Work area for mchb
wa_mard TYPE t_mard, "Work area for mard
wa_marc TYPE t_marc, "Work area for marc
wa_t320 TYPE t_t320, "Work area for t320
wa_batch TYPE t_batch, "Work area for batch
wa_pkhd TYPE t_pkhd, "Work area for pkhd
wa_whouse TYPE t_whouse, "Work area for whouse
wa_final LIKE i_final, "Work area for final
wa_mbew TYPE t_mbew, "Work area for mbew
wa_lgort TYPE t_lgort, "WOrk area for lgort
wa_fieldcat TYPE slis_fieldcat_alv."Work area for fieldcatalog
&----
*& Form sub_get_default_variant *
&----
This form will initialize the variant *
-
FORM sub_get_default_variant .
*--Clear
CLEAR wa_variant.
*--Pass the report name
v_repid = sy-repid. "Report ID
wa_variant-report = v_repid.
*--Call the function module to get the default variant
CALL FUNCTION 'REUSE_ALV_VARIANT_DEFAULT_GET'
EXPORTING
i_save = c_save
CHANGING
cs_variant = wa_variant1
EXCEPTIONS
wrong_input = 1
not_found = 2
program_error = 3
OTHERS = 4.
*--Check Subrc
IF sy-subrc = 0.
p_varnt = wa_variant-variant.
ENDIF.
ENDFORM. "sub_get_default_variant
&----
*& Form sub_create_events *
&----
This form will display the ALV Events *
-
FORM sub_create_events .
*--Local Work Area
DATA: lwa_event TYPE slis_alv_event. "Work area for Events
*--Call Function to display the events for the ALV
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
i_list_type = 1
IMPORTING
et_events = i_events.
*--Sort by Name
SORT i_events BY name.
*--Clear
CLEAR lwa_event.
READ TABLE i_events INTO lwa_event WITH KEY name = slis_ev_top_of_page
BINARY SEARCH.
IF sy-subrc = 0.
MOVE c_top_of_page TO lwa_event-form.
MODIFY i_events FROM lwa_event TRANSPORTING form WHERE
name = slis_ev_top_of_page.
ENDIF.
CLEAR : lwa_event.
ENDFORM. "sub_create_events
&----
*& Form sub_f4_for_variant *
&----
This form will display the List of Variants *
-
FORM sub_f4_for_variant .
*--Local Variables
DATA: lv_exit(1) TYPE c. "ALV exit
*--Call the function module to display the list of Variants
CALL FUNCTION 'REUSE_ALV_VARIANT_F4'
EXPORTING
is_variant = wa_variant
i_save = c_save
IMPORTING
e_exit = lv_exit
es_variant = wa_variant1
EXCEPTIONS
not_found = 1
program_error = 2.
*--Check Subrc
IF sy-subrc 2 AND lv_exit IS INITIAL.
p_varnt = wa_variant1-variant.
ENDIF.
ENDFORM. "sub_f4_for_variant
&----
*& Form sub_check_variant *
&----
This form will check the variant *
-
FORM sub_check_variant .
IF NOT p_varnt IS INITIAL.
CLEAR wa_variant1.
MOVE wa_variant TO wa_variant1.
MOVE p_varnt TO wa_variant1-variant.
*--Call the function module to check the variant exist
CALL FUNCTION 'REUSE_ALV_VARIANT_EXISTENCE'
EXPORTING
i_save = c_save
CHANGING
cs_variant = wa_variant1.
wa_variant = wa_variant1.
ENDIF.
ENDFORM. "sub_check_variant
Rewards points if useful,
Rohan malik