Function ALSM_EXCEL_TO_INTERNAL_TABLE

Hy guys , im  using this function in order to read a excel file , however , I m Getting exception   upload_ole   =  2 , why is that ? , here some code :
FORM match_archivo USING  p_archivo CHANGING archivo.
  DATA:lt_files   TYPE filetable,
     l_file     TYPE file_table,
     l_title    TYPE string,
     l_subrc    TYPE i,
     l_usr_act  TYPE i,
     l_def_file TYPE string.
  l_def_file = p_archivo.
  CLEAR lt_files. REFRESH lt_files.
  CALL METHOD cl_gui_frontend_services=>file_open_dialog
    EXPORTING
       window_title            = ''
       default_extension       = '*.xls'
       default_filename        = '*.xls'
       initial_directory       = 'c:\'
       multiselection          = ' '
    CHANGING
      file_table              = lt_files
      rc                      = l_subrc
    EXCEPTIONS
      file_open_dialog_failed = 1
      cntl_error              = 2
      error_no_gui            = 3
    OTHERS                  = 5
  IF sy-subrc EQ 0.
    LOOP AT lt_files ASSIGNING <fs>.
      fic_inl = <fs>.
      EXIT.
    ENDLOOP.
  ELSE.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
               WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.
ENDFORM.
      FORM  read_fi_in                                    *
FORM read_fi_in.
  CLEAR: fic_inl1, var.
  MOVE  fic_inl TO fic_inl1 .
  REPLACE '.' WITH '~' INTO fic_inl1.
  IF sy-subrc EQ 0.
    SET LOCALE LANGUAGE sy-langu.
    TRANSLATE fic_inl1 TO UPPER CASE.
      CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
           EXPORTING
                filename                = fic_inl1
                i_begin_col             = '1'
                i_begin_row             = '1'
                i_end_col               = '256'
                i_end_row               = '65536'
           TABLES
                intern                  = excel
           EXCEPTIONS
                inconsistent_parameters = 1
                upload_ole              = 2
                OTHERS                  = 3.
      IF sy-subrc = 0.
        LOOP AT excel.
        ENDLOOP.
      ENDIF.
    ENDIF.
ENDFORM.       
thank you very much for your help .

Hi Ali,
Try using the below code for your requirement.
I hope this will solve your problem....
FORM p_upload_data .
  DATA : gd_scol   TYPE i VALUE '1',
          gd_srow   TYPE i VALUE '2',
          gd_ecol   TYPE i VALUE '5',
          gd_erow   TYPE i VALUE '60000'.
  DATA: it_tab TYPE filetable,
        gd_subrc TYPE i.
  DATA : lt_intern TYPE  kcde_cells OCCURS 0 WITH HEADER LINE.
  DATA : ld_index TYPE i.
  FIELD-SYMBOLS : <fs> .
  CALL FUNCTION 'KCD_EXCEL_OLE_TO_INT_CONVERT'
    EXPORTING
      filename                = p_path
      i_begin_col             = gd_scol
      i_begin_row             = gd_srow
      i_end_col               = gd_ecol
      i_end_row               = gd_erow
    TABLES
      intern                  = lt_intern
    EXCEPTIONS
      inconsistent_parameters = 1
      upload_ole              = 2
      OTHERS                  = 3.
  IF sy-subrc <> 0.
    FORMAT COLOR COL_BACKGROUND INTENSIFIED.
    WRITE:/ 'Error Uploading file'.
    EXIT.
  ENDIF.
  IF lt_intern[] IS INITIAL.
    FORMAT COLOR COL_BACKGROUND INTENSIFIED.
    WRITE:/ 'No Data Uploaded'.
    EXIT.
  ELSE.
    SORT lt_intern BY row col.
    LOOP AT lt_intern.
      MOVE lt_intern-col TO ld_index.
      ASSIGN COMPONENT ld_index OF STRUCTURE it_final TO <fs>.
      MOVE lt_intern-value TO <fs>.
      AT END OF row.
        APPEND it_final .
        CLEAR  it_final.
      ENDAT.
    ENDLOOP.
  ENDIF.
ENDFORM.                    " P_UPLOAD_DATA
Thanks,
Chidanand

