Application Development and Automation 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: 
Read only

BAPI

Former Member
0 Likes
791

can any one tell me the steps involved in BAPI from Basics

6 REPLIES 6
Read only

Former Member
0 Likes
737

A BAPI is defined as a method of an SAP Business Object.

To use a BAPI method, an application program only needs to know how to call the method; that is, it needs to know the method's interface definition. A BAPI interface is defined by:

Import parameters

Export parameters

Import/export (table) parameters

The BAPIs in the R/3 System are currently implemented as function modules, all of which are held in the Function Builder. Each function module underlying a BAPI:

· Supports the Remote Function Call (RFC) protocol

· Has been assigned as a method to an SAP Business Object in the BOR

· Is processed without returning any screen dialogs to the calling application

steps involved in BAPI

In the application hierarchy of the BAPI Browser you can display all the SAP business object types for which BAPIs have been implemented:

Tools ->Business Framework -> BAPI Browser : BAPI45.

Expand the nodes and the subordinate nodes of one of the application components

To open an object type, double-click on it.

To display a list of the key fields of the object, expand the node Key fields

To display a list of the BAPIs available for this SAP business object type, expand the node Methods

To display the parameters of a BAPI, expand the node for the BAPI and then the Parameters node

Plz Reward Points If you find this answer good.

Thanks and Regards.

- Richa Khosla.

Read only

Former Member
0 Likes
737

/thread/678543 [original link is broken]

Read only

Former Member
0 Likes
737

http://www.sapmaterial.com/?gclid=CN322K28t4sCFQ-WbgodSGbK2g....>ALL

STEP BY STEP for BAPI

http://sap-img.com/abap/bapi-step-by-step-guidance.htm

BAPI Programming Guide

http://help.sap.com/printdocu/core/Print46c/en/data/pdf/CABFABAPIREF/CABFABAPIPG.pdf

BAPI User Guide

http://help.sap.com/printdocu/core/Print46c/en/data/pdf/BCMIDAPII/CABFAAPIINTRO.pdf

http://techrepublic.com.com/5100-6329-1051160.html#

http://www.sap-img.com/bapi.htm

http://www.sap-img.com/abap/bapi-conventions.htm

http://www.sappoint.com/abap/bapiintro.pdf

http://ifr.sap.com/catalog/query.asp

http://www.saptechnical.com/Tutorials/BAPI/BAPIMainPage.htm

step by step BAPI Creation with screen shots.

http://www.sapgenie.com/abap/bapi/example.htm

BAPI Programming guide: -

http://help.sap.com/saphelp_nw04/helpdata/en/e0/9eb2370f9cbe68e10000009b38f8cf/frameset.htm

BAPI user guide: -

http://help.sap.com/saphelp_46c/helpdata/en/7e/5e115e4a1611d1894c0000e829fbbd/frameset.htm

BAPI STEP BY STEP PROCEDURE: -

http://www.sap-img.com/abap/bapi-step-by-step-guidance.htm

Example:-

http://www.erpgenie.com/abap/bapi/example.htm

PDF download: -

https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/200dd1cc-589e-2910-98a9-bb2c48b7...

list of all bapis

http://www.planetsap.com/LIST_ALL_BAPIs.htm

for BAPI's

http://www.sappoint.com/abap/bapiintro.pdf

http://www.sappoint.com/abap/bapiprg.pdf

http://www.sappoint.com/abap/bapiactx.pdf

http://www.sappoint.com/abap/bapilst.pdf

http://www.sappoint.com/abap/bapiexer.pdf

http://service.sap.com/ale

http://service.sap.com/bapi

http://help.sap.com/printdocu/core/Print46c/en/data/pdf/BCMIDAPII/CABFAAPIINTRO.pdf

http://help.sap.com/printdocu/core/Print46c/en/data/pdf/CABFABAPIREF/CABFABAPIPG.pdf

http://help.sap.com/printdocu/core/Print46c/en/data/pdf/BCFESDE8/BCFESDE8.pdf

http://www.planetsap.com/Bapi_main_page.htm

http://www.topxml.com/sap/sap_idoc_xml.asp

