Skip to Content
author's profile photo Former Member
Former Member

Regarding CODE for ALV Variant!

Hi..

I need sample code for ALV Variant.

Regards

sandeep.

Add a comment
10|10000 characters needed characters exceeded

Assigned Tags

Related questions

3 Answers

  • Posted on Jan 28, 2008 at 02:13 PM

    AT SELECTION-SCREEN ON VALUE-REQUEST FOR p-varian.

    is_variant-report = sy-repid.

    CALL FUNCTION 'REUSE_ALV_VARIANT_F4'

    EXPORTING

    is_variant = is_variant

    i_save = 'A'

    IMPORTING

    e_exit = variant_exit

    es_variant = is_variant

    EXCEPTIONS

    not_found = 1

    program_error = 2

    OTHERS = 3.

    Regards

    Add a comment
    10|10000 characters needed characters exceeded

  • author's profile photo Former Member
    Former Member
    Posted on Jan 28, 2008 at 03: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

    Add a comment
    10|10000 characters needed characters exceeded

  • author's profile photo Former Member
    Former Member
    Posted on Jan 29, 2008 at 06: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

    Add a comment
    10|10000 characters needed characters exceeded

Before answering

You should only submit an answer when you are proposing a solution to the poster's problem. If you want the poster to clarify the question or provide more information, please leave a comment instead, requesting additional details. When answering, please include specifics, such as step-by-step instructions, context for the solution, and links to useful resources. Also, please make sure that you answer complies with our Rules of Engagement.
You must be Logged in to submit an answer.

Up to 10 attachments (including images) can be used with a maximum of 1.0 MB each and 10.5 MB total.