BAPI_MATERIAL_GET_DETAIL retrieve MBEW-BKLAS

Hi,
today we call BAPI_MATERIAL_GET_DETAIL from a third party system. We have discovered a need to also retrieve the valuation class, MBEW-BKLAS, and it does'nt seem like this is possible via this bapi.
Does anyone know if there is a standard bapi that I could use for this?
Regards
Arne Jakob
Edited by: Arne Jakob Hidle on Sep 13, 2008 11:32 PM

Hi Ram,
looking at the corresponding XML interface specification at <a href="http://ifr.sap.com/catalog/query.asp">the SAP interface repository</a> there are only simple import parameters for Material.GetDetail. According to Web Dynpro model creation conventions, you should be able to set the parameters directly in the Bapi_Material_Get_Detail_Input instance like:
Bapi_Material_Get_Detail_Input input = new Bapi_Material_Get_Detail_Input();
wdContext.nodeBapi_Material_Get_Detail_Input().bind(input);
input.setPlant("yourPlant");
input.setValuationArea(...);
Hope that helps.
Regards
Stefan

Similar Messages

  • USER-EXIT / ENHANCEMENT / BADI -- Material Valuation Class (MBEW-BKLAS)

    Hi,
    I m looking for any user-exit, enhancement or BADI  which is triggered while executing MIGO!!!! .
    For example, for good movement 101related to a purchase order.
    If  MIGO item (material) have batch management we have to inform the batch number (mandatory). When material document is posted system updates material master data with a new valuation type (MBEW-BWTAR) with the same name of the batch number.
    We need to inform the valuation class (MBEW-BKLAS) related to this valuation type (MBEW-BWTAR) but we don´t know where it´s possible.
    Thanks and sorry for my english!!

    Hi Orion,
    You can refer to the following user exits for MIGO:
    Exit Name           Description                                                                               
    MBCF0002            Customer function exit: Segment text in material doc. item   
    MBCF0005            Material document item for goods receipt/issue slip          
    MBCF0006            Customer function for WBS element                            
    MBCF0007            Customer function exit: Updating a reservation               
    MBCF0009            Filling the storage location field                           
    MBCF0010            Customer exit: Create reservation BAPI_RESERVATION_CREATE1   
    MBCF0011            Read from RESB and RKPF for print list in  MB26              
    MB_CF001            Customer Function Exit in the Case of Updating a Mat. Doc.   
    Hope this will help you...

  • Get SAKTO based on MBEW-BKLAS

    Hi Experts,
       How to derive the value of GL account (SAKTO) based on valuation class (MBEW-BKLAS) on the material master.
    Regards,
    Aditya
    Moderator message: please do some research before asking.
    Edited by: Thomas Zloch on Feb 24, 2011 10:30 AM

    Hi
    Perhaps I don't understand yet, but you have several select-options in your selection-screen, every select-options can be assigned to different tables (MARA, MARC, MBEW), so you need to decide if to use a JOIN o single SELECTION in order to get all data in one step or many steps.
    IF you need to do several selections, these have to be linked in order to get the data for the records selected in the previous selection, something like that:
    SELECT matnr mtart INTO TABLE t_mara
        FROM mara
          WHERE matnr IN s_matnr
            AND mtart IN s_mtart.
      IF sy-subrc = 0.
        SELECT matnr werks ekgrp INTO TABLE t_marc
          FROM marc
            FOR ALL ENTRIES IN t_mara
              WHERE natnr = t_mara-matnr
                AND ekgrp IN s_ekgrp.
        IF sy-subrc = 0.
          SELECT matnr bwkey lbkum salk3 INTO TABLE t_mbew
            FROM mbew
              FOR ALL ENTRIES IN t_marc
                WHERE matnr = t_marc-matnr
                  AND bwkey = t_marc-werks.
        ENDIF.
      ENDIF.
    But you can use an single join with all tables
    Max

  • BDC MM01

    Can you please tell me error in this program.
    Iam creating the New Material using the Existing material.
    I have selected 12 views by clicking scroll button but when i run this program it is not picking that scroll button code.
    Your valuable  answers  will be rewarded
    REPORT ZTESTBDC
           NO STANDARD PAGE HEADING LINE-SIZE 255.
    PROGRAM ID           :
    PROGRAM TITLE        : PROGRAM TITLE                                 
    AUTHOR               :                                     
    DATE                 : DD/MM/YYYY                                    
    CHANGE REQUEST NUMBER:XXXXXXXXXX                                      
    DESCRIPTION          : THE PURPOSE OF THIS PROGRAM IS TO XXXXXX       
    *==================================================================
    COPIED FROM         : (CLONED PROGRAM)                             
    TITLE               : (PROGRAM TITLE)                               
    OTHER RELATED OBJ   : (OBJECT NAMES)                           
    *==================================================================
    CHANGE HISTORY LOG                                                  
    MOD. NO.|  DATE  | NAME           |CORRECTION NO.| CHANGE REFERENCE #
    MOD-001 |DD/MM/YY| XXXXXXXXXXXXXX | XXXXXXXXXX   |   XXXXXXXXXX
    DESCRIPTION:
    |DD/MM/YYYY| XXXXXXXXXXXXXX | XXXXXXXXXX                    
    DESCRIPTION:
    INCLUDE BDCRECX1.
    Internal Table T_BDCDATA to store BDC data
           Batchinputdata of single transaction
    DATA:  T_BDCDATA LIKE BDCDATA  OCCURS 0 WITH HEADER LINE.
    Internal Table T_BDC_MSG to store BDC messages
    DATA:  T_BDC_MSG LIKE STANDARD TABLE OF BDCMSGCOLL INITIAL
           SIZE 0 WITH HEADER LINE.
    DATA:  V_FILE LIKE RLGRAP-FILENAME ,
           V_COUNT(5) TYPE C,
           V_MESSAGE_CNT(5) TYPE C .
    *DATA:  TCODE LIKE TSTC-TCODE VALUE 'MM01'.
    DATA : BEGIN OF IT_DATA OCCURS 0,
            MATNR_1        LIKE MARA-MATNR,
            MBRSH          LIKE MARA-MBRSH,
            MTART          LIKE MARA-MTART,
            MATNR_2        LIKE MARA-MATNR,
            MAKTX          LIKE MAKT-MAKTX,
            WERKS_1        LIKE MARC-WERKS,
            LGORT_1        LIKE AUFM-LGORT,
            VKORG_1        LIKE KNVV-VKORG,
            VTWEG_1        LIKE KNVV-VTWEG,
            WERKS          LIKE MARC-WERKS,
            LGORT          LIKE AUFM-LGORT,
            VKORG          LIKE KNVV-VKORG,
            VTWEG          LIKE KNVV-VTWEG,
          END OF IT_DATA.
    START-OF-SELECTION.
         PERFORM OPEN_GROUP.
         PERFORM DATA_UPLOAD.
         PERFORM CALL_TRANSACTION.
         PERFORM CLOSE_GROUP.
         PERFORM WRITE_ERROR.
    *&      Form  DATA_UPLOAD
          text
    -->  p1        text
    <--  p2        text
    FORM DATA_UPLOAD.
    *call function ws_upload to retrieve data from a flat file in the
    *presentation server into an internal table
      CALL FUNCTION 'UPLOAD'
           EXPORTING
                FILENAME                = V_FILE
                FILETYPE                = 'DAT'
           TABLES
                DATA_TAB                = IT_DATA
           EXCEPTIONS
                CONVERSION_ERROR        = 1
                INVALID_TABLE_WIDTH     = 2
                INVALID_TYPE            = 3
                NO_BATCH                = 4
                UNKNOWN_ERROR           = 5
                GUI_REFUSE_FILETRANSFER = 6
                OTHERS                  = 7.
    if ws_upload fails then display appropriate message
      IF SY-SUBRC <> 0.
       MESSAGE E000  WITH 'Data not Uploaded into internal table'.
      ENDIF.
    ENDFORM.                    " DATA_UPLOAD
    *&      Form  CALL_TRANSACTION
          text
    -->  p1        text
    <--  p2        text
    FORM CALL_TRANSACTION.
      DATA : V_IVDAT(10) TYPE C,
             V_AKTIV(10) TYPE  C,
             V_MESSAGE(404) TYPE C.
      REFRESH T_BDCDATA.
      CLEAR T_BDCDATA.
      V_COUNT = 0.
      V_MESSAGE_CNT = 0.
      LOOP AT IT_DATA .
        V_COUNT = V_COUNT + 1.
    *Intial screen
    perform bdc_dynpro      using 'SAPLMGMM' '0060'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'RMMG1-MTART'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '=ENTR'.
    perform bdc_field       using 'RMMG1-MATNR'
                                   IT_DATA-MATNR_1.
    perform bdc_field       using 'RMMG1-MBRSH'
                                   IT_DATA-MBRSH.
    perform bdc_field       using 'RMMG1-MTART'
                                   IT_DATA-MTART.
    perform bdc_field       using 'RMMG1_REF-MATNR'
                                   IT_DATA-MATNR_2.
    *selection of views
    perform bdc_dynpro      using 'SAPLMGMM' '0070'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'MSICHTAUSW-DYTXT(15)'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '/00'.
    perform bdc_field       using 'MSICHTAUSW-KZSEL(04)'
                                  'X'.
    perform bdc_field       using 'MSICHTAUSW-KZSEL(05)'
                                  'X'.
    perform bdc_field       using 'MSICHTAUSW-KZSEL(06)'
                                  'X'.
    perform bdc_field       using 'MSICHTAUSW-KZSEL(07)'
                                  'X'.
    perform bdc_field       using 'MSICHTAUSW-KZSEL(08)'
                                  'X'.
    perform bdc_field       using 'MSICHTAUSW-KZSEL(09)'
                                  'X'.
    perform bdc_field       using 'MSICHTAUSW-KZSEL(10)'
                                  'X'.
    perform bdc_field       using 'MSICHTAUSW-KZSEL(11)'
                                  'X'.
    perform bdc_field       using 'MSICHTAUSW-KZSEL(12)'
                                  'X'.
    perform bdc_field       using 'MSICHTAUSW-KZSEL(13)'
                                  'X'.
    perform bdc_field       using 'MSICHTAUSW-KZSEL(14)'
                                  'X'.
    perform bdc_field       using 'MSICHTAUSW-KZSEL(15)'
                                  'X'.
    perform bdc_dynpro      using 'SAPLMGMM' '0070'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'MSICHTAUSW-DYTXT(01)'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '/00'.
    perform bdc_dynpro      using 'SAPLMGMM' '0070'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'MSICHTAUSW-DYTXT(01)'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '/00'.
    perform bdc_dynpro      using 'SAPLMGMM' '0070'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'MSICHTAUSW-DYTXT(01)'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '/00'.
    perform bdc_dynpro      using 'SAPLMGMM' '0070'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'MSICHTAUSW-DYTXT(15)'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '/00'.
    perform bdc_field       using 'MSICHTAUSW-KZSEL(14)'
                                  'X'.
    perform bdc_field       using 'MSICHTAUSW-KZSEL(15)'
                                  'X'.
    perform bdc_dynpro      using 'SAPLMGMM' '0070'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'MSICHTAUSW-DYTXT(01)'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '/00'.
    perform bdc_dynpro      using 'SAPLMGMM' '0070'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'MSICHTAUSW-DYTXT(01)'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '/00'.
    perform bdc_dynpro      using 'SAPLMGMM' '0070'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'MSICHTAUSW-DYTXT(01)'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '/00'.
    perform bdc_dynpro      using 'SAPLMGMM' '0070'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'MSICHTAUSW-DYTXT(01)'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '/00'.
    perform bdc_dynpro      using 'SAPLMGMM' '0070'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'MSICHTAUSW-DYTXT(15)'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '=ENTR'.
    perform bdc_field       using 'MSICHTAUSW-KZSEL(14)'
                                  'X'.
    perform bdc_field       using 'MSICHTAUSW-KZSEL(15)'
                                  'X'.
    *Org data
    perform bdc_dynpro      using 'SAPLMGMM' '0080'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'RMMG1-VKORG'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '=ENTR'.
    perform bdc_field       using 'RMMG1-WERKS'
                                   IT_DATA-WERKS.
    perform bdc_field       using 'RMMG1_REF-WERKS'
                                   IT_DATA-WERKS_1. "'RMG1_REF-WERKS'.
    perform bdc_field       using 'RMMG1-LGORT'
                                   IT_DATA-LGORT.
    perform bdc_field       using 'RMMG1_REF-LGORT'
                                   IT_DATA-LGORT_1. " 'RMG1_REF-LGORT'.
    perform bdc_field       using 'RMMG1-VKORG'
                                   IT_DATA-VKORG.
    perform bdc_field       using 'RMMG1_REF-VKORG'
                                   IT_DATA-VKORG.   " 'RMG1_REF-VKORG'.
    perform bdc_field       using 'RMMG1-VTWEG'
                                   IT_DATA-VTWEG.
    perform bdc_field       using 'RMMG1_REF-VTWEG'
                                   IT_DATA-VTWEG_1. "RMG1_REF-VTWEG'.
    perform bdc_dynpro      using 'SAPLMGMM' '4000'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '/00'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'MAKT-MAKTX'.
    perform bdc_field       using 'MAKT-MAKTX'
                                   IT_DATA-MAKTX.
    *perform bdc_field       using 'MARA-MEINS'
                                 'NO'.
    *perform bdc_field       using 'MARA-MATKL'
                                 '000'.
    *perform bdc_field       using 'MVKE-SKTOF'
                                 'X'.
    *perform bdc_dynpro      using 'SAPLMGMM' '4000'.
    *perform bdc_field       using 'BDC_OKCODE'
                                 '/00'.
    *perform bdc_field       using 'BDC_CURSOR'
                                 'MAKT-MAKTX'.
    *perform bdc_field       using 'MAKT-MAKTX'
                                 '"415V, 50Hz, 50kA, SDB # 2 I/c : 400A'
                               & 'MC'.
    *perform bdc_field       using 'MVKE-VERSG'
                                 '1'.
    *perform bdc_field       using 'MVKE-KTGRM'
                                 '09'.
    *perform bdc_field       using 'MVKE-MTPOS'
                                 'NORM'.
    *perform bdc_field       using 'MVKE-PROVG'
                                 '06'.
    *perform bdc_dynpro      using 'SAPLMGMM' '4000'.
    *perform bdc_field       using 'BDC_OKCODE'
                                 '/00'.
    *perform bdc_field       using 'BDC_CURSOR'
                                 'MAKT-MAKTX'.
    *perform bdc_field       using 'MAKT-MAKTX'
                                 '"415V, 50Hz, 50kA, SDB # 2 I/c : 400A'
                               & 'MC'.
    *perform bdc_field       using 'MARA-MEINS'
                                 'NO'.
    *perform bdc_field       using 'MARA-GEWEI'
                                 'KG'.
    *perform bdc_field       using 'MARC-MTVFP'
                                 'KP'.
    *perform bdc_field       using 'MARC-LADGR'
                                 '0005'.
    *perform bdc_field       using 'MARA-MAGRV'
                                 'PACK'.
    *perform bdc_dynpro      using 'SAPLMGMM' '4004'.
    *perform bdc_field       using 'BDC_OKCODE'
                                 '/00'.
    *perform bdc_field       using 'BDC_CURSOR'
                                 'MAKT-MAKTX'.
    *perform bdc_field       using 'MAKT-MAKTX'
                                 '"415V, 50Hz, 50kA, SDB # 2 I/c : 400A'
                               & 'MC'.
    *perform bdc_dynpro      using 'SAPLMGMM' '4040'.
    *perform bdc_field       using 'BDC_OKCODE'
                                 '=SP09'.
    *perform bdc_field       using 'MAKT-MAKTX'
                                 '"415V, 50Hz, 50kA, SDB # 2 I/c : 400A'
                               & 'MC'.
    *perform bdc_dynpro      using 'SAPLMGMM' '4000'.
    *perform bdc_field       using 'BDC_OKCODE'
                                 '/00'.
    *perform bdc_field       using 'MAKT-MAKTX'
                                 '"415V, 50Hz, 50kA, SDB # 2 I/c : 400A'
                               & 'MC'.
    *perform bdc_field       using 'BDC_CURSOR'
                                 'MARC-EKGRP'.
    *perform bdc_field       using 'MARA-MEINS'
                                 'NO'.
    *perform bdc_field       using 'MARC-EKGRP'
                                 'sp3'.
    *perform bdc_field       using 'MARA-MATKL'
                                 '000'.
    *perform bdc_field       using 'MARA-EKWSL'
                                 'I2'.
    *perform bdc_field       using 'MARC-WEBAZ'
                                 '1'.
    *perform bdc_field       using 'MARC-USEQU'
                                 '4'.
    *perform bdc_dynpro      using 'SAPLMGMM' '4000'.
    *perform bdc_field       using 'BDC_OKCODE'
                                 '/00'.
    *perform bdc_field       using 'BDC_CURSOR'
                                 'MAKT-MAKTX'.
    *perform bdc_field       using 'MAKT-MAKTX'
                                 '"415V, 50Hz, 50kA, SDB # 2 I/c : 400A'
                               & 'MC'.
    *perform bdc_dynpro      using 'SAPLMGMM' '4040'.
    *perform bdc_field       using 'BDC_OKCODE'
                                 '=SP12'.
    *perform bdc_field       using 'MAKT-MAKTX'
                                 '"415V, 50Hz, 50kA, SDB # 2 I/c : 400A'
                               & 'MC'.
    *perform bdc_dynpro      using 'SAPLMGMM' '4000'.
    *perform bdc_field       using 'BDC_OKCODE'
                                 '/00'.
    *perform bdc_field       using 'BDC_CURSOR'
                                 'MAKT-MAKTX'.
    *perform bdc_field       using 'MAKT-MAKTX'
                                 '"415V, 50Hz, 50kA, SDB # 2 I/c : 400A'
                               & 'MC'.
    *perform bdc_field       using 'MARA-MEINS'
                                 'NO'.
    *perform bdc_field       using 'MARC-EKGRP'
                                 'SP3'.
    *perform bdc_field       using 'MARC-DISMM'
                                 'X0'.
    *perform bdc_field       using 'MARC-DISPO'
                                 'ECM'.
    *perform bdc_field       using 'MARC-DISLS'
                                 'EX'.
    *perform bdc_dynpro      using 'SAPLMGMM' '4000'.
    *perform bdc_field       using 'BDC_OKCODE'
                                 '/00'.
    *perform bdc_field       using 'BDC_CURSOR'
                                 'MAKT-MAKTX'.
    *perform bdc_field       using 'MAKT-MAKTX'
                                 '"415V, 50Hz, 50kA, SDB # 2 I/c : 400A'
                               & 'MC'.
    *perform bdc_field       using 'MARC-BESKZ'
                                 'X'.
    *perform bdc_field       using 'MARC-USEQU'
                                 '4'.
    *perform bdc_field       using 'MARC-WEBAZ'
                                 '1'.
    *perform bdc_field       using 'MARC-FHORI'
                                 '000'.
    *perform bdc_dynpro      using 'SAPLMGMM' '4000'.
    *perform bdc_field       using 'BDC_OKCODE'
                                 '/00'.
    *perform bdc_field       using 'BDC_CURSOR'
                                 'MAKT-MAKTX'.
    *perform bdc_field       using 'MAKT-MAKTX'
                                 '"415V, 50Hz, 50kA, SDB # 2 I/c : 400A'
                               & 'MC'.
    *perform bdc_field       using 'MARC-PERKZ'
                                 'M'.
    *perform bdc_field       using 'MARC-MTVFP'
                                 'KP'.
    *perform bdc_dynpro      using 'SAPLMGMM' '4000'.
    *perform bdc_field       using 'BDC_OKCODE'
                                 '/00'.
    *perform bdc_field       using 'BDC_CURSOR'
                                 'MAKT-MAKTX'.
    *perform bdc_field       using 'MAKT-MAKTX'
                                 '"415V, 50Hz, 50kA, SDB # 2 I/c : 400A'
                               & 'MC'.
    *perform bdc_dynpro      using 'SAPLMGMM' '4000'.
    *perform bdc_field       using 'BDC_OKCODE'
                                 '/00'.
    *perform bdc_field       using 'BDC_CURSOR'
                                 'MAKT-MAKTX'.
    *perform bdc_field       using 'MAKT-MAKTX'
                                 '"415V, 50Hz, 50kA, SDB # 2 I/c : 400A'
                               & 'MC'.
    *perform bdc_field       using 'MARA-MEINS'
                                 'NO'.
    *perform bdc_field       using 'MARA-IPRKZ'
                                 'D'.
    *perform bdc_dynpro      using 'SAPLMGMM' '4000'.
    *perform bdc_field       using 'BDC_OKCODE'
                                 '/00'.
    *perform bdc_field       using 'BDC_CURSOR'
                                 'MAKT-MAKTX'.
    *perform bdc_field       using 'MAKT-MAKTX'
                                 '"415V, 50Hz, 50kA, SDB # 2 I/c : 400A'
                               & 'MC'.
    *perform bdc_field       using 'MARA-GEWEI'
                                 'KG'.
    *perform bdc_dynpro      using 'SAPLMGMM' '4000'.
    *perform bdc_field       using 'BDC_OKCODE'
                                 '/00'.
    *perform bdc_field       using 'BDC_CURSOR'
                                 'MAKT-MAKTX'.
    *perform bdc_field       using 'MAKT-MAKTX'
                                 '"415V, 50Hz, 50kA, SDB # 2 I/c : 400A'
                               & 'MC'.
    *perform bdc_field       using 'MARA-MEINS'
                                 'NO'.
    *perform bdc_field       using 'MBEW-BKLAS'
                                 'ZBOL'.
    *perform bdc_field       using 'MBEW-VPRSV'
                                 'V'.
    *perform bdc_field       using 'MBEW-PEINH'
                                 '1'.
    *perform bdc_field       using 'MBEW-VERPR'
                                 '1.00'.
    *perform bdc_dynpro      using 'SAPLMGMM' '4000'.
    *perform bdc_field       using 'BDC_OKCODE'
                                 '/00'.
    *perform bdc_field       using 'BDC_CURSOR'
                                 'MAKT-MAKTX'.
    *perform bdc_field       using 'MAKT-MAKTX'
                                 '"415V, 50Hz, 50kA, SDB # 2 I/c : 400A'
                               & 'MC'.
    perform bdc_dynpro      using 'SAPLSPO1' '0300'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '=YES'.
    perform bdc_transaction using 'MM01'.
    LOOP AT T_MESSTAB WHERE REC_NO IS INITIAL.
        AT FIRST.
          V_MESSAGE_CNT = V_MESSAGE_CNT + 1.
          T_MESSTAB-REC_NO = V_COUNT.
        ENDAT.
          MODIFY T_MESSTAB TRANSPORTING REC_NO.
        ENDLOOP.
        REFRESH T_BDCDATA.
        CLEAR T_BDCDATA.
      ENDLOOP.
      SKIP.
      WRITE : /10 'Record Number ', 30 'Error Message'.
      SKIP.
    endform.
    *&      Form  WRITE_ERROR
          text
    -->  p1        text
    <--  p2        text
    FORM WRITE_ERROR.
      LOOP AT T_MESSTAB.
        WRITE : /10 T_MESSTAB-REC_NO , 30 T_MESSTAB-MESSAGE.
      ENDLOOP.
      ULINE /10(100).
      WRITE : /10 'No of Records : ' , V_COUNT.
      WRITE : /10 'No of Erroneous Records : ' , V_MESSAGE_CNT.
      ULINE /10(100).
    ENDFORM.                    " WRITE_ERROR
    *&      Form  CHECK_BDC
          text
    -->  p1        text
    <--  p2        text
    FORM CHECK_BDC.
    DATA: L_CHECK LIKE YMMT_CHECK_BDC-YCHECK.
      SELECT SINGLE YCHECK INTO L_CHECK FROM YMMT_CHECK_BDC
                                         WHERE PROGRAMM EQ SY-REPID
                                           AND YCHECK EQ 'X'.
      IF SY-SUBRC NE 0.
        MESSAGE S000(YM) WITH 'Execution not possible'.
        STOP.
      ENDIF.
    ENDFORM.                    " CHECK_BDC
    Thanks
    Madhukar Reddy

    hi,
      in recording for each screen the Ok code should be at the end of the screen
    eg)
      perform bdc_dynpro using 'SAPLMGMM' '0060'.
    perform bdc_field using 'BDC_CURSOR'
    'RMMG1-MTART'.
    perform bdc_field using 'BDC_OKCODE'
    '=ENTR'. This should be the last statement in this block
    perform bdc_field using 'RMMG1-MATNR'
    IT_DATA-MATNR_1.
    perform bdc_field using 'RMMG1-MBRSH'
    IT_DATA-MBRSH.
    perform bdc_field using 'RMMG1-MTART'
    IT_DATA-MTART.
    perform bdc_field using 'RMMG1_REF-MATNR'
    IT_DATA-MATNR_2.
    perform bdc_field using 'BDC_OKCODE'
    '=ENTR'.
    regards,
    pavan

  • Issue in creation of plant related data at receiving server using BD10

    Hi all,
    This is regarding Material master creation using B10.I am using MATMAS05 message type for sending data from one system to another.Data is sent and received successfully.When i go in mm03 i can see all the views created successfully accept views related to PLANT.Please guide to resolve the issue.
    When i entered into Log-
    1)"The field MBEW-BKLAS is defined as a required field; it does not contain an entry".
    2)"No material master data exists for material AB_08.04.09(30) in plant 4001".
    My segemnt is as follows-
    ZMATMAS05                      matmas05
           E1MARAM                        Master material general data (MARA)
               Z1KLART                        KLART----
    My extention
               E1MARA1                        Additional Fields for E1MARAM
               E1MAKTM                        Master material short texts (MAKT)
               E1MARCM                        Master material C segment (MARC)
                   Z1AUSPM                        E1AUSPMDistribution of Classification:----
    My extention
                   E1MARC1                        Additional Fields for E1MARCM
                   E1MARDM                        Master material warehouse/batch segment (MARD)
                   E1MFHMM                        Master material production resource/tool (MFHM)
                   E1MPGDM                        Master material product group
                   E1MPOPM                        Master material forecast parameter
                   E1MPRWM                        Master material forecast value
                   E1MVEGM                        Master material total consumption
                   E1MVEUM                        Master material unplanned consumption
                   E1MKALM                        Master material production version
               E1MARMM                        Master material units of measure (MARM)
               E1MBEWM                        Master material material valuation (MBEW)
               E1MLGNM                        Master material material data per warehouse number (MLGN)
               E1MVKEM                        Master material sales data (MVKE)
               E1MLANM                        Master material tax classification (MLAN)
               E1MTXHM                        Master material long text header
               E1CUCFG                        CU: Configuration data
           E1UPSLINK                      Reference from Object to Superior UPS
    Thanks.
    Edited by: sanu debu on Apr 27, 2009 7:10 PM

    CREATE CONTROLFILE SET DATABASE "NEWDB" NORESETLOGS ARCHIVELOGAlso when you are setting a new database, the option should be RESETLOGS and not NORESETLOGS.
    'D:\APP\ADMINISTRATOR\ORADATA\NEWDB\ONLINELOG\O1_MF_2_7FK0XKB8_.LOG
    D:\APP\ADMINISTRATOR\ORADATA\NEWDB\DATAFILE\O1_MF_SYSTEM_7FK0SKN0_.DBFWhy underscore(_) at the end of the datafile name. Any specific reason ?

  • BDC issue

    Hi All,
    we have written a bdc for material upload for Tcode MMZ1. all works fine till the Accounting screen where we have to give the valuation type as D. (MBEW-BWTTY). and the Costing Screen we have to manually give enter to cross these screens and then save it. How can i overcome this issue.
    Points vl be rewarded for all suggestions.
    This is the Program - (Problem area is in bold)
    *& Report  Z_GMM
    REPORT  Z_GMM.
    TABLES : RMMG1,MAKT,MARA,MVKE,MG03STEUER,MARC,MPOP,MBEW,RM03M.
    DATA: BEGIN OF IT_MATE OCCURS 1,
    MATNR(16) TYPE C,
    MBRSH(1) TYPE C,
    MTART(4) TYPE C,
    WERKS(4) TYPE C,
    LGORT(4) TYPE C,
    BWTAR(10) TYPE C,
    VKORG(4) TYPE C,
    VTWEG(2) TYPE C,
    REF_MATNR(16) TYPE C,
    REF_WERKS(4) TYPE C,
    REF_LGORT(4) TYPE C,
    REF_BWTAR(10) TYPE C,
    REF_VKORG(4) TYPE C,
    REF_VTWEG(2) TYPE C,
    VERSG(1) TYPE C,
    KTGRM(2) TYPE C,
    MTPOS(4) TYPE C,
    PRMOD(1) TYPE C,
    TAXKM(1) TYPE C,
    KLART(3) TYPE C,
    BWTTY(1) TYPE C,
    END OF IT_MATE.
    DATA: BEGIN OF IT_MATE_ERR OCCURS 1,
    MATNR(16) TYPE C,
    MBRSH(1) TYPE C,
    MTART(4) TYPE C,
    WERKS(4) TYPE C,
    LGORT(4) TYPE C,
    BWTAR(10) TYPE C,
    VKORG(4) TYPE C,
    VTWEG(2) TYPE C,
    REF_MATNR(16) TYPE C,
    REF_WERKS(4) TYPE C,
    REF_LGORT(4) TYPE C,
    REF_BWTAR(10) TYPE C,
    REF_VKORG(4) TYPE C,
    REF_VTWEG(2) TYPE C,
    VERSG(1) TYPE C,
    KTGRM(2) TYPE C,
    MTPOS(4) TYPE C,
    PRMOD(1) TYPE C,
    TAXKM(1) TYPE C,
    KLART(3) TYPE C,
    BWTTY(1) TYPE C,
    MSG(100) TYPE C,
    END OF IT_MATE_ERR.
    DATA: IT_BDCDATA LIKE BDCDATA OCCURS 1 WITH HEADER LINE.
    DATA: IT_MSGS LIKE BDCMSGCOLL OCCURS 1 WITH HEADER LINE.
    DATA: V_MSG(100) TYPE C,
    V_MODE,
    V1(20) TYPE C.
    DATA: V_FILE TYPE STRING.
    SELECTION-SCREEN: BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-H01.
    PARAMETERS: P_FILE LIKE RLGRAP-FILENAME OBLIGATORY DEFAULT 'C:\'.
    SELECTION-SCREEN: BEGIN OF BLOCK B2 WITH FRAME TITLE TEXT-H02.
    PARAMETERS: P_ALL RADIOBUTTON GROUP G1,
    P_NO RADIOBUTTON GROUP G1 DEFAULT 'X',
    P_ERR RADIOBUTTON GROUP G1.
    SELECTION-SCREEN: END OF BLOCK B2.
    SELECTION-SCREEN: END OF BLOCK B1.
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.
      PERFORM SHOW_OPEN_DIALOG.
    START-OF-SELECTION.
      PERFORM READ_DATA.
      IF NOT IT_MATE[] IS INITIAL.
        IF P_ALL = 'X'.
          V_MODE = 'A'.
        ELSEIF P_NO = 'X'.
          V_MODE = 'N'.
        ELSE.
          V_MODE = 'E'.
        ENDIF.
        PERFORM POPULATE_BDCDATA.
      ENDIF.
    END-OF-SELECTION.
      IF NOT IT_MATE_ERR[] IS INITIAL.
        PERFORM DOWNLOAD_ERR_REC.
      ENDIF.
    *&      Form  SHOW_OPEN_DIALOG
          text
    FORM SHOW_OPEN_DIALOG .
      CALL FUNCTION 'F4_FILENAME'
        EXPORTING
          PROGRAM_NAME  = SYST-CPROG
          DYNPRO_NUMBER = SYST-DYNNR
          FIELD_NAME    = ' '
        IMPORTING
          FILE_NAME     = P_FILE.
    ENDFORM. " SHOW_OPEN_DIALOG
    *&      Form  READ_DATA
          text
    FORM READ_DATA.
      DATA: V_FILE TYPE STRING.
      V_FILE = P_FILE.
      IF NOT V_FILE IS INITIAL.
        CALL FUNCTION 'GUI_UPLOAD'
          EXPORTING
            FILENAME                = V_FILE
            FILETYPE                = 'ASC'
            HAS_FIELD_SEPARATOR     = 'X'
          TABLES
            DATA_TAB                = IT_MATE
          EXCEPTIONS
            FILE_OPEN_ERROR         = 1
            FILE_READ_ERROR         = 2
            NO_BATCH                = 3
            GUI_REFUSE_FILETRANSFER = 4
            INVALID_TYPE            = 5
            NO_AUTHORITY            = 6
            UNKNOWN_ERROR           = 7
            BAD_DATA_FORMAT         = 8
            HEADER_NOT_ALLOWED      = 9
            SEPARATOR_NOT_ALLOWED   = 10
            HEADER_TOO_LONG         = 11
            UNKNOWN_DP_ERROR        = 12
            ACCESS_DENIED           = 13
            DP_OUT_OF_MEMORY        = 14
            DISK_FULL               = 15
            DP_TIMEOUT              = 16
            OTHERS                  = 17.
      ENDIF.
    ENDFORM. " READ_DATA
    *&      Form  POPULATE_BDCDATA
          text
    FORM POPULATE_BDCDATA .
      LOOP AT IT_MATE.
        perform bdc_dynpro using 'SAPMM03M' '0060'.
        perform bdc_field using 'BDC_OKCODE' '/00'.
        perform bdc_field using 'RM03M-MATNR' IT_MATE-MATNR.
        perform bdc_field using 'RM03M-MBRSH' IT_MATE-MBRSH.
        perform bdc_field using 'RM03M-MTART' IT_MATE-MTART.
        perform bdc_field using 'RM03M-REF_MATNR' IT_MATE-REF_MATNR.
       perform bdc_dynpro using 'SAPMM03M' '0070'.
       perform bdc_field using 'BDC_OKCODE' '=SELA'.
        perform bdc_dynpro using 'SAPMM03M' '0070'.
        perform bdc_field using 'BDC_OKCODE' '=SCHL'.
        perform bdc_field using 'RM03M-KZAU1(01)' 'X'.
        perform bdc_field using 'RM03M-KZAU1(03)' 'X'.
        perform bdc_field using 'RM03M-KZAU1(04)' 'X'.
        perform bdc_field using 'RM03M-KZAU1(05)' 'X'.
        perform bdc_field using 'RM03M-KZAU1(06)' 'X'.
        perform bdc_field using 'RM03M-KZAU1(08)' 'X'.
        perform bdc_field using 'RM03M-KZAU1(09)' 'X'.
        perform bdc_field using 'RM03M-KZAU1(11)' 'X'.
        perform bdc_field using 'RM03M-KZAU1(12)' 'X'.
        perform bdc_field using 'RM03M-KZAU2(02)' 'X'.
        perform bdc_field using 'RM03M-KZAU2(05)' 'X'.
        perform bdc_field using 'RM03M-KZAU2(06)' 'X'.
        perform bdc_dynpro using 'SAPMM03M' '0080'.
        perform bdc_field using 'BDC_OKCODE' '/00'.
        perform bdc_field using 'RM03M-WERKS' IT_MATE-WERKS.
        perform bdc_field using 'RM03M-LGORT' IT_MATE-LGORT.
        perform bdc_field using 'RM03M-VKORG' IT_MATE-VKORG.
        perform bdc_field using 'RM03M-VTWEG' IT_MATE-VTWEG.
        perform bdc_field using 'RM03M-REF_WERKS' IT_MATE-REF_WERKS.
        perform bdc_field using 'RM03M-REF_LGORT' IT_MATE-REF_LGORT.
        perform bdc_field using 'RM03M-REF_VKORG' IT_MATE-REF_VKORG.
        perform bdc_field using 'RM03M-REF_VTWEG' IT_MATE-REF_VTWEG.
        perform bdc_dynpro using 'SAPMM03M' '0210'.
        perform bdc_field using 'BDC_OKCODE' '/00'.
        perform bdc_dynpro using 'SAPMM03M' '0215'.
        perform bdc_field using 'BDC_OKCODE' '/00'.
        perform bdc_dynpro using 'SAPMM03M' '0216'.
        perform bdc_field using 'BDC_OKCODE' '/00'.
        perform bdc_dynpro using 'SAPMM03M' '0212'.
        perform bdc_field using 'BDC_OKCODE' '/00'.
        perform bdc_dynpro using 'SAPMM03M' '0248'.
        perform bdc_field using 'BDC_OKCODE' '/00'.
        perform bdc_dynpro using 'SAPMM03M' '0249'.
        perform bdc_field using 'BDC_OKCODE' '/00'.
        perform bdc_dynpro using 'SAPMM03M' '0252'.
        perform bdc_field using 'BDC_OKCODE' '/00'.
        perform bdc_dynpro using 'SAPMM03M' '0260'.
        perform bdc_field using 'BDC_OKCODE' '/00'.
        perform bdc_dynpro using 'SAPMM03M' '0270'.
        perform bdc_field using 'BDC_OKCODE' '/00'.
        perform bdc_dynpro using 'SAPMM03M' '0275'.
        perform bdc_field using 'BDC_OKCODE' '/00'.
        perform bdc_dynpro using 'SAPMM03M' '0280'.
        perform bdc_field using 'BDC_OKCODE' '/00'.
        perform bdc_dynpro using 'SAPMM03M' '0290'.
        perform bdc_field using 'BDC_OKCODE' '/00'.
        perform bdc_field using 'BDC_OKCODE' '=ENTR'.
        perform bdc_dynpro using 'SAPLSPO1' '0300'.
        perform bdc_field using 'BDC_OKCODE' '=YES'.
        CALL TRANSACTION 'MMZ1' USING IT_BDCDATA
            MODE V_MODE
            UPDATE 'S' "SYNCHRONOUS
            MESSAGES INTO IT_MSGS.
        IF SY-SUBRC = 0.
          PERFORM HANDLE_SUCCESS_RECS.
          REFRESH IT_MSGS.
          CLEAR: V_MSG.
        ELSE.
          PERFORM HANDLE_ERROR_RECS.
          REFRESH IT_MSGS.
          CLEAR: V_MSG,
          IT_MATE_ERR.
        ENDIF.
        CLEAR: IT_BDCDATA,
            IT_BDCDATA[].
      ENDLOOP.
    ENDFORM. " POPULATE_BDCDATA
    *&      Form  BDC_DYNPRO
          text
         -->PROGRAM    text
         -->DYNPRO     text
    FORM BDC_DYNPRO USING PROGRAM DYNPRO.
      CLEAR IT_BDCDATA.
      IT_BDCDATA-PROGRAM = PROGRAM.
      IT_BDCDATA-DYNPRO = DYNPRO.
      IT_BDCDATA-DYNBEGIN = 'X'.
      APPEND IT_BDCDATA.
    ENDFORM. "BDC_DYNPRO
    *&      Form  BDC_FIELD
          text
         -->FNAM       text
         -->FVAL       text
    FORM BDC_FIELD USING FNAM FVAL.
      IF NOT FVAL IS INITIAL.
        CLEAR IT_BDCDATA.
        IT_BDCDATA-FNAM = FNAM.
        IT_BDCDATA-FVAL = FVAL.
        APPEND IT_BDCDATA.
      ENDIF.
    ENDFORM. "BDC_FIELD
    *&      Form  HANDLE_SUCCESS_RECS
          text
    FORM HANDLE_SUCCESS_RECS .
      READ TABLE IT_MSGS WITH KEY MSGTYP = 'S'.
      IF SY-SUBRC = 0.
    *--Formatting the message
        CALL FUNCTION 'FORMAT_MESSAGE'
          EXPORTING
            ID        = IT_MSGS-MSGID
            LANG      = SY-LANGU
            NO        = IT_MSGS-MSGNR
            V1        = IT_MSGS-MSGV1
            V2        = IT_MSGS-MSGV2
            V3        = IT_MSGS-MSGV3
            V4        = IT_MSGS-MSGV4
          IMPORTING
            MSG       = V_MSG
          EXCEPTIONS
            NOT_FOUND = 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.
        ELSE.
          WRITE:/ V_MSG.
          CLEAR: V_MSG,
          IT_MSGS.
        ENDIF.
      ENDIF.
    ENDFORM. " HANDLE_SUCCESS_RECS
    *& Form HANDLE_ERROR_RECS
    *text
    FORM HANDLE_ERROR_RECS .
      READ TABLE IT_MSGS WITH KEY MSGTYP = 'E'.
      IF SY-SUBRC = 0.
    *--Formatting the message
        CALL FUNCTION 'FORMAT_MESSAGE'
          EXPORTING
            ID        = IT_MSGS-MSGID
            LANG      = SY-LANGU
            NO        = IT_MSGS-MSGNR
            V1        = IT_MSGS-MSGV1
            V2        = IT_MSGS-MSGV2
            V3        = IT_MSGS-MSGV3
            V4        = IT_MSGS-MSGV4
          IMPORTING
            MSG       = IT_MATE_ERR-MSG
          EXCEPTIONS
            NOT_FOUND = 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.
        ELSE.
          MOVE-CORRESPONDING IT_MATE TO IT_MATE_ERR.
          APPEND IT_MATE_ERR.
          DELETE IT_MATE INDEX SY-TABIX.
          CLEAR IT_MATE_ERR.
        ENDIF.
      ENDIF.
    ENDFORM. " HANDLE_ERROR_RECS
    *& Form DOWNLOAD_ERR_REC
    *text
    FORM DOWNLOAD_ERR_REC .
      V1 = P_FILE(3).
      SHIFT P_FILE BY 3 PLACES LEFT.
      CONCATENATE 'ERR_' P_FILE INTO P_FILE.
      CONCATENATE V1 P_FILE INTO P_FILE.
      V_FILE = P_FILE.
      CALL FUNCTION 'GUI_DOWNLOAD'
        EXPORTING
      BIN_FILESIZE                    =
          FILENAME                        = 'C:\ERR_MMZ1.XLS'
         FILETYPE                        = 'ASC'
      APPEND                          = ' '
         WRITE_FIELD_SEPARATOR           = 'X'
      HEADER                          = '00'
      TRUNC_TRAILING_BLANKS           = ' '
      WRITE_LF                        = 'X'
      COL_SELECT                      = ' '
      COL_SELECT_MASK                 = ' '
      DAT_MODE                        = ' '
      CONFIRM_OVERWRITE               = ' '
      NO_AUTH_CHECK                   = ' '
      CODEPAGE                        = ' '
      IGNORE_CERR                     = ABAP_TRUE
      REPLACEMENT                     = '#'
      WRITE_BOM                       = ' '
      TRUNC_TRAILING_BLANKS_EOL       = 'X'
      WK1_N_FORMAT                    = ' '
      WK1_N_SIZE                      = ' '
      WK1_T_FORMAT                    = ' '
      WK1_T_SIZE                      = ' '
      WRITE_EOL                       = ABAP_TRUE
    IMPORTING
      FILELENGTH                      =
        TABLES
          DATA_TAB                        =  IT_MATE_ERR
      FIELDNAMES                      =
       EXCEPTIONS
         FILE_WRITE_ERROR                = 1
         NO_BATCH                        = 2
         GUI_REFUSE_FILETRANSFER         = 3
         INVALID_TYPE                    = 4
         NO_AUTHORITY                    = 5
         UNKNOWN_ERROR                   = 6
         HEADER_NOT_ALLOWED              = 7
         SEPARATOR_NOT_ALLOWED           = 8
         FILESIZE_NOT_ALLOWED            = 9
         HEADER_TOO_LONG                 = 10
         DP_ERROR_CREATE                 = 11
         DP_ERROR_SEND                   = 12
         DP_ERROR_WRITE                  = 13
         UNKNOWN_DP_ERROR                = 14
         ACCESS_DENIED                   = 15
         DP_OUT_OF_MEMORY                = 16
         DISK_FULL                       = 17
         DP_TIMEOUT                      = 18
         FILE_NOT_FOUND                  = 19
         DATAPROVIDER_EXCEPTION          = 20
         CONTROL_FLUSH_ERROR             = 21
         OTHERS                          = 22.
      IF SY-SUBRC = 0.
        MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
        WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ELSE.
        MESSAGE I000(Z00) WITH 'Error File downloaded at' V_FILE.
      ENDIF.
    ENDFORM. " DOWNLOAD_ERR_REC

    Hi,
    In your code just try and replace the lines
    perform bdc_dynpro using 'SAPMM03M' '0290'.
    perform bdc_field using 'BDC_OKCODE' '/00'.
    perform bdc_field using 'BDC_OKCODE' '=ENTR'.
    perform bdc_dynpro using 'SAPLSPO1' '0300'.
    perform bdc_field using 'BDC_OKCODE' '=YES'.
    with this code and see if it helps.Please add you itab fields at necessary places in this code.
    perform bdc_dynpro      using 'SAPMM03M' '0290'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'MARA-MEINS'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '/00'.
    perform bdc_field       using 'MARA-MEINS'
                                  record-MEINS_014.
    perform bdc_field       using 'MBEW-EKALR'
                                  record-EKALR_015.
    perform bdc_field       using 'MARC-LOSGR'
                                  record-LOSGR_016.
    perform bdc_field       using 'MBEW-BKLAS'
                                  record-BKLAS_017.
    perform bdc_field       using 'MBEW-BWTTY'
                                  record-BWTTY_018.
    perform bdc_field       using 'MBEW-VPRSV'
                                  record-VPRSV_019.
    perform bdc_field       using 'MBEW-PEINH'
                                  record-PEINH_020.
    perform bdc_dynpro      using 'SAPLSPO1' '0300'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '=YES'.
    Reward points if useful
    Regards,
    Bhavin P Shah

  • Problem while creating a ABAP Quarry report for material master

    Hi Friend,
    While I am trying to create a Quarry, certain warning message is coming and while I am executing single material is coming too many times in report with all currencies.
    Picking the data from Table: MARA, MARC, MARD, MAKT, MBEW, QMAT, AND T001 (FOR Currencies only).
    I need your help to clarify 2 point:
    Where I should assign the table with whom as I have simply selected the table one by one assigned button clicked.
    2nd How and from which Table currencies could picked as here said warning is coming and a single material is coming multiple times with all currencies in report.
    I have used as SQ03 then SQ02 and finally SQ01u2026..else I have checked the same in SQVI, but still I didnu2019t get any such fruitful.
    Filed Description          List Display            Screen Display                  Table u2013 Field
    Plant               X          X          MARC                         Material Code          X          X          MARA          
    Storage Location          X          X          MARD                       Storage Condition          X          X          MARA     - RAUBE     
    Material Type                    X          MARA          
    Old Material No          X                    MARA     - BISMT               Material Description          X                                    MAKT                                       Base Unit of Measurement          X                    MARA     - MEINS     
    Material Price (Moving)          X                    MBEW                                   Material Price (Standard)          X                    MBEW     
    Valuation Class          X                    MBEW     -BKLAS
    Inspection Type          X                    QMAT     - ART                  Currency Key          X                    T001              -WARES
    Rest of the field I have not written as you are aware about that .
    Pl suggest or help me to prepare the doc in screen shot, will have a great help from you end.
    Regards,
    Pinku

    Dear Vijay,
    I have done the same as per your earlier, but for picking th ecurrency in display, I have given Table T001, whether it is o.k. or else what? Wheneven I am trying by th esam eway, system is poping a warning message and then it's executing , but displaying all the materials with all currecies means a single material is coming too amny times with all currecy, so I need to pick extact one and for that if you could do andcan send me a screen shot more helpful to me.
    Thanks.
    jbs.sap.mm                at the rate of hotmail.com
    Pinku

  • Storage location Data is not saving in table MARD using BAPI method.

    Hi Experts,
    TABLES: T001L, "Storage Locations
            MARA,  "General Material Data
            MAKT,  "Material Descriptions
            MBEW,  "Material Valuation
            MARC,  "Plant Data for Material
            MARD.  "Storage Location Data for Mate
    DATA: BAPI_HEAD   LIKE BAPIMATHEAD,  "MATERIAL
          BAPI_MAKT   LIKE BAPI_MAKT,    "Material Description
          BAPI_MARA1  LIKE BAPI_MARA,    "Client Data
          BAPI_MARAX  LIKE BAPI_MARAX,
          BAPI_MARC1  LIKE BAPI_MARC,    "Plant View
          BAPI_MARCX  LIKE BAPI_MARCX,
          BAPI_MBEW1  LIKE BAPI_MBEW,    "Accounting View
          BAPI_MBEWX  LIKE BAPI_MBEWX,
          BAPI_MARD1  LIKE BAPI_MARD,    "Storage location
          BAPI_MARDX  LIKE BAPI_MARDX,
          BAPI_RETURN LIKE BAPIRET2.
    DATA: BEGIN OF INT_MAKT OCCURS 100.
            INCLUDE STRUCTURE BAPI_MAKT.
    DATA: END OF INT_MAKT.
    DATA: BEGIN OF INT_MAT OCCURS 100,
             WERKS(4),     "Plant
             LGORT(4),     "Storage location
             MTART(4),     "Material type
             MATNR(18),    "Material number
             MAKTX(40),     "Material description
             MATKL(9) ,    "Material group
             MBRSH(1),     "Industry sector
             MEINS(3),     "Base unit of measure
             GEWEI(3),     "Weight Unit
             SPART(2),     "Division
             EKGRP(3),     "Purchasing group
             VPRSV(1),     "Price control indicator
             STPRS(12),    "Standard price
             PEINH(3),     "Price unit
             SPRAS(2),     "Language key
             BKLAS(4),     "VALUATION CLASS
             VERPR TYPE VERPR_BAPI,    "MOVING PRICE
             BWTTY(1),     "Valuation Catogory
             MLAST(1),     "Price determination
             MLMAA(1),     "Material Ledger
             EKLAS(4),     "Valuation Class for sales order stock
             QKLAS(4),     "Valuation Class for Project Stock
             ZKPRS TYPE DZKPRS, "Future price
             ZKDAT TYPE DZKDAT, "Valid From Date
             BWPRS TYPE BWPRS,  "Tax price 1
             BWPS1 TYPE BWPS1,  "Tax price 2
             VJBWS TYPE VJBWS,  "Tax price 3
             ABWKZ TYPE ABWKZ,  "Devaluatin indicator
             BWPRH TYPE BWPRH,  "Commercial price 1
             BWPH1 TYPE BWPH1,  "Commercial price 2
             VJBWH TYPE VJBWH,  "Commercial Price 3
             XLIFO(1),          "LIFO/FIFO revelant
             MYPOL(4),          "Pool no for LIFO
             MMSTA(2),          "Plant specific material status
             AUSME TYPE AUSME,  "Unit of issue
             QMATA(6),          "Material Authorization group
             RBNRM(9),          "Catalog Profile
             WEBAZ TYPE WEBAZ,  "Goods reciept processing time in days
             PRFRQ TYPE PRFRQ,  "Recurring Insepction
             SSQSS(8),          "QM Control key
             QZGTP(4),          "Certificate Type
             QSSYS(4),          "Required QM system for vendor
           END OF INT_MAT.
    DATA: V_MATNR TYPE MARA-MATNR.
    SELECT-OPTIONS:
                PLANT    FOR  MARC-WERKS OBLIGATORY MEMORY ID PLT,
                S_LGORT  FOR  MARD-LGORT MEMORY ID STL,
                MATERIAL FOR  MARA-MATNR MEMORY ID MAT,
                MATLTYPE FOR  MARA-MTART MEMORY ID MTY,
                DIVISION FOR  MARA-SPART MEMORY ID DIV.
    PARAMETERS:  F_FILE LIKE RLGRAP-FILENAME
                 DEFAULT 'C:\DATA\ZMATERIAL.XLS' MEMORY ID F_FILE,
    GETDATA AS CHECKBOX, "Tick to download materials data to local harddisk
             UPDDATA AS CHECKBOX. "Tick to update date to Materials Master
    IF GETDATA = 'X'.
       PERFORM DOWNLOAD_DATA.
       PERFORM DOWNLOAD_FILE.
    ENDIF.
    IF UPDDATA = 'X'.
       PERFORM UPLOAD_FILE.
       PERFORM UPDATE_MM.
    ENDIF.
    FORM DOWNLOAD_DATA.
    SELECT * FROM MARC  WHERE LVORM EQ ' '
                          AND WERKS IN PLANT
                          AND MATNR IN MATERIAL.
        CLEAR MARA.
        SELECT SINGLE * FROM MARA WHERE MATNR =  MARC-MATNR.
        CHECK MATLTYPE.
        CHECK DIVISION.
        CLEAR MBEW.
        SELECT SINGLE * FROM MBEW WHERE MATNR =  MARC-MATNR
                                    AND BWKEY =  MARC-WERKS.
        CLEAR MAKT.
        SELECT SINGLE * FROM MAKT WHERE SPRAS =  'EN'
                                    AND MATNR =  MARC-MATNR.
        CLEAR MARD.
        SELECT SINGLE * FROM MARD WHERE WERKS IN PLANT
                                  AND   LGORT IN S_LGORT.
        WRITE:/ MARC-WERKS,    "Plant
                MARD-LGORT,    "Storage location
                MARA-MTART,    "Material type
                MARA-MATNR,    "Material number
                MARA-MATKL,    "Material group
                MARA-MBRSH,    "Industry sector
                MARA-MEINS,    "Base unit of measure
                MARA-GEWEI,    "Weight Unit
                MARA-SPART,    "Division
                MARC-EKGRP,    "Purchasing group
                MBEW-VPRSV,    "Price control indicator
                MBEW-STPRS,    "Standard price
                MBEW-PEINH,    "Price unit
                MBEW-BKLAS,    "VALUE CLASS
                MAKT-SPRAS,    "Language key
                MBEW-BKLAS,    "Valuation Class
                MBEW-VERPR,    "Moving price
                MAKT-MAKTX,    "Material description
                MBEW-BWTTY,    "Valutaion Catogorey
                MBEW-MLAST,    "Price Determination
                MBEW-MLMAA,    "Material Ledger
                MBEW-EKLAS,    "Valuation class for Sales order stock
                MBEW-QKLAS,    "Valutaion Class for Project Stock
                MBEW-ZKPRS,    "Future Price
                MBEW-ZKDAT,    "Valid From Date
                MBEW-BWPRS,    "Tax price 1
                MBEW-BWPS1,    "Tax price 2
                MBEW-VJBWS,    "Tax price 3
                MBEW-ABWKZ,    "Devaluatin indicator
                MBEW-BWPRH,    "Commercial price 1
                MBEW-BWPH1,    "Commercial price 2
                MBEW-VJBWH,    "Commercial Price 3
                MBEW-XLIFO,    "LIFO/FIFO revelant
                MBEW-MYPOL,    "Pool no for LIFO
                MARC-MMSTA,    "Plant specific material status
                MARC-AUSME,    "Unit of issue
                MARC-QMATA,    "Material Authorization group
                MARA-RBNRM,    "Catalog Profile
                MARC-WEBAZ,    "Goods reciept processing time in days
                MARC-PRFRQ,    "Recurring Insepction
                MARC-SSQSS,    "QM Control key
                MARC-QZGTP,    "Certificate Type
                MARC-QSSYS.    "Required QM system for vendor
                INT_MAT-WERKS = MARC-WERKS.    "Plant
                INT_MAT-LGORT = MARD-LGORT.    "Storage Location
                INT_MAT-MTART = MARA-MTART.    "Material type
                INT_MAT-MATNR = MARA-MATNR.    "Material number
                INT_MAT-MAKTX = MAKT-MAKTX.    "Material description
                INT_MAT-MATKL = MARA-MATKL.    "Material group
                INT_MAT-MBRSH = MARA-MBRSH.    "Industry sector
                INT_MAT-MEINS = MARA-MEINS.    "Base unit of measure
                INT_MAT-GEWEI = MARA-GEWEI.    "Weight Unit
                INT_MAT-SPART = MARA-SPART.    "Division
                INT_MAT-EKGRP = MARC-EKGRP.    "Purchasing group
                INT_MAT-VPRSV = MBEW-VPRSV.    "Price control indicator
                INT_MAT-STPRS = MBEW-STPRS.    "Standard price
                INT_MAT-PEINH = MBEW-PEINH.    "Price unit
                INT_MAT-SPRAS = MAKT-SPRAS.    "Language key
                INT_MAT-BKLAS = MBEW-BKLAS.    "VALVATION CLASS
                INT_MAT-VERPR = MBEW-VERPR.    "MOVING price
                INT_MAT-BWTTY = MBEW-BWTTY.    "Valutaion Catogorey
                INT_MAT-MLAST = MBEW-MLAST.    "Price Determination
                INT_MAT-MLMAA = MBEW-MLMAA.    "Material Ledger
                INT_MAT-EKLAS = MBEW-EKLAS.    "Valuation class forS.O Stock
                INT_MAT-QKLAS = MBEW-QKLAS.    "Valutaion Class for Project
                INT_MAT-ZKPRS = MBEW-ZKPRS.    "Future Price
                INT_MAT-ZKDAT = MBEW-ZKDAT.    "Valid From Date
                INT_MAT-BWPRS = MBEW-BWPRS.    "Tax price 1
                INT_MAT-BWPS1 = MBEW-BWPS1.    "Tax price 2
                INT_MAT-VJBWS = MBEW-VJBWS.    "Tax price 3
                INT_MAT-ABWKZ = MBEW-ABWKZ.    "Devaluatin indicator
                INT_MAT-BWPRH = MBEW-BWPRH.    "Commercial price 1
                INT_MAT-BWPH1 = MBEW-BWPH1.    "Commercial price 2
                INT_MAT-VJBWH = MBEW-VJBWH.    "Commercial Price 3
                INT_MAT-XLIFO = MBEW-XLIFO.    "LIFO/FIFO revelant
                INT_MAT-MYPOL = MBEW-MYPOL.    "Pool no for LIFO
                INT_MAT-MMSTA = MARC-MMSTA.    "Plant specific material
                INT_MAT-AUSME = MARC-AUSME.    "Unit of issue
                INT_MAT-QMATA = MARC-QMATA.    "Material Authorization group
                INT_MAT-RBNRM = MARA-RBNRM.    "Catalog Profile
                INT_MAT-WEBAZ = MARC-WEBAZ.    "Goods reciept processing
                INT_MAT-PRFRQ = MARC-PRFRQ.    "Recurring Insepction
                INT_MAT-SSQSS = MARC-SSQSS.    "QM Control key
                INT_MAT-QZGTP = MARC-QZGTP.    "Certificate Type
                INT_MAT-QSSYS = MARC-QSSYS.    "Required QM system for
                APPEND INT_MAT.
                CLEAR  INT_MAT.
    ENDSELECT.
    ENDFORM.
    FORM DOWNLOAD_FILE.
    call function 'WS_DOWNLOAD'
      EXPORTING
        FILENAME                      = F_FILE
        FILETYPE                      = 'DAT'
      FILETYPE                      = 'WK1'
      tables
        data_tab                      = INT_MAT
      EXCEPTIONS
        FILE_OPEN_ERROR               = 1
        FILE_WRITE_ERROR              = 2
        INVALID_FILESIZE              = 3
        INVALID_TYPE                  = 4
        NO_BATCH                      = 5
        UNKNOWN_ERROR                 = 6
        INVALID_TABLE_WIDTH           = 7
        GUI_REFUSE_FILETRANSFER       = 8
        CUSTOMER_ERROR                = 9
        OTHERS                        = 10.
    IF SY-SUBRC = 0.
       FORMAT COLOR COL_GROUP.
       WRITE:/ 'Data Download Successfully to your local harddisk'.
       SKIP.
    ENDIF.
    ENDFORM.
    FORM UPLOAD_FILE.
    call function 'WS_UPLOAD'
      EXPORTING
        FILENAME                      = F_FILE
        FILETYPE                      = 'DAT'
      FILETYPE                      = 'WK1'
      tables
        data_tab                      = INT_MAT
      EXCEPTIONS
        FILE_OPEN_ERROR               = 1
        FILE_WRITE_ERROR              = 2
        INVALID_FILESIZE              = 3
        INVALID_TYPE                  = 4
        NO_BATCH                      = 5
        UNKNOWN_ERROR                 = 6
        INVALID_TABLE_WIDTH           = 7
        GUI_REFUSE_FILETRANSFER       = 8
        CUSTOMER_ERROR                = 9
        OTHERS                        = 10.
    IF SY-SUBRC = 0.
       FORMAT COLOR COL_GROUP.
       WRITE:/ 'Data Upload Successfully from your local harddisk'.
       SKIP.
    ENDIF.
    ENDFORM.
    FORM UPDATE_MM.
    LOOP AT INT_MAT.
    CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT'
      EXPORTING
        INPUT              = INT_MAT-MATNR
    IMPORTING
       OUTPUT             = INT_MAT-MATNR
    EXCEPTIONS
      LENGTH_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.
    Header
        BAPI_HEAD-MATERIAL        = INT_MAT-MATNR.
        BAPI_HEAD-IND_SECTOR      = INT_MAT-MBRSH.
        BAPI_HEAD-MATL_TYPE       = INT_MAT-MTART.
        BAPI_HEAD-BASIC_VIEW      = 'X'.
        BAPI_HEAD-PURCHASE_VIEW   = 'X'.
        BAPI_HEAD-ACCOUNT_VIEW    = 'X'.
    Material Description
        REFRESH INT_MAKT.
        INT_MAKT-LANGU           = INT_MAT-SPRAS.
        INT_MAKT-MATL_DESC       = INT_MAT-MAKTX.
        APPEND INT_MAKT.
    Client Data - Basic
        BAPI_MARA1-MATL_GROUP     = INT_MAT-MATKL.
        BAPI_MARA1-BASE_UOM       = INT_MAT-MEINS.
        BAPI_MARA1-UNIT_OF_WT     = INT_MAT-GEWEI.
        BAPI_MARA1-DIVISION       = INT_MAT-SPART.
        BAPI_MARAX-MATL_GROUP = 'X'.
        BAPI_MARAX-BASE_UOM   = 'X'.
        BAPI_MARAX-UNIT_OF_WT = 'X'.
        BAPI_MARAX-DIVISION   = 'X'.
    Plant - Purchasing
        BAPI_MARC1-PLANT      = INT_MAT-WERKS.
        BAPI_MARC1-PUR_GROUP  = INT_MAT-EKGRP.
        BAPI_MARC1-PUR_STATUS = INT_MAT-MMSTA.
        BAPI_MARC1-ISSUE_UNIT = INT_MAT-AUSME.
        BAPI_MARC1-QM_AUTHGRP = INT_MAT-QMATA.
        BAPI_MARC1-GR_PR_TIME = INT_MAT-WEBAZ.
        BAPI_MARC1-INSP_INT   = INT_MAT-PRFRQ.
        BAPI_MARC1-CTRL_KEY   = INT_MAT-SSQSS.
        BAPI_MARC1-CERT_TYPE  = INT_MAT-QZGTP.
        BAPI_MARC1-QM_RGMTS   = INT_MAT-QSSYS.
        BAPI_MARCX-PLANT      = INT_MAT-WERKS.
        BAPI_MARCX-PUR_GROUP  = 'X'.
        BAPI_MARCX-PUR_STATUS = 'X'.
        BAPI_MARCX-ISSUE_UNIT = 'X'.
        BAPI_MARCX-QM_AUTHGRP = 'X'.
        BAPI_MARCX-GR_PR_TIME = 'X'.
        BAPI_MARCX-INSP_INT   = 'X'.
        BAPI_MARCX-CTRL_KEY   = 'X'.
        BAPI_MARCX-CERT_TYPE  = 'X'.
        BAPI_MARCX-QM_RGMTS   = 'X'.
    Accounting 1
        BAPI_MBEW1-VAL_AREA      = INT_MAT-WERKS.
        BAPI_MBEW1-PRICE_CTRL    = INT_MAT-VPRSV.
        BAPI_MBEW1-STD_PRICE     = INT_MAT-STPRS.
        BAPI_MBEW1-PRICE_UNIT    = INT_MAT-PEINH.
        BAPI_MBEW1-MOVING_PR     = INT_MAT-VERPR.
        BAPI_MBEW1-VAL_CLASS     = INT_MAT-BKLAS.
        BAPI_MBEW1-VAL_CAT       = INT_MAT-BWTTY.
        BAPI_MBEW1-ML_SETTLE     = INT_MAT-MLAST.
        BAPI_MBEW1-ML_ACTIVE     = INT_MAT-MLMAA.
        BAPI_MBEW1-VM_SO_STK     = INT_MAT-EKLAS.
        BAPI_MBEW1-VM_P_STOCK    = INT_MAT-QKLAS.
        BAPI_MBEW1-FUTURE_PR     = INT_MAT-ZKPRS.
        BAPI_MBEW1-VALID_FROM    = INT_MAT-ZKDAT.
    *ACCOUNTING 2
       BAPI_MBEW1-TAXPRICE_1    = INT_MAT-BWPRS.
       BAPI_MBEW1-TAXPRICE_2    = INT_MAT-BWPS1.
       BAPI_MBEW1-TAXPRICE_3    = INT_MAT-VJBWS.
       BAPI_MBEW1-DEVAL_IND     = INT_MAT-ABWKZ.
       BAPI_MBEW1-COMMPRICE1    = INT_MAT-BWPRH.
       BAPI_MBEW1-COMMPRICE2    = INT_MAT-BWPH1.
       BAPI_MBEW1-COMMPRICE3    = INT_MAT-VJBWH.
       BAPI_MBEW1-LIFO_FIFO     = INT_MAT-XLIFO.
       BAPI_MBEW1-POOLNUMBER    = INT_MAT-MYPOL.
        BAPI_MBEWX-VAL_AREA   = INT_MAT-WERKS.
        BAPI_MBEWX-PRICE_CTRL = 'X'.
        BAPI_MBEWX-STD_PRICE  = 'X'.
        BAPI_MBEWX-PRICE_UNIT = 'X'.
        BAPI_MBEWX-MOVING_PR =  'X'.
        BAPI_MBEWX-VAL_CLASS =  'X'.
        BAPI_MBEWX-VAL_CAT       = 'x'.
        BAPI_MBEWX-ML_SETTLE     = 'X'.
        BAPI_MBEWX-ML_ACTIVE     = 'X'.
        BAPI_MBEWX-VM_SO_STK     = 'X'.
        BAPI_MBEWX-VM_P_STOCK    = 'X'.
        BAPI_MBEWX-FUTURE_PR     = 'X'.
        BAPI_MBEWX-VALID_FROM    = 'X'.
       BAPI_MBEWX-TAXPRICE_1    = 'X'.
       BAPI_MBEWX-TAXPRICE_2    = 'X'.
       BAPI_MBEWX-TAXPRICE_3    = 'X'.
       BAPI_MBEWX-DEVAL_IND     = 'X'.
       BAPI_MBEWX-COMMPRICE1    = 'X'.
       BAPI_MBEWX-COMMPRICE2    = 'X'.
       BAPI_MBEWX-COMMPRICE3    = 'X'.
       BAPI_MBEWX-LIFO_FIFO     = 'X'.
       BAPI_MBEWX-POOLNUMBER    = 'X'.
    *Storage Locations
        BAPI_MARD1-PLANT      = INT_MAT-WERKS.
        BAPI_MARD1-STGE_LOC   = INT_MAT-LGORT.
        BAPI_MARDX-PLANT      = INT_MAT-WERKS.
        BAPI_MARDX-STGE_LOC   = INT_MAT-LGORT.
       WRITE:/ BAPI_HEAD-MATERIAL, BAPI_MARC1-PLANT ,BAPI_MARD1-STGE_LOC.
        call function 'BAPI_MATERIAL_SAVEDATA'
          exporting
            HEADDATA                   = BAPI_HEAD
            CLIENTDATA                 = BAPI_MARA1
            CLIENTDATAX                = BAPI_MARAX
            PLANTDATA                  = BAPI_MARC1
            PLANTDATAX                 = BAPI_MARCX
          FORECASTPARAMETERS         =
          FORECASTPARAMETERSX        =
          PLANNINGDATA               =
          PLANNINGDATAX              =
    <b>      STORAGELOCATIONDATA        =  BAPI_MARD1
           STORAGELOCATIONDATAX       =  BAPI_MARDX</b>
            VALUATIONDATA              = BAPI_MBEW1
            VALUATIONDATAX             = BAPI_MBEWX
          WAREHOUSENUMBERDATA        =
          WAREHOUSENUMBERDATAX       =
          SALESDATA                  = BAPI_MVKE1
          SALESDATAX                 = BAPI_MVKEX
          STORAGETYPEDATA            =
          STORAGETYPEDATAX           =
          IMPORTING
            RETURN                     = BAPI_RETURN
          TABLES
            MATERIALDESCRIPTION        = INT_MAKT
          UNITSOFMEASURE             =
          UNITSOFMEASUREX            =
          INTERNATIONALARTNOS        =
          MATERIALLONGTEXT           =
          TAXCLASSIFICATIONS         =
          RETURNMESSAGES             =
          PRTDATA                    =
          PRTDATAX                   =
          EXTENSIONIN                =
          EXTENSIONINX               =
    IF BAPI_RETURN-TYPE = 'E'.
       WRITE:/ 'Error Message ', BAPI_RETURN-MESSAGE.
    ENDIF.
    ENDLOOP.
    ENDFORM.
    <b>i am using this bapi method to copy materials from one plant to another plant using storage location so here what happenig is everyting is going correct but only the storage location data is not saving in table mard so any body faced this kind of problem please tell me.... and one more dbt
    bapi_marcx-pur_status = 'x' what is 'X' here??? is that mandatory field or required field ???
    points wil be rewarded.
    reagrds,
    sunil k airam.

    In the HEADDATA structure, STORAGE_VIEW should also be set as 'X' , in order to update storage location data
    for example
    BAPI_HEAD-STORAGE_VIEW = 'X'.
    Also, PUR_STATUS corresponds to field MARA-MSTAE whose domain has value table T141, therefore values in the field are checked against T141
    Edited by: Harris Veziris on May 12, 2008 12:37 PM

  • Changing layout at runtime, executing background job and sending mail inXLS

    Hi
    When i execute my program in foregroung by manually changing value of s_job = 'X' in debugging mode it is sending the correct XLS file via mail with all the data , whereas  when i execute my program in backgroud mode it sends incomlete XLS file via mail, it has only first 2 records in any layout........can anybody please help in this regard....
    program is as follows...
    REPORT ZPMACR01_MD_MRP_100.
    *& Report :  ZPMACR01_MD_MRP_100
    TABLES : MARA, MARC, MAKT, MBEW,MARD.
    MAIL data declarations
    TABLES : adr6 , sscrfields.
    DATA: BEGIN OF mbody OCCURS 0,
          message(100),
          END OF mbody.
    DATA: BEGIN OF addresses OCCURS 0,
          addresses(100),
          END Of addresses.
    FIELD-SYMBOLS: <f> type ANY,
                   <tab> TYPE STANDARD TABLE,
                   <wa> type ANY.
    DATA: count TYPE i value 0,
          col_1 TYPE i.
    DATA: new_table TYPE REF TO data, "pointer to dynamic table
          new_line  TYPE REF TO data. "pointer to work area of dynamic table
    DATA: s_job TYPE c.
    DATA: i_data_out_text TYPE string OCCURS 0 WITH HEADER LINE.
    DATA: message TYPE string OCCURS 0 WITH HEADER LINE.
    DATA:  it_message TYPE STANDARD TABLE OF solisti1 INITIAL SIZE 0
           WITH HEADER LINE.
    DATA:  BEGIN OF it_attach OCCURS 0,
             line(2650) TYPE c,
           END OF it_attach.
    DATA:   t_packing_list LIKE sopcklsti1 OCCURS 0 WITH HEADER LINE,
            t_hex LIKE solix OCCURS 0 WITH HEADER LINE,
            t_receivers LIKE somlreci1 OCCURS 0 WITH HEADER LINE,
            w_cnt TYPE i,
            w_sent_all(1) TYPE c,
            w_doc_data LIKE sodocchgi1,
            gd_error    TYPE sy-subrc,
            gd_reciever TYPE sy-subrc.
    ALV data declarations
    TYPE-POOLS: SLIS.
    DATA : IT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
           IT_FIELDCAT2 TYPE LVC_T_FCAT,
           IT_FIELDCAT_FIN TYPE LVC_T_FCAT,
           IT_FIELDCAT3 TYPE SLIS_T_FIELDCAT_ALV,
           itab1 TYPE SLIS_T_FIELDCAT_ALV,
           W_FIELDCAT TYPE SLIS_FIELDCAT_ALV,
           W_REPID TYPE SY-REPID,
           IT_LAYOUT TYPE SLIS_LAYOUT_ALV.
    DATA: is_fieldcat LIKE LINE OF it_fieldcat.
    DATA: is_fieldcat2 LIKE LINE OF it_fieldcat2,
    Is_FIELDCAT3 LIKE LINE OF it_fieldcat3.
    Data: variant type  DISVARIANT,
          v_size LIKE sy-tabix.
    ALV Data
    DATA:
           i_sort TYPE slis_t_sortinfo_alv,
           v_lvc_title   TYPE lvc_title,
           v_repid       LIKE sy-repid,
           c_user_command TYPE slis_formname  VALUE 'ALV_USER_COMMAND',
           gt_list_top_of_page TYPE slis_t_listheader,
           gt_list_end_of_list TYPE slis_t_listheader,
           gs_layout TYPE slis_layout_alv,
           gt_events      TYPE slis_t_event,
           gs_events      type slis_alv_event,
           gt_print       TYPE slis_print_alv,
           g_top_of_page  TYPE slis_formname VALUE 'TOP_OF_PAGE'.
    Selection Parameters
    SELECTION-SCREEN BEGIN OF BLOCK B1.
    SELECT-OPTIONS : SO_MATNR FOR MARA-MATNR OBLIGATORY.
    SELECT-OPTIONS : SO_WERKS FOR MARC-WERKS.
    SELECT-OPTIONS : SO_SPRAS FOR MAKT-SPRAS.
    SELECT-OPTIONS : SO_BWKEY FOR MBEW-BWKEY.
    SELECTION-SCREEN END OF BLOCK B1.
    SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME TITLE TEXT-001.
    PARAMETERS: p_email TYPE somlreci1-receiver
                                      default '[email protected]'.
    SELECTION-SCREEN END OF BLOCK B2.
    SELECTION-SCREEN BEGIN OF BLOCK B3 WITH FRAME TITLE TEXT-002.
    PARAMETERS : SO_LAY TYPE DISVARIANT-VARIANT DEFAULT '/DEFAULT'.
    SELECTION-SCREEN END OF BLOCK B3.
    DATA Declarations.
    Data : BEGIN OF ITab OCCURS 0,
           manr type mara-matnr,
           end of ITAB.
    data : BEGIN OF IT_TABLE OCCURS 0,
           MATNR TYPE MARA-MATNR,
           MATKL TYPE MARA-MATKL,
           MEINS TYPE MARA-MEINS,
           MTART TYPE MARA-MTART,
           AHDIS TYPE MARC-AHDIS,
           AUSDT TYPE MARC-AUSDT,
           AUTRU TYPE MARC-AUTRU,
           BESKZ TYPE MARC-BESKZ,
           BSTFE TYPE MARC-BSTFE,
           BSTMA TYPE MARC-BSTMA,
           BSTMI TYPE MARC-BSTMI,
           BSTRF TYPE MARC-BSTRF,
           BWSCL TYPE MARC-BWSCL,
           DIBER TYPE MARC-DIBER,
           DISGR TYPE MARC-DISGR,
           DISLS TYPE MARC-DISLS,
           DISMM TYPE MARC-DISMM,
           DISPO TYPE MARC-DISPO,
           DISPR TYPE MARC-DISPR,
           DZEIT TYPE MARC-DZEIT,
           EISBE TYPE MARC-EISBE,
           EISLO TYPE MARC-EISLO,
           EKGRP TYPE MARC-EKGRP,
           FHORI TYPE MARC-FHORI,
           FXHOR TYPE MARC-FXHOR,
           KAUTB TYPE MARC-KAUTB,
           KORDB TYPE MARC-KORDB,
           KZAUS TYPE MARC-KZAUS,
           LFGJA TYPE MARC-LFGJA,
           LFMON TYPE MARC-LFMON,
           LGRAD TYPE MARC-LGRAD,
           LVORM TYPE MARC-LVORM,
           MABST TYPE MARC-MABST,
           MINBE TYPE MARC-MINBE,
           MMSTA TYPE MARC-MMSTA,
           MMSTD TYPE MARC-MMSTD,
           MRPPP TYPE MARC-MRPPP,
           MTVFP TYPE MARC-MTVFP,
           NFMAT TYPE MARC-NFMAT,
           PERKZ TYPE MARC-PERKZ,
           PLIFZ TYPE MARC-PLIFZ,
           PLVAR TYPE MARC-PLVAR,
           PSTAT TYPE MARC-PSTAT,
           QZGTP TYPE MARC-QZGTP,
           RGEKZ TYPE MARC-RGEKZ,
           RWPRO TYPE MARC-RWPRO,
           SBDKZ TYPE MARC-SBDKZ,
           SCHGT TYPE MARC-SCHGT,
           SHFLG TYPE MARC-SHFLG,
           SHPRO TYPE MARC-SHPRO,
           SHZET TYPE MARC-SHZET,
           SOBSL TYPE MARC-SOBSL,
           STRGR TYPE MARC-STRGR,
           TRAME TYPE MARC-TRAME,
           UEETK TYPE MARC-UEETK,
           UEETO TYPE MARC-UEETO,
           UMLMC TYPE MARC-UMLMC,
           UNETO TYPE MARC-UNETO,
           USEQU TYPE MARC-USEQU,
           VINT1 TYPE MARC-VINT1,
           VINT2 TYPE MARC-VINT2,
           VRBDT TYPE MARC-VRBDT,
           VRBFK TYPE MARC-VRBFK,
           VRBMT TYPE MARC-VRBMT,
           VRBWK TYPE MARC-VRBWK,
           VRMOD TYPE MARC-VRMOD,
           WEBAZ TYPE MARC-WEBAZ,
           WERKS TYPE MARC-WERKS,
           WZEIT TYPE MARC-WZEIT,
          DISKZ TYPE MARD-DISKZ,
          LBSTF TYPE MARD-LBSTF,
          LGORT TYPE MARD-LGORT,
          LMINB TYPE MARD-LMINB,
          LSOBS TYPE MARD-LSOBS,
           MAKTX TYPE MAKT-MAKTX,
           END OF IT_TABLE.
    DATA: BEGIN OF IT_MARD OCCURS 0,
           MATNR TYPE MARA-MATNR,
           MATKL TYPE MARA-MATKL,
           MEINS TYPE MARA-MEINS,
           MTART TYPE MARA-MTART,
           DISKZ TYPE MARD-DISKZ,
           LBSTF TYPE MARD-LBSTF,
           LGORT TYPE MARD-LGORT,
           LMINB TYPE MARD-LMINB,
           LSOBS TYPE MARD-LSOBS,
          MAKTX TYPE MAKT-MAKTX,
           END OF IT_MARD.
    DATA: BEGIN OF IT_MBEW OCCURS 0,
           MATNR TYPE MBEW-MATNR,
           BKLAS TYPE MBEW-BKLAS,
           SALK3 TYPE MBEW-SALK3,
           PEINH TYPE MBEW-PEINH,
           STPRS TYPE MBEW-STPRS,
           VERPR TYPE MBEW-VERPR,
           VPRSV TYPE MBEW-VPRSV,
           END OF IT_MBEW.
    data : BEGIN OF IT_FINAL0 occurs 0,
           MATNR LIKE MARA-MATNR,
           MATKL LIKE MARA-MATKL,
           MEINS LIKE MARA-MEINS,
           MTART LIKE MARA-MTART,
           AHDIS LIKE MARC-AHDIS,
           AUSDT LIKE MARC-AUSDT,
           AUTRU LIKE MARC-AUTRU,
           BESKZ LIKE MARC-BESKZ,
           BSTFE LIKE MARC-BSTFE,
           BSTMA LIKE MARC-BSTMA,
           BSTMI LIKE MARC-BSTMI,
           BSTRF LIKE MARC-BSTRF,
           BWSCL LIKE MARC-BWSCL,
           DIBER LIKE MARC-DIBER,
           DISGR LIKE MARC-DISGR,
           DISLS LIKE MARC-DISLS,
           DISMM LIKE MARC-DISMM,
           DISPO LIKE MARC-DISPO,
           DISPR LIKE MARC-DISPR,
           DZEIT LIKE MARC-DZEIT,
           EISBE LIKE MARC-EISBE,
           EISLO LIKE MARC-EISLO,
           EKGRP LIKE MARC-EKGRP,
           FHORI LIKE MARC-FHORI,
           FXHOR LIKE MARC-FXHOR,
           KAUTB LIKE MARC-KAUTB,
           KORDB LIKE MARC-KORDB,
           KZAUS LIKE MARC-KZAUS,
           LFGJA LIKE MARC-LFGJA,
           LFMON LIKE MARC-LFMON,
           LGRAD LIKE MARC-LGRAD,
           LVORM LIKE MARC-LVORM,
           MABST LIKE MARC-MABST,
           MINBE LIKE MARC-MINBE,
           MMSTA LIKE MARC-MMSTA,
           MMSTD LIKE MARC-MMSTD,
           MRPPP LIKE MARC-MRPPP,
           MTVFP LIKE MARC-MTVFP,
           NFMAT LIKE MARC-NFMAT,
           PERKZ LIKE MARC-PERKZ,
           PLIFZ LIKE MARC-PLIFZ,
           PLVAR LIKE MARC-PLVAR,
           PSTAT LIKE MARC-PSTAT,
           QZGTP LIKE MARC-QZGTP,
           RGEKZ LIKE MARC-RGEKZ,
           RWPRO LIKE MARC-RWPRO,
           SBDKZ LIKE MARC-SBDKZ,
           SCHGT LIKE MARC-SCHGT,
           SHFLG LIKE MARC-SHFLG,
           SHPRO LIKE MARC-SHPRO,
           SHZET LIKE MARC-SHZET,
           SOBSL LIKE MARC-SOBSL,
           STRGR LIKE MARC-STRGR,
           TRAME LIKE MARC-TRAME,
           UEETK LIKE MARC-UEETK,
           UEETO LIKE MARC-UEETO,
           UMLMC LIKE MARC-UMLMC,
           UNETO LIKE MARC-UNETO,
           USEQU LIKE MARC-USEQU,
           VINT1 LIKE MARC-VINT1,
           VINT2 LIKE MARC-VINT2,
           VRBDT LIKE MARC-VRBDT,
           VRBFK LIKE MARC-VRBFK,
           VRBMT LIKE MARC-VRBMT,
           VRBWK LIKE MARC-VRBWK,
           VRMOD LIKE MARC-VRMOD,
           WEBAZ LIKE MARC-WEBAZ,
           WERKS LIKE MARC-WERKS,
           WZEIT LIKE MARC-WZEIT,
           DISKZ LIKE MARD-DISKZ,
           LBSTF LIKE MARD-LBSTF,
           LGORT LIKE MARD-LGORT,
           LMINB LIKE MARD-LMINB,
           LSOBS LIKE MARD-LSOBS,
           MAKTX LIKE MAKT-MAKTX,
           END OF IT_FINAL0.
    data : BEGIN OF IT_FINAL occurs 0,
           MATNR LIKE MARA-MATNR,
           MATKL LIKE MARA-MATKL,
           MEINS LIKE MARA-MEINS,
           MTART LIKE MARA-MTART,
           AHDIS LIKE MARC-AHDIS,
           AUSDT LIKE MARC-AUSDT,
           AUTRU LIKE MARC-AUTRU,
           BESKZ LIKE MARC-BESKZ,
           BSTFE LIKE MARC-BSTFE,
           BSTMA LIKE MARC-BSTMA,
           BSTMI LIKE MARC-BSTMI,
           BSTRF LIKE MARC-BSTRF,
           BWSCL LIKE MARC-BWSCL,
           DIBER LIKE MARC-DIBER,
           DISGR LIKE MARC-DISGR,
           DISLS LIKE MARC-DISLS,
           DISMM LIKE MARC-DISMM,
           DISPO LIKE MARC-DISPO,
           DISPR LIKE MARC-DISPR,
           DZEIT LIKE MARC-DZEIT,
           EISBE LIKE MARC-EISBE,
           EISLO LIKE MARC-EISLO,
           EKGRP LIKE MARC-EKGRP,
           FHORI LIKE MARC-FHORI,
           FXHOR LIKE MARC-FXHOR,
           KAUTB LIKE MARC-KAUTB,
           KORDB LIKE MARC-KORDB,
           KZAUS LIKE MARC-KZAUS,
           LFGJA LIKE MARC-LFGJA,
           LFMON LIKE MARC-LFMON,
           LGRAD LIKE MARC-LGRAD,
           LVORM LIKE MARC-LVORM,
           MABST LIKE MARC-MABST,
           MINBE LIKE MARC-MINBE,
           MMSTA LIKE MARC-MMSTA,
           MMSTD LIKE MARC-MMSTD,
           MRPPP LIKE MARC-MRPPP,
           MTVFP LIKE MARC-MTVFP,
           NFMAT LIKE MARC-NFMAT,
           PERKZ LIKE MARC-PERKZ,
           PLIFZ LIKE MARC-PLIFZ,
           PLVAR LIKE MARC-PLVAR,
           PSTAT LIKE MARC-PSTAT,
           QZGTP LIKE MARC-QZGTP,
           RGEKZ LIKE MARC-RGEKZ,
           RWPRO LIKE MARC-RWPRO,
           SBDKZ LIKE MARC-SBDKZ,
           SCHGT LIKE MARC-SCHGT,
           SHFLG LIKE MARC-SHFLG,
           SHPRO LIKE MARC-SHPRO,
           SHZET LIKE MARC-SHZET,
           SOBSL LIKE MARC-SOBSL,
           STRGR LIKE MARC-STRGR,
           TRAME LIKE MARC-TRAME,
           UEETK LIKE MARC-UEETK,
           UEETO LIKE MARC-UEETO,
           UMLMC LIKE MARC-UMLMC,
           UNETO LIKE MARC-UNETO,
           USEQU LIKE MARC-USEQU,
           VINT1 LIKE MARC-VINT1,
           VINT2 LIKE MARC-VINT2,
           VRBDT LIKE MARC-VRBDT,
           VRBFK LIKE MARC-VRBFK,
           VRBMT LIKE MARC-VRBMT,
           VRBWK LIKE MARC-VRBWK,
           VRMOD LIKE MARC-VRMOD,
           WEBAZ LIKE MARC-WEBAZ,
           WERKS LIKE MARC-WERKS,
           WZEIT LIKE MARC-WZEIT,
           DISKZ LIKE MARD-DISKZ,
           LBSTF LIKE MARD-LBSTF,
           LGORT LIKE MARD-LGORT,
           LMINB LIKE MARD-LMINB,
           LSOBS LIKE MARD-LSOBS,
           MAKTX LIKE MAKT-MAKTX,
           BKLAS LIKE MBEW-BKLAS,
           SALK3 LIKE MBEW-SALK3,
           PEINH LIKE MBEW-PEINH,
           STPRS LIKE MBEW-STPRS,
           VERPR LIKE MBEW-VERPR,
           VPRSV LIKE MBEW-VPRSV,
           ZXPRS LIKE MBEW-STPRS,
           END OF IT_FINAL.
    data : BEGIN OF IT_display occurs 0,
           matnr LIKE MARA-MATNR,
           maktx LIKE MAKT-MAKTX,
           meins LIKE MARA-MEINS,
           werks LIKE MARC-WERKS,
           dispo LIKE MARC-DISPO,
           dismm LIKE MARC-DISMM,
           plifz LIKE MARC-PLIFZ,
           webaz LIKE MARC-WEBAZ,
           minbe LIKE MARC-MINBE,
         shzet LIKE MARC-SHZET,
         eisbe LIKE MARC-EISBE,
         disls LIKE MARC-DISLS,
         bstmi LIKE MARC-BSTMI,
         bstma LIKE MARC-BSTMA,
         bstfe LIKE MARC-BSTFE,
         ZXPRS LIKE MBEW-STPRS,
         peinh LIKE MBEW-PEINH,
         salk3 LIKE MBEW-SALK3,
           end of it_display.
    ALV Layout Variant
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR so_lay.
      PERFORM get_alv_layout_values.
    SELECTION SCREEN.
    AT SELECTION-SCREEN.
      IF ( sscrfields-ucomm = 'SJOB' OR
      sy-batch = 'X' ).
        s_job = 'X'.
      ENDIF.
    select single matnr into itab from mara where matnr in so_matnr.
    if sy-subrc <> 0.
    message e001(zpal).
    endif.
    START-OF-SELECTION.
      IF SO_LAY <> ' '.
        VARIANT-REPORT = 'ZPMACR01_MD_MRP_100'.
        VARIANT-VARIANT = SO_LAY.
    else.
    VARIANT-VARIANT = '/DEFAULT'.
      ENDIF.
    INITIALIZATION.
      W_REPID = SY-REPID.
    START-OF-SELECTION.
    IF SO_LAY <> ' '.
        VARIANT-REPORT  = w_repid.
        VARIANT-VARIANT = SO_LAY.
    else.
    VARIANT-VARIANT = '/DEFAULT'.
    ENDIF.
      SELECT
      MARA~MATNR
      MARA~MATKL
      MARA~MEINS
      MARA~MTART
      MARC~AHDIS
      MARC~AUSDT
      MARC~AUTRU
      MARC~BESKZ
      MARC~BSTFE
      MARC~BSTMA
      MARC~BSTMI
      MARC~BSTRF
      MARC~BWSCL
      MARC~DIBER
      MARC~DISGR
      MARC~DISLS
      MARC~DISMM
      MARC~DISPO
      MARC~DISPR
      MARC~DZEIT
      MARC~EISBE
      MARC~EISLO
      MARC~EKGRP
      MARC~FHORI
      MARC~FXHOR
      MARC~KAUTB
      MARC~KORDB
      MARC~KZAUS
      MARC~LFGJA
      MARC~LFMON
      MARC~LGRAD
      MARC~LVORM
      MARC~MABST
      MARC~MINBE
      MARC~MMSTA
      MARC~MMSTD
      MARC~MRPPP
      MARC~MTVFP
      MARC~NFMAT
      MARC~PERKZ
      MARC~PLIFZ
      MARC~PLVAR
      MARC~PSTAT
      MARC~QZGTP
      MARC~RGEKZ
      MARC~RWPRO
      MARC~SBDKZ
      MARC~SCHGT
      MARC~SHFLG
      MARC~SHPRO
      MARC~SHZET
      MARC~SOBSL
      MARC~STRGR
      MARC~TRAME
      MARC~UEETK
      MARC~UEETO
      MARC~UMLMC
      MARC~UNETO
      MARC~USEQU
      MARC~VINT1
      MARC~VINT2
      MARC~VRBDT
      MARC~VRBFK
      MARC~VRBMT
      MARC~VRBWK
      MARC~VRMOD
      MARC~WEBAZ
      MARC~WERKS
      MARC~WZEIT
    MARD~DISKZ
    MARD~LBSTF
    MARD~LGORT
    MARD~LMINB
    MARD~LSOBS
      MAKT~MAKTX
    INTO TABLE IT_TABLE
    FROM MARA INNER JOIN MARC ON MARAMATNR = MARCMATNR
    INNER JOIN MAKT ON MARAMATNR = MAKTMATNR
    WHERE MARA~MATNR IN SO_MATNR
           AND MARC~WERKS IN SO_WERKS
           AND MAKT~SPRAS IN SO_SPRAS.
      SELECT
      MARA~MATNR
      MARA~MATKL
      MARA~MEINS
      MARA~MTART
      MARD~DISKZ
      MARD~LBSTF
      MARD~LGORT
      MARD~LMINB
      MARD~LSOBS
      INTO TABLE IT_mard
       FROM MARA INNER JOIN MARD ON MARAMATNR = MARDMATNR
                WHERE  MARA~MATNR IN SO_MATNR
                      and mard~werks in SO_WERKS.
      SELECT MATNR BKLAS SALK3 PEINH STPRS VERPR VPRSV
      INTO TABLE IT_MBEW FROM MBEW FOR ALL ENTRIES IN IT_TABLE WHERE MATNR =
      IT_TABLE-MATNR AND BWKEY IN SO_BWKEY.
      LOOP AT IT_TABLE.
       MOVE-CORRESPONDING IT_TABLE TO IT_FINAL0.
        READ TABLE IT_MARD WITH KEY MATNR = IT_TABLE-MATNR.
        IF SY-SUBRC = 0 .
         MOVE-CORRESPONDING IT_MARD TO IT_FINAL0.
        ENDIF.
         APPEND IT_FINAL0.
         CLEAR IT_FINAL0.
      ENDLOOP.
    LOOP AT IT_FINAL0.
        READ TABLE IT_MBEW WITH KEY MATNR = IT_final0-MATNR.
        IF SY-SUBRC = 0 .
         MOVE-CORRESPONDING IT_MBEW TO IT_FINAL.
         IF IT_MBEW-VPRSV = 'S'.
          MOVE IT_MBEW-STPRS TO IT_FINAL-ZXPRS.
         ELSE.
          MOVE IT_MBEW-VERPR TO IT_FINAL-ZXPRS.
         ENDIF.
        ENDIF.
        MOVE-CORRESPONDING IT_FINAL0 TO IT_FINAL.
        APPEND IT_FINAL.
        CLEAR IT_FINAL.
    ENDLOOP.
    Default Layout
      LOOP AT IT_FINAL.
        Read table it_final with key matnr = SO_matnr.
        Move it_final-MATNR to it_display-MATNR.
        Move it_final-MAKTX to it_display-MAKTX.
        Move it_final-MEINS to it_display-MEINS.
        Move it_final-WERKS to it_display-WERKS.
        Move it_final-DISPO to it_display-DISPO.
        Move it_final-DISMM to it_display-DISMM.
        Move it_final-PLIFZ to it_display-PLIFZ.
        Move it_final-WEBAZ to it_display-WEBAZ.
        Move it_final-MINBE to it_display-MINBE.
        Move it_final-SHZET to it_display-SHZET.
        Move it_final-EISBE to it_display-EISBE.
        Move it_final-DISLS to it_display-DISLS.
        Move it_final-BSTMI to it_display-BSTMI.
        Move it_final-BSTMA to it_display-BSTMA.
        Move it_final-BSTFE to it_display-BSTFE.
        MOVE it_final-ZXPRS to it_display-ZXPRS.
        Move it_final-PEINH to it_display-PEINH.
        Move it_final-SALK3 to it_display-SALK3.
        Append it_display.
      endloop.
      data: v_data type c value ' '.
      if it_display is initial.
        v_data = ' '.
      else.
        v_data = 'X'.
      endif.
    END-OF-SELECTION.
    END-OF-SELECTION.
      if s_job = 'X'.
        perform execute_back.
      else.
        perform execute_fore.
      endif.
          FORM execute_fore                                             *
    Form execute_fore.
    *&      Form REUSE_ALV_FIELDCATALOG_MERGE
      CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
       EXPORTING
         I_PROGRAM_NAME               = W_REPID
         I_INTERNAL_TABNAME           = 'IT_FINAL'
      I_STRUCTURE_NAME             =
      I_CLIENT_NEVER_DISPLAY       = 'X'
         I_INCLNAME                   = W_REPID
      I_BYPASSING_BUFFER           =
      I_BUFFER_ACTIVE              =
        CHANGING
          CT_FIELDCAT                  = IT_FIELDCAT
       EXCEPTIONS
         INCONSISTENT_INTERFACE       = 1
         PROGRAM_ERROR                = 2
         OTHERS                       = 3
      IF SY-SUBRC <> 0.
        MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
                WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    *&      Form  DISPLAY_ALV_REPORT
          Display report using ALV grid
    *IF SO_LAY <> ' '.
    VARIANT-VARIANT = SO_LAY.
    *endif.
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
       EXPORTING
                       I_INTERFACE_CHECK                 = ' '
                       I_BYPASSING_BUFFER                =
                       I_BUFFER_ACTIVE                   = ' '
                         I_CALLBACK_PROGRAM                = W_REPID
                       I_CALLBACK_PF_STATUS_SET          = ' '
                       I_CALLBACK_USER_COMMAND           = ' '
                       I_CALLBACK_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                         = IT_LAYOUT
                         IT_FIELDCAT                       = IT_FIELDCAT[]
                       IT_EXCLUDING                      =
                       IT_SPECIAL_GROUPS                 =
                       IT_SORT                           =
                       IT_FILTER                         =
                       IS_SEL_HIDE                       =
                       I_DEFAULT                         = 'X'
                         I_SAVE                            = 'X'
                         IS_VARIANT                        = 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                          = IT_FINAL
       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.
          FORM execute_back                                             *
    FORM execute_back.
      CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
       EXPORTING
         I_PROGRAM_NAME               = W_REPID
         I_INTERNAL_TABNAME           = 'IT_FINAL'
      I_STRUCTURE_NAME             =
      I_CLIENT_NEVER_DISPLAY       = 'X'
         I_INCLNAME                   = W_REPID
      I_BYPASSING_BUFFER           =
      I_BUFFER_ACTIVE              =
        CHANGING
          CT_FIELDCAT                  = IT_FIELDCAT
       EXCEPTIONS
         INCONSISTENT_INTERFACE       = 1
         PROGRAM_ERROR                = 2
         OTHERS                       = 3
      IF SY-SUBRC <> 0.
        MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
                WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      I_INTERFACE_CHECK                 = ' '
      I_BYPASSING_BUFFER                = ' '
      I_BUFFER_ACTIVE                   = ' '
         I_CALLBACK_PROGRAM                = W_REPID
      I_CALLBACK_PF_STATUS_SET          = ' '
      I_CALLBACK_USER_COMMAND           = ' '
         I_CALLBACK_TOP_OF_PAGE            = '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                         =
         IT_FIELDCAT                       = it_fieldcat[]
      IT_EXCLUDING                      =
      IT_SPECIAL_GROUPS                 =
      IT_SORT                           =
      IT_FILTER                         =
      IS_SEL_HIDE                       =
      I_DEFAULT                         = 'X'
         I_SAVE                            = 'X'
         IS_VARIANT                        = variant
        IT_EVENTS                         = gt_events[]
      IT_EVENT_EXIT                     =
      IS_PRINT                          =
      IS_REPREP_ID                      =
      I_SCREEN_START_COLUMN             = 0
      I_SCREEN_START_LINE               = 0
      I_SCREEN_END_COLUMN               = 0
      I_SCREEN_END_LINE                 = 0
      I_HTML_HEIGHT_TOP                 = 0
      I_HTML_HEIGHT_END                 = 0
      IT_ALV_GRAPHICS                   =
      IT_HYPERLINK                      =
      IT_ADD_FIELDCAT                   =
      IT_EXCEPT_QINFO                   =
      IR_SALV_FULLSCREEN_ADAPTER        =
    IMPORTING
      E_EXIT_CAUSED_BY_CALLER           =
      ES_EXIT_CAUSED_BY_USER            =
      TABLES
        T_OUTTAB                          = it_final
    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.
    form top_of_page.
    CALL FUNCTION 'REUSE_ALV_GRID_LAYOUT_INFO_GET'
       IMPORTING
        ES_LAYOUT                 =
         ET_FIELDCAT               = IT_FIELDCAT3[]
        ET_SORT                   =
        ET_FILTER                 =
        ES_GRID_SCROLL            =
         ES_VARIANT                = VARIANT
        ET_MARKED_COLUMNS         =
        ET_FILTERED_ENTRIES       =
        ET_FIELDCAT_BACKEND       =
        ES_PRINT                  =
       EXCEPTIONS
         NO_INFOS                  = 1
         PROGRAM_ERROR             = 2
         OTHERS                    = 3
      IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
             WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    clear count.
    LOOP AT IT_FIELDCAT3 into is_fieldcat3 where no_out eq space.
    *move-corresponding is_fieldcat3 to is_fieldcat2.
    move: is_fieldcat3-fieldname to is_fieldcat2-fieldname,
          is_fieldcat3-ref_fieldname to is_fieldcat2-ref_field,
          is_fieldcat3-ref_tabname to is_fieldcat2-ref_table,
          is_fieldcat3-seltext_l to is_fieldcat2-coltext,
          is_fieldcat3-no_out to is_fieldcat2-no_out,
          is_fieldcat3-col_pos to is_fieldcat2-col_pos.
    *move:
         is_fieldcat3-row_pos to is_fieldcat2-row_pos,
         is_fieldcat3-col_pos to is_fieldcat2-col_pos,
         is_fieldcat3-fieldname to is_fieldcat2-fieldname,
         is_fieldcat3-tabname   to is_fieldcat2-tabname,
         is_fieldcat3-outputlen to is_fieldcat2-outputlen,
         is_fieldcat3-no_out    to is_fieldcat2-no_out,
         is_fieldcat3-seltext_l to is_fieldcat2-coltext,
         is_fieldcat3-ref_fieldname to is_fieldcat2-ref_field,
         is_fieldcat3-ref_tabname to is_fieldcat2-ref_table,
         is_fieldcat3-DDIC_OUTPUTLEN to is_fieldcat2-DD_OUTLEN,
         is_fieldcat3-datatype to is_fieldcat2-datatype,
         is_fieldcat3-inttype to is_fieldcat2-inttype,
         is_fieldcat3-INTLEN to is_fieldcat2-INTLEN.
    APPEND IS_FIELDCAT2 TO IT_FIELDCAT2.
    *count = count + 1.
    ENDLOOP.
    loop at it_fieldcat2 into is_fieldcat2.
      if is_fieldcat2-no_out = 'X'.
       delete it_fieldcat2 index sy-tabix.
      else.
       count = count + 1.
      endif.
    endloop.
    describe table it_fieldcat2 lines count.
      CALL METHOD cl_alv_table_create=>create_dynamic_table
        EXPORTING
          it_fieldcatalog = it_fieldcat2[]
        IMPORTING
          ep_table        = new_table.
      ASSIGN new_table->* TO <tab>.
      CREATE DATA new_line LIKE LINE OF <tab>.
      ASSIGN new_line->* TO <wa>.
    *-- Perform to build table for attachment data
      PERFORM build_xls_data_table.
    *-- Perform to populate  e-mail message
      PERFORM populate_email_message_body.
    *-- Perform to send mail
      PERFORM send_file_as_email_attachment.
    *-- Perform to Instruct mail send program for SAPCONNECT to send email.
      PERFORM initiate_mail_execute_program.
    ENDFORM.
    *&      Form  build_xls_data_table
    form build_xls_data_table.
      data: char_var(30) type C,
            num_var(10) type n.
      CONSTANTS: con_cret TYPE x VALUE '0D',  "NEW LINE
                  tabchar TYPE x VALUE '09'.   "tab
      loop at it_fieldcat2 into is_fieldcat2.
        concatenate it_attach is_fieldcat2-coltext
        into it_attach separated by tabchar.
      endloop.
      CONCATENATE con_cret it_attach  INTO it_attach.
      APPEND  it_attach.
      CLEAR it_attach.
       field-symbols: <t> type ANY.
      LOOP AT it_final.
      col_1 = 1.
       do count times.
       Assign component col_1 of structure <wa> to <f>.
       read table it_fieldcat2 into is_fieldcat2 with key col_pos = col_1.
       loop at it_fieldcat into is_fieldcat.
       if is_fieldcat-fieldname = is_fieldcat2-fieldname.
        assign component is_fieldcat-col_pos of structure it_final to <t>.
        exit.
       endif.
       endloop.
       <f> = <t>.
       clear <t>.
       col_1 = col_1 + 1.
       enddo.
       append <wa> to <tab>.
       endloop.
      loop at <tab> into <wa>.
      col_1 = 1.
      do count times.
       Assign component col_1 of structure <wa> to <f>.
       move <f> to char_var.
       concatenate it_attach char_var
       into it_attach separated by tabchar.
       col_1 = col_1 + 1.
      enddo.
       CONCATENATE con_cret it_attach INTO it_attach.
       APPEND it_attach.
       CLEAR it_attach.
      endloop.
    ENDFORM.
    FORM send_file_as_email_attachment.
      DATA:
            ld_mtitle LIKE sodocchgi1-obj_descr,
            ld_email LIKE  somlreci1-receiver,
            ld_format TYPE  so_obj_tp ,
            ld_attdescription TYPE  so_obj_nam ,
            ld_attfilename TYPE  so_obj_des ,
            ld_sender_address LIKE  soextreci1-receiver,
            ld_sender_address_type LIKE  soextreci1-adr_typ.
      ld_email = p_email.
      ld_mtitle = text-003.
      ld_format = 'XLS'.
      ld_attdescription  = ' '.
      ld_attfilename = 'DATA'.
      ld_sender_address = ' '.
      ld_sender_address_type = ' '.
    Fill the document data.
      w_doc_data-doc_size = 1.
    Populate the subject/generic message attributes
      w_doc_data-obj_langu = sy-langu.
      w_doc_data-obj_name  = 'SAPRPT'.
      w_doc_data-obj_descr = ld_mtitle .
      w_doc_data-sensitivty = 'F'.
    Fill the document data and get size of attachment
      CLEAR w_doc_data.
      READ TABLE it_attach INDEX w_cnt.
      w_doc_data-doc_size =
    ( w_cnt - 1 ) * 255 + STRLEN( it_attach ).
      w_doc_data-obj_langu  = sy-langu.
      w_doc_data-obj_name   = 'SAPRPT'.
      w_doc_data-obj_descr  = ld_mtitle.
      w_doc_data-sensitivty = 'F'.
      LOOP AT it_attach.
        MOVE it_attach(255) TO t_hex.
        APPEND t_hex.
        MOVE it_attach+255(255) TO t_hex.
        APPEND t_hex.
        MOVE it_attach+510(255) TO t_hex.
        APPEND t_hex.
        MOVE it_attach+765(235) TO t_hex.
        APPEND t_hex.
        MOVE it_attach+765(255) TO t_hex.
        APPEND t_hex.
        MOVE it_attach+1020(255) TO t_hex.
        APPEND t_hex.
        MOVE it_attach+1275(255) TO t_hex.
        APPEND t_hex.
        MOVE it_attach+1530(255) TO t_hex.
        APPEND t_hex.
        MOVE it_attach+1785(255) TO t_hex.
        APPEND t_hex.
        MOVE it_attach+2040(255) TO t_hex.
        APPEND t_hex.
        MOVE it_attach+2295(255) TO t_hex.
        APPEND t_hex.
        MOVE it_attach+2550(100) TO t_hex.
        APPEND t_hex.
      ENDLOOP.
    Describe the body of the message
      CLEAR t_packing_list.
      REFRESH t_packing_list.
      t_packing_list-transf_bin = space.
      t_packing_list-head_start = 1.
      t_packing_list-head_num = 0.
      t_packing_list-body_start = 1.
      DESCRIBE TABLE it_message LINES t_packing_list-body_num.
      t_packing_list-doc_type = 'RAW'.
      APPEND t_packing_list.
    Create attachment notification
      t_packing_list-transf_bin = 'X'.
      t_packing_list-head_start = 1.
      t_packing_list-head_num   = 1.
      t_packing_list-body_start = 1.
      DESCRIBE TABLE t_hex LINES t_packing_list-body_num.
      t_packing_list-doc_type   =  ld_format.
      t_packing_list-obj_descr  =  ld_attdescription.
      t_packing_list-obj_name   =  ld_attfilename.
      t_packing_list-doc_size   =  t_packing_list-body_num * 255.
      APPEND t_packing_list.
    Add the recipients email address
      CLEAR t_receivers.
      REFRESH t_receivers.
      t_receivers-receiver = ld_email.
      t_receivers-rec_type = 'U'.
      t_receivers-com_type = 'INT'.
      t_receivers-notif_del = 'X'.
      t_receivers-notif_ndel = 'X'.
      APPEND t_receivers.
      CALL FUNCTION 'SO_DOCUMENT_SEND_API1'
           EXPORTING
                document_data       = w_doc_data
                put_in_outbox       = 'X'
                sender_address      = ld_sender_address
                sender_address_type = ld_sender_address_type
          IMPORTING
               sent_to_all         = w_sent_all
           TABLES
                packing_list        = t_packing_list
                contents_txt        = it_message
                contents_hex        = t_hex
                receivers           = t_receivers
           EXCEPTIONS
                too_many_receivers         = 1
                document_not_sent          = 2
                document_type_not_exist    = 3
                operation_no_authorization = 4
                parameter_error            = 5
                x_error                    = 6
                enqueue_error              = 7
                OTHERS                     = 8.
      IF sy-subrc <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    ld_error = sy-subrc.
    LOOP AT t_receivers.
       ld_receiver = t_receivers-retrn_code.
    ENDLOOP.
    ENDFORM. "SEND_FILE_AS_EMAIL_ATTACHMENT
    *&      Form  INITIATE_MAIL_EXECUTE_PROGRAM
          Instructs mail send program for SAPCONNECT to send email.
    FORM initiate_mail_execute_program.
      WAIT UP TO 2 SECONDS.
      SUBMIT rsconn01 WITH mode = 'INT'
                    WITH output = 'X'
                    AND RETURN.
    ENDFORM.                    " INITIATE_MAIL_EXECUTE_PROGRAM
    *&      Form  POPULATE_EMAIL_MESSAGE_BODY
           Populate message body text
    FORM populate_email_message_body.
      REFRESH it_message.
      it_message = text-004.
      APPEND  it_message.
      CONCATENATE SY-DATUM 'to' SY-DATUM INTO it_message SEPARATED BY
      space.
      APPEND  it_message.
    ENDFORM.                    " POPULATE_EMAIL_MESSAGE_BODY
    *&      Form  get_alv_layout_values
    FORM get_alv_layout_values.
      variant-report = w_repid.
      CALL FUNCTION 'REUSE_ALV_VARIANT_F4'
           EXPORTING
                is_variant    = variant
                i_save        = 'A'
           IMPORTING
                es_variant    = variant
           EXCEPTIONS
                not_found     = 1
                program_error = 2
                OTHERS        = 3.
      CHECK sy-subrc = 0.
      so_lay = variant-variant.
    ENDFORM.                    " get_alv_layout_values

    Hi Arpit,
    Take a look at the documentation of FM 'SO_DOCUMENT_SEND_API1' for parameter PACKING_LIST. I think you should set t_packing_list-head_num to a different value than 0 for the second attachment.
    Regards,
    John.

  • Updation not happening once after the material has been extened

    Dear Guru's,
                       I want to extend materials from one plant to another plant. I am using BAPI_MATERIAL_SAVEDATA.
    every thing is doing good but the material was updated in the destination plant. I have used BAPI_TRANSACTION_COMMIT' also. ans not all getting any any error message. In the return table i am getting success message. please help me. I am sending my code also. please gothrough and give suggestion . it very urgent.
    points will be given for solving the problem.
    Thanks in advance.
    REPORT  ZMMR_MATERIAL_EXTENSION.
    TABLES: T001L, "Storage Locations
            MARA,  "General Material Data
            MAKT,  "Material Descriptions
            MBEW,  "Material Valuation
            MARC,  "Plant Data for Material
            MARD.  " Storage location
    DATA : INDEX LIKE SY-TABIX.
    DATA: BAPI_HEAD   LIKE BAPIMATHEAD,
          BAPI_MAKT   LIKE BAPI_MAKT,    "Material Description
          BAPI_MARA1  LIKE BAPI_MARA,    "Client Data
          BAPI_MARAX  LIKE BAPI_MARAX,
          BAPI_MARC1  LIKE BAPI_MARC,    "Plant View
          BAPI_MARCX  LIKE BAPI_MARCX,
          BAPI_MBEW1  LIKE BAPI_MBEW,    "Accounting View
          BAPI_MBEWX  LIKE BAPI_MBEWX,
          BAPI_MARD1  LIKE BAPI_MARD,   " STORAGE LOCATION
          BAPI_MARDX  LIKE BAPI_MARDX,
          BAPI_RETURN LIKE BAPIRET2.
    DATA: BEGIN OF INT_MAKT OCCURS 100.
            INCLUDE STRUCTURE BAPI_MAKT.
    DATA: END OF INT_MAKT.
    for material updation*******
    *data:mara_data type bapi_mara,
    *mara_datax type bapi_marax,
    *wa_bapi_te_mara type bapi_te_mara,
    *wa_bapi_te_marax type bapi_te_marax,
    *wa_valuepart(960),
    *wa_valuepartx(960),
    *t_extin type table of bapiparex,
    *t_extinx type table of bapiparexx,
    *d_extin type bapiparex,
    *d_extinx type bapiparexx,
    *ret type bapiret2.
    DATA: BEGIN OF INT_MAT OCCURS 100,
             WERKS(4),     "Plant
             MTART(4),     "Material type
             MATNR(18),    "Material number
             MATKL(9) ,    "Material group
             MBRSH(1),     "Industry sector
             MEINS(3),     "Base unit of measure
             GEWEI(3),     "Weight Unit
             SPART(2),     "Division
             TRAGR(4),      "Transportation group
             EKWSL(4),      "Purchasing Value Key
    marc
             EKGRP(3),     "Purchasing group
             MTVFP(2),     "Checking Group for Availability Check
             LADGR(4),     "Loading group
             PRCTR(10),    "Profit Center
             WEBAZ    like BAPI_MARC-GR_PR_TIME,     "Goods receipt processing time in days.
             PERKZ(1),      "Period indicator
             AWSLS(6),      "Variance Key
             DISGR(4),      "MRP Group
             DISMM(2),      "MRP Type
             DISPO(3),      "MRP controller
             DISLS(2),      "Lot size (materials planning)
             BESKZ(1),      "Procurement Type
             DZEIT like BAPI_MARC-INHSEPRODT,     "In-house production time.
             PLIFZ like BAPI_MARC-PLND_DELRY,     "Planned delivery time in days.
    makt
             SPRAS(2),     "Language key
             MAKTX(40),    "Material description
    ***mbew
              BKLAS(4),                            "Valuation Class.
              VPRSV(1),                           "Price control indicator
              VERPR like BAPI_MBEW-MOVING_PR,      "Moving Average Price
              STPRS like BAPI_MBEW-STD_PRICE,      "Standard price
              PEINH like BAPI_MBEW-PRICE_UNIT,     "Price unit
    ****mard
              LGORT(4),                            "Storage location
           END OF INT_MAT.
    SELECT-OPTIONS:
                PLANT    FOR  MARC-WERKS OBLIGATORY MEMORY ID PLT,
                MATERIAL FOR  MARA-MATNR MEMORY ID MAT,
                MATLTYPE FOR  MARA-MTART MEMORY ID MTY,
                DIVISION FOR  MARA-SPART MEMORY ID DIV.
    PARAMETERS:  F_FILE LIKE RLGRAP-FILENAME
                 DEFAULT 'C:\DATA\ZMATERIAL.XLS' MEMORY ID F_FILE,
                 GETDATA AS CHECKBOX, "Tick to download materials data to local harddisk
                 UPDDATA AS CHECKBOX. "Tick to update date to Materials Master
    IF GETDATA = 'X'.
      PERFORM DOWNLOAD_DATA.
      PERFORM DOWNLOAD_FILE.
    ENDIF.
    IF UPDDATA = 'X'.
      PERFORM UPLOAD_FILE.
      PERFORM UPDATE_MM.
    ENDIF.
    *&      Form  DOWNLOAD_DATA
          text
    FORM DOWNLOAD_DATA.
    *IF MATLTYPE-LOW NE 'SFGD' OR MATLTYPE-LOW NE 'SPRS'.
      SELECT * FROM MARC  WHERE LVORM EQ ' '
                            AND WERKS IN PLANT
                            AND MATNR IN MATERIAL.
        CLEAR MARA.
        SELECT SINGLE * FROM MARA WHERE MATNR =  MARC-MATNR .
       CHECK MATLTYPE.
        IF MARA-MTART  = 'SFGD' or MARA-MTART  = '' or MARA-MTART = 'SPRS'.
          clear : MARA,INT_MAT.
          continue.
        ENDIF.
        CHECK DIVISION.
        CLEAR MBEW.
        SELECT SINGLE * FROM MBEW WHERE MATNR =  MARC-MATNR
                                    AND BWKEY =  MARC-WERKS.
        CLEAR MAKT.
        SELECT SINGLE * FROM MAKT WHERE SPRAS =  'EN'
                                    AND MATNR =  MARC-MATNR.
        CLEAR MARD.
        SELECT SINGLE * FROM MARD WHERE MATNR =  MARC-MATNR
                                    AND WERKS =  MARC-WERKS.
        WRITE:/ MARC-WERKS,    "Plant
                MARA-MTART,    "Material type
                MARA-MATNR,    "Material number
                MARA-MATKL,    "Material group
                MARA-MBRSH,    "Industry sector
                MARA-MEINS,    "Base unit of measure
                MARA-GEWEI,    "Weight Unit
                MARA-SPART,    "Division
                MARA-TRAGR,    "Trasaction Group
                MARA-EKWSL,    "Purchase Value key
               MARA-IPRKZ,    "Period indi.for. SLED.
                MARC-EKGRP,    "Purchasing group
                MARC-MTVFP,    "Availability check
                MARC-LADGR,    "Loading grp.
                MARC-PRCTR,    "Profit Center
                MARC-WEBAZ,    "GR processing time
                MARC-PERKZ,    "Period Indicator
                MARC-AWSLS,    "Variance key
                MARC-DISGR,    "MRP GROUP
                MARC-DISMM,    "MRP TYPE
                MARC-DISPO,    "MRP CONTOLLER
                MARC-DISLS,    "LOT SIZE
                MARC-BESKZ,    "PROCUREMENT TYPE
                MARC-DZEIT,    "IN-HOUSE PRD TIME
                MARC-PLIFZ,    "PLANT DELIVERY TIME
                MBEW-BKLAS,    "VALUATION CLASS
                MBEW-VPRSV,    "Price control indicator
                MBEW-VERPR,    "MOVING PRICE
                MBEW-STPRS,    "Standard price
                MBEW-PEINH,    "Price unit
                MAKT-SPRAS,    "Language key
                MAKT-MAKTX,    "Material description
                MARD-LGORT.    "Storage location.
        INT_MAT-WERKS = MARC-WERKS.    "Plant
        INT_MAT-MTART = MARA-MTART.    "Material type
        INT_MAT-MATNR = MARA-MATNR.    "Material number
        INT_MAT-MATKL = MARA-MATKL.    "Material group
        INT_MAT-MBRSH = MARA-MBRSH.    "Industry sector
        INT_MAT-MEINS = MARA-MEINS.    "Base unit of measure
        INT_MAT-GEWEI = MARA-GEWEI.    "Weight Unit
        INT_MAT-SPART = MARA-SPART.    "Division
        INT_MAT-TRAGR = MARA-TRAGR.    "Trasaction Group
        INT_MAT-EKWSL = MARA-EKWSL.    "Purchase Value key
       INT_MAT-IPRKZ = MARA-IPRKZ.    "Period indi.for. SLED.
        INT_MAT-EKGRP = MARC-EKGRP.    "Purchasing group
        INT_MAT-MTVFP = MARC-MTVFP.    "Availability check
        INT_MAT-LADGR = MARC-LADGR.    "Loading grp.
        INT_MAT-PRCTR = MARC-PRCTR.    "Profit Center
        INT_MAT-WEBAZ = MARC-WEBAZ.    "GR processing time
        INT_MAT-PERKZ = MARC-PERKZ.    "Period Indicator
        INT_MAT-AWSLS = MARC-AWSLS.    "Variance key
        INT_MAT-DISGR = MARC-DISGR.    "MRP GROUP
        INT_MAT-DISMM = MARC-DISMM.    "MRP TYPE
        INT_MAT-DISPO = MARC-DISPO.    "MRP CONTOLLER
        INT_MAT-DISLS = MARC-DISLS.    "LOT SIZE
        INT_MAT-BESKZ = MARC-BESKZ.    "PROCUREMENT TYPE
        INT_MAT-DZEIT = MARC-DZEIT.    "IN-HOUSE PRD TIME
        INT_MAT-PLIFZ = MARC-PLIFZ.    "PLANT DELIVERY TIME
        INT_MAT-BKLAS = MBEW-BKLAS.    "Valution class
        INT_MAT-VPRSV = MBEW-VPRSV.    "Price control indicator
        INT_MAT-VERPR = MBEW-VERPR.    "Moving price
        INT_MAT-STPRS = MBEW-STPRS.    "Standard price
        INT_MAT-PEINH = MBEW-PEINH.    "Price unit
        INT_MAT-SPRAS = MAKT-SPRAS.    "Language key
        INT_MAT-MAKTX = MAKT-MAKTX.    "Material description
        INT_MAT-LGORT = MARD-LGORT.    " Storage location
        APPEND INT_MAT.
        CLEAR  INT_MAT.
      ENDSELECT.
    *ENDIF.
    ENDFORM.                    "DOWNLOAD_DATA
    *&      Form  DOWNLOAD_FILE
          text
    FORM DOWNLOAD_FILE.
      call function 'WS_DOWNLOAD'
        EXPORTING
          FILENAME                      = F_FILE
          FILETYPE                      = 'DAT'
      FILETYPE                      = 'WK1'
        tables
          data_tab                      = INT_MAT
        EXCEPTIONS
          FILE_OPEN_ERROR               = 1
          FILE_WRITE_ERROR              = 2
          INVALID_FILESIZE              = 3
          INVALID_TYPE                  = 4
          NO_BATCH                      = 5
          UNKNOWN_ERROR                 = 6
          INVALID_TABLE_WIDTH           = 7
          GUI_REFUSE_FILETRANSFER       = 8
          CUSTOMER_ERROR                = 9
          OTHERS                        = 10.
      IF SY-SUBRC = 0.
        FORMAT COLOR COL_GROUP.
        WRITE:/ 'Data Download Successfully to your local harddisk'.
        SKIP.
      ENDIF.
    ENDFORM.                    "DOWNLOAD_FILE
    *&      Form  UPLOAD_FILE
          text
    FORM UPLOAD_FILE.
      call function 'WS_UPLOAD'
        EXPORTING
          FILENAME                      = F_FILE
          FILETYPE                      = 'DAT'
      FILETYPE                      = 'WK1'
        tables
          data_tab                      = INT_MAT
        EXCEPTIONS
          FILE_OPEN_ERROR               = 1
          FILE_WRITE_ERROR              = 2
          INVALID_FILESIZE              = 3
          INVALID_TYPE                  = 4
          NO_BATCH                      = 5
          UNKNOWN_ERROR                 = 6
          INVALID_TABLE_WIDTH           = 7
          GUI_REFUSE_FILETRANSFER       = 8
          CUSTOMER_ERROR                = 9
          OTHERS                        = 10.
      IF SY-SUBRC = 0.
        FORMAT COLOR COL_GROUP.
        WRITE:/ 'Data Upload Successfully from your local harddisk'.
        SKIP.
      ENDIF.
    ENDFORM.                    "UPLOAD_FILE
    *&      Form  UPDATE_MM
          text
    FORM UPDATE_MM.
      LOOP AT INT_MAT.
    Header
        BAPI_HEAD-MATERIAL        = INT_MAT-MATNR.
        BAPI_HEAD-IND_SECTOR      = INT_MAT-MBRSH.
        BAPI_HEAD-MATL_TYPE       = INT_MAT-MTART.
        BAPI_HEAD-BASIC_VIEW      = 'X'.
        BAPI_HEAD-PURCHASE_VIEW   = 'X'.
        BAPI_HEAD-ACCOUNT_VIEW    = 'X'.
        BAPI_HEAD-MRP_VIEW        = 'X'.
        BAPI_HEAD-STORAGE_VIEW    = 'X'.
       BAPI_HEAD-QUALITY_VIEW    = 'X'.
       BAPI_HEAD-COST_VIEW       = 'X'.
       wa_bapi_te_mara-material = INT_MAT-MATNR.
       wa_bapi_te_marax-material = INT_MAT-MATNR.
    Material Description
        REFRESH INT_MAKT.
        INT_MAKT-LANGU           = INT_MAT-SPRAS.
        INT_MAKT-MATL_DESC       = INT_MAT-MAKTX.
        APPEND INT_MAKT.
       sorage location.
       BAPI_MARD1-PLANT         = INT_MAT-WERKS.
       BAPI_MARD1-STGE_LOC      = INT_MAT-LGORT.
       BAPI_MARDX-PLANT         = INT_MAT-WERKS.
       BAPI_MARDX-STGE_LOC      = INT_MAT-LGORT.
    Client Data - Basic
        BAPI_MARA1-MATL_GROUP     = INT_MAT-MATKL.
        BAPI_MARA1-BASE_UOM       = INT_MAT-MEINS.
        BAPI_MARA1-UNIT_OF_WT     = INT_MAT-GEWEI.
        BAPI_MARA1-DIVISION       = INT_MAT-SPART.
        BAPI_MARA1-TRANS_GRP      = INT_MAT-TRAGR.
        BAPI_MARA1-PUR_VALKEY     = INT_MAT-EKWSL.
        BAPI_MARAX-MATL_GROUP = 'X'.
        BAPI_MARAX-BASE_UOM   = 'X'.
        BAPI_MARAX-UNIT_OF_WT = 'X'.
        BAPI_MARAX-DIVISION   = 'X'.
        BAPI_MARAX-TRANS_GRP  = 'X'.
        BAPI_MARAX-PUR_VALKEY = 'X'.
    Plant - Purchasing
        BAPI_MARC1-PLANT      = INT_MAT-WERKS .     "PLANT-LOW.
        BAPI_MARC1-PUR_GROUP  = INT_MAT-EKGRP.
        BAPI_MARC1-AVAILCHECK = INT_MAT-MTVFP.
        BAPI_MARC1-LOADINGGRP = INT_MAT-LADGR.
        BAPI_MARC1-PROFIT_CTR = INT_MAT-PRCTR.   " profit center and plant are same
        BAPI_MARC1-GR_PR_TIME = INT_MAT-WEBAZ.
        BAPI_MARC1-PERIOD_IND = INT_MAT-PERKZ.
        BAPI_MARC1-VARIANCE_KEY = INT_MAT-AWSLS.
        BAPI_MARC1-MRP_GROUP =  INT_MAT-DISGR.
        BAPI_MARC1-MRP_TYPE  =  INT_MAT-DISMM.
        BAPI_MARC1-MRP_CTRLER = INT_MAT-DISPO.
        BAPI_MARC1-LOTSIZEKEY = INT_MAT-DISLS.
        BAPI_MARC1-PROC_TYPE =  INT_MAT-BESKZ.
        BAPI_MARC1-INHSEPRODT = INT_MAT-DZEIT.
        BAPI_MARC1-PLND_DELRY = INT_MAT-PLIFZ.
        BAPI_MARCX-PLANT      = INT_MAT-WERKS .         " PLANT-LOW.
        BAPI_MARCX-PUR_GROUP  = 'X'.
        BAPI_MARCX-AVAILCHECK = 'X'.
        BAPI_MARCX-LOADINGGRP = 'X'.
        BAPI_MARCX-PROFIT_CTR = 'X'.
        BAPI_MARCX-GR_PR_TIME = 'X'.
        BAPI_MARCX-PERIOD_IND = 'X'.
        BAPI_MARCX-VARIANCE_KEY = 'X'.
        BAPI_MARCX-MRP_GROUP   = 'X'.
        BAPI_MARCX-MRP_TYPE    = 'X'.
        BAPI_MARCX-MRP_CTRLER  = 'X'.
        BAPI_MARCX-LOTSIZEKEY  = 'X'.
        BAPI_MARCX-PROC_TYPE   = 'X'.
        BAPI_MARCX-INHSEPRODT  = 'X'.
        BAPI_MARCX-PLND_DELRY  = 'X'.
    Accounting
        BAPI_MBEW1-VAL_AREA       = INT_MAT-WERKS.
        BAPI_MBEW1-VAL_CLASS      = INT_MAT-BKLAS.
        BAPI_MBEW1-PRICE_CTRL     = INT_MAT-VPRSV.
        BAPI_MBEW1-MOVING_PR      = INT_MAT-VERPR.
        BAPI_MBEW1-STD_PRICE      = INT_MAT-STPRS.
        BAPI_MBEW1-PRICE_UNIT     = INT_MAT-PEINH.
        BAPI_MBEWX-VAL_AREA   = INT_MAT-WERKS.
        BAPI_MBEWX-VAL_CLASS  = 'X'.
        BAPI_MBEWX-PRICE_CTRL = 'X'.
        BAPI_MBEWX-MOVING_PR  = 'X'.
        BAPI_MBEWX-STD_PRICE  = 'X'.
        BAPI_MBEWX-PRICE_UNIT = 'X'.
    ************for testing purpose
    *wa_valuepart = wa_bapi_te_mara.
    *d_extin-structure = 'BAPI_TE_MARA'.
    *d_extin-valuepart1 = wa_valuepart(240).
    *d_extin-valuepart2 = wa_valuepart+240(240).
    *d_extin-valuepart3 = wa_valuepart+480(240).
    *d_extin-valuepart4 = wa_valuepart+720(240).
    *wa_valuepartx = wa_bapi_te_marax.
    *d_extinx-structure = 'BAPI_TE_MARAX'.
    *d_extinx-valuepart1 = wa_valuepartx(240).
    *d_extinx-valuepart2 = wa_valuepartx+240(240).
    *d_extinx-valuepart3 = wa_valuepartx+480(240).
    *d_extinx-valuepart4 = wa_valuepartx+720(240).
    *append d_extin to t_extin.
    *append d_extinx to t_extinx.
    remove up to here only.
    *WRITE:/ BAPI_HEAD, BAPI_MARC1.
        call function 'BAPI_MATERIAL_SAVEDATA'
          EXPORTING
            HEADDATA            = BAPI_HEAD
            CLIENTDATA          = BAPI_MARA1
            CLIENTDATAX         = BAPI_MARAX
            PLANTDATA           = BAPI_MARC1
            PLANTDATAX          = BAPI_MARCX
            STORAGELOCATIONDATA = BAPI_MARD1
            STORAGELOCATIONDATAX = BAPI_MARDX
            VALUATIONDATA       = BAPI_MBEW1
            VALUATIONDATAX      = BAPI_MBEWX
          IMPORTING
            RETURN              = BAPI_RETURN
          TABLES
            MATERIALDESCRIPTION = INT_MAKT.
                  extensionin = t_extin
                 extensioninx = t_extinx.
        IF BAPI_RETURN-TYPE = 'S'  .
        CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
          EXPORTING
            wait = ''.
       ENDIF.
        IF BAPI_RETURN-TYPE = 'E'.
          WRITE:/ 'Error Message ', BAPI_RETURN-NUMBER,
                                    BAPI_RETURN-MESSAGE.
         ENDIF.
      ENDLOOP.
    ENDFORM.                    "UPDATE_MM
    please give me reply
    Prashanth

    We have encountered the same problem at our company, and the following thread help us to resolve our problem:
    Thanks to KevinCur.
    Error while saving a .PDF File to a mapped drive
    "It has to do with Protected Mode being turned on.  I don't know if it was off by default & now it is on with the update but turning it off changes Adobe Reader's behavior back to what the users expect - a prompt warning you if you want to overwrite the existing file & then selecting Yes to overwrite.
    To disable Protected Mode:
    Start Adobe Reader
    Edit - Preferences - Security (Enhanced)
    Uncheck Enable Protected Mode at Startup
    Close Preferences & Close Reader"
    We unchecked the "Enable Protected Mode at startup" box --> Yes --> OK.  Our users are happy now.  ^_^

  • Error while creation of Accounting view in background

    Hi Experts,
    I am creating the Materials using the Function MATERIAL_MAINTAIN_DARK in my program.
    I am passing the pstat as appropriate for the views to be created.
    Now, my problem comes When i am creating a Plant view and dont require an Accounting view.
    Even if I dont pass the PSTAT for the Accounting view, it gives me an exit message saying 'MBEW-BKLAS is defined as a required field.'.
    Please help me solve the issue.
    Any helpful answer will surely be rewarded.
    Thanks in Advance.
    Regards,
    Himanshu

    Hi,
      Please follow the below steps.
    Creating the Classification View using the Function module 'BAPI_OBJCL_CREATE'.
    Check the Class Type and Class Number which you are passing.
    Generally it will be Class type - 001 (Material Class) and Number will be ENGINEERING.
    It depends.
    But, what you can do is, Check material which has classification data filled.
    And just use the same class Type and Class Number Details.
    Try this way.It should work.
    To know the Available Class Types refer to table TCLA.
    Please let me know, if you want further help.
    Thanks & Regards,
    Vamsi.

  • How to have backend account determination working SRM

    Hello everybody
    Just came across thread
    EBP G/L Account Assignment doesn't  follow R/3 Account Determination
    while I was searching for a solution to this same problem I'm having here as well. I already thought about using BAdI BBP_DETERMINE_ACCT. But I'm stuck to find the right backend function module (R/3 4.7) in order to ask for the G/L account coming from the backend account determination.
    Did somebody already solve this and if yes is willing to share knowledge?
    Any useful help will of course be rewarded with points!
    Best regards,
    Renaud

    <b>The function module in R/3 backend systems looks like that:</b>
    FUNCTION <your function module name here>.
    *"*"Lokale Schnittstelle:
    *"  IMPORTING
    *"     VALUE(I_MATNR) TYPE  MARA-MATNR
    *"     VALUE(I_BUKRS) LIKE  T001-BUKRS
    *"  EXPORTING
    *"     VALUE(E_KONTO) LIKE  T030-KONTH
    *"     VALUE(E_BSCHH) LIKE  T030B-BSCHH
    *"  EXCEPTIONS
    *"      NOT_FOUND
      DATA: w_subrc LIKE sy-subrc.
      DATA: i_ktopl LIKE t001-ktopl.
      DATA: i_bklas LIKE mbew-bklas.
      CLEAR: w_subrc, i_ktopl, i_bklas, e_bschh, e_konto.
    * Determine chart of accounts
      SELECT SINGLE ktopl FROM t001 INTO i_ktopl
        WHERE bukrs = i_bukrs.
      w_subrc = w_subrc + sy-subrc.
    * Determine bklas from material
      SELECT SINGLE bklas FROM mbew INTO i_bklas
        WHERE matnr = i_matnr
        AND   bwkey = '1000'
        AND   bwtar = space.
      w_subrc = w_subrc + sy-subrc.
    * Determine G/L account
      CALL FUNCTION 'MR_ACCOUNT_ASSIGNMENT'
        EXPORTING
          bewertungsklasse       = i_bklas
          bewertung_modif        = '1000'
          kontenplan             = i_ktopl
          konto_modif            = 'VBR'
          soll_haben_kennzeichen = 'S'
          vorgangsschluessel     = 'GBB'
        IMPORTING
          buchungsschluessel     = e_bschh
          konto                  = e_konto
        EXCEPTIONS
          NOT_FOUND_T030         = 1
          NOT_FOUND_T030B        = 2
          NOT_FOUND_T030R        = 3
          NOT_FOUND_T030S        = 4
      w_subrc = w_subrc + sy-subrc.
      IF w_subrc <> 0.
        MESSAGE i100(zpcg_mm) WITH i_matnr RAISING not_found.
      ENDIF.
    ENDFUNCTION.
    <b>The BAdI code in SRM looks like that:</b>
    method IF_EX_BBP_DETERMINE_ACCT~DETERMINE_ACCOUNT.
      data: e_konto(10) TYPE C,
            e_bschh(2)  TYPE C,
            wa_acct_data TYPE BBP_OCI_ENRACCT.
      IF NOT item_data-ordered_prod IS INITIAL.
        CALL FUNCTION '<your function module name here>'
          DESTINATION item_data-product_src_sys
          EXPORTING
            i_matnr = item_data-ordered_prod
            i_bukrs = item_data-co_code
          IMPORTING
            e_konto = e_konto
            e_bschh = e_bschh
          EXCEPTIONS
            NOT_FOUND = 1
        IF sy-subrc = 0.
          LOOP AT acct_data INTO wa_acct_data
            WHERE line = item_data-line.
            wa_acct_data-g_l_acct = e_konto.
            MODIFY acct_data FROM wa_acct_data.
          ENDLOOP.
        ENDIF.
      ENDIF.
    endmethod.
    <b></b>

  • Select query is not working in BDC Program

    Hi,
    I am working in BDC for update valuation class for T-code mm01.Actually In this BDC i am using two recoding based on material type.
    i am using two internal table : I_DATA and ITAB
    Use I_DATA to hold excle data in which material No, plant , valuation type , valuation No. and ITAB for material No, material type Only.
    So, i am fetching material Type ( MARA-MTART ) through select query. But Select query is not working. and also i did check MARA table according that  Material Number then  material no. exit in Mara Table.
    Note : at run time  I_DATA have 1 row but ITAB have 0 row ....
    DATA: BEGIN OF I_DATA OCCURS 0,
    MATNR TYPE MARA-MATNR,
    WERKS TYPE MARC-WERKS,
    BWTAR TYPE RMMG1-BWTAR,
    VERPR TYPE BMMH1-VERPR,
    BKLAS TYPE MBEW-BKLAS,
    STATUS TYPE C,
    END OF I_DATA.
    DATA : BEGIN OF ITAB OCCURS 0,
    MATNR LIKE MARA-MATNR,
    MTART LIKE MARA-MTART,
    END OF ITAB.
    Loop at I_DATA.
    select matnr mtart from mara into table itab where matnr = I_DATA-matnr.
    endloop.
    Guide me..........

    If you use your
    Loop at I_DATA.
      select matnr mtart from mara into table itab
        where matnr = I_DATA-matnr.
    endloop.
    At end of loop, itab will only contain the result of the last select, so use a
    Loop at I_DATA.
      select matnr mtart from mara APPENDING table itab
        where matnr = I_DATA-matnr.
    endloop.
    better
    if I_DATA[] is not initial.
      select matnr mtart from mara into table itab
        FOR ALL ENTRIES IN i_data where matnr = i_data-matnr.
    endif.
    Some Remarks
    - If actually required (where does I_DATA come from, is it an external format, you need the internal value to use in SELECT statement), check via SE11 the correct [conversion exit|http://help.sap.com/saphelp_nw04/helpdata/en/35/26b217afab52b9e10000009b38f974/content.htm] associated with domain MATNR (Is it truly ALPHA, and not something like MATN1, so [CONVERSION_EXIT_MATN1_INPUT|http://www.sdn.sap.com/irj/scn/advancedsearch?query=conversion_exit_matn1_input])
    - You could try to use BAPI like [BAPI_MATERIAL_SAVEDATA|http://www.sdn.sap.com/irj/scn/advancedsearch?query=bapi_material_savedata] and not BDC
    Regards,
    Raymond

  • Alv report please help

    Hi,
         Please help me in this.
    1) Create the selection screen with the following fields on it.
         S_REQUESTOR for ZSWAPHISTORY- REQUESTOR
         S_APPROVER for ZSWAPHISTORY- APPROVER providing range
         S_to_customer for ZSWAPHISTORY- to_customer providing range
         S_from_customer for ZSWAPHISTORY- from_customer providing range
         S_MRPC     for MARC-DISPO providing range
         S_MATNR     for MARA-MATNR providing range
         S_APPR_DATE for ZSWAPHISTORY- APPR_DATE Default to yesterdays date
         S_QUAN     for ZSWAPHISTORY-quan
    2) Validate the fields entered in the selection screen.
    3) Check the user authorizations for this report.
    4) Select the entries from the table ZSWAPHISTORY into an internal table based on the input from the selection screen and the value of the field ZSWAPHISTORY -STATUS is APPROVED.
    5) Then select the MRP Controller ID (DISPO) from the Table MARC for all entries in the internal table where MARC-MATNR equals to the internal table -material number.
    6) Move the field value of MRP Controller ID (DISPO) into the final internal table for the corresponding entries.
    7) Declare the Filed Catalogue with the fields that are to be displayed in the ALV
    Please help to create this , iam new to this area.
    Thanks
    Ali

    Hi
    See the sample code of ALV and do accordingly
    Since you are using a Z table it is not clear to create
    report ZRGRIRNA no standard page heading
           line-count 65
           line-size 255
           message-id mm.
                       GR IR Detail Report                               *
    Description          : The output has to be displayed
                           in the ALV Grid format with the Selection     *
                           screen appearing on the output. In The Output *
                           Subtotals for Vendor, Plant, Period, Material,*
                           Valuation Class, Purchase Order,Cost Center,  *
                           Cost Element and Receipt Date are displayed   *
                           after sorting the data by same fields.        *
    Declaration for Tables
    tables: t001,      " Company Codes
            t001w,     " Plants/Branches
            lfa1,      " Vendor Master
            ska1,      " GL Account Master
            mara,      " Material Master
            mbew,      " Material Valuation
            ekko,      " PO Header Data
            cska,      " Cost Elements
            csks,      " Cost Centers
            bsis,      " GL Accounts: Open Items Data
            bkpf.      " Accounting Doc: Header Data
    Type-pools
    Type pools for ALV display
    type-pools : slis.
    Global variables
    data: g_repid       like sy-repid,
          g_exit        type c,
          g_events      type slis_t_event,
          g_list_top_of_page type slis_t_listheader,
          g_exit_caused_by_caller,
          g_exit_caused_by_user type slis_exit_by_user,
          g_top_of_page  type slis_formname value 'TOP_OF_PAGE',
          g_variant like disvariant,
          g_save.
    Declaration for Constants
    constants : c_x  type c  value 'X',         " Flag
                c_c  type c  value 'C',         " Flag
                c_l  type c  value 'L',         " Flag
                c_a  type c  value 'A',         " Line Type
                c_h  type c  value 'H',         " Dr/Cr
                c_s  type c  value 'S',         " Line Type
                c_mkpf(4) type c value 'MKPF'.  " Table
    Declaration of Internal Tables
    Internal Table for BSIS Table data
    data: begin of i_bsis occurs 0,
            bukrs like bsis-bukrs,          " Company Code
            hkont like bsis-hkont,          " GR IR Account
            gjahr like bsis-gjahr,          " Fiscal Year
            belnr like bsis-belnr,          " Acc Document
            buzei like bsis-buzei,          " Item No
            budat like bsis-budat,          " Receipt Date(Posting)
            monat like bsis-monat,          " Period
          end of i_bsis.
    Internal Table for BSEG Table data
    data: begin of i_bseg occurs 0,
            bukrs like bsis-bukrs,          " Company Code
            belnr like bsis-belnr,          " Acc Document
            buzei like bsis-buzei,          " Item No
            gjahr like bsis-gjahr,          " Fiscal Year
            shkzg like bseg-shkzg,          " Dr/Cr Indicator
            lifnr like bseg-lifnr,          " Vendor Code
            matnr like bseg-matnr,          " Material No
            ebeln like bseg-ebeln,          " Purchase Order
            ebelp like bseg-ebelp,          " PO Item
            werks like bseg-werks,          " Plant
            menge like bseg-menge,          " PO Quantity
            meins like bseg-meins,          " UOM
            dmbtr like bseg-dmbtr,          " Amount in Local Currency
            wrbtr like bseg-wrbtr,          " Amount in Trans.Currency
          end of i_bseg.
    Internal Table for BKPF Table data
    data: begin of i_bkpf occurs 0,
            bukrs like bkpf-bukrs,          " Company Code
            belnr like bkpf-belnr,          " Acc Document
            gjahr like bkpf-gjahr,          " Fiscal Year
            waers like bkpf-waers,          " Trans. Currency
            awkey like bkpf-awkey,          " Object Key
            awtyp like bkpf-awtyp,          " Reference Procedure
          end of i_bkpf.
    Internal Table for MSEG Table data
    data: begin of i_mseg occurs 0,
            mblnr like mseg-mblnr,          " Material Document
            mjahr like mseg-mjahr,          " Fiscal Year
            bwart like mseg-bwart,          " Movement Type
            matnr like mseg-matnr,          " Material No
            menge like mseg-menge,          " PO Quantity
            meins like mseg-meins,          " UOM
          end of i_mseg.
    Internal Table for MBEW Table data
    data: begin of i_mbew occurs 0,
            matnr like mbew-matnr,          " Material No
            werks like mbew-bwkey,          " Plant
            bklas like mbew-bklas,          " Valuation Class
          end of i_mbew.
    Internal Table for EKPO Table data
    data: begin of i_ekpo occurs 0,
            ebeln like ekpo-ebeln,          " Purchase Order
            ebelp like ekpo-ebelp,          " PO Item
            matnr like ekpo-matnr,          " Material No
            txz01 like ekpo-txz01,          " Material Text
          end of i_ekpo.
    Internal Table for EKKN Table data
    data: begin of i_ekkn occurs 0,
            ebeln like ekkn-ebeln,          " Purchase Order
            ebelp like ekkn-ebelp,          " PO Item
            kostl like ekkn-kostl,          " Cost Center
            sakto like ekkn-sakto,          " Cost Element
          end of i_ekkn.
    Internal Table for LFA1 Table data
    data: begin of i_lfa1 occurs 0,
            lifnr like lfa1-lifnr,          " Vendor
            name1 like lfa1-name1,          " Name
          end of i_lfa1.
    Declaration of Output Internal Table
    data: begin of i_final occurs 0,
            lifnr like lfa1-lifnr,     " Vendor
            werks like bseg-werks,     " Plant
            monat like bsis-monat,     " Period
            matnr like mara-matnr,     " Material Number
            bklas like mbew-bklas,     " Val Class
            ebeln like bseg-ebeln,     " PO
            kostl like ekkn-kostl,     " Cost Center
            sakto like ekkn-sakto,     " Cost Element
            budat like bsis-budat,     " Rec. Date
            name1 like lfa1-name1,     " Vendor Name
            belnr like bsis-belnr,     " FI Document
            bwart like mseg-bwart,     " Movement Type
            txz01 like ekpo-txz01,     " Material Text
            menge like bseg-menge,     " Quantity
            meins like bseg-meins,     " UOM
            dmbtr like bseg-dmbtr,     " Local Amount
            wrbtr like bseg-wrbtr,     " Tran.Amount
            waers like bkpf-waers,     " Tran.Currency
            status type c,             " Material Status
          end of i_final.
    Internal table to hold field catgory data
    data:  i_fldcat  type slis_t_fieldcat_alv.   " Table - field catgory
    Internal table to hold Sort/Subtotals criteria data
    data:  i_sort  type slis_t_sortinfo_alv.     " Table - sort/Subtotals
    Structure
    data:  x_layout   type slis_layout_alv,      " Structure-layout
           x_fldcat   like line of i_fldcat,     " Structure-field catagory
           x_sort     like line of i_sort.       " Structure-Sort/Subtotals
           Selection screen
    selection-screen : begin of block b1 with frame title text-000.
    parameters:
       p_bukrs like t001-bukrs obligatory,          " Company Code
       p_grira like ska1-saknr default '0241101000' obligatory. " Account
    select-options:
       s_budat for bkpf-budat,        " Posting Date
       s_werks for t001w-werks,       " Plant
       s_lifnr for lfa1-lifnr,        " Vendor
       s_matnr for mara-matnr,        " Material Number
       s_kostl for csks-kostl,        " Cost Center
       s_kstar for cska-kstar,        " Cost Element
       s_ebeln for ekko-ebeln,        " Purchase Order
       s_monat for bsis-monat.        " Period
    selection-screen skip.
    parameters:
       p_incmt as checkbox default 'X',
       p_incnm as checkbox default 'X'.
    selection-screen end of block b1.
    Initialization
    initialization.
      g_repid = sy-repid.
      perform layout_init using x_layout.
      perform eventtab_build using g_events[].
      g_variant-report = g_repid.
      g_save           = 'A'.
    At selection screen
    at selection-screen.
    Validation of Selection Screen Fields
      perform validate_screen.
    Start of selection
    start-of-selection.
    Read Data from Database Tables
      perform read_data.
    End of selection
    end-of-selection.
    Build layout report layout.
      perform populate_layout_stucture.
    Perform build_field_catalog and Sort Table
      perform build_field_catalog.
      perform build_sort_totals.
    List Header for Top-Of-Page
      perform comment_build using g_list_top_of_page[].
    Call list viewer function module
      perform call_list_viewer .
    ****************Form - Routines**************************************
          Form        : layout_init
          Description : Form to Build layout for list display
    form layout_init using rs_layout type slis_layout_alv.
      rs_layout-detail_popup      = c_x.
    endform.
    Form         : Eventtab_build
    Description  : Registration of events to happen during list display
    form eventtab_build using rt_events type slis_t_event.
    Registration of events to happen during list display
      data: ls_event type slis_alv_event.
      call function 'REUSE_ALV_EVENTS_GET'
           exporting
                i_list_type = 0
           importing
                et_events   = rt_events.
      read table rt_events with key name = slis_ev_top_of_page
                               into ls_event.
      if sy-subrc = 0.
        move g_top_of_page to ls_event-form.
        append ls_event to rt_events.
      endif.
    endform.                                   "eventtab_build
          Form : top_of_page
    form top_of_page.
      call function 'REUSE_ALV_COMMENTARY_WRITE'
           exporting
             I_LOGO             = 'ENJOYSAP_LOGO'
                it_list_commentary = g_list_top_of_page.
    endform.
          Form validate_screen
    Validation of Selection Screen fields
    form validate_screen.
    Validation of Company Code
      clear t001.
      if not p_bukrs is initial.
        select single bukrs
          into t001-bukrs
          from t001
          where bukrs eq p_bukrs.
        if sy-subrc <> 0.
          message e899 with 'Enter Valid Company Code'(012).
        endif.
      endif.
    Validation of GL Account (GR/IR)
      clear ska1.
      if not p_grira is initial.
        select saknr
          into ska1-saknr
          from ska1
          up to 1 rows
          where saknr eq p_grira.
        endselect.
        if sy-subrc <> 0.
          message e899 with 'Enter Valid GR/IR Account'(013).
        endif.
      endif.
    Validation of Vendor Code
      clear lfa1.
      if not s_lifnr[] is initial.
        select single lifnr
          into lfa1-lifnr
          from lfa1
          where lifnr in s_lifnr.
        if sy-subrc <> 0.
          message e899 with 'Enter Valid Vendor'(001).
        endif.
      endif.
    Validation of Plant Code
      clear t001w.
      if not s_werks[] is initial.
        select single werks
          into t001w-werks
          from t001w
          where werks in s_werks.
        if sy-subrc <> 0.
          message e899 with 'Enter Valid Plant'(014).
        endif.
      endif.
    Validation of Material Code
      clear mara.
      if not s_matnr[] is initial.
        select single matnr
          into mara-matnr
          from mara
          where matnr in s_matnr.
        if sy-subrc <> 0.
          message e899 with 'Enter Valid Material'(015).
        endif.
      endif.
    Validation of Purchase Order
      clear ekko.
      if not s_ebeln[] is initial.
        select single ebeln
          into ekko-ebeln
          from ekko
          where ebeln in s_ebeln.
        if sy-subrc <> 0.
          message e899 with 'Enter Valid Purchase Order'(016).
        endif.
      endif.
    Validation of Cost Center
      clear csks.
      if not s_kostl[] is initial.
        select kostl
          into csks-kostl
          from csks
          up to 1 rows
          where kostl in s_kostl.
        endselect.
        if sy-subrc <> 0.
          message e899 with 'Enter Valid Cost Center'(017).
        endif.
      endif.
    Validation of Cost Element
      clear cska.
      if not s_kstar[] is initial.
        select kstar
          into cska-kstar
          from cska
          up to 1 rows
          where kstar in s_kstar.
        endselect.
        if sy-subrc <> 0.
          message e899 with 'Enter Valid Cost Element'(018).
        endif.
      endif.
    endform.                          "validate_screen
    *&      Form  read_data
    Read the Data from the database Tables
    form read_data.
    Get the Accounting Documents for the GR/IR Account Entered on
    Selection Screen
      clear i_bsis.
      refresh i_bsis.
      select bukrs           " Company Code
             hkont           " GR IR Account
             gjahr           " Fiscal Year
             belnr           " Acc Document
             buzei           " Item No
             budat           " Receipt Date(Posting)
             monat           " Period
       into table i_bsis
       from  bsis
       where  bukrs = p_bukrs
         and  hkont = p_grira
         and  budat in s_budat
         and  monat in s_monat .
      if sy-subrc <> 0.
        message i899 with 'No data found'(043).
        g_exit = c_x.
        stop.
      endif.
      sort i_bsis by bukrs hkont gjahr belnr buzei.
    Get the Vendor,PO,Material,Qty details from BSEG Table
      if not i_bsis[] is initial.
        clear i_bseg.
        refresh i_bseg.
        select bukrs           " Company Code
               belnr           " Acc Document
               buzei           " Item No
               gjahr           " Fiscal Year
               shkzg           " Dr/Cr Indicator
               lifnr           " Vendor Code
               matnr           " Material No
               ebeln           " Purchase Order
               ebelp           " PO Item
               werks           " Plant
               menge           " PO Quantity
               meins           " UOM
               dmbtr           " Amount in Local Currency
               wrbtr           " Amount in Trans.Currency
        into table i_bseg
        from   bseg
        for all entries in i_bsis
        where  bukrs = p_bukrs
        and    belnr = i_bsis-belnr
        and    gjahr = i_bsis-gjahr
        and    buzei = i_bsis-buzei
        and    lifnr in s_lifnr
        and    werks in s_werks
        and    matnr in s_matnr
        and    ebeln in s_ebeln.
        sort i_bseg by bukrs belnr buzei gjahr.
    Select the Trans.Currency from BKPF Table
        clear i_bkpf.
        refresh i_bkpf.
        select bukrs           " Company Code
               belnr           " Acc Document
               gjahr           " Fiscal Year
               waers           " Trans. Currency
               awkey           " Object Key
               awtyp           " Reference Procedure
        into table i_bkpf
        from   bkpf
        for all entries in i_bsis
        where  bukrs = p_bukrs
        and    belnr = i_bsis-belnr
        and    gjahr = i_bsis-gjahr.
      endif.
      sort i_bkpf by bukrs belnr gjahr.
    Get the Quantity and UOM of Material from MSEG Table
      if not i_bkpf[] is initial.
        clear i_mseg.
        refresh i_mseg.
        select mblnr           " Material Document
               mjahr           " Fiscal Year
               bwart           " Movement Type
               matnr           " Material No
               menge           " PO Quantity
               meins           " UOM
          into table i_mseg
          from   mseg
          for all entries in i_bkpf
          where  mblnr = i_bkpf-awkey(10).
      endif.
      sort i_mseg by mblnr mjahr.
    Get the Material And Description from EKPO Table
      if not i_bseg[] is initial.
        clear i_ekpo.
        refresh i_ekpo.
        select ebeln           " Purchase Order
               ebelp           " PO Item
               matnr           " Material No
               txz01           " Material Text
        into table i_ekpo
        from   ekpo
        for all entries in i_bseg
        where  ebeln = i_bseg-ebeln
        and    ebelp = i_bseg-ebelp.
        sort i_ekpo by ebeln ebelp.
    Get the Valuation Class from MBEW Table
        clear i_mbew.
        refresh i_mbew.
        select matnr           " Material No
               bwkey           " Plant
               bklas           " Valuation Class
        into table i_mbew
        from   mbew
        for all entries in i_bseg
        where  matnr = i_bseg-matnr
        and    bwkey = i_bseg-werks.
        sort i_mbew by matnr werks.
    Get the Cost Center and Cost Element of the PO from EKKN Table
        clear i_ekkn.
        refresh i_ekkn.
        select ebeln           " Purchase Order
               ebelp           " PO Item
               kostl           " Cost Center
               sakto           " Cost Element
        into table i_ekkn
        from   ekkn
        for all entries in i_bseg
        where  ebeln = i_bseg-ebeln
        and    ebelp = i_bseg-ebelp
        and    kostl in s_kostl
        and    sakto in s_kstar.
        sort i_ekkn by ebeln ebelp.
    Get the Vendor Name
        clear i_lfa1.
        refresh i_lfa1.
        select lifnr            " Vendor
               name1            " Name
        into table i_lfa1
        from   lfa1
        for all entries in i_bseg
        where  lifnr = i_bseg-lifnr.
      endif.
      sort i_lfa1 by lifnr.
    Move the data to Final Output Internal Table
      loop at i_bsis.
        i_final-belnr = i_bsis-belnr.     " FI Document
        i_final-monat = i_bsis-monat.     " Period
        i_final-budat = i_bsis-budat.     " Rec. Date
    Read the Transaction Currency from BKPF Internal Table
        read table i_bkpf with key bukrs = i_bsis-bukrs
                                   belnr = i_bsis-belnr
                                   gjahr = i_bsis-gjahr
                                   binary search.
        if sy-subrc = 0.
          i_final-waers = i_bkpf-waers.     " Tran.Currency
    Read the Movement Type for all Material Related
    Documents from MSEG Internal Table
          if i_bkpf-awtyp = c_mkpf.
            read table i_mseg with key mblnr = i_bkpf-awkey(10)
                                       mjahr = i_bkpf-awkey+10(4).
            if sy-subrc = 0.
              i_final-bwart = i_mseg-bwart.     " Movement Type
            endif.
          endif.
        endif.
    Read Vendor, Plant, PO Document, Local And Trans.Amounts
    from BSEG Internal Table
        read table i_bseg with key bukrs = i_bsis-bukrs
                                   belnr = i_bsis-belnr
                                   gjahr = i_bsis-gjahr
                                   buzei = i_bsis-buzei
                                   binary search.
        if sy-subrc = 0.
          i_final-lifnr = i_bseg-lifnr.     " Vendor
          i_final-werks = i_bseg-werks.     " Plant
          i_final-ebeln = i_bseg-ebeln.     " PO
          i_final-dmbtr = i_bseg-dmbtr.     " Local Amount
          i_final-wrbtr = i_bseg-wrbtr.     " Tran.Amount
          i_final-menge = i_bseg-menge.     " Quantity
          i_final-meins = i_bseg-meins.     " UOM
    For Credit Indicator(SHKZG = H) amounts should be (-)ve
          if i_bseg-shkzg = c_h.
            i_final-dmbtr = i_final-dmbtr * -1.
            i_final-wrbtr = i_final-wrbtr * -1.
            i_final-menge = i_final-menge * -1.
          endif.
    Read the Material and its Description from EKPO Internal Table
          read table i_ekpo with key ebeln = i_bseg-ebeln
                                     ebelp = i_bseg-ebelp
                                     matnr = i_bseg-matnr
                                     binary search.
          if sy-subrc = 0.
            i_final-matnr = i_ekpo-matnr.     " Material Number
            i_final-txz01 = i_ekpo-txz01.     " Material Text
    Populate the Material Status depending on the Input Checkbox
    On Selection Screen
            if not i_ekpo-matnr is initial.
              i_final-status = c_x.
            endif.
          endif.
    Read the PO related Cost Element and Cost Centers
    from EKKN Internal Table
          read table i_ekkn with key ebeln = i_bseg-ebeln
                                     ebelp = i_bseg-ebelp
                                     binary search.
          if sy-subrc = 0.
            i_final-kostl = i_ekkn-kostl.     " Cost Center
            i_final-sakto = i_ekkn-sakto.     " Cost Element
          endif.
    Read the Valuation Class from MBEW Internal Table
          read table i_mbew with key matnr = i_bseg-matnr
                                     werks = i_bseg-werks
                                     binary search.
          if sy-subrc = 0.
            i_final-bklas = i_mbew-bklas.     " Val Class
          endif.
    Read the Vendor Name from LFA1 Internal Table
          read table i_lfa1 with key lifnr = i_bseg-lifnr
                                     binary search.
          if sy-subrc = 0.
            i_final-name1 = i_lfa1-name1.     " Vendor Name
          endif.
        endif.
        append i_final.
        clear i_final.
      endloop.
      sort i_final by lifnr werks monat matnr.
    Depending on the check Box Selected display the data
      if p_incmt = c_x and p_incnm ne c_x.
        delete i_final where matnr eq space.
      elseif p_incnm = c_x and p_incmt ne c_x.
        delete i_final where matnr ne space.
      endif.
    endform.           "Read Data
         Form        : populate_layout_stucture
         Description : Populating the layout structure
    form populate_layout_stucture.
      clear x_layout .
    Layout properties
      x_layout-zebra                = c_x.
      x_layout-detail_popup         = c_x.
      x_layout-detail_initial_lines = c_x.
      x_layout-colwidth_optimize    = c_x.
    endform.                    " populate_layout_stucture
         Form        : build_field_catalog
         Description : Building the field catalog data
    form build_field_catalog.
      call function 'REUSE_ALV_FIELDCATALOG_MERGE'
           exporting
                i_program_name         = g_repid
                i_internal_tabname     = 'I_FINAL'
                i_inclname             = g_repid
           changing
                ct_fieldcat            = i_fldcat
           exceptions
                inconsistent_interface = 1
                program_error          = 2
                others                 = 3.
      if sy-subrc <> 0.
        message id sy-msgid type sy-msgty number sy-msgno
              with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
      endif.
    Getting the Header text for the coloums
      loop at i_fldcat into x_fldcat where fieldname = 'LIFNR' or
                                           fieldname = 'NAME1' or
                                           fieldname = 'WERKS' or
                                           fieldname = 'MONAT' or
                                           fieldname = 'MATNR' or
                                           fieldname = 'BKLAS' or
                                           fieldname = 'EBELN' or
                                           fieldname = 'KOSTL' or
                                           fieldname = 'SAKTO' or
                                           fieldname = 'BUDAT' or
                                           fieldname = 'BELNR' or
                                           fieldname = 'BWART' or
                                           fieldname = 'TXZ01' or
                                           fieldname = 'MENGE' or
                                           fieldname = 'MEINS' or
                                           fieldname = 'DMBTR' or
                                           fieldname = 'WRBTR' or
                                           fieldname = 'WAERS' or
                                           fieldname = 'STATUS'.
        if x_fldcat-fieldname = 'LIFNR'.
          x_fldcat-seltext_l   = 'Vendor'(003).
          x_fldcat-seltext_m   = 'Vendor'(003).
          x_fldcat-seltext_s   = 'Vendor'(003).
          x_fldcat-reptext_ddic = 'Vendor'(003).
          x_fldcat-inttype   = c_c.
        endif.
        if x_fldcat-fieldname = 'NAME1'.
          x_fldcat-seltext_l   = 'Vendor Name'(002).
          x_fldcat-seltext_m   = 'Vendor Name'(002).
          x_fldcat-seltext_s   = 'Vendor Name'(002).
          x_fldcat-reptext_ddic = 'Vendor Name'(002).
          x_fldcat-inttype   = c_c.
        endif.
        if x_fldcat-fieldname = 'WERKS'.
          x_fldcat-seltext_l   = 'Plant'(010).
          x_fldcat-seltext_m   = 'Plant'(010).
          x_fldcat-seltext_s   = 'Plant'(010).
          x_fldcat-reptext_ddic   = 'Plant'(010).
          x_fldcat-ddictxt   = c_l.
        endif.
        if x_fldcat-fieldname = 'MONAT'.
          x_fldcat-seltext_l   = 'Period'(011).
          x_fldcat-seltext_m   = 'Period'(011).
          x_fldcat-seltext_s   = 'Period'(011).
          x_fldcat-reptext_ddic   = 'Period'(011).
          x_fldcat-ddictxt   = c_l.
        endif.
        if x_fldcat-fieldname = 'MATNR'.
          x_fldcat-seltext_l   = 'Material'(004).
          x_fldcat-seltext_m   = 'Material'(004).
          x_fldcat-seltext_s   = 'Material'(004).
          x_fldcat-reptext_ddic   = 'Material'(004).
          x_fldcat-ddictxt   = c_l.
        endif.
        if x_fldcat-fieldname = 'BKLAS'.
          x_fldcat-seltext_l   = 'Valuation Class'(009).
          x_fldcat-seltext_m   = 'Valuation Class'(009).
          x_fldcat-seltext_s   = 'Valuation Class'(009).
          x_fldcat-reptext_ddic   = 'Valuation Class'(009).
          x_fldcat-ddictxt   = c_l.
        endif.
        if x_fldcat-fieldname = 'EBELN'.
          x_fldcat-seltext_l   = 'Purchase Order'(005).
          x_fldcat-seltext_m   = 'Purchase Order'(005).
          x_fldcat-seltext_s   = 'Purchase Order'(005).
          x_fldcat-reptext_ddic   = 'Purchase Order'(005).
          x_fldcat-ddictxt   = c_l.
        endif.
        if x_fldcat-fieldname = 'KOSTL'.
          x_fldcat-seltext_l   = 'Cost Center'(006).
          x_fldcat-seltext_m   = 'Cost Center'(006).
          x_fldcat-seltext_s   = 'Cost Center'(006).
          x_fldcat-reptext_ddic   = 'Cost Center'(006).
          x_fldcat-ddictxt   = c_l.
        endif.
        if x_fldcat-fieldname = 'SAKTO'.
          x_fldcat-seltext_l   = 'Cost Element'(007).
          x_fldcat-seltext_m   = 'Cost Element'(007).
          x_fldcat-seltext_s   = 'Cost Element'(007).
          x_fldcat-reptext_ddic   = 'Cost Element'(007).
          x_fldcat-ddictxt   = c_l.
        endif.
        if x_fldcat-fieldname = 'BUDAT'.
          x_fldcat-seltext_l   = 'Receipt Date'(008).
          x_fldcat-seltext_m   = 'Receipt Date'(008).
          x_fldcat-seltext_s   = 'Receipt Date'(008).
          x_fldcat-reptext_ddic   = 'Receipt Date'(008).
          x_fldcat-ddictxt   = c_l.
        endif.
        if x_fldcat-fieldname = 'BELNR'.
          x_fldcat-seltext_l   = 'Acc.Document'(100).
          x_fldcat-seltext_m   = 'Acc.Document'(100).
          x_fldcat-seltext_s   = 'Acc.Document'(100).
          x_fldcat-reptext_ddic   = 'Acc.Document'(100).
          x_fldcat-ddictxt   = c_l.
        endif.
        if x_fldcat-fieldname = 'BWART'.
          x_fldcat-seltext_l   = 'Movement Type'(101).
          x_fldcat-seltext_m   = 'Movement Type'(101).
          x_fldcat-seltext_s   = 'Movement Type'(101).
          x_fldcat-reptext_ddic   = 'Movement Type'(101).
          x_fldcat-ddictxt   = c_l.
        endif.
        if x_fldcat-fieldname = 'TXZ01'.
          x_fldcat-seltext_l   = 'Material Text'(102).
          x_fldcat-seltext_m   = 'Material Text'(102).
          x_fldcat-seltext_s   = 'Material Text'(102).
          x_fldcat-reptext_ddic   = 'Material Text'(102).
          x_fldcat-ddictxt   = c_l.
        endif.
        if x_fldcat-fieldname = 'MENGE'.
          x_fldcat-seltext_l   = 'Quantity'(103).
          x_fldcat-seltext_m   = 'Quantity'(103).
          x_fldcat-seltext_s   = 'Quantity'(103).
          x_fldcat-reptext_ddic   = 'Quantity'(103).
          x_fldcat-ddictxt   = c_l.
          x_fldcat-do_sum    = c_x.
        endif.
        if x_fldcat-fieldname = 'MEINS'.
          x_fldcat-seltext_l   = 'UOM'(104).
          x_fldcat-seltext_m   = 'UOM'(104).
          x_fldcat-seltext_s   = 'UOM'(104).
          x_fldcat-reptext_ddic   = 'UOM'(104).
          x_fldcat-ddictxt   = c_l.
        endif.
        if x_fldcat-fieldname = 'DMBTR'.
          x_fldcat-seltext_l   = 'Amount in Local Curr'(105).
          x_fldcat-seltext_m   = 'Amount in Local Curr'(105).
          x_fldcat-seltext_s   = 'Amount in Local Curr'(105).
          x_fldcat-reptext_ddic   = 'Amount in Local Curr'(105).
          x_fldcat-ddictxt   = c_l.
          x_fldcat-do_sum    = c_x.
        endif.
        if x_fldcat-fieldname = 'WRBTR'.
          x_fldcat-seltext_l   = 'Amount in Trans.Curr'(106).
          x_fldcat-seltext_m   = 'Amount in Trans.Curr'(106).
          x_fldcat-seltext_s   = 'Amount in Trans.Curr'(106).
          x_fldcat-reptext_ddic   = 'Amount in Trans.Curr'(106).
          x_fldcat-ddictxt   = c_l.
          x_fldcat-do_sum    = c_x.
        endif.
        if x_fldcat-fieldname = 'WAERS'.
          x_fldcat-seltext_l   = 'Trans.Currency'(107).
          x_fldcat-seltext_m   = 'Trans.Currency'(107).
          x_fldcat-seltext_s   = 'Trans.Currency'(107).
          x_fldcat-reptext_ddic   = 'Trans.Currency'(107).
          x_fldcat-ddictxt   = c_l.
        endif.
        if x_fldcat-fieldname = 'STATUS'.
          x_fldcat-seltext_l   = 'Material Status'(019).
          x_fldcat-seltext_m   = 'Material Status'(019).
          x_fldcat-seltext_s   = 'Material Status'(019).
          x_fldcat-reptext_ddic   = 'Material Status'(019).
          x_fldcat-ddictxt   = c_l.
        endif.
        modify i_fldcat from x_fldcat index sy-tabix.
      endloop.
    endform.                    " build_field_catalog
         Form        : build_sort_totals
         Description : Building the Criteria for Sort/Subtotals
    form build_sort_totals.
      x_sort-fieldname = 'LIFNR'.
      x_sort-tabname   = 'I_FINAL'.
      x_sort-spos      =  1.
      x_sort-up        =  c_x.
      x_sort-subtot    = c_x.
      append x_sort to i_sort.
      clear  x_sort.
      x_sort-fieldname = 'WERKS'.
      x_sort-tabname   = 'I_FINAL'.
      x_sort-spos      =  2.
      x_sort-up        =  c_x.
      x_sort-subtot    = c_x.
      append x_sort to i_sort.
      clear  x_sort.
      x_sort-fieldname = 'MONAT'.
      x_sort-tabname   = 'I_FINAL'.
      x_sort-spos      =  3.
      x_sort-up        =  c_x.
      x_sort-subtot    = c_x.
      append x_sort to i_sort.
      clear  x_sort.
      x_sort-fieldname = 'MATNR'.
      x_sort-tabname   = 'I_FINAL'.
      x_sort-spos      =  4.
      x_sort-up        =  c_x.
      x_sort-subtot    = c_x.
      append x_sort to i_sort.
      clear  x_sort.
      x_sort-fieldname = 'BKLAS'.
      x_sort-tabname   = 'I_FINAL'.
      x_sort-spos      =  5.
      x_sort-up        =  c_x.
      x_sort-subtot    = c_x.
      append x_sort to i_sort.
      clear  x_sort.
      x_sort-fieldname = 'EBELN'.
      x_sort-tabname   = 'I_FINAL'.
      x_sort-spos      =  6.
      x_sort-up        =  c_x.
      x_sort-subtot    = c_x.
      append x_sort to i_sort.
      clear  x_sort.
      x_sort-fieldname = 'KOSTL'.
      x_sort-tabname   = 'I_FINAL'.
      x_sort-spos      =  7.
      x_sort-up        =  c_x.
      x_sort-subtot    = c_x.
      append x_sort to i_sort.
      clear  x_sort.
      x_sort-fieldname = 'SAKTO'.
      x_sort-tabname   = 'I_FINAL'.
      x_sort-spos      =  8.
      x_sort-up        =  c_x.
      x_sort-subtot    = c_x.
      append x_sort to i_sort.
      clear  x_sort.
      x_sort-fieldname = 'BUDAT'.
      x_sort-tabname   = 'I_FINAL'.
      x_sort-spos      =  9.
      x_sort-up        =  c_x.
      x_sort-subtot    = c_x.
      append x_sort to i_sort.
      clear  x_sort.
    endform.                    " build_sort_totals
      Form        : comment_build
      Description : This form is used to display the Report Header(ALV)
    form comment_build using lt_top_of_page type
                                            slis_t_listheader.
      data: l_line type slis_listheader,
            l_heading1 like rs38m-repti,
            l_date(10), l_time(8).
      clear l_line.
      l_heading1 = 'GR/IR DETAIL REPORT'(021).
      g_repid = sy-repid.
      write sy-uzeit to l_time.
      write sy-datum to l_date.
      l_line-typ = c_h.
      move l_heading1 to l_line-info.
      append l_line to lt_top_of_page.
      clear l_line.
      l_line-typ  = c_s.
      concatenate 'System:'(023) sy-sysid
                  'Date:'(024) l_date
                  ' Time:'(025)
                  l_time into l_line-info.
      append l_line to lt_top_of_page.
      concatenate 'Report:'(026) g_repid
                  ' User:'(027) sy-uname into
                  l_line-info.
      append l_line to lt_top_of_page.
      l_line-typ = c_a.
      move 'SELECTION CRITERIA:'(028) to l_line-info.
      append l_line to lt_top_of_page.
      concatenate ' Company Code : '(029)
                  p_bukrs into l_line-info.
      append l_line to lt_top_of_page.
      concatenate ' GR/IR Account: '(030)
                  p_grira into l_line-info.
      append l_line to lt_top_of_page.
      concatenate ' Posting Date : '(032) s_budat-low
                  ' To: '(031) s_budat-high into l_line-info.
      append l_line to lt_top_of_page.
      concatenate ' Plant : '(033) s_werks-low
                  ' To: '(031) s_werks-high into l_line-info.
      append l_line to lt_top_of_page.
      concatenate ' Vendor: '(034) s_lifnr-low
                  ' To: '(031) s_lifnr-high into l_line-info.
      append l_line to lt_top_of_page.
      concatenate ' Material: '(035) s_matnr-low
                  ' To: '(031) s_matnr-high into l_line-info.
      append l_line to lt_top_of_page.
      concatenate ' Cost Center : '(036) s_kostl-low
                  ' To: '(031) s_kostl-high into l_line-info.
      append l_line to lt_top_of_page.
      concatenate ' Cost Element: '(037) s_kstar-low
                  ' To: '(031) s_kstar-high into l_line-info.
      append l_line to lt_top_of_page.
      concatenate ' Purchase Order: '(038) s_ebeln-low
                  ' To: '(031) s_ebeln-high into l_line-info.
      append l_line to lt_top_of_page.
      concatenate ' Period : '(039) s_monat-low
                  ' To: '(031) s_monat-high into l_line-info.
      append l_line to lt_top_of_page.
      concatenate ' Include Material Items: '(040)
                  p_incmt into l_line-info.
      append l_line to lt_top_of_page.
      concatenate ' Include Non-Material Items: '(041)
                  p_incnm into l_line-info.
      append l_line to lt_top_of_page.
    endform.
         Form        : call_list_viewer
         Description : This form is used to display the grid through ALV
    form call_list_viewer.
      call function 'REUSE_ALV_GRID_DISPLAY'
           exporting
                i_callback_program      = g_repid
                is_layout               = x_layout
                it_fieldcat             = i_fldcat[]
                i_default               = c_x
                it_sort                 = i_sort[]
                i_save                  = g_save
                is_variant              = g_variant
                it_events               = g_events[]
           importing
                e_exit_caused_by_caller = g_exit_caused_by_caller
                es_exit_caused_by_user  = g_exit_caused_by_user
           tables
                t_outtab                = i_final
           exceptions
                program_error           = 1
                others                  = 2.
      if sy-subrc <> 0.
        write: / 'Problem in calling the ALV report'(042).
      endif.
    endform.                    " call_list_viewer
    Regards
    Anji

  • Report for Invoiced Documents

    Hi Experts,
    We got a new requirement from Finance department for a report.They got a requirement like this.
    1.Invoice Document 2.Invoice amount 3.Invoice date 4.All Taxes in detail for each invoice 5.Vendor Name and Vendor Number 6.Reference Document Details
    7.If excise tax exists then Excise document Number.
    So,please anyone tell me, what information i must give to my ABAP Consultant.
    Please guide me how to prepare this report,step by step.
    Thanks and Regards

    Dear MK,
    Here's some fields that may help :
           EBELN  LIKE EKPO-EBELN,   " PO#
           EBELP  LIKE EKPO-EBELP,   " PO item
           ELIKZ  LIKE EKPO-ELIKZ,   " Complete
           BEDAT  LIKE EKKO-BEDAT,   " PO creation date
           AEDAT  LIKE EKKO-AEDAT,   " PO date
           EKGRP  LIKE EKKO-EKGRP,   " Purchasing Grp
           LIFNR  LIKE LFA1-LIFNR,   " Vendor#
           NAME1  LIKE LFA1-NAME1,   " Vendor name
           MATNR  LIKE EKPO-MATNR,   " Material#
           TXZ01  LIKE EKPO-TXZ01,   " Description
           NETPR  LIKE EKPO-NETPR,   " Unit price
           WAERNT LIKE EKKO-WAERS,   " Unit Price Curr
           MENGE1 LIKE EKPO-MENGE,   " Quantity in EKPO
           ZTERM  LIKE EKKO-ZTERM,   " PayTerm
           INCO1  LIKE EKKO-INCO1,   " Incoterm 1
           BEWTP  LIKE EKBE-BEWTP,   " Category Code
           BEWTK  LIKE T163C-BEWTK,  " Category
           BEWTL  LIKE T163C-BEWTL,  " Category Text
           BELNR  LIKE EKBE-BELNR,   " Doc#
           XBLNR  LIKE RBKP-XBLNR,   " Reference
           BUZEI  LIKE EKBE-BUZEI,   " Item
           BWART  LIKE EKBE-BWART,   " Mvt
           BUDAT  LIKE EKBE-BUDAT,   " Posting Date
           MENGE  LIKE EKBE-MENGE,   " Quantity
           MEINS  LIKE EKPO-MEINS,   " Uom
           SHKZG  LIKE EKBE-SHKZG,   " Indicator (+)/(-)
           AUGDT  LIKE BSEG-AUGDT,   " Clearing Date
           AUGBL  LIKE BSEG-AUGBL,   " Clearing Doc
           GJAHR  LIKE EKBE-GJAHR,   " Fiscal Year
           BKLAS  LIKE MBEW-BKLAS,   " VClass
           BKBEZ  LIKE T025T-BKBEZ,  " VClass Desc
           BEDNR  LIKE EKPO-BEDNR,   "XTracking No
           CPUDT  LIKE EKBE-CPUDT,   "XArrival Date
           AFNAM  LIKE EBAN-AFNAM,   "XDivision Name
           EINDT  LIKE EKET-EINDT,   "XGoods Delivery
           WRBTR  LIKE EKBE-WRBTR,   " Value in DCurr
           REWRT  LIKE BSEG-REWRT,   " Gross Amt in DCurr
           WAERS1 LIKE EKKO-WAERS,   " DCurr
           DMBTR  LIKE EKBE-DMBTR,   " Value in LCurr
           REWWR  LIKE BSEG-REWWR,   " Gross Amt in LCurr
           WAERS  LIKE T001-WAERS,   " LCurr
           DMBE2  LIKE BSEG-DMBE2,   " Value in GCurr
           BONFB  LIKE BSEG-BONFB,   " Gross Amt in GCurr
           WAERS3 LIKE EKBE-WAERS,   " GCurr
           ZUONR  LIKE BSEG-ZUONR,   " Allocation
           BLART  LIKE BKPF-BLART,   " DType
           BKTXT  LIKE BKPF-BKTXT,   " Doc Header Text
           FIDOC  LIKE BSEG-BELNR,   " FI Doc#
           ZBD1T  LIKE BSEG-ZBD1T,   " PTerm (days)
           ZFBDT  LIKE BSEG-ZFBDT,   " EstPmtDt
           MATKL  LIKE EKPO-MATKL,   " MatGrp
           WERKS  LIKE EKPO-WERKS,   " Plant
           BSART  LIKE EKKO-BSART,   " PODocTyp
           BUKRS  LIKE RBKP-BUKRS,   " InvCoCd
           NETPRQ LIKE EKPO-NETWR,   " PO Amount
           WRBTRA LIKE BSEG-WRBTR,   " Inv Amnt in PO Curr
           STATUS LIKE EKPO-BSTAE,   " Status
           VGABE  LIKE EKBE-VGABE,   "XHistory
           TKNUM  like VTTK-TKNUM,   "XShipment#
           BEZEI  like TVKNT-BEZEI,  "XPOD
           DPTEN  like VTTK-DPTEN,   "XETA
           CMILL  like VTTK-HANDLE,  "XCargo to Mill
           VERKF  like EKKO-VERKF,   "XSales Person
           INCO2  like EKKO-INCO2,   "XIncoTerm 2
           POACT  like BKPF-BLDAT,   "XPO from Acct
           IVACT  like BKPF-BLDAT,   "XInv to Acct
           ACPIV  like BKPF-BLDAT,   "XAcct process Inv
           IVTPC  like BKPF-BLDAT,   "XInv to Pymt Ctrl
           DATEN  like VTTK-DATEN,   "XATA
    Regards,
    w1n

