<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Interactive alv in Application Development and Automation Discussions</title>
    <link>https://community.sap.com/t5/application-development-and-automation-discussions/interactive-alv/m-p/2406989#M536600</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;hi,&lt;/P&gt;&lt;P&gt;plz run the following code and click on first coloum of output.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;REPORT yfi7g_ing_mic_001 .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;TABLES: vbak .&lt;/P&gt;&lt;P&gt;TABLES: mara .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;TYPES: BEGIN OF tp_vbak ,&lt;/P&gt;&lt;P&gt;      vbeln TYPE vbak-vbeln,&lt;/P&gt;&lt;P&gt;      erdat TYPE vbak-erdat,&lt;/P&gt;&lt;P&gt;      erzet TYPE vbak-erzet,&lt;/P&gt;&lt;P&gt;      ernam TYPE vbak-ernam,&lt;/P&gt;&lt;P&gt;      vbtyp TYPE vbak-vbtyp,&lt;/P&gt;&lt;P&gt;      trvog TYPE vbak-trvog,&lt;/P&gt;&lt;P&gt;      auart TYPE vbak-auart,&lt;/P&gt;&lt;P&gt;      lifsk TYPE vbak-lifsk,&lt;/P&gt;&lt;P&gt;      faksk TYPE vbak-faksk,&lt;/P&gt;&lt;P&gt;      waerk TYPE vbak-waerk,&lt;/P&gt;&lt;P&gt;      vkorg TYPE vbak-vkorg,&lt;/P&gt;&lt;P&gt;      kunnr TYPE vbak-kunnr,&lt;/P&gt;&lt;P&gt;      vgbel TYPE vbak-vgbel,&lt;/P&gt;&lt;P&gt;      vgtyp TYPE vbak-vgtyp,&lt;/P&gt;&lt;P&gt;END OF tp_vbak .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;TYPES: BEGIN OF tp_mara ,&lt;/P&gt;&lt;P&gt;        matnr TYPE mara-matnr,&lt;/P&gt;&lt;P&gt;END OF tp_mara .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;TYPES: BEGIN OF tp_alv1_data.&lt;/P&gt;&lt;P&gt;INCLUDE TYPE tp_vbak .&lt;/P&gt;&lt;P&gt;TYPES: END OF tp_alv1_data.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;TYPES: BEGIN OF tp_alv2_data.&lt;/P&gt;&lt;P&gt;INCLUDE TYPE tp_mara .&lt;/P&gt;&lt;P&gt;TYPES: END OF tp_alv2_data.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;TYPE-POOLS: slis.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: gt_vbak TYPE STANDARD TABLE OF tp_vbak WITH HEADER LINE.&lt;/P&gt;&lt;P&gt;DATA: gt_mara TYPE STANDARD TABLE OF tp_mara WITH HEADER LINE.&lt;/P&gt;&lt;P&gt;DATA: gs_variant LIKE disvariant.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: gt_alv1_data TYPE STANDARD TABLE OF tp_alv1_data WITH HEADER LINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: gt_alv2_data TYPE STANDARD TABLE OF tp_alv2_data WITH HEADER LINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;SELECTION-SCREEN                                                     *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;BLOCK b0                                                             *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN BEGIN OF BLOCK b0 WITH FRAME.&lt;/P&gt;&lt;P&gt;SELECT-OPTIONS: s_vbeln FOR vbak-vbeln.        "&amp;lt;field not defined?&amp;gt;&lt;/P&gt;&lt;P&gt;PARAMETERS: p_matnr LIKE mara-matnr.           "&amp;lt;field not defined?&amp;gt;&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN END OF BLOCK b0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;BLOCK bvar                                                           *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN BEGIN OF BLOCK bvar WITH FRAME.&lt;/P&gt;&lt;P&gt;PARAMETERS: p_vari  LIKE disvariant-variant.&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN END OF BLOCK bvar.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;BLOCK bbox                                                           *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN BEGIN OF BLOCK bbox WITH FRAME.&lt;/P&gt;&lt;P&gt;PARAMETERS: p_box_up  RADIOBUTTON GROUP b1,&lt;/P&gt;&lt;P&gt;            p_box_do  RADIOBUTTON GROUP b1 DEFAULT 'X',&lt;/P&gt;&lt;P&gt;            p_box_no  RADIOBUTTON GROUP b1.&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN END OF BLOCK bbox.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      AT SELECTION-SCREEN ON P_VARI                                 *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;AT SELECTION-SCREEN ON p_vari.&lt;/P&gt;&lt;P&gt;  PERFORM alv_variant_existence USING    p_vari&lt;/P&gt;&lt;P&gt;                                CHANGING gs_variant.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      AT SELECTION-SCREEN ON VALUE REQUEST FOR P_VARI               *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_vari.&lt;/P&gt;&lt;P&gt;  PERFORM alv_variant_f4 CHANGING p_vari&lt;/P&gt;&lt;P&gt;                                  gs_variant.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;INITIALIZATION                                                       *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;INITIALIZATION.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;START-OF-SELECTION                                                   *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;START-OF-SELECTION.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  PERFORM authority_check.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  PERFORM get_control_data.&lt;/P&gt;&lt;P&gt;  PERFORM get_transaction_data.&lt;/P&gt;&lt;P&gt;  PERFORM process_transaction_data.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;END-OF-SELECTION                                                     *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;END-OF-SELECTION.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  PERFORM output_data.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; F   O   R   M   S                                                   *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      FORM AUTHORITY_CHECK                                          *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Perform authority checks for the report                       *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM authority_check.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;!!! Note: authorisation checks are application-dependent.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;!!! Some common cases are listed below - please select one of them&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;!!! or add new authorisation checks.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;!!! If the report is creating batch input session or using LDB&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;!!! it may be sufficient to use automatic SAP auth.checks.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Authorisation for displaying documents in a single company code&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;---------------------------------------------------------------&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;authority-check object 'F_BKPF_BUK'&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;       id 'BUKRS' field p_bukrs&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;       id 'ACTVT' field '03'.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;if sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  message e001(z9) with 'No authorisation to display documents'&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                        'in company code' p_bukrs.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;endif.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Displaying documents from a list of company codes (select-options)&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;------------------------------------------------------------------&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;call function 'Y_BUKRS_AUTHORITY_CHECK'&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   EXPORTING&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        ACTVT     = '03'&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        NOMESSAGE = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   tables&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        s_bukrs   = s_bukrs.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                              " AUTHORITY_CHECK&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      FORM GET_CONTROL_DATA                                         *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Read configuration etc.                                       *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM get_control_data.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                               " GET_CONTROL_DATA&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      FORM GET_TRANSACTION_DATA                                     *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Read documents etc.                                           *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM get_transaction_data.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;!!! Data selection statement below has been generated automatically.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;!!! Please check if it is correct and complete.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;!!! Use table joins or 'SELECT FOR ALL ENTRIES' when selecting data&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;!!! from related tables.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SELECT&lt;/P&gt;&lt;P&gt;            vbeln&lt;/P&gt;&lt;P&gt;            erdat&lt;/P&gt;&lt;P&gt;            erzet&lt;/P&gt;&lt;P&gt;            ernam&lt;/P&gt;&lt;P&gt;   FROM vbak&lt;/P&gt;&lt;P&gt;      INTO CORRESPONDING FIELDS OF TABLE gt_vbak&lt;/P&gt;&lt;P&gt;      .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CHECK NOT gt_vbak[] IS INITIAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SELECT&lt;/P&gt;&lt;P&gt;            matnr&lt;/P&gt;&lt;P&gt;   FROM mara&lt;/P&gt;&lt;P&gt;      INTO CORRESPONDING FIELDS OF TABLE gt_mara&lt;/P&gt;&lt;P&gt;      FOR ALL ENTRIES IN gt_vbak&lt;/P&gt;&lt;P&gt;      WHERE ernam = gt_vbak-ernam&lt;/P&gt;&lt;P&gt;      .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                               " GET_TRANSACTION_DATA&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      FORM PROCESS_TRANSACTION_DATA                                 *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      ........                                                      *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM process_transaction_data.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  LOOP AT gt_vbak .&lt;/P&gt;&lt;P&gt;    MOVE-CORRESPONDING gt_vbak TO gt_alv1_data .&lt;/P&gt;&lt;P&gt;    APPEND gt_alv1_data .&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  FREE gt_vbak .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  LOOP AT gt_mara .&lt;/P&gt;&lt;P&gt;    MOVE-CORRESPONDING gt_mara TO gt_alv2_data .&lt;/P&gt;&lt;P&gt;    APPEND gt_alv2_data .&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  FREE gt_mara .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                               " PROCESS_TRANSACTION_DATA&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      FORM OUTPUT_DATA                                              *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      ........                                                      *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM output_data.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  PERFORM alv_list_display.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                               " OUTPUT_DATA&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      FORM DISPLAY_RECORD                                           *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Display object associated with the current ALV line           *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM display_record USING is_selfield TYPE slis_selfield.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  READ TABLE gt_alv1_data INDEX is_selfield-tabindex.&lt;/P&gt;&lt;P&gt;  CHECK sy-subrc = 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;!!! SAMPLE IMPLEMENTATION FOR DISPLAYING FI DOCUMENTS:&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  SET PARAMETER ID 'BUK' FIELD gt_alv1_data-vbeln.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;set parameter id 'BLN' field gt_alv1_data-belnr.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;set parameter id 'GJR' field gt_alv1_data-gjahr.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                               " DISPLAY_RECORD&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      FORM ALV_LIST_DISPLAY                                         *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Invoke main ALV function to format and show the report        *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM alv_list_display.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA: ls_layout      TYPE slis_layout_alv,&lt;/P&gt;&lt;P&gt;        ls_print       TYPE slis_print_alv,&lt;/P&gt;&lt;P&gt;        ls_keyinfo     TYPE slis_keyinfo_alv,&lt;/P&gt;&lt;P&gt;        lt_fieldcat    TYPE slis_t_fieldcat_alv,&lt;/P&gt;&lt;P&gt;        lt_exctab      TYPE slis_t_extab,&lt;/P&gt;&lt;P&gt;        lt_sorttab     TYPE slis_t_sortinfo_alv,&lt;/P&gt;&lt;P&gt;        lt_events      TYPE slis_t_event.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  PERFORM alv_init_report_events TABLES   lt_events.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  PERFORM alv_init_report_layout TABLES   lt_fieldcat&lt;/P&gt;&lt;P&gt;                                          lt_exctab&lt;/P&gt;&lt;P&gt;                                          lt_sorttab&lt;/P&gt;&lt;P&gt;                                 CHANGING ls_layout&lt;/P&gt;&lt;P&gt;                                          ls_print&lt;/P&gt;&lt;P&gt;                                          ls_keyinfo.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      i_interface_check        = ' '&lt;/P&gt;&lt;P&gt;      i_callback_program       = sy-cprog&lt;/P&gt;&lt;P&gt;      is_layout                = ls_layout&lt;/P&gt;&lt;P&gt;      it_fieldcat              = lt_fieldcat&lt;/P&gt;&lt;P&gt;      it_excluding             = lt_exctab&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    IT_SPECIAL_GROUPS        =&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      it_sort                  = lt_sorttab&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    IT_FILTER                =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    IS_SEL_HIDE              =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    I_SCREEN_START_COLUMN    = 0&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    I_SCREEN_START_LINE      = 0&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    I_SCREEN_END_COLUMN      = 0&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    I_SCREEN_END_LINE        = 0&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    I_DEFAULT                = 'X'&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      i_save                   = 'A'&lt;/P&gt;&lt;P&gt;      is_variant               = gs_variant&lt;/P&gt;&lt;P&gt;      it_events                = lt_events&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    IT_EVENT_EXIT            =&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      i_tabname_header         = 'GT_ALV1_DATA'&lt;/P&gt;&lt;P&gt;      i_tabname_item           = 'GT_ALV2_DATA'&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    I_STRUCTURE_NAME_HEADER  =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    I_STRUCTURE_NAME_ITEM    =&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      is_keyinfo               =  ls_keyinfo&lt;/P&gt;&lt;P&gt;      is_print                 =  ls_print&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    IS_REPREP_ID             =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  IMPORTING&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    E_EXIT_CAUSED_BY_CALLER  =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    ES_EXIT_CAUSED_BY_USER   =&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    TABLES&lt;/P&gt;&lt;P&gt;      t_outtab_header          = gt_alv1_data&lt;/P&gt;&lt;P&gt;      t_outtab_item            = gt_alv2_data.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  EXCEPTIONS&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    PROGRAM_ERROR            = 1&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    OTHERS                   = 2&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                           " ALV_LIST_DISPLAY&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      FORM ALV_INIT_REPORT_LAYOUT                                   *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Set up report layout definition for ALV_LIST_DISPLAY          *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; &amp;lt;-- OT_FIELDCAT list of fields                                     *&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; &amp;lt;-- OT_EXCTAB   excluded menu options                              *&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; &amp;lt;-- OT_SORTTAB  sorting/grouping definition                        *&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; &amp;lt;-- OS_LAYOUT   global report layout settings                      *&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; &amp;lt;-- OS_PRINT    global report printout settings                    *&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; &amp;lt;-- OS_KEYINFO  itab key fields (required only for hier.lists)     *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM alv_init_report_layout TABLES ot_fieldcat TYPE slis_t_fieldcat_alv&lt;/P&gt;&lt;P&gt;                                   ot_exctab   TYPE slis_t_extab&lt;/P&gt;&lt;P&gt;                                   ot_sorttab  TYPE slis_t_sortinfo_alv&lt;/P&gt;&lt;P&gt;                          CHANGING cs_layout   TYPE slis_layout_alv&lt;/P&gt;&lt;P&gt;                                   cs_print    TYPE slis_print_alv&lt;/P&gt;&lt;P&gt;                                   cs_keyinfo  TYPE slis_keyinfo_alv.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;add menu items to be excluded to ot_exctab.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  REFRESH ot_exctab.&lt;/P&gt;&lt;P&gt;  REFRESH ot_fieldcat.&lt;/P&gt;&lt;P&gt;  REFRESH ot_sorttab.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;!!!&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;!!! List all ALV data fields for display here:&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;!!!&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;DD-struct  = data dictionary structure name&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;DD-field   = field of data dictionary structure&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;itab       = internal table for output data&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;itab-field = internal table field name&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;key        = set to 'X' if key field&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;sum        = set to 'X' for totals&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;hid        = set to 'X' if field is initially hidden&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;row        = list row number (multi-line list if &amp;gt;1)&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;DD-struct    DD-field     itab         itab-field  key sum hid row&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;------------------------------------------------------------------&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  PERFORM alv_build_fieldcat TABLES ot_fieldcat USING:&lt;/P&gt;&lt;P&gt; 'VBAK'       'VBELN'      'GT_ALV1_DATA' 'VBELN'     ' ' ' ' ' ' 1 ,&lt;/P&gt;&lt;P&gt; 'VBAK'       'ERDAT'      'GT_ALV1_DATA' 'ERDAT'     ' ' ' ' ' ' 1 ,&lt;/P&gt;&lt;P&gt; 'VBAK'       'ERZET'      'GT_ALV1_DATA' 'ERZET'     ' ' ' ' ' ' 1 ,&lt;/P&gt;&lt;P&gt; 'VBAK'       'ERNAM'      'GT_ALV1_DATA' 'ERNAM'     ' ' ' ' ' ' 1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  PERFORM alv_build_fieldcat TABLES ot_fieldcat USING:&lt;/P&gt;&lt;P&gt; 'MARA'       'MATNR'      'GT_ALV2_DATA' 'MATNR'     ' ' ' ' ' ' 1 .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;!!!&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;!!! List all ALV data fields for sorting/grouping here&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;!!!&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;itab       = internal table for output data&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;itab-field = internal table field name&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;up         = sort ascending&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;down       = sort descending&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;grp        = group by&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;comp       = group initially compressed&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;pos        = field position in sort sequence&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;itab                   field              up down grp comp        pos&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;---------------------------------------------------------------------&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  PERFORM alv_build_sorttab TABLES ot_sorttab USING:&lt;/P&gt;&lt;P&gt; 'GT_ALV1_DATA'         'VBELN'             'X' ' ' ' ' ' '           1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  PERFORM alv_build_sorttab TABLES ot_sorttab USING:&lt;/P&gt;&lt;P&gt; 'GT_ALV2_DATA'         'MATNR'             'X' ' ' ' ' ' '           1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;!!! key definition - required only for hierarchical display (2 itabs)&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  cs_keyinfo-header01 = 'VBELN' .&lt;/P&gt;&lt;P&gt;  cs_keyinfo-item01   = 'MATNR' .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;!!! See the declaration of type SLIS_LAYOUT_ALV and set the fields&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;!!! of OS_LAYOUT record to change list-level attributes&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;os_layout-no_colhead     = 'X'.         " no headings&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  cs_layout-zebra          = 'X'.         " stripped pattern&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;os_layout-no_vline       = 'X'.         " columns separated by space&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;os_layout-totals_only    = 'X'.         " show only totals&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;os_layout-totals_text    = 'Total'.     " totals line label&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;os_layout-subtotals_text = 'Subtotal'.  " subtotals line label&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;os_layout-subtotals_text = 'Subtotal'.  " subtotals line label&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;os_layout-key_hotspot    = 'X'.         " keys as hotspot&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;os_layout-expand_all     = 'X'.         " Expand all positions&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;os_layout...&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  cs_print-no_print_selinfos = 'X'.       " Skip selection statistics&lt;/P&gt;&lt;P&gt;  cs_print-no_print_listinfos = 'X'.      " Skip list statistics&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;os_print-...&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                               " INIT_REPORT_LAYOUT&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      FORM ALV_BUILD_FIELDCAT                                       *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Format a single line for ALV_INIT_REPORT_LAYOUT               *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM alv_build_fieldcat TABLES ot_fieldcat&lt;/P&gt;&lt;P&gt;                        USING  iv_ref_tabname   "ref to a table/field&lt;/P&gt;&lt;P&gt;                               iv_ref_fieldname&lt;/P&gt;&lt;P&gt;                               iv_tabname     "actual table/field name&lt;/P&gt;&lt;P&gt;                               iv_fieldname&lt;/P&gt;&lt;P&gt;                               iv_key&lt;/P&gt;&lt;P&gt;                               iv_do_sum&lt;/P&gt;&lt;P&gt;                               iv_no_out&lt;/P&gt;&lt;P&gt;                               iv_row_pos.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;status variables for auto-numbering of field column position&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;(column number reset when a new table or row begins)&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  STATICS: sv_last_tabname TYPE slis_tabname,&lt;/P&gt;&lt;P&gt;           sv_last_row_pos TYPE i,&lt;/P&gt;&lt;P&gt;           sv_current_col  TYPE i.&lt;/P&gt;&lt;P&gt;  IF sv_last_tabname &amp;lt;&amp;gt; iv_tabname OR sv_last_row_pos &amp;lt;&amp;gt; iv_row_pos.&lt;/P&gt;&lt;P&gt;    sv_current_col = 1.&lt;/P&gt;&lt;P&gt;  ELSE.&lt;/P&gt;&lt;P&gt;    ADD 1 TO sv_current_col.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;  sv_last_tabname = iv_tabname.&lt;/P&gt;&lt;P&gt;  sv_last_row_pos = iv_row_pos.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA: ls_fieldcat    TYPE slis_fieldcat_alv.&lt;/P&gt;&lt;P&gt;  DATA: lv_fieldname   TYPE slis_fieldname.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  lv_fieldname = iv_fieldname.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;!!!&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;!!! List all the special formatting requirements in cases below&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;!!!&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;case lv_fieldname.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  when 'WRBTR'.                      "&amp;lt;-- link with currency required&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    ls_fieldcat-cfieldname = 'WAERS'.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    ls_fieldcat-ctabname   = iv_tabname.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  when 'HKONT'.                     "&amp;lt;-- change default column header&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    ls_fieldcat-seltext_s  = 'GL Acc.'.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    ls_fieldcat-ddictxt    = 'S'.          " (S)hort (M)iddle (L)ong&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  when 'SOME_NUMBER'                 "&amp;lt;-- change number formatting&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    ls_fieldcat-nosign     = 'X'.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    ls_fieldcat-nozero     = 'X'.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    ls_fieldcat-just       = 'L'.         " (L)eft (R)ight (C)enter&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;endcase.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ls_fieldcat-ref_tabname   = iv_ref_tabname.&lt;/P&gt;&lt;P&gt;  ls_fieldcat-ref_fieldname = iv_ref_fieldname.&lt;/P&gt;&lt;P&gt;  ls_fieldcat-tabname       = iv_tabname.&lt;/P&gt;&lt;P&gt;  ls_fieldcat-fieldname     = iv_fieldname.&lt;/P&gt;&lt;P&gt;  ls_fieldcat-key           = iv_key.&lt;/P&gt;&lt;P&gt;  ls_fieldcat-do_sum        = iv_do_sum.&lt;/P&gt;&lt;P&gt;  ls_fieldcat-no_out        = iv_no_out.&lt;/P&gt;&lt;P&gt;  ls_fieldcat-row_pos       = iv_row_pos.&lt;/P&gt;&lt;P&gt;  ls_fieldcat-col_pos       = sv_current_col.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  APPEND ls_fieldcat TO ot_fieldcat.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                          " ALV_BUILD_FIELDCAT&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      FORM ALV_BUILD_SORTTAB                                        *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Set up sorting information for ALV_INIT_REPORT_LAYOUT         *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM alv_build_sorttab TABLES ot_sorttab TYPE slis_t_sortinfo_alv&lt;/P&gt;&lt;P&gt;                       USING  iv_tabname   TYPE slis_fieldname&lt;/P&gt;&lt;P&gt;                              iv_fieldname TYPE slis_fieldname&lt;/P&gt;&lt;P&gt;                              iv_up        TYPE c&lt;/P&gt;&lt;P&gt;                              iv_down      TYPE c&lt;/P&gt;&lt;P&gt;                              iv_subtot    TYPE c&lt;/P&gt;&lt;P&gt;                              iv_comp      TYPE c&lt;/P&gt;&lt;P&gt;                              iv_spos      TYPE n.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ot_sorttab-spos      = iv_spos.&lt;/P&gt;&lt;P&gt;  ot_sorttab-fieldname = iv_fieldname.&lt;/P&gt;&lt;P&gt;  ot_sorttab-tabname   = iv_tabname.&lt;/P&gt;&lt;P&gt;  ot_sorttab-up        = iv_up.&lt;/P&gt;&lt;P&gt;  ot_sorttab-down      = iv_down.&lt;/P&gt;&lt;P&gt;  ot_sorttab-subtot    = iv_subtot.&lt;/P&gt;&lt;P&gt;  ot_sorttab-comp      = iv_comp.&lt;/P&gt;&lt;P&gt;  APPEND ot_sorttab.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                            " ALV_BUILD_SORTTAB&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      FORM ALV_INIT_REPORT_EVENTS                                   *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Set up program events for ALV_LIST_DISPLAY                    *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; &amp;lt;-- OT_EVENTS   list of events and associated report subroutines   *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM alv_init_report_events TABLES ot_events TYPE slis_t_event.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CLEAR   ot_events.&lt;/P&gt;&lt;P&gt;  REFRESH ot_events.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ot_events-name = slis_ev_user_command.&lt;/P&gt;&lt;P&gt;  ot_events-form = 'USER_COMMAND'.&lt;/P&gt;&lt;P&gt;  APPEND ot_events.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ot_events-name = slis_ev_pf_status_set.&lt;/P&gt;&lt;P&gt;  ot_events-form = ''.                         "'PF_STATUS_SET'.&lt;/P&gt;&lt;P&gt;  APPEND ot_events.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ot_events-name = slis_ev_top_of_list.&lt;/P&gt;&lt;P&gt;  ot_events-form = 'TOP_OF_LIST'.&lt;/P&gt;&lt;P&gt;  APPEND ot_events.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ot_events-name = slis_ev_end_of_list.&lt;/P&gt;&lt;P&gt;  ot_events-form = 'END_OF_LIST'.&lt;/P&gt;&lt;P&gt;  APPEND ot_events.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ot_events-name = slis_ev_top_of_page.&lt;/P&gt;&lt;P&gt;  ot_events-form = 'TOP_OF_PAGE'.&lt;/P&gt;&lt;P&gt;  APPEND ot_events.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ot_events-name = slis_ev_end_of_page.&lt;/P&gt;&lt;P&gt;  ot_events-form = 'END_OF_PAGE'.&lt;/P&gt;&lt;P&gt;  APPEND ot_events.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ot_events-name = slis_ev_foreign_top_of_page.&lt;/P&gt;&lt;P&gt;  ot_events-form = ''.&lt;/P&gt;&lt;P&gt;  APPEND ot_events.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ot_events-name = slis_ev_foreign_end_of_page.&lt;/P&gt;&lt;P&gt;  ot_events-form = ''.&lt;/P&gt;&lt;P&gt;  APPEND ot_events.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ot_events-name = slis_ev_top_of_coverpage.&lt;/P&gt;&lt;P&gt;  ot_events-form = ''.&lt;/P&gt;&lt;P&gt;  APPEND ot_events.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ot_events-name = slis_ev_end_of_coverpage.&lt;/P&gt;&lt;P&gt;  ot_events-form = ''.&lt;/P&gt;&lt;P&gt;  APPEND ot_events.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ot_events-name = slis_ev_before_line_output.&lt;/P&gt;&lt;P&gt;  ot_events-form = ''.&lt;/P&gt;&lt;P&gt;  APPEND ot_events.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ot_events-name = slis_ev_after_line_output.&lt;/P&gt;&lt;P&gt;  ot_events-form = ''.&lt;/P&gt;&lt;P&gt;  APPEND ot_events.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ot_events-name = slis_ev_caller_exit_at_start.&lt;/P&gt;&lt;P&gt;  ot_events-form = ''.&lt;/P&gt;&lt;P&gt;  APPEND ot_events.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ot_events-name = slis_ev_list_modify.&lt;/P&gt;&lt;P&gt;  ot_events-form = ''.&lt;/P&gt;&lt;P&gt;  APPEND ot_events.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ot_events-name = slis_ev_subtotal_text.&lt;/P&gt;&lt;P&gt;  ot_events-form = ''.&lt;/P&gt;&lt;P&gt;  APPEND ot_events.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                            " ALV_INIT_REPORT_EVENTS&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      FORM USER_COMMAND                                             *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Subroutine attached as callback form to ABAP List Viewer      *&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  --&amp;gt; UCOMM    - user command code passed from ALV                  *&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  --&amp;gt; SELFIELD - information record describing current line/field   *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM user_command USING value(iv_ucomm) LIKE sy-ucomm&lt;/P&gt;&lt;P&gt;                        is_selfield     TYPE slis_selfield.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CASE iv_ucomm.&lt;/P&gt;&lt;P&gt;    WHEN '&amp;amp;IC1'.                                  "ALV record selection&lt;/P&gt;&lt;P&gt;      PERFORM display_record USING is_selfield.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  when ...&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    ...&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  ENDCASE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                               " USER_COMMAND&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      FORM PF_STATUS_SET                                            *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Subroutine attached as callback form to ABAP List Viewer,     *&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      allows setting alternative menu.  If necessary:               *&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      1. Copy 'STANDARD' menu from SAPLKKBL and modify as required, *&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      2. Activate callback                                          *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM pf_status_set USING it_exctab TYPE slis_t_extab.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;set pf-status 'STANDARD' excluding it_exctab.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                               " PF_STATUS_SET&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      FORM TOP_OF_LIST                                              *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Subroutine attached as callback form to ABAP List Viewer,     *&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      executed once at the start of list output.                    *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM top_of_list.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA: lt_seltab TYPE STANDARD TABLE OF rsparams WITH HEADER LINE.&lt;/P&gt;&lt;P&gt;  DATA: lv_report LIKE sy-repid.&lt;/P&gt;&lt;P&gt;  lv_report = sy-repid.             "do not pass sy-repid to function!&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF p_box_up = 'X'. "display select options at report start&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CALL FUNCTION 'RS_REFRESH_FROM_SELECTOPTIONS'&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        curr_report     = lv_report&lt;/P&gt;&lt;P&gt;      TABLES&lt;/P&gt;&lt;P&gt;        selection_table = lt_seltab.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;remove 'technical' parameters with 'DELETE LT_SELTAB WHERE...'&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;before display, if necessary&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    CALL FUNCTION 'RS_LIST_SELECTION_TABLE'&lt;/P&gt;&lt;P&gt;       EXPORTING&lt;/P&gt;&lt;P&gt;            report        = lv_report&lt;/P&gt;&lt;P&gt;            seltext       = 'X'&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        dyn_range     =&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;            newpage       = ' '&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        screennr      = 1000&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;       TABLES&lt;/P&gt;&lt;P&gt;            sel_tab       = lt_seltab&lt;/P&gt;&lt;P&gt;       EXCEPTIONS&lt;/P&gt;&lt;P&gt;            sel_tab_empty = 1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ENDIF. "p_box_up = 'X'&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                               " TOP_OF_LIST&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      FORM END_OF_LIST                                              *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Subroutine attached as callback form to ABAP List Viewer      *&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      executed once at the end of list output.                      *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM end_of_list.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA: lt_seltab TYPE STANDARD TABLE OF rsparams WITH HEADER LINE.&lt;/P&gt;&lt;P&gt;  DATA: lv_report LIKE sy-repid.&lt;/P&gt;&lt;P&gt;  lv_report = sy-repid.             "do not pass sy-repid to function!&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF p_box_do = 'X'. "display select options at report end&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CALL FUNCTION 'RS_REFRESH_FROM_SELECTOPTIONS'&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        curr_report     = lv_report&lt;/P&gt;&lt;P&gt;      TABLES&lt;/P&gt;&lt;P&gt;        selection_table = lt_seltab.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;remove 'technical' parameters with 'DELETE LT_SELTAB WHERE...'&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;before display, if necessary&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    CALL FUNCTION 'RS_LIST_SELECTION_TABLE'&lt;/P&gt;&lt;P&gt;       EXPORTING&lt;/P&gt;&lt;P&gt;            report        = lv_report&lt;/P&gt;&lt;P&gt;            seltext       = 'X'&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        dyn_range     =&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;            newpage       = ' '&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        screennr      = 1000&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;       TABLES&lt;/P&gt;&lt;P&gt;            sel_tab       = lt_seltab&lt;/P&gt;&lt;P&gt;       EXCEPTIONS&lt;/P&gt;&lt;P&gt;            sel_tab_empty = 1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ENDIF. "p_box_do = 'X'&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                               " END_OF_LIST&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      FORM TOP_OF_PAGE                                              *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Subroutine attached as callback form to ABAP List Viewer      *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM top_of_page.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;standard Ingram Micro report page heading&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  DATA: lv_coco_pos TYPE i,          "CurPos of 'Company confidential'&lt;/P&gt;&lt;P&gt;        lv_title_pos TYPE i,           "CurPos of report title&lt;/P&gt;&lt;P&gt;        lv_title(70) TYPE c,           "Truncated report title&lt;/P&gt;&lt;P&gt;        lv_page_pos TYPE i,            "CurPos of page number&lt;/P&gt;&lt;P&gt;        lv_date_pos TYPE i,            "CurPos of date and time&lt;/P&gt;&lt;P&gt;        lv_page_no(10) TYPE c,&lt;/P&gt;&lt;P&gt;        lv_date(25) TYPE c,&lt;/P&gt;&lt;P&gt;        lv_time(20) TYPE c,&lt;/P&gt;&lt;P&gt;        lv_page(10) TYPE c.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;We may need to truncate title if the line size is &amp;lt; 81.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  IF sy-linsz &amp;lt; 81.&lt;/P&gt;&lt;P&gt;    lv_title = sy-title+0(50).&lt;/P&gt;&lt;P&gt;  ELSE.&lt;/P&gt;&lt;P&gt;    lv_title = sy-title.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Decide on positioning of text depending on width of page&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  lv_title_pos = ( sy-linsz / 2 ) - ( STRLEN( lv_title ) / 2 ).&lt;/P&gt;&lt;P&gt;  lv_coco_pos = sy-linsz - 20.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  FORMAT COLOR COL_HEADING INTENSIFIED ON.&lt;/P&gt;&lt;P&gt;  WRITE: / 'Ingram Micro',&lt;/P&gt;&lt;P&gt;           AT lv_title_pos lv_title,&lt;/P&gt;&lt;P&gt;           AT lv_coco_pos 'Company Confidential'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Setup data correctly in the correct format for the display fields.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  lv_page = sy-pagno.&lt;/P&gt;&lt;P&gt;  SHIFT lv_page LEFT DELETING LEADING ' '.&lt;/P&gt;&lt;P&gt;  CONCATENATE sy-datum&lt;EM&gt;6(2) sy-datum&lt;/EM&gt;4(2) sy-datum+0(4)&lt;/P&gt;&lt;P&gt;               INTO lv_date SEPARATED BY '.'.&lt;/P&gt;&lt;P&gt;  CONCATENATE sy-uzeit&lt;EM&gt;0(2) ':' sy-uzeit&lt;/EM&gt;2(2) INTO lv_time.&lt;/P&gt;&lt;P&gt;  CONCATENATE lv_date lv_time INTO lv_date SEPARATED BY ' '.&lt;/P&gt;&lt;P&gt;  CONCATENATE 'Page' lv_page INTO lv_page_no SEPARATED BY ' '.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Decide on positioning of text depending on width of page.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  lv_page_pos = sy-linsz - ( STRLEN( lv_page_no ) ).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  WRITE: / lv_date,&lt;/P&gt;&lt;P&gt;           AT lv_page_pos lv_page_no.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ULINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                               " TOP_OF_PAGE&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      FORM END_OF_PAGE                                              *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Subroutine attached as callback form to ABAP List Viewer      *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM end_of_page.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                               " END_OF_PAGE&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Form  ALV_VARIANT_EXISTENCE&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Reads ALV variant definition&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM alv_variant_existence  USING    iv_variant LIKE disvariant-variant&lt;/P&gt;&lt;P&gt;                            CHANGING os_variant LIKE disvariant.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CHECK NOT iv_variant IS INITIAL.&lt;/P&gt;&lt;P&gt;  os_variant-report  = sy-repid.&lt;/P&gt;&lt;P&gt;  os_variant-variant = iv_variant.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF iv_variant CP '/*'.    "user-specific variants begin with slash&lt;/P&gt;&lt;P&gt;    os_variant-username = sy-uname.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'REUSE_ALV_VARIANT_EXISTENCE'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      i_save        = 'A'&lt;/P&gt;&lt;P&gt;    CHANGING&lt;/P&gt;&lt;P&gt;      cs_variant    = os_variant&lt;/P&gt;&lt;P&gt;    EXCEPTIONS&lt;/P&gt;&lt;P&gt;      wrong_input   = 1&lt;/P&gt;&lt;P&gt;      not_found     = 2&lt;/P&gt;&lt;P&gt;      program_error = 3&lt;/P&gt;&lt;P&gt;      OTHERS        = 4.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;    MESSAGE e001(z9) WITH 'Please select a valid display variant.'.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                               " ALV_VARIANT_EXISTENCE&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      FORM ALV_VARIANT_F4                                           *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Display list of layout variants on report selection screen    *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM alv_variant_f4  CHANGING cv_varname  LIKE disvariant-variant&lt;/P&gt;&lt;P&gt;                              cs_variant  LIKE disvariant.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA: lv_exit(1) TYPE c.&lt;/P&gt;&lt;P&gt;  cs_variant-report = sy-repid.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'REUSE_ALV_VARIANT_F4'&lt;/P&gt;&lt;P&gt;       EXPORTING&lt;/P&gt;&lt;P&gt;            is_variant          = cs_variant&lt;/P&gt;&lt;P&gt;            i_save              = 'A'&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;          it_default_fieldcat =&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;       IMPORTING&lt;/P&gt;&lt;P&gt;            e_exit              = lv_exit&lt;/P&gt;&lt;P&gt;            es_variant          = cs_variant&lt;/P&gt;&lt;P&gt;       EXCEPTIONS&lt;/P&gt;&lt;P&gt;            not_found = 2.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF sy-subrc = 2.&lt;/P&gt;&lt;P&gt;    MESSAGE ID sy-msgid TYPE 'S'      NUMBER sy-msgno&lt;/P&gt;&lt;P&gt;            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.&lt;/P&gt;&lt;P&gt;  ELSE.&lt;/P&gt;&lt;P&gt;    IF lv_exit = space.&lt;/P&gt;&lt;P&gt;      cv_varname = cs_variant-variant.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                                " ALV_VARIANT_F4&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;regards,&lt;/P&gt;&lt;P&gt;ruchika&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Fri, 22 Jun 2007 11:50:47 GMT</pubDate>
    <dc:creator>Former Member</dc:creator>
    <dc:date>2007-06-22T11:50:47Z</dc:date>
    <item>
      <title>Interactive alv</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/interactive-alv/m-p/2406986#M536597</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;     I m working on a alv grid report for epm module well report is working fine but now user wants it as a interactive when he clicks on first field that is equnr (equipment no) then there must be call a transaction IE02 so that he can change the entry.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;means my problem is to get that transaction by double clicking on that first field.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;please suggest me the solution or if u hav any code regarding that.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;thanks in advance.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;regards.&lt;/P&gt;&lt;P&gt;vijay&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;rewards will b sure for each helpfull answer*&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 22 Jun 2007 11:43:31 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/interactive-alv/m-p/2406986#M536597</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-06-22T11:43:31Z</dc:date>
    </item>
    <item>
      <title>Re: Interactive alv</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/interactive-alv/m-p/2406987#M536598</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;You need to do event handling on the ALV grid, please check some program in the package SLIS for that purpose.&lt;/P&gt;&lt;P&gt;Check programs following programs in this package.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;BCALV_TEST_LIST_EVENTS&lt;/P&gt;&lt;P&gt;BCALV_TEST_LIST_EVENTS2&lt;/P&gt;&lt;P&gt;BCALV_TEST_GRID_EVENTS&lt;/P&gt;&lt;P&gt;BCALV_TEST_FULLSCREEN_EVENTS&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;And once you have created event handling you can use &lt;/P&gt;&lt;P&gt;SET PARAMETER to store the value into SAP memory and then&lt;/P&gt;&lt;P&gt;use CALL TRANSACTION to call the transaction and here in the called trasaction &lt;/P&gt;&lt;P&gt;you can use GET PARAMETER to get the value you stored.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Sesh&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 22 Jun 2007 11:46:06 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/interactive-alv/m-p/2406987#M536598</guid>
      <dc:creator>seshatalpasai_madala</dc:creator>
      <dc:date>2007-06-22T11:46:06Z</dc:date>
    </item>
    <item>
      <title>Re: Interactive alv</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/interactive-alv/m-p/2406988#M536599</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;hey vijay,&lt;/P&gt;&lt;P&gt;check out this link. It might be helpful.&lt;/P&gt;&lt;P&gt;Feel free to ask any further doubts regarding the same.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.sapfans.com/forums/viewtopic.php?t=11601" target="test_blank"&gt;http://www.sapfans.com/forums/viewtopic.php?t=11601&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.sapfans.com/forums/viewtopic.php?t=23010" target="test_blank"&gt;http://www.sapfans.com/forums/viewtopic.php?t=23010&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Roshani&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 22 Jun 2007 11:50:38 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/interactive-alv/m-p/2406988#M536599</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-06-22T11:50:38Z</dc:date>
    </item>
    <item>
      <title>Re: Interactive alv</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/interactive-alv/m-p/2406989#M536600</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;hi,&lt;/P&gt;&lt;P&gt;plz run the following code and click on first coloum of output.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;REPORT yfi7g_ing_mic_001 .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;TABLES: vbak .&lt;/P&gt;&lt;P&gt;TABLES: mara .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;TYPES: BEGIN OF tp_vbak ,&lt;/P&gt;&lt;P&gt;      vbeln TYPE vbak-vbeln,&lt;/P&gt;&lt;P&gt;      erdat TYPE vbak-erdat,&lt;/P&gt;&lt;P&gt;      erzet TYPE vbak-erzet,&lt;/P&gt;&lt;P&gt;      ernam TYPE vbak-ernam,&lt;/P&gt;&lt;P&gt;      vbtyp TYPE vbak-vbtyp,&lt;/P&gt;&lt;P&gt;      trvog TYPE vbak-trvog,&lt;/P&gt;&lt;P&gt;      auart TYPE vbak-auart,&lt;/P&gt;&lt;P&gt;      lifsk TYPE vbak-lifsk,&lt;/P&gt;&lt;P&gt;      faksk TYPE vbak-faksk,&lt;/P&gt;&lt;P&gt;      waerk TYPE vbak-waerk,&lt;/P&gt;&lt;P&gt;      vkorg TYPE vbak-vkorg,&lt;/P&gt;&lt;P&gt;      kunnr TYPE vbak-kunnr,&lt;/P&gt;&lt;P&gt;      vgbel TYPE vbak-vgbel,&lt;/P&gt;&lt;P&gt;      vgtyp TYPE vbak-vgtyp,&lt;/P&gt;&lt;P&gt;END OF tp_vbak .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;TYPES: BEGIN OF tp_mara ,&lt;/P&gt;&lt;P&gt;        matnr TYPE mara-matnr,&lt;/P&gt;&lt;P&gt;END OF tp_mara .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;TYPES: BEGIN OF tp_alv1_data.&lt;/P&gt;&lt;P&gt;INCLUDE TYPE tp_vbak .&lt;/P&gt;&lt;P&gt;TYPES: END OF tp_alv1_data.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;TYPES: BEGIN OF tp_alv2_data.&lt;/P&gt;&lt;P&gt;INCLUDE TYPE tp_mara .&lt;/P&gt;&lt;P&gt;TYPES: END OF tp_alv2_data.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;TYPE-POOLS: slis.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: gt_vbak TYPE STANDARD TABLE OF tp_vbak WITH HEADER LINE.&lt;/P&gt;&lt;P&gt;DATA: gt_mara TYPE STANDARD TABLE OF tp_mara WITH HEADER LINE.&lt;/P&gt;&lt;P&gt;DATA: gs_variant LIKE disvariant.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: gt_alv1_data TYPE STANDARD TABLE OF tp_alv1_data WITH HEADER LINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: gt_alv2_data TYPE STANDARD TABLE OF tp_alv2_data WITH HEADER LINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;SELECTION-SCREEN                                                     *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;BLOCK b0                                                             *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN BEGIN OF BLOCK b0 WITH FRAME.&lt;/P&gt;&lt;P&gt;SELECT-OPTIONS: s_vbeln FOR vbak-vbeln.        "&amp;lt;field not defined?&amp;gt;&lt;/P&gt;&lt;P&gt;PARAMETERS: p_matnr LIKE mara-matnr.           "&amp;lt;field not defined?&amp;gt;&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN END OF BLOCK b0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;BLOCK bvar                                                           *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN BEGIN OF BLOCK bvar WITH FRAME.&lt;/P&gt;&lt;P&gt;PARAMETERS: p_vari  LIKE disvariant-variant.&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN END OF BLOCK bvar.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;BLOCK bbox                                                           *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN BEGIN OF BLOCK bbox WITH FRAME.&lt;/P&gt;&lt;P&gt;PARAMETERS: p_box_up  RADIOBUTTON GROUP b1,&lt;/P&gt;&lt;P&gt;            p_box_do  RADIOBUTTON GROUP b1 DEFAULT 'X',&lt;/P&gt;&lt;P&gt;            p_box_no  RADIOBUTTON GROUP b1.&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN END OF BLOCK bbox.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      AT SELECTION-SCREEN ON P_VARI                                 *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;AT SELECTION-SCREEN ON p_vari.&lt;/P&gt;&lt;P&gt;  PERFORM alv_variant_existence USING    p_vari&lt;/P&gt;&lt;P&gt;                                CHANGING gs_variant.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      AT SELECTION-SCREEN ON VALUE REQUEST FOR P_VARI               *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_vari.&lt;/P&gt;&lt;P&gt;  PERFORM alv_variant_f4 CHANGING p_vari&lt;/P&gt;&lt;P&gt;                                  gs_variant.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;INITIALIZATION                                                       *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;INITIALIZATION.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;START-OF-SELECTION                                                   *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;START-OF-SELECTION.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  PERFORM authority_check.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  PERFORM get_control_data.&lt;/P&gt;&lt;P&gt;  PERFORM get_transaction_data.&lt;/P&gt;&lt;P&gt;  PERFORM process_transaction_data.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;END-OF-SELECTION                                                     *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;END-OF-SELECTION.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  PERFORM output_data.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; F   O   R   M   S                                                   *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      FORM AUTHORITY_CHECK                                          *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Perform authority checks for the report                       *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM authority_check.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;!!! Note: authorisation checks are application-dependent.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;!!! Some common cases are listed below - please select one of them&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;!!! or add new authorisation checks.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;!!! If the report is creating batch input session or using LDB&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;!!! it may be sufficient to use automatic SAP auth.checks.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Authorisation for displaying documents in a single company code&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;---------------------------------------------------------------&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;authority-check object 'F_BKPF_BUK'&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;       id 'BUKRS' field p_bukrs&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;       id 'ACTVT' field '03'.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;if sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  message e001(z9) with 'No authorisation to display documents'&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                        'in company code' p_bukrs.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;endif.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Displaying documents from a list of company codes (select-options)&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;------------------------------------------------------------------&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;call function 'Y_BUKRS_AUTHORITY_CHECK'&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   EXPORTING&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        ACTVT     = '03'&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        NOMESSAGE = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   tables&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        s_bukrs   = s_bukrs.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                              " AUTHORITY_CHECK&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      FORM GET_CONTROL_DATA                                         *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Read configuration etc.                                       *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM get_control_data.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                               " GET_CONTROL_DATA&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      FORM GET_TRANSACTION_DATA                                     *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Read documents etc.                                           *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM get_transaction_data.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;!!! Data selection statement below has been generated automatically.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;!!! Please check if it is correct and complete.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;!!! Use table joins or 'SELECT FOR ALL ENTRIES' when selecting data&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;!!! from related tables.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SELECT&lt;/P&gt;&lt;P&gt;            vbeln&lt;/P&gt;&lt;P&gt;            erdat&lt;/P&gt;&lt;P&gt;            erzet&lt;/P&gt;&lt;P&gt;            ernam&lt;/P&gt;&lt;P&gt;   FROM vbak&lt;/P&gt;&lt;P&gt;      INTO CORRESPONDING FIELDS OF TABLE gt_vbak&lt;/P&gt;&lt;P&gt;      .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CHECK NOT gt_vbak[] IS INITIAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SELECT&lt;/P&gt;&lt;P&gt;            matnr&lt;/P&gt;&lt;P&gt;   FROM mara&lt;/P&gt;&lt;P&gt;      INTO CORRESPONDING FIELDS OF TABLE gt_mara&lt;/P&gt;&lt;P&gt;      FOR ALL ENTRIES IN gt_vbak&lt;/P&gt;&lt;P&gt;      WHERE ernam = gt_vbak-ernam&lt;/P&gt;&lt;P&gt;      .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                               " GET_TRANSACTION_DATA&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      FORM PROCESS_TRANSACTION_DATA                                 *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      ........                                                      *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM process_transaction_data.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  LOOP AT gt_vbak .&lt;/P&gt;&lt;P&gt;    MOVE-CORRESPONDING gt_vbak TO gt_alv1_data .&lt;/P&gt;&lt;P&gt;    APPEND gt_alv1_data .&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  FREE gt_vbak .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  LOOP AT gt_mara .&lt;/P&gt;&lt;P&gt;    MOVE-CORRESPONDING gt_mara TO gt_alv2_data .&lt;/P&gt;&lt;P&gt;    APPEND gt_alv2_data .&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  FREE gt_mara .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                               " PROCESS_TRANSACTION_DATA&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      FORM OUTPUT_DATA                                              *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      ........                                                      *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM output_data.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  PERFORM alv_list_display.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                               " OUTPUT_DATA&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      FORM DISPLAY_RECORD                                           *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Display object associated with the current ALV line           *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM display_record USING is_selfield TYPE slis_selfield.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  READ TABLE gt_alv1_data INDEX is_selfield-tabindex.&lt;/P&gt;&lt;P&gt;  CHECK sy-subrc = 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;!!! SAMPLE IMPLEMENTATION FOR DISPLAYING FI DOCUMENTS:&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  SET PARAMETER ID 'BUK' FIELD gt_alv1_data-vbeln.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;set parameter id 'BLN' field gt_alv1_data-belnr.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;set parameter id 'GJR' field gt_alv1_data-gjahr.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                               " DISPLAY_RECORD&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      FORM ALV_LIST_DISPLAY                                         *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Invoke main ALV function to format and show the report        *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM alv_list_display.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA: ls_layout      TYPE slis_layout_alv,&lt;/P&gt;&lt;P&gt;        ls_print       TYPE slis_print_alv,&lt;/P&gt;&lt;P&gt;        ls_keyinfo     TYPE slis_keyinfo_alv,&lt;/P&gt;&lt;P&gt;        lt_fieldcat    TYPE slis_t_fieldcat_alv,&lt;/P&gt;&lt;P&gt;        lt_exctab      TYPE slis_t_extab,&lt;/P&gt;&lt;P&gt;        lt_sorttab     TYPE slis_t_sortinfo_alv,&lt;/P&gt;&lt;P&gt;        lt_events      TYPE slis_t_event.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  PERFORM alv_init_report_events TABLES   lt_events.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  PERFORM alv_init_report_layout TABLES   lt_fieldcat&lt;/P&gt;&lt;P&gt;                                          lt_exctab&lt;/P&gt;&lt;P&gt;                                          lt_sorttab&lt;/P&gt;&lt;P&gt;                                 CHANGING ls_layout&lt;/P&gt;&lt;P&gt;                                          ls_print&lt;/P&gt;&lt;P&gt;                                          ls_keyinfo.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      i_interface_check        = ' '&lt;/P&gt;&lt;P&gt;      i_callback_program       = sy-cprog&lt;/P&gt;&lt;P&gt;      is_layout                = ls_layout&lt;/P&gt;&lt;P&gt;      it_fieldcat              = lt_fieldcat&lt;/P&gt;&lt;P&gt;      it_excluding             = lt_exctab&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    IT_SPECIAL_GROUPS        =&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      it_sort                  = lt_sorttab&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    IT_FILTER                =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    IS_SEL_HIDE              =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    I_SCREEN_START_COLUMN    = 0&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    I_SCREEN_START_LINE      = 0&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    I_SCREEN_END_COLUMN      = 0&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    I_SCREEN_END_LINE        = 0&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    I_DEFAULT                = 'X'&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      i_save                   = 'A'&lt;/P&gt;&lt;P&gt;      is_variant               = gs_variant&lt;/P&gt;&lt;P&gt;      it_events                = lt_events&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    IT_EVENT_EXIT            =&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      i_tabname_header         = 'GT_ALV1_DATA'&lt;/P&gt;&lt;P&gt;      i_tabname_item           = 'GT_ALV2_DATA'&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    I_STRUCTURE_NAME_HEADER  =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    I_STRUCTURE_NAME_ITEM    =&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      is_keyinfo               =  ls_keyinfo&lt;/P&gt;&lt;P&gt;      is_print                 =  ls_print&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    IS_REPREP_ID             =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  IMPORTING&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    E_EXIT_CAUSED_BY_CALLER  =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    ES_EXIT_CAUSED_BY_USER   =&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    TABLES&lt;/P&gt;&lt;P&gt;      t_outtab_header          = gt_alv1_data&lt;/P&gt;&lt;P&gt;      t_outtab_item            = gt_alv2_data.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  EXCEPTIONS&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    PROGRAM_ERROR            = 1&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    OTHERS                   = 2&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                           " ALV_LIST_DISPLAY&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      FORM ALV_INIT_REPORT_LAYOUT                                   *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Set up report layout definition for ALV_LIST_DISPLAY          *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; &amp;lt;-- OT_FIELDCAT list of fields                                     *&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; &amp;lt;-- OT_EXCTAB   excluded menu options                              *&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; &amp;lt;-- OT_SORTTAB  sorting/grouping definition                        *&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; &amp;lt;-- OS_LAYOUT   global report layout settings                      *&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; &amp;lt;-- OS_PRINT    global report printout settings                    *&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; &amp;lt;-- OS_KEYINFO  itab key fields (required only for hier.lists)     *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM alv_init_report_layout TABLES ot_fieldcat TYPE slis_t_fieldcat_alv&lt;/P&gt;&lt;P&gt;                                   ot_exctab   TYPE slis_t_extab&lt;/P&gt;&lt;P&gt;                                   ot_sorttab  TYPE slis_t_sortinfo_alv&lt;/P&gt;&lt;P&gt;                          CHANGING cs_layout   TYPE slis_layout_alv&lt;/P&gt;&lt;P&gt;                                   cs_print    TYPE slis_print_alv&lt;/P&gt;&lt;P&gt;                                   cs_keyinfo  TYPE slis_keyinfo_alv.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;add menu items to be excluded to ot_exctab.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  REFRESH ot_exctab.&lt;/P&gt;&lt;P&gt;  REFRESH ot_fieldcat.&lt;/P&gt;&lt;P&gt;  REFRESH ot_sorttab.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;!!!&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;!!! List all ALV data fields for display here:&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;!!!&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;DD-struct  = data dictionary structure name&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;DD-field   = field of data dictionary structure&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;itab       = internal table for output data&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;itab-field = internal table field name&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;key        = set to 'X' if key field&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;sum        = set to 'X' for totals&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;hid        = set to 'X' if field is initially hidden&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;row        = list row number (multi-line list if &amp;gt;1)&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;DD-struct    DD-field     itab         itab-field  key sum hid row&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;------------------------------------------------------------------&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  PERFORM alv_build_fieldcat TABLES ot_fieldcat USING:&lt;/P&gt;&lt;P&gt; 'VBAK'       'VBELN'      'GT_ALV1_DATA' 'VBELN'     ' ' ' ' ' ' 1 ,&lt;/P&gt;&lt;P&gt; 'VBAK'       'ERDAT'      'GT_ALV1_DATA' 'ERDAT'     ' ' ' ' ' ' 1 ,&lt;/P&gt;&lt;P&gt; 'VBAK'       'ERZET'      'GT_ALV1_DATA' 'ERZET'     ' ' ' ' ' ' 1 ,&lt;/P&gt;&lt;P&gt; 'VBAK'       'ERNAM'      'GT_ALV1_DATA' 'ERNAM'     ' ' ' ' ' ' 1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  PERFORM alv_build_fieldcat TABLES ot_fieldcat USING:&lt;/P&gt;&lt;P&gt; 'MARA'       'MATNR'      'GT_ALV2_DATA' 'MATNR'     ' ' ' ' ' ' 1 .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;!!!&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;!!! List all ALV data fields for sorting/grouping here&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;!!!&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;itab       = internal table for output data&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;itab-field = internal table field name&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;up         = sort ascending&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;down       = sort descending&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;grp        = group by&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;comp       = group initially compressed&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;pos        = field position in sort sequence&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;itab                   field              up down grp comp        pos&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;---------------------------------------------------------------------&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  PERFORM alv_build_sorttab TABLES ot_sorttab USING:&lt;/P&gt;&lt;P&gt; 'GT_ALV1_DATA'         'VBELN'             'X' ' ' ' ' ' '           1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  PERFORM alv_build_sorttab TABLES ot_sorttab USING:&lt;/P&gt;&lt;P&gt; 'GT_ALV2_DATA'         'MATNR'             'X' ' ' ' ' ' '           1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;!!! key definition - required only for hierarchical display (2 itabs)&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  cs_keyinfo-header01 = 'VBELN' .&lt;/P&gt;&lt;P&gt;  cs_keyinfo-item01   = 'MATNR' .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;!!! See the declaration of type SLIS_LAYOUT_ALV and set the fields&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;!!! of OS_LAYOUT record to change list-level attributes&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;os_layout-no_colhead     = 'X'.         " no headings&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  cs_layout-zebra          = 'X'.         " stripped pattern&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;os_layout-no_vline       = 'X'.         " columns separated by space&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;os_layout-totals_only    = 'X'.         " show only totals&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;os_layout-totals_text    = 'Total'.     " totals line label&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;os_layout-subtotals_text = 'Subtotal'.  " subtotals line label&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;os_layout-subtotals_text = 'Subtotal'.  " subtotals line label&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;os_layout-key_hotspot    = 'X'.         " keys as hotspot&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;os_layout-expand_all     = 'X'.         " Expand all positions&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;os_layout...&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  cs_print-no_print_selinfos = 'X'.       " Skip selection statistics&lt;/P&gt;&lt;P&gt;  cs_print-no_print_listinfos = 'X'.      " Skip list statistics&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;os_print-...&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                               " INIT_REPORT_LAYOUT&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      FORM ALV_BUILD_FIELDCAT                                       *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Format a single line for ALV_INIT_REPORT_LAYOUT               *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM alv_build_fieldcat TABLES ot_fieldcat&lt;/P&gt;&lt;P&gt;                        USING  iv_ref_tabname   "ref to a table/field&lt;/P&gt;&lt;P&gt;                               iv_ref_fieldname&lt;/P&gt;&lt;P&gt;                               iv_tabname     "actual table/field name&lt;/P&gt;&lt;P&gt;                               iv_fieldname&lt;/P&gt;&lt;P&gt;                               iv_key&lt;/P&gt;&lt;P&gt;                               iv_do_sum&lt;/P&gt;&lt;P&gt;                               iv_no_out&lt;/P&gt;&lt;P&gt;                               iv_row_pos.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;status variables for auto-numbering of field column position&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;(column number reset when a new table or row begins)&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  STATICS: sv_last_tabname TYPE slis_tabname,&lt;/P&gt;&lt;P&gt;           sv_last_row_pos TYPE i,&lt;/P&gt;&lt;P&gt;           sv_current_col  TYPE i.&lt;/P&gt;&lt;P&gt;  IF sv_last_tabname &amp;lt;&amp;gt; iv_tabname OR sv_last_row_pos &amp;lt;&amp;gt; iv_row_pos.&lt;/P&gt;&lt;P&gt;    sv_current_col = 1.&lt;/P&gt;&lt;P&gt;  ELSE.&lt;/P&gt;&lt;P&gt;    ADD 1 TO sv_current_col.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;  sv_last_tabname = iv_tabname.&lt;/P&gt;&lt;P&gt;  sv_last_row_pos = iv_row_pos.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA: ls_fieldcat    TYPE slis_fieldcat_alv.&lt;/P&gt;&lt;P&gt;  DATA: lv_fieldname   TYPE slis_fieldname.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  lv_fieldname = iv_fieldname.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;!!!&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;!!! List all the special formatting requirements in cases below&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;!!!&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;case lv_fieldname.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  when 'WRBTR'.                      "&amp;lt;-- link with currency required&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    ls_fieldcat-cfieldname = 'WAERS'.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    ls_fieldcat-ctabname   = iv_tabname.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  when 'HKONT'.                     "&amp;lt;-- change default column header&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    ls_fieldcat-seltext_s  = 'GL Acc.'.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    ls_fieldcat-ddictxt    = 'S'.          " (S)hort (M)iddle (L)ong&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  when 'SOME_NUMBER'                 "&amp;lt;-- change number formatting&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    ls_fieldcat-nosign     = 'X'.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    ls_fieldcat-nozero     = 'X'.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    ls_fieldcat-just       = 'L'.         " (L)eft (R)ight (C)enter&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;endcase.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ls_fieldcat-ref_tabname   = iv_ref_tabname.&lt;/P&gt;&lt;P&gt;  ls_fieldcat-ref_fieldname = iv_ref_fieldname.&lt;/P&gt;&lt;P&gt;  ls_fieldcat-tabname       = iv_tabname.&lt;/P&gt;&lt;P&gt;  ls_fieldcat-fieldname     = iv_fieldname.&lt;/P&gt;&lt;P&gt;  ls_fieldcat-key           = iv_key.&lt;/P&gt;&lt;P&gt;  ls_fieldcat-do_sum        = iv_do_sum.&lt;/P&gt;&lt;P&gt;  ls_fieldcat-no_out        = iv_no_out.&lt;/P&gt;&lt;P&gt;  ls_fieldcat-row_pos       = iv_row_pos.&lt;/P&gt;&lt;P&gt;  ls_fieldcat-col_pos       = sv_current_col.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  APPEND ls_fieldcat TO ot_fieldcat.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                          " ALV_BUILD_FIELDCAT&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      FORM ALV_BUILD_SORTTAB                                        *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Set up sorting information for ALV_INIT_REPORT_LAYOUT         *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM alv_build_sorttab TABLES ot_sorttab TYPE slis_t_sortinfo_alv&lt;/P&gt;&lt;P&gt;                       USING  iv_tabname   TYPE slis_fieldname&lt;/P&gt;&lt;P&gt;                              iv_fieldname TYPE slis_fieldname&lt;/P&gt;&lt;P&gt;                              iv_up        TYPE c&lt;/P&gt;&lt;P&gt;                              iv_down      TYPE c&lt;/P&gt;&lt;P&gt;                              iv_subtot    TYPE c&lt;/P&gt;&lt;P&gt;                              iv_comp      TYPE c&lt;/P&gt;&lt;P&gt;                              iv_spos      TYPE n.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ot_sorttab-spos      = iv_spos.&lt;/P&gt;&lt;P&gt;  ot_sorttab-fieldname = iv_fieldname.&lt;/P&gt;&lt;P&gt;  ot_sorttab-tabname   = iv_tabname.&lt;/P&gt;&lt;P&gt;  ot_sorttab-up        = iv_up.&lt;/P&gt;&lt;P&gt;  ot_sorttab-down      = iv_down.&lt;/P&gt;&lt;P&gt;  ot_sorttab-subtot    = iv_subtot.&lt;/P&gt;&lt;P&gt;  ot_sorttab-comp      = iv_comp.&lt;/P&gt;&lt;P&gt;  APPEND ot_sorttab.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                            " ALV_BUILD_SORTTAB&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      FORM ALV_INIT_REPORT_EVENTS                                   *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Set up program events for ALV_LIST_DISPLAY                    *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; &amp;lt;-- OT_EVENTS   list of events and associated report subroutines   *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM alv_init_report_events TABLES ot_events TYPE slis_t_event.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CLEAR   ot_events.&lt;/P&gt;&lt;P&gt;  REFRESH ot_events.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ot_events-name = slis_ev_user_command.&lt;/P&gt;&lt;P&gt;  ot_events-form = 'USER_COMMAND'.&lt;/P&gt;&lt;P&gt;  APPEND ot_events.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ot_events-name = slis_ev_pf_status_set.&lt;/P&gt;&lt;P&gt;  ot_events-form = ''.                         "'PF_STATUS_SET'.&lt;/P&gt;&lt;P&gt;  APPEND ot_events.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ot_events-name = slis_ev_top_of_list.&lt;/P&gt;&lt;P&gt;  ot_events-form = 'TOP_OF_LIST'.&lt;/P&gt;&lt;P&gt;  APPEND ot_events.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ot_events-name = slis_ev_end_of_list.&lt;/P&gt;&lt;P&gt;  ot_events-form = 'END_OF_LIST'.&lt;/P&gt;&lt;P&gt;  APPEND ot_events.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ot_events-name = slis_ev_top_of_page.&lt;/P&gt;&lt;P&gt;  ot_events-form = 'TOP_OF_PAGE'.&lt;/P&gt;&lt;P&gt;  APPEND ot_events.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ot_events-name = slis_ev_end_of_page.&lt;/P&gt;&lt;P&gt;  ot_events-form = 'END_OF_PAGE'.&lt;/P&gt;&lt;P&gt;  APPEND ot_events.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ot_events-name = slis_ev_foreign_top_of_page.&lt;/P&gt;&lt;P&gt;  ot_events-form = ''.&lt;/P&gt;&lt;P&gt;  APPEND ot_events.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ot_events-name = slis_ev_foreign_end_of_page.&lt;/P&gt;&lt;P&gt;  ot_events-form = ''.&lt;/P&gt;&lt;P&gt;  APPEND ot_events.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ot_events-name = slis_ev_top_of_coverpage.&lt;/P&gt;&lt;P&gt;  ot_events-form = ''.&lt;/P&gt;&lt;P&gt;  APPEND ot_events.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ot_events-name = slis_ev_end_of_coverpage.&lt;/P&gt;&lt;P&gt;  ot_events-form = ''.&lt;/P&gt;&lt;P&gt;  APPEND ot_events.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ot_events-name = slis_ev_before_line_output.&lt;/P&gt;&lt;P&gt;  ot_events-form = ''.&lt;/P&gt;&lt;P&gt;  APPEND ot_events.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ot_events-name = slis_ev_after_line_output.&lt;/P&gt;&lt;P&gt;  ot_events-form = ''.&lt;/P&gt;&lt;P&gt;  APPEND ot_events.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ot_events-name = slis_ev_caller_exit_at_start.&lt;/P&gt;&lt;P&gt;  ot_events-form = ''.&lt;/P&gt;&lt;P&gt;  APPEND ot_events.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ot_events-name = slis_ev_list_modify.&lt;/P&gt;&lt;P&gt;  ot_events-form = ''.&lt;/P&gt;&lt;P&gt;  APPEND ot_events.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ot_events-name = slis_ev_subtotal_text.&lt;/P&gt;&lt;P&gt;  ot_events-form = ''.&lt;/P&gt;&lt;P&gt;  APPEND ot_events.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                            " ALV_INIT_REPORT_EVENTS&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      FORM USER_COMMAND                                             *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Subroutine attached as callback form to ABAP List Viewer      *&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  --&amp;gt; UCOMM    - user command code passed from ALV                  *&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  --&amp;gt; SELFIELD - information record describing current line/field   *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM user_command USING value(iv_ucomm) LIKE sy-ucomm&lt;/P&gt;&lt;P&gt;                        is_selfield     TYPE slis_selfield.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CASE iv_ucomm.&lt;/P&gt;&lt;P&gt;    WHEN '&amp;amp;IC1'.                                  "ALV record selection&lt;/P&gt;&lt;P&gt;      PERFORM display_record USING is_selfield.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  when ...&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    ...&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  ENDCASE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                               " USER_COMMAND&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      FORM PF_STATUS_SET                                            *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Subroutine attached as callback form to ABAP List Viewer,     *&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      allows setting alternative menu.  If necessary:               *&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      1. Copy 'STANDARD' menu from SAPLKKBL and modify as required, *&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      2. Activate callback                                          *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM pf_status_set USING it_exctab TYPE slis_t_extab.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;set pf-status 'STANDARD' excluding it_exctab.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                               " PF_STATUS_SET&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      FORM TOP_OF_LIST                                              *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Subroutine attached as callback form to ABAP List Viewer,     *&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      executed once at the start of list output.                    *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM top_of_list.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA: lt_seltab TYPE STANDARD TABLE OF rsparams WITH HEADER LINE.&lt;/P&gt;&lt;P&gt;  DATA: lv_report LIKE sy-repid.&lt;/P&gt;&lt;P&gt;  lv_report = sy-repid.             "do not pass sy-repid to function!&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF p_box_up = 'X'. "display select options at report start&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CALL FUNCTION 'RS_REFRESH_FROM_SELECTOPTIONS'&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        curr_report     = lv_report&lt;/P&gt;&lt;P&gt;      TABLES&lt;/P&gt;&lt;P&gt;        selection_table = lt_seltab.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;remove 'technical' parameters with 'DELETE LT_SELTAB WHERE...'&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;before display, if necessary&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    CALL FUNCTION 'RS_LIST_SELECTION_TABLE'&lt;/P&gt;&lt;P&gt;       EXPORTING&lt;/P&gt;&lt;P&gt;            report        = lv_report&lt;/P&gt;&lt;P&gt;            seltext       = 'X'&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        dyn_range     =&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;            newpage       = ' '&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        screennr      = 1000&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;       TABLES&lt;/P&gt;&lt;P&gt;            sel_tab       = lt_seltab&lt;/P&gt;&lt;P&gt;       EXCEPTIONS&lt;/P&gt;&lt;P&gt;            sel_tab_empty = 1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ENDIF. "p_box_up = 'X'&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                               " TOP_OF_LIST&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      FORM END_OF_LIST                                              *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Subroutine attached as callback form to ABAP List Viewer      *&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      executed once at the end of list output.                      *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM end_of_list.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA: lt_seltab TYPE STANDARD TABLE OF rsparams WITH HEADER LINE.&lt;/P&gt;&lt;P&gt;  DATA: lv_report LIKE sy-repid.&lt;/P&gt;&lt;P&gt;  lv_report = sy-repid.             "do not pass sy-repid to function!&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF p_box_do = 'X'. "display select options at report end&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    CALL FUNCTION 'RS_REFRESH_FROM_SELECTOPTIONS'&lt;/P&gt;&lt;P&gt;      EXPORTING&lt;/P&gt;&lt;P&gt;        curr_report     = lv_report&lt;/P&gt;&lt;P&gt;      TABLES&lt;/P&gt;&lt;P&gt;        selection_table = lt_seltab.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;remove 'technical' parameters with 'DELETE LT_SELTAB WHERE...'&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;before display, if necessary&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    CALL FUNCTION 'RS_LIST_SELECTION_TABLE'&lt;/P&gt;&lt;P&gt;       EXPORTING&lt;/P&gt;&lt;P&gt;            report        = lv_report&lt;/P&gt;&lt;P&gt;            seltext       = 'X'&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        dyn_range     =&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;            newpage       = ' '&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        screennr      = 1000&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;       TABLES&lt;/P&gt;&lt;P&gt;            sel_tab       = lt_seltab&lt;/P&gt;&lt;P&gt;       EXCEPTIONS&lt;/P&gt;&lt;P&gt;            sel_tab_empty = 1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ENDIF. "p_box_do = 'X'&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                               " END_OF_LIST&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      FORM TOP_OF_PAGE                                              *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Subroutine attached as callback form to ABAP List Viewer      *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM top_of_page.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;standard Ingram Micro report page heading&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  DATA: lv_coco_pos TYPE i,          "CurPos of 'Company confidential'&lt;/P&gt;&lt;P&gt;        lv_title_pos TYPE i,           "CurPos of report title&lt;/P&gt;&lt;P&gt;        lv_title(70) TYPE c,           "Truncated report title&lt;/P&gt;&lt;P&gt;        lv_page_pos TYPE i,            "CurPos of page number&lt;/P&gt;&lt;P&gt;        lv_date_pos TYPE i,            "CurPos of date and time&lt;/P&gt;&lt;P&gt;        lv_page_no(10) TYPE c,&lt;/P&gt;&lt;P&gt;        lv_date(25) TYPE c,&lt;/P&gt;&lt;P&gt;        lv_time(20) TYPE c,&lt;/P&gt;&lt;P&gt;        lv_page(10) TYPE c.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;We may need to truncate title if the line size is &amp;lt; 81.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  IF sy-linsz &amp;lt; 81.&lt;/P&gt;&lt;P&gt;    lv_title = sy-title+0(50).&lt;/P&gt;&lt;P&gt;  ELSE.&lt;/P&gt;&lt;P&gt;    lv_title = sy-title.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Decide on positioning of text depending on width of page&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  lv_title_pos = ( sy-linsz / 2 ) - ( STRLEN( lv_title ) / 2 ).&lt;/P&gt;&lt;P&gt;  lv_coco_pos = sy-linsz - 20.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  FORMAT COLOR COL_HEADING INTENSIFIED ON.&lt;/P&gt;&lt;P&gt;  WRITE: / 'Ingram Micro',&lt;/P&gt;&lt;P&gt;           AT lv_title_pos lv_title,&lt;/P&gt;&lt;P&gt;           AT lv_coco_pos 'Company Confidential'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Setup data correctly in the correct format for the display fields.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  lv_page = sy-pagno.&lt;/P&gt;&lt;P&gt;  SHIFT lv_page LEFT DELETING LEADING ' '.&lt;/P&gt;&lt;P&gt;  CONCATENATE sy-datum&lt;EM&gt;6(2) sy-datum&lt;/EM&gt;4(2) sy-datum+0(4)&lt;/P&gt;&lt;P&gt;               INTO lv_date SEPARATED BY '.'.&lt;/P&gt;&lt;P&gt;  CONCATENATE sy-uzeit&lt;EM&gt;0(2) ':' sy-uzeit&lt;/EM&gt;2(2) INTO lv_time.&lt;/P&gt;&lt;P&gt;  CONCATENATE lv_date lv_time INTO lv_date SEPARATED BY ' '.&lt;/P&gt;&lt;P&gt;  CONCATENATE 'Page' lv_page INTO lv_page_no SEPARATED BY ' '.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Decide on positioning of text depending on width of page.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  lv_page_pos = sy-linsz - ( STRLEN( lv_page_no ) ).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  WRITE: / lv_date,&lt;/P&gt;&lt;P&gt;           AT lv_page_pos lv_page_no.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ULINE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                               " TOP_OF_PAGE&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      FORM END_OF_PAGE                                              *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Subroutine attached as callback form to ABAP List Viewer      *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM end_of_page.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                               " END_OF_PAGE&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Form  ALV_VARIANT_EXISTENCE&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Reads ALV variant definition&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*----&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM alv_variant_existence  USING    iv_variant LIKE disvariant-variant&lt;/P&gt;&lt;P&gt;                            CHANGING os_variant LIKE disvariant.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CHECK NOT iv_variant IS INITIAL.&lt;/P&gt;&lt;P&gt;  os_variant-report  = sy-repid.&lt;/P&gt;&lt;P&gt;  os_variant-variant = iv_variant.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF iv_variant CP '/*'.    "user-specific variants begin with slash&lt;/P&gt;&lt;P&gt;    os_variant-username = sy-uname.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'REUSE_ALV_VARIANT_EXISTENCE'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      i_save        = 'A'&lt;/P&gt;&lt;P&gt;    CHANGING&lt;/P&gt;&lt;P&gt;      cs_variant    = os_variant&lt;/P&gt;&lt;P&gt;    EXCEPTIONS&lt;/P&gt;&lt;P&gt;      wrong_input   = 1&lt;/P&gt;&lt;P&gt;      not_found     = 2&lt;/P&gt;&lt;P&gt;      program_error = 3&lt;/P&gt;&lt;P&gt;      OTHERS        = 4.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;    MESSAGE e001(z9) WITH 'Please select a valid display variant.'.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                               " ALV_VARIANT_EXISTENCE&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      FORM ALV_VARIANT_F4                                           *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Display list of layout variants on report selection screen    *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM alv_variant_f4  CHANGING cv_varname  LIKE disvariant-variant&lt;/P&gt;&lt;P&gt;                              cs_variant  LIKE disvariant.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  DATA: lv_exit(1) TYPE c.&lt;/P&gt;&lt;P&gt;  cs_variant-report = sy-repid.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'REUSE_ALV_VARIANT_F4'&lt;/P&gt;&lt;P&gt;       EXPORTING&lt;/P&gt;&lt;P&gt;            is_variant          = cs_variant&lt;/P&gt;&lt;P&gt;            i_save              = 'A'&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;          it_default_fieldcat =&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;       IMPORTING&lt;/P&gt;&lt;P&gt;            e_exit              = lv_exit&lt;/P&gt;&lt;P&gt;            es_variant          = cs_variant&lt;/P&gt;&lt;P&gt;       EXCEPTIONS&lt;/P&gt;&lt;P&gt;            not_found = 2.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF sy-subrc = 2.&lt;/P&gt;&lt;P&gt;    MESSAGE ID sy-msgid TYPE 'S'      NUMBER sy-msgno&lt;/P&gt;&lt;P&gt;            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.&lt;/P&gt;&lt;P&gt;  ELSE.&lt;/P&gt;&lt;P&gt;    IF lv_exit = space.&lt;/P&gt;&lt;P&gt;      cv_varname = cs_variant-variant.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                                " ALV_VARIANT_F4&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;regards,&lt;/P&gt;&lt;P&gt;ruchika&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 22 Jun 2007 11:50:47 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/interactive-alv/m-p/2406989#M536600</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-06-22T11:50:47Z</dc:date>
    </item>
  </channel>
</rss>

