Application Development Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 

BAPI_MATERIAL_SAVEDATA

Former Member
0 Kudos

What exactly the bapi "BAPI_MATERIAL_SAVEDATA." is used for?

1 ACCEPTED SOLUTION

Former Member
0 Kudos

this is bapi is used create or change material details

Create and Change Material Master Data

Functionality
You use this method to create new material master data or to change existing material master data. The data on a material can be transferred for each call.

When creating material master data, you must transfer the material number, the material type, and the industry sector to the method. You must also enter a material description and its language.

When changing material master data, you need enter only the material number.

In the header data, you must select at least one view for which data is to be created. Depending on the view selected, you must maintain other required parameters. If you do not enter values for all of the required parameters, the method is ended with an error message.

The corresponding fields in the tables (such as CLIENTDATA) must first be supplied with data by the calling program. An indicator must also be set for each of these fields so that the data is written to the database by the method. This requires the calling program to supply the corresponding field with the indicator in a checkbox table (for example, CLIENTDATAX). Checkbox tables exist for tables that do not contain any language-dependent texts (MAKT, MLTX), International Article Numbers (MEAN), or tax classifications (MLAN). Several data records for a material can be created in these tables.

If a structure contains fields for units of measurement (such as structure CLIENTDATA, field BASE_UOM), language indicators (such as structure MATERIALDESCRIPTION, field LANGU), or country indicators (such as structure TAXCLASSIFICATIONS, field DEPCOUNTRY), there is always a field of the same name with the ending _ISO. This makes it possible to transfer either the internally used SAP code or a standardized ISO code for the units of measurement, language indicators, or country indicators. ISO codes are converted to an SAP code internally for further processing. The ISO code is used only if the SAP code is not transferred. If you use ISO codes, there must be a unique assignment of the ISO code to the SAP code in the following activities in Customizing for Global Parameters:

Check Units of Measurement

go through the sample code

*&---------------------------------------------------------------------*
*& Report  ZBAPI_MATERIAL_SAVEDATA
*&
*&---------------------------------------------------------------------*
*& AUTHOR 
*&----------------------------------------------------------------------
*& PURPOSE : THIS REPORT USES BAPI MATERIAL SAVE DATA TO UPDATE AND CREATE
*&           THE MATERIAL
*&
*&
*&
*&
*&---------------------------------------------------------------------*

REPORT  ZBAPI_MATERIAL_SAVEDATA NO STANDARD PAGE HEADING MESSAGE-ID (ZHNC).

TYPES:BEGIN OF TY_MAT,
       MATERIAL(4),
       IND_SECTOR(1),
       MATL_TYPE(4),
**       BASIC_VIEW(1),
**       SALES_VIEW(1),
**       PURCHASE_VIEW(1),
*       STORAGE_VIEW(1),
       MATL_GROUP(9),
       BASE_UOM(3),
       BASE_UOM_ISO(3),
*       MATL_GROUP1(1),
*       BASE_UOM1(1),
*       BASE_UOM_ISO1(1),
       PLANT(4),
       DEL_FLAG(1),
       PUR_GROUP(3),
       BASE_QTY(13),
*       PLANT2(4),
*       DEL_FLAG5(1),
*       PUR_GROUP1(1),
*       BASE_QTY1(1),
*       PLANT3(4),
       STGE_LOC(4),
       MRP_IND(1),
*       PLANT4(4),
*       STGE_LOC1(4),
*       MRP_IND1(1),
       SALES_ORG(4),
       DISTR_CHAN(2),
       DEL_FLAG1(1),
       MIN_ORDER(13),
*       SALES_ORG1(4),
*       DISTR_CHAN1(2),
*       DEL_FLAG2(1),
*       MIN_ORDER1(1),
       LANGU(2),
      MATL_DESC(40),

   END OF TY_MAT.


DATA: IT_DATA TYPE TABLE OF TY_MAT,
      WA_DATA LIKE LINE  OF IT_DATA.

*decalraing flag

data: v_flag value ''.


*DECLARING WORK AREAs  TO BE PASSED TO THE FUNCTION MODULE.