Similar Messages

  • CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'

    Hi experts,
                     I have a doubt in fn module..
    i gave the flat file data as
    matnr     mbrsh  mtart    maktx   meins
    z58723     m         roh    dfsdfsd    kg
    z57934     m         roh     rsdrss    ea
    when i am uploading from excel to mm01 t.code
    in matnr  it takes z58723 and in
    mbrsh  it takes z not m and in mtart it takes z587 not roh....
    i think u can understand.....help me please.....

    Hello,
    Check with this sample.
    DATA: G_T_FILE LIKE ALSMEX_TABLINE OCCURS 0 WITH HEADER LINE.
    *download the excel data into an internal table
      IF NOT P_FILE IS INITIAL.
        CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
             EXPORTING
                  FILENAME                = P_FILE
                  I_BEGIN_COL             = G_C_START_COL
                  I_BEGIN_ROW             = G_C_START_ROW
                  I_END_COL               = G_C_END_COL
                  I_END_ROW               = G_C_END_ROW
             TABLES
                  INTERN                  = G_T_FILE
             EXCEPTIONS
                  INCONSISTENT_PARAMETERS = 1
                  UPLOAD_OLE              = 2
                  OTHERS                  = 3.
        IF SY-SUBRC <> 0.
          MESSAGE E000(SU) WITH TEXT-004.
        ENDIF.
      ENDIF.
      LOOP AT G_T_FILE.
        IF G_T_FILE-COL = '1'.
          G_T_DEBI-KUNNR = G_T_FILE-VALUE.
        ENDIF.
        IF G_T_FILE-COL = '2'.
          G_T_DEBI-LAND1 = G_T_FILE-VALUE.
        ENDIF.
        IF G_T_FILE-COL = '3'.
          G_T_DEBI-VBUND = G_T_FILE-VALUE.
        ENDIF.
        IF G_T_FILE-COL = '4'.
          G_T_DEBI-AKONT = G_T_FILE-VALUE.
        ENDIF.
        AT END OF ROW.
          APPEND G_T_DEBI.
          CLEAR G_T_DEBI.
        ENDAT.
      ENDLOOP.
    Cheers,
    Vasanth

  • Incorrect result using the function ALSM_EXCEL_TO_INTERNAL_TABLE

    I have used the function ALSM_EXCEL_TO_INTERNAL_TABLE to load a Excel sheet on an internal table and the function returns the following result:
    Row  Col   Value
    0001 0001 902000100 A601 K 627542130 021 AGARDUN ZMAS 673 EU
    0002 0001 902000101 A602 K 627542131 022 AGARDUN ZMAS 695 EU
    0003 0001 902000102 A603 K 627542132 023 AGARDUN ZMAS 717 EU
    0004 0001 902000103 A604 k 627542133 024 AGARDUN ZMAS 739 EU
    0005 0001 902000104 A605 k 627542134 025 AGARDUN ZMAS 761 EU
    0006 0001 902000105 A606 W 627542135 026 AGARDUN ZMAS 783 EU
    0007 0001 902000106 A607 W 627542136 027 AGARDUN ZMAS 805 EU
    0008 0001 902000107 A608 W 627542137 028 AGARDUN ZMAS 827 EU
    0009 0001 902000108 A609 K 627542138 029 AGARDUN ZMAS 849 EU
    0010 0001 902000109 A610 k 627542139 030 AGARDUN ZMAS 871 EU
    0011 0001 902000110 A611 O 627542140 031 AGARDUN ZMAS 893 EU
    That is to say, the excel sheet has nine columns, and the function thinks that only has 1 column.
    I have checked the function with the same file in other computers, and the result has been the correct one, that is to say, the function returns the value of the column in its corresponding column:
    Row  Col   Value
    0001 0001 902000100
    0001 0002 A601
    0001 0003 K
    0001 0004 627542130
    0001 0005 021
    0001 0006 AGARDUN
    0001 0007 ZMAS
    0001 0008 673
    0001 0009 EU
    0002 0001 902000101
    0002 0002 A602
    0002 0003 K
    0002 0004 627542131
    0002 0005 022
    0002 0006 AGARDUN
    0002 0007 ZMAS
    0002 0008 717
    0002 0009 EU
    Can you help me?
    Thanks.

    Hi Garduño,
    1. U want to upload data from EXCEL
    into internal table.
    2. and u are using ALSM_EXCEL_TO_INTERNAL_TABLE.
    3. But We cannot do this direclty !
    For uploading purpose :
    6. There are TWO options.
    a) either save the excel to TAB Delimited file,
    and use GUI_UPLOAD to upload the data in internal table.
    b) use FM for excel purpose.
    7. a) is easy and recommended
    8. b) there is a FM for it,
    but we have to apply some more logic
    bcos the FM uploads data of excel
    in the intenal table,
    CELL BY CELL
    9. afTER THAT , we have to convert this cell by cell data,
    into our format of internal table.
    10. use this code (just copy paste in new program)
    (it is tried wit T001 structure data)
    (it will AUTOMATICALLY based upon the
    fields of internal table,
    convert data from cell by cell,
    to that of internal table fields)
    REPORT abc.
    DATA : ex LIKE TABLE OF alsmex_tabline WITH HEADER LINE.
    DATA : t001 LIKE TABLE OF t001 WITH HEADER LINE.
    DATA : cmp LIKE TABLE OF rstrucinfo WITH HEADER LINE.
    DATA : col TYPE i.
    DATA : col1 TYPE i.
    FIELD-SYMBOLS :  .
    DATA : fldname(50) TYPE c.
    CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
    EXPORTING
    filename = 'd:def.xls'
    i_begin_col = 1
    i_begin_row = 1
    i_end_col = 100
    i_end_row = 100
    TABLES
    intern = ex
    EXCEPTIONS
    inconsistent_parameters = 1
    upload_ole = 2
    OTHERS = 3.
    BREAK-POINT.
    CALL FUNCTION 'GET_COMPONENT_LIST'
    EXPORTING
    program = sy-repid
    fieldname = 'T001'
    TABLES
    components = cmp.
    LOOP AT ex.
    AT NEW row.
    IF sy-tabix  = ex-value.
    ENDLOOP.
    BREAK-POINT.
    regards,
    amit m.

  • Problem in Function Module "ALSM_EXCEL_TO_INTERNAL_TABLE"

    Dear All,
    In this function module we give the number of end rows to be picked from the excel sheet. So, please tell me what can be the maximum number, currently I have put 4000 end rows.
    Thanx&Reg,
    Nishu

    Hai Nishu
    *& Report ZK_REPORT *
    REPORT ZK_REPORT.
    internal table declarations
    DATA: BEGIN OF ITAB OCCURS 0,
    NAME(20) TYPE C,
    ADDR(20) TYPE C,
    END OF ITAB.
    DATA: ITAB1 LIKE ALSMEX_TABLINE OCCURS 0 WITH HEADER LINE.
    DATA: K1 TYPE I VALUE 1,
    M1 TYPE I VALUE 1,
    K2 TYPE I VALUE 100,
    M2 TYPE I VALUE 9999.
    use FM for uploading data from EXCEL to internal table
    CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
    EXPORTING
    FILENAME = 'C:\book1.xls'
    I_BEGIN_COL = K1
    I_BEGIN_ROW = M1
    I_END_COL = K2
    I_END_ROW = M2
    TABLES
    INTERN = ITAB1
    EXCEPTIONS
    INCONSISTENT_PARAMETERS = 1
    UPLOAD_OLE = 2
    OTHERS = 3
    IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    LOOP AT ITAB1.
    WRITE:/ ITAB1.
    ENDLOOP.
    Thanks & regards
    Sreeni

  • Upload data from excel with vba by calling a function module

    Hello all,
    i have a problem with the function module "ALSM_EXCEL_TO_INTERNAL_TABLE". I will call this function module with vba to load data from excel to sap with a Buttonclick. I have copied this function module and set it remotable. But i can´t call it from excel.
    Can you give me some tips how can i
    upload data from excel with vba by click a button.
    The problem seems the function: call method cl_gui_frontend_services=>clipboard_import in the function module, because when i comment this function call the vba-call is true but no results. 
    How can I call the function module correct with vba?
    Thanks a lot for your tips!!!!
    Chris
    Message was edited by:
            Christoph Kirschner

    HI
    Uploading data directly from Excel file format
    * Upload data direct from excel.xls file to SAP
    REPORT ZEXCELUPLOAD.
    PARAMETERS: filename LIKE rlgrap-filename MEMORY ID M01,
                begcol TYPE i DEFAULT 1 NO-DISPLAY,
                begrow TYPE i DEFAULT 1 NO-DISPLAY,
                endcol TYPE i DEFAULT 100 NO-DISPLAY,
                endrow TYPE i DEFAULT 32000 NO-DISPLAY.
    * Tick don't append header
    PARAMETERS: kzheader AS CHECKBOX.
    DATA: BEGIN OF intern OCCURS 0.
            INCLUDE STRUCTURE  alsmex_tabline.
    DATA: END OF intern.
    DATA: BEGIN OF intern1 OCCURS 0.
            INCLUDE STRUCTURE  alsmex_tabline.
    DATA: END OF intern1.
    DATA: BEGIN OF t_col OCCURS 0,
           col LIKE alsmex_tabline-col,
           size TYPE i.
    DATA: END OF t_col.
    DATA: zwlen TYPE i,
          zwlines TYPE i.
    DATA: BEGIN OF fieldnames OCCURS 3,
            title(60),
            table(6),
            field(10),
            kz(1),
          END OF fieldnames.
    * No of columns
    DATA: BEGIN OF data_tab OCCURS 0,
           value_0001(50),
           value_0002(50),
           value_0003(50),
           value_0004(50),
           value_0005(50),
           value_0006(50),
           value_0007(50),
           value_0008(50),
           value_0009(50),
           value_0010(50),
           value_0011(50),
           value_0012(50),
           value_0013(50),
           value_0014(50),
           value_0015(50),
           value_0016(50),
           value_0017(50),
           value_0018(50),
           value_0019(50),
           value_0020(50),
           value_0021(50),
           value_0022(50),
           value_0023(50),
           value_0024(50),
           value_0025(50),
           value_0026(50),
           value_0027(50),
           value_0028(50),
           value_0029(50),
           value_0030(50),
           value_0031(50),
           value_0032(50),
           value_0033(50),
           value_0034(50),
           value_0035(50),
           value_0036(50),
           value_0037(50),
           value_0038(50),
           value_0039(50),
           value_0040(50),
           value_0041(50),
           value_0042(50),
           value_0043(50),
           value_0044(50),
           value_0045(50),
           value_0046(50),
           value_0047(50),
           value_0048(50),
           value_0049(50),
           value_0050(50),
           value_0051(50),
           value_0052(50),
           value_0053(50),
           value_0054(50),
           value_0055(50),
           value_0056(50),
           value_0057(50),
           value_0058(50),
           value_0059(50),
           value_0060(50),
           value_0061(50),
           value_0062(50),
           value_0063(50),
           value_0064(50),
           value_0065(50),
           value_0066(50),
           value_0067(50),
           value_0068(50),
           value_0069(50),
           value_0070(50),
           value_0071(50),
           value_0072(50),
           value_0073(50),
           value_0074(50),
           value_0075(50),
           value_0076(50),
           value_0077(50),
           value_0078(50),
           value_0079(50),
           value_0080(50),
           value_0081(50),
           value_0082(50),
           value_0083(50),
           value_0084(50),
           value_0085(50),
           value_0086(50),
           value_0087(50),
           value_0088(50),
           value_0089(50),
           value_0090(50),
           value_0091(50),
           value_0092(50),
           value_0093(50),
           value_0094(50),
           value_0095(50),
           value_0096(50),
           value_0097(50),
           value_0098(50),
           value_0099(50),
           value_0100(50).
    DATA: END OF data_tab.
    DATA: tind(4) TYPE n.
    DATA: zwfeld(19).
    FIELD-SYMBOLS: <fs1>.
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR filename.
      CALL FUNCTION 'KD_GET_FILENAME_ON_F4'
           EXPORTING
                mask      = '*.xls'
                static    = 'X'
           CHANGING
                file_name = filename.
    START-OF-SELECTION.
      CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
           EXPORTING
                filename                = filename
                i_begin_col             = begcol
                i_begin_row             = begrow
                i_end_col               = endcol
                i_end_row               = endrow
           TABLES
                intern                  = intern
           EXCEPTIONS
                inconsistent_parameters = 1
                upload_ole              = 2
                OTHERS                  = 3.
      IF sy-subrc <> 0.
        WRITE:/ 'Upload Error ', SY-SUBRC.
      ENDIF.
    END-OF-SELECTION.
      LOOP AT intern.
        intern1 = intern.
        CLEAR intern1-row.
        APPEND intern1.
      ENDLOOP.
      SORT intern1 BY col.
      LOOP AT intern1.
        AT NEW col.
          t_col-col = intern1-col.
          APPEND t_col.
        ENDAT.
        zwlen = strlen( intern1-value ).
        READ TABLE t_col WITH KEY col = intern1-col.
        IF sy-subrc EQ 0.
          IF zwlen > t_col-size.
            t_col-size = zwlen.
    *                          Internal Table, Current Row Index
            MODIFY t_col INDEX sy-tabix.
          ENDIF.
        ENDIF.
      ENDLOOP.
      DESCRIBE TABLE t_col LINES zwlines.
      SORT intern BY row col.
      IF kzheader = 'X'.
        LOOP AT intern.
          fieldnames-title = intern-value.
          APPEND fieldnames.
          AT END OF row.
            EXIT.
          ENDAT.
        ENDLOOP.
      ELSE.
        DO zwlines TIMES.
          WRITE sy-index TO fieldnames-title.
          APPEND fieldnames.
        ENDDO.
      ENDIF.
      SORT intern BY row col.
      LOOP AT intern.
        IF kzheader = 'X'
        AND intern-row = 1.
          CONTINUE.
        ENDIF.
        tind = intern-col.
        CONCATENATE 'DATA_TAB-VALUE_' tind INTO zwfeld.
        ASSIGN (zwfeld) TO <fs1>.
        <fs1> = intern-value.
        AT END OF row.
          APPEND data_tab.
          CLEAR data_tab.
        ENDAT.
      ENDLOOP.
      CALL FUNCTION 'DISPLAY_BASIC_LIST'
           EXPORTING
                file_name     = filename
           TABLES
                data_tab      = data_tab
                fieldname_tab = fieldnames.
    *-- End of Program
    <b>Excel Upload Alternative - KCD_EXCEL_OLE_TO_INT_CONVERT</b>
    *Title : Excel Uploading
    TYPES:   BEGIN OF t_datatab,
             col1(25)  TYPE c,
             col2(30)  TYPE c,
             col3(30)  TYPE c,
             col4(30)  TYPE c,
             col5(30)  TYPE c,
             col6(30)  TYPE c,
             col7(30) TYPE c,
             col8(30)  TYPE c,
             col9(30)  TYPE c,
             col10(30)  TYPE c,
             col11(30)    TYPE c,
           END OF t_datatab.
    DATA: it_datatab TYPE STANDARD TABLE OF t_datatab INITIAL SIZE 0,
          wa_datatab TYPE t_datatab.
    Data : p_table type t_datatab occurs 0 with header line.
    DATA : gd_scol   TYPE i VALUE '1',
           gd_srow   TYPE i VALUE '1',
           gd_ecol   TYPE i VALUE '256',
           gd_erow   TYPE i VALUE '65536'.
    DATA: it_tab TYPE filetable,
          gd_subrc TYPE i.
    field-symbols : <fs>.
    *Selection screen definition
    SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
    PARAMETERS:  p_file LIKE rlgrap-filename
                   DEFAULT 'c:test.xls' OBLIGATORY.   " File Name
    SELECTION-SCREEN END OF BLOCK b1.
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
      REFRESH: it_tab.
      CALL METHOD cl_gui_frontend_services=>file_open_dialog
        EXPORTING
          window_title     = 'Select File'
          default_filename = '*.xls'
          multiselection   = ' '
        CHANGING
          file_table       = it_tab
          rc               = gd_subrc.
      LOOP AT it_tab INTO p_file.
    *    so_fpath-sign = 'I'.
    *    so_fpath-option = 'EQ'.
    *    append so_fpath.
      ENDLOOP.
    START-OF-SELECTION.
      PERFORM upload_excel_file TABLES   it_datatab
                                 USING   p_file
                                         gd_scol
                                         gd_srow
                                         gd_ecol
                                         gd_erow.
    * END-OF-SELECTION.
    END-OF-SELECTION.
      LOOP AT it_datatab INTO wa_datatab.
        WRITE:/ wa_datatab-col1,
                wa_datatab-col2,
                wa_datatab-col3,
                wa_datatab-col4,
                wa_datatab-col5,
                wa_datatab-col6,
                wa_datatab-col7,
                wa_datatab-col8,
                wa_datatab-col9,
                wa_datatab-col10,
                wa_datatab-col11.
      ENDLOOP.
    *&      Form  UPLOAD_EXCEL_FILE
    *       upload excel spreadsheet into internal table
    *      -->P_TABLE    Table to return excel data into
    *      -->P_FILE     file name and path
    *      -->P_SCOL     start column
    *      -->P_SROW     start row
    *      -->P_ECOL     end column
    *      -->P_EROW     end row
    FORM upload_excel_file TABLES   p_table
                           USING    p_file
                                    p_scol
                                    p_srow
                                    p_ecol
                                    p_erow.
      DATA : lt_intern TYPE  kcde_cells OCCURS 0 WITH HEADER LINE.
    * Has the following format:
    *             Row number   | Colum Number   |   Value
    *      i.e.     1                 1             Name1
    *               2                 1             Joe
      DATA : ld_index TYPE i.
    * Note: Alternative function module - 'ALSM_EXCEL_TO_INTERNAL_TABLE'
      CALL FUNCTION 'KCD_EXCEL_OLE_TO_INT_CONVERT'
        EXPORTING
          filename                = p_file
          i_begin_col             = p_scol
          i_begin_row             = p_srow
          i_end_col               = p_ecol
          i_end_row               = p_erow
        TABLES
          intern                  = LT_INTERN
        EXCEPTIONS
          inconsistent_parameters = 1
          upload_ole              = 2
          OTHERS                  = 3.
      IF sy-subrc <> 0.
        FORMAT COLOR COL_BACKGROUND INTENSIFIED.
        WRITE:/ 'Error Uploading file'.
        EXIT.
      ENDIF.
      IF lt_intern[] IS INITIAL.
        FORMAT COLOR COL_BACKGROUND INTENSIFIED.
        WRITE:/ 'No Data Uploaded'.
        EXIT.
      ELSE.
        SORT lt_intern BY row col.
        LOOP AT lt_intern.
         MOVE lt_intern-col TO ld_index.
         assign component ld_index of structure
         p_table to <fs>.
    move : lt_intern-value to <fs>.
    *     MOVE lt_intern-value TO p_table.
          AT END OF row.
            APPEND p_table.
            CLEAR p_table.
          ENDAT.
        ENDLOOP.
      ENDIF.
    ENDFORM.                    "UPLOAD_EXCEL_FILE
    Regards
    Pavan

  • How can i get currency values from flatfile to function module

    Dear All,
               I have to take  currency values from flat file and i have to assign those flat file value to function module .
    Eg: "Convert_to_local_currency".  I need technical code how to calculate those amount in work area and how to assign those amount value function module. 
              I need sample program for currency conversion from flat file to function module.  My requirement is based on flat file amount i have to calculate in work area and assign those work area to function module. 
    With Regards,
    Baskaran

    Hi Satish or Baskaran,
    First conform in which format the flat file is present, as abhi mentioned if it is there in notepad
    try to use F.M GUI_UPLOAD as shown below...
    CALL FUNCTION 'GUI_UPLOAD'
      EXPORTING
    FILENAME = 'C:\Desktop\rpf1.TXT'
    TABLES
    DATA_TAB =  ITAB.
    Now loop at ITAB Into Work_area and press the respect currency fields which you want and in the same way
    if the file is in EXCEL format use F.M ALSM_EXCEL_TO_INTERNAL_TABLE
    CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
        EXPORTING
          filename = P_FNAME
          i_begin_col = 1
          i_begin_row = 1
        TABLES
          intern = ITAB
    LOOP AT ITAB INTO WA.
    CALL FUNCTION 'CONVERT_TO_LOCAL_CURRENCY'
            EXPORTING
              foreign_currency = wa-waers
              local_currency   = wa-waers
               IMPORTING
              local_amount     = tvals-gross.
        ENDIF.
    endloop.
    And as mentioned loop the records into work area and process the currenct field which is present in the
    ITAB according to its field name. And make sure within the loop you call your function module.
    Regards
    VEnk@
    Edited by: Venkat Reddy on Dec 9, 2009 5:51 PM

  • Error while using the function module GUI_UPLOAD

    Hi,
    My requirement is to upload the data from .txt file into internal table.
    I have given my code like this
    PARAMETERS: p_fname LIKE rlgrap-filename.
    data: begin of gt_string occurs 0,
           record type char255,
          end of gt_string.
    AT SELECTION-SCREEN ON VALUE-REQUEST for p_fname.
      CALL FUNCTION 'KD_GET_FILENAME_ON_F4'
       EXPORTING
        PROGRAM_NAME        = SYST-REPID
        DYNPRO_NUMBER       = SYST-DYNNR
        FIELD_NAME          = ' '
         STATIC              = 'X'
        MASK                = ' '
        CHANGING
          file_name           = p_fname
       EXCEPTIONS
         MASK_TOO_LONG       = 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.
      CALL FUNCTION 'GUI_UPLOAD'
        EXPORTING
          filename                      = p_fname
         FILETYPE                      = 'ASC'
         HAS_FIELD_SEPARATOR           = 'X'
         HEADER_LENGTH                 = 0
        READ_BY_LINE                  = 'X'
        DAT_MODE                      = ' '
        CODEPAGE                      = ' '
        IGNORE_CERR                   = ABAP_TRUE
        REPLACEMENT                   = '#'
        CHECK_BOM                     = ' '
        NO_AUTH_CHECK                 = ' '
      IMPORTING
        FILELENGTH                    =
        HEADER                        =
        tables
          data_tab                      = gt_string
       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
      IF sy-subrc <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    Here I am getting dump error as 'Type conflict when calling a function module.
    The function module interface allows you to specify only fields
    of a particular type under "FILENAME". The field "P_FNAME" specified here has a different field type'.
    What would be the reason for this error?
    Can anyone help me?
    Regards,
    Hema

    see this sample program for F4 help
    *& Report  ZSD_EXCEL_INT_APP
    REPORT  ZSD_EXCEL_INT_APP.
    parameter: file_nm type localfile.
    types : begin of it_tab1,
            f1(20),
            f2(40),
            f3(20),
           end of it_tab1.
    data : it_tab type table of ALSMEX_TABLINE with header line,
           file type rlgrap-filename.
    data : it_tab2 type it_tab1 occurs 1,
           wa_tab2 type it_tab1,
           w_message(100)  TYPE c.
    at selection-screen on value-request for file_nm.
    CALL FUNCTION 'KD_GET_FILENAME_ON_F4'
    EXPORTING
      PROGRAM_NAME        = SYST-REPID
      DYNPRO_NUMBER       = SYST-DYNNR
      FIELD_NAME          = ' '
       STATIC              = 'X'
      MASK                = ' '
      CHANGING
       file_name           = file_nm
    EXCEPTIONS
       MASK_TOO_LONG       = 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.
    start-of-selection.
    refresh it_tab2[].clear wa_tab2.
    file = file_nm.
    CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
      EXPORTING
        filename                      = file
        i_begin_col                   = '1'
        i_begin_row                   =  '1'
        i_end_col                     = '10'
        i_end_row                     = '35'
      tables
        intern                        = it_tab
    EXCEPTIONS
       INCONSISTENT_PARAMETERS       = 1
       UPLOAD_OLE                    = 2
       OTHERS                        = 3
    IF sy-subrc <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
             WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    loop at it_tab.
      case it_tab-col.
       when '002'.
        wa_tab2-f1 = it_tab-value.
       when '004'.
        wa_tab2-f2 = it_tab-value.
      when '008'.
        wa_tab2-f3 = it_tab-value.
    endcase.
    at end of row.
      append wa_tab2 to it_tab2.
    clear wa_tab2.
      endat.
    endloop.
    data : p_file TYPE  rlgrap-filename value 'TEST3.txt'.
    OPEN DATASET p_file FOR OUTPUT IN TEXT MODE ENCODING DEFAULT.
    *--- Display error messages if any.
      IF sy-subrc NE 0.
        MESSAGE e001(zsd_mes).
        EXIT.
      ELSE.
    *---Data is downloaded to the application server file path
        LOOP AT it_tab2 INTO wa_tab2.
          TRANSFER wa_tab2 TO p_file.
        ENDLOOP.
      ENDIF.
    *--Close the Application server file (Mandatory).
      CLOSE DATASET p_file.
    loop at it_tab2 into wa_tab2.
      write : / wa_tab2-f1,wa_tab2-f2,wa_tab2-f3.
    endloop.

  • Function module to get data into internal table from Excel file sheets

    Hi,
    I have to upload customers from excel file.
    we are donloading customer data excel file sheets.
    Customer data in 1 sheet, tax data the other sheet of same excel file, Customer master-Credit data in other sheet of same excel file.
    so i have 3-4 sheet in one excel file.
    now my requirement is to get the data from excel file into internal table.
    is there any function module.
    Thanks & Regards

    I am sending you the idea with an example how you can upload data from an EXCEL file into an internal table. I am not sure if you can take data from different sheet in the same EXCEL file. I think that this is not possible (try it )
    Upload the data into an internal table, like the way that I am describing in the above:
      DATA: L_MAX_COL_NB TYPE I.
      DATA: l_file_name LIKE RLGRAP-FILENAME.
    Just to be sure that is the correct type for the FM.
      l_file_name = P_FILE_NAME.
      L_MAX_COL_NB = 58.  "Maximum nb of colums that the FM can read.
      CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
           EXPORTING
                FILENAME                = l_file_name
                I_BEGIN_COL             = 1
                I_BEGIN_ROW             = 2
                I_END_COL               = L_MAX_COL_NB
                I_END_ROW               = 9999
           TABLES
                INTERN                  = PT_EXCEL
           EXCEPTIONS
                INCONSISTENT_PARAMETERS = 1
                UPLOAD_OLE              = 2
                OTHERS                  = 3.
      IF SY-SUBRC <> 0.
      ENDIF.
    Now you should upload the data into your own itab. The Function Module will return to you all the an itab
    from all fields and columns. Define the structure of the uploading file into SE11 - Data Dictionary. Then read the fieldcatalog of this structure. In the code that I am sending to you, I am insearting an empty line into the internal table and then I am assigning this line into a corresponding field-symbol. Then I am able to change the working area - so and the line of the itab. Propably you could you the statement APPEND INITIAL LINE TO (your_table_name) ASSIGNING <your_field_symbol>, but the example was written in an old SAP version.
      FIELD-SYMBOLS:
                     <F_REC> LIKE WA_UPLOAD_FILE,      "working are of the uploading file
                     <F_FIELD> TYPE ANY.
      DATA: COLUMN_INT TYPE I,
            C_FIELDNAME(30) TYPE C.
      PERFORM GET_FIELDCATOLG TABLES FIELDCAT
                               USING 'ZECO_CHARALAMBOUS_FILE'.
      LOOP AT PT_EXCEL.
        AT NEW ROW.
          ASSIGN WA_UPLOAD_FILE TO <F_REC>.
        ENDAT.
        COLUMN_INT = PT_EXCEL-COL.
        READ TABLE FIELDCAT INTO WA_FIELDCAT INDEX COLUMN_INT.
        CONCATENATE '<F_REC>-' WA_FIELDCAT-FIELDNAME INTO C_FIELDNAME.
        ASSIGN (C_FIELDNAME) TO <F_FIELD>.
        <F_FIELD> = PT_EXCEL-VALUE.
        AT END OF ROW.
          APPEND WA_UPLOAD_FILE TO GT_UPLOAD_FILE.
          CLEAR WA_UPLOAD_FILE.
        ENDAT.
      ENDLOOP.
    With Regards
    George
    Edited by: giorgos michaelaris on Mar 4, 2010 3:44 PM

  • What's the difference between FM 'UPLOAD' and FM 'ALSM_EXCEL_TO_INTERNAL_T'

    What's the difference between FM 'UPLOAD' and FM 'ALSM_EXCEL_TO_INTERNAL_TABLE'
    thanks!

    hi,
    Generally FM 'ALSM_EXCEL_TO_INTERNAL_TABLE'  is used for reading Excel sheet i.e, either row wise or column wise . where as WS_UPLOAD will read the entire data in to an internal table in a file format.
    for illustration as how it is used check this out
    PARAMETER p_infile like rlgrap-filename.
    *START OF SELECTION
    call function 'ALSM_EXCEL_TO_INTERNAL_TABLE'
           exporting
                filename                = p_infile
                i_begin_col             = '1'
                i_begin_row             = '2'  "Do not require headings
                i_end_col               = '14'
                i_end_row               = '31'
           tables
                intern                  = itab
           exceptions
                inconsistent_parameters = 1
                upload_ole              = 2
                others                  = 3.
      if sy-subrc <> 0.
        message e010(zz) with text-001. "Problem uploading Excel Spreadsheet
      endif.
    http://www.sapdevelopment.co.uk/file/file_upexcelalt2.htm
      CALL FUNCTION 'GUI_UPLOAD'
        EXPORTING
          filename                = gd_file
          has_field_separator     = 'X'  "file is TAB delimited
        TABLES
          data_tab                = it_record
        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.
        IF sy-subrc NE 0.
          write: 'Error ', sy-subrc, 'returned from GUI_UPLOAD FM'.
          skip.
        endif.
    http://www.sapdevelopment.co.uk/file/file_uptabpc.htm
    Regards,
    Santosh

  • Function module description

    Is there any website link where I can get information about all the functions used in ABAP...
    EX: I want to know the export,import,...parametes of the function "ALSM_EXCEL_TO_INTERNAL_TABLE"....?

    hi
    link for list of FMs
    its very helpful check this out
    http://www.sapbrainsonline.com/REFERENCES/FunctionModules/SAP_function_modules_list.html
    check this prog donot forget to prepare a flat file
    TYPES: BEGIN OF ty_mara,
             matnr LIKE mara-matnr,
             mbrsh LIKE mara-mbrsh,
             mtart LIKE mara-mtart,
             maktx LIKE makt-maktx,
             meins LIKE mara-meins,
          END OF ty_mara.
    DATA: it_mara TYPE table of ty_mara WITH HEADER LINE.
    parameters : p_file like RLGRAP-FILENAME.
    data : itab type table of ALSMEX_TABLINE WITH HEADER LINE.
    start-of-selection.
    CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
      EXPORTING
        filename                      = p_file
        i_begin_col                   = 1
        i_begin_row                   = 1
        i_end_col                     = 5
        i_end_row                     = 4
      tables
        intern                        = itab.
    loop at itab.
      CASE ITAB-COL.
        WHEN '1'.
          it_mara-matnr = ITAB-VALUE.
        WHEN '2'.
         it_mara-mbrsh = ITAB-VALUE.
        WHEN '3'.
          it_mara-mbrsh = ITAB-VALUE.
        WHEN '4'.
         it_mara-maktx  = ITAB-VALUE.
        WHEN '5'.
          it_mara-meins = ITAB-VALUE.
      ENDCASE.
    AT END OF ROW.
      APPEND it_mara.
      CLEAR it_mara.
    ENDAT.
      endloop.
    Edited by: prasanth kasturi on Jun 12, 2008 3:01 PM

  • Excel to internal table upload 'ALSM_EXCEL_TO_INTERNAL_TABLE' issue

    I am using ALSM_EXCEL_TO_INTERNAL_TABLE function module to upload the excel into an internal table. In case there is a column with no data. This function module is still populating the previous row data into the internal table
    Ex. if the Excel has data like the below 3 rows and 3 columns
    1                   10                5.0
                         20   
    2                                       6.0
    The internal table is posting data like this
    1                  10               5.0
    1                  20               5.0
    2                  20               6.0
    Please tell me if i am missing something to be added in the below snip of code
    CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
        EXPORTING
          FILENAME                = p_file
          I_BEGIN_COL             = B1
          I_BEGIN_ROW             = C1
          I_END_COL               = B2
          I_END_ROW               = C2
        TABLES
          INTERN                  = IT_upload
        EXCEPTIONS
          INCONSISTENT_PARAMETERS = 1
          UPLOAD_OLE              = 2
          OTHERS                  = 3.
      IF SY-SUBRC = 0.
      ENDIF.
      LOOP AT IT_upload.
        CASE IT_Upload-COL.
          WHEN 1.
            IT_Excel-BILLCO = IT_Upload-VALUE.
          WHEN 2.
            IT_Excel-PONUM = IT_Upload-VALUE.
          WHEN 3.
            CLEAR v_upload.
            CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
              EXPORTING
                INPUT  = IT_upload-value
              IMPORTING
                OUTPUT = v_upload.
            IT_Excel-STORENUM = v_upload.
          WHEN 4.
            IT_Excel-VINVNUM = IT_Upload-VALUE.
          WHEN 5.
            IT_Excel-LINEITNUM = IT_Upload-VALUE.
          WHEN 6.
            IT_Excel-LINEITAMT = IT_upload-VALUE.
          WHEN 7.
            IT_Excel-TAXAMT = IT_upload-VALUE.
          WHEN 8.
            IT_Excel-TOTAL = IT_upload-VALUE.
        ENDCASE.
        AT END OF ROW.
          APPEND IT_Excel.
        ENDAT.
      ENDLOOP.

    Hi,
    Please check below link. surely it will help u.
    http://wiki.sdn.sap.com/wiki/pages/viewpage.action?pageId=60655105
    Thanks
    Jitendra

  • 'ALSM_EXCEL_TO_INTERNAL_TABLE  issue

    Hi
    I tried below fm to download data. But sy-subrc value is 2
    pls help me
    CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
      EXPORTING
        filename                      =  p_pcfile
        i_begin_col                   = 1
        i_begin_row                   = 2
        i_end_col                     = 255
        i_end_row                     = 65000
      tables
        intern                        = it_material
    EXCEPTIONS
       INCONSISTENT_PARAMETERS       = 1
       UPLOAD_OLE                    = 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.

    hi,
    Check out the file format and the path ...Refer the below path for a piece of code for reference
    http://www.sapdev.co.uk/file/file_upexcelalt2.htm
    Regards,
    Santosh

  • FM 'ALSM_EXCEL_TO_INTERNAL_TABLE'  Problem ..

    i use the FM 'ALSM_EXCEL_TO_INTERNAL_TABLE' .
    My only and strange problem is that when i execute the report i take the notification that i must save my excel file !!!!
    I don't open the file for writing !!!! Look my code to see what happens ...
    REPORT YDP_EXAG_TRAP .
    TYPE-POOLS TRUXS.
    TABLES : YREPORTS.
    DATA: BEGIN OF ITAB OCCURS 0 ,
             REPORTNR   LIKE YREPORTS-REPORTNR,
             SALESMAN   LIKE YREPORTS-SALESMAN,
             TITLE      LIKE YREPORTS-TITLE,
             REPCAT     LIKE YREPORTS-REPCAT,
             CDATE      LIKE YREPORTS-CDATE,
             TR_DATE    LIKE YREPORTS-TR_DATE,
             VI_DATE    LIKE YREPORTS-VI_DATE,
             SOFIA      LIKE YREPORTS-SOFIA,
             SOF_HAL    LIKE YREPORTS-SOF_HAL,
             FILENAME   LIKE YREPORTS-FILENAME,
             LAND1      LIKE YREPORTS-LAND1,
             KUNNR      LIKE YREPORTS-KUNNR,
             TR_DATE1   LIKE YREPORTS-TR_DATE1,
             NEW_CUST   LIKE YREPORTS-NEW_CUST,
             RADIO,
           END OF ITAB.
    DATA:   W_CHK LIKE ALSMEX_TABLINE-VALUE.
    DATA :  MYITAB LIKE TABLE OF ALSMEX_TABLINE WITH HEADER LINE.
    *DATA : MYITAB LIKE ALSMEX_TABLINE OCCURS 0 WITH HEADER LINE.
    PARAMETERS : S_FILE LIKE RLGRAP-FILENAME.
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_FILE.
      CALL FUNCTION 'KD_GET_FILENAME_ON_F4'
        EXPORTING
          STATIC    = 'X'
        CHANGING
          FILE_NAME = S_FILE.
    START-OF-SELECTION.
      CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
        EXPORTING
          FILENAME                = S_FILE
          I_BEGIN_COL             = 1
          I_BEGIN_ROW             = 1
          I_END_COL               = 19
          I_END_ROW               = 19
        TABLES
          INTERN                  = MYITAB
        EXCEPTIONS
          INCONSISTENT_PARAMETERS = 1
          UPLOAD_OLE              = 2
          OTHERS                  = 3.
      IF SY-SUBRC <> 0.
    * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
      LOOP AT MYITAB.
        CASE MYITAB-ROW.
          WHEN '2'.
            CASE MYITAB-COL.
              WHEN '1'.
                MOVE MYITAB-VALUE TO ITAB-REPORTNR.
              WHEN '3'.
                MOVE MYITAB-VALUE TO ITAB-SALESMAN.
              WHEN '7'.
                MOVE MYITAB-VALUE TO ITAB-TITLE.
            ENDCASE.
          WHEN '7'.
            CASE MYITAB-COL.
              WHEN '1'.
                MOVE MYITAB-VALUE TO ITAB-CDATE.
              WHEN '6'.
                MOVE MYITAB-VALUE TO ITAB-REPCAT.
            ENDCASE.
          WHEN '10'.
            CASE MYITAB-COL.
              WHEN '1'.
                MOVE MYITAB-VALUE TO ITAB-TR_DATE.
              WHEN '6'.
                MOVE MYITAB-VALUE TO ITAB-REPCAT.
            ENDCASE.
          WHEN '13'.
            CASE MYITAB-COL.
              WHEN '1'.
                MOVE MYITAB-VALUE TO ITAB-TR_DATE1.
            ENDCASE.
          WHEN '14'.
            CASE MYITAB-COL.
              WHEN '1'.
                MOVE MYITAB-VALUE TO ITAB-TR_DATE1.
              WHEN '4'.
                MOVE MYITAB-VALUE TO W_CHK.
            ENDCASE.
          WHEN '19'.
            CASE MYITAB-COL.
              WHEN '1'.
                MOVE MYITAB-VALUE TO ITAB-NEW_CUST.
            ENDCASE.
        ENDCASE.
      ENDLOOP.
      APPEND ITAB.
    END-OF-SELECTION.
    Please help ....
    Points will be rewarded .....

    REPORT YDP_EXAG_TRAP .
    TYPE-POOLS TRUXS.
    TABLES : YREPORTS.
    DATA: BEGIN OF ITAB OCCURS 0 ,
             REPORTNR   LIKE YREPORTS-REPORTNR,
             SALESMAN   LIKE YREPORTS-SALESMAN,
             TITLE      LIKE YREPORTS-TITLE,
             REPCAT     LIKE YREPORTS-REPCAT,
             CDATE      LIKE YREPORTS-CDATE,
             TR_DATE    LIKE YREPORTS-TR_DATE,
             VI_DATE    LIKE YREPORTS-VI_DATE,
             SOFIA      LIKE YREPORTS-SOFIA,
             SOF_HAL    LIKE YREPORTS-SOF_HAL,
             FILENAME   LIKE YREPORTS-FILENAME,
             LAND1      LIKE YREPORTS-LAND1,
             KUNNR      LIKE YREPORTS-KUNNR,
             TR_DATE1   LIKE YREPORTS-TR_DATE1,
             NEW_CUST   LIKE YREPORTS-NEW_CUST,
             RADIO,
           END OF ITAB.
    DATA:   W_CHK LIKE ALSMEX_TABLINE-VALUE.
    DATA :  MYITAB LIKE TABLE OF ALSMEX_TABLINE WITH HEADER LINE.
    *DATA : MYITAB LIKE ALSMEX_TABLINE OCCURS 0 WITH HEADER LINE.
    PARAMETERS : S_FILE LIKE RLGRAP-FILENAME.
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_FILE.
      CALL FUNCTION 'KD_GET_FILENAME_ON_F4'
        EXPORTING
          STATIC    = 'X'
        CHANGING
          FILE_NAME = S_FILE.
    START-OF-SELECTION.
      CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
        EXPORTING
          FILENAME                = S_FILE
          I_BEGIN_COL             = 1
          I_BEGIN_ROW             = 1
          I_END_COL               = 19
          I_END_ROW               = 19
        TABLES
          INTERN                  = MYITAB
        EXCEPTIONS
          INCONSISTENT_PARAMETERS = 1
          UPLOAD_OLE              = 2
          OTHERS                  = 3.
      IF SY-SUBRC <> 0.
    * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
      LOOP AT MYITAB.
        CASE MYITAB-ROW.
          WHEN '2'.
            CASE MYITAB-COL.
              WHEN '1'.
                MOVE MYITAB-VALUE TO ITAB-REPORTNR.
              WHEN '3'.
                MOVE MYITAB-VALUE TO ITAB-SALESMAN.
              WHEN '7'.
                MOVE MYITAB-VALUE TO ITAB-TITLE.
            ENDCASE.
          WHEN '7'.
            CASE MYITAB-COL.
              WHEN '1'.
                MOVE MYITAB-VALUE TO ITAB-CDATE.
              WHEN '6'.
                MOVE MYITAB-VALUE TO ITAB-REPCAT.
            ENDCASE.
          WHEN '10'.
            CASE MYITAB-COL.
              WHEN '1'.
                MOVE MYITAB-VALUE TO ITAB-TR_DATE.
              WHEN '6'.
                MOVE MYITAB-VALUE TO ITAB-REPCAT.
            ENDCASE.
          WHEN '13'.
            CASE MYITAB-COL.
              WHEN '1'.
                MOVE MYITAB-VALUE TO ITAB-TR_DATE1.
            ENDCASE.
          WHEN '14'.
            CASE MYITAB-COL.
              WHEN '1'.
                MOVE MYITAB-VALUE TO ITAB-TR_DATE1.
              WHEN '4'.
                MOVE MYITAB-VALUE TO W_CHK.
            ENDCASE.
          WHEN '19'.
            CASE MYITAB-COL.
              WHEN '1'.
                MOVE MYITAB-VALUE TO ITAB-NEW_CUST.
            ENDCASE.
        ENDCASE.
      ENDLOOP.
      APPEND ITAB.
      LOOP AT ITAB.
        CLEAR YREPORTS.
        SELECT SINGLE * FROM YREPORTS WHERE REPORTNR = ITAB-REPORTNR.
        IF SY-SUBRC = 4.
          MOVE-CORRESPONDING ITAB TO YREPORTS.
          IF W_CHK = 'TRUE'.
            MOVE 'X' TO YREPORTS-SOFIA.
          ENDIF.
          INSERT YREPORTS.
        ELSE.
          CALL FUNCTION 'POPUP_TO_DISPLAY_TEXT'
            EXPORTING
              TITEL        = '&#924;&#919;&#925;&#933;&#924;&#913; &#923;&#913;&#920;&#927;&#933;&#931; ...... '
              TEXTLINE1    = '&#919; &#917;&#915;&#915;&#929;&#913;&#934;&#919; &#919;&#916;&#919; &#933;&#928;&#913;&#929;&#935;&#917;&#921; !!!!!!'
              TEXTLINE2    = '&#913;&#923;&#923;&#913;&#926;&#932;&#917; &#932;&#919;&#925; &#917;&#915;&#915;&#929;&#913;&#934;&#919; &#931;&#932;&#927; EXCEL &#915;&#921;&#913; &#925;&#913; &#931;&#933;&#925;&#917;&#935;&#921;&#931;&#917;&#932;&#917; ....'
              START_COLUMN = 25
              START_ROW    = 6.
        ENDIF.
      ENDLOOP.
    END-OF-SELECTION.

  • Service fields problem in BAPI_PO_CREATE1 function

    hi all,
    I have a problem when I use BAPI_PO_CREATE1 to create a Purchasing order.
    I want to create a service PO in the system ( R3 4.6C ) .  I have the data from our key user and I can create PO sucessfully manually. But when using BAPI, It alway occurs a error.
    I use POSERVICE Structure, But i have NO idea about which field is MUST, Is there anyone have an example about these service PO??
    Any suggestion is helpful and thanks in advance.
    Regards
    Ned

    hi,
    WELCOME TO SDN.
    use this program for creating service po's using bapi.
    *& Report  ZMM_PO_CREATE1                                              *
    REPORT  ZMM_PO_CREATE1                          .
    data : POHEADER like BAPIMEPOHEADER occurs 0 with header line,
           POHEADERX like BAPIMEPOHEADERX occurs 0 with header line,
           POITEM like BAPIMEPOITEM occurs 0 with header line,
           POITEMX like BAPIMEPOITEMX occurs 0 with header line,
           POESLLC like BAPIESLLC occurs 0 with header line,
           POACCOUNT like BAPIMEPOACCOUNT occurs 0 with header line,
           POACCOUNTX like BAPIMEPOACCOUNTX occurs 0 with header line,
           POCONDHEADER like BAPIMEPOCONDHEADER occurs 0 with header line,
           POCONDHEADERX like BAPIMEPOCONDHEADERX occurs 0 with header line,
           POCOND like BAPIMEPOCOND occurs 0 with header line,
           RETURN like BAPIRET2 occurs 0 with header line.
    data : po_no(10).
    data : begin of it_head occurs 0,
           ref(10),
           bsart like ekko-bsart,
           lifnr like ekko-lifnr,
           ekorg like ekko-ekorg,
           ekgrp like ekko-ekgrp,
           bukrs like ekko-bukrs,
           verkf like ekko-verkf,
           telf1 like ekko-telf1,
           ihrez like ekko-ihrez,
           unsez like ekko-unsez,
           kdatb(10),
           kdate(10),
           end of it_head.
    data : begin of it_det occurs 0,
           ref(10),
           knttp like ekpo-knttp,
           pstyp like ekpo-pstyp,
           txz01 like ekpo-txz01,
           matkl like ekpo-matkl,
           werks like ekpo-werks,
           afnam like ekpo-afnam,
           ktext1 like esll-ktext1,
           srvpos like esll-srvpos,
           frmval1 like esll-frmval1,
           frmval2 like esll-frmval2,
           menge like esll-menge,
           kostl like eskn-kostl,
           sakto like eskn-sakto,
           zzcode like eskn-zzcode,
           kbetr like konv-kbetr,
           end of it_det.
    data : c_col1 TYPE i VALUE '0001',
           c_col2 TYPE i VALUE '0002',
           c_col3 TYPE i VALUE '0003',
           c_col4 TYPE i VALUE '0004',
           c_col5 TYPE i VALUE '0005',
           c_col6 TYPE i VALUE '0006',
           c_col7 TYPE i VALUE '0007',
           c_col8 TYPE i VALUE '0008',
           c_col9 TYPE i VALUE '0009',
           c_col10 TYPE i VALUE '0010',
           c_col11 TYPE i VALUE '0011',
           c_col12 TYPE i VALUE '0012',
           c_col13 TYPE i VALUE '0013',
           c_col14 TYPE i VALUE '0014',
           c_col15 TYPE i VALUE '0015',
           c_col16 TYPE i VALUE '0016'.
    data : v_currentrow type i,
           v_currentrow1 type i.
    data : itab_head like ALSMEX_TABLINE occurs 0 with header line,
           itab_det like ALSMEX_TABLINE occurs 0 with header line.
    data : file_head type RLGRAP-FILENAME,
           file_item type RLGRAP-FILENAME.
    file_head = 'C:\Documents and Settings\Desktop\head.xls'.
    file_item = 'C:\Documents and Settings\Desktop\item.xls'.
    CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
      EXPORTING
        filename                      = file_head
        i_begin_col                   = 1
        i_begin_row                   = 1
        i_end_col                     = 12
        i_end_row                     = 50
      tables
        intern                        = itab_head
    EXCEPTIONS
      INCONSISTENT_PARAMETERS       = 1
      UPLOAD_OLE                    = 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 'ALSM_EXCEL_TO_INTERNAL_TABLE'
      EXPORTING
        filename                      = file_item
        i_begin_col                   = 1
        i_begin_row                   = 1
        i_end_col                     = 16
        i_end_row                     = 50
      tables
        intern                        = itab_det
    EXCEPTIONS
      INCONSISTENT_PARAMETERS       = 1
      UPLOAD_OLE                    = 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.
    IF itab_head[] IS INITIAL.
       WRITE:/ 'No Header Data  Exists '.
       STOP.
    ELSE.
    sort itab_head by row col.
    read table itab_head index 1.
    v_currentrow = itab_head-row.
    loop at itab_head.
    if itab_head-row ne v_currentrow.
       APPEND it_head.
       v_currentrow = itab_head-row.
       ENDIF.
    CASE itab_head-col.
            WHEN  c_col1.
              it_head-ref = itab_head-value.
            WHEN  c_col2.
              it_head-bsart = itab_head-value.
            WHEN c_col3.
              it_head-lifnr = itab_head-value.
            WHEN c_col4.
              it_head-ekorg = itab_head-value.
            WHEN c_col5.
              it_head-ekgrp = itab_head-value.
            WHEN c_col6.
              it_head-bukrs = itab_head-value.
            WHEN c_col7.
              it_head-verkf = itab_head-value.
            WHEN c_col8.
              it_head-telf1 = itab_head-value.
            WHEN c_col9.
              it_head-ihrez = itab_head-value.
            WHEN c_col10.
              it_head-unsez = itab_head-value.
            WHEN c_col11.
              it_head-kdatb = itab_head-value.
            WHEN c_col12.
              it_head-kdate = itab_head-value.
    ENDCASE.
    ENDLOOP.
    APPEND it_head.
    CLEAR it_head.
    ENDIF.
    IF itab_det[] IS INITIAL.
       WRITE:/ 'No Item Data  Exists '.
       STOP.
    ELSE.
    sort itab_det by row col.
    read table itab_det index 1.
    v_currentrow1 = itab_det-row.
    loop at itab_det.
    if itab_det-row ne v_currentrow1.
       APPEND it_det.
       v_currentrow1 = itab_det-row.
       ENDIF.
    CASE itab_det-col.
            WHEN  c_col1.
              it_det-ref = itab_det-value.
            WHEN  c_col2.
              it_det-knttp = itab_det-value.
            WHEN c_col3.
              it_det-pstyp = itab_det-value.
            WHEN c_col4.
              it_det-txz01 = itab_det-value.
            WHEN c_col5.
              it_det-matkl = itab_det-value.
            WHEN c_col6.
              it_det-werks = itab_det-value.
            WHEN c_col7.
              it_det-afnam = itab_det-value.
            WHEN c_col8.
              it_det-srvpos = itab_det-value.
            WHEN c_col9.
              it_det-ktext1 = itab_det-value.
            WHEN c_col10.
              it_det-frmval1 = itab_det-value.
            WHEN c_col11.
              it_det-frmval2 = itab_det-value.
            WHEN c_col12.
              it_det-menge = itab_det-value.
            WHEN c_col13.
              it_det-kostl = itab_det-value.
            WHEN c_col14.
              it_det-sakto = itab_det-value.
            WHEN c_col15.
              it_det-zzcode = itab_det-value.
            WHEN c_col16.
              it_det-kbetr = itab_det-value.
    ENDCASE.
    ENDLOOP.
    APPEND it_det.
    CLEAR it_det.
    ENDIF.
    loop at it_head.
    poheader-doc_type = it_head-bsart.
    poheader-vendor = it_head-lifnr.
    poheader-purch_org = it_head-ekorg.
    poheader-pur_group = it_head-ekgrp.
    poheader-comp_code = it_head-bukrs.
    poheader-sales_pers = it_head-verkf.
    poheader-telephone = it_head-telf1.
    poheader-REF_1 = it_head-ihrez.
    poheader-OUR_REF = it_head-unsez.
    poheader-VPER_START = it_head-kdatb.
    poheader-VPER_END = it_head-kdate.
    loop at it_det where ref = it_head-ref.
      poitem-acctasscat = it_det-knttp.
      poitem-item_cat = it_det-pstyp.
      poitem-short_text = it_det-txz01.
      poitem-matl_group = it_det-matkl.
      poitem-plant = it_det-werks.
      poitem-PREQ_NAME = it_det-afnam.
      POESLLC-SERVICE = it_det-srvpos.
      POESLLC-SHORT_TEXT = it_det-ktext1.
      POESLLC-FORM_VAL1 = it_det-frmval1.
      POESLLC-FORM_VAL2 = it_det-frmval2.
      POESLLC-QUANTITY = it_det-menge.
      POACCOUNT-COSTCENTER = it_det-kostl.
      POACCOUNT-GL_ACCOUNT = it_det-sakto.
      POCONDHEADER-COND_TYPE = 'R000'.
      POCONDHEADER-COND_VALUE = it_det-kbetr.
    endloop.
    endloop.
    poheaderx-doc_type = 'X'.
    poheaderx-vendor = 'X'.
    poheaderx-purch_org = 'X'.
    poheaderx-pur_group = 'X'.
    poheaderx-comp_code = 'X'.
    poheaderx-sales_pers = 'X'.
    poheaderx-telephone = 'X'.
    poheaderx-REF_1 = 'X'.
    poheaderx-OUR_REF = 'X'.
    poheaderx-VPER_START = 'X'.
    poheaderx-VPER_END = 'X'.
    poitemx-acctasscat = 'X'.
    poitemx-item_cat = 'X'.
    poitemx-short_text = 'X'.
    poitemx-matl_group = 'X'.
    poitemx-plant = 'X'.
    poitemx-PREQ_NAME = 'X'.
    *POESLLCx-SHORT_TEXT = 'X'.
    POACCOUNTx-COSTCENTER = 'X'.
    POACCOUNTx-GL_ACCOUNT = 'X'.
    POCONDHEADER-cond_type = 'X'.
    CALL FUNCTION 'BAPI_PO_CREATE1'
      EXPORTING
        poheader                     = poheader
       POHEADERX                    = poheaderx
      POADDRVENDOR                 =
      TESTRUN                      =
      MEMORY_UNCOMPLETE            =
      MEMORY_COMPLETE              =
      POEXPIMPHEADER               =
      POEXPIMPHEADERX              =
      VERSIONS                     =
      NO_MESSAGING                 =
      NO_MESSAGE_REQ               =
      NO_AUTHORITY                 =
      NO_PRICE_FROM_PO             =
    IMPORTING
       EXPPURCHASEORDER             = po_no
      EXPHEADER                    =
      EXPPOEXPIMPHEADER            =
    TABLES
       RETURN                       = return
       POITEM                       = poitem
       POITEMX                      = poitemx
      POADDRDELIVERY               =
      POSCHEDULE                   =
      POSCHEDULEX                  =
       POACCOUNT                    = poaccount
      POACCOUNTPROFITSEGMENT       =
       POACCOUNTX                   = poaccountx
       POCONDHEADER                 = pocondheader
       POCONDHEADERX                = pocondheaderx
      POCOND                       =
      POCONDX                      =
      POLIMITS                     =
      POCONTRACTLIMITS             =
       POSERVICES                   = poesllc
      POSRVACCESSVALUES            =
      POSERVICESTEXT               =
      EXTENSIONIN                  =
      EXTENSIONOUT                 =
      POEXPIMPITEM                 =
      POEXPIMPITEMX                =
      POTEXTHEADER                 =
      POTEXTITEM                   =
      ALLVERSIONS                  =
      POPARTNER                    =
    CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
    EXPORTING
       WAIT          =
    IMPORTING
       RETURN        =
    if sy-subrc = 0.
    loop at return.
    write return-MESSAGE_V1.
    write po_no.
    endloop.
    endif.

  • How to create material(mm01)  through function module or bapi

    Hi,
        this is kiran iam sap fresher.

    Hi,
    try this
    *& Report ZKAR_MATMAS_BAPI
    *& This program demonstrates how easy it is to create Material master
    *& data using BAPI_MATERIAL_SAVEDATA
    *& The program also generates a report post-execution displaying errors
    *& as well as successful uploads
    REPORT ZKAR_MATMAS_BAPI.
    * TABLES
    * FLAGS *
    DATA: F_STOP. " Flag used to stop processing
    * DATA DECLARATIONS *
    DATA : V_EMPTY TYPE I, " No. of empty records
    V_TOTAL TYPE I. " Total no. of records.
    * STRUCTURES & INTERNAL TABLES
    *BAPI structures
    DATA: BAPI_HEAD LIKE BAPIMATHEAD, " Header Segment with Control Information
    BAPI_MAKT LIKE BAPI_MAKT, " Material Description
    BAPI_MARA1 LIKE BAPI_MARA, " Client Data
    BAPI_MARAX LIKE BAPI_MARAX, " Checkbox Structure for BAPI_MARA
    BAPI_MARC1 LIKE BAPI_MARC, " Plant View
    BAPI_MARCX LIKE BAPI_MARCX, " Checkbox Structure for BAPI_MARC
    BAPI_MBEW1 LIKE BAPI_MBEW, " Accounting View
    BAPI_MBEWX LIKE BAPI_MBEWX, " Checkbox Structure for BAPI_MBEW
    BAPI_RETURN LIKE BAPIRET2. " Return Parameter
    *--- Internal table to hold excel file data
    DATA: IT_INTERN TYPE ALSMEX_TABLINE OCCURS 0 WITH HEADER LINE.
    *--- Internal table to hold Matetrial descriptions
    DATA: BEGIN OF IT_MAKT OCCURS 100.
            INCLUDE STRUCTURE BAPI_MAKT.
    DATA: END OF IT_MAKT.
    *--- Internal to hold the records in the text file
    DATA : BEGIN OF IT_DATA 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
                EKGRP(3), " Purchasing group
                VPRSV(1), " Price control indicator
                STPRS(12), " Standard price
                PEINH(3), " Price unit
                SPRAS(2), " Language key
                MAKTX(40), " Material description
                END OF IT_DATA.
    * SELECTION SCREEN. *
    SELECTION-SCREEN BEGIN OF BLOCK SCR1 WITH FRAME TITLE TEXT-111.
    PARAMETER : P_FILE TYPE RLGRAP-FILENAME OBLIGATORY DEFAULT " Input File
    'C:\Material_master.XLS'.
    PARAMETER : P_MAX(4) OBLIGATORY DEFAULT '100'. " no.of recs in a session
    PARAMETERS: P_HEADER TYPE I DEFAULT 0. " Header Lines
    PARAMETERS: P_BEGCOL TYPE I DEFAULT 1 NO-DISPLAY,
    P_BEGROW TYPE I DEFAULT 1 NO-DISPLAY,
    P_ENDCOL TYPE I DEFAULT 100 NO-DISPLAY,
    P_ENDROW TYPE I DEFAULT 32000 NO-DISPLAY.
    SELECTION-SCREEN END OF BLOCK SCR1.
    * AT SELECTION-SCREEN *
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.
    *--- Validating file
      PERFORM VALIDATE_FILE USING P_FILE.
    * START-OF-SELECTION
    START-OF-SELECTION.
    *--- Perform to convert the Excel data into an internal table
      PERFORM CONVERT_XLS_ITAB.
      IF NOT IT_DATA[] IS INITIAL.
    *--- Perform to delete Header lines
        PERFORM DELETE_HEADER_EMPTY_RECS.
      ENDIF.
    * END OF SELECTION. *
    END-OF-SELECTION.
    *--- Perform to upload Material Master data
      PERFORM UPLOAD_MATMAS.
    * Form : validate_input_file
    * Description : To provide F4 help for file if read from PC
    FORM VALIDATE_FILE USING F_FILE TYPE RLGRAP-FILENAME.
      CALL FUNCTION 'KD_GET_FILENAME_ON_F4'
        CHANGING
          FILE_NAME     = F_FILE
        EXCEPTIONS
          MASK_TOO_LONG = 1
          OTHERS        = 2.
      IF SY-SUBRC <> 0.
        MESSAGE S010(ZLKPL_MSGCLASS). " 'Error in getting filename'.
      ENDIF.
    ENDFORM. " validate_input_file
    *& Form CONVER_XLS_ITAB
    * text
    FORM CONVERT_XLS_ITAB.
      CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
        EXPORTING
          FILENAME    = P_FILE
          I_BEGIN_COL = P_BEGCOL
          I_BEGIN_ROW = P_BEGROW
          I_END_COL   = P_ENDCOL
          I_END_ROW   = P_ENDROW
        TABLES
          INTERN      = IT_INTERN.
      IF SY-SUBRC <> 0.
    * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    *--- Perform to move the data into an internal data
      PERFORM MOVE_DATA.
    ENDFORM. " CONVERT_XLS_ITAB
    *& Form MOVE_DATA
    * text
    FORM MOVE_DATA.
      DATA : LV_INDEX TYPE I.
      FIELD-SYMBOLS <FS>.
    *--- Sorting the internal table
      SORT IT_INTERN BY ROW COL.
      CLEAR IT_INTERN.
      LOOP AT IT_INTERN.
        MOVE IT_INTERN-COL TO LV_INDEX.
    *--- Assigning the each record to an internal table row
        ASSIGN COMPONENT LV_INDEX OF STRUCTURE IT_DATA TO <FS>.
    *--- Asigning the field value to a field symbol
        MOVE IT_INTERN-VALUE TO <FS>.
        AT END OF ROW.
          APPEND IT_DATA.
          CLEAR IT_DATA.
        ENDAT.
      ENDLOOP.
    ENDFORM. " MOVE_DATA
    *& Form DELETE_HEADER_EMPTY_RECS
    * To delete the Header and empty records
    FORM DELETE_HEADER_EMPTY_RECS.
      DATA: LV_TABIX LIKE SY-TABIX.
      IF NOT P_HEADER IS INITIAL.
        LOOP AT IT_DATA.
          IF P_HEADER > 0 AND NOT IT_DATA IS INITIAL.
            DELETE IT_DATA FROM 1 TO P_HEADER.
    * P_HEADER = 0.
            EXIT.
          ENDIF.
        ENDLOOP.
      ENDIF.
      CLEAR IT_DATA.
    *--- To delete the empty lines from internal table
      LOOP AT IT_DATA.
        LV_TABIX = SY-TABIX.
        IF IT_DATA IS INITIAL.
          V_EMPTY = V_EMPTY + 1.
          DELETE IT_DATA INDEX LV_TABIX..
        ENDIF.
      ENDLOOP.
      CLEAR IT_DATA.
    *--- Total no of recs in file
      DESCRIBE TABLE IT_DATA LINES V_TOTAL.
      IF V_TOTAL = 0.
        MESSAGE I013(ZLKPL_MSGCLASS). " No records in the file
        F_STOP = 'X'.
        STOP.
      ENDIF.
    ENDFORM. " DELETE_HEADER_EMPTY_RECS
    *& Form UPLOAD_MATMAS
    * to upload Material Master data
    FORM UPLOAD_MATMAS .
      LOOP AT IT_DATA.
    * Header
        UNPACK IT_DATA-MATNR TO IT_DATA-MATNR.
        BAPI_HEAD-MATERIAL = IT_DATA-MATNR.
        BAPI_HEAD-IND_SECTOR = IT_DATA-MBRSH.
        BAPI_HEAD-MATL_TYPE = IT_DATA-MTART.
        BAPI_HEAD-BASIC_VIEW = 'X'.
        BAPI_HEAD-PURCHASE_VIEW = 'X'.
        BAPI_HEAD-ACCOUNT_VIEW = 'X'.
    * Material Description
        REFRESH IT_MAKT.
        IT_MAKT-LANGU = IT_DATA-SPRAS.
        IT_MAKT-MATL_DESC = IT_DATA-MAKTX.
        APPEND IT_MAKT.
    * Client Data - Basic
        BAPI_MARA1-MATL_GROUP = IT_DATA-MATKL.
        BAPI_MARA1-BASE_UOM = IT_DATA-MEINS.
        BAPI_MARA1-UNIT_OF_WT = IT_DATA-GEWEI.
        BAPI_MARA1-DIVISION = IT_DATA-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 = IT_DATA-WERKS.
        BAPI_MARC1-PUR_GROUP = IT_DATA-EKGRP.
        BAPI_MARCX-PLANT = IT_DATA-WERKS.
        BAPI_MARCX-PUR_GROUP = 'X'.
    * Accounting
        BAPI_MBEW1-VAL_AREA = IT_DATA-WERKS.
        BAPI_MBEW1-PRICE_CTRL = IT_DATA-VPRSV.
        BAPI_MBEW1-STD_PRICE = IT_DATA-STPRS.
        BAPI_MBEW1-PRICE_UNIT = IT_DATA-PEINH.
        BAPI_MBEWX-VAL_AREA = IT_DATA-WERKS.
        BAPI_MBEWX-PRICE_CTRL = 'X'.
        BAPI_MBEWX-STD_PRICE = 'X'.
        BAPI_MBEWX-PRICE_UNIT = 'X'.
    *--- BAPI to create material
        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 =
    * STORAGELOCATIONDATA =
    * STORAGELOCATIONDATAX =
    * VALUATIONDATA = BAPI_MBEW1
    * VALUATIONDATAX = BAPI_MBEWX
    * WAREHOUSENUMBERDATA =
    * WAREHOUSENUMBERDATAX =
    * SALESDATA = BAPI_MVKE1
    * SALESDATAX = BAPI_MVKEX
    * STORAGETYPEDATA =
    * STORAGETYPEDATAX =
        IMPORTING
        RETURN = BAPI_RETURN
        TABLES
        MATERIALDESCRIPTION = IT_MAKT
    * UNITSOFMEASURE =
    * UNITSOFMEASUREX =
    * INTERNATIONALARTNOS =
    * MATERIALLONGTEXT =
    * TAXCLASSIFICATIONS =
    * RETURNMESSAGES =
    * PRTDATA =
    * PRTDATAX =
    * EXTENSIONIN =
    * EXTENSIONINX =
        IF BAPI_RETURN-TYPE = 'E'.
          WRITE:/ 'Error:' ,BAPI_RETURN-MESSAGE ,'for material:' ,IT_DATA-MATNR.
        ELSEIF BAPI_RETURN-TYPE = 'S'.
          WRITE: 'Successfully created material' ,IT_DATA-MATNR.
        ENDIF.
      ENDLOOP.
    ENDFORM. " UPLOAD_MATMAS

Maybe you are looking for