Disply variants  in ALV LIST disply

Hi Experts,
I have created a ALV list display variant in 4.5B version and it isn’t working in ECC6 environment. Is there way to make it work in ECC6?
What might be the issue?
Thanks,
Mohamed.

Hi Sampath,
      First change the variant with new values and save it.
      Go to SE38 and give the program name and click on the variants radiobutton and then click on change button give the variant name.
then click on the Utilities menu ---> Transport Request and then give the variant name for the appropriate program name and then execute. Then select the checkbox in the pop up and click on the continue button, and then it will ask the transport request. save the transport and release it.
Hope it helps,
Reward if useful.
Thanks,
Srinivas

Similar Messages

  • How to get variants for ALV List or Grid?

    Hi,
    I have one standard program RGJVSO10, for 4.6c, to diplay variants they r using fm GJ_LIST_VARIANT_VALUE_HELP, where they r passing table name and get the variants.
    But in ECC6.0 for the same program they r using FM REUSE_ALV_VARIANT_F4, but the variants are not displaying, form the table what they r passing in 4.6c,
    Is ther any option to get those variants using this function module?

    Hi,
    I have check u r db table but not finding variant . i will check with prg and inform u .mean while u check with these variants.
    whether it suits u.
    REUSE_ALV_VARIANT_ALL_MAINTAIN
    REUSE_ALV_VARIANT_SELECT.
    REUSE_ALV_VARIANT__MAINTAIN
    REUSE_ALV_VARIANT_DEFAULT_GET
    Reward if its usefull.
    Regards
    Durgaprasad

  • Issue in ALV List display

    Issue in ALV List display  
    Posted: Apr 5, 2008 10:25 AM     Edit      E-mail this message      Reply 
    Hi Friends,
    Can any one help me out in the logic to display the output in the ALV list.
    i want to get the out put as
    based on the field4 i have to display fieds5, field6 and field 7 values as mentioned below.
    field1 field2 field3 field4 field5 field6 field7
    0L 123 456 2008  001 123.00 456.00
    -    -     -       -     002  213.00 789.00
    -      -       -     003 0.00     0.00
    -      -       -     004 0.00     0.00
    -      -        -    005 0.00     0.00
    -       -       -     006 0.00     0.00
                                   336.00  1245.00
    Thanks,
    Vijay

    for display you have to define fieldcatlaog and use Fm RESUE_ALV_GRID_DISPLAY,
    Go through this program
    *& Report  Z_OPEN_CLOSE                                                *
    REPORT  Z_OPEN_CLOSE MESSAGE-ID YW2 LINE-SIZE 231 LINE-COUNT 45
    NO STANDARD PAGE HEADING.
    Type Declaration *
    TYPE-POOLS SLIS.
    Tables *
    TABLES: MKPF, " Material Document: Header Data
            MSEG, " Material Document: Item Data
            MARA,
            MARD,
            S031,
            EKKO,
            EKPO,
            LIKP,
            MAKT,
            J_1IWRKCUS,
            T001W,
            WB2_V_MKPF_MSEG2,
            MMIM_REP_PRINT,
            YW2_STKMOVEMENTS,
            YPLNT,
            MARDH.
    Internal Tables *
    DATA: I_WERKS LIKE J_1IWRKCUS OCCURS 0 WITH HEADER LINE.
    DATA: BEGIN OF I_YPLNT OCCURS 0,
             PPLNT LIKE YPLNT-PPLNT,
             WPLNT LIKE YPLNT-WPLNT,
          END OF I_YPLNT.
    DATA: BEGIN OF I_MKPF OCCURS 0,
            MBLNR LIKE MKPF-MBLNR,
            MJAHR LIKE MKPF-MJAHR,
            BUDAT LIKE MKPF-BUDAT,
            VGART LIKE MKPF-VGART,
            BWART LIKE MSEG-BWART,
            MATNR LIKE MSEG-MATNR,
            WERKS LIKE MSEG-WERKS,
            LGORT LIKE MSEG-LGORT,
            MENGE LIKE MSEG-MENGE,
            MEINS LIKE MSEG-MEINS,
            KUNNR LIKE MSEG-KUNNR,
            ZEILE LIKE MSEG-ZEILE,
            XAUTO LIKE MSEG-XAUTO,
            SHKZG LIKE MSEG-SHKZG,
            MATNR1 LIKE MSEG-MATNR,
          END OF I_MKPF.
    DATA: BEGIN OF I_MARDH OCCURS 0,
           WERKS LIKE MARDH-WERKS,
           MEINS LIKE MARA-MEINS,
           MATNR LIKE MARDH-MATNR,
           LGORT LIKE MARDH-LGORT,
           LABST LIKE MARDH-LABST,
           LFGJA LIKE MARDH-LFGJA, "Added -MB
           LFMON LIKE MARDH-LFMON, "Added -MB
           PERIO(6),
           INSME LIKE MARDH-LABST,
           EINME LIKE MARDH-LABST,
           SPEME LIKE MARDH-LABST,
           RETME LIKE MARDH-LABST,
           O_STK LIKE MARDH-LABST, " Opening Stock
           C_STK LIKE MARDH-LABST, " Closing Stock
          END OF I_MARDH.
    DATA: BEGIN OF I_MARD OCCURS 0,
           WERKS LIKE MARD-WERKS,
           MATNR LIKE MARD-MATNR,
           LGORT LIKE MARD-LGORT,
           LABST LIKE MARD-LABST,
           INSME LIKE MARD-LABST,
           MEINS LIKE MARA-MEINS,
           EINME LIKE MARD-LABST,
           SPEME LIKE MARD-LABST,
           RETME LIKE MARD-LABST,
          END OF I_MARD.
    DATA: I_MARD1 LIKE I_MARD OCCURS 0 WITH HEADER LINE.
    DATA: I_MARDH1 LIKE I_MARDH OCCURS 0 WITH HEADER LINE.
    DATA: BEGIN OF I_MKPF1 OCCURS 0,
            MBLNR LIKE MKPF-MBLNR,
            WERKS LIKE MSEG-WERKS,
            MATNR LIKE MSEG-MATNR,
            BUDAT LIKE MKPF-BUDAT,
            BWART LIKE MSEG-BWART,
            MJAHR LIKE MKPF-MJAHR,
            VGART LIKE MKPF-VGART,
            LGORT LIKE MSEG-LGORT,
            MENGE LIKE MSEG-MENGE,
            MEINS LIKE MSEG-MEINS,
            XAUTO LIKE MSEG-XAUTO,
            SHKZG LIKE MSEG-SHKZG,
          END OF I_MKPF1.
    DATA: BEGIN OF I_MKPF2 OCCURS 0,
           WERKS LIKE MSEG-WERKS,
           MATNR LIKE MSEG-MATNR,
           BUDAT LIKE MKPF-BUDAT,
           BWART LIKE MSEG-BWART,
           MJAHR LIKE MKPF-MJAHR,
           VGART LIKE MKPF-VGART,
           LGORT LIKE MSEG-LGORT,
           MENGE LIKE MSEG-MENGE,
           MEINS LIKE MSEG-MEINS,
           XAUTO LIKE MSEG-XAUTO,
         END OF I_MKPF2.
    DATA: BEGIN OF I_FINAL5 OCCURS 0,
           WERKS LIKE MSEG-WERKS, " Plant
           MATNR LIKE MSEG-MATNR, " Material
           LGORT LIKE MSEG-LGORT, " Storage Location
           BUDAT LIKE MKPF-BUDAT, " Posting Date
           MTART LIKE MARA-MTART, " Material Type
           SPMON LIKE S031-SPMON, " Month
           MAKTX LIKE MAKT-MAKTX, " Description
    meins(3), " UOM
            MEINS LIKE MSEG-MEINS,
            O_STK LIKE MARDH-LABST, " opening stock
            TRECEP LIKE MARDH-LABST, " total receipts
            PRODU LIKE MARDH-LABST, " Net Receipts - Production
            RECEP LIKE MARDH-LABST, " Net Receipts - Receipts
            SAL_RET LIKE MARDH-LABST, " Net Receipts - Sales Return
            TDISP LIKE MARDH-LABST, " total dispatches
            CUSTMR LIKE MARDH-LABST, " Net Dispatches - Customers
            OPLANT LIKE MARDH-LABST, " Net Dispatches - To Other Plant
            TLOSS LIKE MARDH-LABST, " Total Loss
            TRLOSS LIKE MARDH-LABST, " Transit Loss
            WHLOSS LIKE MARDH-LABST, " Warehouse Loss
            C_STK LIKE MARDH-LABST, " Closing Stock
            TRFSTK LIKE MARDH-LABST, "Transfer stock
            MENGE LIKE MSEG-MENGE,
            OTHADJ LIKE MARDH-LABST,
          END OF I_FINAL5.
    DATA: BEGIN OF I_FINAL OCCURS 0,
            WERKS LIKE MSEG-WERKS, " Plant
            MATNR LIKE MSEG-MATNR, " Material
            BUDAT LIKE MKPF-BUDAT, " Posting Date
            MTART LIKE MARA-MTART, " Material Type
            SPMON LIKE S031-SPMON, " Month
            MAKTX LIKE MAKT-MAKTX, " Description
    meins(3), " UOM
            MEINS LIKE MSEG-MEINS,
            O_STK LIKE MARDH-LABST, " opening stock
            TRECEP LIKE MARDH-LABST, " total receipts
            PRODU LIKE MARDH-LABST, " Net Receipts - Production
            RECEP LIKE MARDH-LABST, " Net Receipts - Receipts
            SAL_RET LIKE MARDH-LABST, " Net Receipts - Sales Return
            TDISP LIKE MARDH-LABST, " total dispatches
            CUSTMR LIKE MARDH-LABST, " Net Dispatches - Customers
            OPLANT LIKE MARDH-LABST, " Net Dispatches - To Other Plant
            TRFSTK LIKE MARDH-LABST, "Material Transfer stock
            TRLOSS LIKE MARDH-LABST, " Transit Loss
            WHLOSS LIKE MARDH-LABST, " Warehouse Loss
            TLOSS LIKE MARDH-LABST, " Total Loss
            C_STK LIKE MARDH-LABST, " Closing Stock
            OTHADJ LIKE MARDH-LABST,
           END OF I_FINAL.
    DATA: I_FINAL1 LIKE I_FINAL OCCURS 0 WITH HEADER LINE.
    DATA: BEGIN OF I_FINAL_TEMP OCCURS 0,
            WERKS LIKE MSEG-WERKS, " Plant
            MATNR LIKE MSEG-MATNR, " Material
            MTART LIKE MARA-MTART, " Material Type
            MAKTX LIKE MAKT-MAKTX, " Description
            MEINS LIKE MSEG-MEINS,
            O_STK LIKE MARDH-LABST, " opening stock
            TRECEP LIKE MARDH-LABST, " total receipts
            PRODU LIKE MARDH-LABST, " Net Receipts - Production
            RECEP LIKE MARDH-LABST, " Net Receipts - Receipts
            SAL_RET LIKE MARDH-LABST, " Net Receipts - Sales Return
            TDISP LIKE MARDH-LABST, " total dispatches
            CUSTMR LIKE MARDH-LABST, " Net Dispatches - Customers
            OPLANT LIKE MARDH-LABST, " Net Dispatches - To Other Plant
            TRFSTK LIKE MARDH-LABST, "Material Transfer stock
            TRLOSS LIKE MARDH-LABST, " Transit Loss
            WHLOSS LIKE MARDH-LABST, " Warehouse Loss
            TLOSS LIKE MARDH-LABST, " Total Loss
            C_STK LIKE MARDH-LABST, " Closing Stock
            OTHADJ LIKE MARDH-LABST,
          END OF I_FINAL_TEMP.
    For Materials
    DATA: BEGIN OF I_MARA OCCURS 0,
           MATNR TYPE MARA-MATNR,
           MTART TYPE MARA-MTART,
           MEINS LIKE MARA-MEINS,
           LABST TYPE MARD-LABST,
           MAKTX LIKE MAKT-MAKTX,
          END OF I_MARA.
    DATA: BEGIN OF I_STKMVMNTS OCCURS 0,
           BWART LIKE MSEG-BWART,
           SHKZG LIKE MSEG-SHKZG,
           VZBEW LIKE YW2_STKMOVEMENTS-VZBEW,
          END OF I_STKMVMNTS.
    DATA: BEGIN OF I_FINALT OCCURS 0,
           WERKS LIKE MSEG-WERKS, " Plant
           MATNR LIKE MSEG-MATNR, " Material
           BUDAT LIKE MKPF-BUDAT, " Posting Date
           MTART LIKE MARA-MTART, " Material Type
           SPMON LIKE S031-SPMON, " Month
           MAKTX LIKE MAKT-MAKTX, " Description
    meins(3), " UOM
           MEINS LIKE MSEG-MEINS,
           O_STK LIKE MARDH-LABST, " opening stock
           TRECEP LIKE MARDH-LABST, " total receipts
           PRODU LIKE MARDH-LABST, " Net Receipts - Production
           RECEP LIKE MARDH-LABST, " Net Receipts - Receipts
           SAL_RET LIKE MARDH-LABST, " Net Receipts - Sales Return
           TDISP LIKE MARDH-LABST, " total dispatches
           CUSTMR LIKE MARDH-LABST, " Net Dispatches - Customers
           OPLANT LIKE MARDH-LABST, " Net Dispatches - To Other Plant
           TRFSTK LIKE MARDH-LABST, "Material Transfer stock
           TRLOSS LIKE MARDH-LABST, " Transit Loss
           WHLOSS LIKE MARDH-LABST, " Warehouse Loss
           TLOSS LIKE MARDH-LABST, " Total Loss
           C_STK LIKE MARDH-LABST, " Closing Stock
           OTHADJ LIKE MARDH-LABST,
           MONTH(8) ,
          END OF I_FINALT.
    DATA: IMKPFT LIKE I_MKPF OCCURS 0 WITH HEADER LINE.
    DATA: IMKPFT1 LIKE I_MKPF1 OCCURS 0 WITH HEADER LINE.
    DATA: IMARDT LIKE I_MARD OCCURS 0 WITH HEADER LINE.
    DATA: IMARDHT LIKE I_MARDH OCCURS 0 WITH HEADER LINE.
    DATA: T_FINAL LIKE I_MKPF OCCURS 0 WITH HEADER LINE.
    DATA: IMKPFT2 LIKE I_MKPF OCCURS 0 WITH HEADER LINE.
    FCAT is used for the field catalog
    DATA: FCAT TYPE TABLE OF SLIS_FIELDCAT_ALV WITH NON-UNIQUE DEFAULT KEY
                      WITH HEADER LINE INITIAL SIZE 0,
    for excluding the ICONs from the application toolbar
          FEXC TYPE TABLE OF SLIS_EXTAB WITH NON-UNIQUE DEFAULT KEY
                     WITH HEADER LINE INITIAL SIZE 0,
    FS_LAYO is used for Grid Layout
          FS_LAYO TYPE SLIS_LAYOUT_ALV,
    FEVENTS to handle the events TOP OF PAGE & USER_COMMAND
          FEVENTS TYPE TABLE OF SLIS_ALV_EVENT WITH NON-UNIQUE DEFAULT KEY
                     WITH HEADER LINE INITIAL SIZE 0,
    FHEADER is used for List header
          FHEADER TYPE TABLE OF SLIS_LISTHEADER WITH NON-UNIQUE DEFAULT KEY
                     WITH HEADER LINE INITIAL SIZE 0,
    sort is used for sorting
          FSORT TYPE TABLE OF SLIS_SORTINFO_ALV WITH NON-UNIQUE DEFAULT KEY
                     WITH HEADER LINE INITIAL SIZE 0,
          FCAT1 TYPE TABLE OF SLIS_FIELDCAT_ALV WITH NON-UNIQUE DEFAULT KEY
                    WITH HEADER LINE INITIAL SIZE 0,
          FS_LAYO1 TYPE SLIS_LAYOUT_ALV,
          GT_LIST_TOP_OF_PAGE1 TYPE SLIS_T_LISTHEADER,
          FEVENTS1 TYPE TABLE OF SLIS_ALV_EVENT WITH NON-UNIQUE DEFAULT KEY
                 WITH HEADER LINE INITIAL SIZE 0,
           FHEADER1 TYPE TABLE OF SLIS_LISTHEADER WITH NON-UNIQUE DEFAULT  
                  KEY WITH HEADER LINE INITIAL SIZE 0,
           G_STATU_071 TYPE SLIS_FORMNAME VALUE 'Z_PFSTATUS',
           ALV_VARIANT1 LIKE DISVARIANT.
    Variable Declaration *
    TYPES: TRFF_TYPE_DEC_6_5(6) TYPE P DECIMALS 5.
    DATA: FYEAR(4),
          MON(2),
          FYEAR1(4),
          MON1(2),
          OBAL LIKE MARD-LABST,
          CBAL LIKE MARD-LABST,
          INDEX TYPE I,
          COUNT,
          COUNT1 TYPE I,
          O_STK TYPE P DECIMALS 3,
          C_STK TYPE P DECIMALS 3,
          V_MJAHR LIKE MKPF-MJAHR,
          MONTHS TYPE TRFF_TYPE_DEC_6_5,
          MONTH TYPE I.
    Global variables for handling ALV functionality
    DATA: ALV_KEYINFO TYPE SLIS_KEYINFO_ALV,
          ALV_VARIANT LIKE DISVARIANT,
          ALV_LAYOUT TYPE SLIS_LAYOUT_ALV,
          ALV_REPID LIKE SY-REPID,
          ALV_PRINT TYPE SLIS_PRINT_ALV,
          ALV_DETAIL_FUNC(30),
          ALV_DEFAULT_VARIANT LIKE DISVARIANT-VARIANT,
          ALV_COLOURIZE_FIELDS LIKE MMIM_REP_PRINT-COLOR.
    RANGES: R_BUDAT FOR MKPF-BUDAT.
    *Added by Prabhu for year on 26.4.05.
    DATA: IDATE LIKE R_BUDAT OCCURS 0 WITH HEADER LINE.
    Selection Screen Elements *
    SELECTION-SCREEN BEGIN OF BLOCK BLK WITH FRAME TITLE TEXT-001.
      SELECT-OPTIONS: S_WERKS FOR MARD-WERKS OBLIGATORY NO INTERVALS.
      PARAMETER: P_SPMON LIKE S031-SPMON NO-DISPLAY .
      SELECT-OPTIONS: S_MATNR FOR MARA-MATNR OBLIGATORY,
                      S_LGORT FOR MSEG-LGORT NO-EXTENSION NO INTERVALS,
                      S_MBLNR FOR MKPF-MBLNR,
                      S_BUDAT FOR MKPF-BUDAT OBLIGATORY .
    SELECTION-SCREEN END OF BLOCK BLK.
    SELECTION-SCREEN BEGIN OF BLOCK BLK3 WITH FRAME TITLE TEXT-004.
          PARAMETER : MTART LIKE MARA-MTART DEFAULT 'FERT' NO-DISPLAY.
    SELECTION-SCREEN END OF BLOCK BLK3.
    SELECTION-SCREEN BEGIN OF BLOCK BLK2 WITH FRAME TITLE TEXT-003.
    SELECTION-SCREEN END OF BLOCK BLK2.
    ADDED BY PRABHU FOR DAY-WISE REPORT.
    SELECTION-SCREEN BEGIN OF BLOCK B3 WITH FRAME TITLE TEXT-007.
      PARAMETERS: D1 RADIOBUTTON GROUP P1 DEFAULT 'X',
                  M1 RADIOBUTTON GROUP P1,
                  Y1 RADIOBUTTON GROUP P1.
    SELECTION-SCREEN END OF BLOCK B3.
    SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME TITLE TEXT-006.
    PARAMETERS: ALV_DEF LIKE DISVARIANT-VARIANT.
    SELECTION-SCREEN END OF BLOCK B2.
    DATA: S_BUDAT1 LIKE S_BUDAT OCCURS 0 WITH HEADER LINE."prabhu
    Initialization *
    INITIALIZATION.
      PERFORM ALV_INIT.
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR ALV_DEF.
      PERFORM ALV_F4.
    At Selection Screen
    *AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_spmon.
    PERFORM monat_f4.
    At Selection Screen *
    AT SELECTION-SCREEN.
    checking for the layout
      PERFORM ALV_CHECK.
    authorisation check for the Plant
    PERFORM auth_check.
    Validation for the Plant
      PERFORM VALIDITY_CHECK.
      IF MTART NE 'FERT'.
        MESSAGE E041 WITH 'Material Type must be FERT Only...'.
      ENDIF.
      IF D1 = 'X'." On 26.4.05.
        P_SPMON0(4) = S_BUDAT-LOW0(4).
        P_SPMON4(2) = S_BUDAT-LOW4(2).
      ELSE.
        P_SPMON0(4) = S_BUDAT-LOW0(4).
        P_SPMON4(2) = S_BUDAT-LOW4(2).
      ENDIF.
      LOOP AT S_BUDAT.
        IF S_BUDAT-HIGH IS INITIAL.
          S_BUDAT-HIGH = S_BUDAT-LOW.
          MODIFY S_BUDAT.
        ENDIF.
      ENDLOOP.
      IDATE-LOW = S_BUDAT-LOW.
      IDATE-HIGH = S_BUDAT-HIGH.
      CALL FUNCTION 'FIMA_DAYS_AND_MONTHS_AND_YEARS'
        EXPORTING
           I_DATE_FROM = IDATE-LOW
           I_DATE_TO = IDATE-HIGH
       IMPORTING
    E_DAYS =
          E_MONTHS = MONTH
    E_YEARS =
      DATA: I(3) TYPE C.
      I = S_BUDAT-LOW+4(2).
      CLEAR: R_BUDAT.
      REFRESH: R_BUDAT.
    *added by Prabhu for Only for Oneday.on 18.5.5
      IF MONTH EQ '0'.
        MONTH = MONTH + 1.
      ENDIF.
    *added by Prabhu for Only for Oneday.on 18.5.5
      DO MONTH TIMES.
        R_BUDAT-LOW = S_BUDAT-LOW.
        APPEND R_BUDAT.
      ENDDO.
      I = 0.
      LOOP AT R_BUDAT.
        R_BUDAT-LOW4(2) = S_BUDAT-LOW4(2) + I.
        I = I + 1.
        R_BUDAT-LOW+6(2) = '01'.
        MODIFY R_BUDAT.
      ENDLOOP.
      LOOP AT R_BUDAT.
        CALL FUNCTION 'RP_LAST_DAY_OF_MONTHS'
           EXPORTING
             DAY_IN = R_BUDAT-LOW
           IMPORTING
             LAST_DAY_OF_MONTH = R_BUDAT-HIGH
          EXCEPTIONS
            DAY_IN_NO_DATE = 1
            OTHERS = 2
        MODIFY R_BUDAT.
      ENDLOOP.
      LOOP AT R_BUDAT.
        IF R_BUDAT-LOW4(2) = S_BUDAT-LOW4(2).
          R_BUDAT-LOW = S_BUDAT-LOW.
          MODIFY R_BUDAT.
        ENDIF.
        IF R_BUDAT-HIGH4(2) = S_BUDAT-HIGH4(2).
          R_BUDAT-HIGH = S_BUDAT-HIGH.
          MODIFY R_BUDAT.
        ENDIF.
    For Summary on 26.4.05.
        IF Y1 = 'X'.
          CLEAR R_BUDAT.
          REFRESH R_BUDAT.
          R_BUDAT-LOW = S_BUDAT-LOW.
          R_BUDAT-HIGH = S_BUDAT-HIGH.
          APPEND R_BUDAT.
          CLEAR R_BUDAT.
        ENDIF.
      ENDLOOP.
    At Selection Screen *
    AT SELECTION-SCREEN OUTPUT.
    Start of Selection *
    START-OF-SELECTION.
      V_MJAHR = P_SPMON+0(4).
    Get plant distinction warehouse/production
      PERFORM GET_PLANT_DISTINCTION.
    Collect the data from various tables
      PERFORM GETDATA_FG_STOCK.
    here the number of rows in the output table is found
      PERFORM OUTPUT_TABLE_CHECK.
    here the top of the page code is written, that is to be displayed
    in the output
      PERFORM Z_TOP_OF_PAGE.
    here ALV layout properties are set
      PERFORM Z_LAYOUT_SETTINGS.
    ALV EVENTS for TOP OF PAGE and for USER COMMAND
      PERFORM Z_ALV_EVENTS.
    The field catalog is defined for the Primary List is defined in
    the subroutine CREATE_FIELD_CATALOG include program ZPRRDOCR_FCAT
      PERFORM Z_CREATE_FIELD_CATALOG.
    This is for displaying the output
      PERFORM Z_REUSE_ALV_GRID_DISPLAY.
    *& Form getdata_fg_stock
    Getting data from standard tables
    FORM GETDATA_FG_STOCK.
    For getting the Start date & end date of the month
    PERFORM get_month_dates.
    Getting the Opening Stock from MARDH table
      IF MON EQ '01'.
        MON1 = MON.
        FYEAR1 = FYEAR.
        MON = '12'.
        FYEAR = FYEAR - 1.
      ELSE.
        MON1 = MON.
        FYEAR1 = FYEAR.
        MON = MON - 1.
        FYEAR = FYEAR.
      ENDIF.
      PERFORM GET_RECORDS_FROM_DB.
    *added for Month Summary on 26.4.05.
      LOOP AT R_BUDAT.
        S_BUDAT-LOW = R_BUDAT-LOW.
        S_BUDAT-HIGH = R_BUDAT-HIGH.
    *for Month
        P_SPMON0(4) = S_BUDAT-LOW0(4).
        P_SPMON4(2) = S_BUDAT-LOW4(2).
    *for summary.
        IF Y1 = 'X'.
          LOOP AT S_BUDAT.
            S_BUDAT1-SIGN = 'I'.
            S_BUDAT1-OPTION = 'NB'.
            S_BUDAT1-LOW = S_BUDAT-LOW.
            S_BUDAT1-HIGH = S_BUDAT-HIGH.
            APPEND S_BUDAT1.
            CLEAR S_BUDAT1.
          ENDLOOP.
        ENDIF.
        IMKPFT[] = I_MKPF[].
        IMKPFT2[] = I_MKPF[].
        IMARDT[] = I_MARD[].
        IMARDHT[] = I_MARDH[].
        PERFORM MONTH_WISE.
        PERFORM PROCESS_MOVEMENTS.
        PERFORM CALCULATE_OPENING_STOCK.
        PERFORM UPDATE_NON_TRANSACTION_ITMS.
        PERFORM DELETE_EMPTY_RECORDS.
        CLEAR: IMARDHT,IMARDT,IMKPFT1,IMKPFT,I_FINAL,I_FINAL5.
        REFRESH: IMARDHT,IMARDT,IMKPFT1,I_FINAL,I_FINAL5,IMKPFT.
      ENDLOOP.
      CLEAR: R_BUDAT.
      REFRESH: R_BUDAT.
    *end of changes for month.
    ENDFORM. " getdata_fg_stock
    FORM MONAT_F4 *
    F4-Hilfe für Monat *
    FORM MONAT_F4.
      DATA: BEGIN OF MF_DYNPFIELDS OCCURS 1.
              INCLUDE STRUCTURE DYNPREAD.
      DATA: END OF MF_DYNPFIELDS.
      DATA: MF_RETURNCODE LIKE SY-SUBRC,
             MF_MONAT LIKE ISELLIST-MONTH,
             MF_HLP_REPID LIKE SY-REPID.
      FIELD-SYMBOLS: .
    Wert von Dynpro lesen
      GET CURSOR FIELD MF_DYNPFIELDS-FIELDNAME.
      APPEND MF_DYNPFIELDS.
      MF_HLP_REPID = SY-REPID.
      DO 2 TIMES.
        CALL FUNCTION 'DYNP_VALUES_READ'
          EXPORTING
            DYNAME               = MF_HLP_REPID
            DYNUMB               = SY-DYNNR
          TABLES
            DYNPFIELDS           = MF_DYNPFIELDS
          EXCEPTIONS
            INVALID_ABAPWORKAREA = 01
            INVALID_DYNPROFIELD  = 02
            INVALID_DYNPRONAME   = 03
            INVALID_DYNPRONUMMER = 04
            INVALID_REQUEST      = 05
            NO_FIELDDESCRIPTION  = 06
            UNDEFIND_ERROR       = 07.
        IF SY-SUBRC = 3.
    Aktuelles Dynpro ist Wertemengenbild
          MF_HLP_REPID = 'SAPLALDB'.
        ELSE.
          READ TABLE MF_DYNPFIELDS INDEX 1.
    Unterstriche durch Blanks ersetzen
          TRANSLATE MF_DYNPFIELDS-FIELDVALUE USING '_ '.
          EXIT.
        ENDIF.
      ENDDO.
      IF SY-SUBRC = 0.
    Konvertierung ins interne Format
        CALL FUNCTION 'CONVERSION_EXIT_PERI_INPUT'
          EXPORTING
            INPUT         = MF_DYNPFIELDS-FIELDVALUE
          IMPORTING
            OUTPUT        = MF_MONAT
          EXCEPTIONS
            ERROR_MESSAGE = 1.
        IF MF_MONAT IS INITIAL.
    Monat ist initial => Vorschlagswert aus akt. Datum ableiten
          MF_MONAT = SY-DATLO(6).
        ENDIF.
        CALL FUNCTION 'POPUP_TO_SELECT_MONTH'
          EXPORTING
            ACTUAL_MONTH               = MF_MONAT
          IMPORTING
            SELECTED_MONTH             = MF_MONAT
            RETURN_CODE                = MF_RETURNCODE
          EXCEPTIONS
            FACTORY_CALENDAR_NOT_FOUND = 01
            HOLIDAY_CALENDAR_NOT_FOUND = 02
            MONTH_NOT_FOUND            = 03.
        IF SY-SUBRC = 0 AND MF_RETURNCODE = 0.
    ASSIGN (MF_DYNPFIELDS-FIELDNAME) TO <MF_FELD>. " ==>> note 148804
    <MF_FELD> = MF_MONAT.
          CALL FUNCTION 'CONVERSION_EXIT_PERI_OUTPUT'
            EXPORTING
              INPUT  = MF_MONAT
            IMPORTING
              OUTPUT = MF_DYNPFIELDS-FIELDVALUE.
          COLLECT MF_DYNPFIELDS.
          CALL FUNCTION 'DYNP_VALUES_UPDATE'
            EXPORTING
              DYNAME               = MF_HLP_REPID
              DYNUMB               = SY-DYNNR
            TABLES
              DYNPFIELDS           = MF_DYNPFIELDS
            EXCEPTIONS
              INVALID_ABAPWORKAREA = 01
              INVALID_DYNPROFIELD  = 02
              INVALID_DYNPRONAME   = 03
              INVALID_DYNPRONUMMER = 04
              INVALID_REQUEST      = 05
              NO_FIELDDESCRIPTION  = 06
              UNDEFIND_ERROR       = 07. "<<== note 148804
        ENDIF.
      ENDIF.
    ENDFORM.                                                    "MONAT_F4
    *& Form get_month_dates
    Calculating the Month Start & End Date
    FORM GET_MONTH_DATES.
      IF M1 = 'X'.
        FYEAR = P_SPMON+0(4).
        MON = P_SPMON+4(2).
        CONCATENATE FYEAR MON '01' INTO R_BUDAT-LOW.
        R_BUDAT-SIGN = 'I'.
        R_BUDAT-OPTION = 'BT'.
        CALL FUNCTION 'BKK_GET_MONTH_LASTDAY'
          EXPORTING
            I_DATE = R_BUDAT-LOW
          IMPORTING
            E_DATE = R_BUDAT-HIGH.
        APPEND R_BUDAT.
        CLEAR S_BUDAT.
        REFRESH S_BUDAT.
        S_BUDAT-SIGN = 'I'.
        S_BUDAT-OPTION = 'BT'.
        S_BUDAT-LOW = R_BUDAT-LOW.
        S_BUDAT-HIGH = R_BUDAT-HIGH.
        APPEND S_BUDAT.
      ELSE.
        FYEAR = P_SPMON+0(4).
        MON = P_SPMON+4(2).
        CONCATENATE FYEAR MON '01' INTO R_BUDAT-LOW.
        R_BUDAT-SIGN = 'I'.
        R_BUDAT-OPTION = 'BT'.
        CALL FUNCTION 'BKK_GET_MONTH_LASTDAY'
          EXPORTING
            I_DATE = R_BUDAT-LOW
          IMPORTING
            E_DATE = R_BUDAT-HIGH.
        APPEND R_BUDAT.
      ENDIF.
    ENDFORM. " get_month_dates
    *& Form output_table_Check
    checking for records for output
    FORM OUTPUT_TABLE_CHECK .
      DESCRIBE TABLE I_FINALT LINES INDEX.
      IF INDEX EQ 0.
        MESSAGE I041 WITH TEXT-005.
        LEAVE LIST-PROCESSING.
      ENDIF.
    ENDFORM. "OUTPUT_TABLE_CHECK
    *& Form Z_TOP_OF_PAGE
    for setting the details in the top of page *
    has no formal paramters *
    FORM Z_TOP_OF_PAGE.
      DATA: V_MON(2),
      V_YR(40),
      V_FIN(18),
      V_FIN1(48),
      LOW(10),
      HIGH(10).
      V_MON = P_SPMON+4(2).
      V_YR = P_SPMON+0(4).
      FHEADER-TYP = 'H'.
      FHEADER-INFO = 'Stock Register Report (FG Stock)'.
      APPEND FHEADER.
      CLEAR FHEADER.
    *if m1 = 'X'.
    CONCATENATE 'Month = ' v_mon '.' v_yr INTO v_fin.
    fheader-typ = 'H'.
    fheader-info = v_fin.
    APPEND fheader.
    CLEAR fheader.
    *endif."prabhu on 18.5.5
      IF D1 = 'X'.
        CLEAR S_BUDAT.
        LOOP AT S_BUDAT.
          CONCATENATE S_BUDAT-LOW6(2) '/' S_BUDAT-LOW4(2) '/'
          S_BUDAT-LOW+0(4) INTO LOW.
          CONCATENATE S_BUDAT-HIGH6(2) '/' S_BUDAT-HIGH4(2) '/'
          S_BUDAT-HIGH+0(4) INTO HIGH.
          CONCATENATE 'Date = ' LOW ' - ' HIGH INTO V_FIN1.
          FHEADER-TYP = 'H'.
          FHEADER-INFO = V_FIN1.
          APPEND FHEADER.
          CLEAR FHEADER.
        ENDLOOP.
      ENDIF.
    ENDFORM. " Z_TOP_OF_PAGE
    *& Form Z_LAYOUT_SETTINGS
    this is done for setting the properties for the layout of the *
    grid *
    has no formal paramters *
    FORM Z_LAYOUT_SETTINGS.
      FS_LAYO-ZEBRA = 'X'. " Output in Zebra pattern
      FS_LAYO-DETAIL_POPUP = 'X'. " A popup window appears to give
      FS_LAYO-DETAIL_TITLEBAR = TEXT-022.
      FS_LAYO-COLWIDTH_OPTIMIZE = 'X'.
    ENDFORM. " Z_LAYOUT_SETTINGS
    *& Form Z_ALV_EVENTS
    This is used for handling the events TOP OF PAGE and the USER *
    COMMAND event *
    has no formal paramters *
    FORM Z_ALV_EVENTS.
      CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
        EXPORTING
          I_LIST_TYPE = 0
        IMPORTING
          ET_EVENTS   = FEVENTS[].
      READ TABLE FEVENTS WITH KEY NAME = 'TOP_OF_PAGE'.
      IF SY-SUBRC = 0.
        FEVENTS-FORM = 'Z_TOPOFPAGE'.
        MODIFY FEVENTS INDEX SY-TABIX.
        CLEAR FEVENTS.
      ENDIF.
      READ TABLE FEVENTS WITH KEY NAME = 'USER_COMMAND'.
      IF SY-SUBRC = 0.
        FEVENTS-FORM = 'Z_USER_COMMAND'.
        MODIFY FEVENTS INDEX SY-TABIX.
        CLEAR FEVENTS.
      ENDIF.
    ENDFORM. "Z_ALV_EVENTS
    *& Form Z_CREATE_FIELD_CATALOG
    here the field catalog is created for the primary list *
    no formal parameters *
    FORM Z_CREATE_FIELD_CATALOG.
    for the Plant
      FCAT-FIELDNAME = 'WERKS'.
      FCAT-KEY = 'X'.
      FCAT-OUTPUTLEN = '000005'.
      FCAT-JUST = 'L'.
      FCAT-SELTEXT_M = 'Plant'.
      FCAT-DDICTXT = 'M'.
      FCAT-INTTYPE = 'C'.
      FCAT-DATATYPE = 'CHAR'.
      APPEND FCAT.
      CLEAR FCAT.
    for the Material Type
      FCAT-FIELDNAME = 'MTART'.
      FCAT-KEY = 'X'.
      FCAT-OUTPUTLEN = '000006'.
      FCAT-JUST = 'L'.
      FCAT-SELTEXT_M = 'MatTyp'.
      FCAT-DDICTXT = 'M'.
      FCAT-INTTYPE = 'C'.
      FCAT-DATATYPE = 'CHAR'.
      APPEND FCAT.
      CLEAR FCAT.
    for the Material No.
      FCAT-FIELDNAME = 'MATNR'.
      FCAT-KEY = 'X'.
    fcat-hotspot = 'X'.
      FCAT-OUTPUTLEN = '000018'.
      FCAT-JUST = 'L'.
      FCAT-SELTEXT_M = 'Material'.
      FCAT-DDICTXT = 'M'.
      FCAT-INTTYPE = 'C'.
      FCAT-DATATYPE = 'CHAR'.
      APPEND FCAT.
      CLEAR FCAT.
    for the Material Description
      FCAT-FIELDNAME = 'MAKTX'.
      FCAT-KEY = ''.
      FCAT-OUTPUTLEN = '000040'.
      FCAT-JUST = 'L'.
      FCAT-SELTEXT_M = 'Description'.
      FCAT-DDICTXT = 'M'.
      FCAT-INTTYPE = 'C'.
      FCAT-DATATYPE = 'CHAR'.
      APPEND FCAT.
      CLEAR FCAT.
    for the Unit of Measure
      FCAT-FIELDNAME = 'MEINS'.
      FCAT-KEY = ''.
      FCAT-OUTPUTLEN = '03'.
      FCAT-JUST = 'C'.
      FCAT-SELTEXT_M = 'UOM'.
      FCAT-DDICTXT = 'M'.
      FCAT-INTTYPE = 'C'.
      FCAT-DATATYPE = 'UNIT'.
      APPEND FCAT.
      CLEAR FCAT.
    for the Plant
      FCAT-FIELDNAME = 'MONTH'.
      FCAT-KEY = 'X'.
      FCAT-OUTPUTLEN = '08'.
      FCAT-JUST = 'L'.
      FCAT-SELTEXT_M = 'MONTH'.
      FCAT-DDICTXT = 'M'.
      FCAT-INTTYPE = 'C'.
      FCAT-DATATYPE = 'CHAR'.
      APPEND FCAT.
      CLEAR FCAT.
    for the Opening Stock
      FCAT-FIELDNAME = 'C_STK'.
      FCAT-HOTSPOT = ' '.
      FCAT-OUTPUTLEN = '000016'.
      FCAT-JUST = 'L'.
      FCAT-SELTEXT_M = 'Opening Stock'.
      FCAT-DDICTXT = 'M'.
      FCAT-INTTYPE = 'Q'.
      FCAT-DATATYPE = 'QUAN'.
    fcat-do_sum = 'X'.
      FCAT-JUST = 'R'.
      FCAT-NO_ZERO = 'X'.
      APPEND FCAT.
      CLEAR FCAT.
    for the Total Receipts
      FCAT-FIELDNAME = 'TRECEP'.
      FCAT-HOTSPOT = ' '.
      FCAT-OUTPUTLEN = '000016'.
      FCAT-JUST = 'L'.
      FCAT-SELTEXT_M = 'Total Receipts'.
      FCAT-DDICTXT = 'M'.
      FCAT-INTTYPE = 'Q'.
      FCAT-DATATYPE = 'QUAN'.
      FCAT-DO_SUM = 'X'.
      FCAT-JUST = 'R'.
      FCAT-NO_ZERO = 'X'.
      APPEND FCAT.
      CLEAR FCAT.
    for the Production
      FCAT-FIELDNAME = 'PRODU'.
      FCAT-HOTSPOT = ' '.
      FCAT-OUTPUTLEN = '000016'.
      FCAT-JUST = 'L'.
      FCAT-SELTEXT_M = 'Production'.
      FCAT-DDICTXT = 'M'.
      FCAT-INTTYPE = 'Q'.
      FCAT-DATATYPE = 'QUAN'.
      FCAT-DO_SUM = 'X'.
      FCAT-JUST = 'R'.
      FCAT-NO_ZERO = 'X'.
      APPEND FCAT.
      CLEAR FCAT.
    for the Other Plant Receipts
      FCAT-FIELDNAME = 'RECEP'.
      FCAT-HOTSPOT = ' '.
      FCAT-OUTPUTLEN = '000016'.
      FCAT-JUST = 'L'.
      FCAT-SELTEXT_M = 'Othr Plnt Recpts'.
      FCAT-DDICTXT = 'M'.
      FCAT-INTTYPE = 'Q'.
      FCAT-DATATYPE = 'QUAN'.
      FCAT-DO_SUM = 'X'.
      FCAT-JUST = 'R'.
      FCAT-NO_ZERO = 'X'.
      APPEND FCAT.
      CLEAR FCAT.
    Sales Return
      FCAT-FIELDNAME = 'SAL_RET'.
      FCAT-HOTSPOT = ' '.
      FCAT-OUTPUTLEN = '000016'.
      FCAT-JUST = 'L'.
      FCAT-SELTEXT_M = 'Sales Return'.
      FCAT-DDICTXT = 'M'.
      FCAT-INTTYPE = 'Q'.
      FCAT-DATATYPE = 'QUAN'.
      FCAT-DO_SUM = 'X'.
      FCAT-JUST = 'R'.
      FCAT-NO_ZERO = 'X'.
      APPEND FCAT.
      CLEAR FCAT.
    Total Dispatches
      FCAT-FIELDNAME = 'TDISP'.
      FCAT-HOTSPOT = ' '.
      FCAT-OUTPUTLEN = '000016'.
      FCAT-JUST = 'L'.
      FCAT-SELTEXT_M = 'Total Dispatches'.
      FCAT-DDICTXT = 'M'.
      FCAT-INTTYPE = 'Q'.
      FCAT-DATATYPE = 'QUAN'.
      FCAT-DO_SUM = 'X'.
      FCAT-JUST = 'R'.
      FCAT-NO_ZERO = 'X'.
      APPEND FCAT.

  • How to print the data in ALV list  format using an existing layout

    Hi all
    Iam displaying the output in ALV list format and I saved the layout with some name
    now my requirement is i have to provide a field to select the layout name with F4 help and if i execute the program it should show the output with that layout format
    I tried this iam getting F4 help for that layout and selecting the layout but iam not getting the output with that layout iam getting the normal basic layout
    Can anyone send me a sample program code or what to do to get that
    Thank you

    Hi,
    refer this code.
    DATA : wa_variant  TYPE disvariant,       "Work area for variant
           wa_variant1 TYPE disvariant,       "Work area for variant
           wa_layout   TYPE slis_layout_alv,  "Work area for layout
    *&      Form  sub_get_default_variant                                  *
    This form will initialize the variant                               *
    FORM sub_get_default_variant .
    *--Clear
      CLEAR wa_variant.
    *--Pass the report name
      v_repid = sy-repid.                     "Report ID
      wa_variant-report = v_repid.
    *--Call the function module to get the default variant
      CALL FUNCTION 'REUSE_ALV_VARIANT_DEFAULT_GET'
        EXPORTING
          i_save        = c_save
        CHANGING
          cs_variant    = wa_variant1
        EXCEPTIONS
          wrong_input   = 1
          not_found     = 2
          program_error = 3
          OTHERS        = 4.
    *--Check Subrc
      IF sy-subrc = 0.
        p_varnt = wa_variant-variant.
      ENDIF.
    ENDFORM.                                  "sub_get_default_variant
    *&      Form  sub_f4_for_variant                                       *
    This form will display the List of Variants                         *
    FORM sub_f4_for_variant .
    *--Local Variables
      DATA: lv_exit(1) TYPE c.                "ALV exit
    *--Call the function module to display the list of Variants
      CALL FUNCTION 'REUSE_ALV_VARIANT_F4'
        EXPORTING
          is_variant    = wa_variant
          i_save        = c_save
        IMPORTING
          e_exit        = lv_exit
          es_variant    = wa_variant1
        EXCEPTIONS
          not_found     = 1
          program_error = 2.
    *--Check Subrc
      IF sy-subrc <> 2 AND lv_exit IS INITIAL.
        p_varnt = wa_variant1-variant.
      ENDIF.
    ENDFORM.                                  "sub_f4_for_variant
    *&      Form  sub_check_variant                                        *
    This form will check the variant                                    *
    FORM sub_check_variant .
      IF NOT p_varnt IS INITIAL.
        CLEAR wa_variant1.
        MOVE wa_variant TO wa_variant1.
        MOVE p_varnt TO wa_variant1-variant.
    *--Call the function module to check the variant exist
        CALL FUNCTION 'REUSE_ALV_VARIANT_EXISTENCE'
          EXPORTING
            i_save     = c_save
          CHANGING
            cs_variant = wa_variant1.
        wa_variant = wa_variant1.
      ENDIF.
    ENDFORM.                                  "sub_check_variant
    Regards,
    Prashant

  • ALV list like FBL1N output

    Dear all,
         I am developing a report for vendor line items details like FBL1N report.
        It means the vendor name as header and respective account
    details as item in alv and again next vendor name as header
    and respective account details in alv in the same page.
       How can i get the output like
    1.vendor name :XXXXXXXXX
       country        :XXXXXXXXX
    respective alv list which contains the account detailsof the vendor....
    2.vendor name :YYYYYYY
      country        :YYYYYYY
    respective alv list....
    how should i declare my alv and get it done.
    points will be rewarded..
    regards.
    siva
    Edited by: siva on Jul 22, 2008 3:38 PM

    Hi ,
         I have to use variant or layout option i think.
      huv to use these options to get my alv report like FBL1N output.
        In  FBL1N  the function FI_ITEMS_DISPLAY is used.
         But I can't use that function my program.
        Because my output structure is different.
        huv to make it out.
         Regards
       siva
    Edited by: siva on Jul 23, 2008 6:47 AM

  • Example of lights in ALV LIST

    Can you please provide me with an example to use Traffic lights in ALV list display?
    Thanks,
    Amit

    Hi,
    Description : Pick Status Report                                    
    This is an ALV report using the heirarchical ALV list display. The  
    report selects all deliveries that fulfil the selection criteria    
    and displays a summary of all items in that delivery with reference 
    to certain statuses: overall status, goods issue status, transfer   
    order status, load to pallet status, pallet count status, loaded to 
    van status, van manifest printed status and end of day manifest     
    printed status. These statuses have been defined by the business.   
    There is extra functionality required to trigger printing of the van
    and end of day manifests from this report, and to set the loading   
    end status of a shipment if the last handling unit of a particular  
    shipment has been loaded onto a van for which the van manifest has  
    been triggered.                                                     
    REPORT  zwmr_pick_status_report NO STANDARD PAGE HEADING
                                    MESSAGE-ID zw.
    Type Pools                                                          
    TYPE-POOLS: icon, slis.
    Tables                                                              
    TABLES: tvst,
            likp,
            t30b,
            vekp,
    *{   INSERT         UKMK900355                                        4
            zhu_to_link,                                        "AS03
    *}   INSERT
            zpallettr,
            vttk,                                               "MB01
            zvantr.
    Types                                                               
    TYPES:
      BEGIN OF ty_data,
         lgtor       LIKE likp-lgtor,             " door
         vbeln       LIKE likp-vbeln,             " delivery
         wbstk       LIKE vbuk-wbstk,             " Goods movement status
         kostk       LIKE vbuk-kostk,             " Picking status
         posnr       LIKE lips-posnr,             " item
         route       LIKE likp-route,             " route
         wadat       LIKE likp-wadat,             " goods issue date
         lvsta       LIKE vbup-lvsta,             " warehouse status
         packvorschr LIKE vekp-packvorschr,       " pack mnemonic
         exidv       LIKE vekp-exidv,             " handling unit
         zpallet_no(10),  "like zpallettr-zpallet_no,   " pallet no
         zdep_point  LIKE zpallettr-zdep_point,   "Departur Point "Jvdm01
         zcount_check LIKE zpallettr-zcount_check," count check flag
         zvan_no(10),     "like zvantr-zvan_no,         " van no
         zvan_print  LIKE zvantr-zvan_print,      " van manifest print
         tknum       LIKE vttk-tknum,             " Shipment No  "ANV 11523
         zeod_print  LIKE zvantr-zeod_print,      " eod manifest print
         zzpackclass LIKE vekp-zzpackclass,       " package class
         zzti        LIKE vekp-zzti,              " T.I. value
         vstel       LIKE likp-vstel,             "Shipping point RM050906
         anzpk       TYPE znopack,            "No of packages in dlv MB01+
      END OF ty_data.
    TYPES:BEGIN OF x_likp ,
          vbeln LIKE likp-vbeln,
          vstel LIKE likp-vstel,                                "RM050906
          lgtor LIKE likp-lgtor,
          zzroute2lgtor LIKE likp-zzroute2lgtor,                "MB01
          route LIKE likp-route,
          wadat LIKE likp-wadat,
          zz2route LIKE likp-zz2route,                          "MB01+
          zzexproute LIKE likp-zzexproute,                      "MB01+
          zzroute2 LIKE likp-zzroute2,                          "MB01+
          anzpk    LIKE likp-anzpk,
          END OF x_likp.
    TYPES: BEGIN OF x_vbuk,
           vbeln TYPE vbuk-vbeln,
           wbstk TYPE vbuk-wbstk,             " Goods movement status
           kostk TYPE vbuk-kostk,             " Picking status
           END OF x_vbuk.
    TYPES: BEGIN OF x_lips,
          vbeln TYPE lips-vbeln,             " delivery
          posnr TYPE lips-posnr,             " item
          pstyv TYPE lips-pstyv,
          matnr TYPE lips-matnr,
          charg TYPE lips-charg,
          END OF x_lips.
    TYPES: BEGIN OF x_vbup,
           vbeln TYPE vbup-vbeln,             " delivery
           posnr TYPE vbup-posnr,             " item
           lvsta TYPE vbup-lvsta,             " warehouse status
           END OF x_vbup.
    TYPES: BEGIN OF x_vepo,
           venum TYPE vepo-venum,             "Internal Handling Unit
    Number
           vepos TYPE vepo-vepos,             "Handling Unit Item
           vbeln TYPE vepo-vbeln,             " delivery
           posnr TYPE vepo-posnr,             " item
           exidv TYPE vekp-exidv,
           END OF x_vepo.
    TYPES: BEGIN OF x_vepo1,
           venum TYPE vekp-venum,             "Internal Handling Unit
    Number
           exidv TYPE vekp-exidv,
           END OF x_vepo1.
    Start of changes by ANV SR#11523
    TYPES: BEGIN OF x_vttp,
             tknum TYPE tknum,                  " Shipment No
             tpnum TYPE tpnum,                  " Item No
             vbeln TYPE vbup-vbeln,             " delivery
             laufk LIKE vttk-laufk,             " leg indicator MB01+
           END OF x_vttp.
    End of changes by ANV SR#11523
    Data                                                                
    RANGES: r_del   FOR likp-vbeln,
            r_lgtor FOR likp-lgtor.
    RANGES: r_vanno FOR zvantr-zvan_no,
            r_palno FOR zpallettr-zpallet_no.
    DATA: BEGIN OF number_range OCCURS 0,
             mark(1),
             id(3),
             num(10) TYPE n,
             desc LIKE zpalletmd-zdesc,
          END OF number_range.
    DATA: t_disp_tab  TYPE STANDARD TABLE OF zpickdisp,
          t_data_tab  TYPE ty_data  OCCURS 0 WITH HEADER LINE,
          it_likp TYPE x_likp OCCURS 0 WITH HEADER LINE,         "SUM
          it_vbuk TYPE x_vbuk OCCURS 0 WITH HEADER LINE,         "SUM
          it_lips TYPE x_lips OCCURS 0 WITH HEADER LINE,         "SUM
          it_vbup TYPE x_vbup OCCURS 0 WITH HEADER LINE,         "SUM
          it_vepo TYPE x_vepo OCCURS 0 WITH HEADER LINE,         "SUM
          it_vepo2 TYPE x_vepo OCCURS 0 WITH HEADER LINE,        "SUM
    *{   INSERT         UKMK900355                                        3
          t_vepo_low TYPE x_vepo OCCURS 0 WITH HEADER LINE,     " AS01
    *}   INSERT
          it_vepo1 TYPE x_vepo1 OCCURS 0 WITH HEADER LINE,       "SUM
          it_vttp TYPE x_vttp OCCURS 0 WITH HEADER LINE, "ANV SR#11523
    t_disp_head TYPE STANDARD TABLE OF zpickhead.
    DATA wa_item_tab TYPE zpickdisp OCCURS 0 WITH HEADER LINE.
    "ANV SR#11113
    DATA: w_numrnge LIKE number_range,
          w_number(10) TYPE n.
    DATA: t_likp     LIKE likp      OCCURS 0 WITH HEADER LINE,
          t_lips     LIKE lips      OCCURS 0 WITH HEADER LINE,
          t_vbuk     LIKE vbuk      OCCURS 0 WITH HEADER LINE,
          t_vbup     LIKE vbup      OCCURS 0 WITH HEADER LINE,
          t_vepo     LIKE vepo      OCCURS 0 WITH HEADER LINE,
          t_vekp     LIKE vekp      OCCURS 0 WITH HEADER LINE,
          t_vantr    LIKE zvantr    OCCURS 0 WITH HEADER LINE,
          t_pallettr LIKE zpallettr OCCURS 0 WITH HEADER LINE,
         w_likp     like likp,
         w_lips     LIKE lips,
         w_vbuk     LIKE vbuk,
         w_vbup     LIKE vbup,
         w_vepo     LIKE vepo,
          w_vekp     LIKE vekp,
          w_vepo     TYPE x_vepo1,
          w_vbup     TYPE x_vbup,
          w_vttp     TYPE x_vttp,    " ANV SR#11523
          w_lips     TYPE x_lips,
          w_vbuk     TYPE x_vbuk,
          w_likp     TYPE x_likp,                               "MB01-+
          w_tplst    LIKE vttk-tplst.                           "MB01+
    DATA: s_variant  LIKE disvariant,                           "MB01+
          def_variant LIKE disvariant.
    ALV DATA *****
    DATA:
         g_grid             TYPE REF TO cl_gui_alv_grid,
         g_sort             TYPE slis_t_sortinfo_alv,
         g_custom_container TYPE REF TO cl_gui_custom_container,
         g_layout           TYPE slis_layout_alv,
         gt_fieldcat        TYPE slis_t_fieldcat_alv,
         t_fldcat           LIKE LINE OF gt_fieldcat,
         g_keyinfo          TYPE slis_keyinfo_alv,
         gt_events          TYPE slis_t_event,
         gs_event           TYPE slis_alv_event,
         w_sy_repid         LIKE sy-repid.
    DATA: BEGIN OF seltab OCCURS 0.
            INCLUDE STRUCTURE rsparams.
    DATA: END OF seltab.
    SYSTEM GENERATED TABLE CONTROL DATA ********
    DECLARATION OF TABLECONTROL 'TC_TABCON' ITSELF
    CONTROLS: tc_tabcon TYPE TABLEVIEW USING SCREEN 0100.
    LINES OF TABLECONTROL 'TC_TABCON'
    DATA:     g_tc_tabcon_lines  LIKE sy-loopc.
    DATA:     ok_code LIKE sy-ucomm.
    Constants                                                           
    CONSTANTS: c_data_class LIKE klah-class VALUE 'DG_DATA',
               c_mat_class  LIKE rmclf-klart VALUE '001',
               c_pack       LIKE lips-mtart VALUE 'VERP',
               c_a(1)            VALUE 'A',
               c_b(1)            VALUE 'B',
               c_c(1)            VALUE 'C',
               c_yes(1)          VALUE 'X',
               c_no(1)           VALUE ' '.
    Selection screen                                                    
    standard report select options block
    SELECTION-SCREEN BEGIN OF BLOCK a WITH FRAME TITLE text-002.
    SELECT-OPTIONS:
      s_wadat FOR likp-wadat NO-EXTENSION OBLIGATORY.  " Goods Issue Date
    *parameters:                                           "TR01-
    p_vstel like tvst-vstel obligatory. " Shipping Point "TR01-
    SELECT-OPTIONS:                                             "TR01+
      p_vstel FOR tvst-vstel.            " Shipping Point  "TR01+
    SELECT-OPTIONS:
      s_lfart FOR likp-lfart,            " Delivery type
      s_lgtor FOR t30b-lgtor,            " Door selection
      s_exidv FOR vekp-exidv,            " Handling Unit
      s_vbeln FOR likp-vbeln,            " Delivery            "MB01-+
      s_lfdat FOR likp-lfdat.            " Delivery date
    PARAMETERS:
      p_exdata AS CHECKBOX.              " Show extra columns flag
    SELECTION-SCREEN END OF BLOCK a.
    van/pallet specific select options block
    SELECTION-SCREEN BEGIN OF BLOCK b WITH FRAME TITLE text-001.
    SELECT-OPTIONS:
      s_palno FOR zpallettr-zpallet_no, " no-extension,
      s_vanno FOR zvantr-zvan_no.       " no-extension.
    SELECT-OPTIONS:
      s_deppnt FOR zpallettr-zdep_point,                        "Jvdm01
      s_tplst  FOR vttk-tplst.                                  "MB01
    SELECTION-SCREEN END OF BLOCK b.
    MB01 - START - Display variant
    SELECTION-SCREEN BEGIN OF BLOCK c WITH FRAME TITLE text-019.
    PARAMETERS: p_vari LIKE disvariant-variant.
    SELECTION-SCREEN END OF BLOCK c.
    MB01 - END
    Value Request Events                                                
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_palno-low.
      CLEAR: number_range, w_number .
      REFRESH number_range.
    select numbers and display pop up screen for selection
      PERFORM select_pal_nos.
      s_palno-low = w_number.
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_palno-high.
      CLEAR: number_range, w_number .
      REFRESH number_range.
    select numbers and display pop up screen for selection
      PERFORM select_pal_nos.
      s_palno-high = w_number.
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_vanno-low.
      CLEAR: number_range, w_number .
      REFRESH number_range.
    select numbers and display pop up screen for selection
      PERFORM select_van_nos.
      s_vanno-low = w_number.
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_vanno-high.
      CLEAR: number_range, w_number .
      REFRESH number_range.
    select numbers and display pop up screen for selection
      PERFORM select_van_nos.
      s_vanno-high = w_number.
    MB01 - START - display variant
    F4-Help for variant
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_vari.
      PERFORM f4_for_variant.
    MB01 - END
    At Selection Screen                                                 
    AT SELECTION-SCREEN.
      PERFORM validate_selections.
    Initialization                                                      
    INITIALIZATION.
    MB01 - START INSERT
    1.  Transportation planning point
    Import transportation planning point from user parameters and
    populate
    select option.
      GET PARAMETER ID 'TDP' FIELD w_tplst.
      MOVE: 'I'      TO s_tplst-sign,
             'EQ'     TO s_tplst-option,
             w_tplst TO s_tplst-low.
      APPEND s_tplst.
    2.  Display variant
      CLEAR s_variant.
      s_variant-report = sy-repid.
    Get default variant
    s_def_variante = s_variant.
      CALL FUNCTION 'REUSE_ALV_VARIANT_DEFAULT_GET'
           EXPORTING
                i_save     = 'A'
           CHANGING
                cs_variant = s_variant
           EXCEPTIONS
                not_found  = 2.
      IF sy-subrc = 0.
        p_vari = s_variant-variant.
      ENDIF.
    MB01 - END INSERT
    Start of selection                                                  
    START-OF-SELECTION.
    clear all data tables
      CLEAR: t_likp,
            it_likp,
             t_lips,
             t_vbuk,
             t_vbup,
             t_vepo,
             t_vantr,
             t_pallettr,
             w_likp,
             w_lips,
             w_vbuk,
             w_vbup,
             w_vepo,
             w_vekp.
      REFRESH: t_likp,
              it_likp,
               t_lips,
               t_vbuk,
               t_vbup,
               t_vepo,
               t_vantr,
               t_pallettr.
    select data for ALV
    due to different input parameters being used, to streamline the data
    selection process, different selection methods are required
      IF NOT s_vanno IS INITIAL
      OR NOT s_palno IS INITIAL
      OR NOT s_deppnt IS INITIAL.                               "Jvdm01
      if selecting by van/pallet number, need to select the data from the
      handling unit upwards to delivery
        PERFORM select_data_up.
      ELSE.
      otherwise the data can be selected from the delivery downwards
        PERFORM select_data_down.
      ENDIF.
    End of selection                                                    
    END-OF-SELECTION.
    call hierarchical ALV display function module
      CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
           EXPORTING
                i_callback_program       = 'ZWMR_PICK_STATUS_REPORT'
                i_callback_pf_status_set = 'SET_STATUS'
                i_callback_user_command =
                   'USER_COMMAND' "custom gui status form
                is_layout                = g_layout  "user command form
                it_fieldcat              = gt_fieldcat
                it_sort                  = g_sort
                i_save                   = 'X'                  "MB01+
                is_variant               = s_variant
                it_events                = gt_events
                i_tabname_header         = 't_disp_head'
                i_tabname_item           = 't_disp_tab'
                i_structure_name_header  = 'ZPICKHEAD'
                i_structure_name_item    = 'ZPICKDISP'
                is_keyinfo               = g_keyinfo
           TABLES
                t_outtab_header          = t_disp_head
                t_outtab_item            = t_disp_tab.
      IF sy-subrc <> 0.
        MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
                WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
      ENDIF.
                                FORMS                                   
    Includes inserted by Screen Painter Wizard. DO NOT CHANGE THIS LINE!
    INCLUDE zwmr_pick_o01.
      INCLUDE zwmr_pick_status_reporto01 .
    INCLUDE zwmr_pick_i01.
      INCLUDE zwmr_pick_status_reporti01 .
    INCLUDE zwmr_pick_f01.
      INCLUDE zwmr_pick_status_reportf01 .
    *&      Form  select_pal_nos
          select pallet numbers for search help
    FORM select_pal_nos.
      DATA: BEGIN OF t_palno OCCURS 0,
              zpallet_no LIKE zpallettr-zpallet_no,
            END OF t_palno.
    select all available pallet numbers
      SELECT DISTINCT zpallet_no FROM zpallettr
                      INTO CORRESPONDING FIELDS OF TABLE t_palno.
      LOOP AT t_palno.
      get pallet id
        SELECT SINGLE zpallet_id FROM zpallettr
                      INTO number_range-id
                      WHERE zpallet_no = t_palno-zpallet_no.
      get pallet description
        SELECT SINGLE zdesc FROM zpalletmd
                      INTO number_range-desc
                      WHERE zpallet_id = number_range-id.
        number_range-num = t_palno-zpallet_no.
      append to search help table
        APPEND number_range.
      ENDLOOP.
    call pop up dialog box
      CALL SCREEN 0100 STARTING AT 5 5.
    ENDFORM.                    " select_pal_nos
    *&      Form  select_van_nos
          select van numbers for search help
    FORM select_van_nos.
      DATA: BEGIN OF t_vanno OCCURS 0,
              zvan_no LIKE zvantr-zvan_no,
            END OF t_vanno.
    select available van numbers
      SELECT DISTINCT zvan_no FROM zvantr
                      INTO CORRESPONDING FIELDS OF TABLE t_vanno.
      LOOP AT t_vanno.
      select van id
        SELECT SINGLE zvan_id FROM zvantr
                      INTO number_range-id
                      WHERE zvan_no = t_vanno-zvan_no.
      select van description (maintained in pallet tables)
        SELECT SINGLE zdesc FROM zpalletmd
                      INTO number_range-desc
                      WHERE zpallet_id = number_range-id.
        number_range-num = t_vanno-zvan_no.
      append to search help table
        APPEND number_range.
      ENDLOOP.
    call pop up dialog box
      CALL SCREEN 0100 STARTING AT 5 5.
    ENDFORM.                    " select_van_nos
    *&      Form  select_data_down
          select data if selecting from delivery down
    FORM select_data_down.
    select all deliveries from LIKP that fulfill selection criteria
    Start SU01 optmization changes
    SELECT vbeln vstel lgtor route wadat                      "RM050906
      SELECT vbeln vstel lgtor route wadat
             zzroute2lgtor zz2route zzexproute zzroute2 anzpk      "MB01-+
               FROM likp INTO CORRESPONDING FIELDS OF TABLE it_likp"MB01-+
                         WHERE vbeln IN s_vbeln
                         AND   vstel IN p_vstel
                         AND   lfart IN s_lfart
                         AND   wadat IN s_wadat
                         AND   lfdat IN s_lfdat                    "MB01+
                         AND
                 ( lgtor IN s_lgtor OR zzroute2lgtor IN s_lgtor ) ."MB01+
      IF sy-subrc NE 0.
      no data found
        MESSAGE i007.
        EXIT.
      ENDIF.
    IF NOT t_likp[] IS INITIAL.                             "SUM
      IF NOT it_likp[] IS INITIAL.
        SORT it_likp BY vbeln.                                  "SUM
      select sales document headers from VBUK
        SELECT vbeln wbstk kostk
                    FROM vbuk INTO TABLE it_vbuk
                     FOR ALL ENTRIES IN it_likp                "SUM
                     WHERE vbeln EQ it_likp-vbeln.             "SUM
        SORT it_vbuk BY vbeln.
      select all relevant delivery items from LIPS
        SELECT vbeln posnr pstyv matnr charg
                    FROM lips INTO TABLE it_lips
                      FOR ALL ENTRIES IN it_likp
                      WHERE vbeln EQ it_likp-vbeln
                      AND   pckpf NE 'B'           "cannot be packed  "AS05
                    AND   pstyv NE 'ZPAC'                           "AS05
                    AND   pstyv NE 'ZGDP'                    "TR02+ "AS05
                      AND   lfimg GT 0.                         "TR01+
      ENDIF.
      IF NOT it_lips[] IS INITIAL.
      select all sales document line items from VBUP
        SORT it_lips BY vbeln posnr.                      "SUM
        SELECT vbeln posnr lvsta
                    FROM vbup INTO TABLE it_vbup
                      FOR ALL ENTRIES IN it_lips
                      WHERE vbeln EQ it_lips-vbeln
                      AND   posnr = it_lips-posnr.
        SORT it_vbup BY vbeln posnr.
      select corresponding handling unit ID's (venum)
    TR03 Replace
    start
       select * from vepo appending corresponding fields of table t_vepo
                     for all entries in t_lips
                     where vbeln = t_lips-vbeln
                     and   posnr = t_lips-posnr
                     and   matnr = t_lips-matnr
                     and   charg = t_lips-charg.
       SELECT vepoVENUM vepoVEPOS vepovbeln vepoposnr
                     FROM vepo as vepo
                     INNER JOIN vekp as vekp ON vepovenum = vekpvenum
                     APPENDING corresponding fields of table it_vepo
                     FOR ALL ENTRIES IN it_lips
                     WHERE vepo~vbeln = it_lips-vbeln
                     AND   vepo~posnr = it_lips-posnr
                     AND   vepo~matnr = it_lips-matnr
                     AND   vepo~charg = it_lips-charg
                     AND   vekp~exidv IN s_exidv.
        SELECT venum vepos vbeln posnr
                      FROM vepo INTO TABLE it_vepo2
                      FOR ALL ENTRIES IN it_lips
                      WHERE vbeln = it_lips-vbeln
                      AND   posnr = it_lips-posnr
                      AND   matnr = it_lips-matnr
                      AND   charg = it_lips-charg.
        SORT it_vepo2 BY venum vepos.
    *{   INSERT         UKMK900355                                        1
      Ice-multis: replace lower-level HUs with highest level       " AS01
        PERFORM replace_highest_hu.                             " AS01
    *}   INSERT
    Start of changes by ANV SR#11523
    MB01 - extract shipment header as well to populate leg indicator
    Therefore, join vttp with vttk
    Limit as well by transportation planning point
        SELECT vttptknum vttptpnum vttpvbeln vttklaufk
                      FROM vttp INNER JOIN vttk
                      ON vttptknum = vttktknum
                      INTO  TABLE it_vttp
                      FOR ALL ENTRIES IN it_lips
                      WHERE vttp~vbeln = it_lips-vbeln
                      AND   vttk~tplst IN s_tplst.
    MB01 - END
    End of changes by ANV SR#11523
        IF NOT it_vepo2[] IS INITIAL.
          SELECT venum exidv
                        FROM vekp INTO TABLE it_vepo1
                        FOR ALL ENTRIES IN it_vepo2
                        WHERE venum = it_vepo2-venum
                        AND   exidv IN s_exidv.
        ENDIF.
        SORT it_vepo1 BY venum.
        CLEAR: w_vepo, it_vepo.
        LOOP AT it_vepo1.
          READ TABLE it_vepo2 WITH KEY venum = it_vepo1-venum.
          IF sy-subrc = 0.
            it_vepo2-exidv = it_vepo1-exidv.
            MODIFY it_vepo2 TRANSPORTING exidv
               WHERE venum = it_vepo1-venum .
          ENDIF.
        ENDLOOP.
        DELETE it_vepo2 WHERE exidv IS initial.
        it_vepo[] = it_vepo2[].
    TR03 Replace end
      ENDIF.
    build process table
      PERFORM move_to_table.
    ENDFORM.   "select_data_down
    *&      Form  select_data_up
          select data if selecting from van/pallet up
    FORM select_data_up.
      IF NOT s_vanno IS INITIAL.
      if van then select van numbers and hence pallet numbers
        SELECT * FROM zvantr INTO TABLE t_vantr
                              WHERE zvan_no IN s_vanno.
                            and   vstel   eq p_vstel."TR01-
        IF NOT t_vantr[] IS INITIAL.
          SORT t_vantr BY zvan_id zvan_no vstel zpallet_no.  "SUM
          SELECT * FROM zpallettr INTO TABLE t_pallettr
                                  FOR ALL ENTRIES IN t_vantr
                                  WHERE zpallet_no EQ t_vantr-zpallet_no
                                    AND zdep_point IN s_deppnt. "Jvdm01
                                and   vstel      eq p_vstel."TR01-
        ENDIF.
      ELSE.
      otherwise can get pallet numbers directly
        SELECT * FROM zpallettr INTO TABLE t_pallettr
                                WHERE zpallet_no IN s_palno
                                  AND zdep_point IN s_deppnt.   "Jvdm01
                              and   vstel      eq p_vstel."TR01-
      ENDIF.
      IF NOT t_pallettr[] IS INITIAL.
      from the pallet nos. we can select the handling units
        SORT t_pallettr BY zpallet_id zpallet_no vstel exidv.   "SUM
        SELECT * FROM vekp INTO TABLE t_vekp
                           FOR ALL ENTRIES IN t_pallettr
                           WHERE exidv EQ t_pallettr-exidv
                           AND   exidv NE space
                           AND   exidv IN s_exidv               "TR03+
                           AND ( exida = 'E'                    "TR01+
                           OR    exida = 'F' ).                 "TR01+
      ENDIF.
      SORT t_vekp BY venum.                                    "SUM
      IF NOT t_vekp[] IS INITIAL.
      build vbeln range from t_vekp.
        LOOP AT t_vekp.
          r_del-sign = 'I'.
          r_del-option = 'EQ'.
          r_del-low = t_vekp-vpobjkey.
          APPEND r_del.
        ENDLOOP.
      select all deliveries from LIKP that correspond to HU's
       SELECT * FROM likp INTO TABLE t_likp
                          WHERE vbeln IN r_del
                          AND   wadat IN s_wadat
                          AND   lfart IN s_lfart.
    ENDIF.
    MB01- START
       SELECT vbeln lgtor route wadat
                    FROM likp INTO TABLE it_likp
                        WHERE vbeln IN r_del
                        AND   wadat IN s_wadat
                        AND   lfart IN s_lfart.
        SELECT vbeln vstel lgtor route wadat
               zzroute2lgtor zz2route zzexproute zzroute2 anzpk "MB01-+
                 FROM likp INTO CORRESPONDING FIELDS OF TABLE it_likp
                           WHERE vbeln IN r_del
                           AND   lfart IN s_lfart
                           AND   wadat IN s_wadat               "MB01-+
                           AND   lfdat IN s_lfdat.              "MB01+
    MB01- END
      ENDIF.
      IF NOT it_likp[] IS INITIAL.
        SORT it_likp BY vbeln .                                   "SUM
      select sales document headers from VBUK
       SELECT * FROM vbuk INTO TABLE t_vbuk
                     FOR ALL ENTRIES IN t_likp
                     WHERE vbeln EQ t_likp-vbeln.
        SELECT vbeln wbstk kostk
                  FROM vbuk INTO TABLE it_vbuk
                     FOR ALL ENTRIES IN it_likp
                     WHERE vbeln EQ it_likp-vbeln.
        SORT it_vbuk BY vbeln.                                   "SUM
      select all relevant delivery items from LIPS
       SELECT * FROM lips INTO TABLE t_lips
                     FOR ALL ENTRIES IN t_likp
                     WHERE vbeln EQ t_likp-vbeln
                     AND   pstyv NE 'ZPAC'
                     AND   pstyv NE 'ZGDP'                     "TR02+
                     AND   lfimg GT 0.                         "TR01+
        SELECT vbeln posnr pstyv matnr charg
                          FROM lips INTO TABLE it_lips
                          FOR ALL ENTRIES IN it_likp
                          WHERE vbeln EQ it_likp-vbeln
                          AND   pckpf NE 'B'       "cannot be packed  "AS05
                        AND   pstyv NE 'ZPAC'                       "AS05
                        AND   pstyv NE 'ZGDP'                "TR02+ "AS05
                          AND   lfimg GT 0.                     "TR01+
      ENDIF.
      IF NOT it_lips[] IS INITIAL.
        SORT it_lips BY vbeln posnr.                              "SUM
      select all sales document line items from VBUP
       SELECT * FROM vbup INTO TABLE t_vbup
                     FOR ALL ENTRIES IN t_lips
                     WHERE vbeln EQ t_lips-vbeln
                     AND   posnr = t_lips-posnr.
    Start of changes by ANV SR#11523
    MB01 - START
    join vttp with vttk to obtain leg indicator
       SELECT tknum tpnum vbeln
                     FROM vttp INTO TABLE it_vttp
                     FOR ALL ENTRIES IN it_lips
                     WHERE vbeln = it_lips-vbeln.
        SELECT vttptknum vttptpnum vttpvbeln vttklaufk
                      FROM vttp INNER JOIN vttk
                      ON vttptknum = vttktknum
                      INTO  TABLE it_vttp
                      FOR ALL ENTRIES IN it_lips
                      WHERE vttp~vbeln = it_lips-vbeln
                      AND   vttk~tplst IN s_tplst.
    MB01 - END
    End of changes by ANV SR#11523
        SELECT vbeln posnr lvsta
                    FROM vbup INTO TABLE it_vbup
                    FOR ALL ENTRIES IN it_lips
                      WHERE vbeln EQ it_lips-vbeln
                      AND   posnr = it_lips-posnr.
        SORT t_vbup BY vbeln posnr.                                "SUM
      select corresponding handling unit ID's (venum)
       SELECT * FROM vepo APPENDING CORRESPONDING FIELDS OF TABLE t_vepo
                     FOR ALL ENTRIES IN t_lips
                     WHERE vbeln = t_lips-vbeln
                     AND   posnr = t_lips-posnr
                     AND   matnr = t_lips-matnr
                     AND   charg = t_lips-charg.
        SELECT venum vepos vbeln posnr
        FROM vepo APPENDING CORRESPONDING FIELDS OF TABLE it_vepo
                         FOR ALL ENTRIES IN it_lips
                         WHERE vbeln = it_lips-vbeln
                         AND   posnr = it_lips-posnr
                         AND   matnr = it_lips-matnr
                         AND   charg = it_lips-charg.
    *{   INSERT         UKMK900355                                        1
        it_vepo2[] = it_vepo[].                                 " DS01
        PERFORM replace_highest_hu.                             " DS01
        it_vepo[] = it_vepo2[].                                 " DS01
    *}   INSERT
      ENDIF.
    build process table
      PERFORM move_to_table.
    ENDFORM.   "select_data_up
    *&      Form  move_to_table
          move data to processing table
    FORM move_to_table.
      LOOP AT it_vepo.
        CLEAR t_data_tab.
      delivery lines.
        CLEAR w_lips.
        READ TABLE it_lips WITH KEY vbeln = it_vepo-vbeln
                                   posnr = it_vepo-posnr
                                   INTO w_lips BINARY SEARCH.     "SUM
        MOVE-CORRESPONDING w_lips TO t_data_tab.
      sales document line items
        CLEAR w_vbup.
        READ TABLE it_vbup WITH KEY vbeln = it_vepo-vbeln
                                   posnr = it_vepo-posnr
                                   INTO w_vbup BINARY SEARCH.     "SUM
      if w_vbup-kosta = space.                   "TR01-
        not relevant for picking
        delete t_vepo.                           "TR01-
        continue.                                "TR01-
      else.                                      "TR01-
        MOVE-CORRESPONDING w_vbup TO t_data_tab.
      endif.                                     "TR01-
      sales doc header
        CLEAR w_vbuk.
        READ TABLE it_vbuk WITH KEY vbeln = it_vepo-vbeln
                               INTO w_vbuk   BINARY SEARCH.       "SUM
        MOVE-CORRESPONDING w_vbuk TO t_data_tab.
      delivery header
        CLEAR w_likp.
        READ TABLE it_likp WITH KEY vbeln = it_vepo-vbeln
                               INTO w_likp BINARY SEARCH.         "SUM
        MOVE-CORRESPONDING w_likp TO t_data_tab.
    MB01 - START
      DATA: w_routetype TYPE i. "0=non-global,1=1st route,2=2nd
    route,3=both
    At this point move DOOR2 if it falls within the global route scenario
    and the door2 is satisfies the selection criteria for door
    1.   Does delivery fall within global route scenario
        CLEAR w_routetype.
        IF  w_likp-zz2route = 'Y' .
    1.a. First route - does door1 satisfy the selection criteria
          IF w_likp-lgtor IN s_lgtor.
            w_routetype = 1.
            MOVE w_likp-zzexproute TO t_data_tab-route.
    1.b. Second route - does door2 satisfy the selection criteria
          ELSEIF w_likp-zzroute2lgtor IN s_lgtor.
      here we need to move door2 to lgtor
            w_routetype = 2.
            MOVE w_likp-zzroute2lgtor TO t_data_tab-lgtor.
            MOVE w_likp-zzroute2 TO t_data_tab-route.
          ENDIF.
    If both routes satsify the criteria, append for 2nd leg  ***REVISIT!
          IF w_likp-lgtor IN s_lgtor AND w_likp-zzroute2lgtor IN s_lgtor.
            w_routetype = 3.
          ENDIF.
        ENDIF.
    MB01 - END
    Start of changes by ANV SR#11523
    MB01 - If the delivery falls within the global route scenario... need
    to select either preliminary shipment leg OR subsequent leg
    when laufk= 1 (prelim) and linked to route1, if laufk = 2 (subseq) &
    linked to route2
      Shipment Number
        SORT it_vttp BY vbeln laufk.
        CLEAR w_vttp.
        CASE w_routetype.
          WHEN 0.
            READ TABLE it_vttp WITH KEY vbeln = it_vepo-vbeln
                                   INTO w_vttp BINARY SEARCH.
          WHEN 1.
            READ TABLE it_vttp WITH KEY vbeln = it_vepo-vbeln
                                        laufk  = '1'
                                   INTO w_vttp BINARY SEARCH.
          WHEN 2.
            READ TABLE it_vttp WITH KEY vbeln = it_vepo-vbeln
                                        laufk  = '3'
                                   INTO w_vttp BINARY SEARCH.
          WHEN 3.  "REVISIT
        ENDCASE.
        MOVE w_vttp-tknum TO t_data_tab-tknum.
    MB01 - END
    End of changes by ANV SR#11523
      select handling unit info using vepo entry
        CLEAR w_vekp.
        IF t_vekp[] IS INITIAL.
          SELECT SINGLE * FROM vekp INTO w_vekp
                                    WHERE venum = it_vepo-venum.
        ELSE.
          READ TABLE t_vekp WITH KEY venum = it_vepo-venum
                                     INTO w_vekp  BINARY SEARCH.     "SUM
          IF sy-subrc NE 0.
            SELECT SINGLE * FROM vekp INTO w_vekp
                            WHERE venum = t_vepo-venum.
          ENDIF.
        ENDIF.
        MOVE-CORRESPONDING w_vekp TO t_data_tab.
    *{   INSERT         UKMK900355                                        2
      WM status for HU                                              "AS03
        SELECT SINGLE * FROM zhu_to_link WHERE lgnum EQ w_vekp-lgnum"AS03
                                         AND   exidv EQ w_vekp-exidv."AS03
        IF  sy-subrc EQ 0.                                      "AS03
          IF zhu_to_link-zpick_comp EQ space.                   "AS03
            t_data_tab-lvsta = 'B'.                             "AS03

  • HOW TO DISPLAY MY OWN PF STATUS  IN ALV LIST DISPLAY

    Hi All,
    i am developing one program in this program i am displaying output by using alv list display. after displaying the out SAP predefined pf status is coming. here i need my own pf status. any body can send me the sample code ir modify my code if possible.
    i am sending my code below.
    report zmahi6.
    type-pools : slis.
    tables : zuser_secobjects.
    data : it_secobjects like zuser_secobjects occurs 0 with header line.
    data : i_field type slis_t_fieldcat_alv with header line.
    data : w_field like line of i_field.
    data : i_sort type slis_t_sortinfo_alv.
    data : w_sort like line of i_sort.
    data : it_filt1 type slis_t_filter_alv with header line.
    data:
    i_tabname type tabname,
    i_repid like sy-repid,
    is_lout type slis_layout_alv.
    data : chk_box type slis_fieldname.
    selection-screen: begin of block b1 with frame title text-t01.
    parameters : p_appln type zuser_secobjects-appln.
    parameters : p_user type usr02-bname, "zuser_secobjects-appln_user,
    p_partnr type zuser_secobjects-appln_partner,
    p_ptype type zuser_secobjects-partner_type default '02',
    p_upostn type zuser_secobjects-user_position,
    p_sdate like likp-erdat default sy-datum,
    "type zuser_secobjects-start_date
    p_edate(10) default '12/31/9999',
    type zuser_secobjects-end_date,
    p_revnum type zuser_secobjects-revnum,
    p_cted type zuser_secobjects-created_by,
    p_cdate type zuser_secobjects-creation_date,
    p_ctime type zuser_secobjects-creation_time,
    p_chnby type zuser_secobjects-changed_by,
    p_cdate1 type zuser_secobjects-changed_date,
    p_ctime1 type zuser_secobjects-changed_time.
    selection-screen: end of block b1.
    start-of-selection.
      perform get_data.
      check sy-subrc eq 0.
      set pf-status 'ZMAHEE'.
      perform prepare_fieldcatalog.
      perform alv_list_display.
    *& Form PREPARE_FIELDCATALOG
    text
    --> p1 text
    <-- p2 text
    form prepare_fieldcatalog.
      clear: w_field,i_field.
      refresh:i_field.
      i_field-key = 'X'.
      i_field-col_pos = 1.
      i_field-ddictxt = 'S'.
      i_field-seltext_s = '@11@'.
      i_field-checkbox = 'X'.
      i_field-input = 'X'.
      i_field-fieldname = 'HEADER'.
      i_field-outputlen = 0.
      append i_field.
      clear i_field.
      w_field-fieldname = 'APPLN'.
      w_field-tabname = 'IT_SECOBJECTS'.
      w_field-seltext_l = text-m01.
      w_field-outputlen = '10'.
      w_field-col_pos = 1.
      append w_field to i_field.
      clear w_field.
      w_field-fieldname = 'APPLN_USER'.
      w_field-tabname = 'IT_SECOBJECTS'.
      w_field-just = 'C'.
      w_field-seltext_l = text-m02.
      w_field-outputlen = '7'.
      w_field-col_pos = 2.
      append w_field to i_field.
      clear w_field.
    endform. " PREPARE_FIELDCATALOG
    *form pf_status_set using rt_extab type slis_t_extab.
    set pf-status '0001'.
    *endform.
    *& Form ALV_LIST_DISPLAY
    text
    --> p1 text
    <-- p2 text
    form alv_list_display.
      call function 'REUSE_ALV_LIST_DISPLAY'
      exporting
      i_callback_program = i_repid
      i_callback_pf_status_set = 'PF_STATUS_SET'
      i_callback_user_comomand = 'USER_COMMAND'
      is_layout = is_lout
      it_fieldcat = i_field[]
    it_sort = i_sort
    it_events = it_evts[]
      tables
      t_outtab = it_secobjects.
    endform. " ALV_LIST_DISPLAY
    *& Form GET_DATA
    text
    --> p1 text
    <-- p2 text
    form get_data.
      select * from zuser_secobjects
      into table it_secobjects.
    endform. " GET_DATA
    thanks,
    maheedhar.t

    Follow this steps.
    I ahve done it once and hope wuld work for you as well.
    Go to SE80. Open a a standard ABAP program - SAPLKKBL. diasplay object.
    This program has many standard GUI status. Copy the one which suits you the best. May be any one standars status. Right click it and copy to your custom report. Now open your Z-Program in SE80. You will see the GUI status and when you open it you see the name of the status that you have copied from.
    Now you can go and do any modifications in the screen.
    Remember you have to use the same status in the program as well.
    Please check this piece of code.
    call the ABAP list viewer                                            *
    FORM list_display TABLES a_output.
      pgm = disvariant-report = sy-repid.
      disvariant-variant = variant.
    call list viewer
      CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
        EXPORTING
          i_callback_program       = pgm
          i_callback_pf_status_set = 'SET_PF_STATUS'
          it_fieldcat              = fieldcat
          is_variant               = disvariant
          is_layout                = layout
          is_print                 = print
          i_save                   = 'A'
          it_events                = eventcat
          it_sort                  = sortcat
          i_callback_user_command  = 'USER_COMMAND'
        TABLES
          t_outtab                 = a_output
        EXCEPTIONS
          program_error            = 1
          OTHERS                   = 2.
    ENDFORM.                    "LIST_DISPLAY
    FORM SET_PF_STATUS *
    FORM set_pf_status USING extab TYPE slis_t_extab.
      SET PF-STATUS 'STATUS1'.
    ENDFORM.                    "set_pf_status
    FORM USER_COMMAND *
    FORM user_command USING ucomm LIKE sy-ucomm
    selfield TYPE slis_selfield.
      DATA t_difference TYPE i.
      CASE ucomm.
        WHEN 'ENT1'.<----Function code
    D0 your processing.
      ENDCASE.
      selfield-refresh = 'X'.
    ENDFORM.                    "user_command
    HOpe this helps.
    Shreekant

  • Variant in ALV Reports

    hello all
    can anybody tell how to use variant in ALV Reports

    Look at the following example.
    report z_rock_ALV_example.
        * D-A-T-A D-E-C-L-A-R-A-T-I-O-N-S *
    tables: sflight.
              o
                    +
                          # TYPE-POOLS Definition
    **Includes the types and constants of a type group. Since the types and
    *constants specified in a type group have global validity, you cannot
    *use the statement within a FORM or FUNCTION.
    type-pools: slis.
    PARAMETERS: P_VARI LIKE DISVARIANT-VARIANT.
              o
                    +
                          # ALV variables
                    +
                                      o Field Catalog structure
    data: ls_fieldcat type slis_fieldcat_alv, "Field Catalog list
              o
                    +
                                * Field Catalog table
    gt_fieldcat type slis_t_fieldcat_alv, "Field Catalog
              o
                    +
                                * Layout ( How you would like to see the output )
    gs_layout type slis_layout_alv, "List Layout
              o
                    +
                          # Report name
    g_repid like sy-repid,
    g_save(1) type c,
    g_exit(1) type c,
    g_variant like disvariant,
    gx_variant like disvariant.
              o
                    +
                          # Flight Info Internal table
    data: lt_sflight like sflight occurs 0 with header line.
        * C-O-N-S-T-A-N-T-S *
        * S-E-L-E-C-T-I-O-N S-C-R-E-E-N *
    selection-screen begin of block a with frame title text-100.
    select-options: s_carrid for sflight-carrid,
    s_connid for sflight-connid,
    s_fldate for sflight-fldate default sy-datum.
    selection-screen end of block a .
        * I-N-I-T-I-A-L-I-Z-A-T-I-O-N *
    initialization.
    g_repid = sy-repid.
              o
                    +
                          # Fill ALV field catalog
    perform initialize_fieldcat using gt_fieldcat[].
              o
                    +
                                * Build Events
        * perform build_eventtab using gt_events[].
              o
                    +
                          # Read the default variant
    perform initialize_variant.
        * A-T S-E-L-E-C-T-I-O-N S-C-R-E-E-N *
    at selection-screen on value-request for p_vari.
              o
                    +
                          # Display all existing variants
    call function 'REUSE_ALV_VARIANT_F4'
    exporting
    is_variant = g_variant
    i_save = g_save
    importing
    e_exit = g_exit
    es_variant = gx_variant
    exceptions
    not_found = 2.
    if sy-subrc = 2.
    message id sy-msgid type 'S' number sy-msgno
    with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
    else.
    if g_exit = space.
    p_vari = gx_variant-variant.
    endif.
    endif.
        * S-T-A-R-T O-F S-E-L-E-C-T-I-O-N *
    start-of-selection.
              o
                    +
                          # Read Flight information.
    perform read_flight_info.
              o
                    +
                          # Fill ALV field catalog and display report.
    if not lt_sflight[] is initial.
    perform dislay_alv_report.
    endif.
    ======================================================================
        * FORMS / SUB ROUTINES *
    *======================================================================
    *& Form initialize_fieldcat
        * text
        * -->P_GT_FIELDCAT[] text
    form initialize_fieldcat using l_fieldcat type slis_t_fieldcat_alv.
    clear ls_fieldcat.
        * Air line
    ls_fieldcat-fieldname = 'CARRID'.
    ls_fieldcat-key = 'X'.
    ls_fieldcat-col_pos = 1.
    ls_fieldcat-seltext_s = 'Airline'.
    ls_fieldcat-seltext_l = 'Airline'.
    append ls_fieldcat to l_fieldcat.
    clear ls_fieldcat.
        * Flight Number
    ls_fieldcat-fieldname = 'CONNID'.
    ls_fieldcat-key = 'X'.
    ls_fieldcat-col_pos = 2.
    ls_fieldcat-seltext_s = 'Flight Number'.
    ls_fieldcat-seltext_l = 'Flight Number'.
    append ls_fieldcat to l_fieldcat.
    clear ls_fieldcat.
        * Flight date
    ls_fieldcat-fieldname = 'FLDATE'.
    ls_fieldcat-key = 'X'.
    ls_fieldcat-col_pos = 3.
    ls_fieldcat-seltext_s = 'Flight date'.
    ls_fieldcat-seltext_l = 'Flight date'.
    append ls_fieldcat to l_fieldcat.
    clear ls_fieldcat.
        * Airfare
    ls_fieldcat-fieldname = 'PRICE'.
    ls_fieldcat-col_pos = 4.
    ls_fieldcat-do_sum = 'X'.
    ls_fieldcat-seltext_s = 'Airfare'.
    ls_fieldcat-seltext_l = 'Airfare'.
    append ls_fieldcat to l_fieldcat.
    clear ls_fieldcat.
        * Local Currency
    ls_fieldcat-fieldname = 'CURRENCY'.
    ls_fieldcat-col_pos = 5.
    ls_fieldcat-seltext_s = 'Local Currency'.
    ls_fieldcat-seltext_l = 'Local Currency'.
    append ls_fieldcat to l_fieldcat.
    clear ls_fieldcat.
        * Plane Type
    ls_fieldcat-fieldname = 'PLANETYPE'.
    ls_fieldcat-col_pos = 6.
    ls_fieldcat-seltext_s = 'Plane type'.
    ls_fieldcat-seltext_l = 'Plane type'.
    append ls_fieldcat to l_fieldcat.
    clear ls_fieldcat.
        * Maximum capacity
    ls_fieldcat-fieldname = 'SEATSMAX'.
    ls_fieldcat-col_pos = 7.
    ls_fieldcat-seltext_s = 'Max. seats'.
    ls_fieldcat-seltext_l = 'Max. seats'.
    append ls_fieldcat to l_fieldcat.
    clear ls_fieldcat.
        * Occupied seats
    ls_fieldcat-fieldname = 'SEATSOCC'.
    ls_fieldcat-col_pos = 8.
    ls_fieldcat-seltext_s = 'Seats occupied'.
    ls_fieldcat-seltext_l = 'Seats occupied'.
    append ls_fieldcat to l_fieldcat.
    clear ls_fieldcat.
        * Total
    ls_fieldcat-fieldname = 'PAYMENTSUM'.
    ls_fieldcat-col_pos = 9.
    ls_fieldcat-do_sum = 'X'.
    ls_fieldcat-seltext_s = 'Total amount'.
    ls_fieldcat-seltext_l = 'Total amount'.
    append ls_fieldcat to l_fieldcat.
    clear ls_fieldcat.
        * Total
    ls_fieldcat-fieldname = 'PAYMENTSUM'.
    ls_fieldcat-col_pos = 9.
    ls_fieldcat-do_sum = 'X'.
    ls_fieldcat-seltext_s = 'Total amount'.
    ls_fieldcat-seltext_l = 'Total amount'.
    append ls_fieldcat to l_fieldcat.
    clear ls_fieldcat.
        * Max. Capacity, Buss. Class
    ls_fieldcat-fieldname = 'SEATSMAX_B'.
    ls_fieldcat-col_pos = 10.
    ls_fieldcat-seltext_s = 'Max.Buss.class cap.'.
    ls_fieldcat-seltext_l = 'Max.Buss.class cap.'.
    append ls_fieldcat to l_fieldcat.
    clear ls_fieldcat.
        * Max. occupancy, Buss. Class
    ls_fieldcat-fieldname = 'SEATSOCC_B'.
    ls_fieldcat-col_pos = 11.
    ls_fieldcat-seltext_s = 'Max.Bus.CL.occupied'.
    ls_fieldcat-seltext_l = 'Max.Bus.CL.occupied'.
    append ls_fieldcat to l_fieldcat.
    clear ls_fieldcat.
        * Max. Capacity, First. Class
    ls_fieldcat-fieldname = 'SEATSMAX_F'.
    ls_fieldcat-col_pos = 12.
    ls_fieldcat-seltext_s = 'Max.Buss.class cap.'.
    ls_fieldcat-seltext_l = 'Max.Buss.class cap.'.
    append ls_fieldcat to l_fieldcat.
    clear ls_fieldcat.
        * Max. occupancy, First. Class
    ls_fieldcat-fieldname = 'SEATSOCC_F'.
    ls_fieldcat-col_pos = 13.
    ls_fieldcat-seltext_s = 'Max.Bus.CL.occupied'.
    ls_fieldcat-seltext_l = 'Max.Bus.CL.occupied'.
    append ls_fieldcat to l_fieldcat.
    clear ls_fieldcat.
    ENDFORM. " initialize_fieldcat
    *& Form read_flight_info
        * text
        * --> p1 text
        * <-- p2 text
    FORM read_flight_info .
    refresh lt_sflight.
    clear lt_sflight.
              o
                    +
                          # Read data from SFLIGHT table
    select *
    from SFLIGHT
    into table lt_sflight
    where carrid in s_carrid
    and connid in s_connid
    and fldate in s_fldate.
    if sy-subrc <> 0.
    message e208(00) with text-101.
    endif.
    ENDFORM. " read_flight_info
    *& Form dislay_alv_report
        * text
        * --> p1 text
        * <-- p2 text
    FORM dislay_alv_report .
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
        * I_INTERFACE_CHECK = ' '
        * I_BYPASSING_BUFFER =
        * I_BUFFER_ACTIVE = ' '
    I_CALLBACK_PROGRAM = g_repid
        * I_CALLBACK_PF_STATUS_SET = ' '
        * I_CALLBACK_USER_COMMAND = ' '
    I_STRUCTURE_NAME = 'sflight'
        * IS_LAYOUT =
    IT_FIELDCAT = gt_fieldcat
        * IT_EXCLUDING =
        * IT_SPECIAL_GROUPS =
        * IT_SORT =
        * IT_FILTER =
        * IS_SEL_HIDE =
    I_DEFAULT = 'X'
    I_SAVE = 'A'
    IS_VARIANT = GX_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
        * IMPORTING
        * E_EXIT_CAUSED_BY_CALLER =
        * ES_EXIT_CAUSED_BY_USER =
    TABLES
    T_OUTTAB = lt_sflight
    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. " dislay_alv_report
    *& Form initialize_variant
        * text
        * --> p1 text
        * <-- p2 text
    FORM initialize_variant .
    g_save = 'A'.
    clear g_variant.
    g_variant-report = g_repid.
    gx_variant = g_variant.
    call function 'REUSE_ALV_VARIANT_DEFAULT_GET'
    exporting
    i_save = g_save
    changing
    cs_variant = gx_variant
    exceptions
    not_found = 2.
    if sy-subrc = 0.
    p_vari = gx_variant-variant.
    endif.
    ENDFORM. " initialize_variant
    Regards,
    Rock.

  • Need help in interactive alv list

    hi,
    i  need document and simple Example prog for interactive alv list.If anybody have it kindly help me..
    thanks in advance,
    Kavitha.

    hi,
    Jus copy and paste the following code in SE38.
    *& This is an Interactive ALV report, where on line slection we can see
    *&  the secondry list
    REPORT  ZZ_22038_22098_002 NO STANDARD PAGE HEADING LINE-SIZE 650
    MESSAGE-ID ZZ_9838                      .
    TYPE-POOLS: SLIS.
    *type declaration for values from ekko
    TYPES: BEGIN OF I_EKKO,
           EBELN LIKE EKKO-EBELN,
           AEDAT LIKE EKKO-AEDAT,
           BUKRS LIKE EKKO-BUKRS,
           BSART LIKE EKKO-BSART,
           LIFNR LIKE EKKO-LIFNR,
           END OF I_EKKO.
    DATA: IT_EKKO TYPE STANDARD TABLE OF I_EKKO INITIAL SIZE 0,
          WA_EKKO TYPE I_EKKO.
    *type declaration for values from ekpo
    TYPES: BEGIN OF I_EKPO,
           EBELN LIKE EKPO-EBELN,
           EBELP LIKE EKPO-EBELP,
           MATNR LIKE EKPO-MATNR,
           MENGE LIKE EKPO-MENGE,
           MEINS LIKE EKPO-MEINS,
           NETPR LIKE EKPO-NETPR,
           END OF I_EKPO.
    DATA: IT_EKPO TYPE STANDARD TABLE OF I_EKPO INITIAL SIZE 0,
          WA_EKPO TYPE I_EKPO .
    *variable for Report ID
    DATA: V_REPID LIKE SY-REPID .
    *declaration for fieldcatalog
    DATA: I_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
          WA_FIELDCAT TYPE SLIS_FIELDCAT_ALV.
    DATA: IT_LISTHEADER TYPE SLIS_T_LISTHEADER.
    declaration for events table where user comand or set PF status will
    be defined
    DATA: V_EVENTS TYPE SLIS_T_EVENT,
          WA_EVENT TYPE SLIS_ALV_EVENT.
    declartion for layout
    DATA: ALV_LAYOUT TYPE SLIS_LAYOUT_ALV.
    declaration for variant(type of display we want)
    DATA: I_VARIANT TYPE DISVARIANT,
          I_VARIANT1 TYPE DISVARIANT,
          I_SAVE(1) TYPE C.
    *PARAMETERS : p_var TYPE disvariant-variant.
    *Title displayed when the alv list is displayed
    DATA:  I_TITLE_EKKO TYPE LVC_TITLE VALUE 'FIRST LIST DISPLAYED'.
    DATA:  I_TITLE_EKPO TYPE LVC_TITLE VALUE 'SECONDRY LIST DISPLAYED'.
    INITIALIZATION.
      V_REPID = SY-REPID.
      PERFORM BUILD_FIELDCATLOG.
      PERFORM EVENT_CALL.
      PERFORM POPULATE_EVENT.
    START-OF-SELECTION.
      PERFORM DATA_RETRIEVAL.
      PERFORM BUILD_LISTHEADER USING IT_LISTHEADER.
      PERFORM DISPLAY_ALV_REPORT.
    *&      Form  BUILD_FIELDCATLOG
          Fieldcatalog has all the field details from ekko
    FORM BUILD_FIELDCATLOG.
      WA_FIELDCAT-TABNAME = 'IT_EKKO'.
      WA_FIELDCAT-FIELDNAME = 'EBELN'.
      WA_FIELDCAT-SELTEXT_M = 'PO NO.'.
      APPEND WA_FIELDCAT TO I_FIELDCAT.
      CLEAR WA_FIELDCAT.
      WA_FIELDCAT-TABNAME = 'IT_EKKO'.
      WA_FIELDCAT-FIELDNAME = 'AEDAT'.
      WA_FIELDCAT-SELTEXT_M = 'DATE.'.
      APPEND WA_FIELDCAT TO I_FIELDCAT.
      CLEAR WA_FIELDCAT.
      WA_FIELDCAT-TABNAME = 'IT_EKKO'.
      WA_FIELDCAT-FIELDNAME = 'BUKRS'.
      WA_FIELDCAT-SELTEXT_M = 'COMPANY CODE'.
      APPEND WA_FIELDCAT TO I_FIELDCAT.
      CLEAR WA_FIELDCAT.
    WA_FIELDCAT-TABNAME = 'IT_EKKO'.
      WA_FIELDCAT-FIELDNAME = 'BUKRS'.
      WA_FIELDCAT-SELTEXT_M = 'DOCMENT TYPE'.
      APPEND WA_FIELDCAT TO I_FIELDCAT.
      CLEAR WA_FIELDCAT.
    WA_FIELDCAT-TABNAME = 'IT_EKKO'.
      WA_FIELDCAT-FIELDNAME = 'LIFNR'.
      WA_FIELDCAT-NO_OUT    = 'X'.
      WA_FIELDCAT-SELTEXT_M = 'VENDOR CODE'.
      APPEND WA_FIELDCAT TO I_FIELDCAT.
      CLEAR WA_FIELDCAT.
    ENDFORM.                    "BUILD_FIELDCATLOG
    *&      Form  EVENT_CALL
      we get all events - TOP OF PAGE or USER COMMAND in table v_events
    FORM EVENT_CALL.
      CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
       EXPORTING
         I_LIST_TYPE           = 0
       IMPORTING
         ET_EVENTS             = V_EVENTS
      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.                    "EVENT_CALL
    *&      Form  POPULATE_EVENT
         Events populated for TOP OF PAGE & USER COMAND
    FORM POPULATE_EVENT.
      READ TABLE V_EVENTS INTO WA_EVENT WITH KEY NAME = 'TOP_OF_PAGE'.
      IF SY-SUBRC EQ 0.
        WA_EVENT-FORM = 'TOP_OF_PAGE'.
        MODIFY V_EVENTS FROM WA_EVENT TRANSPORTING FORM WHERE NAME =
    WA_EVENT-FORM.
      ENDIF.
      READ TABLE V_EVENTS INTO WA_EVENT WITH KEY NAME = 'USER_COMMAND'.
      IF SY-SUBRC EQ 0.
        WA_EVENT-FORM = 'USER_COMMAND'.
        MODIFY V_EVENTS FROM WA_EVENT TRANSPORTING FORM WHERE NAME =
    WA_EVENT-NAME.
      ENDIF.
    ENDFORM.                    "POPULATE_EVENT
    *&      Form  data_retrieval
      retreiving values from the database table ekko
    FORM DATA_RETRIEVAL.
      SELECT EBELN AEDAT BUKRS BSART LIFNR FROM EKKO INTO TABLE IT_EKKO.
    ENDFORM.                    "data_retrieval
    *&      Form  bUild_listheader
          text
         -->I_LISTHEADEtext
    FORM BUILD_LISTHEADER USING I_LISTHEADER TYPE SLIS_T_LISTHEADER.
      DATA HLINE TYPE SLIS_LISTHEADER.
      HLINE-INFO = 'this is my first alv pgm'.
      HLINE-TYP = 'H'.
    ENDFORM.                    "build_listheader
    *&      Form  display_alv_report
          text
    FORM DISPLAY_ALV_REPORT.
      V_REPID = SY-REPID.
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
       EXPORTING
         I_CALLBACK_PROGRAM                = V_REPID
         I_CALLBACK_USER_COMMAND           = 'USER_COMMAND'
         I_CALLBACK_TOP_OF_PAGE            = 'TOP_OF_PAGE'
         I_GRID_TITLE                      = I_TITLE_EKKO
         IT_FIELDCAT                       = I_FIELDCAT[]
         I_SAVE                            = 'A'
         IT_EVENTS                         = V_EVENTS
        TABLES
          T_OUTTAB                          = IT_EKKO
      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  TOP_OF_PAGE
          text
    FORM TOP_OF_PAGE.
      CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
        EXPORTING
          IT_LIST_COMMENTARY       = IT_LISTHEADER
    ENDFORM.                    "TOP_OF_PAGE
    *&      Form  USER_COMMAND
          text
         -->R_UCOMM    text
         -->,          text
         -->RS_SLEFIELDtext
    FORM USER_COMMAND USING R_UCOMM LIKE SY-UCOMM
    RS_SELFIELD TYPE SLIS_SELFIELD.
      CASE R_UCOMM.
        WHEN '&IC1'.
          READ TABLE IT_EKKO INTO WA_EKKO INDEX RS_SELFIELD-TABINDEX.
          PERFORM BUILD_FIELDCATLOG_EKPO.
          PERFORM EVENT_CALL_EKPO.
          PERFORM POPULATE_EVENT_EKPO.
          PERFORM DATA_RETRIEVAL_EKPO.
          PERFORM BUILD_LISTHEADER_EKPO USING IT_LISTHEADER.
          PERFORM DISPLAY_ALV_EKPO.
      ENDCASE.
    ENDFORM.                    "user_command
    *&      Form  BUILD_FIELDCATLOG_EKPO
          text
    FORM BUILD_FIELDCATLOG_EKPO.
      WA_FIELDCAT-TABNAME = 'IT_EKPO'.
      WA_FIELDCAT-FIELDNAME = 'EBELN'.
      WA_FIELDCAT-SELTEXT_M = 'PO NO.'.
      APPEND WA_FIELDCAT TO I_FIELDCAT.
      CLEAR WA_FIELDCAT.
      WA_FIELDCAT-TABNAME = 'IT_EKPO'.
      WA_FIELDCAT-FIELDNAME = 'EBELP'.
      WA_FIELDCAT-SELTEXT_M = 'LINE NO'.
      APPEND WA_FIELDCAT TO I_FIELDCAT.
      CLEAR WA_FIELDCAT.
      WA_FIELDCAT-TABNAME = 'I_EKPO'.
      WA_FIELDCAT-FIELDNAME = 'MATNR'.
      WA_FIELDCAT-SELTEXT_M = 'MATERIAL NO.'.
      APPEND WA_FIELDCAT TO I_FIELDCAT.
      CLEAR WA_FIELDCAT.
    WA_FIELDCAT-TABNAME = 'I_EKPO'.
      WA_FIELDCAT-FIELDNAME = 'MENGE'.
      WA_FIELDCAT-SELTEXT_M = 'QUANTITY'.
      APPEND WA_FIELDCAT TO I_FIELDCAT.
      CLEAR WA_FIELDCAT.
    WA_FIELDCAT-TABNAME = 'I_EKPO'.
      WA_FIELDCAT-FIELDNAME = 'MEINS'.
      WA_FIELDCAT-SELTEXT_M = 'UOM'.
      APPEND WA_FIELDCAT TO I_FIELDCAT.
      CLEAR WA_FIELDCAT.
    WA_FIELDCAT-TABNAME = 'I_EKPO'.
      WA_FIELDCAT-FIELDNAME = 'NETPR'.
      WA_FIELDCAT-SELTEXT_M = 'PRICE'.
      APPEND WA_FIELDCAT TO I_FIELDCAT.
      CLEAR WA_FIELDCAT.
    ENDFORM.                    "BUILD_FIELDCATLOG_EKPO
    *&      Form  event_call_ekpo
      we get all events - TOP OF PAGE or USER COMMAND in table v_events
    FORM EVENT_CALL_EKPO.
      CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
       EXPORTING
         I_LIST_TYPE           = 0
       IMPORTING
         ET_EVENTS             = V_EVENTS
      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.                    "event_call_ekpo
    *&      Form  POPULATE_EVENT
           Events populated for TOP OF PAGE & USER COMAND
    FORM POPULATE_EVENT_EKPO.
      READ TABLE V_EVENTS INTO WA_EVENT WITH KEY NAME = 'TOP_OF_PAGE'.
      IF SY-SUBRC EQ 0.
        WA_EVENT-FORM = 'TOP_OF_PAGE'.
        MODIFY V_EVENTS FROM WA_EVENT TRANSPORTING FORM WHERE NAME =
    WA_EVENT-FORM.
      ENDIF.
      ENDFORM.                    "POPULATE_EVENT
    *&      Form  TOP_OF_PAGE
          text
    FORM F_TOP_OF_PAGE.
      CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
        EXPORTING
          IT_LIST_COMMENTARY       = IT_LISTHEADER
    ENDFORM.                    "TOP_OF_PAGE
    *&      Form  USER_COMMAND
          text
         -->R_UCOMM    text
         -->,          text
         -->RS_SLEFIELDtext
    *retreiving values from the database table ekko
    FORM DATA_RETRIEVAL_EKPO.
    SELECT EBELN EBELP MATNR MENGE MEINS NETPR FROM EKPO INTO TABLE IT_EKPO.
    ENDFORM.
    FORM BUILD_LISTHEADER_EKPO USING I_LISTHEADER TYPE SLIS_T_LISTHEADER.
    DATA: HLINE1 TYPE SLIS_LISTHEADER.
    HLINE1-TYP = 'H'.
    HLINE1-INFO = 'CHECKING PGM'.
    ENDFORM.
    FORM DISPLAY_ALV_EKPO.
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
       I_CALLBACK_PROGRAM                = V_REPID
       I_CALLBACK_TOP_OF_PAGE            = 'TOP_OF_PAGE'
       I_GRID_TITLE                      = I_TITLE_EKPO
       IT_FIELDCAT                       = I_FIELDCAT[]
       I_SAVE                            = 'A'
       IT_EVENTS                         = V_EVENTS
      TABLES
        T_OUTTAB                          = IT_EKPO
    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.
    Another program..............
    TABLES : LFA1,KNA1.
    DATA ITAB LIKE LFA1 OCCURS 0 WITH HEADER LINE.
    DATA ITAB1 LIKE KNA1 OCCURS 0 WITH HEADER LINE.
    SELECTION-SCREEN BEGIN OF BLOCK B WITH FRAME TITLE T.
    SELECT-OPTIONS LIFNR FOR LFA1-LIFNR.
    SELECTION-SCREEN END OF BLOCK B.
    INITIALIZATION .
    T = 'VENDOR DETAILS'.
    AT SELECTION-SCREEN OUTPUT.
    LIFNR-LOW = '1000'.
    LIFNR-HIGH = '4000'.
    APPEND LIFNR.
    START-OF-SELECTION.
    SELECT * FROM LFA1 INTO ITAB WHERE LIFNR IN LIFNR.
    APPEND ITAB.
    ENDSELECT.
    LOOP AT ITAB.
    FORMAT COLOR 6 INVERSE ON.
    WRITE : /2 SY-VLINE,4 ITAB-LAND1,7 SY-VLINE,9 ITAB-NAME1,44 SY-VLINE,46
    ITAB-ORT01,60 SY-VLINE.
    HIDE ITAB-ORT01.
    ENDLOOP.
    FORMAT COLOR OFF.
    TOP-OF-PAGE.
    WRITE : / 'VENDOR DETAILS'.
    ULINE AT /(70).
    SKIP.
    END-OF-PAGE.
    AT LINE-SELECTION.
    CASE SY-LSIND.
    WHEN 1.
    SELECT * FROM KNA1 INTO TABLE ITAB1 WHERE ORT01 = ITAB-ORT01.
    LOOP AT ITAB1.
    FORMAT COLOR 6 INVERSE ON.
    WRITE : /2 SY-VLINE,4 ITAB1-LAND1,7 SY-VLINE,9 ITAB1-NAME1,44 SY-VLINE,
    46 ITAB1-ORT01,60 SY-VLINE.
    FORMAT COLOR OFF.
    ENDLOOP.
    ENDCASE.
    TOP-OF-PAGE DURING LINE-SELECTION.
    CASE SY-LSIND.
    WHEN 1.
    WRITE : / 'VENDOR DETAILS'.
    ULINE AT /(70).
    SKIP.
    FORMAT COLOR 6 INVERSE ON.
    WRITE : /2 SY-VLINE,4 'LAND',7 SY-VLINE,9 'NAME',44 SY-VLINE,46
    'CITY',60 SY-VLINE.
    FORMAT COLOR OFF.
    WHEN 2.
    WRITE : / 'ANOTHER VENDOR DETAILS'.
    FORMAT COLOR 6 INVERSE ON.
    WRITE : /2 SY-VLINE,4 'LAND',7 SY-VLINE,9 'NAME',44 SY-VLINE,46
    'CITY',60 SY-VLINE.
    FORMAT COLOR OFF.
    endcase.
    END-OF-SELECTION.
    feel free to ask your clarifications.
    Senthil kumar

  • What is the button to change the variant in alv?

    Hi guys,
              can u tell me  is there any button to change the variant in alv?. what is tanscation varient in report , hw it will used.

    Hi
    The ALV Grid Control is a tool with which you can output non-hierarchical lists in a
    standardized format. The list data is displayed as a table on the screen.
    The ALV Grid Control offers a range of interactive standard list functions that users need
    frequently (find, sort, filter, calculate totals and subtotals, print, print preview, send list,
    export list (in different formats), and so on. These functions are implemented in the
    proxy object class. You as the programmer have the possibility to turn off functions not
    needed. In most cases the implementations of the standard functions provided by the
    control are sufficient. However, if required, you can adjust these implementations to
    meet application-specific needs.
    You can add self-defined functions to the toolbar, if necessary.
    The ALV Grid Control allows users to adjust the layout of lists to meet their individual
    requirements (for example, they can swap columns, hide columns, set filters for the
    data to be displayed, calculate totals, and so on). The settings (list customizing) made
    by a specific user are called a display variant. Display variants can be saved on a userspecific
    or on a global basis. If such display variants exist for a list, they can be offered
    to the user for selection. If a display variant is set as the default variant, the associated
    list is always displayed based on the settings of this variant.
    <b>2. REUSE_ALV_LIST_DISPLAY
    REUSE_ALV_GRID_DISPLAY
    REUSE_ALV_FIELDCATALOG_MERGE
    REUSE_ALV_COMMENTARY_WRITE</b>
    3. Use of Field Catalog is to determines the technical properties & add formating information of the column.
    6. all the definition of internal table, structure, constants are declared in a type-pool called SLIS.
    7.fieldcat-fieldname
    fieldcat-ref_fieldname
    fieldcat-tabname
    fieldcat-seltext_m
    5. Form user_command using r_ucomm like sy-ucomm rs_selfield type slis_selfield.
    Sap provides a set of ALV (ABAP LIST VIEWER) function modules which can be put into use to embellish the output of a report. This set of ALV functions is used to enhance the readability and functionality of any report output. Cases arise in sap when the output of a report contains columns extending more than 255 characters in length.
    In such cases, this set of ALV functions can help choose selected columns and arrange the different columns from a report output and also save different variants for report display. This is a very efficient tool for dynamically sorting and arranging the columns from a report output.
    The report output can contain up to 90 columns in the display with the wide array of display options.
    The commonly used ALV functions used for this purpose are;
    <b>1. REUSE_ALV_VARIANT_DEFAULT_GET
    2. REUSE_ALV_VARIANT_F4
    3. REUSE_ALV_VARIANT_EXISTENCE
    4. REUSE_ALV_EVENTS_GET
    5. REUSE_ALV_COMMENTARY_WRITE
    6. REUSE_ALV_FIELDCATALOG_MERGE
    7. REUSE_ALV_LIST_DISPLAY
    8. REUSE_ALV_GRID_DISPLAY
    9. REUSE_ALV_POPUP_TO_SELECT</b>
    Purpose of the above Functions are differ not all the functions are required in all the ALV Report.
    But either no.7 or No.8 is there in the Program.
    How you call this function in your report?
    After completion of all the data fetching from the database and append this data into an Internal Table. say I_ITAB.
    Then use follwing function module.
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
    I_CALLBACK_PROGRAM = 'Prog.name'
    I_STRUCTURE_NAME = 'I_ITAB'
    I_DEFAULT = 'X'
    I_SAVE = 'A'
    TABLES
    T_OUTTAB = I_ITAB.
    IF SY-SUBRC <> 0.
    WRITE: 'SY-SUBRC: ', SY-SUBRC .
    ENDIF.
    ENDFORM. " GET_FINAL_DATA
    The object F_IT_ALV has a field, the activity ACTVT, which can
    contain four permitted values: 01, 02, 03 and 70. Each of the
    activities 01, 02 and 70 controls the availability of particular
    functions (in the menu and the toolbar) of the ALV line item list:
    a) 01: "Settings -> Display variant -> Save..."
    b) 02: "Settings -> Display variant -> Current..." and
    "Settings -> Display variant -> Current header rows "
    c) 70: "Settings -> Display variant -> Administration..."
    Activity 03 corresponds to the minimum authorization, which is the
    most restricted one: The user can only select layouts which have
    been configured already. In particular, all of the other functions
    named above are inactive with activity 03.
    Now if you want to permit a user to change the column selection and
    the headers as well as to save the layout thus created, for example,
    but if you do not want to permit the user to administrate the
    layouts, you grant him or her the authorization for activities 01
    and 02.
    Check this link it will be mosty usefull for u
    http://www.sap-img.com/fu017.htm
    Reward all helpfull answers
    Regards
    Pavan

  • Select multiple lines in ALV list

    Hi Everyone,
    I have an ALV list which has checkboxes. Now when we select the check boxes and press enter it should  take me back into the program with only those lines in an internal table for which the checkboxes have been clicked. Is this possible.
    Any input is greatly appreciated.
    Thanks
    Kumar.

    yes... perhaps it is in how you are processing it. i am NOT using hotspots. i created a GUI status with a icon, and assigned it to a specific OK_CODE. then, when you display the ALV,
      call function 'REUSE_ALV_GRID_DISPLAY'
        exporting
          i_grid_title             = w_alv_title
          is_layout                = t_alvlayout
          it_fieldcat              = t_alvfieldcat
          it_events                = t_alveventcat
          it_sort                  = t_alvsortcat
          i_save                   = i_save
          is_variant               = default_layout
          i_default                = 'X'  " Allow Display Variants
          i_callback_program       = w_alv_callback_prog
          i_callback_user_command  = w_alv_command_handler
          i_callback_pf_status_set = w_alv_gui_status_setter
          i_callback_top_of_page   = 'STANDARD_LIST_HEADING'
        tables
          t_outtab                 = t_alvdata
        exceptions
          program_error            = 1
          others                   = 2.
    you specify a command handler callback, with the callback program and form
      w_alv_command_handler = 'ALV_COMMAND_HANDLER'.
      w_alv_callback_prog = sy-repid.
    then the handler would do something like this
    form alv_command_handler using r_ucomm like sy-ucomm
                               rs_selfield type slis_selfield.
      read table alvdata into alvline index rs_selfield-tabindex.
      case r_ucomm.
        when 'DELETE'.
    * make sure at least one line was selected
          read table alvdata into alvline with key select = true.
          if sy-subrc <> 0.
            message i014.
          else.
            call function 'POPUP_TO_CONFIRM'
              exporting
                titlebar              = 'Delete Confirmation'
                text_question         = 'Are you sure?'
                text_button_1         = 'Yes'
                text_button_2         = 'No'
                default_button        = '2'
                display_cancel_button = ' '
              importing
                answer                = answer
              exceptions
                text_not_found        = 1
                others                = 2.
            if sy-subrc = 0 and answer = '1'.
              loop at alvdata into alvline where select = true.
                perform delete_a_message.
              endloop.
    * refresh the list data
              perform load_alvdata.
              rs_selfield-refresh = true.
            endif.
          endif.
        endif.
    * process hotspots
        when '&IC1'.
          case rs_selfield-fieldname.
            when 'FILENAME'.
              submit ylo_newbreed_message_edit
                with p_file = alvline-filename
                with p_change = ' '
                 and return.
            when 'LASTSTS'.
              perform display_messages.
          endcase.
      endcase.
    endform.                    "alv_command_handler
    i cut a lot fo code out of this, so it may be missing some endif or whatever, but as you can see, you check the ok code, and if it matches your GUIstatus button, you loop over the internal table and process the data
    sorry for the long reply. i hope it helps

  • Hw to use a variant in alv report

    Hi,
    How to create, use and give f4 functionality to a variant in alv report.
    Give an example.
    Regards,
    Madhu

    <b>In this  report  i had used the  FM ->  REUSE_ALV_VARIANT_F4  for F4 help and the Varient on it  .</b>
    REPORT Z_INVENTORY.
    * List of the materials inventory.                                    *
    TYPE-POOLS: SLIS.
    TABLES:MARC, MARD, VBAP, LIPS, EKPO, VBFA, EKBE, MARM, VBBE, MARA, MBEW.
    SELECTION-SCREEN BEGIN OF BLOCK SEL WITH FRAME TITLE TEXT-001.
    SELECT-OPTIONS: S_WERKS FOR MARC-WERKS, " Plant
                    S_MATNR FOR MARC-MATNR, " Material
                    S_MTART FOR MARA-MTART. " Material Type
    SELECTION-SCREEN END OF BLOCK SEL.
    PARAMETERS: P_VARI LIKE DISVARIANT-VARIANT. " ALV Variant
    CONSTANTS: FORMNAME_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE 'TOP_OF_PAGE'.
    DATA: BEGIN OF INV OCCURS 100,
            WERKS LIKE MARD-WERKS, " Plant
            MATNR LIKE MARD-MATNR, " Material
            MTART LIKE MARA-MTART, " Material Type
            STPRS LIKE MBEW-STPRS, " Standard Price
            AVAIL LIKE MARD-LABST, " Available
            LABST LIKE MARD-LABST, " Unrestricted use
            INSME LIKE MARD-INSME, " Quality Inspection
            RETME LIKE MARD-RETME, " Returns
            TRANS LIKE MARC-UMLMC, " Stock in transit (calculated)
            UMLMC LIKE MARC-UMLMC, " Stock Transfer (plant)
            UMLME LIKE MARD-UMLME, " Transfer (SLoc)
            WESBS LIKE EKBE-WESBS, " GR Blocked Stock
            TRAME LIKE MARC-TRAME, " Stock in transit
            SPEME LIKE MARD-SPEME, " Blocked
            KWMENG LIKE VBAP-KWMENG, " Sales orders
            LFIMG LIKE LIPS-LFIMG, " Scheduled for Delivery
            MENGE LIKE EKPO-MENGE, " Open Purch. Orders
            VALUE LIKE MBEW-SALK3, " Stock Value (Calculated)
            MEINS LIKE MARA-MEINS, " Unit of measure
          END OF INV.
    DATA: FIELDTAB TYPE SLIS_T_FIELDCAT_ALV,
          HEADING  TYPE SLIS_T_LISTHEADER,
          LAYOUT   TYPE SLIS_LAYOUT_ALV,
          EVENTS   TYPE SLIS_T_EVENT,
          REPNAME  LIKE SY-REPID,
          F2CODE   LIKE SY-UCOMM VALUE  '&ETA',
          G_SAVE(1) TYPE C,
          G_EXIT(1) TYPE C,
          G_VARIANT LIKE DISVARIANT,
          GX_VARIANT LIKE DISVARIANT.
    INITIALIZATION.
      REPNAME = SY-REPID.
      PERFORM INITIALIZE_FIELDCAT USING FIELDTAB[].
      PERFORM BUILD_EVENTTAB USING EVENTS[].
      PERFORM BUILD_COMMENT USING HEADING[].
      PERFORM INITIALIZE_VARIANT.
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_VARI.
      PERFORM F4_FOR_VARIANT.
    AT SELECTION-SCREEN.
      PERFORM PAI_OF_SELECTION_SCREEN.
    START-OF-SELECTION.
      PERFORM GET_MARD.
      PERFORM GET_UNIT_OF_MEASURE.
      PERFORM GET_MARC.
      PERFORM GET_EKPO.
      PERFORM GET_LIPS.
      PERFORM GET_VBAP.
      PERFORM GET_OPEN.
      PERFORM GET_PRICE.
    END-OF-SELECTION.
      PERFORM BUILD_LAYOUT USING LAYOUT.
      PERFORM WRITE_OUTPUT.
    *&      Form  INITIALIZE_FIELDCAT
    *       text
    *      -->P_FIELDTAB[]  text                                           *
    FORM INITIALIZE_FIELDCAT USING P_FIELDTAB TYPE SLIS_T_FIELDCAT_ALV.
      DATA: L_FIELDCAT TYPE SLIS_FIELDCAT_ALV.
    * fixed columns (obligatory)
      CLEAR L_FIELDCAT.
      L_FIELDCAT-TABNAME    = 'INV'.
      L_FIELDCAT-FIX_COLUMN = 'X'.
      L_FIELDCAT-NO_OUT     = 'O'.
      L_FIELDCAT-FIELDNAME  = 'WERKS'.
      APPEND L_FIELDCAT TO P_FIELDTAB.
      L_FIELDCAT-FIELDNAME  = 'MATNR'.
      APPEND L_FIELDCAT TO P_FIELDTAB.
    * totalized columns
      CLEAR L_FIELDCAT.
      L_FIELDCAT-TABNAME   = 'INV'.
      L_FIELDCAT-SP_GROUP  = 'A'.
      L_FIELDCAT-DO_SUM    = 'X'.
      L_FIELDCAT-FIELDNAME = 'LABST'.
      APPEND L_FIELDCAT TO P_FIELDTAB.
      L_FIELDCAT-FIELDNAME = 'INSME'.
      APPEND L_FIELDCAT TO P_FIELDTAB.
      L_FIELDCAT-FIELDNAME = 'RETME'.
      APPEND L_FIELDCAT TO P_FIELDTAB.
      L_FIELDCAT-FIELDNAME = 'UMLME'.
      APPEND L_FIELDCAT TO P_FIELDTAB.
      L_FIELDCAT-FIELDNAME = 'WESBS'.
      APPEND L_FIELDCAT TO P_FIELDTAB.
      L_FIELDCAT-FIELDNAME = 'SPEME'.
      APPEND L_FIELDCAT TO P_FIELDTAB.
    * columns with different description
      L_FIELDCAT-FIELDNAME = 'KWMENG'.
      L_FIELDCAT-SELTEXT_M = 'Sales Orders'.
      L_FIELDCAT-SELTEXT_S = 'Sales Or'.
      L_FIELDCAT-SELTEXT_L = 'Sales Orders Qty'.
      APPEND L_FIELDCAT TO P_FIELDTAB.
      L_FIELDCAT-FIELDNAME = 'LFIMG'.
      L_FIELDCAT-SELTEXT_M = 'Sched. Delivery'.
      L_FIELDCAT-SELTEXT_S = 'Schd. Del'.
      L_FIELDCAT-SELTEXT_L = 'Scheduled for Delivery'.
      APPEND L_FIELDCAT TO P_FIELDTAB.
      L_FIELDCAT-FIELDNAME = 'TRANS'.
      L_FIELDCAT-SELTEXT_M = 'Stk. in transit'.
      L_FIELDCAT-SELTEXT_S = 'Stk. trns'.
      L_FIELDCAT-SELTEXT_L = 'Stock in transit (sum)'.
      APPEND L_FIELDCAT TO P_FIELDTAB.
      L_FIELDCAT-FIELDNAME = 'AVAIL'.
      L_FIELDCAT-SELTEXT_M = 'Available'.
      L_FIELDCAT-SELTEXT_S = 'Avail.'.
      L_FIELDCAT-SELTEXT_L = 'Stock Available'.
      APPEND L_FIELDCAT TO P_FIELDTAB.
      L_FIELDCAT-FIELDNAME = 'MENGE'.
      L_FIELDCAT-SELTEXT_M = 'Open Orders'.
      L_FIELDCAT-SELTEXT_S = 'Open Ord'.
      L_FIELDCAT-SELTEXT_L = 'Open Purchase Orders'.
      APPEND L_FIELDCAT TO P_FIELDTAB.
    * columns not displayed
      CLEAR L_FIELDCAT.
      L_FIELDCAT-TABNAME   = 'INV'.
      L_FIELDCAT-SP_GROUP  = 'A'.
      L_FIELDCAT-NO_OUT    = 'X'.
      L_FIELDCAT-FIELDNAME = 'MEINS'.
      APPEND L_FIELDCAT TO P_FIELDTAB.
      L_FIELDCAT-FIELDNAME = 'UMLMC'.
      APPEND L_FIELDCAT TO P_FIELDTAB.
      L_FIELDCAT-FIELDNAME = 'TRAME'.
      APPEND L_FIELDCAT TO P_FIELDTAB.
      L_FIELDCAT-FIELDNAME = 'STPRS'.
      APPEND L_FIELDCAT TO P_FIELDTAB.
      L_FIELDCAT-FIELDNAME = 'VALUE'.
      APPEND L_FIELDCAT TO P_FIELDTAB.
    ENDFORM.                               " INITIALIZE_FIELDCAT
    *&      Form  BUILD_EVENTTAB
    *       text
    *      -->P_EVENTS[]  text                                             *
    FORM BUILD_EVENTTAB USING P_EVENTS TYPE SLIS_T_EVENT.
      DATA: LS_EVENT TYPE SLIS_ALV_EVENT.
      CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
           EXPORTING
                I_LIST_TYPE = 0
           IMPORTING
                ET_EVENTS   = P_EVENTS.
      READ TABLE P_EVENTS WITH KEY NAME = SLIS_EV_TOP_OF_PAGE
                               INTO LS_EVENT.
      IF SY-SUBRC = 0.
        MOVE FORMNAME_TOP_OF_PAGE TO LS_EVENT-FORM.
        APPEND LS_EVENT TO P_EVENTS.
      ENDIF.
    ENDFORM.                               " BUILD_EVENTTAB
    *&      Form  BUILD_COMMENT
    *       text
    *      -->P_HEADING[]  text                                            *
    FORM BUILD_COMMENT USING P_HEADING TYPE SLIS_T_LISTHEADER.
      DATA: HLINE TYPE SLIS_LISTHEADER,
            TEXT(60) TYPE C,
            SEP(20) TYPE C.
      CLEAR: HLINE, TEXT.
      HLINE-TYP  = 'H'.
      WRITE: TEXT-101 TO TEXT+23.
      HLINE-INFO = TEXT.
      APPEND HLINE TO P_HEADING.
      CLEAR TEXT.
      WRITE: 'User: ' TO TEXT,
             SY-UNAME TO TEXT+6,
             'Date: ' TO TEXT+25,
             SY-DATUM TO TEXT+31,
             'Page: ' TO TEXT+50,
             SY-PAGNO TO TEXT+56.
      HLINE-INFO = TEXT.
      APPEND HLINE TO P_HEADING.
    ENDFORM.                    " BUILD_COMMENT
    *       FORM TOP_OF_PAGE                                              *
    FORM TOP_OF_PAGE.
      CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
           EXPORTING
                IT_LIST_COMMENTARY = HEADING.
    ENDFORM.
    *&      Form  INITIALIZE_VARIANT
    *       text
    FORM INITIALIZE_VARIANT.
      G_SAVE = 'A'.
      CLEAR G_VARIANT.
      G_VARIANT-REPORT = REPNAME.
      GX_VARIANT = G_VARIANT.
      CALL FUNCTION 'REUSE_ALV_VARIANT_DEFAULT_GET'
           EXPORTING
                I_SAVE     = G_SAVE
           CHANGING
                CS_VARIANT = GX_VARIANT
           EXCEPTIONS
                NOT_FOUND  = 2.
      IF SY-SUBRC = 0.
        P_VARI = GX_VARIANT-VARIANT.
      ENDIF.
    ENDFORM.                               " INITIALIZE_VARIANT
    *&      Form  F4_FOR_VARIANT
    *       text
    FORM F4_FOR_VARIANT.
    <b>  CALL FUNCTION 'REUSE_ALV_VARIANT_F4'
           EXPORTING
                IS_VARIANT = G_VARIANT
                I_SAVE     = G_SAVE
           IMPORTING
                E_EXIT     = G_EXIT
                ES_VARIANT = GX_VARIANT
           EXCEPTIONS
                NOT_FOUND  = 2.
      IF SY-SUBRC = 2.
        MESSAGE ID SY-MSGID TYPE 'S'      NUMBER SY-MSGNO
                WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ELSE.
        IF G_EXIT = SPACE.
          P_VARI = GX_VARIANT-VARIANT.
        ENDIF.
      ENDIF.</b>
    ENDFORM.                               " F4_FOR_VARIANT
    *&      Form  PAI_OF_SELECTION_SCREEN
    *       text
    FORM PAI_OF_SELECTION_SCREEN.
      IF NOT P_VARI IS INITIAL.
        MOVE G_VARIANT TO GX_VARIANT.
        MOVE P_VARI TO GX_VARIANT-VARIANT.
        CALL FUNCTION 'REUSE_ALV_VARIANT_EXISTENCE'
             EXPORTING
                  I_SAVE     = G_SAVE
             CHANGING
                  CS_VARIANT = GX_VARIANT.
        G_VARIANT = GX_VARIANT.
      ELSE.
        PERFORM INITIALIZE_VARIANT.
      ENDIF.
    ENDFORM.                               " PAI_OF_SELECTION_SCREEN
    *&      Form  GET_MARD
    *       text
    FORM GET_MARD.
      SELECT MATNR WERKS LABST INSME RETME UMLME SPEME
             FROM MARD
             INTO CORRESPONDING FIELDS OF INV
             WHERE MATNR IN S_MATNR
             AND   WERKS IN S_WERKS.
        COLLECT INV.
      ENDSELECT.
      PERFORM FILTER_BY_MATERIAL_TYPE.
    ENDFORM.                               " GET_MARD
    *&      Form  FILTER_BY_MATERIAL_TYPE
    *       text
    FORM FILTER_BY_MATERIAL_TYPE.
      LOOP AT INV.
        CLEAR INV-MTART.
        SELECT SINGLE MTART
               INTO INV-MTART
               FROM MARA
               WHERE MATNR EQ INV-MATNR
               AND   MTART IN S_MTART.
        IF SY-SUBRC EQ 0.
          MODIFY INV.
        ELSE.
          DELETE INV.
        ENDIF.
      ENDLOOP.
    ENDFORM.                    " FILTER_BY_MATERIAL_TYPE
    *&      Form  GET_MARC
    *       text
    FORM GET_MARC.
      LOOP AT INV.
        SELECT SINGLE UMLMC TRAME
               FROM MARC
               INTO CORRESPONDING FIELDS OF INV
               WHERE MATNR EQ INV-MATNR
               AND   WERKS EQ INV-WERKS.
        IF SY-SUBRC EQ 0.
          INV-TRANS = INV-UMLMC + INV-TRAME.
          MODIFY INV.
        ENDIF.
      ENDLOOP.
    ENDFORM.                               " GET_MARC
    *&      Form  GET_EKPO
    *       text
    FORM GET_EKPO.
      DATA: WESBS LIKE INV-WESBS,
            SHKZG LIKE EKBE-SHKZG,
            MEINS LIKE EKPO-MEINS,
            LMEIN LIKE EKPO-LMEIN.
      LOOP AT INV.
        CLEAR: WESBS, SHKZG, MEINS, LMEIN.
        SELECT Y~WESBS Y~SHKZG X~MEINS X~LMEIN
               INTO (WESBS, SHKZG, MEINS, LMEIN)
               FROM EKPO AS X JOIN EKBE AS Y
               ON   X~EBELN = Y~EBELN
               AND  X~EBELP = Y~EBELP
               WHERE X~MATNR EQ INV-MATNR
               AND   X~WERKS EQ INV-WERKS
               AND   X~LOEKZ NE 'L'.
          IF SHKZG EQ 'H'.
            MULTIPLY WESBS BY -1.
          ENDIF.
          IF MEINS NE LMEIN.
            PERFORM CONVERT_UNIT_OF_MEASURE CHANGING INV-MATNR MEINS WESBS.
          ENDIF.
          ADD WESBS TO INV-WESBS.
        ENDSELECT.
        MODIFY INV.
      ENDLOOP.
    ENDFORM.                               " GET_EKPO
    *&      Form  GET_LIPS
    *       text
    FORM GET_LIPS.
      DATA: LFIMG LIKE INV-LFIMG.
      LOOP AT INV.
        CLEAR: LFIMG, INV-LFIMG.
        SELECT OMENG
               INTO LFIMG
               FROM VBBE
               WHERE MATNR EQ INV-MATNR
               AND   WERKS EQ INV-WERKS
               AND   VBTYP EQ 'J'.
          ADD LFIMG TO INV-LFIMG.
        ENDSELECT.
        MODIFY INV.
      ENDLOOP.
    ENDFORM.                               " GET_LIPS
    *&      Form  GET_VBAP
    *       text
    FORM GET_VBAP.
      DATA: KWMENG LIKE INV-KWMENG.
      LOOP AT INV.
        CLEAR: KWMENG, INV-KWMENG.
        SELECT OMENG
               INTO KWMENG
               FROM VBBE
               WHERE MATNR EQ INV-MATNR
               AND   WERKS EQ INV-WERKS
               AND   VBTYP EQ 'C'.
          ADD KWMENG TO INV-KWMENG.
        ENDSELECT.
        INV-AVAIL = INV-LABST - INV-INSME - INV-KWMENG - INV-LFIMG.
        MODIFY INV.
      ENDLOOP.
    ENDFORM.                               " GET_VBAP
    *&      Form  GET_UNIT_OF_MEASURE
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM GET_UNIT_OF_MEASURE.
      LOOP AT INV.
        SELECT SINGLE MEINS
               FROM MARA
               INTO INV-MEINS
               WHERE MATNR EQ INV-MATNR.
        MODIFY INV.
      ENDLOOP.
    ENDFORM.                               " GET_UNIT_OF_MEASURE
    *&      Form  GET_OPEN
    *       text
    FORM GET_OPEN.
      DATA: BEGIN OF XTAB OCCURS 10,       " Open orders table
               WERKS LIKE EKPO-WERKS,
               LGORT LIKE EKPO-LGORT,
               MATNR LIKE EKPO-MATNR,
               MENGE LIKE EKPO-MENGE,
               MENGK LIKE EKPO-MENGE,
             END OF XTAB.
      RANGES: L_WERKS FOR MARD-WERKS.
      LOOP AT INV.
        REFRESH XTAB.
        CLEAR: XTAB, L_WERKS.
        MOVE INV-WERKS TO L_WERKS-LOW.
        CALL FUNCTION 'MB_ADD_PURCHASE_ORDER_QUANTITY'
             EXPORTING
                  X_MATNR = INV-MATNR
                  X_MEINS = INV-MEINS
                  X_ELIKZ = SPACE
                  X_LOEKZ = SPACE
             TABLES
                  XTAB    = XTAB
                  XWERKS  = L_WERKS.
        MOVE XTAB-MENGE TO INV-MENGE.
        MODIFY INV.
      ENDLOOP.
    ENDFORM.                               " GET_OPEN
    *&      Form  GET_PRICE
    *       text
    FORM GET_PRICE.
      LOOP AT INV.
        SELECT SINGLE STPRS
               FROM MBEW
               INTO INV-STPRS
               WHERE MATNR EQ INV-MATNR
               AND   BWKEY EQ INV-WERKS
               AND   BWTAR EQ SPACE.
          IF SY-SUBRC EQ 0.
            INV-VALUE = INV-STPRS *
                      ( INV-LABST + INV-INSME + INV-TRANS + INV-SPEME ).
            MODIFY INV.
          ENDIF.
      ENDLOOP.
    ENDFORM.                    " GET_PRICE
    *       FORM CONVERT_UNIT_OF_MEASURE                                  *
    *       text                                                          *
    *  -->  P_MATNR                                                       *
    *  -->  P_VRKME                                                       *
    *  -->  P_QUANT                                                       *
    FORM CONVERT_UNIT_OF_MEASURE USING P_MATNR P_VRKME P_QUANT.
      DATA: UMREZ LIKE MARM-UMREZ,
            UMREN LIKE MARM-UMREN.
      SELECT SINGLE UMREZ UMREN
             INTO (UMREZ, UMREN)
             FROM MARM
             WHERE MATNR EQ P_MATNR
             AND   MEINH EQ P_VRKME.
      IF SY-SUBRC EQ 0.
        COMPUTE P_QUANT = ( P_QUANT * UMREZ ) / UMREN.
      ENDIF.
    ENDFORM.
    *&      Form  BUILD_LAYOUT
    *       text
    *      -->P_LAYOUT  text                                               *
    FORM BUILD_LAYOUT USING P_LAYOUT TYPE SLIS_LAYOUT_ALV.
      P_LAYOUT-F2CODE       = F2CODE.
      P_LAYOUT-ZEBRA        = 'X'.
      P_LAYOUT-DETAIL_POPUP = 'X'.
    ENDFORM.                               " BUILD_LAYOUT
    *&      Form  WRITE_OUTPUT
    *       text
    FORM WRITE_OUTPUT.
      SORT INV BY WERKS MATNR.
      CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
           EXPORTING
                I_PROGRAM_NAME     = REPNAME
                I_INTERNAL_TABNAME = 'INV'
                I_INCLNAME         = REPNAME
           CHANGING
                CT_FIELDCAT        = FIELDTAB.
      IF SY-SUBRC <> 0.
        WRITE: 'SY-SUBRC: ', SY-SUBRC, 'REUSE_ALV_FIELDCATALOG_MERGE'.
      ENDIF.
      CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
           EXPORTING
                I_CALLBACK_PROGRAM = REPNAME
                I_STRUCTURE_NAME   = 'INV'
                IS_LAYOUT          = LAYOUT
                IT_FIELDCAT        = FIELDTAB
                I_DEFAULT          = 'A'
                I_SAVE             = G_SAVE
                IS_VARIANT         = G_VARIANT
                IT_EVENTS          = EVENTS[]
           TABLES
                T_OUTTAB           = INV.
      IF SY-SUBRC <> 0.
        WRITE: 'SY-SUBRC: ', SY-SUBRC, 'REUSE_ALV_LIST_DISPLAY'.
      ENDIF.
    ENDFORM.                               " WRITE_OUTPUT
    reward  points if it is usefull.....
    Girish

  • Extract ALV list to a file in the background

    I am currently working on an ALV report which the user requires that a file be generated automatically based on the ALV list output. Any ideas? Thanks in advance.

    Hello Emmanuel,
    I have had the same problem, and i found no solution on the forums... So i have implemented my own solution: I implemented a child class, in order to add a new method write_file. This coding creates a file on the application server, considering the field catalog from the choosen variant. It can be enhanced in order to get the sort and the filter criteria (but if the file is exported to excel, the sort and filter can be managed within excel). Such a program can be run in background, and it works perfectly!
    Sample coding:
    REPORT z_alv_download_file.
          CLASS LCL_GUI_ALV_GRID  INHERITING FRO
          Local child-class in order to implement a new method for      *
          download in a file in background                              *
    CLASS lcl_gui_alv_grid DEFINITION INHERITING FROM cl_gui_alv_grid.
      PUBLIC SECTION.
        METHODS: write_file IMPORTING i_structure_name TYPE dd02l-tabname
                                      is_variant       TYPE disvariant
                                      i_default        TYPE char01
                                      i_save           TYPE char01
                                      i_file           TYPE fileextern
                            CHANGING  it_outtab        TYPE STANDARD TABLE.
    ENDCLASS.
          CLASS lcl_gui_alv_grid IMPLEMENTATION
          Implementation of the new method write_file                   *
    CLASS lcl_gui_alv_grid IMPLEMENTATION.
      METHOD write_file.
      Local types
        TYPES: BEGIN OF ty_fieldnames,
                 field(60),
                 field2 TYPE help_info-tabname,
                 field3 TYPE help_info-fieldname,
                 key(1),
               END OF ty_fieldnames.
      Local data
        DATA: lt_catalog      TYPE lvc_t_fcat,
              ls_catalog      TYPE lvc_s_fcat,
              lt_datatab      TYPE TABLE OF hrdatatab,
              ls_datatab      TYPE hrdatatab,
              lt_fieldnames   TYPE TABLE OF ty_fieldnames,
              ls_fieldnames   TYPE ty_fieldnames,
              ls_record       TYPE string,
              l_field(60)     TYPE c,
              l_nbcol         TYPE i,
              l_colpos        TYPE i,
              l_colpos_c(2)   TYPE c,
              l_fieldname(21) TYPE c VALUE 'ls_datatab-langtext  '.
        FIELD-SYMBOLS <f> TYPE ANY.
      Call the grid display
        CALL METHOD me->set_table_for_first_display
             EXPORTING i_structure_name = i_structure_name
                       is_variant = is_variant
                       i_default = i_default
                       i_save = i_save
             CHANGING  it_outtab        = it_outtab.
      Get the field catalog according to the display variant which is used
        CALL METHOD me->get_frontend_fieldcatalog
             IMPORTING et_fieldcatalog = lt_catalog.
      Get an internal table with only the fields from the field catalog
        CALL FUNCTION 'ALV_CONVERT_DATA'
             EXPORTING
                  alv_fieldcat    = lt_catalog
             TABLES
                  alv_datatab     = it_outtab
                  hr_datatab      = lt_datatab
                  hr_fieldnametab = lt_fieldnames.
      Keep only the displayed fields from the field catalog
        DELETE lt_catalog WHERE no_out = 'X'.
        SORT lt_catalog BY col_pos DESCENDING.
        READ TABLE lt_catalog INTO ls_catalog INDEX 1.
        IF sy-subrc = 0.
          CLEAR ls_record.
          l_nbcol = ls_catalog-col_pos.
        Open the file
          OPEN DATASET i_file FOR OUTPUT IN TEXT MODE.
        Write the column names
          LOOP AT lt_fieldnames INTO ls_fieldnames.
            CONDENSE ls_fieldnames-field.
            CONCATENATE ls_record ls_fieldnames-field
                        INTO ls_record SEPARATED BY ';'.
          ENDLOOP.
          SHIFT ls_record.
          TRANSFER ls_record TO i_file.
        Write the lines
          LOOP AT lt_datatab INTO ls_datatab.
            CLEAR: l_colpos,
                   ls_record.
          Condense the fields in a single string, separated by ';' (csv)
            DO l_nbcol TIMES.
              ADD 1 TO l_colpos.
              CLEAR l_colpos_c.
              l_colpos_c = l_colpos.
              CONDENSE l_colpos_c.
              l_fieldname+19(2) = l_colpos_c.
              ASSIGN (l_fieldname) TO <f>.
              WRITE <f> TO l_field.
              CONDENSE l_field.
              CONCATENATE ls_record l_field INTO ls_record SEPARATED BY ';'.
            ENDDO.
            SHIFT ls_record.
            TRANSFER ls_record TO i_file.
          ENDLOOP.
        Close the file
          CLOSE DATASET i_file.
        ENDIF.
      ENDMETHOD.
    ENDCLASS.
          MAIN PROGRAM
    DATA: wo_alv      TYPE REF TO lcl_gui_alv_grid,
          wt_sflight TYPE TABLE OF sflight,
          ws_variant    TYPE disvariant.
    PARAMETERS: p_file TYPE fileextern OBLIGATORY
                       DEFAULT '/usr/sap/.../file.csv',
                p_vari TYPE slis_vari
                       DEFAULT 'DEFAULT'.
    START-OF-SELECTION.
      ws_variant-report = sy-repid.
      ws_variant-username = sy-uname.
      ws_variant-variant = p_vari.
      SELECT * FROM sflight INTO TABLE wt_sflight.
      CREATE OBJECT wo_alv EXPORTING i_parent = cl_gui_container=>screen0.
      CALL METHOD wo_alv->write_file
           EXPORTING i_structure_name = 'SFLIGHT'
                     is_variant       = ws_variant
                     i_default        = 'X'
                     i_save           = 'A'
                     i_file           = p_file
           CHANGING  it_outtab        = wt_sflight.

  • Need unique Variants in ALV interactive report

    Hello Experts,
                          I have a ALV interactive report in which a layout variant  created in one layout is been reflecting in all other layouts, which i dont want. I want to create different variants for different layouts in interactive report.How can i achieve this.

    Hi,
        Event form names are appended to an internal table and passed to the ALV. And whatever you write inside that form
    can be called through the function module.
    What you are trying to do is modify the internal table with the form name, which does not exsist. Instead of this append it.
    There are lot of example of this ALV list events.
    DATA:     T_EVENT TYPE SLIS_T_EVENT,
         W_EVENT TYPE SLIS_ALV_EVENT.
    CLEAR W_EVENT.
    W_EVENT-FORM = SLIS_EV_AFTER_LINE_OUTPUT.
    W_EVENT-NAME = SLIS_EV_AFTER_LINE_OUTPUT."AFTER_LINE_OUTPUT event
    APPEND W_EVENT TO T_EVENT.
    Thanks & Regards,
    Tapodipta Khan

  • ALV list -Runtime error using the Spreadsheet button(CTRL+SHIFT+F7)

    Hi,
    We are on ECC6.0.When ever I try to use the button 'Spreadsheet' (CTRLSHIFTF7) it gives me the following runtime error.It works fine if I use the export button.Also it works for ALV grid.Issue is only with ALV list.
    Can you pelase advise waht could be the issue.
    Thanks
    Venkat
    Runtime Errors         GETWA_NOT_ASSIGNED
    Date and Time          08.06.2009 16:02:22
    Short text
    Field symbol has not yet been assigned.
    What happened?
    Error in the ABAP Application Program
    The current ABAP program "CL_SALV_BS_TT_RESULT_TABLE====CP" had to be
    terminated because it has
    come across a statement that unfortunately cannot be executed.
    Error analysis
    You attempted to access an unassigned field symbol
    (data segment 32781).
    This error may occur if
    - You address a typed field symbol before it has been set with
    ASSIGN
    - You address a field symbol that pointed to the line of an
    internal table that was deleted
    - You address a field symbol that was previously reset using
    UNASSIGN or that pointed to a local field that no
    longer exists
    - You address a global function interface, although the
    respective function module is not active - that is, is
    not in the list of active calls. The list of active calls
    can be taken from this short dump.
    Trigger Location of Runtime Error
    Program                                 CL_SALV_BS_TT_RESULT_TABLE====CP
    Include                                 CL_SALV_BS_TT_RESULT_TABLE====CM00L
    Row                                     165
    Module type                             (METHOD)
    Module Name                             GET_CELL_VALUE
    Source Code Extract
    Line
    SourceCde
    135
    call method cl_alv_xslt_transform=>get_days_since_1900
    136
    exporting
    137
    i_date = l_date
    138
    receiving
    139
    e_num  = attribute01.
    140
    141
    elseif ls_attribute-s_dfies-inttype eq cl_abap_typedescr=>typekind_time. "Time
    142
    data:
    143
    l_time type t.
    144
    145
    l_time = <l_data>.
    146
    147
    call method cl_alv_xslt_transform=>get_isotime_from_inttime
    148
    exporting
    149
    i_value = l_time
    150
    receiving
    151
    e_value = value.
    152
    153
    *... fill attribute01 with percent value of actual day
    154
    call method cl_alv_xslt_transform=>get_percent_of_act_day
    155
    exporting
    156
    i_time = l_time
    157
    receiving
    158
    e_num  = attribute01.
    159
    160
    elseif ls_attribute-s_dfies-inttype ca if_salv_bs_log_exp_operand=>c_numeric and
    161
    ls_attribute-s_dfies-convexit is initial.
    162
    case ls_attribute-s_dfies-reference_field_type.
    163
    when if_salv_bs_c_data=>reffieldtype_curr.
    164
    *... get iso value for currency value
    >>>>>
    call method cl_alv_xslt_transform=>get_isonum_from_intnum
    166
    exporting
    167
    i_value    = <l_data>
    168
    i_currency = <l_reference>
    169
    i_decimals = ls_attribute-s_dfies-decimals
    170
    importing
    171
    e_value    = l_isovalue.
    172
    173
    when if_salv_bs_c_data=>reffieldtype_quan.
    174
    *... get iso value for quantity value
    175
    call method cl_alv_xslt_transform=>get_isonum_from_intnum
    176
    exporting
    177
    i_value    = <l_data>
    178
    i_unit     = <l_reference>
    179
    i_decimals = ls_attribute-s_dfies-decimals
    180
    importing
    181
    e_value    = l_isovalue.
    182
    183
    when others.
    184
    *... get iso value for value

    Hi Pinaki,
    Thanks for your reply.
    below is my code.
    data: t_fieldcat type slis_t_fieldcat_alv,
            w_fieldcat like line of t_fieldcat,
            w_layout   type slis_layout_alv,
            t_sort     type slis_t_sortinfo_alv,
            w_sort     like line of t_sort,
            t_events   type slis_t_event,
            w_events   like line of t_events.
      call function 'REUSE_ALV_FIELDCATALOG_MERGE'
           exporting
                i_structure_name   = 'ZSD_ORDERS'
                i_bypassing_buffer = 'X'
           changing
                ct_fieldcat        = t_fieldcat.
      data: l_lines_fieldcat type i.
      describe table t_fieldcat lines l_lines_fieldcat.
      clear: w_fieldcat.:
      w_fieldcat-col_pos = l_lines_fieldcat + 1.
      w_fieldcat-datatype = 'QUAN'.
      w_fieldcat-just = ' '.
      w_fieldcat-do_sum = ' '.
      w_fieldcat-fieldname = 'ZZSCLQTY'.
      w_fieldcat-tabname = 'T_DATA'.
      w_fieldcat-qfieldname = 'VRKME'.
      w_fieldcat-seltext_s = text-a01.
      w_fieldcat-seltext_m = text-a01.
      w_fieldcat-seltext_l = text-a01.
      append w_fieldcat to t_fieldcat.
    Modify column headings
      loop at t_fieldcat into w_fieldcat.
        case w_fieldcat-fieldname.
          when 'MATNR'.
            w_fieldcat-no_zero = 'X'.
          when 'ZZPRICECHECK'.
            w_fieldcat-reptext_ddic = text-l01.
          when 'KZWI5'.
            w_fieldcat-reptext_ddic = text-l02.
          when 'VBELN'.
            w_fieldcat-hotspot = 'X'.
          when 'BMENG'.
            w_fieldcat-do_sum = 'X'.
          when 'COUNTER'.
            w_fieldcat-do_sum = 'X'.
            w_fieldcat-reptext_ddic = text-l03.
          when 'OBJDE'.
            w_fieldcat-reptext_ddic = 'Obj ID'.
              endcase.
        modify t_fieldcat from w_fieldcat.
      endloop.
    Format output options
      clear w_layout.
      w_layout-colwidth_optimize    = 'X'.
      w_layout-zebra                = 'X'.
      w_layout-get_selinfos         = 'X'.
      w_layout-detail_initial_lines = 'X'.
      w_layout-group_change_edit    = 'X'.
    Specify list processing events
      w_events-name = 'TOP_OF_PAGE'.
      w_events-form = 'TOP_OF_PAGE'.
      append w_events to t_events.
    Fit Add List Variant from Selection Screen               "003
      clear: w_variant.
      w_variant-report  = sy-repid.
      w_variant-variant = sp_vari.
    end Fit02
      call function 'REUSE_ALV_LIST_DISPLAY'
           exporting
                i_callback_program      = w_repid
                is_layout               = w_layout
                it_sort                 = t_sort
                i_callback_user_command = 'USER_COMMAND'
                is_variant              = w_variant
                i_save                  = 'A'
                it_fieldcat             = t_fieldcat[]
                it_events               = t_events[]
           tables
                t_outtab                = t_data.
    endform.

Maybe you are looking for