ALV : building FIELDCATALOG in ALV object

Hello,
Could somebody give me a method for building the fieldcatalog from a static internal table in ALV object.
Thanks for help,
Bertrand

Hi,
I am sendin the sample code for alv grid display.
REPORT  YMS_EXCISE MESSAGE-ID E4 NO STANDARD PAGE HEADING LINE-SIZE 350.                              .
TABLES : J_1IEXCHDR,      " header table
         J_1IEXCDTL,      " item table
         J_1IPART2,       " Excise Part II details
         LFA1,            " vendor master table
         J_1IMOVEND,      " vendor excise details table
         MSEG,            " Document Segment: Material
         MKPF,            " Header: Material Document
         DD07T,           " domain text table
         T001W.           " Plant and Branch Details
DATA : BEGIN OF IT_CHDR OCCURS 100,
       DOCNO LIKE J_1IEXCHDR-DOCNO,
       DOCYR LIKE J_1IEXCHDR-DOCYR,
       EXNUM LIKE J_1IEXCHDR-EXNUM,
       EXDAT LIKE J_1IEXCHDR-EXDAT,
       WERKS LIKE J_1IEXCHDR-WERKS,
       EXBED LIKE J_1IEXCHDR-EXBED,
       EXCCD LIKE J_1IEXCHDR-EXCCD,
       ECS LIKE J_1IEXCHDR-ECS,
       END OF IT_CHDR.
DATA : BEGIN OF IT_CDTL OCCURS 100,
       DOCYR LIKE J_1IEXCDTL-DOCYR,
       DOCNO LIKE J_1IEXCDTL-DOCNO,
       EXNUM LIKE J_1IEXCDTL-EXNUM,
       EXDAT LIKE J_1IEXCDTL-EXDAT,
       LIFNR LIKE J_1IEXCDTL-LIFNR,
       MATNR LIKE J_1IEXCDTL-MATNR,
       MAKTX LIKE J_1IEXCDTL-MAKTX,
       CHAPID LIKE J_1IEXCDTL-CHAPID,
       EXBAS LIKE J_1IEXCDTL-EXBAS,
       EXBED LIKE J_1IEXCDTL-EXBED,
       ECS   LIKE J_1IEXCDTL-ECS,
       MENGE LIKE J_1IEXCDTL-MENGE,
       MEINS LIKE J_1IEXCDTL-MEINS,
       RDOC2 LIKE J_1IEXCDTL-RDOC2,
       END OF IT_CDTL.
DATA TEXT(10).
DATA : BEGIN OF IT_OUT OCCURS 0,
       SERIALNO LIKE J_1IPART2-SERIALNO,
       TEXT1 LIKE TEXT,
       EXNUM LIKE J_1IEXCDTL-EXNUM,
       EXDAT LIKE J_1IEXCDTL-EXDAT,
       NAME LIKE LFA1-NAME1,
       DDTEXT LIKE DD07T-DDTEXT,
       EXCCD LIKE J_1IEXCHDR-EXCCD,
       BUDAT LIKE MKPF-BUDAT,
       EXBAS LIKE IT_CDTL-EXBAS,
       EXBED LIKE IT_CDTL-EXBED,
       ECS   LIKE IT_CDTL-ECS,
       MATNR LIKE IT_CDTL-MATNR,
       MAKTX LIKE IT_CDTL-MAKTX,
       CHAPID LIKE IT_CDTL-CHAPID,
       MENGE LIKE IT_CDTL-MENGE,
       MEINS LIKE IT_CDTL-MEINS,
       DEL_IND(1),
       END OF IT_OUT.
DATA IT_PART2 LIKE J_1IPART2 OCCURS 0 WITH HEADER LINE.
DATA S_NO(4) .
DATA DB_CNT LIKE SY-TABIX.
DATA EBELN_T LIKE MSEG-EBELN .
TYPE-POOLS : SLIS.
DATA : AFIELD TYPE SLIS_FIELDCAT_ALV.
DATA : LIST_HEADER TYPE SLIS_T_LISTHEADER,
       FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
       LS_FTCAT TYPE LVC_S_FCAT,
       SORTCAT TYPE SLIS_T_SORTINFO_ALV,
       SORTCAT_LN  LIKE LINE OF SORTCAT,
       G_REPID LIKE SY-REPID,
       G_BACK_GROUND(70),  "like bapibds01-objkey,
       GS_VARIANT LIKE DISVARIANT,
       G_SAVE ,
       GT_EVENTS TYPE SLIS_T_EVENT,
       ALV_EVENT TYPE SLIS_ALV_EVENT,
       EVENTCAT             TYPE SLIS_T_EVENT,
       EVENTCAT_LN          LIKE LINE OF EVENTCAT,
       LAYOUT_IN            TYPE SLIS_LAYOUT_ALV,
       LAYOUT_IN1           TYPE SLIS_LAYOUT_ALV.
CONSTANTS : GC_FORMNAME_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE
'TOP_OF_PAGE',
            GC_FORMNAME_USER_COMMAND TYPE SLIS_FORMNAME VALUE
'USER_COMMAND',
            GC_FORMNAME_BEFORE_OUTPUT TYPE SLIS_FORMNAME VALUE
'BEFORE_OUTPUT'.
  ALV_EVENT TYPE SLIS_ALV_EVENT,
DATA EX_NO LIKE IT_CHDR-EXNUM VALUE 0.
DATA REGTYP_1 LIKE J_1IPART2-REGTYP.
SELECTION-SCREEN BEGIN OF BLOCK B WITH FRAME.
PARAMETERS  WERKS TYPE J_1IEXCHDR-WERKS.
SELECT-OPTIONS : BUDAT FOR J_1IEXCHDR-EXDAT.
PARAMETERS : R1 RADIOBUTTON GROUP GRP DEFAULT 'X',
             R2 RADIOBUTTON GROUP GRP.
SELECTION-SCREEN END OF BLOCK B.
INITIALIZATION.
  G_REPID = SY-REPID.
  G_SAVE = 'A'.
PERFORM BUILD_EVENT USING GT_EVENTS[].
  PERFORM ALV_EVENT_INIT.
AT SELECTION-SCREEN.
  REFRESH LIST_HEADER.
  PERFORM TOP_OF_PAGE_LIST_HEADER USING LIST_HEADER.
START-OF-SELECTION.
PERFORM ALV_EVENT_INIT.
  G_REPID = SY-REPID.
  G_BACK_GROUND = ' ' .
  IF R1 = 'X'.
    CLEAR R2. CLEAR : REGTYP_1.
    REGTYP_1 = 'A'.
     set titlebar 'BALAJI' with DB_CNT.
  ELSEIF R2 = 'X'.
    CLEAR R1.CLEAR : REGTYP_1.
    REGTYP_1 = 'C'.
     set titlebar 'BALAJI1' with DB_CNT.
  ENDIF.
  SELECT * FROM J_1IPART2
                   INTO CORRESPONDING FIELDS OF TABLE IT_PART2
                   WHERE REGTYP = REGTYP_1 AND
                         TRNTYP = 'GRPO' AND
                         BUDAT IN BUDAT.
                          DOCYR = IT_CDTL-DOCYR AND
                          DOCNO = IT_CDTL-DOCNO.
  LOOP AT IT_PART2.
    SELECT SINGLE * FROM J_1IEXCHDR
              INTO CORRESPONDING FIELDS OF IT_CHDR
                      WHERE  TRNTYP = 'GRPO' AND
                      DOCYR = IT_PART2-DOCYR AND
                      DOCNO = IT_PART2-DOCNO AND
                      WERKS = WERKS AND
                      exdat IN BUDAT.
                   ORDER BY EXDAT.
    IF SY-SUBRC = 0.
      APPEND IT_CHDR.
    ELSE.
      CONTINUE.
    ENDIF.
IF SY-SUBRC <> 0.
   MESSAGE E084.