DATA: BAPI_HEAD LIKE BAPIMATHEAD,
      BAPI_CLIENTDATA LIKE BAPI_MARA,
      BAPI_CLIENTDATAX LIKE BAPI_MARAX,
      BAPI_PLANTDATA LIKE BAPI_MARC,
      BAPI_PLANTDATAX LIKE  BAPI_MARCX,
      BAPI_STORAGELOCATIONDATA LIKE BAPI_MARD,
      BAPI_STORAGELOCATIONDATAX LIKE BAPI_MARDX,
      BAPI_SALESDATA LIKE BAPI_MVKE,
      BAPI_SALESDATAX LIKE BAPI_MVKEX,
      BAPI_MAKT LIKE BAPI_MAKT,
      BAPI_RETURN LIKE BAPIRET2.

*INTERNAL TABLE TO HOLD THE MATERIAL DESCRIPTION

DATA: BEGIN OF IT_MAKT OCCURS 0.
INCLUDE STRUCTURE BAPI_MAKT.
DATA END OF IT_MAKT.

DATA:BEGIN OF IT_RET OCCURS 0.
INCLUDE STRUCTURE BAPIRET2.
DATA END OF IT_RET.

*INTERNAL TABLE TO HOLD HEADER DATA

DATA: IT_EXCEL TYPE ALSMEX_TABLINE OCCURS 0 WITH HEADER LINE.

*SELECTION-SCREEN ELEMENTS

SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
PARAMETER: FNAME TYPE RLGRAP-FILENAME OBLIGATORY DEFAULT 'C:\Documents and Settings\Administrator\Desktop\MATMAS.XLS' .
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 B1.

*DECLARATION OF EXCELAL TABLE

AT SELECTION-SCREEN ON VALUE-REQUEST FOR FNAME.

PERFORM F_GET_FILE USING FNAME.


START-OF-SELECTION.

PERFORM F_XLS_ITAB USING FNAME
                   CHANGING IT_EXCEL.

PERFORM F_MOVE_DATA.

perform F_GET_DATA.






*&---------------------------------------------------------------------*
*&      Form  F_GET_FILE
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_FNAME  text
*      <--P_SY_SUBRC  text
*----------------------------------------------------------------------*
FORM F_GET_FILE  USING    P_FNAME LIKE FNAME.


CALL FUNCTION 'KD_GET_FILENAME_ON_F4'
 EXPORTING
   PROGRAM_NAME        = SYST-REPID
   DYNPRO_NUMBER       = SYST-DYNNR
*   FIELD_NAME          = ' '
*   STATIC              = ' '
*   MASK                = ' '
  CHANGING
    FILE_NAME           = P_FNAME
* EXCEPTIONS
*   MASK_TOO_LONG       = 1
*   OTHERS              = 2
          .
IF SY-SUBRC <> 0.
MESSAGE E006(ZHNC).
ENDIF.

ENDFORM.                    " F_GET_FILE
*&---------------------------------------------------------------------*
*&      Form  F_XLS_ITAB
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_FNAME  text
*      <--P_IT_EXCEL  text
*----------------------------------------------------------------------*
FORM F_XLS_ITAB  USING    P_FNAME
                 CHANGING P_IT_EXCEL.

CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
  EXPORTING
    FILENAME                      = FNAME
    I_BEGIN_COL                   = P_BEGCOL
    I_BEGIN_ROW                   = P_BEGROW
    I_END_COL                     = P_ENDCOL
    I_END_ROW                     = P_ENDROW
  TABLES
    INTERN                        = IT_EXCEL
 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.

ENDFORM.                    " F_XLS_ITAB
*&---------------------------------------------------------------------*
*&      Form  F_MOVE_DATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM F_MOVE_DATA .

DATA : LV_INDEX TYPE I.

FIELD-SYMBOLS <FS>.

*--- Sorting the internal table

SORT IT_EXCEL BY ROW COL.

CLEAR IT_EXCEL.

LOOP AT IT_EXCEL.

MOVE IT_EXCEL-COL TO LV_INDEX.

*--- Assigning the each record to an internal table row

ASSIGN COMPONENT LV_INDEX OF STRUCTURE WA_DATA TO <FS>.

*--- Asigning the field value to a field symbol