http://www.sapdevelopment.co.uk/

http://www.sapdevelopment.co.uk/java/jco/bapi_jco.pdf

Also refer to the following links..

http://www.sap-img.com/bapi.htm

http://www.sap-img.com/abap/bapi-conventions.htm

http://www.planetsap.com/Bapi_main_page.htm

http://www.sapgenie.com/abap/bapi/index.htm

Checkout !!

http://searchsap.techtarget.com/originalContent/0,289142,sid21_gci948835,00.html

http://techrepublic.com.com/5100-6329-1051160.html#

http://www.saptechnical.com/Tutorials/BAPI/CustomBAPICreation2/page1.htm

There are 5 different steps in BAPI.

Create BAPI Structure

Create BAPI Function Module or API Method.

Create BAPI object

Release BAPI Function Module.

Release BAPI object.

Step1. Creating BAPI Structure:

Go to <SE11>.

Select Data Type & Enter a name.

Click on Create.

Note: Always BAPI should be in a development class with request number (Not Local Object).

Select Structure & hit ENTER.

Enter the fields from your database. Make sure that the first field is the Primary Key Field.

Then SAVE & ACTIVATE.

Step 2. Creating BAPI module:

Enter TR.CODE <SE37>.

Before entering any thing, from the present screen that you are in, select the menu

Goto -> Function Groups -> Create Group.

Enter a name (Note: This name Must start with ZBAPI)

Let this screen be as it is and open another window and there, enter TR.CODE <SE80).

Click on the Third ICON that says Inactive Objects.

Select the group that you just created and click on Activate.

Notice that the group you created will disappear from the list of inactive objects.

Go back to <SE37> screen and enter a name and hit <ENTER>. Then enter the group name that you just created and activated.

NOTE: When you release a function module the respective group will be attached to that particular application. It cannot be used for any other application. NEVER include an already existing group that is attached to another module.

Now click on the first Tab that says ATTRIBUTES and select the radio button that says remote-enabled module since we will be accessing this from any external system.

Then click on the second tab that says IMPORT.

Enter a PARAMETER NAME, TYPE and the structure you created in the first step. Also select the check box ‘Pa’. All remotely enabled functional modules MUST be Pa enabled, where Pa means ‘Passed by Value’ and if you don’t select ‘Pa’, then that means it will be passed by reference..

Then click on tab that says EXPORT.

Enter the following as is in the first three fields

RETURN TYPE BAPIRETURN (These 3 field values are always same)

Here also select ‘Pa’ meaning Pass by value.

Note: BAPIRETURN contains structure with message fields.

Then SAVE and ACTIVATE.

Step 3. Creating BAPI object:

Enter Tr.Code <SWO1> (Note. It is letter ‘O’ and not Zero).

Enter a name and then click on create. Enter details.

NOTE: Make sure that that Object Type and Program name are SAME.

Enter Application ‘M’, if you are using standard table Mara. If you are using your own database then select ‘Z’ at the bottom.

Then hit <ENTER>.

Now we have to add ‘Methods’. High light METHODS and then select the following from the menu:

Goto Utilities -> API Methods -> Add Methods.

Enter function Module name and hit <ENTER>.

Select the second FORWARD ARROW button (>)to go to next step.

Check if every thing looks ok and again click on FORWARD ARROW button (>).

Then select ‘YES’ and click on <SAVE>.

Now on a different screen goto TR.CODE <SE37>. Enter Function Module name and select from the top menu Function Module -> Release -> Release.

Goback to TR.CODE <SWO1>.

Here select the menu combination shown below in the same order.

Edit -> Change Release Status -> Object Type Component -> To Implemented.

Edit -> Change Release Status -> Object Type Component -> To Released.

Edit -> Change Release Status -> Object Type -> To Implemented.

Edit -> Change Release Status -> Object Type -> To Released.

Then click on <SAVE>.

Then click on Generate Button (4th button from left hand side looks like spinning wheel).

Then Click on the button that says ‘PROGRAM’ to see the source code.

To check if this is present in work flow goto TR.CODE <BAPI>.

Here it shows business object repository.

First click on the middle button and then select “ALL” and hit ENTER.

