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
935

hi SDNers,

I want to write a BDC for customer master updation. but for a change i am going to write in BAPI.Is any BAPI exist for this one? and also i need a BAPI for sale order updation.

Reward sure if it is helpful.

Thanks and regards,

Senthil kumar

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
897

then use gui_upload along with.......f4_filename function modules ..........

or use cl_gui_frontendservices...>file_opendialog along with gui_download ......

DATA : V_VBELN TYPE BAPIVBELN-VBELN.

DATA: IT_HEADER TYPE TABLE OF ZBAPISDHD1 WITH HEADER LINE,

IT_ITEM TYPE TABLE OF ZBAPISDITM WITH HEADER LINE,

IT_PARTNER TYPE TABLE OF ZBAPIPARNR WITH HEADER LINE,

IT_RETURN TYPE TABLE OF BAPIRET2 WITH HEADER LINE.

TYPES: BEGIN OF TY_HEADER,

DOC_TYPE TYPE AUART, "Sales Document Type

SALES_ORG TYPE VKORG, "Sales Organization

DISTR_CHAN TYPE VTWEG, "Distribution Channel

IN_DIVISION TYPE SPART, "Division

BSTZD TYPE BSTZD, "Customer purchase order number

END OF TY_HEADER,

TT_HEADER TYPE STANDARD TABLE OF TY_HEADER.

TYPES: BEGIN OF TY_PARTNER,

PARTN_NUMB TYPE KUNNR, "Sold-to party

END OF TY_PARTNER,

TT_PARTNER TYPE STANDARD TABLE OF TY_PARTNER.

TYPES: BEGIN OF TY_ITEM,

MATERIAL TYPE MATNR, "material number

TARGET_QTY TYPE DZMENG, "Target quantity in sales units

END OF TY_ITEM,

TT_ITEM TYPE STANDARD TABLE OF TY_ITEM.

TYPES: BEGIN OF TY_TABLE,

DOC_TYPE TYPE AUART, "Sales Document Type

SALES_ORG TYPE VKORG, "Sales Organization

DISTR_CHAN TYPE VTWEG, "Distribution Channel

IN_DIVISION TYPE SPART, "Division

BSTZD TYPE BSTZD, "Customer purchase order number

PARTN_NUMB TYPE KUNNR, "Sold-to party

PARTN_ROLE TYPE PARVW, "Partner function

MATERIAL TYPE MATNR, "material number

TARGET_QTY TYPE DZMENG, "Target quantity in sales units

END OF TY_TABLE,

TT_TABLE TYPE STANDARD TABLE OF TY_TABLE.

DATA: WA_HEADER TYPE TY_HEADER,

  • it_header type tt_header,

WA_ITEM TYPE TY_ITEM,

  • it_item type tt_item,

WA_PARTNER TYPE TY_PARTNER,

  • it_partner type tt_partner,

WA_TABLE TYPE TY_TABLE,

IT_TABLE TYPE TT_TABLE.

DATA: FILENAME TYPE STRING, "Default File Name

FILETABLE TYPE FILETABLE, "Table Holding Selected Files

V_RC TYPE I, "Return Code, Number of Files or -1 If Error Occurred

V_FILE TYPE STRING. "

FILENAME = 'C:\Documents and Settings\ramyav\Desktop\raam.txt'..

CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG

EXPORTING

  • WINDOW_TITLE =

  • DEFAULT_EXTENSION =

DEFAULT_FILENAME = FILENAME

  • FILE_FILTER =

  • WITH_ENCODING =

  • INITIAL_DIRECTORY =

  • MULTISELECTION =

CHANGING

FILE_TABLE = FILETABLE

RC = V_RC

  • USER_ACTION =

  • FILE_ENCODING =

EXCEPTIONS

FILE_OPEN_DIALOG_FAILED = 1

CNTL_ERROR = 2

ERROR_NO_GUI = 3

NOT_SUPPORTED_BY_GUI = 4

OTHERS = 5