MOVE IT_EXCEL-VALUE TO <FS>.

AT END OF ROW.

APPEND WA_DATA TO IT_DATA.

CLEAR WA_DATA.

ENDAT.

ENDLOOP.

*
ENDFORM.                    " F_MOVE_DATA
*&---------------------------------------------------------------------*
*&      Form  F_GET_DATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM F_GET_DATA .
LOOP AT IT_DATA INTO WA_DATA.

MOVE-CORRESPONDING WA_DATA  TO  BAPI_HEAD.

BAPI_HEAD-BASIC_VIEW ='X'.

BAPI_HEAD-SALES_VIEW ='X'.

BAPI_HEAD-PURCHASE_VIEW ='X'.

BAPI_HEAD-STORAGE_VIEW ='X'.

MOVE-CORRESPONDING WA_DATA TO BAPI_CLIENTDATA.

BAPI_CLIENTDATAX-MATL_GROUP = 'X'.

BAPI_CLIENTDATAX-BASE_UOM = 'X'.

BAPI_CLIENTDATAX-BASE_UOM_ISO = 'X'.

MOVE-CORRESPONDING WA_DATA TO BAPI_PLANTDATA.

BAPI_PLANTDATAX-PLANT = BAPI_PLANTDATA-PLANT.

BAPI_PLANTDATAX-DEL_FLAG = 'X'.

BAPI_PLANTDATAX-PUR_GROUP = 'X'.

BAPI_PLANTDATAX-BASE_QTY = 'X'.

MOVE-CORRESPONDING WA_DATA TO BAPI_STORAGELOCATIONDATA.

BAPI_STORAGELOCATIONDATA-PLANT = BAPI_PLANTDATA-PLANT.

BAPI_STORAGELOCATIONDATAX-PLANT = BAPI_STORAGELOCATIONDATA-PLANT.

BAPI_STORAGELOCATIONDATAX-STGE_LOC = BAPI_STORAGELOCATIONDATA-STGE_LOC.

BAPI_STORAGELOCATIONDATAX-MRP_IND = 'X'.

MOVE-CORRESPONDING WA_DATA TO BAPI_SALESDATA.

BAPI_SALESDATAX-SALES_ORG = BAPI_SALESDATA-SALES_ORG.

BAPI_SALESDATAX-DISTR_CHAN = BAPI_SALESDATA-DISTR_CHAN.

BAPI_SALESDATAX-DEL_FLAG = BAPI_SALESDATA-DEL_FLAG.

BAPI_SALESDATAX-MIN_ORDER = 'X'.

REFRESH IT_MAKT.

IT_MAKT-LANGU = WA_DATA-LANGU.

IT_MAKT-MATL_DESC = WA_DATA-MATL_DESC.

APPEND IT_MAKT.

CLEAR IT_RET.

REFRESH IT_RET.

PERFORM F_CALL_BAPI.


READ TABLE IT_RET WITH KEY TYPE = 'S'.



IF SY-SUBRC EQ 0.

PERFORM F_BAPI_COMMIT.

WRITE:/ 'MATERIAL CREATED OR UPDATED SUCESSFULLY WITH MATERIAL NO',WA_DATA-MATERIAL.

ELSE.


MESSAGE E000(ZHNC) WITH 'ERROR IN CREATING THE MATERIAL'.

*WRITE: / 'ERROR IN CREATIN MATERIAL',IT_RET-MESSAGE.

*PERFORM F_DOWNLOAD.

ENDIF.

*ENDIF.

ENDLOOP.

ENDFORM.                    " F_GET_DATA
*&---------------------------------------------------------------------*
*&      Form  F_CALL_BAPI
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM F_CALL_BAPI .
CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'
  EXPORTING
    HEADDATA                   = BAPI_HEAD
   CLIENTDATA                 =  BAPI_CLIENTDATA
   CLIENTDATAX                =  BAPI_CLIENTDATAX
   PLANTDATA                  =  BAPI_PLANTDATA
   PLANTDATAX                 =  BAPI_PLANTDATAX
   STORAGELOCATIONDATA        =  BAPI_STORAGELOCATIONDATA
   STORAGELOCATIONDATAX       =  BAPI_STORAGELOCATIONDATAX
   SALESDATA                  =  BAPI_SALESDATA
   SALESDATAX                 =  BAPI_SALESDATAX
 IMPORTING
   RETURN                     =  IT_RET
 TABLES
   MATERIALDESCRIPTION        = IT_MAKT