Maybe you are looking for

  • Mail not receiving new mail

    can anyone help im not recieving any new emails but i can send emails ...... i tryed to uninstall the email address that didnt help..... i tryed the doctor connection test it said that im connected??/?????? pls can anyone help

  • What do I need to install on server BO to make a new connection to DB2 ?

    Hi experts, i'm on a RedHat Linux server, and the CMS DB is on Oracle, and all the universes are connected to Orale. Now I have to do a new universe that points to a new DB2 v9.7 data warehouse. 1) What do I have to install on server to make my DB2 c

  • Page shows bizarre characters ...

    I am having trouble viewing the site: http://anidb.net using Firefox. When I try to enter, all I see are bizarre characters (black on white background). It is as if Firefox cannot read the page properly. Here's a picture of what I get: http://i244.ph

  • Oracle Portal - execute_portlet

    hi. I'm running Oracle Portal 10g (10.1.4.2.0 on Windows Server2003) and I'm getting the following message in my apache access.log over and over again: [13/Sep/2010:14:00:42 +0200] "POST /portal/pls/portal/!PORTAL.wwpro_app_provider.execute_portlet/5

  • Unable to install Adobe Illustrator CS3

    Hi, i download Adobe Illustrator CS3 Trial from adobe site. when i install the trial it gives me error message "A problem occured while extracting some files. Check available space on your computer and the write privilegs on the destination folder."