.

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 SY-SUBRC = 0.

READ TABLE FILETABLE INDEX 1 INTO V_FILE.

ENDIF.

IF V_RC = 1.

CALL FUNCTION 'GUI_UPLOAD'

EXPORTING

FILENAME = V_FILE

FILETYPE = 'ASC'

HAS_FIELD_SEPARATOR = 'X'

  • HEADER_LENGTH = 0

  • READ_BY_LINE = 'X'

  • DAT_MODE = ' '

  • CODEPAGE = ' '

  • IGNORE_CERR = ABAP_TRUE

  • REPLACEMENT = '#'

  • CHECK_BOM = ' '

  • VIRUS_SCAN_PROFILE = VIRUS_SCAN_PROFILE

  • NO_AUTH_CHECK = ' '

  • IMPORTING

  • FILELENGTH = FILELENGTH

  • HEADER = HEADER

TABLES

DATA_TAB = IT_TABLE

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.

ENDIF.

LOOP AT IT_TABLE INTO WA_TABLE.

AT FIRST.

READ TABLE IT_TABLE INDEX SY-TABIX INTO WA_TABLE.

*Populate Header Data

PERFORM POPULATE_HEADER.

*Populate Partner Details

PERFORM POPULATE_PARTNER.

ENDAT.

AT NEW MATERIAL.

READ TABLE IT_TABLE INDEX SY-TABIX INTO WA_TABLE.

IF NOT SY-TABIX = 1.

*Call BAPI

PERFORM CALL_BAPI.

*Populate Header Data

PERFORM POPULATE_HEADER.

*Populate Partner Details

PERFORM POPULATE_PARTNER.

ENDIF.

ENDAT.

*Populate Item Data

PERFORM POPULATE_ITEMS.

AT LAST.

READ TABLE IT_TABLE INDEX SY-TABIX INTO WA_TABLE.

*Call BAPI

PERFORM CALL_BAPI.

ENDAT.

ENDLOOP.

&----


*& Form populate_header

&----


FORM POPULATE_HEADER .

IT_HEADER-DOC_TYPE = WA_TABLE-DOC_TYPE.

IT_HEADER-SALES_ORG = WA_TABLE-SALES_ORG.

IT_HEADER-DISTR_CHAN = WA_TABLE-DISTR_CHAN.

IT_HEADER-DIVISION = WA_TABLE-IN_DIVISION.

IT_HEADER-PO_SUPPLEM = WA_TABLE-BSTZD .

APPEND IT_HEADER.

ENDFORM. " populate_header

&----


*& Form populate_partner

&----


FORM POPULATE_PARTNER .

IT_PARTNER-PARTN_NUMB = WA_TABLE-PARTN_NUMB .

IT_PARTNER-PARTN_ROLE = WA_TABLE-PARTN_ROLE.

APPEND IT_PARTNER.

ENDFORM. " populate_partner

&----


*& Form populate_items

&----


FORM POPULATE_ITEMS .

IT_ITEM-MATERIAL = WA_TABLE-MATERIAL.

IT_ITEM-TARGET_QTY = WA_TABLE-TARGET_QTY.

APPEND IT_ITEM.

ENDFORM. " populate_items

&----


*& Form call_bapi

&----


FORM CALL_BAPI .

CALL FUNCTION 'ZBAPI_SALES_ORDERCREATE'

EXPORTING

HEADER = IT_HEADER

  • IMPORTING

  • VBELN = VBELN

TABLES

ITEM = IT_ITEM

PARTNER = IT_PARTNER

RETURN = IT_RETURN

.

  • clear: it_headER, it_headER,

  • it_ITEM, it_Item,

  • it_PARTNER, it_PARTNER.

CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'

EXPORTING

WAIT = '1'

IMPORTING

RETURN = IT_RETURN.

*WRITE: IT_RETURN.

ENDFORM. " call_bapi

reward points if helpful........

7 REPLIES 7
Read only