*   UNITSOFMEASURE             =
*   UNITSOFMEASUREX            =
*   INTERNATIONALARTNOS        =
*   MATERIALLONGTEXT           =
*   TAXCLASSIFICATIONS         =
*   RETURNMESSAGES             =
*   PRTDATA                    =
*   PRTDATAX                   =
*   EXTENSIONIN                =
*   EXTENSIONINX               =
          .

APPEND IT_RET.

ENDFORM.                    " F_CALL_BAPI
*&---------------------------------------------------------------------*
*&      Form  F_BAPI_COMMIT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM F_BAPI_COMMIT .

CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
* EXPORTING
*   WAIT         =
* IMPORTING
*   RETURN        =
          .







ENDFORM.                    " F_BAPI_COMMIT

3 REPLIES 3

Former Member
0 Kudos

this is bapi is used create or change material details

Create and Change Material Master Data

Functionality
You use this method to create new material master data or to change existing material master data. The data on a material can be transferred for each call.

When creating material master data, you must transfer the material number, the material type, and the industry sector to the method. You must also enter a material description and its language.

When changing material master data, you need enter only the material number.

In the header data, you must select at least one view for which data is to be created. Depending on the view selected, you must maintain other required parameters. If you do not enter values for all of the required parameters, the method is ended with an error message.

The corresponding fields in the tables (such as CLIENTDATA) must first be supplied with data by the calling program. An indicator must also be set for each of these fields so that the data is written to the database by the method. This requires the calling program to supply the corresponding field with the indicator in a checkbox table (for example, CLIENTDATAX). Checkbox tables exist for tables that do not contain any language-dependent texts (MAKT, MLTX), International Article Numbers (MEAN), or tax classifications (MLAN). Several data records for a material can be created in these tables.

If a structure contains fields for units of measurement (such as structure CLIENTDATA, field BASE_UOM), language indicators (such as structure MATERIALDESCRIPTION, field LANGU), or country indicators (such as structure TAXCLASSIFICATIONS, field DEPCOUNTRY), there is always a field of the same name with the ending _ISO. This makes it possible to transfer either the internally used SAP code or a standardized ISO code for the units of measurement, language indicators, or country indicators. ISO codes are converted to an SAP code internally for further processing. The ISO code is used only if the SAP code is not transferred. If you use ISO codes, there must be a unique assignment of the ISO code to the SAP code in the following activities in Customizing for Global Parameters:

Check Units of Measurement

go through the sample code

*&---------------------------------------------------------------------*
*& Report  ZBAPI_MATERIAL_SAVEDATA
*&
*&---------------------------------------------------------------------*
*& AUTHOR 
*&----------------------------------------------------------------------
*& PURPOSE : THIS REPORT USES BAPI MATERIAL SAVE DATA TO UPDATE AND CREATE
*&           THE MATERIAL
*&
*&
*&
*&
*&---------------------------------------------------------------------*

REPORT  ZBAPI_MATERIAL_SAVEDATA NO STANDARD PAGE HEADING MESSAGE-ID (ZHNC).

TYPES:BEGIN OF TY_MAT,
       MATERIAL(4),
       IND_SECTOR(1),
       MATL_TYPE(4),
**       BASIC_VIEW(1),
**       SALES_VIEW(1),
**       PURCHASE_VIEW(1),
*       STORAGE_VIEW(1),
       MATL_GROUP(9),
       BASE_UOM(3),
       BASE_UOM_ISO(3),
*       MATL_GROUP1(1),
*       BASE_UOM1(1),
*       BASE_UOM_ISO1(1),
       PLANT(4),
       DEL_FLAG(1),
       PUR_GROUP(3),
       BASE_QTY(13),
*       PLANT2(4),
*       DEL_FLAG5(1),
*       PUR_GROUP1(1),
*       BASE_QTY1(1),
*       PLANT3(4),
       STGE_LOC(4),
       MRP_IND(1),
