Reports used in Plant Maintanence

Hi,
  i'm very new to this group will anybody plz let me know
about the reports asked by the client in PM
Thanks,
sowji

hi
as i mentioned earlier in another forum you can use T code SAP1 and select the required module reports.
regards
thyagarajan

Similar Messages

  • Using Profit Center Accounting for balance sheet reporting on various plant

    Hi Gurus,
    Can anyone please tell me the steps I need to take to use PCA for balance sheet reporting on various plants under one company code. If there is a better way then please let me know. Thanks

    Hi,
    It depends on the organisation structure you decide on and as such PCA is recomended for your requirement.
    Cosider each plant as a Profit center and decide cost centers under each plant/profict centers.
    For all the materials under each plant assign the prfict center or that pant.
    Change the feild status groups for Profit centers as mandatory.
    If you are in 4.7EE You need to write derivaton rules & Assign dummy profit center for scenarios that overlap or for sales made by one plant of the stocks of other plant.
    Need to identify the Asset costcenter/Plant/location wise adn need to assign in ACSET.
    You need to rum F.5D , F.5E as period end process.
    Down payments need to be handled by way if user exits if you are in 4.7EE
    If you are in >= ECC5.0 then simply activating the document split will give you the PCA wise balances without much month end closing activities.
    Make Zero Balance and Profit centers as mandatory in document splitting charactersics.
    In any case you need to completely test the scenarios and how you are goinbg to get th eprofit center in all the scenarios.
    Reward if useful.
    Sarma

  • Authorization of alv report based on plants

    I have created a new alv report for sale order statement.The problem is which can be seen in all plants
    irespective of the user.Suppose our company has 5 palnt
    Plant 1100 to 1500
    The problem is suppose a user he has only rights in a prticular plant but he can see all the palnt sale order details
    How can we authorize this particular alv report based on the plants

    Hello,
    My assumption: You have Company Code(T001-BUKRS) in the selection-screen.
    Plz check the code snippet below:
    DATA:
    IT_PLANT TYPE STANDARD TABLE OF WERKS,
    WA_PLANT LIKE LINE OF IT_PLANT.
    DATA:
    IT_R_WERKS TYPE RANGE_T_WERKS_D,
    R_WERKS TYPE RANGE_S_WERKS_D.
    SELECT BWKEY INTO TABLE IT_PLANT
    FROM T001K
    WHERE BUKRS = '1000'. "--> Here you have to use your sel. scr. parameter
    IF SY-SUBRC = 0.
      SORT IT_PLANT BY WERKS.
    ENDIF.
    LOOP AT IT_PLANT INTO WA_PLANT.
    * Check the authority for the plant
      AUTHORITY-CHECK OBJECT 'M_MSEG_WMB'
               ID 'ACTVT' FIELD '03'
               ID 'WERKS' FIELD WA_PLANT-WERKS.
      IF SY-SUBRC = 0.
        R_WERKS-SIGN = 'I'.
        R_WERKS-OPTION = 'EQ'.
        R_WERKS-LOW = WA_PLANT-WERKS.
        APPEND R_WERKS TO IT_R_WERKS.
        CLEAR R_WERKS.
      ENDIF.
    ENDLOOP.
    IF IT_R_WERKS IS NOT INITIAL.
      "Select data using the Plants for which user is authorised
    ELSE.
      "User has no authority to display any Plant data
    ENDIF.
    Hope this is of some help to you.
    BR,
    Suhas
    Edited by: Suhas Saha on Mar 18, 2009 10:18 AM

  • Example of  a Simple ALV Report using Function Modules (not OO)

    Hi,
    I am new to ABAP. Where can I get a proper Example of  a Simple ALV Report using Function Modules?  I searched the forum but did not find a proper solution. Kindly help.
    Smruthi.
    Edited by: Smruthi Acharya on Jan 29, 2009 7:13 PM

    Hi,
    Use this demo code:-
    REPORT  z_alv01 MESSAGE-ID zmsg.
    *          TABLES
    TABLES : ekpo.
    *          TYPE POOLS
    TYPE-POOLS : slis.
    *          TYPE DECLARATION
    TYPES : BEGIN OF t_ekpo,
              ebeln TYPE ekpo-ebeln,
              ebelp TYPE ekpo-ebelp,
              matnr TYPE ekpo-matnr,
              werks TYPE ekpo-werks,
              menge TYPE ekpo-menge,
            END OF t_ekpo.
    *          PARAMETERS
    PARAMETERS : s_var TYPE disvariant-variant.
    *          DATA DECLARATION
    *VARIABLES
    DATA : check(1),
           rep_id TYPE sy-repid.
    *INTERNAL TABLE TYPE OF ZEKPO
    DATA : it_ekpo TYPE STANDARD TABLE OF t_ekpo WITH HEADER LINE.
    *FIELD CATALOG
    DATA : it_field TYPE slis_t_fieldcat_alv,
           wa_field TYPE slis_fieldcat_alv.
    *SORTING
    DATA : it_sort TYPE slis_t_sortinfo_alv,
           wa_sort TYPE slis_sortinfo_alv.
    *FOR TOP OF THE PAGE
    DATA : it_top TYPE slis_t_listheader,
           wa_top TYPE slis_listheader.
    *FOR END OF THE PAGE
    DATA : it_end TYPE slis_t_listheader,
           wa_end TYPE slis_listheader.
    *TO CAPTURE EVENTS AND HANDLE
    DATA : it_event TYPE slis_t_event,
           wa_event TYPE slis_alv_event.
    *FOR GRID TITLE
    DATA : wa_title TYPE lvc_title.
    *FOR LAYOUT
    DATA : wa_layout TYPE slis_layout_alv.
    *FOR EXCLUDING STANDARD BUTTON FROM ALV TOOLBAR
    DATA : it_exclude TYPE slis_t_extab,
           wa_exclude TYPE slis_extab.
    *FOR VARIANT
    DATA : wa_variant TYPE disvariant.
    *          INITIALIZATION
    INITIALIZATION.
      check = 'X'.
      rep_id = sy-repid.
      wa_variant-report = sy-repid.
    *GET DEFUALT ON THE SELECTION SCREEN FOR DEFAULT DISPLAY
      CALL FUNCTION 'REUSE_ALV_VARIANT_DEFAULT_GET'
        EXPORTING
          i_save        = 'A'
        CHANGING
          cs_variant    = wa_variant
        EXCEPTIONS
          wrong_input   = 1
          not_found     = 2
          program_error = 3
          OTHERS        = 4.
      IF sy-subrc = 0.               " IF DEFAULT VARIANT FOUND
        s_var = wa_variant-variant.  " PASS THE DEFAULT VARIANT TO THE SELECTION SCREEN FIELD
      ENDIF.
    *          AT-SELECTION SCREEN ON VALUE REQUEST
    *          TO GET THE F4 HELP FOR VARIANT
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_var.
      CALL FUNCTION 'REUSE_ALV_VARIANT_F4'
        EXPORTING
          is_variant                = wa_variant
    *   I_TABNAME_HEADER          =
    *   I_TABNAME_ITEM            =
    *   IT_DEFAULT_FIELDCAT       =
         i_save                    = 'A'
    *   I_DISPLAY_VIA_GRID        = ' '
       IMPORTING
    *   E_EXIT                    =
         es_variant                = wa_variant
       EXCEPTIONS
         not_found                 = 1
         program_error             = 2
         OTHERS                    = 3.
      IF sy-subrc = 0.
        s_var = wa_variant-variant. " PASS THE SELECTED VARIANT TO THE SELECTION SCREEN FIELD
      ENDIF.
    *          AT-SELECTION SCREEN
    *          TO CHECK THE EXISTENCE FOR VARIANT
    AT SELECTION-SCREEN.
      wa_variant-variant = s_var.
      CALL FUNCTION 'REUSE_ALV_VARIANT_EXISTENCE'
        EXPORTING
          i_save        = 'A'
        CHANGING
          cs_variant    = wa_variant
        EXCEPTIONS
          wrong_input   = 1
          not_found     = 2
          program_error = 3
          OTHERS        = 4.
      IF sy-subrc <> 0.
        MESSAGE w001.
      ENDIF.
    *          START OF SELECTION
    START-OF-SELECTION.
      SELECT ebeln
             ebelp
             matnr
             werks
             menge
             FROM ekpo
             INTO TABLE it_ekpo.
    *          FIELD CATALOG
      wa_field-fieldname = 'EBELN'.
      wa_field-tabname = 'IT_TAB'.
      wa_field-outputlen = 10.
      wa_field-seltext_l = 'PO #'.
      APPEND wa_field TO it_field.
      CLEAR wa_field.
      wa_field-fieldname = 'EBELP'.
      wa_field-tabname = 'IT_TAB'.
      wa_field-outputlen = 10.
      wa_field-seltext_l = 'Line Item'.
      APPEND wa_field TO it_field.
      CLEAR wa_field.
      wa_field-fieldname = 'MATNR'.
      wa_field-tabname = 'IT_TAB'.
      wa_field-outputlen = 15.
      wa_field-seltext_l = 'Material'.
    *  wa_field-input = check.
    *  wa_field-edit = check.
      APPEND wa_field TO it_field.
      CLEAR wa_field.
      wa_field-fieldname = 'WERKS'.
      wa_field-tabname = 'IT_TAB'.
      wa_field-outputlen = 6.
      wa_field-seltext_l = 'Plant'.
    *  wa_field-input = check.
    *  wa_field-edit = check.
      APPEND wa_field TO it_field.
      CLEAR wa_field.
      wa_field-fieldname = 'MENGE'.
      wa_field-tabname = 'IT_TAB'.
      wa_field-outputlen = 10.
      wa_field-seltext_l = 'Qty.'.
    *  wa_field-input = check.
    *  wa_field-edit = check.
      wa_field-do_sum = check.
      APPEND wa_field TO it_field.
      CLEAR wa_field.
    *          SORT W.R.T. PURCHASE ORDER NUMBER
      wa_sort-spos = 1.
      wa_sort-fieldname = 'EBELN'.
      wa_sort-tabname = 'IT_EKPO'.
      wa_sort-up = check.
      wa_sort-subtot = check.
      APPEND wa_sort TO it_sort.
      CLEAR wa_sort.
    *          FOR GRID TITLE
      wa_title = 'Hello'.
    *          FOR LAYOUT
      wa_layout-zebra = check.
    *          FOR EXCLUDING STANDARD BUTTONS FROM ALV TOOLBAR
      wa_exclude-fcode = '&OUP'.
      APPEND wa_exclude TO it_exclude.
      CLEAR wa_exclude.
      wa_exclude-fcode = '&ODN'.
      APPEND wa_exclude TO it_exclude.
      CLEAR wa_exclude.
      wa_exclude-fcode = '&OAD'.
      APPEND wa_exclude TO it_exclude.
      CLEAR wa_exclude.
    *  wa_exclude-fcode = '&AVE'.
    *  APPEND wa_exclude TO it_exclude.
    *  CLEAR wa_exclude.
      wa_exclude-fcode = '&INFO'.
      APPEND wa_exclude TO it_exclude.
      CLEAR wa_exclude.
    *          POPULATE ALL EVENTS INTO INTERNAL TABLE
      CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
        EXPORTING
          i_list_type     = 0
        IMPORTING
          et_events       = it_event
        EXCEPTIONS
          list_type_wrong = 1
          OTHERS          = 2.
      IF sy-subrc <> 0.
    * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
      READ TABLE it_event INTO wa_event WITH KEY name = 'END_OF_LIST'.
      wa_event-form = 'END'.
      MODIFY it_event FROM wa_event INDEX sy-tabix.
      CLEAR wa_event.
    *          DISPLAY RECORDS IN ALV GRID
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
       EXPORTING
    *   I_INTERFACE_CHECK                 = ' '
    *   I_BYPASSING_BUFFER                = ' '
    *   I_BUFFER_ACTIVE                   = ' '
       i_callback_program                = rep_id
    *   i_callback_pf_status_set          = 'PF'
       i_callback_user_command           = 'COMMAND'
       i_callback_top_of_page            = 'TOP'
    *   I_CALLBACK_HTML_TOP_OF_PAGE       = ' '
    *   I_CALLBACK_HTML_END_OF_LIST       = ' '
    *   I_STRUCTURE_NAME                  =
    *   I_BACKGROUND_ID                   = ' '
       i_grid_title                      = wa_title
    *   I_GRID_SETTINGS                   =
       is_layout                         = wa_layout
       it_fieldcat                       = it_field
       it_excluding                      = it_exclude
    *   IT_SPECIAL_GROUPS                 =
       it_sort                           = it_sort
    *   IT_FILTER                         =
    *   IS_SEL_HIDE                       =
    *   I_DEFAULT                         = 'X'
       i_save                            = 'A'
       is_variant                        = wa_variant
       it_events                         = it_event
    *   IT_EVENT_EXIT                     =
    *   IS_PRINT                          =
    *   IS_REPREP_ID                      =
    *   I_SCREEN_START_COLUMN             = 0
    *   I_SCREEN_START_LINE               = 0
    *   I_SCREEN_END_COLUMN               = 0
    *   I_SCREEN_END_LINE                 = 0
    *   I_HTML_HEIGHT_TOP                 = 0
    *   I_HTML_HEIGHT_END                 = 0
    *   IT_ALV_GRAPHICS                   =
    *   IT_HYPERLINK                      =
    *   IT_ADD_FIELDCAT                   =
    *   IT_EXCEPT_QINFO                   =
    *   IR_SALV_FULLSCREEN_ADAPTER        =
    * IMPORTING
    *   E_EXIT_CAUSED_BY_CALLER           =
    *   ES_EXIT_CAUSED_BY_USER            =
        TABLES
          t_outtab                          = it_ekpo
    EXCEPTIONS
       program_error                     = 1
       OTHERS                            = 2.
      IF sy-subrc <> 0.
      ENDIF.
    *&      Form  top
    *       TO WRITE THE HEADER
    FORM top.
      REFRESH it_top.
      wa_top-typ = 'S'.
      wa_top-key = text-001.
      wa_top-info = rep_id.
      APPEND wa_top TO it_top.
      CLEAR wa_top.
      CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
        EXPORTING
          it_list_commentary       = it_top
    *   I_LOGO                   =
    *   I_END_OF_LIST_GRID       =
    *   I_ALV_FORM               =
    ENDFORM.                    "top
    *&      Form  end
    *       TO WRITE THE FOOTER
    FORM end.
      REFRESH it_end.
      wa_end-typ = 'S'.
      wa_end-key = text-001.
      wa_end-info = rep_id.
      APPEND wa_end TO it_end.
      CLEAR wa_end.
      CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
        EXPORTING
          it_list_commentary       = it_end
    *   I_LOGO                   =
    *   I_END_OF_LIST_GRID       =
    *   I_ALV_FORM               =
    ENDFORM.                    "end
    *&      Form  pf
    *       FOR PF-STATUS WITH USER DEFINED BUTTONS
    *      -->RT_EXTAB   text
    FORM pf USING rt_extab TYPE slis_t_extab.
      SET PF-STATUS 'ZTG_PF_ALV'.
    ENDFORM.                    "pf
    *&      Form  command
    *       TO HANDLE USER ACTIONS AGAINST PF-STATUS
    *      -->UCOMM      text
    *      -->SELFIELD   text
    FORM command USING ucomm LIKE sy-ucomm selfield TYPE slis_selfield.
      DATA : ok_code TYPE sy-ucomm.
      ok_code = ucomm.
      CASE ok_code.
        WHEN 'T_DOWN'.
          CALL FUNCTION 'POPUP_TO_INFORM'
            EXPORTING
              titel = 'HELLO'
              txt1  = 'USER COMMAND'
              txt2  = 'TOTAL DOWN'.
        WHEN 'DOWN'.
          CALL FUNCTION 'POPUP_TO_INFORM'
            EXPORTING
              titel = 'HELLO'
              txt1  = 'USER COMMAND'
              txt2  = 'DOWN'.
        WHEN 'UP'.
          CALL FUNCTION 'POPUP_TO_INFORM'
            EXPORTING
              titel = 'HELLO'
              txt1  = 'USER COMMAND'
              txt2  = 'UP'.
        WHEN 'T_UP'.
          CALL FUNCTION 'POPUP_TO_INFORM'
            EXPORTING
              titel = 'HELLO'
              txt1  = 'USER COMMAND'
              txt2  = 'TOTAL UP'.
      ENDCASE.
    ENDFORM.                    "command
    Hope this helps you.
    Thanks & Regards,
    Tarun Gambhir

  • Hoe top create summary and detail report using ABAP QUERY

    Hi ,
    Can any one suggest me how to create summary and detailed report using ABAP Quey.
    Regards,
    Raghu.

    Hi,
    Table Declaration
    tables:mara,mast.
    *Declaring the internal table
    data: begin of itab_new occurs 0,
          matnr like mara-matnr,     "Material No
          ernam like mara-ernam,     "Material Created by
          mtart like mara-mtart,     "Material Type
          matkl like mara-matkl,     "Material Desc
          werks like mast-werks,     "Plant
          aenam like mast-aenam,     "BOM created
          stlal like mast-stlal,     "Alternative BOM
          end of itab_new.
    select-options: p_matnr for mara-matnr.
    CODE A : Retrieving the data from the database
         select  f~matnr f~ernam f~mtart f~matkl m~werks m~aenam m~stlal
         into table itab_new
         from mara as f inner join mast as m
         on f~matnr = m~matnr
         where f~matnr in p_matnr.
    CODE B : Retrieving the data from the database.
        SELECT FMATNR FERNAM FMTART FMATKL MWERKS MAENAM M~STLAL
        INTO TABLE ITAB_NEW
        FROM MARA AS F INNER JOIN MAST AS M
        ON FMATNR = MMATNR
        WHERE F~MATNR = P_MATNR.
        SORT ITAB_NEW BY ERNAM.
    loop at itab_new.
    write:/5  itab_new-matnr,itab_new-ernam,itab_new-mtart,itab_new-matkl,itab_new-werks,itab_new-aenam,itab_new-stlal.
    endloop.
    *TABLES: MARA , MAST.
    *DATA:BEGIN OF ITAB_NEW OCCURS 0,
                 MATNR LIKE MARA-MATNR,
                 ERNAM LIKE MARA-ERNAM,
                 MTART LIKE MARA-MTART,
                 MATKL LIKE MARA-MATKL,
                 END OF ITAB_NEW.
       SELECT MATNR ERNAM MTART MATKL
       INTO TABLE ITAB_NEW
       FROM MARA
       WHERE MTART = 'T'
       ORDER BY MATNR ERNAM MTART MATKL.
    *DATA: BEGIN OF ITAB OCCURS 0,
         MATNR LIKE MARA-MATNR,
         END OF ITAB.
    Thank U,
    Jay....

  • Alv report using oops ABAP

    hi friendz,
    can any one of u give an example, how to build alv report using oops abap ?
    thanks in advance.
    points for sure
    regards,
    Vijaya

    Hi Vijaya,
    I hope the following code upto your requirement.
    *& Report  ZMAT_ALV_GRID                                               *
    REPORT  ZCL_CLASS1.
    TYPES: BEGIN OF T_MARA,
             MATNR TYPE MARA-MATNR,
             MAKTX TYPE MAKT-MAKTX,
             WERKS TYPE MARD-WERKS,
             LGORT TYPE MARD-LGORT,
             LABST TYPE MARD-LABST,
           END OF T_MARA.
    *DATA: IT_MARA TYPE STANDARD TABLE OF T_MARA.
    DATA: IT_MARA TYPE T_MARA OCCURS 0.
    DATA: O_CONT TYPE REF TO CL_GUI_CUSTOM_CONTAINER,
          O_GRID TYPE REF TO CL_GUI_ALV_GRID.
    DATA: X_FLDCAT TYPE LVC_S_FCAT.
    DATA: IT_FLDCAT TYPE LVC_T_FCAT.
    DATA: I_LAYOUT TYPE LVC_S_LAYO.
    DATA: X_SORT TYPE LVC_S_SORT.
    DATA: I_SORT TYPE LVC_T_SORT.
    TABLES: MARA.
    SELECT-OPTIONS: S_MATNR FOR MARA-MATNR.
    PARAMETERS: P_CHK AS CHECKBOX.
    START-OF-SELECTION.
      PERFORM GET_DATA.
      PERFORM GENERATE_FLDCAT.
      PERFORM GENERATE_LAYOUT.
      PERFORM DO_SORT.
      SET SCREEN 100.
    *&      Module  STATUS_0100  OUTPUT
          text
    MODULE STATUS_0100 OUTPUT.
       SET PF-STATUS 'MAIN'.
    SET TITLEBAR 'xxx'.
       PERFORM BUILD_ALV.
    ENDMODULE.                 " STATUS_0100  OUTPUT
    *&      Module  USER_COMMAND_0100  INPUT
          text
    MODULE USER_COMMAND_0100 INPUT.
      CASE SY-UCOMM.
        WHEN 'BACK'.
          LEAVE PROGRAM.
      ENDCASE.
    ENDMODULE.                 " USER_COMMAND_0100  INPUT
    *&      Form  BUILD_ALV
          text
    FORM BUILD_ALV .
    CREATE OBJECT O_CONT
       EXPORTING
          CONTAINER_NAME              = 'MAT_CONTAINER'
       EXCEPTIONS
         CNTL_ERROR                  = 1
         CNTL_SYSTEM_ERROR           = 2
         CREATE_ERROR                = 3
         LIFETIME_ERROR              = 4
         LIFETIME_DYNPRO_DYNPRO_LINK = 5
         others                      = 6.
         CREATE OBJECT O_GRID
           EXPORTING
              I_PARENT          = O_CONT
           EXCEPTIONS
             ERROR_CNTL_CREATE = 1
             ERROR_CNTL_INIT   = 2
             ERROR_CNTL_LINK   = 3
             ERROR_DP_CREATE   = 4
             others            = 5.
    CALL METHOD O_GRID->SET_TABLE_FOR_FIRST_DISPLAY
       EXPORTING
       I_BUFFER_ACTIVE               =
       I_BYPASSING_BUFFER            =
       I_CONSISTENCY_CHECK           =
       I_STRUCTURE_NAME              =
       IS_VARIANT                    =
       I_SAVE                        =
       I_DEFAULT                     = ' '
         IS_LAYOUT                     = I_LAYOUT
       IS_PRINT                      =
       IT_SPECIAL_GROUPS             =
       IT_TOOLBAR_EXCLUDING          =
       IT_HYPERLINK                  =
       IT_ALV_GRAPHICS               =
       IT_EXCEPT_QINFO               =
       CHANGING
         IT_OUTTAB                     = IT_MARA
         IT_FIELDCATALOG               = IT_FLDCAT[]
         IT_SORT                       = I_SORT
       IT_FILTER                     =
      EXCEPTIONS
        INVALID_PARAMETER_COMBINATION = 1
        PROGRAM_ERROR                 = 2
        TOO_MANY_LINES                = 3
        others                        = 4.
    ENDFORM.                    " BUILD_ALV
    *&      Form  GET_DATA
          text
    FORM GET_DATA .
    SELECT A~MATNR
          B~MAKTX
          C~WERKS
          C~LGORT
          C~LABST
    INTO TABLE IT_MARA
    FROM MARA AS A
    INNER JOIN MAKT AS B
    ON BMATNR = AMATNR
    INNER JOIN MARD AS C
    ON CMATNR = AMATNR
    WHERE A~MATNR IN S_MATNR
    AND   B~SPRAS = SY-LANGU.
    ENDFORM.                    " GET_DATA
    *&      Form  GENERATE_FLDCAT
          text
    FORM GENERATE_FLDCAT .
    *CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
      EXPORTING
      I_BUFFER_ACTIVE              =
       I_STRUCTURE_NAME             = 'ZSMARA'
      I_CLIENT_NEVER_DISPLAY       = 'X'
      I_BYPASSING_BUFFER           =
      I_INTERNAL_TABNAME           = ' '
    CHANGING
       CT_FIELDCAT                  = IT_FLDCAT
    EXCEPTIONS
      INCONSISTENT_INTERFACE       = 1
      PROGRAM_ERROR                = 2
      OTHERS                       = 3.
    X_FLDCAT-COL_POS = 1.
    X_FLDCAT-FIELDNAME = 'MATNR'.
    X_FLDCAT-OUTPUTLEN = '18'.
    X_FLDCAT-REPTEXT = 'Material No'.
    APPEND X_FLDCAT TO IT_FLDCAT.
    X_FLDCAT-COL_POS = 2.
    X_FLDCAT-FIELDNAME = 'MAKTX'.
    X_FLDCAT-OUTPUTLEN = '48'.
    X_FLDCAT-REPTEXT = 'Material Desc'.
    X_FLDCAT-TOOLTIP = 'Material Desc'.
    APPEND X_FLDCAT TO IT_FLDCAT.
    X_FLDCAT-COL_POS = 3.
    X_FLDCAT-FIELDNAME = 'WERKS'.
    X_FLDCAT-OUTPUTLEN = '5'.
    X_FLDCAT-REPTEXT = 'Plant'.
    X_FLDCAT-TOOLTIP = 'Plant'.
    APPEND X_FLDCAT TO IT_FLDCAT.
    X_FLDCAT-COL_POS = 4.
    X_FLDCAT-FIELDNAME = 'LGORT'.
    X_FLDCAT-OUTPUTLEN = '5'.
    X_FLDCAT-REPTEXT = 'S.Loc'.
    X_FLDCAT-TOOLTIP = 'S.Loc'.
    APPEND X_FLDCAT TO IT_FLDCAT.
    X_FLDCAT-COL_POS = 5.
    X_FLDCAT-FIELDNAME = 'LABST'.
    X_FLDCAT-OUTPUTLEN = '20'.
    X_FLDCAT-REPTEXT = 'Quantity'.
    X_FLDCAT-TOOLTIP = 'Quantity'.
    X_FLDCAT-DO_SUM = 'X'.
    APPEND X_FLDCAT TO IT_FLDCAT.
    ENDFORM.                    " GENERATE_FLDCAT
    *&      Form  GENERATE_LAYOUT
          text
    FORM GENERATE_LAYOUT .
      I_LAYOUT-ZEBRA = 'X'.
      I_LAYOUT-FRONTEND = 'X'.
      I_LAYOUT-GRID_TITLE = 'ALV GRID USING OOPS'.
      I_LAYOUT-NUMC_TOTAL = 'X'.
    ENDFORM.                    " GENERATE_LAYOUT
    *&      Form  DO_SORT
          text
    FORM DO_SORT .
    X_SORT-FIELDNAME = 'MATNR'.
    X_SORT-UP = 'X'.
    X_SORT-SUBTOT = 'X'.
    IF P_CHK = 'X'.
       X_SORT-EXPA = SPACE.
    ELSE.
       X_SORT-EXPA = 'X'.
    ENDIF.
    APPEND X_SORT TO I_SORT.
    ENDFORM.                    " DO_SORT
    inorder to execute this code perfectly, do the following things.
    1. Create a Graphical Screen 100.
    2. Place a Custom Control on that screen and give name as MAT_CONTAINER.
    3. activate the screen.
    and execute the program.
      if this suits requirement award points.
    satish

  • Report (uses LDB's) giving dump due to memory problem

    Hi,
    I have a report which is giving dump in production due to memory problem.
    Memory is increased from basis part,but still getting same error.
    the report uses Logical DataBases.
    Can anyone suggest solution to solve this problem.
    regards
    Mallik

    Hi Amit,
    thanks for ur quick reply and ur idea "make changes in development and write the logic to read records in chunks".
    I have n't worked on LDB's till now.So i Don't know how I can read the data in chunks from LDB's.
    Can u Plz give some idea how to read data in chunks.
    Iam also sending the code,if possible ,plz go thru it and give me some idea.
    Hope u will help me.
    CODE.
    REPORT ZAROP028
    ABLES: PROJ,                          " Project definition
            PRPS_R,                        " WBS element
            PRPS,                          " WBS elements
            TJ02T,                         " System Status Values
            TCJ1,                          " Project Types
            JEST,                          " Active System Status
            COSP1,                         " cost totals - external postings
            COSS1,                         " cost totals - internal postings
            COVP11,                        " Line Items by Prd & Doc Header
            COVP12,                        " Line Items by Prd & Doc Header
            BHDGD,                         " Page heading table.
            AUFK,                          " Order Master Data for WBS (LDB)
            ANEP,                          " Asset line item
            COBRB,                         "Distribution Rules Settlement Ru
            SETHIER,                       "Hierarchy Structure
            TKA02,                         "Controlling Area Assignment
            CEPC,                          "Profit Center Master Data
            PSDYPD,                        "Dummy struct for GET proj late
            PSDYPR,                        "Dummy struct for GET PRPS_R late
            PSDYNP.                        "Dummy struct for GET AUFK late
    CONSTANTS:
              C_E                   TYPE C VALUE 'E',
              C_I                   TYPE C VALUE 'I',
              C_N                   TYPE C VALUE 'N',
              C_X                   TYPE C VALUE 'X',
              C_Y                   TYPE C VALUE 'Y',
              C_NE(2)               TYPE C VALUE 'NE',
              C_EQ(2)               TYPE C VALUE 'EQ',
              C_USD(3)              TYPE C VALUE 'USD',
              C_04(2)               TYPE C VALUE '04',
              C_I0046(5)            TYPE C VALUE 'I0046'
    various working storage
    DATA:
         W_TXT04(4)  TYPE C.                      " make status uppercase
    DATA: ACTIVE(1)        TYPE C VALUE 'A',       " type for status_flag
          INACTIVE(1)      TYPE C VALUE 'I',       " type for status_flag
          STATUS_FLAG(1)   TYPE C VALUE 'I',       " wbs active or inactive?
          INACTIVEDT       LIKE SY-DATUM,          " inactive date for wbs
          REC_FLAG         TYPE C VALUE 'N',       " records retrieved?
          DAYS_INACTIVE    TYPE I,                 " days wbs has been inac
          W_LOWINACT       TYPE I,                 " smallest inactive days
          WBS_CNT          TYPE I,                 " cnt for wbs in status
          W_AUC_COST       TYPE P DECIMALS 2,      " unsettled auc cost
          W_VNAME          LIKE PRPS_R-VNAME.      " venture number storage
    DATA:  BEGIN OF ITAB OCCURS 0,                              "MELI-5F2KMH
            COMPCODE       LIKE PROJ-VBUKR,    " company code
            PLANT          LIKE PROJ-WERKS,    " plant
            PROJECT        LIKE PROJ-PSPID,    " project
            NAME           LIKE PROJ-POST1,    " project description
            DINACT         TYPE I,             " days proj inactive
            PRCTR          LIKE PROJ-PRCTR,    " profit center
            SETID          LIKE SETHIER-SETID, " level 2 pc hier
            DESCRIPT       LIKE SETHEADERT-DESCRIPT,
            VERNA          LIKE PROJ-VERNA,    " person responsible
            AUC            TYPE P DECIMALS 2,  " AUC unsettled amount
          END OF ITAB.
    DATA: BEGIN OF I_INACT OCCURS 0,
            STAT  LIKE JEST-STAT,
            INACT LIKE JEST-INACT,
          END OF I_INACT.
    DATA: EQ_FLAG TYPE C,                       " system status flag
          NE_FLAG TYPE C.                       " system status flag
    TYPES:  BEGIN OF T_COSTS,
              PSPID  LIKE PROJ-PSPID,
              BUDAT  LIKE COVP11-BUDAT,
            END OF T_COSTS.
    DATA:  I_PROJ LIKE PROJ OCCURS 0 WITH HEADER LINE,
           I_PRPS_R LIKE PRPS_R OCCURS 0 WITH HEADER LINE,
           I_COSTS TYPE T_COSTS OCCURS 0 WITH HEADER LINE.
    DATA:  W_RECORDS TYPE I.
    DATA: FOUND_FLAG TYPE C.                        " CHAD-4PRPDE
    DATA: BEGIN OF I_HIER OCCURS 0.                             "FEAT-5BNRRP
            INCLUDE STRUCTURE SETHIER.                          "FEAT-5BNRRP
    DATA: END OF I_HIER.                                        "FEAT-5BNRRP
    RANGES: R_TJ02T FOR TJ02T-ISTAT.
    DATA: W_LVL2 LIKE SETHIER-SETID.                            "MELI-5F2KMH
    SELECTION-SCREEN BEGIN OF BLOCK PROJECT WITH FRAME TITLE TEXT-B01.
    PARAMETERS:       P_BUDAT LIKE COVP11-BUDAT,
                      DAYINACT(3) TYPE N DEFAULT '090'.
    SELECTION-SCREEN SKIP.                                      "FEAT-5BNRRP
    PARAMETERS:       P_PC-SET LIKE CEPC-KHINR OBLIGATORY       "FEAT-5BNRRP
                      DEFAULT 'SCH_STREAM'.                     "FEAT-5BNRRP
    SELECTION-SCREEN END OF BLOCK PROJECT.
    SELECTION-SCREEN BEGIN OF BLOCK SORT WITH FRAME TITLE TEXT-B02.
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 1(13) TEXT-C01.
    SELECTION-SCREEN POSITION 15.
    PARAMETERS:  P_PLANT RADIOBUTTON GROUP SORT DEFAULT 'X'.
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 1(13) TEXT-C03.                    "FEAT-5BNRRP
    SELECTION-SCREEN POSITION 15.
    PARAMETERS:  P_PRCTR RADIOBUTTON GROUP SORT.                "FEAT-5BNRRP
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN BEGIN OF LINE.
    SELECTION-SCREEN COMMENT 1(13) TEXT-C04.
    SELECTION-SCREEN POSITION 15.
    PARAMETERS:  P_DAYS RADIOBUTTON GROUP SORT.
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN END OF BLOCK SORT.
    AT SELECTION-SCREEN OUTPUT.
      PERFORM USER_PARM_INIT.
    AT SELECTION-SCREEN.
      PERFORM CHECK_PROJ_CRITERIA.
    START-OF-SELECTION.
    PERFORM BUILD_PC_HIER USING P_PC-SET.  
    Project Definition                                                  *
    GET PROJ.
      MOVE-CORRESPONDING PROJ TO I_PROJ.                        "MELI-5F2KMH
      APPEND I_PROJ.                                            "MELI-5F2KMH
      CLEAR I_PROJ.
    WBS element table
    GET PRPS_R.
      MOVE-CORRESPONDING PRPS_R TO I_PRPS_R.
      APPEND I_PRPS_R.
      CLEAR I_PRPS_R.
    GET all order and cost objects associated with order and elements
    GET AUFK.
    GET COSP1.
    CHECK COSP1-WRTTP EQ C_04.      " check if value type '04'
      Get last date that the wbselement was updated and determine status
    GET COVP11.
      MOVE PROJ-PSPID TO I_COSTS-PSPID.
      MOVE COVP11-BUDAT TO I_COSTS-BUDAT.
      APPEND I_COSTS.
      CLEAR I_COSTS.
      Loop through Internal cost statements
    GET COSS1.
    CHECK COSS1-WRTTP EQ C_04.           " if value type is 04
      Get last date that the wbselement was updated and determine status
    GET COVP12.
      MOVE PROJ-PSPID TO I_COSTS-PSPID.
      MOVE COVP12-BUDAT TO I_COSTS-BUDAT.
      APPEND I_COSTS.
      CLEAR I_COSTS.
    END-OF-SELECTION.
      PERFORM BUILD_TABLE.
      DELETE ITAB WHERE DINACT < DAYINACT.
      DESCRIBE TABLE ITAB LINES W_RECORDS.
      IF W_RECORDS = 0.
        MESSAGE I024.
      ENDIF.
      PERFORM WRITE_REPORT.
          FORM  CHECK_PROJ_CRITERIA                                      *
    This form verifies correct selection criteria has been entered from *
    the selection screen inputs.  If incorrect data has been entered the*
    valid information messages are displayed.                           *
    FORM CHECK_PROJ_CRITERIA.
    check for either posting date or inactivity criteria but not both
      IF NOT P_BUDAT IS INITIAL AND NOT DAYINACT IS INITIAL.
        MESSAGE E119.
      ENDIF.
      IF NOT DAYINACT IS INITIAL.          "check s/o day inactive
        IF NOT DAYINACT <= 998.
          MESSAGE E018.
        ELSE.
          INACTIVEDT = SY-DATUM - DAYINACT.
        ENDIF.
    if days inactive is initial set INACTIVEDT using the posting date
      ELSE.
        INACTIVEDT = P_BUDAT.
      ENDIF.
    ENDFORM.                    " CHECK_PROJ_CRITERIA
          FORM  GET_AUC_COSTS                                            *
    This form retrieves AUC costs for records based on AUFK2 where they *
    meet project criteria.  This pulls the unsettled amount on a AUC as *
    a settlement receiver.                                              *
    FORM GET_AUC_COSTS USING F_OBJNR F_BUKRS.
      CONSTANTS:
       C_SETLEMENT_ANNUAL LIKE COBRB-PERBZ VALUE 'JHR',   "Annual Settlement
        C_DEP_AREA_STD     LIKE ANEP-AFABE  VALUE '01'.    "Std depreciation
      DATA: L_ANLC LIKE ANLC  OCCURS 0 WITH HEADER LINE,
            L_ANLCV LIKE ANLCV OCCURS 0 WITH HEADER LINE,
            BEGIN OF L_COBRB OCCURS 0,                       "SRIN-6ZNEAR
            ANLN1 LIKE COBRB-ANLN1,
            ANLN2 LIKE COBRB-ANLN2,
            END OF L_COBRB,
            F_H_COST TYPE P DECIMALS 2.
      SELECT ANLN1 ANLN2 FROM COBRB
        INTO TABLE L_COBRB                                    " SRIN-6ZNEAR
         WHERE OBJNR = F_OBJNR
           AND PERBZ = C_SETLEMENT_ANNUAL.
      IF SY-SUBRC NE 0.                                        " gary-463qbd
        EXIT.                                                  " gary-463qbd
      ENDIF.                                                   " gary-463qbd
    LOOP AT L_COBRB.                                           " gary-463qbd
      CLEAR: F_H_COST.
      SELECT SINGLE * FROM ANLC
        INTO L_ANLC
        WHERE BUKRS = F_BUKRS AND
                ANLN1 = L_COBRB-ANLN1 AND
                ANLN2 = L_COBRB-ANLN2 AND
                GJAHR = SY-DATUM(4) AND
                AFABE = C_DEP_AREA_STD AND
                ZUJHR = '0000' AND
                ZUCOD = '0000'.
        IF SY-SUBRC = 0.
          CALL FUNCTION 'FI_AA_VALUES_CALCULATE'
               EXPORTING
                    I_ANLC  = L_ANLC
               IMPORTING
                    E_ANLCV = L_ANLCV.
          F_H_COST = L_ANLCV-BCHWRT_LFD.
        ENDIF.
      ADD: F_H_COST TO W_AUC_COST.
    ENDLOOP.                                                   " gary-463qbd
    ENDFORM.                    " GET_AUC_COSTS
          FORM  CHECK_INACTIVE_DATE                                      *
    This form checks the computed inactive date based on the formal     *
    parameter DAYS_INACTIVE.  If DAYS_INACTIVE is more current than the *
    current lowest inactive date W_LOWINACT then W_LOWINACT is replaced *
    with this value.                                                    *
    FORM CHECK_INACTIVE_DATE USING DAYS_INACTIVE.
      IF DAYS_INACTIVE < W_LOWINACT.
        MOVE DAYS_INACTIVE TO W_LOWINACT.
      ELSEIF W_LOWINACT EQ 0.
        MOVE: DAYS_INACTIVE TO W_LOWINACT,
              W_LOWINACT    TO ITAB-DINACT.
      ENDIF.
    ENDFORM.                    " CHECK_INACTIVE_DATE
          FORM build_table                                               *
    collect fields to the internal table ITAB                           *
    FORM  BUILD_TABLE.
      SORT I_COSTS BY PSPID ASCENDING BUDAT DESCENDING.
      LOOP AT I_PROJ.
        CLEAR W_AUC_COST.
        READ TABLE I_COSTS WITH KEY PSPID = I_PROJ-PSPID
                                BINARY SEARCH.
        IF SY-SUBRC = 0.
          ITAB-DINACT = SY-DATUM - I_COSTS-BUDAT.
        ELSE.
          ITAB-DINACT = SY-DATUM - I_PROJ-ERDAT.
        ENDIF.
        LOOP AT I_PRPS_R WHERE PSPHI = I_PROJ-PSPNR AND
                               BELKZ = 'X'.
          IF NOT I_PRPS_R-IMPRF IS INITIAL.
            PERFORM GET_AUC_COSTS USING I_PRPS_R-OBJNR
                                        I_PRPS_R-PBUKR.
          ELSE.
            CONTINUE.
          ENDIF.
        ENDLOOP.
        ITAB-COMPCODE = I_PROJ-VBUKR.
        ITAB-PLANT    = I_PROJ-WERKS.
        ITAB-PROJECT  = I_PROJ-PSPID.
        ITAB-NAME     = I_PROJ-POST1.
        ITAB-PRCTR    = I_PROJ-PRCTR.
        ITAB-VERNA    = I_PROJ-VERNA.
        ITAB-AUC      = W_AUC_COST.
        IF ITAB-DINACT > DAYINACT.
          PERFORM GET_HIER_INFO.
        ENDIF.
        APPEND ITAB.
        CLEAR ITAB.
      ENDLOOP.
    ENDFORM.                    " BUILD_TABLE
          FORM STATUS_CHECK                                              *
    Checks the active status of the project definition for the          *
    parameter values assigned.                                          *
    FORM  STATUS_CHECK USING F_OBJNR.
    begin of GARY-463QBD
      CLEAR: I_INACT.
      REFRESH: I_INACT.
      MOVE: C_N TO EQ_FLAG,
            C_Y TO NE_FLAG.
    retrieve status for a given record
      SELECT STAT INACT
        INTO TABLE I_INACT
        FROM JEST
        WHERE OBJNR EQ F_OBJNR AND
              INACT NE C_X.
    sort internal status entered by user
      SORT R_TJ02T BY OPTION DESCENDING.
    check all current object statuses meet user entered criteria
      LOOP AT R_TJ02T WHERE OPTION EQ C_NE.
    check for user selected options
        READ TABLE I_INACT WITH KEY STAT = R_TJ02T-LOW.
        IF SY-SUBRC EQ 0.
          MOVE C_N TO NE_FLAG.
          EXIT.
        ENDIF.
      ENDLOOP.
      LOOP AT R_TJ02T WHERE OPTION EQ C_EQ.
    check for user selected options
        READ TABLE I_INACT WITH KEY STAT = R_TJ02T-LOW.
        IF SY-SUBRC EQ 0.
          MOVE C_Y TO EQ_FLAG.
          EXIT.
        ENDIF.
      ENDLOOP.
    check for no statuses entered as EQ option
      LOOP AT R_TJ02T WHERE OPTION EQ C_EQ.
        EXIT.
      ENDLOOP.
    if so move c_y to eq_flag
      IF SY-SUBRC NE 0.
        MOVE C_Y TO EQ_FLAG.
      ENDIF.
    if both eq_flag or ne_flag are true(c_y) move true to valid_flag
      IF ( EQ_FLAG EQ C_N OR
           NE_FLAG EQ C_N ).
        REJECT 'PRPS_R'.
      ENDIF.
    end of GARY-463QBD
    ENDFORM.                    " STATUS_CHECK
          Form  WRITE_REPORT
    FORM WRITE_REPORT.
      IF P_PLANT EQ 'X'.
    SORT ASCENDING BY ITAB-BUSAREA                           "FEAT-5BNRRP
        SORT ITAB ASCENDING BY PLANT
                               PROJECT.
      ELSEIF P_PRCTR EQ 'X'.
       SORT ITAB ASCENDING BY PRCTR                             "FEAT-5BNRRP
                                PROJECT.
      ELSE.
       SORT ITAB ASCENDING BY DINACT
                                PROJECT.
      ENDIF.
      FORMAT COLOR COL_BACKGROUND INTENSIFIED ON.
                                                         "MELI-5F2KMH
    LOOP AT ITAB.                                               "MELI-5F2KMH
        WRITE:   /     ITAB-COMPCODE,
                 9(4)  ITAB-PLANT,
                17(12) ITAB-SETID,
                33(40) ITAB-DESCRIPT,
                77(10) ITAB-PRCTR,
                91(24) ITAB-PROJECT,
               119(40) ITAB-NAME,
               163(25) ITAB-VERNA,
               192(15) ITAB-AUC CURRENCY C_USD,
               211(8)  ITAB-DINACT.
      ENDLOOP.
    ENDFORM.                    " WRITE_REPORT
          Form  USER_PARM_INIT
    Initializes user parameter settings
    FORM USER_PARM_INIT.
    ENDFORM.                    " USER_PARM_INIT
    At top of every page, generate Amoco-standard header.
    TOP-OF-PAGE.
      MOVE: '0'       TO BHDGD-INIFL,
           SY-LINSZ   TO BHDGD-LINES,
           SY-UNAME   TO BHDGD-UNAME,
           SY-REPID   TO BHDGD-REPID,
           SY-TITLE   TO BHDGD-LINE1,
           SPACE      TO BHDGD-DOMAI,
           SPACE      TO BHDGD-SEPAR,
           SPACE      TO BHDGD-MIFFL.
      IF P_PLANT EQ 'X'.
        MOVE TEXT-H01 TO BHDGD-LINE2.
      ELSE.
        MOVE TEXT-H03 TO BHDGD-LINE2.                          "FEAT-5BNRRP
      ENDIF.
    temporarily clear sy-mandt to remove "europe" from header "FEAT-5BNRRP
      DATA:  W_MANDT LIKE SY-MANDT.
      BHDGD-BUKRS = SPACE.
      W_MANDT     = SY-MANDT.
      CLEAR  SY-MANDT.
      FORMAT  COLOR COL_BACKGROUND INTENSIFIED OFF.
      PERFORM BATCH-HEADING(RSBTCHH0).
      FORMAT RESET.
    reset sy-mandt                                            "FEAT-5BNRRP
      SY-MANDT = W_MANDT.
      PERFORM PGH_WRITE_HEADING USING TEXT-003 INACTIVEDT.      "MELI-5F2KMH
      SKIP 1.
      ULINE.
    write heading info
      FORMAT COLOR COL_TOTAL INTENSIFIED ON.
      WRITE: /1(5)'CCode',
              9(5)'Plant',
              17(12)'Level 2 Node',
              33(40)'Level 2 Node Description',
              77(10)'Profit Ctr',
              91(18)'Project Definition',
             119(19)'Project Description',
              163(18)'Person Responsible',
              192(15)' AUC Unsettled',
              211(13)'Days Inactive'.
    end FEAT-5BNRRP
    BEGIN FEAT-5BNRRP NEW FORMS
    FORM BUILD_PC_HIER
    FORM BUILD_PC_HIER USING SETID.
      DATA:  W_SETID LIKE SETHIER-SETID,
             W_NEWSETID LIKE SETHIER-SETID.
      CONCATENATE '0H' SETID INTO W_SETID.
      CALL FUNCTION 'G_SET_GET_ID_FROM_NAME'
           EXPORTING
                SHORTNAME     = W_SETID
                TABNAME       = 'GLPCT'
                SETCLASS      = '0106'
                SUPRESS_POPUP = 'X'
                OLD_SETID     = W_NEWSETID
           IMPORTING
                NEW_SETID     = W_NEWSETID.
      CALL FUNCTION 'G_SET_TREE_IMPORT'
           EXPORTING
                CLIENT                    = SY-MANDT
                LANGU                     = SY-LANGU
                SETID                     = W_NEWSETID
                TABNAME                   = 'GLPCT'
           TABLES
                SET_HIERARCHY             = I_HIER
           EXCEPTIONS
                SET_NOT_FOUND             = 1
                ILLEGAL_FIELD_REPLACEMENT = 2
                ILLEGAL_TABLE_REPLACEMENT = 3
                OTHERS                    = 4.
      CLEAR I_HIER.
    ENDFORM.
    FORM GET_HIER_INFO
    FORM GET_HIER_INFO.
      DATA:  W_SETID LIKE SETHIER-SETID,
             W_KHINR LIKE CEPC-KHINR,
             W_INDEX  TYPE I.
      CLEAR: W_SETID,
             W_KHINR,
             W_INDEX.
    DETERMINE PROFIT CENTER NODE
      SELECT SINGLE KHINR
        FROM CEPC
        INTO W_KHINR
        WHERE PRCTR EQ ITAB-PRCTR.
      CONCATENATE '0106' I_PROJ-VKOKR W_KHINR
        INTO W_SETID.
      READ TABLE I_HIER WITH KEY
                        SETID = W_SETID.
      IF SY-SUBRC EQ 0.
        W_INDEX = SY-TABIX.
        DO.
          READ TABLE I_HIER INDEX W_INDEX.
          IF W_INDEX = 0.
            ITAB-SETID = 'Not Found'.
            EXIT.
          ENDIF.
          IF I_HIER-LEVEL = 1.
            ITAB-SETID = I_HIER-SETID+8(12).
            ITAB-DESCRIPT = I_HIER-DESCRIPT.
            EXIT.
          ENDIF.
          IF I_HIER-LEVEL = 2.
            ITAB-SETID = I_HIER-SETID+8(12).
            ITAB-DESCRIPT = I_HIER-DESCRIPT.
            EXIT.
          ENDIF.
          W_INDEX = W_INDEX - 1.
        ENDDO.
      ELSE.
        ITAB-SETID = 'Not Found'.
      ENDIF.
    ENDFORM.
    END FEAT-5BNRRP NEW FORMS
    *&      Form  PGH_WRITE_HEADING WR MELI-5F2KMH
    FORM PGH_WRITE_HEADING USING L_V1 L_V2.
      DATA:  L_LINSZ    LIKE SY-LINSZ.
      DATA:  L_TITLEL   LIKE SY-TABIX.
      DATA:  L_START    LIKE SY-TABIX.
      DATA:  L_DATE     LIKE SY-DATUM.
      DATA:  L_FORMATTED_DATE(10) TYPE C.
      DATA:  L_TITLE(27) TYPE C.
      MOVE L_V2 TO L_DATE.
      WRITE L_DATE TO L_FORMATTED_DATE.
      CONCATENATE L_V1 L_FORMATTED_DATE INTO L_TITLE
        SEPARATED BY SPACE.
      L_LINSZ = SY-LINSZ.
      L_TITLEL = STRLEN( L_TITLE ).
      L_START = ( L_LINSZ / 2 ) - ( L_TITLEL / 2 ) - 2.
      NEW-LINE.
      POSITION L_START.
      WRITE: L_TITLE.
    regards
    Mallik

  • ALV report using OOPS concept.

    Hi,
    Please help me in writing ALV report using OOPS concept as i have never used this concept before.Please post a clear picture for this.
    Thanks in advance.

    Hi
    Refer this code:
    REPORT zcls_alv_oops MESSAGE-ID z1.
    TABLES : mara.
    Types Declaration..\
    TYPES :
    BEGIN OF t_mara,
    matnr TYPE matnr,
    mtart TYPE mtart,
    maktx TYPE maktx,
    END OF t_mara,
    BEGIN OF t_marc,
    matnr TYPE matnr,
    werks TYPE werks_d,
    mtart TYPE mtart,
    maktx TYPE maktx,
    END OF t_marc.
    Internal Tables Declaration..\
    DATA :
    i_mara TYPE TABLE OF t_mara,
    i_marc TYPE TABLE OF t_marc,
    i_fcat1 TYPE lvc_t_fcat,
    i_fcat2 TYPE lvc_t_fcat.
    Constants Declaration..\
    CONSTANTS :
    c_cont1 TYPE scrfname VALUE 'CONT1',
    c_cont2 TYPE scrfname VALUE 'CONT2'.
    SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME.
    SELECT-OPTIONS:
    s_matnr FOR mara-matnr NO INTERVALS.
    SELECTION-SCREEN SKIP 1.
    PARAMETERS :
    p_hotspt RADIOBUTTON GROUP r1 DEFAULT 'X',
    p_bttn RADIOBUTTON GROUP r1.
    SELECTION-SCREEN END OF BLOCK b1.
    \* Class forward referncing.
    CLASS lcl_rcvr_class DEFINITION DEFERRED.
    \* Pointers Declaration..
    DATA :
    lp_rcvr TYPE REF TO lcl_rcvr_class,
    lp_cont1 TYPE REF TO cl_gui_custom_container,
    lp_cont2 TYPE REF TO cl_gui_custom_container,
    lp_grid1 TYPE REF TO cl_gui_alv_grid,
    lp_grid2 TYPE REF TO cl_gui_alv_grid.
    \* Local Class Definiton.
    CLASS lcl_rcvr_class DEFINITION.
    PUBLIC SECTION.
    METHODS :
    hotspot_click FOR EVENT hotspot_click OF cl_gui_alv_grid
    IMPORTING e_row_id e_column_id es_row_no,
    handle_double_click FOR EVENT double_click OF cl_gui_alv_grid
    IMPORTING e_row e_column.
    ENDCLASS.
    \* Local Class Implementation.
    CLASS lcl_rcvr_class IMPLEMENTATION.
    METHOD hotspot_click.
    DATA :
    wa_mara TYPE t_mara,
    wa_marc TYPE t_marc.
    DATA :
    l_index TYPE sy-tabix.
    READ TABLE i_mara INTO wa_mara INDEX e_row_id-index.
    IF sy-subrc EQ 0.
    REFRESH i_marc.
    SELECT matnr
    werks
    INTO TABLE i_marc
    FROM marc
    WHERE matnr EQ wa_mara-matnr.
    IF sy-subrc EQ 0.
    LOOP AT i_marc INTO wa_marc.
    l_index = sy-tabix.
    wa_marc-mtart = wa_mara-mtart.
    wa_marc-maktx = wa_mara-maktx.
    MODIFY i_marc FROM wa_marc INDEX l_index
    TRANSPORTING mtart maktx.
    ENDLOOP.
    CALL SCREEN 200.
    ELSE.
    MESSAGE e121 WITH text-005 wa_mara-matnr.
    ENDIF.
    ENDIF.
    ENDMETHOD.
    METHOD handle_double_click.
    DATA :
    wa_mara TYPE t_mara,
    wa_marc TYPE t_marc.
    DATA :
    l_index TYPE sy-tabix.
    READ TABLE i_mara INTO wa_mara INDEX e_row-index.
    IF sy-subrc EQ 0.
    REFRESH i_marc.
    SELECT matnr
    werks
    INTO TABLE i_marc
    FROM marc
    WHERE matnr EQ wa_mara-matnr.
    IF sy-subrc EQ 0.
    LOOP AT i_marc INTO wa_marc.
    l_index = sy-tabix.
    wa_marc-mtart = wa_mara-mtart.
    wa_marc-maktx = wa_mara-maktx.
    MODIFY i_marc FROM wa_marc INDEX l_index
    TRANSPORTING mtart maktx.
    ENDLOOP.
    CALL SCREEN 200.
    ELSE.
    MESSAGE e121 WITH text-005 wa_mara-matnr.
    ENDIF.
    ENDIF.
    ENDMETHOD.
    ENDCLASS.
    \* Start of Selection
    START-OF-SELECTION.
    \* Extract the Material Master data for the Input Material.
    SELECT a~matnr
    a~mtart
    b~maktx
    INTO TABLE i_mara
    FROM mara AS a
    INNER JOIN makt AS b
    ON a~matnr EQ b~matnr
    WHERE a~matnr IN s_matnr
    AND b~spras EQ sy-langu.
    END-OF-SELECTION.
    IF NOT i_mara\[\] IS INITIAL.
    \* Call Screen to display the Material Master data.
    CALL SCREEN 100.
    ELSE.
    MESSAGE s121 WITH text-006.
    ENDIF.
    \*& Module DISP_GRID OUTPUT
    \* text
    MODULE disp_grid OUTPUT.
    \* Build the Field catelog for Material Master data.
    PERFORM build_fcat.
    \* Display the Material Master data using ALV.
    PERFORM disp_alv.
    ENDMODULE. " DISP_GRID OUTPUT
    \*& Module USER_COMMAND_0100 INPUT
    \* text
    MODULE user_command_0100 INPUT.
    \*when exit or cancel is clicked program has to come out
    CASE sy-ucomm.
    WHEN 'EXIT' OR 'CANC'.
    LEAVE PROGRAM.
    WHEN 'BACK'.
    LEAVE TO SCREEN 0.
    ENDCASE.
    ENDMODULE. " USER_COMMAND_0100 INPUT
    \*& Form build_fcat
    \* text
    \* \--> p1 text
    \* <-\- p2 text
    FORM build_fcat.
    DATA : ws_fcat TYPE lvc_s_fcat.
    ws_fcat-fieldname = 'MATNR'.
    ws_fcat-scrtext_m = text-001.
    ws_fcat-tabname = 'I_MARA'.
    IF p_hotspt EQ 'X'.
    ws_fcat-hotspot = 'X'.
    ENDIF.
    APPEND ws_fcat TO i_fcat1.
    CLEAR ws_fcat.
    ws_fcat-fieldname = 'MTART'.
    ws_fcat-scrtext_m = text-002.
    ws_fcat-tabname = 'I_MARA'.
    APPEND ws_fcat TO i_fcat1.
    CLEAR ws_fcat.
    ws_fcat-fieldname = 'MAKTX'.
    ws_fcat-scrtext_m = text-003.
    ws_fcat-tabname = 'I_MARA'.
    APPEND ws_fcat TO i_fcat1.
    CLEAR ws_fcat.
    ENDFORM. " build_fcat
    \*& Form disp_alv
    \* text
    \* \--> p1 text
    \* <-\- p2 text
    FORM disp_alv.
    IF lp_cont1 IS INITIAL.
    \* Create the Container Object of Material Master.
    CREATE OBJECT lp_cont1
    EXPORTING
    container_name = c_cont1
    EXCEPTIONS
    cntl_error = 1
    cntl_system_error = 2
    create_error = 3
    lifetime_error = 4
    lifetime_dynpro_dynpro_link = 5
    others = 6 .
    IF sy-subrc NE 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
    WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
    ELSE.
    \* Create the Object for Grid of Material Master.
    CREATE OBJECT lp_grid1
    EXPORTING
    i_parent = lp_cont1
    EXCEPTIONS
    error_cntl_create = 1
    error_cntl_init = 2
    error_cntl_link = 3
    error_dp_create = 4
    others = 5.
    IF sy-subrc NE 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
    WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
    ELSE.
    \* Dipslay Material Master data by calling method.
    CALL METHOD lp_grid1->set_table_for_first_display
    CHANGING
    it_outtab = i_mara
    it_fieldcatalog = i_fcat1
    EXCEPTIONS
    invalid_parameter_combination = 1
    program_error = 2
    too_many_lines = 3
    OTHERS = 4.
    IF sy-subrc NE 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
    WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
    ELSE.
    \* Set Handler for the Hot Spot Event.
    CREATE OBJECT lp_rcvr.
    IF p_hotspt EQ 'X'.
    SET HANDLER lp_rcvr->hotspot_click FOR lp_grid1.
    ELSE.
    SET HANDLER lp_rcvr->handle_double_click FOR lp_grid1.
    ENDIF.
    ENDIF.
    ENDIF.
    ENDIF.
    ENDIF.
    ENDFORM. " disp_alv
    \*& Module STATUS_0100 OUTPUT
    \* text
    MODULE status_0100 OUTPUT.
    SET PF-STATUS 'MAIN_STAT'.
    SET TITLEBAR 'T_100'.
    ENDMODULE. " STATUS_0100 OUTPUT
    \*& Module STATUS_0200 OUTPUT
    \* text
    MODULE status_0200 OUTPUT.
    SET PF-STATUS 'PLANT_STAT'.
    SET TITLEBAR 'T_200'.
    ENDMODULE. " STATUS_0200 OUTPUT
    \*& Module DISP_GRID_plant OUTPUT
    \* text
    MODULE disp_grid_plant OUTPUT.
    \* Build the Field catelog for Material Plant data.
    PERFORM build_fcat_plant.
    \* Display the Material Master Plant data using ALV.
    PERFORM disp_alv_plant.
    ENDMODULE. " DISP_GRID_plant OUTPUT
    \*& Module USER_COMMAND_0200 INPUT
    \* text
    MODULE user_command_0200 INPUT.
    \*when exit or cancel is clicked program has to come out
    CASE sy-ucomm.
    WHEN 'EXIT' OR 'CANC'.
    LEAVE PROGRAM.
    WHEN 'BACK'.
    LEAVE TO SCREEN 0.
    ENDCASE.
    ENDMODULE. " USER_COMMAND_0200 INPUT
    \*& Form build_fcat_plant
    \* text
    \* \--> p1 text
    \* <-\- p2 text
    FORM build_fcat_plant.
    DATA : ws_fcat TYPE lvc_s_fcat.
    ws_fcat-fieldname = 'MATNR'.
    ws_fcat-scrtext_m = text-001.
    ws_fcat-tabname = 'I_MARC'.
    APPEND ws_fcat TO i_fcat2.
    CLEAR ws_fcat.
    ws_fcat-fieldname = 'WERKS'.
    ws_fcat-scrtext_m = text-004.
    ws_fcat-tabname = 'I_MARC'.
    APPEND ws_fcat TO i_fcat2.
    CLEAR ws_fcat.
    ws_fcat-fieldname = 'MTART'.
    ws_fcat-scrtext_m = text-002.
    ws_fcat-tabname = 'I_MARC'.
    APPEND ws_fcat TO i_fcat2.
    CLEAR ws_fcat.
    ws_fcat-fieldname = 'MAKTX'.
    ws_fcat-scrtext_m = text-003.
    ws_fcat-tabname = 'I_MARC'.
    APPEND ws_fcat TO i_fcat2.
    CLEAR ws_fcat.
    ENDFORM. " build_fcat_plant
    \*& Form disp_alv_plant
    \* text
    \* \--> p1 text
    \* <-\- p2 text
    FORM disp_alv_plant.
    IF lp_cont2 IS INITIAL.
    \* Create the Container Object of Material Plant data.
    CREATE OBJECT lp_cont2
    EXPORTING
    container_name = c_cont2
    EXCEPTIONS
    cntl_error = 1
    cntl_system_error = 2
    create_error = 3
    lifetime_error = 4
    lifetime_dynpro_dynpro_link = 5
    others = 6.
    IF sy-subrc NE 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
    WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
    ELSE.
    \* Create the Object for Grid of Material Plant data.
    CREATE OBJECT lp_grid2
    EXPORTING
    i_parent = lp_cont2
    EXCEPTIONS
    error_cntl_create = 1
    error_cntl_init = 2
    error_cntl_link = 3
    error_dp_create = 4
    others = 5.
    IF sy-subrc NE 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
    WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
    ELSE.
    \* Dipslay Material Plant data by calling method.
    CALL METHOD lp_grid2->set_table_for_first_display
    CHANGING
    it_outtab = i_marc
    it_fieldcatalog = i_fcat2
    EXCEPTIONS
    invalid_parameter_combination = 1
    program_error = 2
    too_many_lines = 3
    OTHERS = 4.
    IF sy-subrc NE 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
    WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
    ENDIF.
    ENDIF.
    ENDIF.
    ELSE.
    \* Call method 'REFRESH_TABLE_DISPLAY' to refresh the grid data.
    CALL METHOD lp_grid2->refresh_table_display.
    ENDIF.
    ENDFORM. " disp_alv_plant
    Thanks
    Vasudha

  • Custom SAP report used to display an average standard cost per material.

    Hi All,
    I need to implement a report with the following functionality,
    This is a custom SAP report used to display an average standard cost per material.  Standard cost data is stored in SAP at the Material/Plant level.  This report will gather the individual Standard Costs at each applicable plant (restricted by selection screen input and additional logic specified in more detail in the u201CReport Fieldsu201D section) for applicable Materials (restricted by selection screen input; if not specified all materials should be returned) and calculate an average standard cost for each material.  The corresponding Currency and Base Unit of Measure will also be displayed.
    Additionally the relevant u201CCommodity Code/Import Codeu201D information should be displayed for each material returned.  This attribute is also stored at the Material/Plant level.  To determine the value of this field for each relevant material, the report logic must retrieve the values stored for each plant.  If all values are the same, the value can be output to the report.  If not all values are equal, a message u201CNot Consistentu201D should be output.  It should be noted that if all values are u201Cnull,u201D a null value should be returned in the report.
    Can any one provide me with sample code for the same??
    Thanks Debrup.

    Hello,
    Also refer this [ THREAD|Re: error in Fleet management customising] and [link|Error when recording measurements in IFCU]
    Regards
    Nav
    Edited by: Desire_Naveen on Nov 4, 2009 12:35 PM

  • Agewise Stock Report using FIFO out of 0IC_C03

    Hello,
    I have a requirement where I need to create agewise stock report using FIFO.  I have the stock availability from 0ic_c03.
    Can any one plese tell me how to achieve the FIFO based agewise stock.  I have various age buckets like 0-30 , 30-60, 60-90 etc.
    If the total stock is made up of multiple receipts and I also have few issues, how can I get the balance stock based on FIFO using the GR date.
    I would appreciate your help.
    Regards
    Vasun

    Hi,
    This InfoCube allows you to evaluate stocks from ERP.
    A new feature in this InfoCube is the pre-existing stock key figure Valuated Stock Quantity (0VALSTKQTY) and the associated movement key figures Receipt Quantity Valuated Stock (0RECVALSTCK) and Issue Quantity Valuated Stock (0ISSVALSTCK).
    This is made possible by including the InfoObject indicator Evaluation Special Stock (0INDSPECSTK) in the InfoSource Material Stocks (as of SAP BW 3.1 Content) (2LIS_03_BX). The InfoSource used up until now, Transfer BW: Stock (2LIS_40_S278), did not recognize this InfoObject.
    Note the Remarks on Filling Non-Cumulative InfoCubes.
    The following Basis key figures can be restricted in the query definitions to stock categories (0STOCKCAT), such as project stock, and to stock types (0STOCKTYPE), such as quality inspection:
    ·        Quantity of Valuated Stock (0VALSTCKQTY)
    ·        Receipt Quantity Valuated Stock (0RECVALSTCK)
    ·        Issue Quantity Valuated Stock (0ISSVALSTCK)
    In this way, for example, you can evaluate the quantity of valuated project stock (Q).
    The newly-included Basis key figures are only updated through the InfoSources 2LIS_03_BX and 2LIS_03_BF.
    In this way, none of these Basis key figures can be used in queries that are built up on InfoCubes which were inventory-initialized through InfoSource 2LIS_40_S278. Moreover, the queries 0IC_C03_Q0013 to 0IC_C03_Q0016 cannot be used in the combination of InfoSources 2LIS_40_S278 and 2LIS_03_BF.
    Note the following procedures when filling the InfoCube 0IC_C03 for the first time with non-cumulative data from ERP:
           1.      Create non-cumulatives with the program BW: Initialization of Opening Non-Cumulatives in Transfer Structure (RMCBINIT_BW).
           2.      Initialize the movements/revaluations with the program RMCBNEUB/RMCBNERP.
           3.      Post in the InfoCube using the update method Creation of Non-Cumulatives from the InfoSource 2LIS_03_BX.
           4.      Post in the InfoCube using the update method Initialization of the Delta Process from the InfoSources 2LIS_03_BF and 2LIS_03_UM.
    Refer to SAP Note 0643687 (Compression of Non-Cumulative InfoCubes) regarding the subsequent steps for compression.
           5.      Compression of the request from 2LIS_03_BX with update of the marker.
           6.      Because in this case you are posting movements and revaluations in the InfoCube that occurred before the non-cumulative creation and which lead to this non-cumulative creation, you must execute a compression without updating the marker. For more information, see InfoCubes.
           7.      Thereafter, you can transfer new movements and revaluations to the BW system as usual (for performance reasons, we recommend that you regularly compress with updates of the marker, see also InfoCube Compression).
    Update Logic
    When updating the DataSources 2LIS_03_BX, 2LIS_03_UM and 2LIS_03_BX, the System applies the following logic:
    Characteristic Value Calculation
    In principle, values are updated with Plant, Material, and Stock Category only. Quantities are updated with these characteristics, as well as with Storage Location, Batch Number, and Stock Characteristic (see also SAP Note 589024: Evaluations in BW with the Characteristics Storage Location and Stck Char.).
    Key Figure Value Calculation
    The source field for quantities is the field CPQUABU, and for values it is the field CPPVLC.
    In the update, the InfoSource fields Stock Characteristic and Stock Category control whether "special stock" key figures are updated, such as Quality Stock or Stock in Transit (only relevant for 2LIS_03_BF and 2LIS_03_UM).
    The general key figures (for example, Total Stock), however, can also be restricted in queries to Stock Characteristic and Stock Category, and then deliver the same result (key word: account model versus key figure model).
    The values for Stock Characteristic and Stock Category are dealt with on the extractor side in the LMCB1F20 include (routine STA_VERAENDERUNG).
    The InfoObject 0INDSPECSTK (field KZBWS) also controls whether the sales order stock / project stock is valuated or non-valuated.
    The system valuates the transaction key to decide whether the issue movement key figure or receipt movement key figure is updated. For more information, see SAP Note 492828: Determining the transaction key for 2LIS_03_BF + 2LIS_03_UM.
    InfoSources
    This InfoCube is based on the following InfoSources:
    ·        2LIS_03_BX
    ·        2LIS_03_BF
    ·        2LIS_03_UM
    Characteristics
    InfoObject
    Description
    0MATERIAL
    Material
    0PLANT
    Plant
    0STOR_LOC
    Storage Location
    0BATCH
    Batch Number
    0STOCKTYPE
    Stock Type
    0STOCKCAT
    Stock Categories
    0GN_VENDOR
    Vendor
    Time Characteristics
    InfoObject
    Description
    0CALDAY
    Calendar Day
    0CALMONTH
    Calendar Year/Month
    0CALWEEK
    Calendar Year/Week
    0CALYEAR
    Calendar Year
    Key Figures
    InfoObject
    Description
    0RECVS_VAL
    Value Received - Valuated Stock
    0VALSTCKVAL
    Value - Valuated Stock
    0ISSVS_VAL
    Value Issued - Valuated Stock
    0ISSBLOSTCK
    Issue Quantity - Blocked Stock
    0ISSCNSSTCK
    Issue Quantity - Consignment Stock
    0ISSQMSTCK
    Issue Quantity - Inspection Stock
    0ISSTRANSST
    Issue Quantity - Stock in Transit
    0RECBLOSTCK
    Receipt Quantity - Blocked Stock
    0RECCNSSTCK
    Receipt Quantity - Consignment Stock
    0RECQMSTCK
    Receipt Quantity - Inspection Stock
    0RECTRANSST
    Receipt Quantity - Stock in Transit
    0QMSTOCK
    Inspection Stock
    0BLOCKEDSTK
    Blocked Stock
    0CNSSTCKQTY
    Quantity - Consignment Stock
    0TRANSSTOCK
    Stock in Transit
    0ISSSCRP
    Issue Quantity - Scrap
    0ISSVALSCRP
    Issue Value - Scrap
    0RECTOTSTCK
    Receipt Quantity - Total Stock
    0ISSTOTSTCK
    Issue Quantity - Total Stock
    0TOTALSTCK
    Quantity - Total Stock
    0ISSVALSTCK
    Issue Quantity - Valuated Stock
    0RECVALSTCK
    Receipt Quantity - Valuated Stock
    0VALSTCKQTY
    Quantity - Valuated Stock
    0VENCONCON
    Consumption Value - Vendor Consignment Stock
    Units
    InfoObject
    Description
    0LOC_CURRCY
    Local Currency
    0BASE_UOM
    Base Un
    Regards,
    Hareesh

  • Intractive report using ALV fm's

    Hai This is Srik,
       I am trying to develop an intractive report using ALV fm's...
        Can anybody help me with some sample code and the needed FM's.
    Thanks in advance.
    Srik

    Srikanth,
    *& Report Z_INTERACTIVE *
    REPORT Z_INTERACTIVE no standard page heading line-count 200 message-id zp.
    TABLES: MARA, MAKT, MARC, MARD,T001W.
    DATA: BEGIN OF IT_MARA_MAKT_MARD OCCURS 0,
    MATNR LIKE MARA-MATNR,
    MTART LIKE MARA-MTART,
    MEINS LIKE MARA-MEINS,
    MAKTX LIKE MAKT-MAKTX,
    LABST LIKE MARD-LABST,
    END OF IT_MARA_MAKT_MARD.
    DATA: BEGIN OF IT_MARC_MARD1 OCCURS 0,
    WERKS LIKE MARC-WERKS,
    LABST LIKE MARD-LABST,
    NAME1 LIKE T001W-NAME1,
    END OF IT_MARC_MARD1.
    DATA: BEGIN OF IT_MARC_MARD OCCURS 0,
    LGORT LIKE MARD-LGORT,
    LABST LIKE MARD-LABST,
    END OF IT_MARC_MARD.
    SELECT-OPTIONS: s_matnr FOR MARA-MATNR.
    AT SELECTION-SCREEN.
    REFRESH IT_MARA_MAKT_MARD.
    SELECT MATNR MTART MEINS INTO CORRESPONDING FIELDS OF IT_MARA_MAKT_MARD FROM MARA WHERE MATNR IN s_matnr.
    SELECT SINGLE MAKTX INTO IT_MARA_MAKT_MARD-MAKTX FROM MAKT WHERE MATNR = IT_MARA_MAKT_MARD-MATNR.
    SELECT SUM( LABST ) INTO IT_MARA_MAKT_MARD-LABST FROM MARD WHERE MATNR = IT_MARA_MAKT_MARD-MATNR.
    APPEND IT_MARA_MAKT_MARD.
    CLEAR IT_MARA_MAKT_MARD.
    ENDSELECT.
    IF SY-SUBRC <> 0.
    MESSAGE I008.
    ENDIF.
    START-OF-SELECTION.
    SORT IT_MARA_MAKT_MARD.
    WRITE:/ 'MATERIAL NUMBER' COLOR 2, 20 'DESCRIPTION' COLOR 2, 50 'TYPE' COLOR 2, 70 'UOM' COLOR 2, 100 'STOCK' COLOR 2.
    ULINE.
    SKIP 4.
    LOOP AT IT_MARA_MAKT_MARD.
    WRITE:/ IT_MARA_MAKT_MARD-MATNR, 20 IT_MARA_MAKT_MARD-MAKTX, 50 IT_MARA_MAKT_MARD-MTART, 70 IT_MARA_MAKT_MARD-MEINS, 90 IT_MARA_MAKT_MARD-LABST.
    HIDE: IT_MARA_MAKT_MARD-MATNR, IT_MARA_MAKT_MARD-MAKTX, IT_MARA_MAKT_MARD-MTART, IT_MARA_MAKT_MARD-MEINS, IT_MARA_MAKT_MARD-LABST.
    ENDLOOP.
    AT LINE-SELECTION.
    CASE: SY-LSIND.
    WHEN 1.
    WINDOW STARTING AT 1 20 ENDING AT 120 120.
    REFRESH IT_MARC_MARD1.
    CLEAR IT_MARC_MARD1.
    SELECT pWERKS QNAME1 INTO CORRESPONDING FIELDS OF IT_MARC_MARD1 FROM MARC AS p INNER JOIN T001W AS q ON pWERKS = qWERKS WHERE p~MATNR = IT_MARA_MAKT_MARD-MATNR.
    SELECT SUM( LABST ) INTO IT_MARC_MARD1-LABST FROM MARD WHERE MATNR = IT_MARA_MAKT_MARD-MATNR AND WERKS = IT_MARC_MARD1-WERKS.
    APPEND IT_MARC_MARD1.
    CLEAR IT_MARC_MARD1.
    ENDSELECT.
    SORT IT_MARC_MARD1.
    WRITE:/ 'MATERIAL NUMBER' COLOR 3.
    WRITE: IT_MARA_MAKT_MARD-MATNR COLOR 4.
    WRITE:/ 'DESCRIPTION' COLOR 3.
    WRITE: IT_MARA_MAKT_MARD-MAKTX COLOR 4.
    WRITE:/ 'TYPE' COLOR 3.
    WRITE: IT_MARA_MAKT_MARD-MTART COLOR 4.
    WRITE:/ 'UNIT OF MEASUREMENT' COLOR 3.
    WRITE: IT_MARA_MAKT_MARD-MEINS COLOR 4.
    WRITE:/ 'MATERIAL QUANTITY' COLOR 3.
    WRITE: IT_MARA_MAKT_MARD-LABST COLOR 4.
    ULINE.
    SKIP 4.
    WRITE:/ 'PLANT CODE' COLOR 2, 20 'PLANT NAME' COLOR 2, 60 'STOCK' COLOR 2.
    LOOP AT IT_MARC_MARD1.
    WRITE:/ IT_MARC_MARD1-WERKS COLOR 4, 20 IT_MARC_MARD1-NAME1 COLOR 4, 41 IT_MARC_MARD1-LABST.
    HIDE: IT_MARC_MARD1-WERKS.
    HIDE: IT_MARA_MAKT_MARD-MATNR, IT_MARA_MAKT_MARD-MAKTX, IT_MARA_MAKT_MARD-MTART, IT_MARA_MAKT_MARD-MEINS, IT_MARA_MAKT_MARD-LABST.
    AT LAST.
    SUM.
    WRITE:/30 'TOTAL STOCK', 60 IT_MARC_MARD1-LABST.
    ENDAT.
    ENDLOOP.
    WHEN 2.
    WINDOW STARTING AT 1 20 ENDING AT 120 120.
    REFRESH IT_MARC_MARD.
    CLEAR IT_MARC_MARD.
    SELECT LGORT LABST INTO CORRESPONDING FIELDS OF IT_MARC_MARD FROM MARD WHERE MATNR = IT_MARA_MAKT_MARD-MATNR AND WERKS = IT_MARC_MARD1-WERKS.
    APPEND IT_MARC_MARD.
    CLEAR IT_MARC_MARD.
    ENDSELECT.
    SORT IT_MARC_MARD.
    WRITE:/ 'MATERIAL NUMBER' COLOR 3.
    WRITE: IT_MARA_MAKT_MARD-MATNR COLOR 4.
    SKIP 1.
    WRITE:/ 'DESCRIPTION' COLOR 3.
    WRITE: IT_MARA_MAKT_MARD-MAKTX COLOR 4.
    SKIP 1.
    WRITE:/ 'TYPE' COLOR 3.
    WRITE: IT_MARA_MAKT_MARD-MTART COLOR 4.
    SKIP 1.
    WRITE:/ 'UNIT OF MEASUREMENT' COLOR 3.
    WRITE: IT_MARA_MAKT_MARD-MEINS COLOR 4.
    SKIP 1.
    WRITE:/ 'MATERIAL QUANTITY' COLOR 3.
    WRITE: IT_MARA_MAKT_MARD-LABST COLOR 4.
    SKIP 1.
    ULINE.
    SKIP 1.
    WRITE:/ 'PLANT CODE' COLOR 2, 40 'PLANT NAME' COLOR 2.
    WRITE:/ IT_MARC_MARD1-WERKS, 40 IT_MARC_MARD1-NAME1.
    SKIP 3.
    ULINE.
    WRITE:/20 'STORAGE LOCATION' COLOR 5, 50 'STOCK' COLOR 5.
    SKIP 4.
    LOOP AT IT_MARC_MARD.
    WRITE:/20 IT_MARC_MARD-LGORT, 50 IT_MARC_MARD-LABST.
    AT LAST.
    SUM.
    WRITE:/30 'TOTAL STOCK', 60 IT_MARC_MARD-LABST.
    ENDAT.
    ENDLOOP.
    WHEN OTHERS.
    WINDOW STARTING AT 1 20 ENDING AT 20 50.
    WRITE:/40 'SORRY'.
    ENDCASE.
    TOP-OF-PAGE.
    WRITE:/ 'XYZ LIMITED' COLOR 2, 90 'DATE:' COLOR 2, SY-DATUM.
    ULINE.
    ULINE.
    TOP-OF-PAGE DURING LINE-SELECTION.
    WRITE:/ 'XYZ LIMITED' COLOR 2, 90 'DATE:' COLOR 2, SY-DATUM.
    ULINE.
    interactive ALV code
    ALV-INTERACTIVE.
    Interactive ALV
    http://www.sap-img.com/abap/an-interactive-alv-report.htm
    http://www.sapgenie.com/abap/drill_down_reports.htm
    Pls. reward if useful

  • Report using SOP

    dear
    can i configre a report using SOP and not run mrp only for running report and these are the fields which i require
    These are the parameters required in that report
    1. sales forecast(this is done annually with the monthly break up)
    2. sales forecast value
    3. actual sales
    4 . diff between actual sales and forecasted
    5.opening stock
    6.purchanse ordering quantity per month
    7.goods received
    8.closing stock
    9.stock index
    sales forecast and purchanse ordering quantity are the forecast values which will be feed at the starting of the year
    and stock index there is formula to calculate so is for that is there any user exit to calculate that is there any std report for this or using sop 2 get this report
    can u pls help me in solving this issue
    thanks in advance

    1.Hi when you create a infostrucutre as mentioned above you will have 2 tables generated by the infostructure
    Ex: you create a Infostructure called s999
    2. In such case 2 set of tables will be generated s999 and s999e
    3. You will have the values generated through the plannigtype in the tabels999
    3.Using the s999 table you will be able to generate the report that are required.
    4.When you have created your own info structure you can also use the standard Tcode MC9C - Reporting  to get few reports
    Kindly let us know if you need more details
    Reg
    Dsk

  • Opportunity Product Revenue report using Narrative option

    Hi,
    I have created quote report using "Opportunity product revenue report" with the use of narrative option and its working fine but the problem here is if opportunity has multiple product revenue items it shows in multiple quotes. For me it should show in a same quotation if there are multiple opportunity product revenue items in a opportunity. Could anyone help me how can i achieve this.
    Any help would be appreciated. Thanks in advance
    Thanks & Regards
    Ambarish

    You need to modify report and club all revenue to single item / row.

  • Creating a service report using SQVI

    Hi experts
    I am creating a service report using SQVI
    The report should have the following fiels
    SrvPO No | SrvPO Data | vendor | Stata  | City | Type of Srv (Ad\banner|maintnc.)  | Amount | Status(open or closed)
    I am using the following tables using table join fnc
    1. EKKO
      EBELN-PO No
    AEDAT - PO Data
    LIFNR - Vendor
    PROCSTAT - Status of PO doc
    2.LIFNR
    REGIO - State
    ORTO1 - City
    3. ESSR
    TXZ01 - Type of Service (Short text)
    4.EKPO
    NETWE - Net amount of PO
    All the tables are legally join but after executing I am not able to fetch any data or hardly one service PO.
    And the selection field will be only From Date and To date.or the Service PO No.
    Immediate response is urgent
    Regards
    Partha

    Moderator message: you said your  issue is solved but did not mark your discussion as such, please see
    How to close a discussion and why

  • Generate report using CURSORS? - Simple question

    Folks,
    I'm a real newbie still with PL/SQL so please excuse my ignorance I have a simple report I need to generate. The following SQL statement gets me all my "header" records:
    SELECT OHA.ORDER_NUMBER, HEADER_ID, ATT11, ATT12, ATT16
    FROM XXXWD.WD_DUPS DUPS, OE_ORDER_HEADERS_ALL OHA
    WHERE OHA.ATTRIBUTE11 = DUPS.ATT11
    AND OHA.ATTRIBUTE12 = DUPS.ATT12
    AND OHA.ATTRIBUTE16 = DUPS.ATT16
    AND (OHA.FLOW_STATUS_CODE NOT IN ('CLOSED', 'CANCELLED'))
    AND (ATT11 <> 'WESTERN SERVICE')
    ORDER BY ATT11, ATT12, ATT16
    What I want to do now is have a second script that will display all my detail records. Something like:
    SELECT OLA.LINE_NUMBER, OLA.ORDERED_ITEM, OLA.FLOW_STATUS_CODE
    FROM OE.ORDER_LINES_ALL OLA
    WHERE OLA.HEADER_ID = OHA.HEADER_ID
    I expect I'd do this with two cursors, passing the value of my HEADER_ID to my second cursor. But when I've used cursors before, they primarily have been to import data, and manipulate data. But what if I just want to create a report using these?
    I essentially want to display my header information, and then any lines below that data (if there is any, there may be a header with no lines).
    Can I create a simple report like this with cursors? Any help with this would be IMMENSELY appreciated. I'm really under the gun... :)
    Thanks so much!
    Steve

    Here's one query that will give you everything:
    SELECT OHA.ORDER_NUMBER
          ,OHA.HEADER_ID
          ,DUPS.ATT11
          ,DUPS.ATT12
          ,DUPS.ATT16
          ,OLA.LINE_NUMBER
          ,OLA.ORDERED_ITEM
          ,OLA.FLOW_STATUS_CODE     
    FROM   XXXWD.WD_DUPS        DUPS
          ,OE_ORDER_HEADERS_ALL OHA
          ,OE.ORDER_LINES_ALL   OLA
    WHERE  OLA.HEADER_ID   = OHA.HEADER_ID
    AND    OHA.ATTRIBUTE11 = DUPS.ATT11
    AND    OHA.ATTRIBUTE12 = DUPS.ATT12
    AND    OHA.ATTRIBUTE16 = DUPS.ATT16
    AND    OHA.FLOW_STATUS_CODE NOT IN ('CLOSED', 'CANCELLED')
    AND    DUPS.ATT11 <> 'WESTERN SERVICE'
    ORDER  BY OHA.ORDER_NUMBER
             ,OLA.LINE_NUMBER
             ,DUPS.ATT11
             ,DUPS.ATT12
             ,DUPS.ATT16
    ;(correction in order by clause)
    Message was edited by:
    Eric H

Maybe you are looking for

  • Wifi indicator now always shows white instead of blue

    Hi All- My new Ultra had been showing "blue" on the wifi indicator, but now will only show "white". I am getting 65Mbps link speed and excellent signal strength. This has been constant ( good speed and excellent sig strength). Motorola says blue mean

  • When-timer-expired hit the cursor position

    Some of our forms sometimes have timers running, to monitor progress of this and that. We've found that if the timer expires when you're typing in a form field, there's a tendency for the cursor to momentarily move to the beginning of the field then

  • Microsoft JScript Runtime Error, Line: 0, Error: Object Expected?

    Hi, I just got a new computer and I have Java 2 Runtime Environment SE v 1.4.2. I keep having problems with it. It says, "Microsoft JScript Runtime Error, Line:0, Error: Object Expected. I have no idea what to do or what is actually causing this. It

  • Not able to install oracle fial over software

    Hi all, This is SAP Evironment SAP : ECC6.0 OS  : WIN2003 ORACLE : 10g I am not able to install Oracle failover software. I saw in note 986758 Change the last line of the script sapofs.cmd from the temporary directory of @"%rootdir%\install\setup.exe

  • Patch Wizard doesnot work in R12

    Hi: I am trying to analyze a patch before applying it in 12.1.3, 11g on Linux. OAM-> Patch Wizard-> entered Staging Directory=/applprod/patches/-> Ok-> Confirmation->Ok, Then it went back to Patch Wizard page. Please help me to debug. Thanks!!!