gopi_narendra
Active Contributor
0 Likes
897

Hi check these BAPI's

BAPI_CUSTOMER_CHANGEFROMDATA1 for customer master updating

BAPI_CUSTOMER_CREATEFROMDATA1 for creating customer master

BAPI_SALESORDER_CHANGE for changing sales order

BAPI_SALESORDER_CREATEFROMDAT2 for creating sales order

Regards

Gopi

Read only

Former Member
0 Likes
897

Hi Senthil,

At any point in time, if you want to have a solution which is an alternative to making a BDC/LSMW, go for checking for BAPIs in the system.

In your case, you can make use of the following BAPIs and test:

BAPI_CUSTOMER_CHANGEFROMDATA1 for customer master updating

BAPI_CUSTOMER_CREATEFROMDATA1 for creating customer master

BAPI_SALESORDER_CHANGE for changing sales order

BAPI_SALESORDER_CREATEFROMDAT2 for creating sales order

Usually, all the transaction updation logic will be kept in a BAPI and so, please go by checking for a BAPI and if not there, go with BDC/LSMW concept.

thanks,

Vishnu.

Read only

Former Member
0 Likes
897

if u want to create a customer master using bapi then u should use BAPI_CUSTOMER_CREATEFROMDATA1

if u want to change or update existing customer master data then u need to opt for

BAPI_CUSTOMER_CHANGEFROMDATA1

here is sample code for creating customer master data go through this .....

data:it_personaldata like standard table of bapikna101_1 with header line,

it_copyreference like standard table of bapikna102 with header line,

return like standard table of bapireturn1 with header line.

data:v_customerno like bapikna103-customer.

it_personaldata-title_p = 'Mr'.

it_personaldata-firstname = 'Srinivas'.

it_personaldata-city = 'Hyderabad'.

it_personaldata-langu_p = 'EN'.

*DISTRICT

*POSTL_COD1

*POSTL_COD2

*PO_BOX

*PO_BOX_CIT

*STREET

*HOUSE_NO

*BUILDING

*FLOOR

*ROOM_NO

it_personaldata-country = 'IN'.

append it_personaldata.

call function 'BAPI_CUSTOMER_CREATEFROMDATA1'

exporting

pi_personaldata = it_personaldata

  • PI_OPT_PERSONALDATA = PI_OPT_PERSONALDATA

  • PI_COMPANYDATA = PI_COMPANYDATA

  • PI_OPT_COMPANYDATA = PI_OPT_COMPANYDATA

  • PI_CONSUMEREN = PI_CONSUMEREN

pi_copyreference = it_copyreference

  • PI_CREDIT_CONTROL_FLAG = PI_CREDIT_CONTROL_FLAG

importing

customerno = v_customerno

return = return.

append return.

loop at return.

write:/ return-type, return-message.

endloop.

reward points if useful......

Read only

0 Likes
897

Hi raam,

Thanks for given the sample code.

Now i got some idea about BAPI. but i am uploading datas from legacy system and also i am havin 1000s of records with 42 fields.give some suggestions....

Senthil kumar

Read only

Former Member
0 Likes
897

Hi Senthil,

Try these out.

BAPI_CUSTOMER_CREATE Create Customer Master Online

BAPI_CUSTOMER_DELETE Delete Customer Master Online

BAPI_CUSTOMER_DISPLAY Display Customer Master Online

BAPI_CUSTOMER_EDIT Change Customer Master Online

BAPI_CUSTOMER_EXISTENCECHECK Check Customer Existence

BAPI_CUSTOMER_FIND Customer Matchcode

BAPI_CUSTOMER_GETCONTACTLIST Read contact persons from customers

BAPI_CUSTOMER_GETDETAIL2 Customer Detail Information

BAPI_CUSTOMER_GETINTNUMBER Provides Internal Customer Numbers

BAPI_CUSTOMER_GETLIST Reads customers and addresses

BAPI_CUSTOMER_CREATEFROMDATA