*       PLANT4(4),
*       STGE_LOC1(4),
*       MRP_IND1(1),
       SALES_ORG(4),
       DISTR_CHAN(2),
       DEL_FLAG1(1),
       MIN_ORDER(13),
*       SALES_ORG1(4),
*       DISTR_CHAN1(2),
*       DEL_FLAG2(1),
*       MIN_ORDER1(1),
       LANGU(2),
      MATL_DESC(40),

   END OF TY_MAT.


DATA: IT_DATA TYPE TABLE OF TY_MAT,
      WA_DATA LIKE LINE  OF IT_DATA.

*decalraing flag

data: v_flag value ''.


*DECLARING WORK AREAs  TO BE PASSED TO THE FUNCTION MODULE.

DATA: BAPI_HEAD LIKE BAPIMATHEAD,
      BAPI_CLIENTDATA LIKE BAPI_MARA,
      BAPI_CLIENTDATAX LIKE BAPI_MARAX,
      BAPI_PLANTDATA LIKE BAPI_MARC,
      BAPI_PLANTDATAX LIKE  BAPI_MARCX,
      BAPI_STORAGELOCATIONDATA LIKE BAPI_MARD,
      BAPI_STORAGELOCATIONDATAX LIKE BAPI_MARDX,
      BAPI_SALESDATA LIKE BAPI_MVKE,
      BAPI_SALESDATAX LIKE BAPI_MVKEX,
      BAPI_MAKT LIKE BAPI_MAKT,
      BAPI_RETURN LIKE BAPIRET2.

*INTERNAL TABLE TO HOLD THE MATERIAL DESCRIPTION

DATA: BEGIN OF IT_MAKT OCCURS 0.
INCLUDE STRUCTURE BAPI_MAKT.
DATA END OF IT_MAKT.

DATA:BEGIN OF IT_RET OCCURS 0.
INCLUDE STRUCTURE BAPIRET2.
DATA END OF IT_RET.

*INTERNAL TABLE TO HOLD HEADER DATA

DATA: IT_EXCEL TYPE ALSMEX_TABLINE OCCURS 0 WITH HEADER LINE.

*SELECTION-SCREEN ELEMENTS

SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
PARAMETER: FNAME TYPE RLGRAP-FILENAME OBLIGATORY DEFAULT 'C:\Documents and Settings\Administrator\Desktop\MATMAS.XLS' .
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 B1.

*DECLARATION OF EXCELAL TABLE

AT SELECTION-SCREEN ON VALUE-REQUEST FOR FNAME.

PERFORM F_GET_FILE USING FNAME.


START-OF-SELECTION.

PERFORM F_XLS_ITAB USING FNAME
                   CHANGING IT_EXCEL.

PERFORM F_MOVE_DATA.

perform F_GET_DATA.






*&---------------------------------------------------------------------*
*&      Form  F_GET_FILE
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_FNAME  text
*      <--P_SY_SUBRC  text
*----------------------------------------------------------------------*
FORM F_GET_FILE  USING    P_FNAME LIKE FNAME.


CALL FUNCTION 'KD_GET_FILENAME_ON_F4'
 EXPORTING
   PROGRAM_NAME        = SYST-REPID
   DYNPRO_NUMBER       = SYST-DYNNR
*   FIELD_NAME          = ' '
*   STATIC              = ' '
*   MASK                = ' '
  CHANGING
    FILE_NAME           = P_FNAME
* EXCEPTIONS
*   MASK_TOO_LONG       = 1
*   OTHERS              = 2
          .
IF SY-SUBRC <> 0.
MESSAGE E006(ZHNC).
ENDIF.

ENDFORM.                    " F_GET_FILE
*&---------------------------------------------------------------------*
*&      Form  F_XLS_ITAB
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_FNAME  text
*      <--P_IT_EXCEL  text
*----------------------------------------------------------------------*
FORM F_XLS_ITAB  USING    P_FNAME
                 CHANGING P_IT_EXCEL.

CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
  EXPORTING
    FILENAME                      = FNAME
    I_BEGIN_COL                   = P_BEGCOL
    I_BEGIN_ROW                   = P_BEGROW
    I_END_COL                     = P_ENDCOL
    I_END_ROW                     = P_ENDROW
  TABLES
    INTERN                        = IT_EXCEL
 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.