ENDIF.
  ENDLOOP.
  LOOP AT IT_CHDR.
    SELECT * FROM J_1IEXCDTL
              INTO CORRESPONDING FIELDS OF IT_CDTL
            FOR ALL ENTRIES IN IT_CHDR
                     WHERE
                      TRNTYP = 'GRPO' AND
                      DOCNO  = IT_CHDR-DOCNO AND
                      DOCYR  = IT_CHDR-DOCYR AND
                      EXNUM  = IT_CHDR-EXNUM AND
                      EXDAT  = IT_CHDR-EXDAT AND
                      WERKS  = IT_CHDR-WERKS.
      IF SY-SUBRC = 0.
        APPEND IT_CDTL.
      ELSE.
        CONTINUE.
      ENDIF.
    ENDSELECT.
  ENDLOOP.
  LOOP AT IT_CDTL.
    CLEAR TEXT.
    DB_CNT = DB_CNT + 1.
    READ TABLE IT_CHDR WITH KEY EXNUM = IT_CDTL-EXNUM.
    READ TABLE IT_PART2 WITH KEY DOCNO = IT_CDTL-DOCNO .
    IT_OUT-SERIALNO = IT_PART2-SERIALNO.
    SELECT SINGLE NAME1 FROM LFA1
                    INTO IT_OUT-NAME
                    WHERE LIFNR = IT_CDTL-LIFNR.
    SELECT SINGLE * FROM LFA1
                      WHERE LIFNR = IT_CDTL-LIFNR.
    IF LFA1-LAND1 EQ 'IN'.
      TEXT = 'INVOICE'.
      IT_OUT-TEXT1 = TEXT.
    ELSE.
      TEXT = 'BOE'.
      IT_OUT-TEXT1 = TEXT.
    ENDIF.
    SELECT SINGLE * FROM J_1IMOVEND
                    WHERE LIFNR = IT_CDTL-LIFNR.
    SELECT SINGLE * FROM DD07T
                   INTO IT_OUT-DDTEXT
                    WHERE DOMNAME = 'J_1IVTYP' AND
                          DDLANGUAGE = 'EN' AND
                          DOMVALUE_L = J_1IMOVEND-J_1IVTYP.
  IF DD07T-DDTEXT = 'First Stage Dealer of indigenous excisable goods'
OR
    DD07T-DDTEXT = 'Second Stage Dealer of indigenous excisablegoods'.
      DD07T-DDTEXT = 'Dealer'.
    ENDIF.
    IT_OUT-DDTEXT = DD07T-DDTEXT.
   ELSEIF DD07T-DDTEXT = 'Second Stage Dealer of indigenous excisable
*goods'.
      DD07T-DDTEXT =
    CLEAR EBELN_T.
    SELECT SINGLE LFBNR FROM MSEG
                        INTO EBELN_T
                        WHERE MBLNR = IT_CDTL-RDOC2 .
    SELECT SINGLE * FROM MSEG
                      WHERE BWART = '106' AND
                            LFBNR = EBELN_T ."and
                           ebeln = ebeln_t.
    IF SY-SUBRC = 0.
      IT_OUT-DEL_IND = 'X'.
    ELSE.
      IT_OUT-DEL_IND = ' '.
    ENDIF.
    SELECT SINGLE BUDAT FROM MKPF
                      INTO IT_OUT-BUDAT
                      WHERE MBLNR = EBELN_T  ."MSEG-LFBNR.
    IT_OUT-EXNUM = IT_CDTL-EXNUM.
    IT_OUT-EXDAT = IT_CDTL-EXDAT.
    IT_OUT-EXCCD = IT_CHDR-EXCCD.
    IT_OUT-EXBAS = IT_CDTL-EXBAS.
    IT_OUT-EXBED = IT_CDTL-EXBED.
    IT_OUT-ECS   = IT_CDTL-ECS.
    IT_OUT-MATNR = IT_CDTL-MATNR.
    IT_OUT-MAKTX = IT_CDTL-MAKTX.
    IT_OUT-CHAPID = IT_CDTL-CHAPID.
    IT_OUT-MENGE = IT_CDTL-MENGE.
    IT_OUT-MEINS = IT_CDTL-MEINS.
    APPEND IT_OUT.
   EX_NO = IT_CDTL-EXNUM.
  ENDLOOP.
Title Portion
  IF REGTYP_1 = 'A'.
    SET TITLEBAR 'BALAJI' WITH DB_CNT.
  ELSEIF REGTYP_1 = 'C'.
    SET TITLEBAR 'BALAJI1' WITH DB_CNT.
  ENDIF.
  AFIELD-COL_POS = 1.
  AFIELD-FIELDNAME = 'SERIALNO'.
  AFIELD-SELTEXT_L = 'INPUTS'.
  AFIELD-JUST = 'L'.
  APPEND AFIELD TO FIELDCAT.
  AFIELD-COL_POS = 2.
  AFIELD-FIELDNAME = 'TEXT1'.
  AFIELD-SELTEXT_L = 'TYPE OF DOC'.
  AFIELD-JUST = 'L'.
  AFIELD-DECIMALS_OUT = '0'.
  AFIELD-NO_ZERO = 'X'.
  APPEND AFIELD TO FIELDCAT.
  AFIELD-COL_POS = 3.
  AFIELD-FIELDNAME = 'EXNUM'.
  AFIELD-SELTEXT_L = 'DOC.NO'.
  AFIELD-JUST = 'L'.
  APPEND AFIELD TO FIELDCAT.
  AFIELD-COL_POS = 4.
  AFIELD-FIELDNAME = 'EXDAT'.
  AFIELD-SELTEXT_L = 'DOC.DATE'.
  AFIELD-JUST = 'C'.
  APPEND AFIELD TO FIELDCAT.
  AFIELD-COL_POS = 5.
  AFIELD-FIELDNAME = 'NAME'.
  AFIELD-SELTEXT_L = 'NAME OF THE SUPPLIER'.
  AFIELD-NO_ZERO = 'X'.
  AFIELD-JUST = 'L'.
  APPEND AFIELD TO FIELDCAT.
  AFIELD-COL_POS = 6.
  AFIELD-FIELDNAME = 'DDTEXT'.
  AFIELD-SELTEXT_L = 'TYPE-OF-SUPPLIER'.
  AFIELD-JUST = 'L'.
  APPEND AFIELD TO FIELDCAT.
  AFIELD-COL_POS = 7.
  AFIELD-FIELDNAME = 'EXCCD'.
  AFIELD-SELTEXT_L = 'ECC OF THE SUPPLIER'.
  AFIELD-NO_ZERO = 'X'.
  AFIELD-JUST = 'L'.
  APPEND AFIELD TO FIELDCAT.
  AFIELD-COL_POS = 8.
  AFIELD-FIELDNAME = 'BUDAT'.
  AFIELD-SELTEXT_L = 'INPUT RECV DATE'.
  AFIELD-JUST = 'C'.
  APPEND AFIELD TO FIELDCAT.
  AFIELD-COL_POS = 9.
  AFIELD-FIELDNAME = 'EXBAS'.
  AFIELD-SELTEXT_L = 'ASSESSABLE-VALUE'.
  AFIELD-DO_SUM             = 'X'.
  AFIELD-JUST = 'R'.
  AFIELD-DECIMALS_OUT = '2'.
  APPEND AFIELD TO FIELDCAT.
  AFIELD-COL_POS = 10.
  AFIELD-FIELDNAME = 'EXBED'.
  AFIELD-SELTEXT_L = 'DET OF CREDIT TAKEN CENVAT'.
  AFIELD-JUST = 'R'.
  APPEND AFIELD TO FIELDCAT.
  AFIELD-COL_POS = 11.
  AFIELD-FIELDNAME = 'ECS'.
  AFIELD-SELTEXT_L = 'DET OF CREDIT TAKEN E-CESS'.
  AFIELD-JUST = 'R'.
  APPEND AFIELD TO FIELDCAT.
  AFIELD-COL_POS = 12.
  AFIELD-FIELDNAME = 'MATNR'.
  AFIELD-SELTEXT_L = 'MATERIAL-CODE'.
  AFIELD-JUST = 'L'.
  APPEND AFIELD TO FIELDCAT.
  AFIELD-COL_POS = 13.
  AFIELD-FIELDNAME = 'MAKTX'.
  AFIELD-SELTEXT_L = 'DESCRIPTION'.
  AFIELD-JUST = 'L'.
  APPEND AFIELD TO FIELDCAT.
  AFIELD-COL_POS = 14.
  AFIELD-FIELDNAME = 'CHAPID'.
  AFIELD-SELTEXT_L = 'TARIFF-ID'.
  AFIELD-JUST = 'L'.
  APPEND AFIELD TO FIELDCAT.
  AFIELD-COL_POS = 15.
  AFIELD-FIELDNAME = 'MENGE'.
  AFIELD-SELTEXT_L = 'QUANTITY'.
  AFIELD-JUST = 'R'.
  AFIELD-DO_SUM             = ' '.
  APPEND AFIELD TO FIELDCAT.
  AFIELD-COL_POS = 16.
  AFIELD-FIELDNAME = 'MEINS'.
  AFIELD-SELTEXT_L = 'UOM'.
  AFIELD-JUST = 'C'.
  APPEND AFIELD TO FIELDCAT.
  AFIELD-COL_POS = 17.
  AFIELD-FIELDNAME = 'DEL_IND'.
  AFIELD-SELTEXT_L = 'Deleted'.
  AFIELD-JUST = 'C'.
  APPEND AFIELD TO FIELDCAT.