BAPI_CUSTOMER_CREATEFROMDATA1

<b>Reward Points if Useful</b>

Regards

Gokul

Read only

Former Member
0 Likes
898

then use gui_upload along with.......f4_filename function modules ..........

or use cl_gui_frontendservices...>file_opendialog along with gui_download ......

DATA : V_VBELN TYPE BAPIVBELN-VBELN.

DATA: IT_HEADER TYPE TABLE OF ZBAPISDHD1 WITH HEADER LINE,

IT_ITEM TYPE TABLE OF ZBAPISDITM WITH HEADER LINE,

IT_PARTNER TYPE TABLE OF ZBAPIPARNR WITH HEADER LINE,

IT_RETURN TYPE TABLE OF BAPIRET2 WITH HEADER LINE.

TYPES: BEGIN OF TY_HEADER,

DOC_TYPE TYPE AUART, "Sales Document Type

SALES_ORG TYPE VKORG, "Sales Organization

DISTR_CHAN TYPE VTWEG, "Distribution Channel

IN_DIVISION TYPE SPART, "Division

BSTZD TYPE BSTZD, "Customer purchase order number

END OF TY_HEADER,

TT_HEADER TYPE STANDARD TABLE OF TY_HEADER.

TYPES: BEGIN OF TY_PARTNER,

PARTN_NUMB TYPE KUNNR, "Sold-to party

END OF TY_PARTNER,

TT_PARTNER TYPE STANDARD TABLE OF TY_PARTNER.

TYPES: BEGIN OF TY_ITEM,

MATERIAL TYPE MATNR, "material number

TARGET_QTY TYPE DZMENG, "Target quantity in sales units

END OF TY_ITEM,

TT_ITEM TYPE STANDARD TABLE OF TY_ITEM.

TYPES: BEGIN OF TY_TABLE,

DOC_TYPE TYPE AUART, "Sales Document Type

SALES_ORG TYPE VKORG, "Sales Organization

DISTR_CHAN TYPE VTWEG, "Distribution Channel

IN_DIVISION TYPE SPART, "Division

BSTZD TYPE BSTZD, "Customer purchase order number

PARTN_NUMB TYPE KUNNR, "Sold-to party

PARTN_ROLE TYPE PARVW, "Partner function

MATERIAL TYPE MATNR, "material number

TARGET_QTY TYPE DZMENG, "Target quantity in sales units

END OF TY_TABLE,

TT_TABLE TYPE STANDARD TABLE OF TY_TABLE.

DATA: WA_HEADER TYPE TY_HEADER,

  • it_header type tt_header,

WA_ITEM TYPE TY_ITEM,

  • it_item type tt_item,

WA_PARTNER TYPE TY_PARTNER,

  • it_partner type tt_partner,

WA_TABLE TYPE TY_TABLE,

IT_TABLE TYPE TT_TABLE.

DATA: FILENAME TYPE STRING, "Default File Name

FILETABLE TYPE FILETABLE, "Table Holding Selected Files

V_RC TYPE I, "Return Code, Number of Files or -1 If Error Occurred

V_FILE TYPE STRING. "

FILENAME = 'C:\Documents and Settings\ramyav\Desktop\raam.txt'..

CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG

EXPORTING

  • WINDOW_TITLE =

  • DEFAULT_EXTENSION =

DEFAULT_FILENAME = FILENAME

  • FILE_FILTER =

  • WITH_ENCODING =

  • INITIAL_DIRECTORY =

  • MULTISELECTION =

CHANGING

FILE_TABLE = FILETABLE

RC = V_RC

  • USER_ACTION =

  • FILE_ENCODING =

EXCEPTIONS

FILE_OPEN_DIALOG_FAILED = 1

CNTL_ERROR = 2

ERROR_NO_GUI = 3

NOT_SUPPORTED_BY_GUI = 4

OTHERS = 5

.

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 SY-SUBRC = 0.

READ TABLE FILETABLE INDEX 1 INTO V_FILE.