ENDFORM.                    " F_XLS_ITAB
*&---------------------------------------------------------------------*
*&      Form  F_MOVE_DATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM F_MOVE_DATA .

DATA : LV_INDEX TYPE I.

FIELD-SYMBOLS <FS>.

*--- Sorting the internal table

SORT IT_EXCEL BY ROW COL.

CLEAR IT_EXCEL.

LOOP AT IT_EXCEL.

MOVE IT_EXCEL-COL TO LV_INDEX.

*--- Assigning the each record to an internal table row

ASSIGN COMPONENT LV_INDEX OF STRUCTURE WA_DATA TO <FS>.

*--- Asigning the field value to a field symbol

MOVE IT_EXCEL-VALUE TO <FS>.

AT END OF ROW.

APPEND WA_DATA TO IT_DATA.

CLEAR WA_DATA.

ENDAT.

ENDLOOP.

*
ENDFORM.                    " F_MOVE_DATA
*&---------------------------------------------------------------------*
*&      Form  F_GET_DATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM F_GET_DATA .
LOOP AT IT_DATA INTO WA_DATA.

MOVE-CORRESPONDING WA_DATA  TO  BAPI_HEAD.

BAPI_HEAD-BASIC_VIEW ='X'.

BAPI_HEAD-SALES_VIEW ='X'.

BAPI_HEAD-PURCHASE_VIEW ='X'.

BAPI_HEAD-STORAGE_VIEW ='X'.

MOVE-CORRESPONDING WA_DATA TO BAPI_CLIENTDATA.

BAPI_CLIENTDATAX-MATL_GROUP = 'X'.

BAPI_CLIENTDATAX-BASE_UOM = 'X'.

BAPI_CLIENTDATAX-BASE_UOM_ISO = 'X'.

MOVE-CORRESPONDING WA_DATA TO BAPI_PLANTDATA.

BAPI_PLANTDATAX-PLANT = BAPI_PLANTDATA-PLANT.

BAPI_PLANTDATAX-DEL_FLAG = 'X'.

BAPI_PLANTDATAX-PUR_GROUP = 'X'.

BAPI_PLANTDATAX-BASE_QTY = 'X'.

MOVE-CORRESPONDING WA_DATA TO BAPI_STORAGELOCATIONDATA.

BAPI_STORAGELOCATIONDATA-PLANT = BAPI_PLANTDATA-PLANT.

BAPI_STORAGELOCATIONDATAX-PLANT = BAPI_STORAGELOCATIONDATA-PLANT.

BAPI_STORAGELOCATIONDATAX-STGE_LOC = BAPI_STORAGELOCATIONDATA-STGE_LOC.

BAPI_STORAGELOCATIONDATAX-MRP_IND = 'X'.

MOVE-CORRESPONDING WA_DATA TO BAPI_SALESDATA.

BAPI_SALESDATAX-SALES_ORG = BAPI_SALESDATA-SALES_ORG.

BAPI_SALESDATAX-DISTR_CHAN = BAPI_SALESDATA-DISTR_CHAN.

BAPI_SALESDATAX-DEL_FLAG = BAPI_SALESDATA-DEL_FLAG.

BAPI_SALESDATAX-MIN_ORDER = 'X'.

REFRESH IT_MAKT.

IT_MAKT-LANGU = WA_DATA-LANGU.

IT_MAKT-MATL_DESC = WA_DATA-MATL_DESC.

APPEND IT_MAKT.

CLEAR IT_RET.

REFRESH IT_RET.

PERFORM F_CALL_BAPI.


READ TABLE IT_RET WITH KEY TYPE = 'S'.



IF SY-SUBRC EQ 0.

PERFORM F_BAPI_COMMIT.

WRITE:/ 'MATERIAL CREATED OR UPDATED SUCESSFULLY WITH MATERIAL NO',WA_DATA-MATERIAL.

ELSE.


MESSAGE E000(ZHNC) WITH 'ERROR IN CREATING THE MATERIAL'.

*WRITE: / 'ERROR IN CREATIN MATERIAL',IT_RET-MESSAGE.