Goto tab ALPHABETICAL and look for the object that you created. This shows that the BAPI object has been created successfully

BAPI/RFC Interface

A remote function call is a call to a function module running in a system different from the caller's.

The remote function can also be called from within the same system (as a remote call), but usually caller and callee will be in different systems.

In the SAP System, the ability to call remote functions is provided by the Remote Function Call interface system (RFC). RFC allows for remote calls between two SAP Systems (R/3 or R/2), or between an SAP System and a non-SAP System.

RFC consists of the following interfaces:-

A calling interface for ABAP programs

Any ABAP program can call a remote function using the CALL FUNCTION...DESTINATION statement. The DESTINATION parameter tells the SAP System that the called function runs in a system other than the caller's.

RFC communication with the remote system happens as part of the CALL FUNCTION statement.

RFC functions running in an SAP System must be actual function modules, and must be registered in the SAP System as "remote".

When both caller and called program are ABAP programs, the RFC interface provides both partners to the communication. The caller may be any ABAP program, while the called program must be a function module registered as remote.

Calling interfaces for non-SAP programs

When either the caller or the called partner is a non-ABAP program, it must be programmed to play the other partner in an RFC communication.

To help implement RFC partner programs in non-SAP Systems, SAP provides-

External Interfaces

RFC-based and GUI-based interfaces can be used by external programs to call function modules in SAP R/2 or R/3 systems and execute them in these systems.

Vice versa, ABAP programs in R/2 or R/3 can use the functions provided by external programs via these interfaces.

Reward points..

Read only

Former Member
0 Likes
737

Hi,

Welcome to SDN!!

BAPI-step by step

http://www.sapgenie.com/abap/bapi/example.htm

list of all bapis

http://www.planetsap.com/LIST_ALL_BAPIs.htm

for BAPI's

http://www.sappoint.com/abap/bapiintro.pdf

http://www.sappoint.com/abap/bapiprg.pdf

http://www.sappoint.com/abap/bapiactx.pdf

http://www.sappoint.com/abap/bapilst.pdf

http://www.sappoint.com/abap/bapiexer.pdf

http://service.sap.com/ale

http://service.sap.com/bapi

http://help.sap.com/printdocu/core/Print46c/en/data/pdf/BCMIDAPII/CABFAAPIINTRO.pdf

http://help.sap.com/printdocu/core/Print46c/en/data/pdf/CABFABAPIREF/CABFABAPIPG.pdf

http://help.sap.com/printdocu/core/Print46c/en/data/pdf/BCFESDE8/BCFESDE8.pdf

http://www.planetsap.com/Bapi_main_page.htm

http://www.topxml.com/sap/sap_idoc_xml.asp

http://www.sapdevelopment.co.uk/

http://www.sapdevelopment.co.uk/java/jco/bapi_jco.pdf

Also refer to the following links..

www.sappoint.com/abap/bapiintro.pdf

www.sap-img.com/bapi.htm

www.sap-img.com/abap/bapi-conventions.htm

www.planetsap.com/Bapi_main_page.htm

www.sapgenie.com/abap/bapi/index.htm

Checkout !!

http://searchsap.techtarget.com/originalContent/0,289142,sid21_gci948835,00.html

http://techrepublic.com.com/5100-6329-1051160.html#

http://www.sap-img.com/bapi.htm

http://www.sap-img.com/abap/bapi-conventions.htm

http://www.sappoint.com/abap/bapiintro.pdf

u can check the below the material also

what is BAPI?

BAPI stands for Business API(Application Program Interface).

I have answered this question before..

A BAPI is remotely enabled function module ie it can be invoked from remote programs like standalone JAVA programs, web interface etc..

You can make your function module remotely enabled in attributes of Function module but

A BAPI are standard SAP function modules provided by SAP for remote access. Also they are part of Businees Objest Repository(BOR).