ENDIF.

IF V_RC = 1.

CALL FUNCTION 'GUI_UPLOAD'

EXPORTING

FILENAME = V_FILE

FILETYPE = 'ASC'

HAS_FIELD_SEPARATOR = 'X'

  • HEADER_LENGTH = 0

  • READ_BY_LINE = 'X'

  • DAT_MODE = ' '

  • CODEPAGE = ' '

  • IGNORE_CERR = ABAP_TRUE

  • REPLACEMENT = '#'

  • CHECK_BOM = ' '

  • VIRUS_SCAN_PROFILE = VIRUS_SCAN_PROFILE

  • NO_AUTH_CHECK = ' '

  • IMPORTING

  • FILELENGTH = FILELENGTH

  • HEADER = HEADER

TABLES

DATA_TAB = IT_TABLE

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.

ENDIF.

LOOP AT IT_TABLE INTO WA_TABLE.

AT FIRST.

READ TABLE IT_TABLE INDEX SY-TABIX INTO WA_TABLE.

*Populate Header Data

PERFORM POPULATE_HEADER.

*Populate Partner Details

PERFORM POPULATE_PARTNER.

ENDAT.

AT NEW MATERIAL.

READ TABLE IT_TABLE INDEX SY-TABIX INTO WA_TABLE.

IF NOT SY-TABIX = 1.

*Call BAPI

PERFORM CALL_BAPI.

*Populate Header Data

PERFORM POPULATE_HEADER.

*Populate Partner Details

PERFORM POPULATE_PARTNER.

ENDIF.

ENDAT.

*Populate Item Data

PERFORM POPULATE_ITEMS.

AT LAST.

READ TABLE IT_TABLE INDEX SY-TABIX INTO WA_TABLE.

*Call BAPI

PERFORM CALL_BAPI.

ENDAT.

ENDLOOP.

&----


*& Form populate_header

&----


FORM POPULATE_HEADER .

IT_HEADER-DOC_TYPE = WA_TABLE-DOC_TYPE.

IT_HEADER-SALES_ORG = WA_TABLE-SALES_ORG.

IT_HEADER-DISTR_CHAN = WA_TABLE-DISTR_CHAN.

IT_HEADER-DIVISION = WA_TABLE-IN_DIVISION.

IT_HEADER-PO_SUPPLEM = WA_TABLE-BSTZD .

APPEND IT_HEADER.

ENDFORM. " populate_header

&----


*& Form populate_partner

&----


FORM POPULATE_PARTNER .

IT_PARTNER-PARTN_NUMB = WA_TABLE-PARTN_NUMB .

IT_PARTNER-PARTN_ROLE = WA_TABLE-PARTN_ROLE.

APPEND IT_PARTNER.

ENDFORM. " populate_partner

&----


*& Form populate_items

&----


FORM POPULATE_ITEMS .

IT_ITEM-MATERIAL = WA_TABLE-MATERIAL.

IT_ITEM-TARGET_QTY = WA_TABLE-TARGET_QTY.

APPEND IT_ITEM.

ENDFORM. " populate_items

&----


*& Form call_bapi

&----


FORM CALL_BAPI .

CALL FUNCTION 'ZBAPI_SALES_ORDERCREATE'

EXPORTING

HEADER = IT_HEADER

  • IMPORTING

  • VBELN = VBELN

TABLES

ITEM = IT_ITEM

PARTNER = IT_PARTNER

RETURN = IT_RETURN

.

  • clear: it_headER, it_headER,

  • it_ITEM, it_Item,

  • it_PARTNER, it_PARTNER.

CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'

EXPORTING

WAIT = '1'

IMPORTING

RETURN = IT_RETURN.

*WRITE: IT_RETURN.

ENDFORM. " call_bapi

reward points if helpful........

Read only

0 Likes
897

HI RAAM,

what u sent is SALE ORDER BAPI. right?

if u hav cust master send it plz.

Thanks ,

Senthil kumar