*PERFORM F_DOWNLOAD.

ENDIF.

*ENDIF.

ENDLOOP.

ENDFORM.                    " F_GET_DATA
*&---------------------------------------------------------------------*
*&      Form  F_CALL_BAPI
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM F_CALL_BAPI .
CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'
  EXPORTING
    HEADDATA                   = BAPI_HEAD
   CLIENTDATA                 =  BAPI_CLIENTDATA
   CLIENTDATAX                =  BAPI_CLIENTDATAX
   PLANTDATA                  =  BAPI_PLANTDATA
   PLANTDATAX                 =  BAPI_PLANTDATAX
   STORAGELOCATIONDATA        =  BAPI_STORAGELOCATIONDATA
   STORAGELOCATIONDATAX       =  BAPI_STORAGELOCATIONDATAX
   SALESDATA                  =  BAPI_SALESDATA
   SALESDATAX                 =  BAPI_SALESDATAX
 IMPORTING
   RETURN                     =  IT_RET
 TABLES
   MATERIALDESCRIPTION        = IT_MAKT
*   UNITSOFMEASURE             =
*   UNITSOFMEASUREX            =
*   INTERNATIONALARTNOS        =
*   MATERIALLONGTEXT           =
*   TAXCLASSIFICATIONS         =
*   RETURNMESSAGES             =
*   PRTDATA                    =
*   PRTDATAX                   =
*   EXTENSIONIN                =
*   EXTENSIONINX               =
          .

APPEND IT_RET.

ENDFORM.                    " F_CALL_BAPI
*&---------------------------------------------------------------------*
*&      Form  F_BAPI_COMMIT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM F_BAPI_COMMIT .

CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
* EXPORTING
*   WAIT         =
* IMPORTING
*   RETURN        =
          .







ENDFORM.                    " F_BAPI_COMMIT

Former Member
0 Kudos

Check out the documentation.Its prety detailed

Former Member
0 Kudos

Hi SRK,

Check the below code.

BAPI to Copy Materials from one Plant to Another 
*
* Copy Materials from one Plant to Another
* First run   GETDATA AS CHECKBOX, "Tick to download materials data to local harddisk
* Second run  UPDDATA AS CHECKBOX. "Tick to update date to Materials Master
* Check data in Excel before Second run
* 
REPORT ZBAPIMM01 LINE-SIZE 255 NO STANDARD PAGE HEADING
                 LINE-COUNT 065(001).
 
TABLES: T001L, "Storage Locations
        MARA,  "General Material Data
        MAKT,  "Material Descriptions
        MBEW,  "Material Valuation
        MARC.  "Plant Data for Material
 
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_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
         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 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.
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.
 
    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
            MARC-EKGRP,    "Purchasing group
            MBEW-VPRSV,    "Price control indicator
            MBEW-STPRS,    "Standard price
            MBEW-PEINH,    "Price unit
            MAKT-SPRAS,    "Language key
            MAKT-MAKTX.    "Material description
 
            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-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-MAKTX = MAKT-MAKTX.    "Material description
 
            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.
* 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_MARCX-PLANT      = INT_MAT-WERKS.
    BAPI_MARCX-PUR_GROUP  = 'X'.
* Accounting
    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_MBEWX-VAL_AREA   = INT_MAT-WERKS.
    BAPI_MBEWX-PRICE_CTRL = 'X'.
    BAPI_MBEWX-STD_PRICE  = 'X'.
    BAPI_MBEWX-PRICE_UNIT = 'X'.
 
    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
*       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        = INT_MAKT
*       UNITSOFMEASURE             =
*       UNITSOFMEASUREX            =
*       INTERNATIONALARTNOS        =
*       MATERIALLONGTEXT           =
*       TAXCLASSIFICATIONS         =
*       RETURNMESSAGES             =
*       PRTDATA                    =
*       PRTDATAX                   =
*       EXTENSIONIN                =
*       EXTENSIONINX               =
          .
 
IF BAPI_RETURN-TYPE = 'E'.
   WRITE:/ 'Error Message ', BAPI_RETURN.
ENDIF.
 
ENDLOOP.
ENDFORM.