BAPI are RFC enabled function modules. the difference between RFc and BAPI are business objects. You create business objects and those are then registered in your BOR (Business Object Repository) which can be accessed outside the SAP system by using some other applications (Non-SAP) such as VB or JAVA. in this case u only specify the business object and its method from external system in BAPI there is no direct system call. while RFC are direct system call Some BAPIs provide basic functions and can be used for most SAP business object types. These BAPIs should be implemented the same for all business object types. Standardized BAPIs are easier to use and prevent users having to deal with a number of different BAPIs. Whenever possible, a standardized BAPI must be used in preference to an individual BAPI.

The following standardized BAPIs are provided:

Reading instances of SAP business objects

GetList ( ) With the BAPI GetList you can select a range of object key values, for example, company codes and material numbers.

The BAPI GetList() is a class method.

GetDetail() With the BAPI GetDetail() the details of an instance of a business object type are retrieved and returned to the calling program. The instance is identified via its key. The BAPI GetDetail() is an instance method. BAPIs that can create, change or delete instances of a business object type

The following BAPIs of the same object type have to be programmed so that they can be called several times within one transaction. For example, if, after sales order 1 has been created, a second sales order 2 is created in the same transaction, the second BAPI call must not affect the consistency of the sales order 2. After completing the transaction with a COMMIT WORK, both the orders are saved consistently in the database.

Create( ) and CreateFromData! ( )

The BAPIs Create() and CreateFromData() create an instance of an SAP business object type, for example, a purchase order. These BAPIs are class methods.

Change( )

The BAPI Change() changes an existing instance of an SAP business object type, for example, a purchase order. The BAPI Change () is an instance method.

Delete( ) and Undelete( ) The BAPI Delete() deletes an instance of an SAP business object type from the database or sets a deletion flag.

The BAPI Undelete() removes a deletion flag. These BAPIs are instance methods.

Cancel ( ) Unlike the BAPI Delete(), the BAPI Cancel() cancels an instance of a business object type. The instance to be cancelled remains in the database and an additional instance is created and this is the one that is actually canceled. The Cancel() BAPI is an instance method.

Add<subobject> ( ) and Remove<subobject> ( ) The BAPI Add<subobject> adds a subobject to an existing object inst! ance and the BAPI and Remove<subobject> removes a subobject from an object instance. These BAPIs are instance methods.

Example Code

U need to give the step_nr, item_nr, cond_count and cond_type so the correct conditon will be updated. If no condition exists for the given parameters, a new condition will be created.

U can find these parameters for a particular condition type in table KONV.

&----


*& Form saveTransactionJOCR

&----


text

-


--> p1 text

<-- p2 text

-


FORM saveTransactionJOCR .

data: salesdocument like BAPIVBELN-VBELN,

order_header_inx like bapisdh1x,

order_header_in like bapisdh1,

return type standard table of bapiret2 with header line,

conditions_in type standard table of bapicond with header line,

conditions_inx type standard table of bapicondx with header line,

logic_switch like BAPISDLS,

step_nr like conditions_in-cond_st_no,

item_nr like conditions_in-itm_number,

cond_count like conditions_in-cond_count,

cond_type like conditions_in-cond_type.

salesdocument = wa_order_information-VBELN.

LOGIC_SWITCH-COND_HANDL = 'X'.

order_header_inx-updateflag = 'U'.

conditions

clear conditions_in[].

clear conditions_inx[].

clear: step_nr,

item_nr,

cond_count,

cond_type.

step_nr = '710'.

item_nr = '000000'.

cond_count = '01'.

cond_type = 'ZCP2'.

CONDITIONS_IN-ITM_NUMBER = item_nr.

conditions_in-cond_st_no = step_nr.

CONDITIONS_IN-COND_COUNT = cond_count.

CONDITIONS_IN-COND_TYPE = cond_type.

CONDITIONS_IN-COND_VALUE = 666.

CONDITIONS_IN-CURRENCY = 'EUR'.

append conditions_in.

CONDITIONS_INX-ITM_NUMBER = item_nr.

conditions_inx-cond_st_no = step_nr.

CONDITIONS_INX-COND_COUNT = cond_count.

CONDITIONS_INX-COND_TYPE = cond_type.

CONDITIONS_INX-UPDATEFLAG = 'U'.

CONDITIONS_INX-COND_VALUE = 'X'.