* LAYOUT FOR ZEBRA CATLOG
  LAYOUT_IN-COLWIDTH_OPTIMIZE = 'X'.
  LAYOUT_IN-ZEBRA             = 'X'.
  LAYOUT_IN-GET_SELINFOS      = 'X'.
  LAYOUT_IN-CONFIRMATION_PROMPT = 'X'.
  LAYOUT_IN-DETAIL_POPUP = 'X' .
SORTCAT-decimals     = '0'.
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      I_CALLBACK_PROGRAM      = G_REPID
      I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
      I_SAVE                  = G_SAVE
      IS_VARIANT              = GS_VARIANT
      IT_FIELDCAT             = FIELDCAT
      IT_SORT                 = SORTCAT
      IS_LAYOUT               = LAYOUT_IN
      IT_EVENTS               = EVENTCAT
     I_BACKGROUND_ID         = g_back_ground
    TABLES
      T_OUTTAB                = IT_OUT.
*&      Form  TOP_OF_PAGE_LIST_HEADER
      text
     -->LIST_HEADERtext
FORM TOP_OF_PAGE_LIST_HEADER USING LIST_HEADER TYPE SLIS_T_LISTHEADER.
  DATA : HLINE TYPE SLIS_LISTHEADER,
         TEXT(60) TYPE C.
  CLEAR : HLINE,TEXT.
  HLINE-TYP = 'H'.
WRITE 'ROOTS INDUSTRIES LTD' TO TEXT.
  HLINE-INFO = TEXT.
  APPEND HLINE TO LIST_HEADER.
  SELECT SINGLE * FROM T001W WHERE WERKS = WERKS.
  CLEAR : HLINE,TEXT.
  HLINE-TYP = 'H'.
  WRITE 'PLANT :' TO TEXT.
  WRITE WERKS TO TEXT+8.
  HLINE-INFO = TEXT.
  APPEND HLINE TO LIST_HEADER.
  CLEAR : HLINE,TEXT.
  HLINE-TYP = 'H'.
  WRITE T001W-NAME1 TO TEXT.
  HLINE-INFO = TEXT.
  APPEND HLINE TO LIST_HEADER.
  CLEAR : HLINE,TEXT.
  HLINE-TYP = 'H'.
  WRITE T001W-STRAS TO TEXT.
  HLINE-INFO = TEXT.
  APPEND HLINE TO LIST_HEADER.
  CLEAR : HLINE,TEXT.
  HLINE-TYP = 'H'.
  WRITE T001W-ORT01 TO TEXT.
  HLINE-INFO = TEXT.
  APPEND HLINE TO LIST_HEADER.
  CLEAR : HLINE,TEXT.
  HLINE-TYP = 'H'.
  WRITE 'DATE :' TO TEXT.
  WRITE BUDAT-LOW TO TEXT+7.
  IF BUDAT-HIGH NE ''.
    WRITE 'TO' TO TEXT+18.
    WRITE BUDAT-HIGH TO TEXT+22.
  ENDIF.
  HLINE-INFO = TEXT.
  APPEND HLINE TO LIST_HEADER.
ENDFORM.                    "TOP_OF_PAGE_LIST_HEADER
*&      Form  ALV_EVENT_INIT
      text
FORM ALV_EVENT_INIT .
  CLEAR ALV_EVENT.
  ALV_EVENT-NAME = SLIS_EV_TOP_OF_PAGE.
  ALV_EVENT-FORM = 'ALV_TOP_OF_PAGE'.
  APPEND ALV_EVENT TO EVENTCAT.
  CLEAR ALV_EVENT.
  ALV_EVENT-NAME = SLIS_EV_TOP_OF_LIST.
  ALV_EVENT-FORM = 'ALV_TOP_OF_LIST'.
  APPEND ALV_EVENT TO EVENTCAT.
   CLEAR ALV_EVENT.
   ALV_EVENT-NAME = SLIS_EV_END_OF_LIST.
   ALV_EVENT-FORM = 'ALV_END_OF_LIST'.
   APPEND ALV_EVENT TO GT_EVENTS.
   CLEAR ALV_EVENT.
   ALV_EVENT-NAME = SLIS_EV_END_OF_PAGE.
   ALV_EVENT-FORM = 'ALV_END_OF_PAGE'.
   APPEND ALV_EVENT TO GT_EVENTS.
ENDFORM.                    "ALV_EVENT_INIT
*&      Form  ALV_TOP_OF_PAGE
      text
FORM ALV_TOP_OF_PAGE.
  CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
    EXPORTING
      IT_LIST_COMMENTARY = LIST_HEADER
      I_LOGO             = 'ENJOYSAP_LOGO'.
ENDFORM.                    "ALV_TOP_OF_PAGE
*&      Form  BUILD_EVENT
      text
     -->P_GT_EVENTS[]  text
FORM BUILD_EVENT USING P_EVENTS TYPE SLIS_T_EVENT.
  CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
    EXPORTING
      I_LIST_TYPE     = 0
    IMPORTING
      ET_EVENTS       = P_EVENTS
    EXCEPTIONS
      LIST_TYPE_WRONG = 1
      OTHERS          = 2.
  READ TABLE P_EVENTS WITH KEY NAME = SLIS_EV_USER_COMMAND INTO
ALV_EVENT.
  IF SY-SUBRC = 0.
    MOVE GC_FORMNAME_USER_COMMAND TO ALV_EVENT-FORM.
    APPEND ALV_EVENT TO P_EVENTS.
  ENDIF.
  READ TABLE P_EVENTS WITH KEY NAME = SLIS_EV_BEFORE_LINE_OUTPUT INTO
ALV_EVENT.
  IF SY-SUBRC = 0.
    MOVE GC_FORMNAME_BEFORE_OUTPUT TO ALV_EVENT-FORM.
    APPEND ALV_EVENT TO P_EVENTS.
  ENDIF.
ENDFORM.                    " BUILD_EVENT
Thanks,
Shankar

