Selasa, 15 November 2011

Upload Material Using BAPI ( BAPI_MATERIAL_SAVEDATA )

Pada kesempatan kali ini kita akan mencoba membuat program upload material menggunakan BAPI.
Bapi yang akan kita gunakan nantinya adalah ' BAPI_MATERIAL_SAVEDATA '.
OK!! Tidak usah banyak cingcong, langsung kita buat aja programnya:


    • Buka Abap Editor (SE38).
    •  Langsung saja ketikkan source code seperti di bawah ini:
    *&---------------------------------------------------------------------*
    *& Report  ZBAPI_MATERIAL
    *&
    *&---------------------------------------------------------------------*
    *&
    *&
    *&---------------------------------------------------------------------*

    REPORT  zbapi_material.

    TABLES:bapimathead,
           bapi_makt,
           bapi_mara,
           bapi_marax.

    DATA:BEGIN OF t_data OCCURS 0,
          material TYPE bapimathead-material,
          ind_sector(20),
          matl_type TYPE bapimathead-matl_type,
          matl_group TYPE bapi_mara-matl_group,
          base_uom TYPE bapi_mara-base_uom,
          matl_desc TYPE bapi_makt-matl_desc,
         END OF t_data,
        it_return LIKE bapiret2.

    DATA : it_bapi LIKE bapi_makt OCCURS WITH HEADER LINE.

    PARAMETERS:p_file TYPE localfile.

    AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
      PERFORM get_f4help.

    START-OF-SELECTION.
      PERFORM upload_file_t_data.
      PERFORM call_bapi.
    *&---------------------------------------------------------------------*
    *&      Form  get_f4help
    *&---------------------------------------------------------------------*
    FORM get_f4help .
      CALL FUNCTION 'F4_FILENAME'
        EXPORTING
          program_name  = syst-cprog
          dynpro_number = syst-dynnr
        IMPORTING
          file_name     = p_file.
    ENDFORM.                    " get_f4help
    *&---------------------------------------------------------------------*
    *&      Form  upload_file_t_data
    *&---------------------------------------------------------------------*
    FORM upload_file_t_data .
      DATA:v_file TYPE string.
      MOVE p_file TO v_file.
      CALL FUNCTION 'GUI_UPLOAD'
        EXPORTING
          filename            = v_file
          filetype            = 'ASC'
          has_field_separator = 'X'
        TABLES
          data_tab            = t_data.

      delete t_data index 1.
    ENDFORM.                    " upload_file_t_data
    *&---------------------------------------------------------------------*
    *&      Form  call_bapi
    *&---------------------------------------------------------------------*
    FORM call_bapi .
      LOOP AT t_data.
        bapimathead-material = t_data-material.
        bapimathead-ind_sector = t_data-ind_sector.
        bapimathead-matl_type = t_data-matl_type.
        bapimathead-basic_view = 'X'.

        bapi_mara-matl_group = t_data-matl_group.
        bapi_mara-base_uom = t_data-base_uom.
        bapi_marax-matl_group = 'X'.
        bapi_marax-base_uom = 'X'.

        it_bapi-langu = 'EN'.
        it_bapi-langu_iso = 'EN'.
        it_bapi-matl_desc = t_data-matl_desc.
        APPEND it_bapi.
        CLEAR it_bapi.
        CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'
          EXPORTING
            headdata            = bapimathead
            clientdata          = bapi_mara
            clientdatax         = bapi_marax
          IMPORTING
            return              = it_return
          TABLES
            materialdescription = it_bapi.

        IF it_return-type NE 'E'.
          CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
           EXPORTING
             wait          'X'
    * IMPORTING
    *   RETURN        =
                    .
          WRITE : / 'Material created:',bapimathead-material.
        ELSE.
          WRITE:/ it_return-message.
        ENDIF.
      ENDLOOP.

    ENDFORM. "

    • Lalu aktifkan dan jalankan program.

    • Masukkan file .txt
    format textya adalah sebagai berikut :
    MATNR    MBRSH    MTART    MATKL    MEINS    MAKTX    BISMT
    1111-11115    M    ROH    001    tt    Test1    909809
    • Langsung hajar saja programnya (F8).

    • OK. Selesai

    Tidak ada komentar:

    Posting Komentar