CONDITIONS_INX-CURRENCY = 'X'.

append conditions_inx.

CALL FUNCTION 'BAPI_SALESORDER_CHANGE'

EXPORTING

SALESDOCUMENT = salesdocument

ORDER_HEADER_IN = order_header_in

ORDER_HEADER_INX = order_header_inx

LOGIC_SWITCH = logic_switch

TABLES

RETURN = return

CONDITIONS_IN = conditions_in

CONDITIONS_INX = conditions_inx

.

if return-type ne 'E'.

commit work and wait.

endif.

ENDFORM. " saveTransactionJOCR

Bdc to Bapi

The steps to be followed are :

1. Find out the relevant BAPI (BAPI_SALESORDER_CHANGE for VA02).

for VA01 use BAPI_SALESORDER_CREATEFROMDAT2

2. Create a Z program and call the BAPi (same as a Funtion module call).

2. Now, if you see this BAPi, it has

-> Importing structures.

eg: SALESDOCUMENT: this will take the Sales order header data as input.

-> Tables parameters:

eg: ORDER_ITEM_IN: this will take the line item data as input.

Note :

Only specify fields that should be changed

Select these fields by entering an X in the checkboxes

Enter a U in the UPDATEFLAG field

Always specify key fields when changing the data, including in the checkboxes

The configuration is an exception here. If this needs to be changed, you need to complete it again fully.

Maintain quantities and dates in the schedule line data

Possible UPDATEFLAGS:

U = change

D = delete

I = add

Example

1. Delete the whole order

2. Delete order items

3. Change the order

4. Change the configuration

Notes

1. Minimum entry:

You must enter the order number in the SALESDOCUMENT structure.

You must always enter key fields for changes.

You must always specify the update indicator in the ORDER_HEADER_INX.

2. Commit control:

The BAPI does not run a database Commit, which means that the application must trigger the Commit so that the changes are read to the database. To do this, use the BAPI_TRANSACTION_COMMIT BAPI.

For further details... refer to the Function Module documentation for the BAPi.

Bapi to VB(Visual Basic)

Long back I had used the following flow structure to acheive the same.

Report -> SM59 RFC destination -> COM4ABAP -> VB.exe

my report uses the rfc destination to create a COM session with com4abap. com4abap calls the vb.exe and manages the flow of data between sap and vb exe.

You need to have com4abap.exe

If com4abap is installed you will find it in sapgui installatin directory , C:\Program Files\SAPpc\sapgui\RFCSDK\com4abap.

else refer OSS note 419822 for installation of com4abap

after making the settings in com4abap to point to the vb program and setting up rfc destination in sm59 to point to com4abap session , you can use the following function modules to call the vb code.

for setting up com4abap and rfc destination please refer to the documentation for com4abap.

Invoke NEW DCOM session

call function 'BEGIN_COM_SESSION'

exporting

service_dest = service_dest "(this will be a RFC destination created in SM59)

importing

worker_dest = worker_dest

exceptions

connect_to_dcom_service_failed = 1

connect_to_dcom_worker_failed = 2

others = 3.

call function 'create_com_instance' destination worker_dest

exporting

clsid = g_c_clsid

typelib = g_c_typelib

importing

instid = g_f_oid

exceptions

communication_failure = 1 message g_f_msg

system_failure = 2 message g_f_msg

invalid_instance_id = 3

others = 4.

call function 'com_invoke' destination worker_dest

exporting

%instid = g_f_oid

%method = 'UpdatePDF'

sntemp = g_v_const_filent

snsysid = sy-sysid

snflag = 'N'

tables

rssaptable = g_t_pdfdetail1

%return = g_t_pdfdetail1 "t_test

exceptions

communication_failure = 1 message g_f_msg

system_failure = 2 message g_f_msg

invalid_instance_id = 3

others = 4.

then close the com session , using

FM delete_com_instance

FM END_COM_SESSION

Regards

Read only

Former Member
0 Likes
737

Hi,

I will give u a code you will get an idea below code is to craete material master..

*&---------------------------------------------------------------------*
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

Bapi is used instead of BDC

Regards,

V.balaji

Reward if usefull