Similar Messages

  • ALV using ABAP Classes and Objects

    Hi All,
    I am trying to print the values in my internal table using ALV, using ABAP classes and objects. Here the title for columns are picked based on the title specified in the data element. I want to set the title of my columns by my own. how to achieve this ?. Please provide me a sample code if possible.
    thanks & regards,
    Navneeth.K

    Hello Navneeth
    The following sample report shows how to build and modify a fieldcatalog (routine <b>BUILD_FIELDCATALOG_KNB1</b>).
    *& Report  ZUS_SDN_ALVGRID_EVENTS
    REPORT  zus_sdn_alvgrid_events.
    DATA:
      gd_okcode        TYPE ui_func,
      gt_fcat          TYPE lvc_t_fcat,
      go_docking       TYPE REF TO cl_gui_docking_container,
      go_grid1         TYPE REF TO cl_gui_alv_grid.
    DATA:
      gt_knb1          TYPE STANDARD TABLE OF knb1.
    PARAMETERS:
      p_bukrs      TYPE bukrs  DEFAULT '2000'  OBLIGATORY.
    *       CLASS lcl_eventhandler DEFINITION
    CLASS lcl_eventhandler DEFINITION.
      PUBLIC SECTION.
        CLASS-METHODS:
          handle_hotspot_click FOR EVENT hotspot_click OF cl_gui_alv_grid
            IMPORTING
              e_row_id
              e_column_id
              es_row_no
              sender.
    ENDCLASS.                    "lcl_eventhandler DEFINITION
    *       CLASS lcl_eventhandler IMPLEMENTATION
    CLASS lcl_eventhandler IMPLEMENTATION.
      METHOD handle_hotspot_click.
    *   define local data
        DATA:
          ls_knb1     TYPE knb1,
          ls_col_id   TYPE lvc_s_col.
        READ TABLE gt_knb1 INTO ls_knb1 INDEX e_row_id-index.
        CHECK ( ls_knb1-kunnr IS NOT INITIAL ).
        CASE e_column_id-fieldname.
          WHEN 'KUNNR'.
            SET PARAMETER ID 'KUN' FIELD ls_knb1-kunnr.
            SET PARAMETER ID 'BUK' FIELD ls_knb1-bukrs.
            CALL TRANSACTION 'XD03' AND SKIP FIRST SCREEN.
          WHEN 'ERNAM'.
    *        SET PARAMETER ID 'USR' FIELD ls_knb1-ernam.
    *        NOTE: no parameter id available, yet simply show the priciple
            CALL TRANSACTION 'SU01' AND SKIP FIRST SCREEN.
          WHEN OTHERS.
    *       do nothing
        ENDCASE.
    *   Set active cell to field BUKRS otherwise the focus is still on
    *   field KUNNR which will always raise event HOTSPOT_CLICK
        ls_col_id-fieldname = 'BUKRS'.
        CALL METHOD go_grid1->set_current_cell_via_id
          EXPORTING
            is_row_id    = e_row_id
            is_column_id = ls_col_id.
      ENDMETHOD.                    "handle_hotspot_click
    ENDCLASS.                    "lcl_eventhandler IMPLEMENTATION
    START-OF-SELECTION.
      SELECT        * FROM  knb1 INTO TABLE gt_knb1
             WHERE  bukrs  = p_bukrs.
    * Create docking container
      CREATE OBJECT go_docking
        EXPORTING
          parent                      = cl_gui_container=>screen0
          ratio                       = 90
        EXCEPTIONS
          OTHERS                      = 6.
      IF sy-subrc <> 0.
    *   MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *              WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    * Create ALV grid
      CREATE OBJECT go_grid1
        EXPORTING
          i_parent          = go_docking
        EXCEPTIONS
          OTHERS            = 5.
      IF sy-subrc <> 0.
    *   MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *              WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    * Set event handler
      SET HANDLER:
        lcl_eventhandler=>handle_hotspot_click FOR go_grid1.
    * Build fieldcatalog and set hotspot for field KUNNR
      PERFORM build_fieldcatalog_knb1.
    * Display data
      CALL METHOD go_grid1->set_table_for_first_display
        CHANGING
          it_outtab       = gt_knb1
          it_fieldcatalog = gt_fcat
        EXCEPTIONS
          OTHERS          = 4.
      IF sy-subrc <> 0.
    *   MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *              WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    * Link the docking container to the target dynpro
      CALL METHOD go_docking->link
        EXPORTING
          repid                       = syst-repid
          dynnr                       = '0100'
    *      CONTAINER                   =
        EXCEPTIONS
          OTHERS                      = 4.
      IF sy-subrc <> 0.
    *   MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *              WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    * ok-code field = GD_OKCODE
      CALL SCREEN '0100'.
    END-OF-SELECTION.
    *&      Module  STATUS_0100  OUTPUT
    *       text
    MODULE status_0100 OUTPUT.
      SET PF-STATUS 'STATUS_0100'.
    *  SET TITLEBAR 'xxx'.
    ENDMODULE.                 " STATUS_0100  OUTPUT
    *&      Module  USER_COMMAND_0100  INPUT
    *       text
    MODULE user_command_0100 INPUT.
      CASE gd_okcode.
        WHEN 'BACK' OR
             'END'  OR
             'CANC'.
          SET SCREEN 0. LEAVE SCREEN.
        WHEN OTHERS.
      ENDCASE.
      CLEAR: gd_okcode.
    ENDMODULE.                 " USER_COMMAND_0100  INPUT
    *&      Form  BUILD_FIELDCATALOG_KNB1
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM build_fieldcatalog_knb1 .
    * define local data
      DATA:
        ls_fcat        TYPE lvc_s_fcat.
      CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
        EXPORTING
    *     I_BUFFER_ACTIVE              =
          i_structure_name             = 'KNB1'
    *     I_CLIENT_NEVER_DISPLAY       = 'X'
    *     I_BYPASSING_BUFFER           =
    *     I_INTERNAL_TABNAME           =
        CHANGING
          ct_fieldcat                  = gt_fcat
        EXCEPTIONS
          inconsistent_interface       = 1
          program_error                = 2
          OTHERS                       = 3.
      IF sy-subrc <> 0.
    * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
      LOOP AT gt_fcat INTO ls_fcat
              WHERE ( fieldname = 'KUNNR'  OR
                      fieldname = 'ERNAM' ).
        ls_fcat-hotspot = abap_true.
        ls_fcat-scrtext_s  = '<short text>'.  " short text of column
        ls_fcat-scrtext_m = '<medium text>'.  " medium text of column
        ls_fcat-scrtext_l   = '<long text>'.  " longtext text of column
        ls_fcat-tooltip      = '...'.  " ALV control: Tool tip for column header
        ls_fcat-coltext    = '...'.   " ALV control: Column heading
        MODIFY gt_fcat FROM ls_fcat.
      ENDLOOP.
    ENDFORM.                    " BUILD_FIELDCATALOG_KNB1
    Regards
      Uwe

  • ALV tree without using abap objects---------urgent

    hi
    can anybody send  me code for making alv tree without using ABAP objects.
    thanks in advance
    Aditya

    HI
    goto this link
    you will get all ALV TREE programs
    follow that code you can understand very easily
    http://www.sapdev.co.uk/reporting/alv/alvtree.htm
    <b>Reward if usefull</b>

  • What is the difference b/w ALV Function Module and ALV Methods?

    Hello Friends,
          Can anybody help me in finding out the difference between ALV Function Modules and ALV methods?
    Thanks & Regards
    Sathish Kumar

    Hi Sathish,
    Plz go through this info. It is very useful.
    hi,
    chk these excellent links.
    http://www.geocities.com/mpioud/Abap_programs.html
    http://www.sapdevelopment.co.uk/reporting/reportinghome.htm
    Simple ALV report
    http://www.sapgenie.com/abap/controls/alvgrid.htm
    http://wiki.ittoolbox.com/index.php/Code:Ultimate_ALV_table_toolbox
    http://www.sapgenie.com/abap/controls/alvgrid.htm
    http://wiki.ittoolbox.com/index.php/Code:Ultimate_ALV_table_toolbox
    ALV
    1. Please give me general info on ALV.
    http://www.sapfans.com/forums/viewtopic.php?t=58286
    http://www.sapfans.com/forums/viewtopic.php?t=76490
    http://www.sapfans.com/forums/viewtopic.php?t=20591
    http://www.sapfans.com/forums/viewtopic.php?t=66305 - this one discusses which way should you use - ABAP Objects calls or simple function modules.
    2. How do I program double click in ALV?
    http://www.sapfans.com/forums/viewtopic.php?t=11601
    http://www.sapfans.com/forums/viewtopic.php?t=23010
    3. How do I add subtotals (I have problem to add them)...
    http://www.sapfans.com/forums/viewtopic.php?t=20386
    http://www.sapfans.com/forums/viewtopic.php?t=85191
    http://www.sapfans.com/forums/viewtopic.php?t=88401
    http://www.sapfans.com/forums/viewtopic.php?t=17335
    4. How to add list heading like top-of-page in ABAP lists?
    http://www.sapfans.com/forums/viewtopic.php?t=58775
    http://www.sapfans.com/forums/viewtopic.php?t=60550
    http://www.sapfans.com/forums/viewtopic.php?t=16629
    5. How to print page number / total number of pages X/XX in ALV?
    http://www.sapfans.com/forums/viewtopic.php?t=29597 (no direct solution)
    6. ALV printing problems. The favourite is: The first page shows the number of records selected but I don't need this.
    http://www.sapfans.com/forums/viewtopic.php?t=64320
    http://www.sapfans.com/forums/viewtopic.php?t=44477
    7. How can I set the cell color in ALV?
    http://www.sapfans.com/forums/viewtopic.php?t=52107
    8. How do I print a logo/graphics in ALV?
    http://www.sapfans.com/forums/viewtopic.php?t=81149
    http://www.sapfans.com/forums/viewtopic.php?t=35498
    http://www.sapfans.com/forums/viewtopic.php?t=5013
    9. How do I create and use input-enabled fields in ALV?
    http://www.sapfans.com/forums/viewtopic.php?t=84933
    http://www.sapfans.com/forums/viewtopic.php?t=69878
    10. How can I use ALV for reports that are going to be run in background?
    http://www.sapfans.com/forums/viewtopic.php?t=83243
    http://www.sapfans.com/forums/viewtopic.php?t=19224
    11. How can I display an icon in ALV? (Common requirement is traffic light icon).
    http://www.sapfans.com/forums/viewtopic.php?t=79424
    http://www.sapfans.com/forums/viewtopic.php?t=24512
    12. How can I display a checkbox in ALV?
    http://www.sapfans.com/forums/viewtopic.php?t=88376
    http://www.sapfans.com/forums/viewtopic.php?t=40968
    http://www.sapfans.com/forums/viewtopic.php?t=6919
    Go thru these programs they may help u to try on some hands on
    ALV Demo program
    BCALV_DEMO_HTML
    BCALV_FULLSCREEN_DEMO ALV Demo: Fullscreen Mode
    BCALV_FULLSCREEN_DEMO_CLASSIC ALV demo: Fullscreen mode
    BCALV_GRID_DEMO Simple ALV Control Call Demo Program
    BCALV_TREE_DEMO Demo for ALV tree control
    BCALV_TREE_SIMPLE_DEMO
    BC_ALV_DEMO_HTML_D0100
    OOPs:
    Check this for basic concepts of OOPS
    https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/com.sap.km.cm.docs/library/webas/abap/abap%20code%20samples/abap%20objects/abap%20code%20sample%20to%20learn%20basic%20concept%20of%20object-oriented%20programming.doc
    https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/com.sap.km.cm.docs/library/webas/abap/abap%20code%20samples/alv%20grid/abap%20code%20sample%20to%20display%20data%20in%20alv%20grid%20using%20object%20oriented%20programming.doc
    Tabstrip
    https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/com.sap.km.cm.docs/library/webas/abap/abap%20code%20samples/alv%20grid/abap%20code%20sample%20for%20tab%20strip%20in%20alv.pdf
    Editable ALV
    https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/com.sap.km.cm.docs/library/webas/abap/abap%20code%20samples/alv%20grid/abap%20code%20sample%20to%20edit%20alv%20grid.doc
    Tree
    http://www.sapdevelopment.co.uk/reporting/alv/alvtree/alvtree_usrint.htm
    General Tutorial for OOPS
    https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/com.sap.km.cm.docs/library/webas/abap/an%20easy%20reference%20for%20alv%20grid%20control.pdf
    Rewords some points if it is helpful.
    Rgds,
    P.Naganjana Reddy

  • ALV Control and Classical ALV

    Hi all,
    Please let me know the advantages and disadvantages of ALV control over Classical ALV.
    Thanks & regards,
    Naresh.

    ALV LIST Can be coded using only FMs
    ALV control  Can be coded using FMs and object oriented concepts
    ALV LIST Can be displayed hieraicharlly
    ALV GRID cannot be displayed hierarichally
    Alv grid (using oo concept) requires
    designing the screen layout .
    Hence, in one screen, we can show more
    then one alv grid
    (we cannot show more than
    one alv list on one screen)
    ALV LIST is Display Only.
    Whereas
    ALV Grid Can Be made EDITABLE for entry purpose.

  • Seperate ALV  Properties in Blocked ALV

    Hi All,
    I have created a blocked ALV. The standard ALV functionalities like Sort ,Filter etc is working only for the first list.
    Is there any techniques to give seperate functionalities for each list?
    Iam using reuse_alv_grid_display .
    and  LAYOUT-LIST_APPEND to show the blocked ALV.
    thanks and regards,
    Subeesh Kannottil

    Hi Yawa Ding,
    I have 3 lists .The standard ALV unctionality works only for the first list.
    I want all these properties to be applied to all lists
    Thanks and Regards,
    Subeesh Kannottil

  • Can we call ALV Grid in another ALV Grid

    Hi,
      I have a requirement where I have an ALV List Displayed and for this we have an User Command and the User Defined Button Placed on the ALV List displaya another ALV Grid. Now the user want an User Command to be activated on the Second ALV Report to call a Third ALV Report.
       Could someone tell me whether this is feasible if so how can it be achieved.
    Thanks & Regards,
    YJR.

    Hi YJR,
      As far as feasibility of the requirement is concerned it is very subjective to your business process.
      But yes, it is possible.
      Just give a different callback user command in the call to ALV and write another form.
      That should solve your problem.
    Regards,
    Ravi

  • Can more than one build in or out object appear/ disappear simultaneously?

    I have objects (images and text boxes) appearing one at a time but I would like them all to disappear simultaneously so is there some way you can group objects to appear and disappear at the same time?
    Thanks
    Kevin

    [email protected] wrote:
    Just a couple of questions first, when you mentioned "Set all the Build Outs to occur together." How do I actually do that? I tried highlighting them all and right clicking to see if it gives me an option to do that and look everywhere but couldn't find that function.
    Again, if I'm understanding you, this is a very straightforward effect to produce. In the Build Inspector, set up all the Build Ins for the objects, then specify the Build Outs. Now click on the More Options button, which will reveal the Build Order drawer. For each of the Build Outs except the first, select the build in the order listing, then in the Start Build drop down menu, choose "Automatically with build #", where "#" is the number of the first Build Out.

  • Dark path's edges after using shape builder tool or masking objects

    hi,
    i have a problem with path edges after using shape builder tool or masking objects. This problem occurs when i draw bright colored objects above dark colored object. After that i have dark path's edges. Like this: http://img94.imageshack.us/img94/2051/dlm2.jpg     
    I have one solution (pathfinder->dive objects and delete some dark elements on the bottom) but maybe someone know another solution for this problem?

    Thank you for reply
    Unfortunately, I don't have opportunity to print it, but as you wrote, it must be a screen artifact. I exported this file to tiff, then i opened it in photoshop. Everything is ok. All of the edges are clear.

  • Filtering the contents of one alv based on another ALV's filter

    Hi,
    I have used a tab element within which i have two tabs.each tab has an alv table.
    Is it possible to restrict the entries of one alv table based on enrties from another alv table(both the alv tables will have some common fields).for example I have filtered entries in alv1 based on field1 .when i go to alv2 entries should be restricted on the field1 (common field)
    Thanks
    Bala Duvvuri
    this is the answer
    refer SALV_WD_FILTER_UI
    Edited by: Bala Duvvuri on Oct 4, 2011 1:20 AM

    hi Mohamed,
    Go through this links ,
    <a href="http://help.sap.com/saphelp_nw70/helpdata/en/95/92b2f7d2f14a6da7a8b5d66808d1f6/content.htm">Portal Display Rules</a>
    <a href="http://help.sap.com/saphelp_nw70/helpdata/en/4b/29cf122f414721964269e1b675d62c/content.htm">Rulecollection</a>
    Regards,
    Malini.V

  • OOPs ALV report Fieldcatalog Editing a currency field

    Hi all,
    I have created an OOP's ALV report. I have made one of the currency field editable. when I am changing the value in any cell and go out of the cell(or move to other cell using arrow keys or click some were in the grid) it is taking '.' after 2 digits from the right.
    for example if I take 10 it is converting to 0.10, if I take 100 it is becomnig 1.00, if I take 100.00 it is becoming 1.00. If I take 123.45 I am getting a pop up box with message "Too many decimal places"
    the fieldcatalog values are as follows
      WA_FIELDCAT-FIELDNAME   = 'ORD_VAL'.
      WA_FIELDCAT-SCRTEXT_M   = 'Ord Value'.
      WA_FIELDCAT-COL_POS     = 11.
    wa_fieldcat-no_zero     = 'X'.
      WA_FIELDCAT-OUTPUTLEN = 14.
       WA_FIELDCAT-CURRENCY  = 'INR'.
      wa_fieldcat-decimals_o = '2'.
      wa_fieldcat-no_zero = 'X'.
      WA_FIELDCAT-EDIT   = 'X'.
      APPEND WA_FIELDCAT TO IT_FIELDCAT.
      CLEAR  WA_FIELDCAT.
    Can anybody please help me. As If I edit the field it should take the values what I input.
    Thanks in Advance.

    Hi ,
    The CURR field is the currency unit field in the table ITAB.
    I am just confused with your answer. in my case the final internal table is T_CHKQTY1 shall I take that or anything else. I have taken WA_FIELDCAT-CTABNAME = 'CURR'. but the system is thrownig an error as The data object has no component with CTABNAME but there is a component called TABNAME.
    Can you please currect me.

  • ALV Error: Fieldcatalog not found...

    Hello Experts,
    I am currently creating a new report that uses object oriented ALV with
    custom control. But when I run my program it always gives me that there is no fieldcatalog
    found. I will paste my code below so you can see. Hope you can help me out here guys.
    Thank you and take care!
    *=====================================================================
    * Program Name : ZSD_ORDERSTAGE
    * Author       : Aris Hidalgo
    * Date Created : May 4, 2007
    * Description  : Display sales orders for a given customer on a given
    *                date range
    *=====================================================================
    REPORT  zsd_orderstage
            NO STANDARD PAGE HEADING.
    * Data Dictionary Table/s                      *
    TABLES: vbak.
    * Global Structure/s                           *
    TYPES: BEGIN OF t_vbak,
              vbeln TYPE vbak-vbeln,
              posnr TYPE vbap-posnr,
              erdat TYPE vbak-erdat,
              ernam TYPE vbak-ernam,
              auart TYPE vbak-auart,
              kunnr TYPE vbak-kunnr,
              vkgrp TYPE vbak-vkgrp,
             END OF t_vbak.
    TYPES: BEGIN OF t_vbfa,
            vbelv   TYPE vbfa-vbelv,
            posnv   TYPE vbfa-posnv,
            vbtyp_n TYPE vbfa-vbtyp_n,
            vbtyp_v TYPE vbfa-vbtyp_v,
            vbeln   TYPE vbfa-vbeln,
           END OF t_vbfa.
    TYPES: BEGIN OF t_likp,
            vgbel TYPE lips-vgbel,
            vgpos TYPE lips-vgpos,
            vbeln TYPE likp-vbeln,
            posnr TYPE lips-posnr,
            kunnr TYPE likp-kunnr,
           END OF t_likp.
    TYPES: BEGIN OF t_vbrk,
            aubel TYPE vbrp-aubel,
            aupos TYPE vbrp-aupos,
            vbeln TYPE vbrk-vbeln,
           END OF t_vbrk.
    TYPES: BEGIN OF t_output,
            salesorder    TYPE vbak-vbeln,
            salesitem     TYPE vbap-posnr,
            salesgroup    TYPE vbak-vkgrp,
            custcode      TYPE vbak-kunnr,
            shipto        TYPE likp-kunnr,
            creation_date TYPE vbak-erdat,
            created_by    TYPE vbak-ernam,
            delorder      TYPE likp-vbeln,
            invnumber     TYPE vbrk-vbeln,
           END OF t_output.
    * Global Internal Table/s                      *
    DATA: gt_vbak   TYPE STANDARD TABLE OF t_vbak,
          gt_vbfa   TYPE STANDARD TABLE OF t_vbfa,
          gt_likp   TYPE STANDARD TABLE OF t_likp,
          gt_vbrk   TYPE STANDARD TABLE OF t_vbrk,
          gt_output TYPE STANDARD TABLE OF t_output.
    * SELECTION-SCREEN                             *
    SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
    PARAMETERS:     p_kunnr TYPE vbak-kunnr OBLIGATORY.
    SELECT-OPTIONS: s_vkgrp FOR vbak-vkgrp,
                    s_auart FOR vbak-auart,
                    s_erdat FOR vbak-erdat  OBLIGATORY,
                    s_ernam FOR vbak-ernam.
    SELECTION-SCREEN END OF BLOCK b1.
    CLASS lcl_event_receiver DEFINITION DEFERRED.
    * Data Declaration/s                           *
    DATA: ok_code             TYPE sy-ucomm,
          save_ok             TYPE sy-ucomm,
          g_max               TYPE i VALUE 100,
          g_repid             TYPE sy-repid,
          gs_layout           TYPE lvc_s_layo,
          cont_for_flights    TYPE scrfname VALUE 'BCALV_GRID_02_100',
          grid1               TYPE REF TO cl_gui_alv_grid,
          custom_container    TYPE REF TO cl_gui_custom_container,
          grid2               TYPE REF TO cl_gui_alv_grid,
    * reference to dialogbox container.
          dialogbox_container TYPE REF TO cl_gui_dialogbox_container,
          event_receiver      TYPE REF TO lcl_event_receiver.
    *       CLASS lcl_event_receiver 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,
        create_detail_list.
      PRIVATE SECTION.
        DATA: dialogbox_status TYPE c.  "'X': does exist, SPACE: does not ex.
    ENDCLASS.                    "lcl_event_receiver DEFINITION
    *       CLASS lcl_event_receiver 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_sflight LIKE LINE OF gt_sflight.
    * read selected row from internal table gt_sflight
    *    READ TABLE gt_sflight INDEX e_row-index INTO ls_sflight.
    * §4.At Doubleclick(2): Select booking data
    *    PERFORM select_table_sbook USING ls_sflight
    *                               CHANGING gt_sbook.
    * §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.
          CALL METHOD me->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
      METHOD 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 = 'Sales Orders'(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 = space.
        CALL METHOD grid2->set_table_for_first_display
          EXPORTING
            i_structure_name = 'T_OUTPUT'
            is_layout        = gs_layout
          CHANGING
            it_outtab        = gt_output.
        CALL METHOD cl_gui_control=>set_focus
          EXPORTING
            control = grid2.
      ENDMETHOD.                    "create_detail_list
    ENDCLASS.                    "lcl_event_receiver IMPLEMENTATION
    *       CLASS lcl_get_so DEFINITION
    CLASS lcl_get_so DEFINITION.
      PUBLIC SECTION.
        METHODS: get_sales_orders
                    EXPORTING
                       ex_vbak LIKE gt_vbak.
    ENDCLASS.                    "lcl_get_so DEFINITION
    *       CLASS lcl_get_so IMPLEMENTATION
    CLASS lcl_get_so IMPLEMENTATION.
      METHOD get_sales_orders.
        SELECT vbak~vbeln vbap~posnr vbak~erdat
               vbak~ernam vbak~auart vbak~kunnr
               vbak~vkgrp
          FROM vbak
          INNER JOIN vbap
          ON vbak~vbeln = vbap~vbeln
          INTO TABLE gt_vbak
         WHERE vbak~erdat IN s_erdat
           AND vbak~ernam IN s_ernam
           AND vbak~auart IN s_auart
           AND vbak~vkgrp IN s_vkgrp
           AND vbak~kunnr = p_kunnr.
        IF NOT gt_vbak[] IS INITIAL.
          ex_vbak[] = gt_vbak[].
        ENDIF.
      ENDMETHOD.                    "get_sales_orders
    ENDCLASS.                    "lcl_get_so IMPLEMENTATION
    *       CLASS lcl_get_do DEFINITION
    CLASS lcl_get_do DEFINITION.
      PUBLIC SECTION.
        METHODS: get_delivery_orders
                    IMPORTING
                       value(im_vbak) LIKE gt_vbak
                    EXPORTING
                       value(ex_likp) LIKE gt_likp.
    ENDCLASS.                    "lcl_get_do DEFINITION
    *       CLASS lcl_get_do IMPLEMENTATION
    CLASS lcl_get_do IMPLEMENTATION.
      METHOD get_delivery_orders.
        IF NOT im_vbak[] IS INITIAL.
          SELECT lips~vgbel lips~vgpos
                 likp~vbeln lips~posnr
                 likp~kunnr
            FROM likp
           INNER JOIN lips
              ON likp~vbeln = lips~vbeln
            INTO TABLE gt_likp
             FOR ALL ENTRIES IN im_vbak
           WHERE vgbel = im_vbak-vbeln
             AND vgpos = im_vbak-posnr.
        ENDIF.
        IF NOT gt_likp[] IS INITIAL.
          ex_likp[] = gt_likp[].
        ENDIF.
      ENDMETHOD.                    "get_delivery_orders
    ENDCLASS.                    "lcl_get_do IMPLEMENTATION
    *       CLASS lcl_get_bd DEFINITION
    CLASS lcl_get_bd DEFINITION.
      PUBLIC SECTION.
        METHODS: get_billing_documents
                   IMPORTING
                     value(im_vbak) LIKE gt_vbak
                   EXPORTING
                     value(ex_vbrk) LIKE gt_vbrk.
    ENDCLASS.                    "lcl_get_bd DEFINITION
    *       CLASS lcl_get_bd IMPLEMENTATION
    CLASS lcl_get_bd IMPLEMENTATION.
      METHOD get_billing_documents.
        IF NOT im_vbak[] IS INITIAL.
          SELECT vbrp~aubel vbrp~aupos vbrk~vbeln
            FROM vbrk
           INNER JOIN vbrp
              ON vbrk~vbeln = vbrp~vbeln
            INTO TABLE gt_vbrk
             FOR ALL ENTRIES IN im_vbak
           WHERE aubel = im_vbak-vbeln
             AND aupos = im_vbak-posnr.
        ENDIF.
        IF NOT gt_vbrk[] IS INITIAL.
          ex_vbrk[] = gt_vbrk[].
        ENDIF.
      ENDMETHOD.                    "get_billing_documents
    ENDCLASS.                    "lcl_get_bd IMPLEMENTATION
    *       CLASS lcl_combine_data DEFINITION
    CLASS lcl_combine_data DEFINITION.
      PUBLIC SECTION.
        METHODS: combine_data
                   IMPORTING
                     value(im_vbak) LIKE gt_vbak
                     value(im_likp) LIKE gt_likp
                     value(im_vbrk) LIKE gt_vbrk
                   EXPORTING
                     value(ex_output) LIKE gt_output.
    ENDCLASS.                    "lcl_combine_data DEFINITION
    *       CLASS lcl_combine_data IMPLEMENTATION
    CLASS lcl_combine_data IMPLEMENTATION.
      METHOD combine_data.
        FIELD-SYMBOLS: <fs_vbak> LIKE LINE OF im_vbak,
                       <fs_likp> LIKE LINE OF im_likp,
                       <fs_vbrk> LIKE LINE OF im_vbrk.
        DATA: wa_output LIKE LINE OF ex_output.
        SORT im_vbak ASCENDING BY: vbeln posnr.
        SORT im_likp ASCENDING BY: vgbel vgpos.
        SORT im_vbrk ASCENDING BY: aubel aupos.
        LOOP AT im_vbak ASSIGNING <fs_vbak>.
          READ TABLE im_likp ASSIGNING <fs_likp>
                             WITH KEY vgbel = <fs_vbak>-vbeln
                                      vgpos = <fs_vbak>-posnr
                                      BINARY SEARCH.
          IF sy-subrc = 0.
            MOVE: <fs_vbak>-vbeln TO wa_output-salesorder,
                  <fs_vbak>-posnr TO wa_output-salesitem,
                  <fs_vbak>-vkgrp TO wa_output-salesgroup,
                  <fs_vbak>-kunnr TO wa_output-custcode,
                  <fs_likp>-kunnr TO wa_output-shipto,
                  <fs_vbak>-erdat TO wa_output-creation_date,
                  <fs_vbak>-ernam TO wa_output-created_by,
                  <fs_likp>-vbeln TO wa_output-delorder.
          ENDIF.
          READ TABLE im_vbrk ASSIGNING <fs_vbrk>
                             WITH KEY aubel = <fs_vbak>-vbeln
                                      aupos = <fs_vbak>-posnr
                                      BINARY SEARCH.
          IF sy-subrc = 0.
            MOVE <fs_vbrk>-vbeln TO wa_output-invnumber.
          ENDIF.
          APPEND wa_output TO ex_output.
          CLEAR wa_output.
        ENDLOOP.
        DELETE ex_output WHERE salesorder IS INITIAL.
      ENDMETHOD.                    "combine_data
    ENDCLASS.                    "lcl_combine_data IMPLEMENTATION
    * START-OF-SELECTION                           *
    START-OF-SELECTION.
      DATA: lt_vbak_dum    LIKE gt_vbak,
            lt_likp_dum    LIKE gt_likp,
            lt_vbrk_dum    LIKE gt_vbrk.
      DATA: o_get_so         TYPE REF TO lcl_get_so,
            o_get_do         TYPE REF TO lcl_get_do,
            o_get_bd         TYPE REF TO lcl_get_bd,
            o_combine_data   TYPE REF TO lcl_combine_data.
      CREATE OBJECT: o_get_so,
                     o_get_do,
                     o_get_bd,
                     o_combine_data.
    END-OF-SELECTION.
      CALL SCREEN 100.
    *&      Module  STATUS_0100  OUTPUT
    *       text
    MODULE status_0100 OUTPUT.
      SET PF-STATUS 'MAIN100'.
    *  SET TITLEBAR 'xxx'.
      g_repid = sy-repid.
      IF custom_container IS INITIAL.
        CALL METHOD o_get_so->get_sales_orders
          IMPORTING
            ex_vbak = lt_vbak_dum.
        CALL METHOD o_get_do->get_delivery_orders
          EXPORTING
            im_vbak = lt_vbak_dum
          IMPORTING
            ex_likp = lt_likp_dum.
        CALL METHOD o_get_bd->get_billing_documents
          EXPORTING
            im_vbak = lt_vbak_dum
          IMPORTING
            ex_vbrk = lt_vbrk_dum.
        CALL METHOD o_combine_data->combine_data
          EXPORTING
            im_vbak   = lt_vbak_dum
            im_likp   = lt_likp_dum
            im_vbrk   = lt_vbrk_dum
          IMPORTING
            ex_output = gt_output.
    *Create a custom container control for our ALV Control
        CREATE OBJECT custom_container
            EXPORTING
                container_name = cont_for_flights
            EXCEPTIONS
                cntl_error = 1
                cntl_system_error = 2
                create_error = 3
                lifetime_error = 4
                lifetime_dynpro_dynpro_link = 5.
        IF sy-subrc NE 0.
    *Add your handling, for example
          CALL FUNCTION 'POPUP_TO_INFORM'
            EXPORTING
              titel = g_repid
              txt2  = sy-subrc
              txt1  = 'The control could not be created'(510).
        ENDIF.
    *Create an instance of alv control
        CREATE OBJECT grid1
             EXPORTING i_parent = custom_container.
    *Set a titlebar for the grid control
        gs_layout-grid_title = 'List of Sales Orders'(100).
        CALL METHOD grid1->set_table_for_first_display
          EXPORTING
    *        i_structure_name = 'T_OUTPUT'
            is_layout        = gs_layout
          CHANGING
            it_outtab        = gt_output.
    *Create Object to receive events and link them to handler methods.
    *When the ALV Control raises the event for the specified instance
    *the corresponding method is automatically called.
        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  USER_COMMAND_0100  INPUT
    *       text
    MODULE user_command_0100 INPUT.
      save_ok = ok_code.
      CASE save_ok.
        WHEN 'BACK'.
          CALL METHOD custom_container->free.
          CALL METHOD cl_gui_cfw=>flush.
          IF sy-subrc <> 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 PROGRAM.
        WHEN 'EXIT'.
          CALL METHOD custom_container->free.
          CALL METHOD cl_gui_cfw=>flush.
          IF sy-subrc <> 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 PROGRAM.
        WHEN 'CANCEL'.
          CALL METHOD custom_container->free.
          CALL METHOD cl_gui_cfw=>flush.
          IF sy-subrc <> 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 PROGRAM.
      ENDCASE.
      CLEAR save_ok.
    ENDMODULE.                 " USER_COMMAND_0100  INPUT

    Hi Viraylab,
                       You need to craete a fieldcat to print data in ALV and pass this table to the method written below :
    CALL METHOD grid1->set_table_for_first_display
          EXPORTING
           i_structure_name = 'T_OUTPUT'
            is_layout        = gs_layout
          CHANGING
            it_outtab        = gt_output.
           i_fieldcat        = gt_fieldcat
    u can bulid afield catlog table like this :
    form FIELDCAT  using    p_i_fieldcat TYPE SLIS_T_FIELDCAT_ALV.
    DATA : L_FIELDCAT TYPE SLIS_FIELDCAT_ALV.
    FOR MATERIAL NO
    CLEAR L_FIELDCAT.
    L_FIELDCAT-COL_POS = '1'.
    L_FIELDCAT-FIELDNAME = 'MATNR'.
    L_FIELDCAT-TABNAME = 'IT_MATSTOCK'.
    L_FIELDCAT-seltext_l   = 'MATERIAL NO'.                     " LONG TEXT FOR HEADER.
    L_FIELDCAT-seltext_m   = 'MAT NO'.                     " MEDIUM TEXT FOR HEADER.
    L_FIELDCAT-seltext_s   = 'MATNO'.                     " SHORT TEXT FOR HEADER.
    L_FIELDCAT-EMPHASIZE = 'C410'.                           " COLOR OF THIS COLUMN.
    L_FIELDCAT-OUTPUTLEN = '20'.
    APPEND L_FIELDCAT TO P_I_FIELDCAT.
    FOR MATERIAL TYPE
    CLEAR L_FIELDCAT.
    L_FIELDCAT-COL_POS = '2'.
    L_FIELDCAT-FIELDNAME = 'MTART'.
    L_FIELDCAT-TABNAME = 'IT_MATSTOCK'.
    L_FIELDCAT-seltext_l   = 'MATERIAL TYPE'.                     " LONG TEXT FOR HEADER.
    L_FIELDCAT-seltext_m   = 'MAT TYPE'.                     " MEDIUM TEXT FOR HEADER.
    L_FIELDCAT-seltext_s   = 'MAT TYP'.                     " SHORT TEXT FOR HEADER.
    L_FIELDCAT-EMPHASIZE = 'C510'.                           " COLOR OF THIS COLUMN.
    L_FIELDCAT-OUTPUTLEN = '6'.
    APPEND L_FIELDCAT TO P_I_FIELDCAT.
    FOR MATERIAL DESCRIPTION
    CLEAR L_FIELDCAT.
    L_FIELDCAT-COL_POS = '3'.
    L_FIELDCAT-FIELDNAME = 'MAKTX'.
    L_FIELDCAT-TABNAME = 'IT_MATSTOCK'.
    L_FIELDCAT-seltext_l   = 'MAT DESCRIP'.                     " LONG TEXT FOR HEADER.
    L_FIELDCAT-seltext_m   = 'M DESCRIP'.                     " MEDIUM TEXT FOR HEADER.
    L_FIELDCAT-seltext_s   = 'MDESCRIP'.                     " SHORT TEXT FOR HEADER.
    L_FIELDCAT-EMPHASIZE = 'C310'.                           " COLOR OF THIS COLUMN.
    L_FIELDCAT-OUTPUTLEN = '40'.
    APPEND L_FIELDCAT TO P_I_FIELDCAT.
    Reward points if helpful.
    Regards,
    Hemant

  • Issuw with Fieldcatalog in ALV OOPS

    Hi All,
    I am displaying output using ALV OOPs. in output table ihave dropdown field called Manual Processing status.
    to get dropdown i used below logic.
      DATA: lt_dropdown TYPE lvc_t_drop,
            ls_dropdown TYPE lvc_s_drop.
      ls_dropdown-handle = '1'.
      ls_dropdown-value = 'OPEN'(016).
      APPEND ls_dropdown TO lt_dropdown.
      ls_dropdown-handle = '1'.
      ls_dropdown-value = 'CLOSED'(012).
      APPEND ls_dropdown TO lt_dropdown.
      ls_dropdown-handle = '1'.
      ls_dropdown-value = 'CANCELLED'(014).
      APPEND ls_dropdown TO lt_dropdown.
      ls_dropdown-handle = '1'.
      ls_dropdown-value = 'NO ACTION REQUIRED'(015).
      APPEND ls_dropdown TO lt_dropdown.
      ls_dropdown-handle = '1'.
      ls_dropdown-value = ' '.
      APPEND ls_dropdown TO lt_dropdown.
      CALL METHOD grid->set_drop_down_table
        EXPORTING
          it_drop_down = lt_dropdown.
    when i a, displaying the output lenth of this field is '9'(i mentioned while building the fieldcatalog) but in output its size is more. I used the below field catalog for this field.
      ls_feildcat-fieldname = pv_field.
      ls_feildcat-outputlen =  pc_length.
      ls_feildcat-coltext = pv_header.
      ls_feildcat-just = pc_true.
      ls_feildcat-no_out = gc_space.
      ls_feildcat-drdn_hndl = '1'.
      ls_feildcat-fix_column = 'X'.
    when i comment   ls_feildcat-drdn_hndl = '1' then its working fine but i am not getting dropdown. ANybody can sugeest me how to approach in this case.
    Regards,
    Maheedhar

    Hi,
    Not sure to get your point...could this be in relation with your layout settings (e.g by passing is_layout-cwidth_opt = 'X' to method set_table_for_first_display) ?
    Kr,
    m.

  • Need class name to display ALV list (not Grid) in objects..

    hi,
    i need to display ALV list ( not ALV Grid ) in objects.. i dont the class name for tat.. so plz can anyone help me out for the same..
    thanks in advance..

    With cl_salv_table you can have both grid or list, depending what you want.
          cl_salv_table=>factory(
             EXPORTING
               list_display   = 'X'  "when space then GRID, when 'X' then LIST
             IMPORTING
               r_salv_table  = ref_table
             CHANGING
               t_table       = gt_sflight ).
    Regards
    Marcin

  • Fieldcatalog in alv display

    hi experts,
    I  have a problem in alv report. actually output table consists of 150 fields. out of which i want to display 15 fields in alv grid and rest of the fields get displayed only when user wants to by using change layout tab.. now for this i need to make field catalog for each field separately which will increase the no of code lines to a great extent which i dont want..
    Is there any other alternative for that?
    Thanks

    hi
    u can use a function module for this.
    CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
        EXPORTING
          i_structure_name       =
        CHANGING
          ct_fieldcat            = gt_fieldcat
        EXCEPTIONS
          inconsistent_interface = 1
          program_error          = 2
          OTHERS                 = 3.
      IF sy-subrc <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    "   then loop at fieldcatalog and make fieldcatalog for all
    the fields which u want to display.
    LOOP AT gt_fieldcat INTO ls_fcat.
        CASE ls_fcat-fieldname.
          WHEN c_fieldname.
            ls_fcat-col_pos    = 0.
            ls_fcat-row_pos    = 1.
            ls_fcat-outputlen  = 2.
            ls_fcat-tabname    = table_name.
    and when others will have all the fields which u dont want to display.
          WHEN OTHERS.
            ls_fcat-no_out      = 'X'.
            ls_fcat-outputlen  = 15.
            ls_fcat-just       = c_l.
            ls_fcat-tabname    = table_name .
        ENDCASE.
        MODIFY gt_fieldcat FROM ls_fcat.
        CLEAR ls_fcat.
      ENDLOOP.
    regards

Maybe you are looking for