Iterator for ALV

I am just migrating my application from BSP to WDA.
I liked the concept of an tableview iterator in BSP a lot.
Is there a similar concept for an ALV in WDA?

Hi Sergio,
it was not exactly the same questions, but you are right, I should rather answer the earlier post than opening a new, similar one.
I would summarize it like this:
ALV tables in WDA do not support the concept of an tableview iterator. Instead, you have to prepare the internal table in advance. Furthermore, using the table UI object, you can configure which columns shall be shown and how they should look. This corresponds to the method GET_COLUMN_DEFINITIONS of the tableview iterator in BSP. But there is no corresponding concept for the methods RENDER_ROW_START and RENDER_CELL_START.
Thx and regards,
Daniel

Similar Messages

  • Help needed for ALV report

    Hi,
    i need to add coloums for the existing report which picks from G/L account.
    in this report I need to add some more columns from COSP-KSTAR, which shows the cost element details from G/L account.
    I need to restrict that cost element number according to the company code.
    Plz see this and let me know the things.
    1. I need to add FISCAL YEAR(COEP-GJAHR) in selection screen.
    2. I need to add column: Employee Cost (CSKS-KOSTL)
    3. add a column Staff Welfare (COSP-KSTAR) this is to restrict for the cost element 3000200 from G/L account
    4. add a column Recruitment restrict for the cost element(COSP-KSTAR) 3100040 from G/L account
    5. add a column Travels (suppressing some cost elements(COSP-KSTAR) and putting into Travels)
    6. add a column Subcontracts restrict for the cost element (COSP-KSTAR)3100360 from G/L account
    7. add a column Communication suppressing some cost elements and putting into Communication)
    8. add a column Rent restrict for the cost element (COSP-KSTAR)3100055 from G/L account
    9. add a column Back end Cost restrict for the cost element (COSP-KSTAR)3100065 from G/L account
    i can hardcode these cost elements.
    i did according to some of our sdn friends guidence but it is going to dump.
    hear i am sending the code what i changed.
    it is giving the error with the select.
    SELECT BUKRS KOKRS gjahr kstar OBJNR OBJNR_N1 PERIO  BEKNZ WKGBTR WOGBTR  FROM
    COEP  INTO TABLE
    IT_COEP FOR ALL ENTRIES IN IT_AUFK WHERE OBJNR = IT_AUFK-OBJNR and
    perio in S_PERIO.
    plz try to help me out in this issue.
    hear i am sending the complete code what i worte.
    *& Report  ZPROJECT_PROFIT2
    REPORT  ZPROJECT_PROFIT2.
    *********************MAIN DOCUMENTATION BLOCK*************************
    Project Code           :
    Program Name           :Zproject_profit1.
    Purpose of program     :This report will give the gross margin for a project as
    *a whole based on some selected input criteria.
    Author of program      :JAYA KRISHNA .B.
    INPUT/OUTPUT FILE      :nil
    TYPE-POOLS : SLIS."For ALV display.
    TABLES : COEP,  "CO Object: Line Items  (by period).
             AUFK,   "Order master data.
             csks,    "Cost center master data
             cosp.    "CO Objects
    *&  Include           ZSTRUCTURE
    types:    BEGIN OF TY_COEP ,            "structure of table COEP.
              BUKRS LIKE COEP-BUKRS,
              KOKRS LIKE COEP-KOKRS,
              OBJNR LIKE COEP-OBJNR,
               gjahr like coep-gjahr,
              kstar like coep-kstar,
              OBJNR_N1 LIKE COEP-OBJNR_N1,
              PERIO LIKE COEP-PERIO,
              BEKNZ LIKE COEP-BEKNZ,
              WKGBTR LIKE COEP-WKGBTR,
              WOGBTR LIKE COEP-WOGBTR,
              BELNR LIKE COEP-BELNR,
              END OF TY_COEP,
             BEGIN OF TY_AUFK ,             "structure of table AUFK.
             BUKRS LIKE AUFK-BUKRS,
             KOKRS LIKE AUFK-KOKRS,
             OBJNR LIKE AUFK-OBJNR,
             KTEXT LIKE AUFK-KTEXT,
             ANFAUFNR LIKE AUFK-ANFAUFNR,
             AUFEX LIKE AUFK-AUFEX,
             USER2 LIKE AUFK-USER2,
             USER0 LIKE AUFK-USER0,
             USER1 LIKE AUFK-USER1,
             USER3 LIKE AUFK-USER3,
             USER6 LIKE AUFK-USER6,
             USER7 LIKE AUFK-USER7,
             USER8 LIKE AUFK-USER8,
             ABKRS(10) TYPE C,
             USER9 LIKE AUFK-USER9,
             AUFNR LIKE AUFK-AUFNR,
           END OF TY_AUFK,
           begin of ty_csks,
           kokrs like csks-kokrs,
            kostl like csks-kostl,
            bukrs like csks-bukrs,
            objnr like csks-objnr,
                 end of ty_csks.
    DATA :   BEGIN OF IT_COSP occurs 100,
           OBJNR LIKE COSP-OBJNR,
           GJAHR LIKE COSP-GJAHR,
           KSTAR LIKE COSP-KSTAR,
           END OF IT_COSP.
    DATA : IT_COEP TYPE TABLE OF TY_COEP,     " Declaraton of tables COEP and AUFK.
           IT_AUFK TYPE TABLE OF TY_AUFK,
           IT_CSKS TYPE TABLE OF TY_CSKS.
          IT_COSP TYPE TABLE OF TY_COSP.
    DATA : WA_COEP LIKE LINE OF IT_COEP,      " Declaration of work areas for tables COEP and AUFK.
           WA_AUFK LIKE LINE OF IT_AUFK,
           WA_CSKS LIKE LINE OF IT_CSKS.
          WA_COSP LIKE LINE OF IT_COSP.
    DATA : BEGIN OF IT_DISPLAY OCCURS 0,      " Declaration of display table.
            OBJNR_N1 LIKE COEP-OBJNR_N1,
            OBJNR_N12 LIKE COEP-OBJNR_N1,
            KTEXT1 LIKE AUFK-KTEXT,
            WKGBTR LIKE COEP-WKGBTR,
            WOGBTR LIKE COEP-WOGBTR,
            WKGBTR1  LIKE COEP-WTGBTR,
            WOGBTR1 LIKE COEP-WOGBTR,
            ADDK LIKE COEP-WOGBTR,
            ADDO LIKE COEP-WOGBTR,
            ADDK1 LIKE COEP-WOGBTR,
            ADDO1 LIKE COEP-WOGBTR,
            PROFIT1 LIKE COEP-WOGBTR,
            PROFIT2 LIKE COEP-WOGBTR,
            BEKNZ LIKE COEP-BEKNZ,
            BUKRS LIKE AUFK-BUKRS,
            anfaufnr LIKE AUFK-anfaufnr,
            aufex like aufk-aufex,
            OBJNR LIKE AUFK-OBJNR,
            USER2 LIKE AUFK-USER2,
            USER0 LIKE AUFK-USER0,
            USER1 LIKE AUFK-USER1,
            USER3 LIKE AUFK-USER3,
            USER6 LIKE AUFK-USER6,
            USER7 LIKE AUFK-USER7,
            USER8 LIKE AUFK-USER8,
            ABKRS LIKE AUFK-ABKRS,
            USER9 LIKE AUFK-USER9,
            PERIO LIKE COEP-PERIO,
            AUFNR LIKE AUFK-AUFNR,
            STR(5) TYPE C,
            WORK(10) TYPE C,
           END OF IT_DISPLAY,
      : BEGIN OF IT_DISPLAY1 OCCURS 0,      " Declaration of second display table.
         OBJNR_N1 LIKE COEP-OBJNR_N1,
         OBJNR_N12 LIKE COEP-OBJNR_N1,
         KTEXT1 LIKE AUFK-KTEXT,
         WKGBTR LIKE COEP-WKGBTR,
         WOGBTR LIKE COEP-WOGBTR,
         WKGBTR1  LIKE COEP-WTGBTR,
         WOGBTR1 LIKE COEP-WOGBTR,
         ADDK LIKE COEP-WOGBTR,
         ADDO LIKE COEP-WOGBTR,
         ADDK1 LIKE COEP-WOGBTR,
         ADDO1 LIKE COEP-WOGBTR,
         PROFIT1 LIKE COEP-WOGBTR,
         PROFIT2 LIKE COEP-WOGBTR,
         BEKNZ LIKE COEP-BEKNZ,
         BUKRS LIKE AUFK-BUKRS,
         anfaufnr like aufk-anfaufnr,
         aufex like aufk-aufex,
         OBJNR LIKE AUFK-OBJNR,
         USER2 LIKE AUFK-USER2,
         USER0 LIKE AUFK-USER0,
         USER1 LIKE AUFK-USER1,
         USER3 LIKE AUFK-USER3,
         USER6 LIKE AUFK-USER6,
         USER7 LIKE AUFK-USER7,
         USER8 LIKE AUFK-USER8,
         ABKRS LIKE AUFK-ABKRS,
         USER9 LIKE AUFK-USER9,
         PERIO LIKE COEP-PERIO,
         AUFNR LIKE AUFK-AUFNR,
         STR(5) TYPE C,
         WORK(10) TYPE C,
        END OF IT_DISPLAY1.
    data : it_field type slis_fieldcat_alv,        " Declaration of ALV variables
           it_field_t type slis_t_fieldcat_alv,
            xlayout    TYPE slis_layout_alv.
    data : it_event type slis_t_event,
          wa_event like line of it_event.
    DATA : WA_TOP TYPE SLIS_LISTHEADER,
           IT_TOP TYPE SLIS_T_LISTHEADER.
    data:w_lines type i,
          w_occurs type i,
          STR(5) TYPE C,
          WORK(10) TYPE C.
          constants : c_selection type char20 value 'Selection based on'. " Declaration of a constant.
    selection-screen BEGIN OF BLOCK BLK WITH FRAME TITLE TEXT-000.
    SELECT-OPTIONS S_BUKRS FOR AUFK-BUKRS OBLIGATORY.
    SELECT-OPTIONS S_OBJNR FOR AUFK-AUFNR.
    SELECT-OPTIONS S_ANF FOR AUFK-ANFAUFNR.
    SELECT-OPTIONS S_AUFEX FOR AUFK-AUFEX.
    SELECT-OPTIONS S_USER2 FOR AUFK-USER2.
    SELECT-OPTIONS S_USER0 FOR AUFK-USER0.
    SELECT-OPTIONS S_USER1 FOR AUFK-USER1.
    SELECT-OPTIONS S_USER3 FOR AUFK-USER3.
    SELECT-OPTIONS S_USER6 FOR AUFK-USER6.
    SELECT-OPTIONS S_ABKRS FOR AUFK-ABKRS.
    SELECT-options s_gjahr for coep-gjahr obligatory.
    SELECT-OPTIONS S_PERIO FOR COEP-PERIO OBLIGATORY.
    SELECTION-SCREEN END OF BLOCK BLK .
    SELECTION-SCREEN BEGIN OF BLOCK BLK1 WITH FRAME TITLE TEXT-001.
    PARAMETERS : ONSITE RADIOBUTTON GROUP RADI.
    PARAMETERS : OFFSHORE RADIOBUTTON GROUP RADI.
    PARAMETERS : BOTH RADIOBUTTON GROUP RADI.
    SELECTION-SCREEN END OF BLOCK BLK1 .
    start-of-selection.
    *ZAUFK
                                  " Selection of records from aufk to internal table.
    IF ONSITE EQ 'X' .
    SELECT
    BUKRS
    KOKRS
    OBJNR
    KTEXT
    anfaufnr
    aufex
    USER2
    USER0
    USER1
    USER3
    USER6
    USER7
    USER8
    ABKRS
    USER9
    AUFNR
    FROM AUFK INTO TABLE IT_AUFK WHERE BUKRS IN S_BUKRS AND
    anfaufnr IN s_anf AND
    aufex in s_aufex and
    aufnr IN S_OBJNR AND
    USER2 IN S_USER2 AND
    USER0 IN S_USER0 AND
    USER1 IN S_USER1 AND
    USER3 IN S_USER3 AND
    USER6 IN S_USER6 AND
    ABKRS IN S_ABKRS AND
    USER9 EQ 'X' .
    ENDIF.
    IF OFFSHORE EQ 'X'.
    SELECT
    BUKRS
    KOKRS
    OBJNR
    KTEXT
    anfaufnr
    aufex
    USER2
    USER0
    USER1
    USER3
    USER6
    USER7
    USER8
    ABKRS
    USER9
    AUFNR
    FROM AUFK INTO TABLE IT_AUFK WHERE BUKRS IN S_BUKRS AND
    anfaufnr IN S_anf AND
    aufex in s_aufex and
    aufnR IN S_OBJNR AND
    USER2 IN S_USER2 AND
    USER0 IN S_USER0 AND
    USER1 IN S_USER1 AND
    USER3 IN S_USER3 AND
    USER6 IN S_USER6 AND
    ABKRS IN S_ABKRS AND
    USER9 <> 'X'.
    ENDIF.
    IF BOTH EQ 'X'.
    SELECT
    BUKRS
    KOKRS
    OBJNR
    KTEXT
    anfaufnr
    aufex
    USER2
    USER0
    USER1
    USER3
    USER6
    USER7
    USER8
    ABKRS
    USER9
    AUFNR
    FROM AUFK INTO TABLE IT_AUFK WHERE BUKRS IN S_BUKRS AND
    anfaufnr IN S_anf AND
    aufex in s_aufex and
    aufNR IN S_OBJNR AND
    USER2 IN S_USER2 AND
    USER0 IN S_USER0 AND
    USER1 IN S_USER1 AND
    USER3 IN S_USER3 AND
    USER6 IN S_USER6 AND
    ABKRS IN S_ABKRS.
    ENDIF.
    *&  Include           ZCOEP
                                  " Selection of records from coep to internal table.
    SELECT BUKRS KOKRS gjahr kstar OBJNR OBJNR_N1 PERIO  BEKNZ WKGBTR WOGBTR  FROM
    COEP  INTO TABLE
    IT_COEP FOR ALL ENTRIES IN IT_AUFK WHERE OBJNR = IT_AUFK-OBJNR and
    perio in S_PERIO.
    *&  Include           ZPROFIT_CALC
                                 " Calculations for income and Profit of the employee.
    if not it_coep[] is initial.
        select objnr gjahr wrttp versn kstar from cosp into TABLE It_cosp for
    all entries in it_coep where objnr = IT_COEP-objnr .
    endif.
      LOOP AT IT_coep INTO WA_coep.
        read table IT_aufk into WA_aufk with key OBJNR = wa_coep-OBJNR.
    case it_cosp-kstar.
    when '3000200'.
    it_cosp-kstar = cosp-kstar.
    when '3100040'.
    it_cosp-kstar = cosp-kstar.
    when '3100360'.
    it_cosp-kstar = cosp-kstar.
    when '3100055'.
    it_cosp-kstar = cosp-kstar.
    when '3100065'.
    it_cosp-kstar = cosp-kstar.
    when '3100115'.
    it_cosp-kstar = cosp-kstar.
    when '3100120'.
    it_cosp-kstar = cosp-kstar.
    when '3100130'.
    it_cosp-kstar = cosp-kstar.
    when '3100135'.
    it_cosp-kstar = cosp-kstar.
    when '3100140'.
    it_cosp-kstar = cosp-kstar.
    when '3100145'.
    it_cosp-kstar = cosp-kstar.
    when '3100150'.
    it_cosp-kstar = cosp-kstar.
    when '3100155'.
    it_cosp-kstar = cosp-kstar.
    when '3100160'.
    it_cosp-kstar = cosp-kstar.
    when '3100165'.
    it_cosp-kstar = cosp-kstar.
    when '3100170'.
    it_cosp-kstar = cosp-kstar.
    endcase.
        IT_DISPLAY-BUKRS = WA_AUFK-BUKRS.
        IT_DISPLAY-anfaufnr = WA_AUFK-anfaufnr.
        it_display-aufex  = wa_aufk-aufex.
        IT_DISPLAY-OBJNR = WA_AUFK-OBJNR.
        IT_DISPLAY-USER2 = WA_AUFK-USER2.
        IT_DISPLAY-USER0 = WA_AUFK-USER0.
        IT_DISPLAY-USER1 = WA_AUFK-USER1.
        IT_DISPLAY-USER3 = WA_AUFK-USER3.
        IT_DISPLAY-USER6 = WA_AUFK-USER6.
        IT_DISPLAY-USER7 = WA_AUFK-USER7.
        IT_DISPLAY-USER8 = WA_AUFK-USER8.
        IT_DISPLAY-ABKRS = WA_AUFK-ABKRS.
        IT_DISPLAY-USER9 = WA_AUFK-USER9.
        IT_DISPLAY-KTEXT1 =  WA_AUFK-KTEXT.
        if WA_AUFK-abkrs = 01.
          IT_DISPLAY-STR = 'TM'.
        ENDIF.
        IF WA_AUFK-ABKRS = 02.
          IT_DISPLAY-STR = 'FP'.
        ENDIF.
        IF WA_AUFK-USER9 = 'X'.
          IT_DISPLAY-WORK = 'ONSITE'.
        ENDIF.
        IF WA_AUFK-USER9 <> 'X'.
          IT_DISPLAY-WORK = 'OFFSHORE'.
        ENDIF.
        it_display-ABKRS = it_display-user7.
        IF wa_coep-BEKNZ = 'S'.
          IT_DISPLAY-WKGBTR = WA_COEP-WKGBTR.
          IT_DISPLAY-WOGBTR = WA_COEP-WOGBTR.
          IT_DISPLAY-ADDK = IT_DISPLAY-ADDK + IT_DISPLAY-WKGBTR.
          IT_DISPLAY-ADDO = IT_DISPLAY-ADDO + IT_DISPLAY-WOGBTR.
          IT_DISPLAY-ADDK1 = 0.
          IT_DISPLAY-ADDO1 = 0.
          IT_DISPLAY-PROFIT1 = IT_DISPLAY-ADDK1 +  IT_DISPLAY-ADDK.
          IT_DISPLAY-PROFIT2 = IT_DISPLAY-ADDO1 +  IT_DISPLAY-ADDO.
          APPEND IT_DISPLAY.
        ENDIF.
        IF WA_COEP-BEKNZ = 'H'.
          IT_DISPLAY-WKGBTR1 = WA_COEP-WKGBTR.
          IT_DISPLAY-WOGBTR1 = WA_COEP-WOGBTR.
          IT_DISPLAY-ADDK1 = IT_DISPLAY-ADDK + IT_DISPLAY-WKGBTR1.
          IT_DISPLAY-ADDO1 = IT_DISPLAY-ADDO + IT_DISPLAY-WOGBTR1.
          IT_DISPLAY-ADDK = 0.
          IT_DISPLAY-ADDO = 0.
          IT_DISPLAY-PROFIT1 = IT_DISPLAY-ADDK1 +  IT_DISPLAY-ADDK.
          IT_DISPLAY-PROFIT2 = IT_DISPLAY-ADDO1 +  IT_DISPLAY-ADDO.
          APPEND IT_DISPLAY.
        ENDIF.
        collect it_display into it_display1.
        clear it_display.
      ENDLOOP.
                        "calc
    *&  Include           ZPROFIT_DISPLAY
      LOOP AT IT_DISPLAY1.                                         "it_display.
        read table IT_COEP into WA_COEP with key OBJNR =
        IT_DISPLAY-OBJNR.
        read table IT_AUFK into WA_AUFK with key aufnr = IT_DISPLAY-aufnr.
        if WA_AUFK-abkrs = 01.
          STR = 'TM'.
        ENDIF.
        IF WA_AUFK-ABKRS = 02.
          STR = 'FP'.
        ENDIF.
        IF WA_AUFK-USER9 = 'X'.
          WORK = 'ONSITE'.
        ENDIF.
        IF WA_AUFK-USER9 <> 'X'.
          WORK = 'OFFSHORE'.
        ENDIF.
      endloop.
      clear it_field.
      it_field-col_pos = 1.
      it_field-fieldname = 'AUFNR'.
      it_field-seltext_l = 'project id.'.
      it_field-outputlen = 15.
      append it_field to it_field_t.
      CLEAR it_field.
      clear it_field.
      it_field-col_pos = 2.
      it_field-fieldname = 'KTEXT1'.
      it_field-seltext_l = 'Project Name'.
      it_field-outputlen = 20.
      append it_field to it_field_t.
      CLEAR it_field.
      clear it_field.
      it_field-col_pos = 3.
      it_field-fieldname = 'USER7'.
      it_field-seltext_l = 'Start Date'.
      it_field-do_sum = 'X'.
      it_field-outputlen = 20.
      append it_field to it_field_t.
      CLEAR it_field.
      clear it_field.
      it_field-col_pos = 4.
      it_field-fieldname = 'USER8'.
      it_field-seltext_l = 'End Date'.
      it_field-do_sum = 'X'.
      it_field-outputlen = 20.
      append it_field to it_field_t.
      CLEAR it_field.
      clear it_field.
      it_field-col_pos = 5.
      it_field-fieldname = 'USER2'.
      it_field-seltext_l = 'Location'.
      it_field-do_sum = 'X'.
      it_field-outputlen = 20.
      append it_field to it_field_t.
      CLEAR it_field.
      clear it_field.
      it_field-col_pos = 6.
      it_field-fieldname = 'USER0'.
      it_field-seltext_l = 'Vertical'.
      it_field-do_sum = 'X'.
      it_field-outputlen = 20.
      append it_field to it_field_t.
      CLEAR it_field.
      it_field-col_pos = 7.
      it_field-fieldname = 'USER1'.
      it_field-seltext_l = 'Sub_vertical'.
      it_field-outputlen = 20.
      it_field-do_sum = 'X'.
      append it_field to it_field_t.
      CLEAR it_field.
      it_field-col_pos = 8.
      it_field-fieldname = 'USER3'.
      it_field-seltext_l = 'Technology'.
      it_field-outputlen = 20.
      it_field-do_sum = 'X'.
      append it_field to it_field_t.
      CLEAR it_field.
      it_field-col_pos = 9.
      it_field-fieldname = 'USER6'.
      it_field-seltext_l = 'Department'.
      it_field-outputlen = 20.
      it_field-do_sum = 'X'.
      append it_field to it_field_t.
      CLEAR it_field.
      it_field-col_pos = 10.
      it_field-fieldname = 'WORK'.
      it_field-seltext_l = 'Onsite/Offshore'.
      it_field-outputlen = 20.
      it_field-do_sum = 'X'.
      append it_field to it_field_t.
      CLEAR it_field.
      it_field-col_pos = 11.
      it_field-fieldname = 'STR'.
      it_field-seltext_l = 'T&M/FP'.
      it_field-outputlen = 20.
      it_field-do_sum = 'X'.
      append it_field to it_field_t.
      CLEAR it_field.
    it_field-col_pos = 12.
      it_field-fieldname = 'KOSTL'.
      it_field-seltext_l = 'EMP COST'.
      it_field-outputlen = 10.
      it_field-do_sum = 'X'.
      append it_field to it_field_t.
      CLEAR it_field.
    it_field-col_pos = 13.
      it_field-fieldname = 'KSTAR'.
      it_field-seltext_l = 'STAFF WELFARE'.
      it_field-outputlen = 10.
      it_field-do_sum = 'X'.
      append it_field to it_field_t.
      CLEAR it_field.
    it_field-col_pos = 14.
      it_field-fieldname = 'KSTAR'.
      it_field-seltext_l = 'RECRUITMENT'.
      it_field-outputlen = 10.
      it_field-do_sum = 'X'.
      append it_field to it_field_t.
      CLEAR it_field.
    it_field-col_pos = 15.
      it_field-fieldname = 'KSTAR'.
      it_field-seltext_l = 'TRAVELS'.
      it_field-outputlen = 10.
      it_field-do_sum = 'X'.
      append it_field to it_field_t.
      CLEAR it_field.
    it_field-col_pos = 16.
      it_field-fieldname = 'KSTAR'.
      it_field-seltext_l = 'SUBCONTRACT'.
      it_field-outputlen = 10.
      it_field-do_sum = 'X'.
      append it_field to it_field_t.
      CLEAR it_field.
    it_field-col_pos = 17.
      it_field-fieldname = 'KSTAR'.
      it_field-seltext_l = 'COMMUNICATION'.
      it_field-outputlen = 10.
      it_field-do_sum = 'X'.
      append it_field to it_field_t.
      CLEAR it_field.
    it_field-col_pos = 18.
      it_field-fieldname = 'KSTAR'.
      it_field-seltext_l = 'RENT'.
      it_field-outputlen = 10.
      it_field-do_sum = 'X'.
      append it_field to it_field_t.
      CLEAR it_field.
    it_field-col_pos = 19.
      it_field-fieldname = 'KSTAR'.
      it_field-seltext_l = 'BACKEND COST (PROJECT EXP)'.
      it_field-outputlen = 10.
      it_field-do_sum = 'X'.
      append it_field to it_field_t.
      CLEAR it_field.
    it_field-col_pos = 20.
      it_field-fieldname = 'ADDO'.
      it_field-seltext_l = 'Direct costs'.
      it_field-outputlen = 20.
      it_field-do_sum = 'X'.
      append it_field to it_field_t.
      CLEAR it_field.
      it_field-col_pos = 21.
      it_field-fieldname = 'ADDO1'.
      it_field-seltext_l = 'Income'.
      it_field-outputlen = 20.
      it_field-do_sum = 'X'.
      append it_field to it_field_t.
      CLEAR it_field.
      it_field-col_pos = 22.
      it_field-fieldname = 'PROFIT2'.
      it_field-seltext_l = 'Profit(income-costs)'.
      it_field-outputlen = 20.
      it_field-do_sum = 'X'.
      append it_field to it_field_t.
      CLEAR it_field.
      it_field-col_pos = 23.
      it_field-fieldname = 'ADDK'.
      it_field-seltext_l = 'Direct costs(Grp cur)'.
      it_field-outputlen = 20.
      it_field-do_sum = 'X'.
      append it_field to it_field_t.
      CLEAR it_field.
      it_field-col_pos = 24.
      it_field-fieldname = 'ADDK1'.
      it_field-seltext_l = 'Income(Grp Cur)'.
      it_field-outputlen = 20.
      it_field-do_sum = 'X'.
      append it_field to it_field_t.
      CLEAR it_field.
      it_field-col_pos = 25.
      it_field-fieldname = 'PROFIT1'.
      it_field-seltext_l = 'Profit(income-costs)'.
      it_field-outputlen = 20.
      it_field-do_sum = 'X'.
      append it_field to it_field_t.
      CLEAR it_field.
      xlayout-zebra = 'X'.
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
       EXPORTING
      I_INTERFACE_CHECK                 = ' '
      I_BYPASSING_BUFFER                = ' '
      I_BUFFER_ACTIVE                   = ' '
         I_CALLBACK_PROGRAM                = 'ZPROJECT_PROFIT1'
      I_CALLBACK_PF_STATUS_SET          = ' '
         I_CALLBACK_USER_COMMAND           = 'USER_COMMAND'
         I_CALLBACK_TOP_OF_PAGE            = 'TOP_OF_PAGE_PROFIT'
      I_CALLBACK_HTML_TOP_OF_PAGE       = ' '
      I_CALLBACK_HTML_END_OF_LIST       = ' '
      I_STRUCTURE_NAME                  =
      I_BACKGROUND_ID                   = ' '
      I_GRID_TITLE                      =
      I_GRID_SETTINGS                   =
         IS_LAYOUT                         = xlayout
         IT_FIELDCAT                       =  it_field_t
      IT_EXCLUDING                      =
      IT_SPECIAL_GROUPS                 =
      IT_SORT                           =
      IT_FILTER                         =
      IS_SEL_HIDE                       =
         I_DEFAULT                         = 'X'
         I_SAVE                            = ' '
      IS_VARIANT                        =
      IT_EVENTS                         =
      IT_EVENT_EXIT                     =
      IS_PRINT                          =
      IS_REPREP_ID                      =
      I_SCREEN_START_COLUMN             = 0
      I_SCREEN_START_LINE               = 0
      I_SCREEN_END_COLUMN               = 0
      I_SCREEN_END_LINE                 = 0
      I_HTML_HEIGHT_TOP                 = 0
      I_HTML_HEIGHT_END                 = 0
      IT_ALV_GRAPHICS                   =
      IT_HYPERLINK                      =
      IT_ADD_FIELDCAT                   =
      IT_EXCEPT_QINFO                   =
      IR_SALV_FULLSCREEN_ADAPTER        =
    IMPORTING
      E_EXIT_CAUSED_BY_CALLER           =
      ES_EXIT_CAUSED_BY_USER            =
       TABLES
          T_OUTTAB                          = IT_DISPLAY1
    EXCEPTIONS
      PROGRAM_ERROR                     = 1
      OTHERS                            = 2
      IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
      clear it_field_t.
      "it_display.
    FORM USER_COMMAND using r_ucomm like sy-ucomm rs type slis_selfield.
      include zinteractive_profit."Secondary list for calling KO03.
    ENDFORM.                    "USER_COMMAND.
    Thanks & Regards,
    Lakshmi..

    Hi,
    i did according to ur suggession.
    now it is going dump.
    and it is telling like this.
    2629               i_event_name      = 'SUBTOTAL_TEXT'
    2630               is_subtottxt_info = ls_subtot_info
    2631               ip_subtot_line    = lr_data
    2632             changing
    2633               c_subtottxt       = l_subtottxt.
    2634           ls_lvc_data-value = l_subtottxt.
    2635
    2636           append ls_lvc_data to ct_lvc_data.
    2637         endif.
    2638
    2639 ************************************
    2640 * Column per Fieldcat Entry
    2641 ************************************
    2642         clear ls_lvc_data-style.
    2643         loop at it_fcat_local assigning <ls_fcat>
    2644                 where tech ne 'X' and no_out ne 'X'.
    2645           if l_invisible eq 'X'.
    2646             clear l_invisible.
    2647             if <ls_fcat>-do_sum is initial.
    2648               continue.
    2649             else.
    2650               clear ls_lvc_data-col_pos.
    2651             endif.
    2652           endif.
    2653
    2654           add 1 to ls_lvc_data-col_pos.
    2655
    2656           assign component <ls_fcat>-fieldname
    2657                            of structure <ls_data> to <l_field_val
    2658           if sy-subrc ne 0.
    >>>>>             message x000(0k).
    2660           endif.
    2661
    2662 *... work on average
    2663           if <ls_fcat>-do_sum eq 'C'.
    2664             clear l_entries.
    2665
    2666             assign space to <l_unit>.
    2667             if not <ls_fcat>-cfieldname is initial.
    2668               assign component <ls_fcat>-cfieldname
    2669                      of structure <ls_data> to <l_unit>.
    2670             endif.
    2671             if not <ls_fcat>-qfieldname is initial.
    2672               assign component <ls_fcat>-qfieldname
    2673                      of structure <ls_data> to <l_unit>.
    2674             endif.
    2675
    2676             l_from = ls_grpl-index_from.
    2677             l_to   = ls_grpl-index_to.
    2678             if ls_grpl-index_from is initial and
    plz any of u help me to come out with solution.
    Thanks & Regards,
    Lakshmi..

  • Why this code is not working for alv

    Dear
    Regards,
    i have implemented the same program for ALV which i have used earlier in the reports. but now it is showing no output:
    *& Report  ZTCT1_ALV2                                                  *
    REPORT  ztct1_alv2                              .
    CLASS lcl_event_receiver DEFINITION DEFERRED.
    * INCLUDING TABLES.
    TABLES: vbrk,
            vbrp,
            kna1,
            t001w,
            makt.
    * DECLARATION OF INTERNAL TABLES.
    DATA: BEGIN OF itab OCCURS 0,  "Including the fields of VBRK and VBRP
            kunag LIKE vbrk-kunag, "Customer Code
            name1 LIKE kna1-name1, "Customer Name
            vbeln LIKE vbrk-vbeln, "Invoice #
            fkdat LIKE vbrk-fkdat, "Invoice Date
            werks LIKE vbrp-werks, "Plant
            name2 LIKE t001w-name1,"Plant Description
            matnr LIKE vbrp-matnr, "Material #
            maktx LIKE makt-maktx, "Material Description
            meins LIKE vbrp-meins, "Unit of Measure
            fklmg LIKE vbrp-fklmg, "Quantity
            netwr LIKE vbrp-netwr, "Amount
          END OF itab,
          BEGIN OF itnm OCCURS 0,  "Including the fields of VBRK and KNA1
            kunag LIKE vbrk-kunag, "Customer Code
            name1 LIKE kna1-name1, "Customer Name
          END OF itnm,
          BEGIN OF itpt OCCURS 0,  "Including the fields of VBRP and T001W
            werks LIKE vbrp-werks, "Plant
            name1 LIKE t001w-name1,"Plant Description
          END OF itpt,
          BEGIN OF itmt OCCURS 0,  "Including the fields of VBRP and MAKT
            matnr LIKE vbrp-matnr, "Material #
            maktx LIKE makt-maktx, "Material description
          END OF itmt,
          BEGIN OF itsm OCCURS 0,
            kunag LIKE kna1-kunnr,
            name1 LIKE kna1-name1,
            fklmg LIKE vbrp-fklmg,
            netwr LIKE vbrp-netwr,
          END OF itsm,
          ok_code            LIKE sy-ucomm,
          save_ok            LIKE sy-ucomm,
          g_max              TYPE i VALUE 100,
          g_repid            LIKE sy-repid,
          gs_layout          TYPE lvc_s_layo,
          g_container        TYPE scrfname VALUE 'CUST_CONT',
          grid1              TYPE REF TO cl_gui_alv_grid,
          g_custom_container TYPE REF TO cl_gui_custom_container,
          grid2              TYPE REF TO cl_gui_alv_grid,
          gt_sort            TYPE lvc_t_sort,
          gt_fieldcatalog    TYPE lvc_t_fcat,
          w_tot_qty          LIKE vbrp-fklmg,
          w_tot_amt          LIKE vbrp-netwr,
    * Reference to Dialogbox Container.
          dialogbox_container TYPE REF TO cl_gui_dialogbox_container,
    * Reference to local class that handles events of GRID1 and
    * DIALOGBOX_CONTAINER
          event_receiver TYPE REF TO lcl_event_receiver.
    * SELECT-OPTIONS
    SELECTION-SCREEN SKIP 1.
    SELECTION-SCREEN BEGIN OF BLOCK input WITH FRAME TITLE text-000.
    SELECT-OPTIONS: s_werks FOR vbrp-werks, "Plant
                    s_kunag FOR vbrk-kunag, "Customer
                    s_matnr FOR vbrp-matnr, "Material Number
                    s_fkdat FOR vbrk-fkdat. "Invoice Date
    SELECTION-SCREEN END OF BLOCK input .
    SELECTION-SCREEN SKIP 1.
    * START-OF-SELECTION
    START-OF-SELECTION.
      SET SCREEN 100.
    * CLEARING INTERNAL TABLES.
      CLEAR: itab,
             itnm,
             itmt,
             itpt.
    * QUERY FOR JOINING TABLES VBRK AND VBRP
      SELECT vbrk~kunag
             vbrk~vbeln
             vbrk~fkdat
             vbrp~werks
             vbrp~matnr
             vbrp~meins
             vbrp~fklmg
             vbrp~netwr
             INTO CORRESPONDING FIELDS OF TABLE itab
             FROM vbrk
             INNER JOIN vbrp
                 ON vbrk~vbeln = vbrp~vbeln
             WHERE vbrk~kunag IN s_kunag
               AND vbrk~fkdat IN s_fkdat
               AND vbrp~matnr IN s_matnr
               AND vbrp~werks IN s_werks.
    * QUERY FOR JOINING TABLES VBRK AND KNA1
      SELECT kna1~kunnr AS kunag
             kna1~name1
             INTO TABLE itnm
             FROM kna1
             WHERE kna1~kunnr IN s_kunag.
    * QUERY FOR JOINING TABLES VBRP AND T001W
      SELECT t001w~werks
             t001w~name1
             INTO TABLE itpt
             FROM t001w
             WHERE t001w~werks IN s_werks.
    * QUERY FOR JOINING TABLES VBRP AND MAKT
      SELECT makt~matnr
             makt~maktx
             INTO TABLE itmt
             FROM makt
             WHERE makt~matnr IN s_matnr.
    * SORTING INTERNAL TABLES.
      SORT itab BY kunag.
    *    LOOP AT itab.
    *      CLEAR: itmt, itnm, itpt.
    *      READ TABLE itnm WITH KEY kunag = itab-kunag.
    *      READ TABLE itmt WITH KEY matnr = itab-matnr.
    *      READ TABLE itpt WITH KEY werks = itab-werks.
    *      itab-name1 = itnm-name1.
    *      itab-maktx = itmt-maktx.
    *      itab-name2 = itpt-name1.
    *      MODIFY itab.
    *    ENDLOOP.
    *    PERFORM fieldcatalog_init USING gt_fieldcatalog[] 'KUNAG' 'C' 'Customer Code'.
    *    PERFORM fieldcatalog_init USING gt_fieldcatalog[] 'NAME1' 'C' 'Customer Name'.
    *    PERFORM fieldcatalog_init USING gt_fieldcatalog[] 'VBELN' 'C' 'Invoice #'.
    *    PERFORM fieldcatalog_init USING gt_fieldcatalog[] 'FKDAT' 'DATS' 'Invoice Date'.
    *    PERFORM fieldcatalog_init USING gt_fieldcatalog[] 'WERKS' 'C' 'Plant'.
    *    PERFORM fieldcatalog_init USING gt_fieldcatalog[] 'NAME2' 'C' 'Plant Description'.
    *    PERFORM fieldcatalog_init USING gt_fieldcatalog[] 'MATNR' 'C' 'Material #'.
    *    PERFORM fieldcatalog_init USING gt_fieldcatalog[] 'MAKTX' 'C' 'Material Description'.
    *    PERFORM fieldcatalog_init USING gt_fieldcatalog[] 'MEINS' 'C' 'UoM'.
    *    PERFORM fieldcatalog_init USING gt_fieldcatalog[] 'FKLMG' 'QUAN' 'Quantity'.
    *    PERFORM fieldcatalog_init USING gt_fieldcatalog[] 'NETWR' 'CURR' 'Amount'.
        LOOP AT itab.
          CLEAR itsm.
          READ TABLE itnm WITH KEY kunag = itab-kunag.
          itsm-kunag = itab-kunag.
          itsm-name1 = itnm-name1.
          itsm-fklmg = itab-fklmg.
          itsm-netwr = itab-netwr.
          COLLECT itsm.
        ENDLOOP.
        PERFORM fieldcatalog_init USING gt_fieldcatalog[] 'KUNAG' 'C' 'Customer Code'.
        PERFORM fieldcatalog_init USING gt_fieldcatalog[] 'NAME1' 'C' 'Customer Name'.
        PERFORM fieldcatalog_init USING gt_fieldcatalog[] 'FKLMG' 'QUAN' 'Quantity'.
        PERFORM fieldcatalog_init USING gt_fieldcatalog[] 'NETWR' 'CURR' 'Amount'.
      PERFORM sort_build USING gt_sort[].
      PERFORM layout_init USING gs_layout.
    *   LOCAL CLASSES: Definition
    CLASS lcl_event_receiver DEFINITION.
      PUBLIC SECTION.
        METHODS:
        handle_double_click
            FOR EVENT double_click OF cl_gui_alv_grid
                IMPORTING e_row e_column,
        handle_close
            FOR EVENT close OF cl_gui_dialogbox_container
                IMPORTING sender.
      PRIVATE SECTION.
        DATA: dialogbox_status TYPE c.  "'X': does exist, SPACE: does not ex.
    ENDCLASS.                    "lcl_event_receiver DEFINITION
    *   LOCAL CLASSES: Implementation
    CLASS lcl_event_receiver IMPLEMENTATION.
    *   §3.At doubleclick(1): The event DOUBLE_CLICK provides
    *      parameters of the clicked row and column.
    *      Use row parameter to select a line of the
    *      corresponding internal table.
      METHOD handle_double_click.
        DATA: ls_sm LIKE LINE OF itsm,
              wa_itab LIKE ITAB.
    *   read selected row from internal table gt_sflight
        READ TABLE itsm INDEX e_row-index INTO ls_sm.
    *   §4.At Doubleclick(2): Select booking data
    *    READ TABLE ITAB WITH KEY KUNAG = LS_SM-KUNAG.    .
        READ TABLE ITAB INTO WA_ITAB WITH KEY KUNAG = LS_SM-KUNAG.
    *   §5.At doubleclick(3): Create dialogbox to show detail list
    *     (if not already existent)
        IF dialogbox_status IS INITIAL.
          dialogbox_status = 'X'.
          PERFORM create_detail_list.
        ELSE.
          CALL METHOD dialogbox_container->set_visible
            EXPORTING
              visible = 'X'.
          CALL METHOD grid2->refresh_table_display.
        ENDIF.
      ENDMETHOD.                    "handle_double_click
      METHOD handle_close.
    *   §6.Handle the CLOSE-button of the dialogbox
    *   set dialogbox invisible
    *   (the dialogbox is destroyed outomatically when the user
    *   switches to another dynpro).
        CALL METHOD sender->set_visible
          EXPORTING
            visible = space.
    *   In this example closing the dialogbox leads
    *   to make it invisible. It is also conceivable to destroy it
    *   and recreate it if the user doubleclicks a line again.
    *   Displaying a great amount of data has a greater impact on performance.
      ENDMETHOD.                    "handle_close
    ENDCLASS.                    "lcl_event_receiver IMPLEMENTATION
    *   lcl_event_receiver (Implementation)
    *=====================================================================
    *       FORM EXIT_PROGRAM                                             *
    FORM exit_program.
      CALL METHOD g_custom_container->free.
      CALL METHOD cl_gui_cfw=>flush.
      IF sy-subrc NE 0.
    * add your handling, for example
        CALL FUNCTION 'POPUP_TO_INFORM'
          EXPORTING
            titel = g_repid
            txt2  = sy-subrc
            txt1  = 'Error in FLush'(500).
      ENDIF.
      LEAVE TO SCREEN 0.
    ENDFORM.                    "exit_program
    *  MODULE PBO_ALV OUTPUT
    MODULE pbo_alv OUTPUT.
      SET PF-STATUS 'MAIN'.
      SET TITLEBAR 'MAIN100'.
      g_repid = sy-repid.
      IF g_custom_container IS INITIAL.
        READ TABLE itsm.
        CREATE OBJECT g_custom_container
          EXPORTING
            container_name = g_container
          EXCEPTIONS
            cntl_error = 1
            cntl_system_error = 2
            create_error = 3
            lifetime_error = 4
            lifetime_dynpro_dynpro_link = 5.
        IF sy-subrc NE 0.
          CALL FUNCTION 'POPUP_TO_INFORM'
            EXPORTING
              titel = g_repid
              txt2  = sy-subrc
              txt1  = 'The control could not be created'(510).
        ENDIF.
        CREATE OBJECT grid1
          EXPORTING
            i_parent = g_custom_container.
        gs_layout-grid_title = 'Invoice Summary'.
        CALL METHOD grid1->set_table_for_first_display
          EXPORTING
            is_layout       = gs_layout
          CHANGING
            it_outtab       = itsm[]
            it_fieldcatalog = gt_fieldcatalog
            it_sort         = gt_sort.
        CREATE OBJECT event_receiver.
        SET HANDLER event_receiver->handle_double_click FOR grid1.
      ENDIF.
      CALL METHOD cl_gui_control=>set_focus
        EXPORTING
          control = grid1.
    ENDMODULE.                    "PBO_ALV OUTPUT
    *  MODULE PAI_ALV INPUT
    MODULE pai_alv INPUT.
      CALL METHOD cl_gui_cfw=>dispatch.
      CASE sy-ucomm.
        WHEN 'BACK' OR 'EXIT' OR 'CANCEL'.
          LEAVE TO SCREEN 0.
      ENDCASE.
    ENDMODULE.                    "PAI_ALV INPUT
    *&      Form  fieldcatalog_init
    *       text
    *      -->LT_FIELDCATtext
    *      -->VALUE(FIELDtextE)
    *      -->VALUE(FIELDtextE)
    *      -->VALUE(FIELDtextT)
    FORM fieldcatalog_init USING lt_fieldcatalog TYPE lvc_t_fcat
                           value(field_name) value(field_type) value(field_text).
      DATA: ls_fieldcatalog TYPE lvc_s_fcat.
      CLEAR ls_fieldcatalog.
      ls_fieldcatalog-fieldname = field_name.
      ls_fieldcatalog-datatype  = field_type.
      ls_fieldcatalog-reptext   = field_text.
      ls_fieldcatalog-coltext  =  field_text.
      ls_fieldcatalog-seltext  =  field_text.
      ls_fieldcatalog-tooltip  =  field_text.
      APPEND ls_fieldcatalog TO lt_fieldcatalog.
    ENDFORM.                    "fieldcatalog_init
    *&      Form  sort_build
    *       text
    *      -->LT_SORT    text
    FORM sort_build USING lt_sort TYPE lvc_t_sort.
      DATA: ls_sort TYPE lvc_s_sort.
      ls_sort-fieldname = 'KUNAG'.    "Fieldname on which to sort
      ls_sort-up        = 'X'.        "Sort Ascending
      APPEND ls_sort TO lt_sort.
      ls_sort-fieldname = 'NAME1'.    "Fieldname on which to sort
      ls_sort-up        = 'X'.        "Sort Ascending
      APPEND ls_sort TO lt_sort.
    ENDFORM.                    "sort_build
    *&      Form  layout_init
    *       text
    *      -->LS_LAYOUT  text
    FORM layout_init USING ls_layout TYPE lvc_s_layo.
      ls_layout-zebra      = 'X'.
      ls_layout-grid_title = 'Customer Details'.
      ls_layout-sel_mode   = 'A'.
      ls_layout-cwidth_opt = 'X'.
    ENDFORM.                    "layout_init
    *&      Form  create_detail_list
    *         text
    *    -->  p1        text
    *    <--  p2        text
    FORM create_detail_list.
    *   create dialogbox container as dynpro-instance
    *   When the user switches to another screen, it is
    *   destroyed by lifetime mangagement of CFW
      CREATE OBJECT dialogbox_container
          EXPORTING
            top = 150
            left = 150
            lifetime = cntl_lifetime_dynpro
            caption = 'INVOICE DETAILS'(200)
            width = 800
            height = 200.
      CREATE OBJECT grid2
          EXPORTING i_parent = dialogbox_container.
    *   Register ABAP OO event 'CLOSE'. It is not necessary to register this
    *   event at the frontend (this is done during creation).
      SET HANDLER event_receiver->handle_close FOR dialogbox_container.
    *   display data
      gs_layout-grid_title = 'Invoice Details'(100).
      CALL METHOD grid2->set_table_for_first_display
        EXPORTING
          i_structure_name = 'itab'
          is_layout        = gs_layout
        CHANGING
          it_outtab        = itab[]
          it_fieldcatalog  = gt_fieldcatalog
          it_sort          = gt_sort.
      CALL METHOD cl_gui_control=>set_focus
        EXPORTING
          control = grid2.
    ENDFORM.                    " create_detail_list[code][/
    code]

    Hi,
    I also copied and pasted the same code check once again by copying this code and create screens by double clicking on 100.
    CLASS lcl_event_receiver DEFINITION DEFERRED.
    * INCLUDING TABLES.
    TABLES: vbrk,
            vbrp,
            kna1,
            t001w,
            makt.
    * DECLARATION OF INTERNAL TABLES.
    DATA: BEGIN OF itab OCCURS 0,  "Including the fields of VBRK and VBRP
            kunag LIKE vbrk-kunag, "Customer Code
            name1 LIKE kna1-name1, "Customer Name
            vbeln LIKE vbrk-vbeln, "Invoice #
            fkdat LIKE vbrk-fkdat, "Invoice Date
            werks LIKE vbrp-werks, "Plant
            name2 LIKE t001w-name1,"Plant Description
            matnr LIKE vbrp-matnr, "Material #
            maktx LIKE makt-maktx, "Material Description
            meins LIKE vbrp-meins, "Unit of Measure
            fklmg LIKE vbrp-fklmg, "Quantity
            netwr LIKE vbrp-netwr, "Amount
          END OF itab,
          BEGIN OF itnm OCCURS 0,  "Including the fields of VBRK and KNA1
            kunag LIKE vbrk-kunag, "Customer Code
            name1 LIKE kna1-name1, "Customer Name
          END OF itnm,
          BEGIN OF itpt OCCURS 0,  "Including the fields of VBRP and T001W
            werks LIKE vbrp-werks, "Plant
            name1 LIKE t001w-name1,"Plant Description
          END OF itpt,
          BEGIN OF itmt OCCURS 0,  "Including the fields of VBRP and MAKT
            matnr LIKE vbrp-matnr, "Material #
            maktx LIKE makt-maktx, "Material description
          END OF itmt,
          BEGIN OF itsm OCCURS 0,
            kunag LIKE kna1-kunnr,
            name1 LIKE kna1-name1,
            fklmg LIKE vbrp-fklmg,
            netwr LIKE vbrp-netwr,
          END OF itsm,
          ok_code            LIKE sy-ucomm,
          save_ok            LIKE sy-ucomm,
          g_max              TYPE i VALUE 100,
          g_repid            LIKE sy-repid,
          gs_layout          TYPE lvc_s_layo,
          g_container        TYPE scrfname VALUE 'CUST_CONT',
          grid1              TYPE REF TO cl_gui_alv_grid,
          g_custom_container TYPE REF TO cl_gui_custom_container,
          grid2              TYPE REF TO cl_gui_alv_grid,
          gt_sort            TYPE lvc_t_sort,
          gt_fieldcatalog    TYPE lvc_t_fcat,
          w_tot_qty          LIKE vbrp-fklmg,
          w_tot_amt          LIKE vbrp-netwr,
    * Reference to Dialogbox Container.
          dialogbox_container TYPE REF TO cl_gui_dialogbox_container,
    * Reference to local class that handles events of GRID1 and
    * DIALOGBOX_CONTAINER
          event_receiver TYPE REF TO lcl_event_receiver.
    * SELECT-OPTIONS
    SELECTION-SCREEN SKIP 1.
    SELECTION-SCREEN BEGIN OF BLOCK input WITH FRAME TITLE text-000.
    SELECT-OPTIONS: s_werks FOR vbrp-werks, "Plant
                    s_kunag FOR vbrk-kunag, "Customer
                    s_matnr FOR vbrp-matnr, "Material Number
                    s_fkdat FOR vbrk-fkdat. "Invoice Date
    SELECTION-SCREEN END OF BLOCK input .
    SELECTION-SCREEN SKIP 1.
    * START-OF-SELECTION
    START-OF-SELECTION.
    SET SCREEN 100.
    * CLEARING INTERNAL TABLES.
      CLEAR: itab,
             itnm,
             itmt,
             itpt.
    * QUERY FOR JOINING TABLES VBRK AND VBRP
      SELECT vbrk~kunag
             vbrk~vbeln
             vbrk~fkdat
             vbrp~werks
             vbrp~matnr
             vbrp~meins
             vbrp~fklmg
             vbrp~netwr
             INTO CORRESPONDING FIELDS OF TABLE itab
             FROM vbrk
             INNER JOIN vbrp
                 ON vbrk~vbeln = vbrp~vbeln
             WHERE vbrk~kunag IN s_kunag
               AND vbrk~fkdat IN s_fkdat
               AND vbrp~matnr IN s_matnr
               AND vbrp~werks IN s_werks.
    * QUERY FOR JOINING TABLES VBRK AND KNA1
      SELECT kna1~kunnr AS kunag
             kna1~name1
             INTO TABLE itnm
             FROM kna1
             WHERE kna1~kunnr IN s_kunag.
    * QUERY FOR JOINING TABLES VBRP AND T001W
      SELECT t001w~werks
             t001w~name1
             INTO TABLE itpt
             FROM t001w
             WHERE t001w~werks IN s_werks.
    * QUERY FOR JOINING TABLES VBRP AND MAKT
      SELECT makt~matnr
             makt~maktx
             INTO TABLE itmt
             FROM makt
             WHERE makt~matnr IN s_matnr.
    * SORTING INTERNAL TABLES.
      SORT itab BY kunag.
        LOOP AT itab.
          CLEAR itsm.
          READ TABLE itnm WITH KEY kunag = itab-kunag.
          itsm-kunag = itab-kunag.
          itsm-name1 = itnm-name1.
          itsm-fklmg = itab-fklmg.
          itsm-netwr = itab-netwr.
          COLLECT itsm.
        ENDLOOP.
    * END-OF-SELECTION.
    * If not itsm[] is initial.
    *    CALL SCREEN 100.
    * endif.
    *   LOCAL CLASSES: Definition
    CLASS lcl_event_receiver DEFINITION.
      PUBLIC SECTION.
        METHODS:
        handle_double_click
            FOR EVENT double_click OF cl_gui_alv_grid
                IMPORTING e_row e_column,
        handle_close
            FOR EVENT close OF cl_gui_dialogbox_container
                IMPORTING sender.
      PRIVATE SECTION.
        DATA: dialogbox_status TYPE c.  "'X': does exist, SPACE: does not ex
    ENDCLASS.                    "lcl_event_receiver DEFINITION
    *   LOCAL CLASSES: Implementation
    CLASS lcl_event_receiver IMPLEMENTATION.
    *   §3.At doubleclick(1): The event DOUBLE_CLICK provides
    *      parameters of the clicked row and column.
    *      Use row parameter to select a line of the
    *      corresponding internal table.
      METHOD handle_double_click.
        DATA: ls_sm LIKE LINE OF itsm,
              wa_itab LIKE ITAB.
    *   read selected row from internal table gt_sflight
        READ TABLE itsm INDEX e_row-index INTO ls_sm.
    *   §4.At Doubleclick(2): Select booking data
    *    READ TABLE ITAB WITH KEY KUNAG = LS_SM-KUNAG.    .
        READ TABLE ITAB INTO WA_ITAB WITH KEY KUNAG = LS_SM-KUNAG.
    *   §5.At doubleclick(3): Create dialogbox to show detail list
    *     (if not already existent)
        IF dialogbox_status IS INITIAL.
          dialogbox_status = 'X'.
          PERFORM create_detail_list.
        ELSE.
          CALL METHOD dialogbox_container->set_visible
            EXPORTING
              visible = 'X'.
          CALL METHOD grid2->refresh_table_display.
        ENDIF.
      ENDMETHOD.                    "handle_double_click
      METHOD handle_close.
    *   §6.Handle the CLOSE-button of the dialogbox
    *   set dialogbox invisible
    *   (the dialogbox is destroyed outomatically when the user
    *   switches to another dynpro).
        CALL METHOD sender->set_visible
          EXPORTING
            visible = space.
    *   In this example closing the dialogbox leads
    *   to make it invisible. It is also conceivable to destroy it
    *   and recreate it if the user doubleclicks a line again.
    *   Displaying a great amount of data has a greater impact on
    *performance.
      ENDMETHOD.                    "handle_close
    ENDCLASS.                    "lcl_event_receiver IMPLEMENTATION
    *   lcl_event_receiver (Implementation)
    *=====================================================================
    *       FORM EXIT_PROGRAM                                             *
    FORM exit_program.
      CALL METHOD g_custom_container->free.
      CALL METHOD cl_gui_cfw=>flush.
      IF sy-subrc NE 0.
    * add your handling, for example
        CALL FUNCTION 'POPUP_TO_INFORM'
          EXPORTING
            titel = g_repid
            txt2  = sy-subrc
            txt1  = 'Error in FLush'(500).
      ENDIF.
      LEAVE TO SCREEN 0.
    ENDFORM.                    "exit_program
    *&      Module  STATUS_0100  OUTPUT
    *       text
    module STATUS_0100 output.
      SET PF-STATUS 'MAIN'.
      SET TITLEBAR 'MAIN100'.
      g_repid = sy-repid.
      IF g_custom_container IS INITIAL.
        READ TABLE itsm.
        CREATE OBJECT g_custom_container
          EXPORTING
            container_name = g_container
          EXCEPTIONS
            cntl_error = 1
            cntl_system_error = 2
            create_error = 3
            lifetime_error = 4
            lifetime_dynpro_dynpro_link = 5.
        IF sy-subrc NE 0.
          CALL FUNCTION 'POPUP_TO_INFORM'
            EXPORTING
              titel = g_repid
              txt2  = sy-subrc
              txt1  = 'The control could not be created'(510).
        ENDIF.
        CREATE OBJECT grid1
          EXPORTING
            i_parent = g_custom_container.
        gs_layout-grid_title = 'Invoice Summary'.
    PERFORM fieldcatalog_init USING gt_fieldcatalog[] 'KUNAG' 'C'
    'Customer Code'.
        PERFORM fieldcatalog_init USING gt_fieldcatalog[] 'NAME1' 'C'
    'Customer Name'.
        PERFORM fieldcatalog_init USING gt_fieldcatalog[] 'FKLMG' 'QUAN'
    'Quantity'.
        PERFORM fieldcatalog_init USING gt_fieldcatalog[] 'NETWR' 'CURR'
    'Amount'.
      PERFORM sort_build USING gt_sort[].
      PERFORM layout_init USING gs_layout.
        CALL METHOD grid1->set_table_for_first_display
          EXPORTING
            is_layout       = gs_layout
          CHANGING
            it_outtab       = itsm[]
            it_fieldcatalog = gt_fieldcatalog
            it_sort         = gt_sort.
        CREATE OBJECT event_receiver.
        SET HANDLER event_receiver->handle_double_click FOR grid1.
      ENDIF.
      CALL METHOD cl_gui_control=>set_focus
        EXPORTING
          control = grid1.
    endmodule.                 " STATUS_0100  OUTPUT
    *  MODULE PAI_ALV INPUT
    MODULE USER_COMMAND_0100.
    CALL METHOD cl_gui_cfw=>dispatch.
      CASE sy-ucomm.
        WHEN 'BACK' OR 'EXIT' OR 'CANC'.
          LEAVE TO SCREEN 0.
      ENDCASE.
    ENDMODULE.                    "PAI_ALV INPUT
    *&      Form  fieldcatalog_init
    *       text
    *      -->LT_FIELDCATtext
    *      -->VALUE(FIELDtextE)
    *      -->VALUE(FIELDtextE)
    *      -->VALUE(FIELDtextT)
    FORM fieldcatalog_init USING lt_fieldcatalog TYPE lvc_t_fcat
                           value(field_name) value(field_type)
    value(field_text).
      DATA: ls_fieldcatalog TYPE lvc_s_fcat.
      CLEAR ls_fieldcatalog.
      ls_fieldcatalog-fieldname = field_name.
      ls_fieldcatalog-datatype  = field_type.
      ls_fieldcatalog-reptext   = field_text.
      ls_fieldcatalog-coltext  =  field_text.
      ls_fieldcatalog-seltext  =  field_text.
      ls_fieldcatalog-tooltip  =  field_text.
      APPEND ls_fieldcatalog TO lt_fieldcatalog.
    ENDFORM.                    "fieldcatalog_init
    *&      Form  sort_build
    *       text
    *      -->LT_SORT    text
    FORM sort_build USING lt_sort TYPE lvc_t_sort.
      DATA: ls_sort TYPE lvc_s_sort.
      ls_sort-fieldname = 'KUNAG'.    "Fieldname on which to sort
      ls_sort-up        = 'X'.        "Sort Ascending
      APPEND ls_sort TO lt_sort.
      ls_sort-fieldname = 'NAME1'.    "Fieldname on which to sort
      ls_sort-up        = 'X'.        "Sort Ascending
      APPEND ls_sort TO lt_sort.
    ENDFORM.                    "sort_build
    *&      Form  layout_init
    *       text
    *      -->LS_LAYOUT  text
    FORM layout_init USING ls_layout TYPE lvc_s_layo.
      ls_layout-zebra      = 'X'.
      ls_layout-grid_title = 'Customer Details'.
      ls_layout-sel_mode   = 'A'.
      ls_layout-cwidth_opt = 'X'.
    ENDFORM.                    "layout_init
    *&      Form  create_detail_list
    *         text
    *    -->  p1        text
    *    <--  p2        text
    FORM create_detail_list.
    *   create dialogbox container as dynpro-instance
    *   When the user switches to another screen, it is
    *   destroyed by lifetime mangagement of CFW
      CREATE OBJECT dialogbox_container
          EXPORTING
            top = 150
            left = 150
            lifetime = cntl_lifetime_dynpro
            caption = 'INVOICE DETAILS'(200)
            width = 800
            height = 200.
      CREATE OBJECT grid2
          EXPORTING i_parent = dialogbox_container.
    *   Register ABAP OO event 'CLOSE'. It is not necessary to register this
    *   event at the frontend (this is done during creation).
      SET HANDLER event_receiver->handle_close FOR dialogbox_container.
    *   display data
      gs_layout-grid_title = 'Invoice Details'(100).
      CALL METHOD grid2->set_table_for_first_display
        EXPORTING
          i_structure_name = 'itab'
          is_layout        = gs_layout
        CHANGING
          it_outtab        = itab[]
          it_fieldcatalog  = gt_fieldcatalog
          it_sort          = gt_sort.
      CALL METHOD cl_gui_control=>set_focus
        EXPORTING
          control = grid2.
    ENDFORM.                    " create_detail_list
    Nothing wrong in the code i am able to see the output with five records and the pop-up screen on double clicking a value.
    Kindly close the thread or revert back

  • Can somebody give some real time questions for alv report

    hi guru
    can somebody give some real time questions for alv report.
    answers also.
    regards
    subhasis.

    hi,
    The ALV is a set of function modules and classes and their methods which are added to program code. Developers can use the functionality of the ALV in creating new reports,  saving time which might otherwise have been spent on report enhancement
    The common features of report are column    alignment, sorting, filtering, subtotals, totals etc. <b>To implement these, a lot of coding and logic is to be put. To avoid that we can use a concept called ABAP List Viewer (ALV).</b>
    Using ALV, we can have three types of reports:
       1. Simple Report
       2. Block Report
       3. Hierarchical Sequential Report
    <b>Reward useful points</b>
    Siva

  • Column headings are missing in the output for ALV?

    Hi all,
    i have coded a small report in ALV mode. i am getting the data but the column headings are missing.
    iam not getting the column headings in the output. it is coming as blank. Could you all please help me out in this?
    below is the code of my program:
                     Includes                                            *
    *---Standard header and footer routines
    INCLUDE zsrepthd.
    *--- ALV Routines
    INCLUDE zvsdi_alv_routines_ver3.
    *--- Authorization Check
    INCLUDE z_selection_auth_check.
                     Types Declarations                                  *
    tables : ekpo.
                     Types Declarations                                  *
    TYPES: BEGIN OF ty_ekpo,
            EBELN(18) TYPE C,
            EBELP(20) TYPE C,
            MATNR(18) TYPE C,
            WERKS(11) TYPE C,
          END OF ty_ekpo.
    *-Output field name
    TYPES: BEGIN OF ty_output,
            EBELN(18) TYPE C,
            EBELP(20) TYPE C,
            MATNR(18) TYPE C,
            WERKS(11) TYPE C,
          END OF ty_output.
    *-Output field name
    TYPES: BEGIN OF ty_fields,
            fname(60) TYPE c,
           END OF ty_fields.
                     Internal Table Declarations                         *
    DATA:it_ekpo TYPE STANDARD TABLE OF ty_ekpo,
    *--- Alv parameters
        it_out_alvp TYPE typ_alv_form_params, "for alv parameters
    *-Field catalog  for ALV display
        it_fcat TYPE slis_t_fieldcat_alv WITH HEADER LINE,
    *-Field names for Excel column headings
    it_ekpo_fields TYPE STANDARD TABLE OF ty_fields WITH HEADER LINE.
    **--To store output for Principial Pegging data
    DATA: BEGIN OF it_output occurs 0,
            EBELN(18) TYPE C,
            EBELP(20) TYPE C,
            MATNR(18) TYPE C,
            WERKS(11) TYPE C,
          END OF it_output.
    **--To store output for 2nd
    DATA: BEGIN OF it_output1 occurs 0,
            text(2000),
           END OF it_output1.
                     Data Declarations                                   *
    data: v_ebeln TYPE ekpo-ebeln,
          v_ebelp TYPE ekpo-ebelp,
          v_matnr TYPE ekpo-matnr,
          v_werks TYPE ekpo-werks.
                     Constants Declarations                              *
    CONSTANTS:
         c_0    TYPE i     VALUE  0,
         c_x    TYPE char1 VALUE  'X',
         c_i    TYPE char1 VALUE  'I',
         c_eq   TYPE char2 VALUE  'EQ',
         c_ekpo  TYPE char4 VALUE 'EKPO',
         c_hyfn  TYPE char1 VALUE '-'.
                     Work Area Declarations                              *
    DATA: x_output_ekpo type ty_output,
          x_ekpo type ty_ekpo.
                     Selection Screen                                    *
    SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-f01.
    SELECT-OPTIONS:
          s_ebeln FOR v_ebeln OBLIGATORY,
          s_ebelp FOR v_ebelp,
          s_matnr FOR v_matnr,
          s_werks FOR v_werks.
    SELECTION-SCREEN END OF BLOCK b1.
                     At Selection Screen                                 *
    AT SELECTION-SCREEN.
                     Start-of-Selection                                  *
    START-OF-SELECTION.
    *--- Check Authorizations for Selection-screen
      PERFORM  z_selection_auth_check.
    *--- Fetch Purchasing Document Item data
      PERFORM  fetch_status_pp.
                     End-of-Selection                                    *
    END-OF-SELECTION.
    **-- Download data to final internal table.
      PERFORM data_output.
      IF NOT it_output[] IS INITIAL.
    *--- Fill the structure for calling the ALV form
        PERFORM initialize_alv_params.
    **-- Display ALV Report
        PERFORM setup_and_display_alv_ver2
           USING
         it_out_alvp        "Parameter structure
         it_output[]        "Internal Data table(header table)
         it_output[].       "Dummy table for Hierarchical ALV!!(item table)
        ENDIF.
      IF it_output[] IS INITIAL.
        MESSAGE i999(zi) WITH 'No data found for selection'(i02).
      ENDIF.
    *&      Form  FETCH_STATUS_PP
    Get data from ekpo table
    FORM FETCH_STATUS_PP .
    *-Fetch PP Data from ekpo table
      REFRESH it_ekpo.
      SELECT EBELN
             EBELP
             MATNR
             WERKS
             FROM ekpo
             INTO TABLE it_ekpo
             WHERE ebeln IN s_ebeln
               AND ebelp IN s_ebelp.
      IF sy-subrc = c_0.
        SORT it_ekpo BY ebeln ebelp.
      ENDIF.
    ENDFORM.                    " FETCH_STATUS_PP
    *&      Form  f_top_of_page
    *This is to write the top of page
    FORM top_of_page.
      DATA:  lt_list TYPE slis_t_listheader,
             lx_list TYPE slis_listheader.
    *--- Title name
      CLEAR lx_list.
      lx_list-typ  = 'S'.
      lx_list-key  = 'Title name'(t13).
      lx_list-info = sy-title.
      APPEND lx_list TO lt_list.
      IF NOT lt_list IS INITIAL.
        CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
          EXPORTING
            it_list_commentary = lt_list.
      ENDIF.
    ENDFORM.                    "top_of_page
    *&      Form  init_page_head
    Description : This subroutine initializes the fields in table BHDGD  *
                  for printing the report heading.                       *
    FORM init_page_head.
      bhdgd-line1  = 'SLA Status Report'(h04).
      bhdgd-line2  = sy-title.
      bhdgd-lines  = sy-linsz.
      bhdgd-fcpyrt = sy-uline.
      bhdgd-inifl  = '0'.
    ENDFORM.                    "init_page_head
    *&      Form  initialize_alv_params
    Description : Form to initialize ALV Params
    FORM initialize_alv_params.
      CONSTANTS: lc_alv_grid  TYPE char1 VALUE 'G',  "Grid
                 lc_u         TYPE char1 VALUE 'U'.
      MOVE 'IT_OUTPUT' TO   it_out_alvp-tablname.   "final table
      MOVE sy-repid    TO   it_out_alvp-repid.
      MOVE lc_alv_grid TO   it_out_alvp-alvtype.
      MOVE c_x         TO   it_out_alvp-bringdefaultvar.
      MOVE lc_u        TO   it_out_alvp-variantsavetype.
    ENDFORM.                    " initialize_alv_params
          FORM it_out_init_events                                       *
    -->this is form is to modify the events
    FORM it_out_init_events
          CHANGING
           alevnts TYPE slis_t_event.
      FIELD-SYMBOLS <alevnt> TYPE slis_alv_event.
      LOOP AT alevnts ASSIGNING <alevnt>.
        CASE <alevnt>-name.
          WHEN  slis_ev_top_of_page.
            MOVE 'TOP_OF_PAGE'  TO <alevnt>-form.
        ENDCASE.
      ENDLOOP.
    ENDFORM.                    "it_out_init_events
    *&      Form  DATA_OUTPUT
    Download data to final internal table
    FORM DATA_OUTPUT .
      loop at it_ekpo into x_ekpo.
        x_output_ekpo-ebeln = x_ekpo-ebeln.
        x_output_ekpo-ebelp = x_ekpo-ebelp.
        x_output_ekpo-matnr = x_ekpo-matnr.
        x_output_ekpo-werks = x_ekpo-werks.
        append x_output_ekpo to it_output.
      endloop.
    ENDFORM.                    " DATA_OUTPUT
          FORM it_out_alv_fieldcat_before                               *
    -->  PT_FCAT                                                       *
    -->  ALVP                                                          *
    FORM it_out_alv_fieldcat_before  CHANGING
        pt_fcat TYPE slis_t_fieldcat_alv
        alvp TYPE typ_alv_form_params.
      DATA: lx_fcat TYPE slis_fieldcat_alv.
      CLEAR lx_fcat.
      lx_fcat-tabname        = 'IT_OUTPUT'.
      lx_fcat-fieldname      = 'EBELN'.
      lx_fcat-col_pos        = '1'.
      lx_fcat-ddictxt        = 'M'.
      lx_fcat-seltext_l      = 'Purchasing Doc No'(018).
      lx_fcat-seltext_m      = 'Purchasing Doc No'(018).
      lx_fcat-seltext_s      = 'Purchasing Doc No'(018).
      lx_fcat-reptext_ddic   = 'Purchasing Doc No'(018).
      APPEND lx_fcat TO pt_fcat.
      CLEAR lx_fcat.
      lx_fcat-tabname        = 'IT_OUTPUT'.
      lx_fcat-fieldname      = 'EBELP'.
      lx_fcat-col_pos        = '1'.
      lx_fcat-ddictxt        = 'M'.
      lx_fcat-seltext_l      = 'Item No Purchasing Doc'(020).
      lx_fcat-seltext_m      = 'Item No Purchasing Doc'(020).
      lx_fcat-seltext_s      = 'Item No Purchasing Doc'(020).
      lx_fcat-reptext_ddic   = 'Item No Purchasing Doc'(020).
      APPEND lx_fcat TO pt_fcat.
      CLEAR lx_fcat.
      lx_fcat-tabname        = 'IT_OUTPUT'.
      lx_fcat-fieldname      = 'MATNR'.
      lx_fcat-col_pos        = '1'.
      lx_fcat-ddictxt        = 'M'.
      lx_fcat-seltext_l      = 'Material'(010).
      lx_fcat-seltext_m      = 'Material'(010).
      lx_fcat-seltext_s      = 'Material'(010).
      lx_fcat-reptext_ddic   = 'Material'(010).
      APPEND lx_fcat TO pt_fcat.
      CLEAR lx_fcat.
      lx_fcat-tabname        = 'IT_OUTPUT'.
      lx_fcat-fieldname      = 'WERKS'.
      lx_fcat-col_pos        = '1'.
      lx_fcat-ddictxt        = 'M'.
      lx_fcat-seltext_l      = 'Supply plant'(013).
      lx_fcat-seltext_m      = 'Supply plant'(013).
      lx_fcat-seltext_s      = 'Supply plant'(013).
      lx_fcat-reptext_ddic   = 'Supply plant'(013).
      APPEND lx_fcat TO pt_fcat.
    ENDFORM.                    " it_out_alv_fieldcat_before.
    Regards,
    Shalini
    Edited by: shalini reddy on Oct 7, 2008 5:08 PM

    Hi,
    The heading are in the table pt_fcat - you don't seem to be passing that in form....
    PERFORM setup_and_display_alv_ver2
    USING
    it_out_alvp "Parameter structure
    it_output[] "Internal Data table(header table)
    it_output[]. "Dummy table for Hierarchical ALV!!(item table)
    which I guessing in in one of the includes?
    Saying that the extract pof code does not show where you are calling form it_out_alv_fieldcat_before ...which populates the headings...
    Regards
    Stu

  • Header and Footer for ALV Layout

    Hi All,
    I have used the following code to create the Header and Footer Areas for ALV Report.
      CLEAR: FS_EVENTCAT.
      FS_EVENTCAT-NAME = 'TOP_OF_PAGE'.
      FS_EVENTCAT-FORM = 'build_comment'.
      APPEND FS_EVENTCAT TO GT_EVENTS.
      CLEAR: FS_EVENTCAT.
      FS_EVENTCAT-NAME = 'END_OF_LIST'.
      FS_EVENTCAT-FORM = 'F_WRITE_SUMMARY'.
      APPEND FS_EVENTCAT TO GT_EVENTS.
    Now the space is available for both Header and Footer...
    But i would like to display the Text in Header and Footer areas...
    How to insert the Texts....????
    Can you help me please.....???
    Regards
    Pavan

    Hi,
    Try with following example program:
    REPORT  ZRJR02                                  .
    *Table declaration.
    TABLES:ZEMP_MST,ZDEPT_MST,ZDESG_MST,ZSL_TXN.
    *Varriable declaration.
    TYPE-POOLS SLIS.
    DATA : POS TYPE I.
    DATA  REPID  LIKE SY-REPID.
    DATA : F1 TYPE SLIS_T_FIELDCAT_ALV,
           F2 TYPE SLIS_FIELDCAT_ALV,
           L_LAYOUT TYPE SLIS_LAYOUT_ALV.
    DATA  L_POS TYPE I VALUE 1.               "position of the column
    DATA  GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV.
    *DATA  GT_SORT TYPE SLIS_T_SORTINFO_ALV.
    data:  GT_EVENTS    TYPE SLIS_T_EVENT,
           FS_EVENTCAT LIKE LINE OF GT_EVENTs.
    *Internal table declaration.
    *DATA  BEGIN OF IT_SORT OCCURS 5.
         INCLUDE TYPE SLIS_SORTINFO_ALV.
    *DATA  END OF IT_SORT.
    DATA:BEGIN OF ITAB OCCURS 0,
          ZEMPNO    LIKE ZEMP_MST-ZEMPNO,
          ZEMPNAME  LIKE ZEMP_MST-ZEMPNAME,
          ZDEPTCD   LIKE ZEMP_MST-ZDEPTCD,
          ZDEPTNAME LIKE ZDEPT_MST-ZDEPTNAME,
          ZDESGCD   LIKE ZEMP_MST-ZDESGCD,
          ZDESGNAME LIKE ZDESG_MST-ZDESGNAME,
         END OF ITAB.
    REFRESH ITAB.CLEAR ITAB.
    START-OF-SELECTION.
    SELECT AZEMPNO AZEMPNAME AZDEPTCD BZDEPTNAME AZDESGCD CZDESGNAME
           FROM ZEMP_MST AS A
             INNER JOIN ZDEPT_MST AS B
               ON AZDEPTCD EQ BZDEPTCD
             INNER JOIN ZDESG_MST AS C
               ON AZDESGCD EQ CZDESGCD
           INTO CORRESPONDING FIELDS OF TABLE ITAB.
    IF SY-SUBRC <> 0.
       MESSAGE E899(M3) WITH 'No records'.
    ENDIF.
    perform f_build_eventcat.
    PERFORM LAYOUT.
    END-OF-SELECTION.
    *&      Form  LAYOUT
    FORM LAYOUT .
      PERFORM FCAT USING 'ZEMPNO'    'ITAB' '' 'Emp.No.'   'ZEMPNO'    'ZEMP_MST'  ''.
      PERFORM FCAT USING 'ZEMPNAME'  'ITAB' '' 'Emp. Name' 'ZEMPNAME'  'ZEMP_MST'  ''.
      PERFORM FCAT USING 'ZDEPTCD'   'ITAB' '' 'Dept.Code' 'ZDEPTCD'   'ZEMP_MST'  ''.
      PERFORM FCAT USING 'ZDEPTNAME' 'ITAB' '' 'Dept.Name' 'ZDEPTNAME' 'ZDEPT_MST' ''.
      PERFORM FCAT USING 'ZDESGCD'   'ITAB' '' 'Desg.Code' 'ZDESGCD'   'ZEMP_MST'  ''.
      PERFORM FCAT USING 'ZDESGNAME' 'ITAB' '' 'Desg.Name' 'ZDESGNAME' 'ZDESG_MST' ''.
    PERFORM LSORT USING  'ZEMPNO' 'IDATA' ''.
    PERFORM LSORT USING  'ZEMPNAME' 'IDATA' ''.
    MOVE IT_SORT[] TO GT_SORT[].
      REPID = SY-REPID.
      CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
        EXPORTING
             I_CALLBACK_PROGRAM       = REPID
             IT_FIELDCAT              = F1
            IT_SORT                  = GT_SORT
             I_SAVE                   = 'X'
             IT_EVENTS                = GT_EVENTS[]
         TABLES
              T_OUTTAB                 = ITAB.
      IF SY-SUBRC <> 0.
        MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
              WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    ENDFORM.                    " LAYOUT
    *&      Form  FCAT
    FORM FCAT USING P_FIELD P_TABLE P_SUM P_TEXT P_RFIELD P_RTABLE P_DISP.
      ADD 1 TO POS.
      F2-COL_POS       = POS.
      F2-FIELDNAME     = P_FIELD.
      F2-TABNAME       = P_TABLE.
      F2-SELTEXT_L     = P_TEXT.
      F2-REF_FIELDNAME = P_RFIELD.
      F2-REF_TABNAME   = P_RTABLE.
      F2-DO_SUM        = P_SUM.
      F2-NO_OUT        = P_DISP.
      APPEND F2 TO F1.
      CLEAR F2.
    ENDFORM.                " FCAT
    *&      Form  LSORT
    *FORM LSORT USING P_FIELD P_TABLE P_UP.
    ADD 1 TO L_POS.
    IT_SORT-SPOS      = L_POS.
    IT_SORT-FIELDNAME = P_FIELD.
    IT_SORT-TABNAME   = P_TABLE.
    IT_SORT-UP        = P_UP.
    APPEND IT_SORT.
    *ENDFORM.                    " LSORT
    FORM F_BUILD_EVENTCAT .
    CLEAR: GT_EVENTS.  REFRESH: GT_EVENTS.
      CLEAR: FS_EVENTCAT.
      FS_EVENTCAT-NAME = 'TOP_OF_PAGE'.
      FS_EVENTCAT-FORM = 'F_REPORT_HEADER_ALV'.
      APPEND FS_EVENTCAT TO GT_EVENTS.
      CLEAR: FS_EVENTCAT.
      FS_EVENTCAT-NAME = 'END_OF_LIST'.
      FS_EVENTCAT-FORM = 'F_WRITE_SUMMARY'.
      APPEND FS_EVENTCAT TO GT_EVENTS.
    ENDFORM.                    " F_BUILD_EVENTCAT
    FORM F_REPORT_HEADER_ALV.
    CALL FUNCTION 'Z_YHEAD_PRINT'
    EXPORTING
       TITLE1        = 'XYZ Limited'
       TITLE2        = 'Employee Master'
       TITLE3        = 'Created on '
       COLOR         = 'X'
    ENDFORM.
    *&      Form  F_WRITE_SUMMARY
          Write summary before exit
    FORM F_WRITE_SUMMARY .
    write:/ 'Welcome to XYZ Limited'.
    write:/ 'This is a test program to display Report in ALV Format'.
    ENDFORM.
    Regards,
    Bhaskar

  • How can i set different number of iterations for different scenario profiles that we add to "AutoPilot" in load testing of OATS

    Hi,
    I have few set of load test scenarios, I would like to add each of these test scenarios to "AutoPilot" and run each different scenario profile at different number of iterations.
    As in Oracle Load Testing the "Set Up AutoPilot" tab I see  a section like this "Iterations played by each user: ", which says run these many iterations for every virtual user of all profile added under "Submitted Profile Scenario". So is there any thing like that to set different iterations for every scenario profile added in Autopilot.
    Thanks in advance

    It's not a built-in feature to override a page's styles on a tab-by-tab or site-by-site basis, but perhaps someone has created an add-on for this?
    It also is possible to create style rules for particular sites and to apply them using either a userContent.css file or the Stylish extension. The Greasemonkey extension allows you to use JavaScript on a site-by-site basis, which provides further opportunity for customization. But these would take time and lots of testing to develop and perfect (and perfection might not be possible)...
    Regarding size, does the zoom feature help solve that part? In case you aren't familiar with the keyboard and mouse shortcuts for quickly changing the zoom level on a page, this article might be useful: [[Font size and zoom - increase the size of web pages]].

  • F.01 Summary Report for ALV grid

    Hi all,
    We have defined our financial statement version (FSV). We have been running tests in transaction F.01, when we choose ALV Tree output the transaction works perfectly.
    However, if we choose ALV grid output and then choose "1" in the Summary Report field (highest summary level, only main points of Balance sheet P&L statement should be displayed) the output is not summarized at all.
    In short, no matter what number we put in the Summary Report field we always get the same output.
    What needs to be done in order to be able to use this summarization control?
    Any help will be appreciated.
    Juan
    Edited by: Juan Carlos Mier Giraud on Jul 8, 2008 4:50 PM

    Renata,
    Thanks for your help. I am going to need a bit of help to develop the solutions described in the notes you pointed out.
    Have you successfully created a summarization for ALV grid output?
    I just want to know if it is worthy to devote time to it or just use classic list or ALV tree when appropiate.
    Regards

  • F4 help for ALV table field

    Hi Experts,
    I need to implement F4 help for ALV table field.
    I my scenario, I am using two views. If we click on any record in fist view then it displays the popup window (second view) with relevant record details.
    Here one of the columns having fieldnames corresponding values (old values), for correcting old values I have created new value editable column, we can enter new value for old value then we can save it. Till this functionality is ok.
    Then I have included OVS help for new value field. Here I need to get f4 help for newvalue field relevant to fieldname.
    For example: user clicks on f4 in cell (new value) then if corresponding fieldname is u2018WERKSu2019 then it shows the plant values
    Here I can get fieldname, domain name  and value table using method set_attribute ().
    Same concept I have implemented in ALV using F4IF_FIELD_VALUE_REQUEST. It is working fine
    Here I have little bit confusion. Please advise me how to implement in OVS.
    Regards,
    BBC

    Hi,
    you'll have to create a method for the OVS search help (define it in the "OVS component usage" field in the context).
    Sample code (should work for WERKS):
    method on_ovs .
    declare data structures for the fields to be displayed and
    for the table columns of the selection list, if necessary
      types:
        begin of lty_stru_input,
      add fields for the display of your search input here
          WERKS TYPE WERKS,
        end of lty_stru_input.
      types:
        begin of lty_stru_list,
      add fields for the selection list here
          WERKS TYPE WERKS_D,
          NAME1 type NAME1,
        end of lty_stru_list.
      data: ls_search_input  type lty_stru_input,
            lt_select_list   type standard table of lty_stru_list,
            ls_text          type wdr_name_value,
            lt_label_texts   type wdr_name_value_list,
            lt_column_texts  type wdr_name_value_list,
            lv_window_title  type string,
            lv_group_header  type string,
            lv_table_header  type string,
            lv_werks type werks_d.
      field-symbols: <ls_query_params> type lty_stru_input,
                     <ls_selection>    type lty_stru_list.
      case ovs_callback_object->phase_indicator.
        when if_wd_ovs=>co_phase_0.  "configuration phase, may be omitted
      in this phase you have the possibility to define the texts,
      if you do not want to use the defaults (DDIC-texts)
    Set label from Medium Description to something more logical...
          ls_text-name = `NAME1`.  "must match a field in list structure
          ls_text-value = `Plant description`.
          insert ls_text into table lt_label_texts.
    Set col header from Medium Description to something more logical...
          ls_text-name = `NAME1`.  "must match a field in list structure
          ls_text-value = `Plant description`.
          insert ls_text into table lt_column_texts.
         lv_window_title = wd_assist->get_text( `003` ).
         lv_group_header = wd_assist->get_text( `004` ).
         lv_table_header = wd_assist->get_text( `005` ).
          ovs_callback_object->set_configuration(
                    label_texts  = lt_label_texts
                    column_texts = lt_column_texts
                    group_header = lv_group_header
                    window_title = lv_window_title
                    table_header = lv_table_header
                    col_count    = 2
                    row_count    = 20 ).
        when if_wd_ovs=>co_phase_1.  "set search structure and defaults
      In this phase you can set the structure and default values
      of the search structure. If this phase is omitted, the search
      fields will not be displayed, but the selection table is
      displayed directly.
      Read values of the original context (not necessary, but you
      may set these as the defaults). A reference to the context
      element is available in the callback object.
         ovs_callback_object->context_element->get_static_attributes(
             importing static_attributes = ls_search_input ).
        pass the values to the OVS component
         ovs_callback_object->set_input_structure(
             input = ls_search_input ).
        when if_wd_ovs=>co_phase_2.
      If phase 1 is implemented, use the field input for the
      selection of the table.
      If phase 1 is omitted, use values from your own context.
          if ovs_callback_object->query_parameters is not bound.
          endif.
          assign ovs_callback_object->query_parameters->*
                                  to <ls_query_params>.
          if not <ls_query_params> is assigned.
    TODO exception handling
          endif.
            call method ovs_callback_object->context_element->get_attribute
              exporting
                name  = 'WERKS'
              importing
                value = lv_werks.
            data: lv_subcat_text type rstxtmd.
            select werks
                   name1
              into table lt_select_list
              from T001W.
            ovs_callback_object->set_output_table( output = lt_select_list ).
        when if_wd_ovs=>co_phase_3.
      apply result
          if ovs_callback_object->selection is not bound.
          endif.
          assign ovs_callback_object->selection->* to <ls_selection>.
          if <ls_selection> is assigned.
            ovs_callback_object->context_element->set_attribute(
                                   name  = `WERKS`
                                   value = <ls_selection>-werks ).
          endif.
      endcase.
    endmethod.

  • How to assign search help using ovs for select options for ALV in web dynpr

    how to assign search help using ovs for select options for ALV in web dynpro

    Hi,
    refer http://wiki.sdn.sap.com/wiki/display/WDABAP/InputhelpofObjectValueSelectioninWDABAP
    http://www.****************/Tutorials/WebDynproABAP/OVS/page1.htm
    and http://wiki.sdn.sap.com/wiki/display/Snippets/WebDynproAbap-OVSsearch+help
    Thanks,
    Chandra

  • Support for ALV Reports

    Dear Friends
    Please provide me the detailed info and the links  regarding the ALV Reports.
    Thanks

    Hi,
    Theriotical information regarding ALV u can find it in help.sap.com
    Some of the sites for ALV's
    In this u can find sample codes for ALV*
    http://abapprogramming.blogspot.com/search/label/ABAP%20ALV%20REPORTS%20%20SAMPLE%20CODES
    http://sap.ittoolbox.com/groups/technical-functional/sap-dev/logo-in-function-reuse_alv_commentary_write-93246
    http://sap4.com/wiki/index.php?title=REUSE_ALV_COMMENTARY_WRITE

  • I need simple example for alv grid

    hi
    i need code for simple example for alv grid.
    thanks.

    hi bharat,
                  this is report with most of the functionality.
    report zus_alv_demo_grid .
    tables:     ekko.
    type-pools: slis.
    types: begin of t_ekko,
    ebeln type ekpo-ebeln,
    ebelp type ekpo-ebelp,
    statu type ekpo-statu,
    aedat type ekpo-aedat,
    matnr type ekpo-matnr,
    menge type ekpo-menge,
    meins type ekpo-meins,
    netpr type ekpo-netpr,
    peinh type ekpo-peinh,
    line_color(4) type c, "Used to store row color
    end of t_ekko.
    data: it_ekko type standard table of t_ekko initial size 0,
           wa_ekko type t_ekko.
    *ALV data declarations
    data: fieldcatalog type slis_t_fieldcat_alv with header line,
          gd_tab_group type slis_t_sp_group_alv,
          gd_layout    type slis_layout_alv,
          gd_repid     like sy-repid.
    Data declaration for EVENT and PRINT PARAMETER.
    data: gt_events type slis_t_event,
           gd_prntparams type slis_print_alv.
    data declaration for sorting.
    data : it_sortcat   type slis_sortinfo_alv occurs 1,
           wa_sort like line of it_sortcat.
    data :  i_list_comments type slis_t_listheader.
    start-of-selection.
      perform data_retrieval.
    perform user_command.
      perform build_fieldcatalog.
      perform build_layout.
      perform build_events.
      perform build_print_params.
      perform build_sortcat.
      perform display_alv_report.
    end-of-selection.
    *TOP-OF-PAGE.
    PERFORM top-of-page.
    end-of-page.
    *&      Form  build_fieldcatalog
          text
    -->  p1        text
    <--  p2        text
    form build_fieldcatalog.
      fieldcatalog-fieldname   = 'EBELN'.
      fieldcatalog-seltext_m   = 'Purchase Order'.
      fieldcatalog-col_pos     = 0.
      fieldcatalog-outputlen   = 10.
      fieldcatalog-emphasize   = 'X'.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
      fieldcatalog-fieldname   = 'EBELP'.
      fieldcatalog-seltext_m   = 'PO Item'.
      fieldcatalog-col_pos     = 1.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
      fieldcatalog-fieldname   = 'STATU'.
      fieldcatalog-seltext_m   = 'Status'.
      fieldcatalog-col_pos     = 2.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
      fieldcatalog-fieldname   = 'AEDAT'.
      fieldcatalog-seltext_m   = 'Item change date'.
      fieldcatalog-col_pos     = 3.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
      fieldcatalog-fieldname   = 'MATNR'.
      fieldcatalog-seltext_m   = 'Material Number'.
      fieldcatalog-col_pos     = 4.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
      fieldcatalog-fieldname   = 'MENGE'.
      fieldcatalog-seltext_m   = 'PO quantity'.
      fieldcatalog-col_pos     = 5.
      fieldcatalog-do_sum = 'X'.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
      fieldcatalog-fieldname   = 'MEINS'.
      fieldcatalog-seltext_m   = 'Order Unit'.
      fieldcatalog-col_pos     = 6.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
      fieldcatalog-fieldname   = 'NETPR'.
      fieldcatalog-seltext_m   = 'Net Price'.
      fieldcatalog-col_pos     = 7.
      fieldcatalog-outputlen   = 15.
      fieldcatalog-datatype     = 'CURR'.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
      fieldcatalog-fieldname   = 'PEINH'.
      fieldcatalog-seltext_m   = 'Price Unit'.
      fieldcatalog-col_pos     = 8.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
    endform.                    " build_fieldcatalog
    *&      Form  build_layout
          text
    -->  p1        text
    <--  p2        text
    form build_layout.
      gd_layout-no_input          = 'X'.
      gd_layout-colwidth_optimize = 'X'.
      gd_layout-totals_text       = 'Totals'(201).
    Set layout field for row attributes(i.e. color)
      gd_layout-info_fieldname =      'LINE_COLOR'.
    gd_layout-totals_only        = 'X'.
    gd_layout-f2code            = 'DISP'.  "Sets fcode for
    *when double
                                            "click(press f2)*
    gd_layout-group_change_edit = 'X'.
    gd_layout-header_text       = 'helllllo'.
    endform.                    " build_layout
    *&      Form  data_retrieval
          text
    -->  p1        text
    <--  p2        text
    form data_retrieval.
      data: ld_color(1) type c.
      select ebeln ebelp statu aedat matnr menge meins netpr
    peinh from ekpo  into table it_ekko.
    *Populate field with color attributes
      loop at it_ekko into wa_ekko.
    Populate color variable with colour properties
    Char 1 = C (This is a color property)
    Char 2 = 3 (Color codes: 1 - 7)
    Char 3 = Intensified on/off ( 1 or 0 )
    Char 4 = Inverse display on/off ( 1 or 0 )
              i.e. wa_ekko-line_color = 'C410'
        ld_color = ld_color + 1.
    Only 7 colours so need to reset color value
        if ld_color = 8.
          ld_color = 1.
        endif.
        concatenate 'C' ld_color '10' into wa_ekko-line_color.
    wa_ekko-line_color = 'C410'.
        modify it_ekko from wa_ekko.
      endloop.
    endform.                    " data_retrieval
    *&      Form  display_alv_report
          text
    -->  p1        text
    <--  p2        text
    form display_alv_report.
      gd_repid = sy-repid.
      call function 'REUSE_ALV_GRID_DISPLAY'
           exporting
                i_callback_program       = gd_repid
                is_layout                = gd_layout
                i_callback_top_of_page   = 'TOP-OF-PAGE'
                i_callback_user_command  = 'USER_COMMAND'
                i_callback_pf_status_set = 'SET_PF_STATUS'
                it_event                 = gt_events
                is_print                 = gd_prntparams
                it_fieldcat              = fieldcatalog[]
                it_sort                 = it_sortcat
                i_save                   = 'X'
           tables
                t_outtab                 = it_ekko
           exceptions
                program_error            = 1
                others                   = 2.
      if sy-subrc <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      endif.
    endform.              " DISPLAY_ALV_REPORT
    *&      Form  user_command
          text
    -->  p1        text
    <--  p2        text
    *&      Form  top-of-page
          text
    -->  p1        text
    <--  p2        text
    form top-of-page.
    *ALV Header declarations
      data: t_header type slis_t_listheader,
            wa_header type slis_listheader,
            t_line like wa_header-info,
            ld_lines type i,
            ld_linesc(10) type c.
    Title
      wa_header-typ  = 'H'.
      wa_header-info = 'EKKO Table Report'.
      append wa_header to t_header.
      clear wa_header.
    Date
      wa_header-typ  = 'S'.
      wa_header-key = 'Date: '.
      concatenate  sy-datum+6(2) '.'
                   sy-datum+4(2) '.'
       sy-datum(4) into wa_header-info."todays date
      append wa_header to t_header.
      clear: wa_header.
    Total No. of Records Selected
      describe table it_ekko lines ld_lines.
      ld_linesc = ld_lines.
      concatenate 'Total No. of Records Selected: ' ld_linesc
         into t_line separated by space.
      wa_header-typ  = 'A'.
      wa_header-info = t_line.
      append wa_header to t_header.
      clear: wa_header, t_line.
      call function 'REUSE_ALV_COMMENTARY_WRITE'
           exporting
           it_list_commentary = t_header
           i_logo             = 'GANESH_LOGO'.
    endform.                    " top-of-page
          FORM user_command                                             *
    -->  R_UCOMM                                                       *
    -->  RS_SELFIELD                                                   *
    form user_command using r_ucomm like sy-ucomm
    rs_selfield type slis_selfield.
      case r_ucomm.
        when '&IC1'.
          if rs_selfield-fieldname = 'EBELN'.
            read table it_ekko into wa_ekko index rs_selfield-tabindex.
            set parameter id 'BES' field wa_ekko-ebeln.
            call transaction 'ME23N' and skip first screen.
          endif.
        when 'ULHAS'.
          if rs_selfield-fieldname = 'EBELN'.
            read table it_ekko into wa_ekko index rs_selfield-tabindex.
            set parameter id 'BES' field wa_ekko-ebeln.
            call transaction 'ME23N' and skip first screen.
          endif.
      endcase.
    endform.
          FORM set_pf_status                                            *
    -->  RT_EXTAB                                                      *
    form set_pf_status using rt_extab type slis_t_extab.
      set pf-status 'ZNEWSTATUS'.
    endform.
    *&      Form  build_events
          text
    -->  p1        text
    <--  p2        text
    form build_events.
      data: ls_event type slis_alv_event.
      call function 'REUSE_ALV_EVENTS_GET'
       exporting
         i_list_type           = 0
       importing
         et_events             = gt_events[]
    EXCEPTIONS
      LIST_TYPE_WRONG       = 1
      OTHERS                = 2
      if sy-subrc <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      endif.
      read table gt_events with key name =  slis_ev_end_of_page
                  into ls_event.
      if sy-subrc = 0.
        move 'END_OF_PAGE' to ls_event-form.
        append ls_event to gt_events.
      endif.
      read table gt_events with key name =  slis_ev_end_of_list
                  into ls_event.
      if sy-subrc = 0.
        move 'END_OF_LIST' to ls_event-form.
        append ls_event to gt_events.
      endif.
    endform.                    " build_events
    *&      Form  build_print_params
          text
    -->  p1        text
    <--  p2        text
    form build_print_params.
      gd_prntparams-reserve_lines = '3'.   "Lines reserved for footer
      gd_prntparams-no_coverpage = 'X'.
    endform.                    " build_print_params
          FORM END_OF_PAGE                                              *
    form end_of_page.
      data: listwidth type i,
      ld_pagepos(10) type c,
      ld_page(10)    type c.
      write: sy-uline(50).
      skip.  write:/40 'Page:', sy-pagno .
    endform.
          FORM END_OF_LIST                                              *
    form end_of_list.
      data: listwidth type i,
      ld_pagepos(10) type c,
      ld_page(10)    type c.
      skip.  write:/40 'Page:', sy-pagno .
    endform.
    *&      Form  build_sortcat
          text
    -->  p1        text
    <--  p2        text
    form build_sortcat.
    wa_sort-spos      = 1.
    wa_sort-fieldname = 'EBELN'.
    append wa_sort to it_sortcat.
    wa_sort-spos      = 2.
    wa_sort-fieldname = 'EBELP'.
    append wa_sort to it_sortcat.
    endform.                    " build_sortcat
    Rewards if helpfull
    regards
    vijay dwivedi

  • Ask split long text into two line into same cell for ALV

    Dear All,
    Is it possible split long text into two line into same cell for ALV display data?
    Regards,
    Luke
    Moderator message: please search for information before asking.
    Edited by: Thomas Zloch on Feb 24, 2011 10:12 AM

    Keep options: Select the paragraph, then CtrlAltK (Mac: CmdOptK, I
    think).
    If you want the paragraphs in pairs, create two paragraph styles. Style
    A has keep options set to start on a new page, and also, its Next Style
    is style B.
    Style B has no keep options, but it's Next Style is Style A.
    Select all the text.
    From the flyout menu of the paragraph styles palette, apply Style A
    "then next style."
    Now all paragraphs will be alternating -- style A, style B, style A, etc.
    Now do what I wrote initially, and you'll have pairs of paragraph in
    separate text frames.

  • Methods used in cl_gui_custom_container for ALV and for what purpose

    Methods used in cl_gui_custom_container for ALV and for what purpose and i want the exact senario for the usage of those method?
    2. What events are used in ALV?
    I anyone help me please,
    Points will be awarded.
    Thank you & Regards,
    Jagrut BharatKumar Shukla

    hey,
    look at this sample code....
    TABLES: SFLIGHT.
    G L O B A L   I N T E R N  A L   T A B L E S
    DATA: GI_SFLIGHT TYPE STANDARD TABLE OF SFLIGHT.
    G L O B A L   D A T A
    DATA: OKCODE LIKE SY-UCOMM,
          G_WA_SFLIGHT LIKE SFLIGHT.
    Declare reference variables to the ALV grid and the container
    DATA:
      GO_GRID             TYPE REF TO CL_GUI_ALV_GRID,
      GO_CUSTOM_CONTAINER TYPE REF TO CL_GUI_CUSTOM_CONTAINER.
    S T A R T - O F - S E L E C T I O N.
    START-OF-SELECTION.
      SET SCREEN '0100'.
    *&      Module  USER_COMMAND_0100  INPUT
    MODULE USER_COMMAND_0100 INPUT.
      CASE OKCODE.
        WHEN 'EXIT'.
          LEAVE TO SCREEN 0.
      ENDCASE.
    ENDMODULE.                 " USER_COMMAND_0100  INPUT
    *&      Module  STATUS_0100  OUTPUT
    MODULE STATUS_0100 OUTPUT.
    Create objects
      IF GO_CUSTOM_CONTAINER IS INITIAL.
        CREATE OBJECT GO_CUSTOM_CONTAINER
          EXPORTING CONTAINER_NAME = 'ALV_CONTAINER'.
        CREATE OBJECT GO_GRID
          EXPORTING
            I_PARENT = GO_CUSTOM_CONTAINER.
        PERFORM LOAD_DATA_INTO_GRID.
      ENDIF.
    ENDMODULE.                 " STATUS_0100  OUTPUT
    *&      Form  load_data_into_grid
    FORM LOAD_DATA_INTO_GRID.
    Read data from table SFLIGHT
      SELECT *
        FROM SFLIGHT
        INTO TABLE GI_SFLIGHT.
    Load data into the grid and display them
      CALL METHOD GO_GRID->SET_TABLE_FOR_FIRST_DISPLAY
        EXPORTING
          I_STRUCTURE_NAME = 'SFLIGHT'
        CHANGING
          IT_OUTTAB        = GI_SFLIGHT.
    ENDFORM.                    " load_data_into_grid
    <b>* the Events are</b>
    ITEM_DATA_EXPAND, REPREP_SEL_MODIFY, CALLER_EXIT, USER_COMMAND, TOP_OF_PAGE, DATA_CHANGED, TOP_OF_COVERPAGE, END_OF_COVERPAGE, FOREIGN_TOP_OF_PAGE, FOREIGN_END_OF_PAGE, PF_STATUS_SET, LIST_MODIFY, TOP_OF_LIST, END_OF_PAGE, END_OF_LIST,AFTER_LINE_OUTPUT, BEFORE_LINE_OUTPUT, SUBTOTAL_TEXT, CONTEXT_MENU.
    <b>the methods used with the class CL_GUI_CUSTOM_CONTAINER are as follows......</b>
    IF_CACHED_PROPGET_NEXT_PROP, IF_CACHED_PROPSEEK_FIRST_PROP, IF_CACHED_PROP~SET_PROP, IS_VALID, FREE, GET_PROPERTY, SET_PROPERTY, CALL_METHOD, ASSIGN_PROPERTY, CALL_METHOD_RESULT_GUI_OBJECT, GET_PROPERTY_GUI_OBJECT, IS_CACHED_PROP, ADD_CACHE_PROP, REMOVE_CACHE_PROP, GET_CACHE_PROP, SET_CACHE_PROP, IS_CACHE_VALID, INVALIDATE_CACHE, GET_FOCUS, SET_FOCUS, SET_NAME, GET_NAME, GET_ENABLE, SET_ENABLE, DISPATCH, FINALIZE, GET_ADJUST_DESIGN, GET_GRID_HANDLE, GET_GRID_STEP, GET_HEIGHT, GET_LEFT, GET_METRIC, GET_MODE, GET_REGISTERED_EVENTS, GET_TOP, GET_VISIBLE, GET_WIDTH, IS_ALIVE, REG_EVENT_LEFT_CLICK_DESIGN, REG_EVENT_LEFT_CLICK_RUN_MODE, REG_EVENT_MOVE_CONTROL, REG_EVENT_RIGHT_CLICK, REG_EVENT_SIZE_CONTROL, SET_ADJUST_DESIGN, SET_ALIGNMENT, SET_GRID_HANDLE, SET_GRID_STEP, SET_HEIGHT, SET_LEFT, SET_METRIC, SET_MODE, SET_POSITION, SET_REGISTERED_EVENTS, SET_TOP, SET_VISIBLE, SET_WIDTH, GET_PATH, CONTROL_REGISTER_EVENT, CONTROL_UNREGISTER_EVENT, GET_EVENT_PARAMETER, GET_REGISTERED_EVENTS_EX, GET_WINDOW_PROPERTY, INIT_CONTROL, INIT_CONTROL_WITH_HWND, REGISTER_CACHED_PROPERTY, REGISTER_CACHED_W_PROPERTY, SET_REGISTERED_EVENTS_EX, SET_WINDOW_PROPERTY, UNREGISTER_CACHED_PROPERTY, UNREGISTER_CACHED_W_PROPERTY, GET_CONTAINER_TYPE, RESIZE, GET_INNER_WIDTH, LINK, GET_LINK_INFO, GET_INNER_HEIGHT, SET_MODE_FOR_ALL, GET_DYNPRO_CONTAINER, GET_FRAME_CONTAINER, GET_CHILD, ADD_CHILD, REMOVE_CHILD, REMOVE_ALL_CHILDREN, CONSTRUCTOR.

  • Template for ALV

    anyone have a template for ALV with FM reuse_alv_grid
    PLS////

    Hope you mean to ask a sample program for ALV GRID report
    Here you go.
    RANGES: r_fiscal_period     FOR  s600-spmon.
    DATA:   gt_fieldcat         TYPE slis_t_fieldcat_alv,
            gt_fcat             TYPE slis_t_fieldcat_alv,
            gs_fieldcat         LIKE LINE OF gt_fieldcat,
            gs_fcat             LIKE LINE OF gt_fcat,
            gt_fldcat           TYPE lvc_t_fcat,
            gs_fldcat           TYPE lvc_s_fcat,
            gt_layout           TYPE slis_layout_alv,
            gt_events           TYPE slis_t_event,
            gt_list_top_of_page TYPE slis_t_listheader,
            gv_repid            LIKE sy-repid,
            gv_beg_period       LIKE /irm/s_ipcisel-etprd,
            gv_line(2)          TYPE c.
    DATA:   gv_year(4)          TYPE c,
            gv_month(2)         TYPE c,
            gv_count            TYPE i,
            gv_total            TYPE mc_umnetwr,
            gv_num_lines        TYPE i,
            gv_text1(100)       TYPE c.
    DATA:   gt_dyn_table TYPE REF TO data,
            gs_dyn_line  TYPE REF TO data.
    FIELD-SYMBOLS: <fs_quota>   TYPE STANDARD TABLE,
                   <fs_amount>,
                   <fs_quota_wa>.
    *                C O N S T A N T S
    CONSTANTS: c_600                  TYPE tabname VALUE 'S600',
               c_601                  TYPE tabname VALUE 'S601',
               c_602                  TYPE tabname VALUE 'S602',
               c_603                  TYPE tabname VALUE 'S603',
               c_a00                  TYPE vrsio   VALUE 'A00',
               c_01(2)                TYPE c       VALUE '01',
               c_formname_top_of_page TYPE slis_formname
                                      VALUE 'TOP_OF_PAGE'.
    *   I N T E R N A L  T A B L E S     &      W O R K  A R E A S
    *structure to hold the quotas
    TYPES: BEGIN OF ty_quotas,
             umnetwr   TYPE mc_umnetwr,                  "Net Value
           END OF ty_quotas.
    *list of months
    DATA: BEGIN OF gs_months,
            field_1      LIKE s600-umnetwr,
            field_2      LIKE s600-umnetwr,
            field_3      LIKE s600-umnetwr,
            field_4      LIKE s600-umnetwr,
            field_5      LIKE s600-umnetwr,
            field_6      LIKE s600-umnetwr,
            field_7      LIKE s600-umnetwr,
            field_8      LIKE s600-umnetwr,
            field_9      LIKE s600-umnetwr,
            field_10     LIKE s600-umnetwr,
            field_11     LIKE s600-umnetwr,
            field_12     LIKE s600-umnetwr,
            total        LIKE s600-umnetwr,
          END OF gs_months.
    DATA: gs_quotas TYPE ty_quotas,
          gt_quotas LIKE gs_quotas OCCURS 0 WITH HEADER LINE.
    *            S E L E C T I O N - S C R E E N
    SELECTION-SCREEN BEGIN OF BLOCK bl1 WITH FRAME TITLE text-013.
    PARAMETER: p_lis  TYPE tabname,                "plan input
               p_date LIKE /irm/s_ipcisel-etprd,   "end period
               p_emp  TYPE /irm/ip_ktonr,          "sales participant
               p_terr LIKE ztip_sales-zzterritory, "territory
               p_dis  TYPE zzdistrict,             "district
               p_reg  TYPE zzregion.               "region
    SELECTION-SCREEN END OF BLOCK bl1.
    *          S T A R T - O F - S E L E C T I O N
    START-OF-SELECTION.
    *clear all tables, work areas, variables etc
      PERFORM clear_variables.
    *get all the months in the period range
      PERFORM get_periods.
    *retrieve component quotas
      PERFORM component_quota_amt.
    *build field catalogue using internal table
      PERFORM field_catalog_create.
    *build dynamic table
      PERFORM build_dynamic_table.
    *build layout for the ALV list
      PERFORM build_layout.
    *event table to trigger the TOP OF PAGE event to display the heading
      PERFORM eventtab_build USING gt_events[].
    *subroutine for displaying the header which contains the number of
    *datasets selected or displayed
      PERFORM header_build  USING gt_list_top_of_page[].
    *ALV grid display
      PERFORM display_alv_grid.
    *&      Form  clear_variables
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM clear_variables.
      CLEAR:     gs_quotas,
                 gv_count,
                 gv_beg_period,
                 gv_total.
      REFRESH:   gt_quotas.
      MOVE sy-repid TO gv_repid.
    ENDFORM.                    " clear_variables
    *&      Form  get_periods
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM get_periods.
    *get the fiscal year
      gv_month = p_date+4(2).
      gv_year  = p_date+0(4).
      MOVE gv_month TO gv_count.
      CONCATENATE gv_year c_01 INTO gv_beg_period.
      r_fiscal_period-low    = gv_beg_period.
      r_fiscal_period-high   = p_date.
      r_fiscal_period-sign   = 'I'.
      r_fiscal_period-option = 'BT'.
      APPEND r_fiscal_period.
    ENDFORM.                    " get_periods
    *&      Form  field_catalog_create
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM field_catalog_create.
      DESCRIBE TABLE gt_quotas LINES sy-tabix.
      gv_num_lines = sy-tabix.
      gv_num_lines = gv_num_lines - 1.
      DO gv_num_lines TIMES.
        MOVE sy-index TO gv_line.
        CONCATENATE 'FIELD_' gv_line INTO gs_fldcat-fieldname.
        APPEND gs_fldcat TO gt_fldcat.
      ENDDO.
      MOVE 'TOTAL' TO gs_fldcat-fieldname.
      APPEND gs_fldcat TO gt_fldcat.
    *build field catalog and change the field texts of some of the amount
    *fields more specific
      CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
           EXPORTING
                i_program_name         = gv_repid
                i_internal_tabname     = 'GS_MONTHS'
                i_inclname             = gv_repid
                i_bypassing_buffer     = 'X'
           CHANGING
                ct_fieldcat            = gt_fieldcat[]
           EXCEPTIONS
                inconsistent_interface = 1
                program_error          = 2
                OTHERS                 = 3.
      LOOP AT gt_fieldcat INTO gs_fieldcat.
    *condition to check for building a dynamic ALV grid
        CHECK sy-tabix LE gv_count.
        CASE gs_fieldcat-fieldname.
          WHEN 'FIELD_1'.
            MOVE-CORRESPONDING gs_fieldcat TO gs_fcat.
            MOVE text-001 TO gs_fcat-seltext_l.
            MOVE text-001 TO gs_fcat-seltext_m.
            MOVE text-001 TO gs_fcat-seltext_s.
            MOVE text-001 TO gs_fcat-reptext_ddic.
          WHEN 'FIELD_2'.
            MOVE-CORRESPONDING gs_fieldcat TO gs_fcat.
            MOVE text-002 TO gs_fcat-seltext_l.
            MOVE text-002 TO gs_fcat-seltext_m.
            MOVE text-002 TO gs_fcat-seltext_s.
            MOVE text-002 TO gs_fcat-reptext_ddic.
          WHEN 'FIELD_3'.
            MOVE-CORRESPONDING gs_fieldcat TO gs_fcat.
            MOVE text-003 TO gs_fcat-seltext_l.
            MOVE text-003 TO gs_fcat-seltext_m.
            MOVE text-003 TO gs_fcat-seltext_s.
            MOVE text-003 TO gs_fcat-reptext_ddic.
          WHEN 'FIELD_4'.
            MOVE-CORRESPONDING gs_fieldcat TO gs_fcat.
            MOVE text-004 TO gs_fcat-seltext_l.
            MOVE text-004 TO gs_fcat-seltext_m.
            MOVE text-004 TO gs_fcat-seltext_s.
            MOVE text-004 TO gs_fcat-reptext_ddic.
          WHEN 'FIELD_5'.
            MOVE-CORRESPONDING gs_fieldcat TO gs_fcat.
            MOVE text-005 TO gs_fcat-seltext_l.
            MOVE text-005 TO gs_fcat-seltext_m.
            MOVE text-005 TO gs_fcat-seltext_s.
            MOVE text-005 TO gs_fcat-reptext_ddic.
          WHEN 'FIELD_6'.
            MOVE-CORRESPONDING gs_fieldcat TO gs_fcat.
            MOVE text-006 TO gs_fcat-seltext_l.
            MOVE text-006 TO gs_fcat-seltext_m.
            MOVE text-006 TO gs_fcat-seltext_s.
            MOVE text-006 TO gs_fcat-reptext_ddic.
          WHEN 'FIELD_7'.
            MOVE-CORRESPONDING gs_fieldcat TO gs_fcat.
            MOVE text-007 TO gs_fcat-seltext_l.
            MOVE text-007 TO gs_fcat-seltext_m.
            MOVE text-007 TO gs_fcat-seltext_s.
            MOVE text-007 TO gs_fcat-reptext_ddic.
          WHEN 'FIELD_8'.
            MOVE-CORRESPONDING gs_fieldcat TO gs_fcat.
            MOVE text-008 TO gs_fcat-seltext_l.
            MOVE text-008 TO gs_fcat-seltext_m.
            MOVE text-008 TO gs_fcat-seltext_s.
            MOVE text-008 TO gs_fcat-reptext_ddic.
          WHEN 'FIELD_9'.
            MOVE-CORRESPONDING gs_fieldcat TO gs_fcat.
            MOVE text-009 TO gs_fcat-seltext_l.
            MOVE text-009 TO gs_fcat-seltext_m.
            MOVE text-009 TO gs_fcat-seltext_s.
            MOVE text-009 TO gs_fcat-reptext_ddic.
          WHEN 'FIELD_10'.
            MOVE-CORRESPONDING gs_fieldcat TO gs_fcat.
            MOVE text-010 TO gs_fcat-seltext_l.
            MOVE text-010 TO gs_fcat-seltext_m.
            MOVE text-010 TO gs_fcat-seltext_s.
            MOVE text-010 TO gs_fcat-reptext_ddic.
          WHEN 'FIELD_11'.
            MOVE-CORRESPONDING gs_fieldcat TO gs_fcat.
            MOVE text-011 TO gs_fcat-seltext_l.
            MOVE text-011 TO gs_fcat-seltext_m.
            MOVE text-011 TO gs_fcat-seltext_s.
            MOVE text-011 TO gs_fcat-reptext_ddic.
          WHEN 'FIELD_12'.
            MOVE-CORRESPONDING gs_fieldcat TO gs_fcat.
            MOVE text-012 TO gs_fcat-seltext_l.
            MOVE text-012 TO gs_fcat-seltext_m.
            MOVE text-012 TO gs_fcat-seltext_s.
            MOVE text-012 TO gs_fcat-reptext_ddic.
        ENDCASE.
        APPEND gs_fcat   TO gt_fcat.
      ENDLOOP.
      LOOP AT gt_fieldcat INTO gs_fieldcat.
        CASE gs_fieldcat-fieldname.
          WHEN 'TOTAL'.
            MOVE-CORRESPONDING gs_fieldcat TO gs_fcat.
            MOVE text-015 TO gs_fcat-seltext_l.
            MOVE text-015 TO gs_fcat-seltext_m.
            MOVE text-015 TO gs_fcat-seltext_s.
            MOVE text-015 TO gs_fcat-reptext_ddic.
            APPEND gs_fcat   TO gt_fcat.
        ENDCASE.
      ENDLOOP.
    ENDFORM.                    " field_catalog_create
    *&      Form  component_quota_amt
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM component_quota_amt.
    *convert the user to a valid format
      PERFORM partid_input_conversion CHANGING p_emp.
      IF p_lis EQ c_600.
    *Employee Monthly Quota Targets
        SELECT   umnetwr
          INTO   TABLE gt_quotas
          FROM   s600                      "Employee Monthly Quota Targets
         WHERE   ssour  EQ space
           AND   vrsio  EQ c_a00
           AND   spmon  IN r_fiscal_period
           AND   pvrtnr EQ p_emp.
      ELSEIF p_lis EQ c_601.
    *Territory monthly quota targets
        SELECT   umnetwr
          INTO   TABLE gt_quotas
          FROM   s601                      "Territory monthly quota targets
         WHERE   ssour      EQ space
           AND   vrsio      EQ c_a00
           AND   spmon      IN r_fiscal_period
           AND   zzterritor EQ p_terr.
      ELSEIF p_lis EQ c_602.
    *District Monthly Quota Targets
        SELECT   umnetwr
          INTO   TABLE gt_quotas
          FROM   s602                      "District  Monthly Quota Targets
         WHERE   ssour      EQ space
           AND   vrsio      EQ c_a00
           AND   spmon      IN r_fiscal_period
           AND   zzdistrict EQ p_dis.
      ELSEIF p_lis EQ c_603.
    *Region Monthly Quota Targets
        SELECT   umnetwr
          INTO   TABLE gt_quotas
          FROM   s603                      "Region Monthly Quota Targets
         WHERE   ssour      EQ space
           AND   vrsio      EQ c_a00
           AND   spmon      IN r_fiscal_period
           AND   zzregion   EQ p_reg.
      ENDIF.
      LOOP AT gt_quotas INTO gs_quotas.
        gv_total = gv_total + gs_quotas-umnetwr.
      ENDLOOP.
      MOVE gv_total    TO gs_quotas-umnetwr.
      APPEND gs_quotas TO gt_quotas.
    ENDFORM.                    " component_quota_amt
    *&      Form  build_dynamic_table
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM build_dynamic_table.
    *Create dynamic internal table
      CALL METHOD cl_alv_table_create=>create_dynamic_table
                   EXPORTING
                      it_fieldcatalog = gt_fldcat
                   IMPORTING
                      ep_table        = gt_dyn_table.
      ASSIGN gt_dyn_table->* TO <fs_quota>.
      CREATE DATA gs_dyn_line LIKE LINE OF <fs_quota>.
      ASSIGN gs_dyn_line->* TO <fs_quota_wa>.
      LOOP AT gt_quotas INTO gs_quotas.
        ASSIGN COMPONENT sy-tabix OF STRUCTURE <fs_quota_wa> TO <fs_amount>.
        <fs_amount> = gs_quotas-umnetwr.
      ENDLOOP.
      IF sy-subrc = 0.
        APPEND <fs_quota_wa> TO <fs_quota>.
      ENDIF.
    ENDFORM.                    " build_dynamic_table
    *&      Form  display_alv_grid
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM display_alv_grid.
      IF NOT <fs_quota> IS INITIAL.
    * ALV grid display
        CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
             EXPORTING
                  i_callback_program = gv_repid
                  is_layout          = gt_layout
                  it_fieldcat        = gt_fcat
    *              it_sort            = gt_sortcat
                  i_save             = 'A'
                  it_events          = gt_events
             TABLES
                  t_outtab           = <fs_quota>
             EXCEPTIONS
                  program_error      = 1
                  OTHERS             = 2.
        IF sy-subrc <> 0.
          MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
                  WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
        ENDIF.
      ELSE.
        MESSAGE i013(zip).
      ENDIF.
    ENDFORM.                    " display_alv_grid
    *&      Form  build_layout
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM build_layout.
      gt_layout-zebra             = 'X'.
      gt_layout-no_vline          = ' '.
      gt_layout-reprep            = 'X'.
      gt_layout-detail_popup      = 'X'.
      gt_layout-window_titlebar   = text-014.
      gt_layout-no_scrolling      = ' '.
      gt_layout-detail_titlebar   = text-014.
      gt_layout-numc_sum          = 'X'.
      gt_layout-colwidth_optimize = 'X'.
    ENDFORM.                    " build_layout
    *&      Form  partid_input_conversion
    *       text
    *      <--P_P_EMP  text
    FORM partid_input_conversion CHANGING p_emp.
      DATA: lv_pernr  TYPE pernr_d.
      lv_pernr  = p_emp.
      p_emp     = lv_pernr.
    ENDFORM.                    " partid_input_conversion
    *&      Form  eventtab_build
    *       text
    *      -->P_GT_EVENTS[]  text
    FORM eventtab_build USING p_lt_events TYPE slis_t_event.
      DATA: ls_event TYPE slis_alv_event.
    *top of page event is read here to display the heading
      CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
           EXPORTING
                i_list_type = 0
           IMPORTING
                et_events   = p_lt_events.
      READ TABLE p_lt_events WITH KEY name =  slis_ev_top_of_page
                             INTO ls_event.
      IF sy-subrc = 0.
        MOVE c_formname_top_of_page TO ls_event-form.
        MODIFY p_lt_events FROM  ls_event TRANSPORTING form
                           WHERE name =  slis_ev_top_of_page.
      ENDIF.
    ENDFORM.                    " eventtab_build
    *&      FORM  TOP-OF-PAGE
    *       text
    FORM top_of_page.
      IF NOT gt_quotas[] IS INITIAL.
    * function module which displayes the number of records selected in the
    *  header part
        CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
             EXPORTING
                  it_list_commentary = gt_list_top_of_page.
      ENDIF.
    ENDFORM.                    " TOP-OF-PAGE
    *&      Form  header_build
    *       text
    *      -->P_GT_LIST_TOP_OF_PAGE[]  text
    FORM header_build USING p_lt_list_top_of_page TYPE slis_t_listheader.
      DATA: ls_line       TYPE slis_listheader,
            lv_amount(20) TYPE c.
      MOVE gv_total TO lv_amount.
      CONCATENATE text-016 lv_amount INTO gv_text1.
      CONCATENATE gv_text1 'USD' INTO gv_text1 SEPARATED BY space.
      CLEAR ls_line.
      ls_line-typ  = 'H'.
      ls_line-info = gv_text1.
      APPEND ls_line TO p_lt_list_top_of_page.
    ENDFORM.                    " header_build
    Thanks,

Maybe you are looking for