2006 Jul 25 6:19 PM
hi frnds i need the code for bapi .
· to Upload the data for Schedule line items for sales order using BAPI.
plzz hlp frnds its urgent.
2006 Jul 25 6:34 PM
hi rajesh,
Please check the following code in case its a bill of material
FORM CHECK_SALES_BOM TABLES ORDER_ITEMS_IN STRUCTURE BAPIITEMIN
ORDER_PARTNERS STRUCTURE ZBAPISHIP1.
CLEAR FLAG_CANCEL_CREATE.
CLEAR V_LINES1.
LOOP AT ORDER_ITEMS_IN.
V_ITM_NUMBER = ORDER_ITEMS_IN-ITM_NUMBER.
ORDER_ITEMS_IN-PO_ITM_NO = ORDER_ITEMS_IN-ITM_NUMBER. " DEVK942749
ORDER_ITEMS_IN-ITM_NUMBER = 10 * SY-TABIX + 10 * V_LINES1.
MODIFY ORDER_ITEMS_IN.
LOOP AT ORDER_PARTNERS WHERE ITEM_NUMB = V_ITM_NUMBER.
ORDER_PARTNERS-ITEM_NUMB = ORDER_ITEMS_IN-ITM_NUMBER.
MODIFY ORDER_PARTNERS.
ENDLOOP.
SELECT SINGLE KNUMH FROM KOTD001 INTO KOTD001-KNUMH
WHERE KAPPL = 'V'
AND KSCHL = 'A001'
AND MATWA = ORDER_ITEMS_IN-MATERIAL
AND DATBI GE SY-DATUM
AND DATAB LE SY-DATUM.
IF SY-SUBRC = 0.
SELECT SINGLE SMATN FROM KONDD INTO KONDD-SMATN
WHERE KNUMH = KOTD001-KNUMH.
ORDER_ITEMS_IN-MATERIAL = KONDD-SMATN.
ELSE.
ORDER_ITEMS_IN-MATERIAL = ORDER_ITEMS_IN-MATERIAL.
ENDIF.
CLEAR V_WERKS.
SELECT SINGLE DWERK MTPOS INTO (V_WERKS, MVKE-MTPOS) FROM MVKE
WHERE MATNR = ORDER_ITEMS_IN-MATERIAL
AND VKORG = WWW_ORDER_HEADER_EXP-VKORG
AND VTWEG = WWW_ORDER_HEADER_EXP-VTWEG.
IF MVKE-MTPOS EQ 'LUMF' OR MVKE-MTPOS EQ 'ZLUM'.
READ TABLE ORDER_PARTNERS WITH KEY ITEM_NUMB = V_ITM_NUMBER
PARTN_ROLE = 'WE'.
REFRESH : DA_MASTB,
DA_STKOB,
DA_STZUB.
CALL FUNCTION 'CS_ALT_SELECT_MAT'
EXPORTING
ALL = ' '
CAPID = 'SD01'
DATUV = SY-DATUM
DIALF = ' '
LOSGR = 0
MATNR = ORDER_ITEMS_IN-MATERIAL
NOTAB = 'X'
NRFDC = ' '
STLAL = ' '
STLAN = ' '
VPRIO = ' '
WERKS = V_WERKS
TABLES
MASTB_WA = DA_MASTB
STKOB_WA = DA_STKOB
STZUB_WA = DA_STZUB
EXCEPTIONS
ALT_NOT_FOUND = 1
BOM_NOT_ACTIVE = 2
BOM_NOT_FOUND = 3
CALL_INVALID = 4
NO_ALT_FOUND = 5
NO_BOM_FOUND = 6
OTHERS = 7.
READ TABLE DA_MASTB INDEX 1.
IF SY-SUBRC = 0.
CALL FUNCTION 'CS_BOM_EXPL_MAT_V2'
EXPORTING
CAPID = 'SD01'
DATUV = SY-DATUM
EMENG = 1
MEHRS = 'X'
MTNRV = ORDER_ITEMS_IN-MATERIAL
RNDKZ = '2'
STLAL = '01'
WERKS = V_WERKS
IMPORTING
TOPMAT = CSTMAT
TABLES
STB = TSTB
MATCAT =
EXCEPTIONS
ALT_NOT_FOUND = 1
CALL_INVALID = 2
MATERIAL_NOT_FOUND = 3
MISSING_AUTHORIZATION = 4
NO_BOM_FOUND = 5
NO_PLANT_DATA = 6
NO_SUITABLE_BOM_FOUND = 7
OTHERS = 8.
DESCRIBE TABLE TSTB LINES V_LINES.
ENDIF.
V_LINES1 = V_LINES + V_LINES1 .
CLEAR V_LINES.
ENDIF.
ENDLOOP.
or u can check below
u can populate both Line items and Schedule Line item structures - ORDER_ITEMS_IN and ORDER_SCHEDULES_IN respectively using BAPI_SALESORDER_CREATEFROMDAT2 to create sales order
hope this will help you.
Reward points if it helps
Regards,
Naveen
2006 Jul 25 6:29 PM
REPORT ZEXAMPLE.
data: hdr like bapiSDHD1.
data: itm like table of BAPIsditm with header line.
data: prtnr like table of BAPIPARNR with header line.
data: salesdoc like BAPIVBELN-VBELN.
data: ret like bapireturn1.
data: ret_tbl like table of bapiret2.
data: itm_out like table of bapisditm.
data: schd_lin like table of bapischdl with header line.
hdr-doc_type = 'TA'.
hdr-sales_org = '0001'.
hdr-distr_chan = '01'.
hdr-division = '01'.
hdr-req_date_h = sy-datum + 45.
hdr-purch_no_c = 'TES bapi'.
hdr-dlv_block = '01'.
hdr-ord_reason = '005'.
hdr-price_date = sy-datum + 10.
hdr-ship_cond = '07'.
hdr-created_by = 'UNIVRSEL'.
itm-itm_number = '1'.
itm-material = '000000000000003319'.
*tm-target_qty = '1000'.
itm-reason_rej = '99'.
itm-plant = '1380'.
itm-store_loc = 'QUAL'.
*tm-target_qu = 'PAL'.
itm-sales_unit = 'PAL'.
itm-ship_point = '1380'.
itm-route = '2369'.
itm-cust_mat35 = 'CustomerMaterial'.
append itm.
itm-itm_number = '2'.
itm-material = '000000000000003319'.
*tm-target_qty = '1000'.
itm-reason_rej = '99'.
itm-plant = '1380'.
itm-store_loc = 'QUAL'.
*tm-target_qu = 'PAL'.
itm-sales_unit = 'CS'.
itm-ship_point = '1380'.
itm-route = '2369'.
itm-cust_mat35 = 'CustomerMaterial'.
append itm.
schd_lin-itm_number = '1'.
schd_lin-req_qty = '1000'.
append schd_lin.
schd_lin-itm_number = '2'.
schd_lin-req_qty = '2000'.
append schd_lin.
prtnr-partn_role = 'SP'.
prtnr-partn_numb = '0001042449'.
append prtnr.
clear salesdoc.
CALL FUNCTION 'BAPI_SALESORDER_CREATEFROMDAT2'
EXPORTING
ORDER_HEADER_IN = hdr
convert = 'X'
IMPORTING
SALESDOCUMENT = salesdoc
TABLES
return = ret_tbl
ORDER_ITEMS_IN = itm
ORDER_PARTNERS = prtnr
ORDER_ITEMS_inx = itm_out
order_schedules_in = schd_lin
.
if sy-subrc = 0 and not salesdoc is initial.
write: / 'Sales Doc:',salesdoc.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT =
IMPORTING
RETURN =
.
endif.
2006 Jul 25 6:31 PM
CALL FUNCTION 'BAPI_COSTELEMENTGRP_GETDETAIL'
EXPORTING
CHARTOFACCOUNTS = 'CASA'
GROUPNAME = IT_GROUP-GROUPNAME
IMPORTING
RETURN =
TABLES
HIERARCHYNODES = it_tab
HIERARCHYVALUES = P_COSTELEMENT_VALUES
.
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
FILENAME = P_file
FILETYPE = 'ASC'
HAS_FIELD_SEPARATOR = ' '
HEADER_LENGTH = 0
READ_BY_LINE = 'X'
DAT_MODE = ' '
CODEPAGE = ' '
IGNORE_CERR = ABAP_TRUE
REPLACEMENT = '#'
CHECK_BOM = ' '
NO_AUTH_CHECK = ' '
IMPORTING
FILELENGTH =
HEADER = iT_tab.
TABLES
DATA_TAB =
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.
Then move from it_tab to ztable.
2006 Jul 25 6:34 PM
hi rajesh,
Please check the following code in case its a bill of material
FORM CHECK_SALES_BOM TABLES ORDER_ITEMS_IN STRUCTURE BAPIITEMIN
ORDER_PARTNERS STRUCTURE ZBAPISHIP1.
CLEAR FLAG_CANCEL_CREATE.
CLEAR V_LINES1.
LOOP AT ORDER_ITEMS_IN.
V_ITM_NUMBER = ORDER_ITEMS_IN-ITM_NUMBER.
ORDER_ITEMS_IN-PO_ITM_NO = ORDER_ITEMS_IN-ITM_NUMBER. " DEVK942749
ORDER_ITEMS_IN-ITM_NUMBER = 10 * SY-TABIX + 10 * V_LINES1.
MODIFY ORDER_ITEMS_IN.
LOOP AT ORDER_PARTNERS WHERE ITEM_NUMB = V_ITM_NUMBER.
ORDER_PARTNERS-ITEM_NUMB = ORDER_ITEMS_IN-ITM_NUMBER.
MODIFY ORDER_PARTNERS.
ENDLOOP.
SELECT SINGLE KNUMH FROM KOTD001 INTO KOTD001-KNUMH
WHERE KAPPL = 'V'
AND KSCHL = 'A001'
AND MATWA = ORDER_ITEMS_IN-MATERIAL
AND DATBI GE SY-DATUM
AND DATAB LE SY-DATUM.
IF SY-SUBRC = 0.
SELECT SINGLE SMATN FROM KONDD INTO KONDD-SMATN
WHERE KNUMH = KOTD001-KNUMH.
ORDER_ITEMS_IN-MATERIAL = KONDD-SMATN.
ELSE.
ORDER_ITEMS_IN-MATERIAL = ORDER_ITEMS_IN-MATERIAL.
ENDIF.
CLEAR V_WERKS.
SELECT SINGLE DWERK MTPOS INTO (V_WERKS, MVKE-MTPOS) FROM MVKE
WHERE MATNR = ORDER_ITEMS_IN-MATERIAL
AND VKORG = WWW_ORDER_HEADER_EXP-VKORG
AND VTWEG = WWW_ORDER_HEADER_EXP-VTWEG.
IF MVKE-MTPOS EQ 'LUMF' OR MVKE-MTPOS EQ 'ZLUM'.
READ TABLE ORDER_PARTNERS WITH KEY ITEM_NUMB = V_ITM_NUMBER
PARTN_ROLE = 'WE'.
REFRESH : DA_MASTB,
DA_STKOB,
DA_STZUB.
CALL FUNCTION 'CS_ALT_SELECT_MAT'
EXPORTING
ALL = ' '
CAPID = 'SD01'
DATUV = SY-DATUM
DIALF = ' '
LOSGR = 0
MATNR = ORDER_ITEMS_IN-MATERIAL
NOTAB = 'X'
NRFDC = ' '
STLAL = ' '
STLAN = ' '
VPRIO = ' '
WERKS = V_WERKS
TABLES
MASTB_WA = DA_MASTB
STKOB_WA = DA_STKOB
STZUB_WA = DA_STZUB
EXCEPTIONS
ALT_NOT_FOUND = 1
BOM_NOT_ACTIVE = 2
BOM_NOT_FOUND = 3
CALL_INVALID = 4
NO_ALT_FOUND = 5
NO_BOM_FOUND = 6
OTHERS = 7.
READ TABLE DA_MASTB INDEX 1.
IF SY-SUBRC = 0.
CALL FUNCTION 'CS_BOM_EXPL_MAT_V2'
EXPORTING
CAPID = 'SD01'
DATUV = SY-DATUM
EMENG = 1
MEHRS = 'X'
MTNRV = ORDER_ITEMS_IN-MATERIAL
RNDKZ = '2'
STLAL = '01'
WERKS = V_WERKS
IMPORTING
TOPMAT = CSTMAT
TABLES
STB = TSTB
MATCAT =
EXCEPTIONS
ALT_NOT_FOUND = 1
CALL_INVALID = 2
MATERIAL_NOT_FOUND = 3
MISSING_AUTHORIZATION = 4
NO_BOM_FOUND = 5
NO_PLANT_DATA = 6
NO_SUITABLE_BOM_FOUND = 7
OTHERS = 8.
DESCRIBE TABLE TSTB LINES V_LINES.
ENDIF.
V_LINES1 = V_LINES + V_LINES1 .
CLEAR V_LINES.
ENDIF.
ENDLOOP.
or u can check below
u can populate both Line items and Schedule Line item structures - ORDER_ITEMS_IN and ORDER_SCHEDULES_IN respectively using BAPI_SALESORDER_CREATEFROMDAT2 to create sales order
hope this will help you.
Reward points if it helps
Regards,
Naveen