DB Table for Layout Variant in ALV report

Please help me by providing the table name which will get an entry when we save Layout Variant in ALV(OO ALV grid) output.

Hi,
I have seen the table LTDX which is giving me the Variant names for a particular program. Hope this will help you.
Database table is LTDX
Database view is V_LTDX.
Regards,
Venaktesh

Similar Messages

  • 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

  • Issues in Change layout Variant of ALV grid

    Hi all,
    I am using a ALV gird to display the data with some table column. I am able to save/ choose the Layout variant. I choose the existing layout varaint it works fine but when I change the column fields display from selected layout then it will immidiately looks fine, but if I perform some event, it goes to the initial stage of the choosed layout varaint.
    I can solve this issue if I clear the Variant from the is_variant (of set_table_for_first_display method). So if I can find the fieldcatalog for layout Variant, then it will solved very easily.
    Please suggest, if you have any idea on this.
    Thanks,
    Sanket Sethi

    I got the solution. You can find the Variant field catalog by using Function module 'LVC_VARIANT_SELECT'. You can set the dialog box based on your requirements as well. So closing this thread. Thanks..

  • Hi  please send code for displaying index in alv report

    hi
    thanx in advance.
    code please for displaying index in alv report.
    thanx
    rocky

    add one more field to ur internal table
    index type i .
    before u display ALV
    loop at itab.
      itab-index = sy-tabix.
      modify itab index sy-tabix.
    endloop.
    Message was edited by:
            chandrasekhar jagarlamudi

  • Is there any transaction code for uploding logo in ALV reports.

    is there any transaction code for uploding logo in ALV reports.

    hi,
    call function 'REUSE_ALV_COMMENTARY_WRITE'
           exporting
                it_list_commentary = t_header.
                i_logo             = 'Z_LOGO'.
    endform.
    Upload Logo for REUSE_ALV_COMMENTARY_WRITE
    For those who wish to upload and use a picture in your ALV abap reports.
    Steps for uploading Logo :-:
    1. Goto the transaction OAER
    2. Enter the class name as 'PICTURES'
    3. Enter the class type as 'OT'
    4. Enter the object key as the name of the logo you wish to give
    5. Execute
    6. Then in the new screen select Standard doc. types in bottom window
    Click on the Screen icon
    Now, it will ask for the file path where you have to upload the logo
    7. Now you can use this logo in REUSE_ALV_COMMENTARY_WRITE
    or
    Import Logo and Background Picture for Reporting
    In this step, you can import a customer-specific logo and a background picture into the R/3 System. These will be displayed in the header area of reports in HR Funds and Position Management.
    From the SPRO:
    HR Funds and Position Management --> Dialog Control --> Customize Reporting Interface --> Import Logo and Background Picture for Reporting.
    Activities
    1. Enter the Name of your logo/background picture as an object key in the initial screen.
    2. Make sure that the class name is PICTURES, and the class type is OT.
    3. Choose Execute.
    4. Double-click the document type Picture on the Create tab page. A dialog box will appear in which you can enter the path in which the logo/background picture can be found.
    5. Enter the path and choose Open. The logo will be uploaded into the current R/3 System. If the logo/background picture is to be transported into other systems as well, choose Transport.
    6. Return to the initial screen and repeat the procedure after having entered the Name of your background picture as an object key.
    Please note that the logo/background picture can only be displayed in ALV-based reports with an HTML header. Manually programmed reports such as business distribution plans are not based on the ALV.
    If you have selected several initial objects, ALV-based reports in HR Funds and Position Management will automatically use a hiearchical-sequential display. A logo is not displayed here either. Note also that the logo cannot be printed (see print preview in program).
    Make sure that the logo does not exceed a height of 100 pixels because it would mean that the header of the report will be scrollable.

  • Issue in setting layout variant in ALV tables

    Hi,
    I have 2 ALV’s displaying in a view, 1’st is a header data & 2’nd Item data.
    Based on the row selection in the Header ALV, the data is determined and displayed in the 2’nd ALV i.e., the Item data.
    Now the 2’nd ALV (Item data) can contain 20 columns so based on certain requirement I want to save a layout variant with only 10 Columns for display in the 2’nd ALV.
    But the issue what is happening is once I change my row selection in the 1’st ALV (Header data) the layout in the second ALV is refreshing back to the 20 fields EVEN though the name of the variant layout still displays the one I saved earlier.
    I have searched the SCN for this issue and found http://scn.sap.com/thread/1986147, but it does NOT work.
    Could anyone please suggest a solution.
    Thanks & Regards,
    Divaker

    Hi Katrice,
          Thank you for the reply and the links, I will go through them, but please find below the code that I presently have in place, could you please advise if there is anything missing or wrong in here.
    Thanks & Regards,
    Divaker
      lo_cmp_usage =   wd_this->wd_cpuse_pwq_alv( ).
      IF lo_cmp_usage->has_active_component( ) IS INITIAL.
        lo_cmp_usage->create_component( ).
      ENDIF.
      lo_interfacecontroller =   wd_this->wd_cpifc_pwq_alv( ).
    * enable column adjustment
      lv_value = lo_interfacecontroller->get_model( ).
    *-- Get the API reference
      lo_api_interfacecontroller  = lo_interfacecontroller->wd_get_api( ).
      CALL METHOD lo_api_interfacecontroller->get_personalization_manager
        RECEIVING
          pers_manager = lo_pers.
      IF lo_pers IS NOT INITIAL.
        CALL METHOD lo_pers->get_variants
          RECEIVING
            variants = lt_var.
      ENDIF.
      IF lt_var IS NOT INITIAL.
        READ TABLE lt_var INTO ls_var INDEX 1.
        IF sy-subrc = 0.
          ls_config_key-config_id   = ls_var-config_id.
          ls_config_key-config_type = ls_var-config_type.
          ls_config_key-config_var  = ls_var-config_var.
        ENDIF.
        TRY.
            CALL METHOD lo_pers->set_default_variant
              EXPORTING
                config_key = ls_config_key
                set        = abap_true.
          CATCH cx_wd_personalization .
        ENDTRY.
        CALL METHOD lo_pers->load_config_by_key
          EXPORTING
            config_key            = ls_config_key
            fetch_default_variant = abap_true.
      ENDIF.

  • Hide Change Layout Button in ALV report o/p for MB52 Tcode

    Hi,
    Is it possible to Hide Change Layout Button in ALV output for Report MB52 using authoriztaion.
    We have created a layout in which we are hiding some coloumns which the user should not see.
    But if the change layout button is active then the user can add those coloumns to output.
    Is this possible through authorizations. I want to avoid doing any chnages to the std sap program.
    Thanks & Regards,
    Fawaz

    Check the object S_ALV_LAYO

  • 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.

  • How to populate the logical_group field in V_LTDX (table for layouts)?

    Hi,
    Scenario:
    I have implemented the ALV using CL_SALV_TABLE. In the grid we have a 'Choose Layout' button where we have the options of choose, change, manage etc. the layouts. If we create a layout, the layout is saved in the table LTDX(view: V_LTDX).
    Issue:
    How do we populate the 'Logical_group' field in the table while creating/changing the layouts?
    Please suggest..
    Regards
    s@k

    Solved..:)
    Solution:
    While creating the ALV grid, use the method 'get_layout' of the class CL_SALV_TABLE and get the reference of the layout in a reference variable.
    Data:
          gw_key       TYPE            salv_s_layout_key.
      gr_layout = gr_grid->get_layout( ).
      gw_key-report = sy-cprog.
      gw_key-logical_group = gc_log_grp." Pass the logical group here say logical group: 0001, 0002, etc. for each ALV
    So, whenever you create/ change a layout on the ALV grid, the system automatically passes this logical group and saves it in the table LTDX.
    Regards
    s@k

  • Variant in  alv report

    I created one alv report zdisplay_serial  ...the program  gives output as par requirement..my problem is with variant..my requirement is to display all the  variants with that alv  output...plz guide  for this problem...

    Hi
    The variants are managed by the ALV, the system sets the pushbuttons in the ALV status gui to manage them; it makes sure to transfer all main elements to ALV: report and user name.
    TABLES DISVARIANT.
    DISVARIANT-REPORT   = SY-REPID.
    DISVARIANT-USERNAME = SY-UNAME.
    So it needs to transfer it to ALV fm (or OO ALV)
    CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
           EXPORTING
              I_CALLBACK_PROGRAM       = GT_REPID
              I_SAVE                   = 'A'
             IS_VARIANT               = DISVARIANT
    But I still don't undesrtand what u need
    Max

  • To make different colours for the columns of ALV report in Grid display.

    Hai Friends,
                       I have created an ALV report in grid display method by using the call function reuse_alv_grid_display.
    I have obtained the report.In that report i want to change the colour of each column.Plz provide the answer with a sample program.
                    Thank u.

    hi i had a program  for the rows with diff colors....do the same thing for the columns..
    REPORT  zdemo_alvgrid                 .
    TABLES:     ekko.
    type-pools: slis.                                 "ALV Declarations
    *Data Declaration
    TYPES: BEGIN OF t_ekko,
      ebeln TYPE ekpo-ebeln,
      ebelp TYPE ekpo-ebelp,
      statu TYPE ekpo-statu,
      aedat TYPE ekpo-aedat,
      matnr TYPE ekpo-matnr,
      menge TYPE ekpo-menge,
      meins TYPE ekpo-meins,
      netpr TYPE ekpo-netpr,
      peinh TYPE ekpo-peinh,
      line_color(4) type c,     "Used to store row color attributes
    END OF t_ekko.
    DATA: it_ekko TYPE STANDARD TABLE OF t_ekko INITIAL SIZE 0,
          wa_ekko TYPE t_ekko.
    *ALV data declarations
    data: fieldcatalog type slis_t_fieldcat_alv with header line,
          gd_tab_group type slis_t_sp_group_alv,
          gd_layout    type slis_layout_alv,
          gd_repid     like sy-repid.
    *Start-of-selection.
    START-OF-SELECTION.
    perform data_retrieval.
    perform build_fieldcatalog.
    perform build_layout.
    perform display_alv_report.
    *&      Form  BUILD_FIELDCATALOG
          Build Fieldcatalog for ALV Report
    form build_fieldcatalog.
      fieldcatalog-fieldname   = 'EBELN'.
      fieldcatalog-seltext_m   = 'Purchase Order'.
      fieldcatalog-col_pos     = 0.
      fieldcatalog-outputlen   = 10.
      fieldcatalog-emphasize   = 'X'.
      fieldcatalog-key         = 'X'.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
      fieldcatalog-fieldname   = 'EBELP'.
      fieldcatalog-seltext_m   = 'PO Item'.
      fieldcatalog-col_pos     = 1.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
      fieldcatalog-fieldname   = 'STATU'.
      fieldcatalog-seltext_m   = 'Status'.
      fieldcatalog-col_pos     = 2.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
      fieldcatalog-fieldname   = 'AEDAT'.
      fieldcatalog-seltext_m   = 'Item change date'.
      fieldcatalog-col_pos     = 3.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
      fieldcatalog-fieldname   = 'MATNR'.
      fieldcatalog-seltext_m   = 'Material Number'.
      fieldcatalog-col_pos     = 4.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
      fieldcatalog-fieldname   = 'MENGE'.
      fieldcatalog-seltext_m   = 'PO quantity'.
      fieldcatalog-col_pos     = 5.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
      fieldcatalog-fieldname   = 'MEINS'.
      fieldcatalog-seltext_m   = 'Order Unit'.
      fieldcatalog-col_pos     = 6.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
      fieldcatalog-fieldname   = 'NETPR'.
      fieldcatalog-seltext_m   = 'Net Price'.
      fieldcatalog-col_pos     = 7.
      fieldcatalog-outputlen   = 15.
      fieldcatalog-datatype     = 'CURR'.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
      fieldcatalog-fieldname   = 'PEINH'.
      fieldcatalog-seltext_m   = 'Price Unit'.
      fieldcatalog-col_pos     = 8.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
    endform.                    " BUILD_FIELDCATALOG
    *&      Form  BUILD_LAYOUT
          Build layout for ALV grid report
    form build_layout.
      gd_layout-no_input          = 'X'.
      gd_layout-colwidth_optimize = 'X'.
      gd_layout-totals_text       = 'Totals'(201).
    Set layout field for row attributes(i.e. color)
      gd_layout-info_fieldname =      'LINE_COLOR'.
    endform.                    " BUILD_LAYOUT
    *&      Form  DISPLAY_ALV_REPORT
          Display report using ALV grid
    form display_alv_report.
      gd_repid = sy-repid.
      call function 'REUSE_ALV_GRID_DISPLAY'
           exporting
                i_callback_program      = gd_repid
                is_layout               = gd_layout
                it_fieldcat             = fieldcatalog[]
                i_save                  = 'X'
           tables
                t_outtab                = it_ekko
           exceptions
                program_error           = 1
                others                  = 2.
      if sy-subrc <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      endif.
    endform.                    " DISPLAY_ALV_REPORT
    *&      Form  DATA_RETRIEVAL
          Retrieve data form EKPO table and populate itab it_ekko
    form data_retrieval.
    data: ld_color(1) type c.
    select ebeln ebelp statu aedat matnr menge meins netpr peinh
    up to 10 rows
      from ekpo
      into table it_ekko.
    *Populate field with color attributes
    loop at it_ekko into wa_ekko.
      ld_color = ld_color + 1.
    Only 7 colours so need to reset color value
      if ld_color = 8.
        ld_color = 1.
      endif.
      concatenate 'C' ld_color '10' into wa_ekko-line_color.
    wa_ekko-line_color = 'C410'.
      modify it_ekko from wa_ekko.
    endloop.
    endform.                    " DATA_RETRIEVAL
    regards,
    venkat

  • Color for negative Values in ALV Report

    I want to change the color for negative values displayed in ALV list diplay report. Eg. -5 in Quantity should be changed to orange. Kindly help me
    Thanks

    Check the below program and bold one are important ( which is similar to MD05 Traffic lights )
    REPORT ZWM_BIN_STOCK_REQ no standard page heading
                        message-id zwave.
    D A T A   D E C L A R A T I O N ****************************
    Tables
    tables :zpwvbap,
             mara,
             marc,
             makt,
             vbap,
             zshift,
             marm,
             lqua.
    TYPE-POOLS: SLIS.
    Internal Table for Sales order
    data : begin of i_vbap occurs 0,
           matnr like zpwvbap-matnr," Material #
           ZZCUTOFF like zpwvbak-ZZCUTOFF," Cutoff Time
           vlpla like zpwvbap-vlpla,
           kwmeng like zpwvbap-kwmeng," Quantity
           vrkme  like zpwvbap-vrkme, " Sales Unit
           meins like zpwvbap-meins, " Unit of measure
           end of i_vbap.
    Internal Table for final Processing
    data : begin of i_final occurs 0,
           date(8) type c,
           matnr like zpwvbap-matnr," Material #
           zzshift like zshift-zzshift, " Wave Drop
           maktx like makt-maktx," Desc
           lgpla like lagp-lgpla, " Pick Bin
           pverme like lqua-verme," Stock at Pick Bin
           prverme like lqua-verme," Stock at Prod Bin
           kwmeng like zpwvbap-kwmeng," Requiremnet from Wave Drop
           vrkme  like zpwvbap-vrkme, " Sales Unit
          meins like zpwvbap-meins," Unit of measure
           end of i_final.
    Internal Table for Output
    data : begin of i_output occurs 0,
         <b>  field type c, " Traffic Lights</b>     
          zzshift like zshift-zzshift, " Wave Drop
           matnr like zpwvbap-matnr," Material #
           maktx like makt-maktx," Desc
           lgpla like lagp-lgpla, " Pick Bin
           pverme like lqua-verme," Stock at Pick Bin
           prverme like lqua-verme," Stock at Prod Bin
           kwmeng like zpwvbap-kwmeng," Requiremnet from Wave Drop
           vrkme like zpwvbap-vrkme," Sales Unit
          meins like zpwvbap-meins," Unit of measure
           diff like zpwvbap-kwmeng, " Diffrence
           end of i_output.
    Work Area for Final Internal Table
    data wa_final like i_final.
    data :  w_zzcutoff(12) TYPE c,
            v_date type sy-datum,
            v_time(4) type c,
            v_fldate(12) type c,
            v_fhdate(12) type c,
            v_pverme like lqua-verme,
            v_prverme like lqua-verme,
            v_diff like zpwvbap-kwmeng.
    Variables for new check box
    data : v_nverme like lqua-verme.
    Internal Table for Pick Bin
    data : begin of i_verme occurs 0,
           verme like lqua-verme,
           end of i_verme.
    Internal table for Prod Bin
    data : begin of i_pverme occurs 0,
           verme like lqua-verme,
           end of i_pverme.
    Variables for ALV
    DATA: FIELDCAT           TYPE SLIS_T_FIELDCAT_ALV,
          FIELDCAT_LN        LIKE LINE OF FIELDCAT,
          SORTCAT            TYPE SLIS_T_SORTINFO_ALV,
          SORTCAT_LN         LIKE LINE OF SORTCAT,
          EVENTCAT           TYPE SLIS_T_EVENT,
          EVENTCAT_LN        LIKE LINE OF EVENTCAT,
          LAYOUT             TYPE SLIS_LAYOUT_ALV,
          C_TOP_OF_PAGE      TYPE SLIS_FORMNAME VALUE 'TOP_OF_PAGE',
          g_user_command TYPE slis_formname VALUE 'USER_COMMAND',
          GT_LIST_TOP_OF_PAGE TYPE SLIS_T_LISTHEADER.
    DATA: COL_POS TYPE I,
          P_LIGNAM TYPE SLIS_FIELDNAME VALUE  'FIELD'.
    DATA : V_REPID LIKE SY-REPID,
           flag type c.
    S E L E C T I O N - S C R E E N *************************
    selection-screen : begin of block blk with frame title text-001.
    parameter : p_plant like marc-werks obligatory default '1000'.
    select-options : s_date for sy-datum obligatory ,
                     s_shift for zshift-zzshift,
                     s_matnr for mara-matnr,
                     s_dept for zpwvbap-zzdept,
                     s_pdept for marc-ZZPRODDEPT.
    selection-screen: end of block blk.
    parameters : p_check as checkbox ."default 'X'.
    ranges r_cutoff for  w_zzcutoff.
    I N I T I A L I Z A T I O N ****************************
    initialization.
      V_REPID = SY-REPID.
      s_date-low = sy-datum + 1.
      append s_date.
    S T A R T - O F - S E L E C T I O N  ***********************
    start-of-selection.
    Get the Shift Data.
      PERFORM GET_SHIFT_DETAILS.
    Get the data from ZPWVBAP Table
      PERFORM GET_DATA_VBAP.
    E N D - O F - S E L E C T I O N **********************
    end-of-selection.
      if not i_output[] is initial.
        sort i_output by field zzshift matnr.
    Reset the all Fiedcatlog.
        PERFORM RESETVALUES.
    Traffic Lights
        PERFORM BUILD_LAYOUT.
    Fill the fieldcatlog values
        PERFORM FILL_FIELDCATLOG.
    Call the List Function module
        PERFORM CALL_lIST.
      endif.
    *&      Form  GET_SHIFT_DETAILS
          Get the Cutoff Time.
    FORM GET_SHIFT_DETAILS.
      clear : v_fldate,
              v_fhdate.
      if not s_shift-low is initial.
        clear: v_time,
               v_date.
        if s_shift-low = '1'.
          v_time = '2000'.
        elseif s_shift-low = '2'.
          v_time = '2300'.
        endif.
        v_date = s_date-low - 1.
        concatenate v_date v_time into v_fldate.
      endif.
      if not s_shift-high is initial.
        clear : v_date,
                v_time.
        if s_shift-high = '1'.
          v_time = '2000'.
        elseif s_shift-high = '2'.
          v_time = '2300'.
        endif.
        if not s_date-high is initial.
          v_date = s_date-high - 1.
        else.
          v_date = s_date-low - 1.
        endif.
        concatenate v_date v_time into v_fhdate.
      endif.
      if not v_fhdate is initial.
        r_cutoff-low = v_fldate.
        r_cutoff-high = v_fhdate.
        r_cutoff-sign = 'I'.
        r_cutoff-option = 'BT'.
        append r_cutoff.
      endif.
    ENDFORM.                    " GET_SHIFT_DETAILS
    *&      Form  GET_DATA_VBAP
          Get the data from ZPWVBAP Table
    FORM GET_DATA_VBAP.
    Get the data from ZPWVBAP and ZPWVBAK Table
      if not v_fhdate is initial.
        select matnr ZZCUTOFF  vlpla sum( kwmeng ) vrkme meins
                     into table i_vbap
                     from zpwvbap as a inner join zpwvbak as b on
                                   a~vbeln = b~vbeln
                                   where a~werks = p_plant
                                   and   a~matnr in s_matnr
                                   and b~vdatu in s_date
                                   and a~zzdept in s_dept
                                   and b~zzcutoff in r_cutoff
                                  group by matnr zzcutoff vlpla vrkme meins.
      elseif not v_fldate is initial.
        select matnr ZZCUTOFF vlpla sum( kwmeng ) vrkme meins
                           into table i_vbap
                           from zpwvbap as a inner join zpwvbak as b on
                                   a~vbeln = b~vbeln
                                   where a~werks = p_plant
                                   and   a~matnr in s_matnr
                                   and b~vdatu in s_date
                                   and a~zzdept in s_dept
                                   and b~zzcutoff = v_fldate
                               group by matnr zzcutoff vlpla vrkme meins.
      else.
        select matnr ZZCUTOFF vlpla sum( kwmeng ) vrkme meins
                              into table i_vbap
           from zpwvbap as a inner join zpwvbak as b on
                                   a~vbeln = b~vbeln
                                   where a~werks = p_plant
                                   and   a~matnr in s_matnr
                                   and b~vdatu in s_date
                                   and a~zzdept in s_dept
                                   and b~zzcutoff in r_cutoff
                                group by matnr zzcutoff vlpla vrkme meins .
      endif.
      if sy-subrc ne 0.
        message i000(zwave) with 'No data found for given selection'.
        stop.
      endif.
      sort i_vbap by zzcutoff matnr.
      loop at i_vbap.
        clear : v_pverme,
                v_prverme.
    Compare the data with pick method
        select single zzpick from marc into marc-zzpick
                             where matnr = i_vbap-matnr
                             and   werks = p_plant
                             and   zzpick = '01'.
        if sy-subrc ne 0.
          continue.
        endif.
    Compare the data from MARC Table with Production Department
        select single zzPRODdept from marc into marc-zzPRODdept
                             where matnr = i_vbap-matnr
                             and werks = p_plant
                             and  zzPRODdept in s_pdept.
        if sy-subrc ne 0.
          continue.
        endif.
    Get the Material Description from MAKT Table
        Select single maktx from makt into makt-maktx
                            where matnr = i_vbap-matnr
                            and   spras = 'E'.
        if sy-subrc eq 0.
          i_final-maktx = makt-maktx.
        endif.
    Get the Pick Bin
        i_final-lgpla = i_vbap-vlpla.
        refresh i_verme.
        clear i_verme.
    Get the stock at Pick bin
        select verme  from lqua into table i_verme
                            where lgpla = i_vbap-vlpla
                            and   matnr = i_vbap-matnr
                            and   LGNUM = '100'.
        if sy-subrc eq 0.
          loop at i_verme.
            v_pverme = v_pverme + i_verme-verme.
          endloop.
          if sy-subrc eq 0.
            i_final-pverme = v_pverme.
          endif.
        endif.
        refresh i_pverme.
        clear i_pverme.
    Get the stock at Production bin
        select  verme from lqua into table i_pverme
                           where matnr = i_vbap-matnr
                           and   LGNUM = '100'
                       and ( lgpla = '9595959595' or
                             lgpla = '2222222222' or
                             lgpla = '5555555555' or
                             lgpla = '3232323232' or
                             lgpla = '8080808080' or
                             lgpla = '4040404040' or
                             lgpla = '9090909090' ).
        if sy-subrc eq 0.
          loop at i_pverme.
            v_prverme = v_prverme + i_pverme-verme.
          endloop.
          if sy-subrc eq 0.
            i_final-prverme = v_prverme.
          endif.
        endif.
    Compare the unit of measure and sales unit
        if i_vbap-vrkme ne i_vbap-meins.
    Get the data from MARM Table ( Unit of measure )
          select single * from marm into marm
                               where matnr = i_vbap-matnr
                               and   meinh = i_vbap-vrkme.
          if sy-subrc eq 0.
            i_final-pverme = ( i_final-pverme * marm-umren ) / marm-umrez.
          endif.
        endif.
    Material #
        i_final-matnr = i_vbap-matnr.
    Quantity from ZPWVBAP
        i_final-kwmeng = i_vbap-kwmeng.
    Unit of Measure
       i_final-meins = i_vbap-meins.
    Sales Unit
        i_final-vrkme = i_vbap-vrkme.
    Wave Drop
        if i_vbap-ZZCUTOFF+8(4) = '2000' .
          i_final-zzshift = '1'.
        endif.
        if i_vbap-zzcutoff+8(4) = '2300'.
          i_final-zzshift = '2'.
        endif.
        i_final-date = i_vbap-zzcutoff+0(8).
        append i_final.
        clear : i_final,
                i_vbap.
    **Difference
       i_output-diff = i_output-pverme - i_vbap-kwmeng.
    Traffic Lights Depends on value
       if i_output-pverme > i_output-kwmeng.
         i_output-field = '3'.
       elseif i_output-pverme < i_output-kwmeng.
         i_output-field = '1'.
       elseif i_output-pverme = i_output-kwmeng.
         i_output-field = '2'.
       endif.
       append i_output.
       clear : i_output,
               i_vbap.
      endloop.
      refresh i_vbap.
      sort i_final by date matnr zzshift.
    Processing the internal table to get same material with pick quantity
    deduction even it for 2nd shift
      loop at i_final.
    Move the data into work area in order remove #
        move i_final to wa_final.
        clear : flag.
        at new matnr.
          move : wa_final-matnr to i_output-matnr," Material #
                 wa_final-maktx to i_output-maktx," Desc
                 wa_final-lgpla to i_output-lgpla," Pick Bin
                 wa_final-kwmeng to i_output-kwmeng," Order qty
                 wa_final-zzshift to i_output-zzshift," Shift
                 wa_final-pverme to i_output-pverme, " Pick bin qty
                 wa_final-vrkme  to i_output-vrkme," Sales Unit
                 wa_final-prverme to i_output-prverme. " Prod Bin Qty
    Difference
          i_output-diff = i_output-pverme - i_output-kwmeng.
    New logic for Only HMR Department
        <b>  if p_check = 'X'.
            if i_output-pverme < i_output-kwmeng.
              v_nverme = i_output-pverme + i_output-prverme.
              if v_nverme > i_output-kwmeng.
               if i_output-pverme < i_output-kwmeng.
               i_output-field = '2'.
                else.
    Traffic Lights Depends on value
                i_output-field = '3'.
                endif.
              elseif v_nverme < i_output-kwmeng.
                i_output-field = '1'.
              elseif v_nverme = i_output-kwmeng.
                i_output-field = '2'.
              endif.
            elseif i_output-pverme > i_output-kwmeng.
              i_output-field = '3'.
            elseif i_output-pverme = i_output-kwmeng.
              i_output-field = '3'.
            endif.
          else.
    Traffic Lights Depends on value
            if i_output-pverme > i_output-kwmeng.
              i_output-field = '3'.
            elseif i_output-pverme < i_output-kwmeng.
              i_output-field = '1'.
            elseif i_output-pverme = i_output-kwmeng.
              i_output-field = '2'.
            endif.
          endif.
          move i_output-diff to v_diff.
          flag = 'X'.
        endat.</b>
        if flag ne 'X'.
          move : wa_final-matnr to i_output-matnr," Material #
                 wa_final-maktx to i_output-maktx," Desc
                 wa_final-lgpla to i_output-lgpla," Pick Bin
                 wa_final-kwmeng to i_output-kwmeng," Order qty
                 wa_final-zzshift to i_output-zzshift," Shift
                 wa_final-vrkme  to i_output-vrkme," Sales Unit
                 wa_final-prverme to i_output-prverme. " Prod Bin Qty
      Move Diffrence value
          move v_diff to i_output-pverme.
          clear: v_diff.
    New logic for Only HMR Department
    New logic for Only HMR Department
          if p_check = 'X'.
            if i_output-pverme < i_output-kwmeng.
              v_nverme = i_output-pverme + i_output-prverme.
              if v_nverme > i_output-kwmeng.
              if i_output-pverme < i_output-kwmeng.
               i_output-field = '2'.
                else.
    Traffic Lights Depends on value
                i_output-field = '3'.
                endif.
    Traffic Lights Depends on value
               i_output-field = '3'.
              elseif v_nverme < i_output-kwmeng.
                i_output-field = '1'.
              elseif v_nverme = i_output-kwmeng.
                i_output-field = '2'.
              endif.
            elseif i_output-pverme > i_output-kwmeng.
              i_output-field = '3'.
            elseif i_output-pverme = i_output-kwmeng.
              i_output-field = '3'.
            endif.
    i_output-diff = i_output-pverme - i_output-kwmeng.
          else.
    Difference
            i_output-diff = i_output-pverme - i_output-kwmeng.
    Traffic Lights Depends on value
            if i_output-pverme > i_output-kwmeng.
              i_output-field = '3'.
            elseif i_output-pverme < i_output-kwmeng.
              i_output-field = '1'.
            elseif i_output-pverme = i_output-kwmeng.
              i_output-field = '2'.
            endif.
          endif.
        endif.
        append i_output.
        clear : i_output,
                wa_final,
                i_final,
                 v_nverme.
      endloop.
      sort i_output by field zzshift matnr.
    ENDFORM.                    " GET_DATA_VBAP
    *&      Form  RESETVALUES
          Reset the all fieldcatlogs
    FORM RESETVALUES.
      FIELDCAT_LN-KEY = SPACE.
      FIELDCAT_LN-DO_SUM = SPACE.
      FIELDCAT_LN-NO_OUT = SPACE.
      FIELDCAT_LN-QFIELDNAME = SPACE.
      FIELDCAT_LN-HOTSPOT = SPACE.
      FIELDCAT_LN-OUTPUTLEN = '0'.
      CLEAR: fieldcat_ln-seltext_l, fieldcat_ln-seltext_m,
             fieldcat_ln-seltext_s, fieldcat_ln-reptext_ddic.
    ENDFORM.                    " RESETVALUES
    *&      Form  FILL_FIELDCATLOG
          Fill the Fieldcatlog values
    FORM FILL_FIELDCATLOG.
      DATA: ls_fieldcat TYPE slis_fieldcat_alv.
    Trafiic Light
      CLEAR LS_FIELDCAT.
      LS_FIELDCAT-FIELDNAME    = 'FIELD'.
      LS_FIELDCAT-TABNAME    = 'I_OUTPUT'.
      LS_FIELDCAT-OUTPUTLEN    = 7.
      LS_FIELDCAT-col_pos    = '1'.
      ls_fieldcat-seltext_L = 'Lights'.
      ls_fieldcat-seltext_s = 'Lights'.
      ls_fieldcat-seltext_m = 'Lights'.
      APPEND LS_FIELDCAT TO FIELDCAT.
    Wave Drop
      CLEAR LS_FIELDCAT.
      LS_FIELDCAT-FIELDNAME    = 'ZZSHIFT'.
      LS_FIELDCAT-TABNAME    = 'I_OUTPUT'.
      LS_FIELDCAT-OUTPUTLEN    = 9.
      LS_FIELDCAT-col_pos    = '2'.
      ls_fieldcat-seltext_L = 'Wave Drop'.
      APPEND LS_FIELDCAT TO FIELDCAT.
    Material
      CLEAR LS_FIELDCAT.
      LS_FIELDCAT-FIELDNAME    = 'MATNR'.
      LS_FIELDCAT-ref_fieldname = 'MATNR'.
      LS_FIELDCAT-ref_tabname = 'MARA'.
      LS_FIELDCAT-TABNAME    = 'I_OUTPUT'.
      LS_FIELDCAT-OUTPUTLEN    = 18.
      LS_FIELDCAT-col_pos    = '3'.
      ls_fieldcat-seltext_L = 'Material'.
      APPEND LS_FIELDCAT TO FIELDCAT.
    Description
      CLEAR LS_FIELDCAT.
      LS_FIELDCAT-FIELDNAME    = 'MAKTX'.
      LS_FIELDCAT-TABNAME    = 'I_OUTPUT'.
      LS_FIELDCAT-OUTPUTLEN    = 40.
      LS_FIELDCAT-col_pos    = '4'.
      ls_fieldcat-seltext_L = 'Description'.
      APPEND LS_FIELDCAT TO FIELDCAT.
    Pick Bin
      CLEAR LS_FIELDCAT.
      LS_FIELDCAT-FIELDNAME    = 'LGPLA'.
      LS_FIELDCAT-TABNAME    = 'I_OUTPUT'.
      LS_FIELDCAT-OUTPUTLEN    = 15.
      LS_FIELDCAT-col_pos    = '5'.
      ls_fieldcat-seltext_L = 'Pick Bin'.
      APPEND LS_FIELDCAT TO FIELDCAT.
    Trafiic Light
      CLEAR LS_FIELDCAT.
      LS_FIELDCAT-FIELDNAME    = 'PVERME'.
      LS_FIELDCAT-TABNAME    = 'I_OUTPUT'.
      LS_FIELDCAT-OUTPUTLEN    = 16.
      LS_FIELDCAT-col_pos    = '6'.
      ls_fieldcat-seltext_L = 'Stock at Pick Bin'.
      APPEND LS_FIELDCAT TO FIELDCAT.
    Stock at Prod Bin
      CLEAR LS_FIELDCAT.
      LS_FIELDCAT-FIELDNAME    = 'PRVERME'.
      LS_FIELDCAT-TABNAME    = 'I_OUTPUT'.
      LS_FIELDCAT-OUTPUTLEN    = 16.
      LS_FIELDCAT-col_pos    = '7'.
      ls_fieldcat-seltext_L = 'Stock at Prod Bin'.
      APPEND LS_FIELDCAT TO FIELDCAT.
    Req from wave drop
      CLEAR LS_FIELDCAT.
      LS_FIELDCAT-FIELDNAME    = 'KWMENG'.
      LS_FIELDCAT-TABNAME    = 'I_OUTPUT'.
      LS_FIELDCAT-OUTPUTLEN    = 23.
      LS_FIELDCAT-col_pos    = '8'.
      ls_fieldcat-seltext_L = 'Requirement from Wave Drop'.
      APPEND LS_FIELDCAT TO FIELDCAT.
    Sales Unit
      CLEAR LS_FIELDCAT.
      LS_FIELDCAT-FIELDNAME    = 'VRKME'.
      LS_FIELDCAT-TABNAME    = 'I_OUTPUT'.
      LS_FIELDCAT-OUTPUTLEN    = 12.
      LS_FIELDCAT-col_pos    = '9'.
      ls_fieldcat-seltext_L = 'Sales Unit'.
      APPEND LS_FIELDCAT TO FIELDCAT.
    Unit of Measure
      CLEAR LS_FIELDCAT.
      LS_FIELDCAT-FIELDNAME    = 'MEINS'.
      LS_FIELDCAT-TABNAME    = 'I_OUTPUT'.
      LS_FIELDCAT-OUTPUTLEN    = 9.
      LS_FIELDCAT-col_pos    = '10'.
      ls_fieldcat-seltext_L = 'UNIT'.
      ls_fieldcat-no_out = 'X'.
      APPEND LS_FIELDCAT TO FIELDCAT.
    Diffference
      CLEAR LS_FIELDCAT.
      LS_FIELDCAT-FIELDNAME    = 'DIFF'.
      LS_FIELDCAT-TABNAME    = 'I_OUTPUT'.
      LS_FIELDCAT-OUTPUTLEN    = 12.
      LS_FIELDCAT-col_pos    = '11'.
      ls_fieldcat-seltext_L = 'Difference'.
      APPEND LS_FIELDCAT TO FIELDCAT.
    ENDFORM.                    " FILL_FIELDCATLOG
    *&      Form  CALL_lIST
          Use ALV Function module to display output
    FORM CALL_lIST.
    Top - of - Page
      PERFORM COMMENT_BUILD USING GT_LIST_TOP_OF_PAGE[].
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
       EXPORTING
      I_INTERFACE_CHECK                 = ' '
      I_BYPASSING_BUFFER                =
      I_BUFFER_ACTIVE                   = ' '
          I_CALLBACK_PROGRAM                = V_REPID
      I_CALLBACK_PF_STATUS_SET          = ' '
        I_CALLBACK_USER_COMMAND           = g_user_command
          I_CALLBACK_TOP_OF_PAGE            = C_TOP_OF_PAGE
      I_CALLBACK_HTML_TOP_OF_PAGE       = ' '
      I_CALLBACK_HTML_END_OF_LIST       = ' '
      I_STRUCTURE_NAME                  =
      I_BACKGROUND_ID                   = ' '
      I_GRID_TITLE                      =
      I_GRID_SETTINGS                   =
          IS_LAYOUT                         = LAYOUT
          IT_FIELDCAT                       = FIELDCAT
      IT_EXCLUDING                      =
      IT_SPECIAL_GROUPS                 =
      IT_SORT                           =
      IT_FILTER                         =
      IS_SEL_HIDE                       =
      I_DEFAULT                         = 'X'
      I_SAVE                            = ' '
      IS_VARIANT                        =
      IT_EVENTS                         =
      IT_EVENT_EXIT                     =
      IS_PRINT                          =
      IS_REPREP_ID                      =
      I_SCREEN_START_COLUMN             = 0
      I_SCREEN_START_LINE               = 0
      I_SCREEN_END_COLUMN               = 0
      I_SCREEN_END_LINE                 = 0
      IT_ALV_GRAPHICS                   =
      IT_ADD_FIELDCAT                   =
      IT_HYPERLINK                      =
      I_HTML_HEIGHT_TOP                 =
      I_HTML_HEIGHT_END                 =
      IT_EXCEPT_QINFO                   =
    IMPORTING
      E_EXIT_CAUSED_BY_CALLER           =
      ES_EXIT_CAUSED_BY_USER            =
        TABLES
          T_OUTTAB                          = I_OUTPUT
       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.                    " CALL_lIST
    *&      Form  BUILD_LAYOUT
          text
    FORM BUILD_LAYOUT.
      LAYOUT-GET_SELINFOS = 'X'.
    Now we want a traffic light to say if the Truck is deleted
    the variable p_lignam contains the name in IREPO which stores the
    value for the traffic light
      LAYOUT-LIGHTS_FIELDNAME = P_LIGNAM.
      layout-HEADER_TEXT = 'Lights'.
      LAYOUT-LIGHTS_CONDENSE =  'X'.
    ENDFORM.                    " BUILD_LAYOUT
    *&      Form  COMMENT_BUILD
          text
         -->P_GT_LIST_TOP_OF_PAGE[]  text
    FORM COMMENT_BUILD USING    LT_TOP_OF_PAGE TYPE
                                            SLIS_T_LISTHEADER.
      data : v_day(2) type c,
             v_mon(2) type c,
             v_year(4) type c,
             v_ldate(10) type c,
             v_hdate(10) type c.
      DATA: LS_LINE TYPE SLIS_LISTHEADER.
      data: d_date like sy-datum.
      clear : v_ldate,
              v_hdate.
    Header Information.
    LIST HEADING LINE: TYPE H
      CLEAR LS_LINE.
      LS_LINE-TYP  = 'H'.
    LS_LINE-KEY:  NOT USED FOR THIS TYPE
      LS_LINE-INFO = 'Bin Replenishment report for HMR'.
      APPEND LS_LINE TO LT_TOP_OF_PAGE.
    STATUS LINE: TYPE S
      CLEAR LS_LINE.
      LS_LINE-TYP  = 'S'.
      LS_LINE-KEY  = TEXT-003.
    LS_LINE-INFO = TEXT-003.
      APPEND LS_LINE TO LT_TOP_OF_PAGE.
    STATUS LINE: TYPE S
      CLEAR LS_LINE.
      LS_LINE-TYP  = 'S'.
    LS_LINE-KEY  = TEXT-003.
    LS_LINE-INFO = TEXT-003.
      APPEND LS_LINE TO LT_TOP_OF_PAGE.
    Get the data ( s_date_low) into proper format.
      v_year = s_date-low+0(4).
      v_mon = s_date-low+4(2).
      v_day = s_date-low+6(2).
      concatenate v_mon '/' v_day '/' v_year into v_ldate.
      clear : v_mon,
              v_year,
              v_day.
    Get the data ( s_date_high) into proper format.
      v_year = s_date-high+0(4).
      v_mon  = s_date-high+4(2).
      v_day  = s_date-high+6(2).
      concatenate v_mon '/' v_day '/' v_year into v_hdate.
      clear : v_mon,
              v_year,
              v_day.
    Delivery date
      if not s_date-low is initial .
        if not s_date-high is initial.
          CLEAR LS_LINE.
          LS_LINE-TYP  = 'S'.
          LS_LINE-KEY  = 'Delivery date From:'.
          LS_LINE-INFO = v_ldate.
          APPEND LS_LINE TO LT_TOP_OF_PAGE.
          CLEAR LS_LINE.
          LS_LINE-TYP  = 'S'.
          LS_LINE-KEY  = 'Delivery date To :'.
          LS_LINE-INFO =  v_hdate.
          APPEND LS_LINE TO LT_TOP_OF_PAGE.
        endif.
      endif.
      if not s_date-low is initial.
        if  s_date-high is initial.
          CLEAR LS_LINE.
          LS_LINE-TYP  = 'S'.
          LS_LINE-KEY  = 'Delivery date :'.
          LS_LINE-INFO = v_ldate.
          APPEND LS_LINE TO LT_TOP_OF_PAGE.
        endif.
      endif.
    Wave Drop
      if not S_SHIFT-LOW is initial.
        if not S_SHIFT-high is initial.
          CLEAR LS_LINE.
          LS_LINE-TYP  = 'S'.
          LS_LINE-KEY  = 'Wave Drop From :'.
          LS_LINE-INFO = s_shift-low.
          APPEND LS_LINE TO LT_TOP_OF_PAGE.
          CLEAR LS_LINE.
          LS_LINE-TYP  = 'S'.
          LS_LINE-KEY  = 'Wave Drop to :'.
          LS_LINE-INFO = s_shift-high.
          APPEND LS_LINE TO LT_TOP_OF_PAGE.
        endif.
      endif.
      if not S_SHIFT-LOW is initial.
        if S_SHIFT-high is initial.
          CLEAR LS_LINE.
          LS_LINE-TYP  = 'S'.
          LS_LINE-KEY  = 'Wave Drop :'.
          LS_LINE-INFO = s_shift-low.
          APPEND LS_LINE TO LT_TOP_OF_PAGE.
         CLEAR LS_LINE.
         LS_LINE-TYP  = 'S'.
         LS_LINE-KEY  = 'Wave Drop to :'.
         LS_LINE-INFO = s_shift-high.
         APPEND LS_LINE TO LT_TOP_OF_PAGE.
        endif.
      endif.
    Department
      if not s_dept-low is initial .
        if not s_dept-high is initial.
          CLEAR LS_LINE.
          LS_LINE-TYP  = 'S'.
          LS_LINE-KEY  = 'Department From :'.
          LS_LINE-INFO = s_dept-low.
          APPEND LS_LINE TO LT_TOP_OF_PAGE.
          CLEAR LS_LINE.
          LS_LINE-TYP  = 'S'.
          LS_LINE-KEY  = 'Department to :'.
          LS_LINE-INFO = s_dept-high.
          APPEND LS_LINE TO LT_TOP_OF_PAGE.
        endif.
      endif.
      if not s_dept-low is initial .
        if  s_dept-high is initial.
          CLEAR LS_LINE.
          LS_LINE-TYP  = 'S'.
          LS_LINE-KEY  = 'Department :'.
          LS_LINE-INFO = s_dept-low.
          APPEND LS_LINE TO LT_TOP_OF_PAGE.
        endif.
      endif.
    Production Department
      if not S_PDEPT-LOW is initial.
        if not S_PDEPT-high is initial.
          CLEAR LS_LINE.
          LS_LINE-TYP  = 'S'.
          LS_LINE-KEY  = 'Production Department From :'.
          LS_LINE-INFO = S_PDEPT-LOW.
          APPEND LS_LINE TO LT_TOP_OF_PAGE.
          CLEAR LS_LINE.
          LS_LINE-TYP  = 'S'.
          LS_LINE-KEY  = 'Production Department to :'.
          LS_LINE-INFO = S_PDEPT-high.
          APPEND LS_LINE TO LT_TOP_OF_PAGE.
        endif.
      endif.
      if not S_PDEPT-LOW is initial.
        if  S_PDEPT-high is initial.
          CLEAR LS_LINE.
          LS_LINE-TYP  = 'S'.
          LS_LINE-KEY  = 'Production Department :'.
          LS_LINE-INFO = S_PDEPT-LOW.
          APPEND LS_LINE TO LT_TOP_OF_PAGE.
        endif.
      endif.
    ENDFORM.                    " COMMENT_BUILD
          FORM TOP_OF_PAGE                                              *
    FORM TOP_OF_PAGE.
      CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
        EXPORTING
          IT_LIST_COMMENTARY       = GT_LIST_TOP_OF_PAGE
      I_LOGO                   =
      I_END_OF_LIST_GRID       =
    ENDFORM.
          FORM USER_COMMAND                                             *
    FORM user_command USING r_ucomm LIKE sy-ucomm
                rs_selfield TYPE slis_selfield.                 "#EC CALLED
      CASE R_UCOMM.
        WHEN '&IC1'.
          read table i_output index rs_selfield-tabindex.
          SET PARAMETER ID 'MAT' FIELD i_output-matnr.
          SET PARAMETER ID 'WRK' FIELD p_plant.
          if not i_output-matnr is initial.
            call transaction 'MD04' and skip first screen.
          endif.
      ENDCASE.
    ENDFORM.
    the above code i mentioned 1,2 ,3 values  ,1 will have green color,2 will have yellow color,3 will have red color.
    Thanks
    Seshu

  • Choose for Selection option in ALV report

    Hi SAP experts,
    There is a requirement of using the functionality of Settings->Field for selection functionality in our ALV report.
    Please suggest some way to implement it. I am attaching the screenshot. This functionality i need to use in alv report. Thanks in advance
    Thanks & regards
    Pratham kapoor

    Hello,
    in an ALV-Report you could just use get_selinfos = 'X' in the layout-workarea.
    Check the docu on parameter IS_LAYOUT in REUSE_ALV_LIST_DISPLAY.
    Or you could use the fuction you wrote about and print these information at the TOP_OF_PAGE event.
    Regards Wolfgang

  • Display Color for sigle  CELL in ALV report

    Hi all,
    I have one doubt is it possible to make a particular cell as read color in ALV.
    Ex: I have one field which shows amount in my ALV report,My requirement is that when ever the amount is less then 'ZERO', I have to show that particular cell in read color.
    Regards
    Anil Kumar.N

    hi,
    here code for coloring a perticular cell
    TYPE-POOLS:slis.
    TABLES:mara,
           makt,
           marc.
    DATA:BEGIN OF itab OCCURS 0,
          matnr LIKE mara-matnr,
          maktx LIKE makt-maktx,
          werks LIKE marc-werks,
          mtart LIKE mara-mtart,
          matkl LIKE mara-matkl,
          meins LIKE mara-meins,
          ntgew LIKE mara-ntgew,
         rowcolor(4) TYPE c,
          cellcolors TYPE lvc_t_scol,
         END OF itab.
    DATA:t_fcat TYPE slis_t_fieldcat_alv,
         t_eve TYPE slis_t_event.
    DATA : st_layout TYPE slis_layout_alv.
    SELECTION-SCREEN:BEGIN OF BLOCK blk1 WITH FRAME TITLE text-001.
    SELECT-OPTIONS:mat FOR mara-matnr.  " no intervals no-extension.
    *PARAMETERS:mat LIKE mara-matnr.
    SELECTION-SCREEN:END OF BLOCK blk1.
    INITIALIZATION.
      PERFORM build_cata USING t_fcat.
      PERFORM build_event.
    START-OF-SELECTION.
      PERFORM data_retrieval.
      PERFORM display_data.
    *&      Form  build_cata
          text
         -->TEMP_FCAT  text
    FORM build_cata USING temp_fcat TYPE slis_t_fieldcat_alv.
      sy-tvar0 = sy-uname.
      WRITE sy-datum TO sy-tvar1.
      DATA:wa_fcat TYPE slis_fieldcat_alv.
      wa_fcat-tabname = 'ITAB'.
      wa_fcat-fieldname = 'MATNR'.
      wa_fcat-seltext_m = 'Material'.
      APPEND wa_fcat TO temp_fcat.
      wa_fcat-tabname = 'ITAB'.
      wa_fcat-fieldname = 'MAKTX'.
      wa_fcat-seltext_m = 'Description'.
      wa_fcat-fix_column = 'x'.
      wa_fcat-key = 'X'.                                     "To color a column
      APPEND wa_fcat TO temp_fcat.
      wa_fcat-tabname = 'ITAB'.
      wa_fcat-fieldname = 'WERKS'.
      wa_fcat-seltext_m = 'Plant'.
      wa_fcat-key = ' '.
      APPEND wa_fcat TO temp_fcat.
      wa_fcat-tabname = 'ITAB'.
      wa_fcat-fieldname = 'MTART'.
      wa_fcat-seltext_m = 'Type'.
      APPEND wa_fcat TO temp_fcat.
      wa_fcat-tabname = 'ITAB'.
      wa_fcat-fieldname = 'MATKL'.
      wa_fcat-seltext_m = 'Group'.
      APPEND wa_fcat TO temp_fcat.
      wa_fcat-tabname = 'ITAB'.
      wa_fcat-fieldname = 'MEINS'.
      wa_fcat-seltext_m = 'Measurement Unit'.
      APPEND wa_fcat TO temp_fcat.
      wa_fcat-tabname = 'ITAB'.
      wa_fcat-fieldname = 'NTGEW'.
      wa_fcat-seltext_m = 'Net Value'.
      APPEND wa_fcat TO temp_fcat.
    ENDFORM.                    "build_cata
    *&      Form  build_event
          text
    FORM build_event.
      CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
        EXPORTING
          i_list_type     = 0
        IMPORTING
          et_events       = t_eve
        EXCEPTIONS
          list_type_wrong = 1
          OTHERS          = 2.
      IF sy-subrc <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    ENDFORM.                    "build_event
    *&      Form  data_retrieval
          text
    FORM data_retrieval.
      SELECT maramatnr  maramtart maramatkl marameins mara~ntgew
       maktmaktx  marcwerks
      INTO CORRESPONDING FIELDS OF TABLE itab
      FROM mara INNER JOIN makt ON
      maramatnr = maktmatnr
      INNER JOIN marc ON
      maramatnr = marcmatnr
      WHERE mara~matnr IN mat.
      SORT itab BY matnr.
      DELETE ADJACENT DUPLICATES FROM itab.
    ENDFORM.                    "data_retrieval
    *&      Form  display_data
          text
    FORM display_data.
    *******************************For setting Cell Color*******************************************
      DATA ls_cellcolor TYPE lvc_s_scol .
      st_layout-coltab_fieldname = 'CELLCOLORS'.
      READ TABLE itab INDEX 5 .
      ls_cellcolor-fname = 'MATNR' .
      ls_cellcolor-color-col = '1' .
      ls_cellcolor-color-int = '1' .
      APPEND ls_cellcolor TO itab-cellcolors .
      MODIFY itab INDEX 5 .
    st_layout-colwidth_optimize = 'X'.
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
        EXPORTING
          i_callback_program = 'ZALV_DS'
          is_layout          = st_layout
          i_save             = 'A'
          it_fieldcat        = t_fcat
          it_events          = t_eve
        TABLES
          t_outtab           = itab
        EXCEPTIONS
          program_error      = 1
          OTHERS             = 2.
      IF sy-subrc <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    ENDFORM.                    "display_data
    Please reward if useful...

  • Providing F4 help for a feld in alv report

    Hi,
      I created ALV report.......In tthat report I want to allow the user to edit the field by
    providing F4 help for that field............
    Is there any ways two provide that............will be appreciated.
    Regards,
    Naveen M.

    pass the field name and db table name in the ref_fieldname and ref_tabname in fieldcatalog
    check this, this will clarify your doubt.
    type-POOLs : slis.
    data : BEGIN OF gt_vb OCCURS 0,
             auart type auart,
           END OF gt_vb.
    DATA : gt_vbak type STANDARD TABLE OF vbak,
           gt_fcat TYPE slis_t_fieldcat_alv,
           gs_fcat TYPE slis_fieldcat_alv.
    SELECT auart from vbak into TABLE gt_vb UP TO 50 ROWS."gt_vbak UP TO 50 ROWS.
    gs_fcat-col_pos = 1.
    gs_fcat-fieldname = 'AUART'.
    gs_fcat-ref_fieldname = 'AUART'.
    gs_fcat-ref_tabname = 'VBAK'.
    APPEND gs_fcat to gt_fcat.
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
       I_CALLBACK_PROGRAM                = sy-repid
       IT_FIELDCAT                       = gt_fcat
      TABLES
        t_outtab                          = gt_vb
    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.
    Edited by: soumya prakash mishra on Aug 17, 2009 10:54 AM

Maybe you are looking for