‎2007 Aug 29 4:33 AM
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
‎2007 Aug 29 10:24 AM
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........
‎2007 Aug 29 4:38 AM
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
‎2007 Aug 29 5:27 AM
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.
‎2007 Aug 29 5:42 AM
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......
‎2007 Aug 29 10:14 AM
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
‎2007 Aug 29 5:43 AM
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
‎2007 Aug 29 10:24 AM
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........
‎2007 Aug 29 10:31 AM
HI RAAM,
what u sent is SALE ORDER BAPI. right?
if u hav cust master send it plz.
Thanks ,
Senthil kumar