2008 Jul 31 8:13 AM
Hi experts,
I'm using FM SD_SALESDOCUMENT_CREATE to create sales order. What parameter of the FM that I need to pass my reference contract to update VBAK-VGBEL? Thank you.
2008 Jul 31 8:15 AM
hi,
&----
*& Report ZSD_R_SALESORDER
&----
report zsd_r_salesorder1 line-size 132 message-id zmmbapi .
&----
*& Created By : shailaja
*& Created on : 13.10.2007
*& Requested By : vardhman
*& Description of program :
&----
----
Internal table definition *
----
data: gt_order_header_in like bapisdhead occurs 0 with header line,
gt_return like bapireturn1 occurs 0 with header line, " Return Messages
gt_order_items_in like bapiitemin occurs 0 with header line, " Item Data
gt_salesdocument like bapivbeln-vbeln , "Number of Generated Document
gt_order_partners like bapiparnr occurs 0 with header line, "Document Partner
gt_return1 like bapiret2 occurs 0 with header line.
----
Data definition *
----
types: begin of ty_gt_ft_sales ,
partn_numb(10) type n ,"Customer Number 1
partn_role(2) ,"Partner function
sales_org(4) , "Sales Organization
distr_chan(2) , "Distribution Channel
division(002), "DIVISION
doc_type(4) , "Sales Document Type
purch_no(020), "Purchase order
material(18), "MATERIAL
targetquantity(020),"Target quantity
reqqty(020), "Req quantity
reqdate(010), "req date
*REQ_DATE_H(010),
ref_1(012), "Ref
unload_pt(025),
*PARTN_ROLE(2) ,"Partner function
*PARTN_NUMB(10) ,"Customer Number 1
end of ty_gt_ft_sales,
begin of ty_header ,
partn_numb(10) ,"Customer Number 1
partn_role(2) ,"Partner function
sales_org(4) , "Sales Organization
distr_chan(2) , "Distribution Channel
division(002), "DIVISION
doc_type(4) , "Sales Document Type
purch_no(020), "Purchase order
unload_pt(025),
req_date_h(010),
end of ty_header,
begin of ty_item,
material(18), "MATERIAL
targetquantity(020),"Target quantity
reqqty(020), "Req quantity
reqdate(010), "req date
ref_1(012), "Ref
*UNLOAD(025),
end of ty_item.
data : msg(240) type c, " Return Message
e_rec(8) type c, " Error Records Counter
rec_no(8) type c, " Records Number Indicator
s_rec(8) type c, " Successful Records Counter
t_rec(8) type c, " Total Records Counter
v_matnr like mara-matnr,
v_parvw type parvw.
data : gt_ft_sales type standard table of ty_gt_ft_sales with header line.
data : wa_gt_ft_sales type ty_gt_ft_sales,
wa_order_items_in like gt_order_items_in,
wa_gt_ft_sales1 type ty_gt_ft_sales,
wa_header type ty_header,
salesdocument like bapivbeln-vbeln.
selection block for EXCEL UPLOAD FILE
selection-screen begin of block b1 with frame title text-000.
parameters file type ibipparms-path obligatory.
selection-screen end of block b1.
*<<<<AT SELECTION-SCREEN ON VALUE-REQUEST FOR FILE .
at selection-screen on value-request for file .
perform getname.
form getname.
call function 'F4_FILENAME'
exporting
program_name = syst-cprog
dynpro_number = syst-dynnr
importing
file_name = file.
endform.
*TOP-OF-PAGE.
top-of-page.
skip 3.
format color col_heading inverse on.
write 40 text-001.
format color col_heading inverse off.
skip 1.
format color col_negative inverse on.
write 😕 text-002, 13 sy-mandt , 104 text-003, 121 sy-uname,
/ text-004, 13 sy-datum , 104 text-005, 121 sy-uzeit.
format color col_negative inverse off.
skip 3.
*START-OF-SELECTION.
start-of-selection.
perform get_data.
perform bapi.
*end-of-page.
perform result.
form result.
t_rec = e_rec + s_rec.
skip 3.
format color col_total inverse on.
write: /38 text-007, t_rec.
format color col_total inverse off.
format color col_negative inverse on.
write: /38 text-008, e_rec.
format color col_negative inverse off.
format color col_total inverse on.
write: /38 text-009, s_rec.
format color col_total inverse off.
endform.
&----
*& Form get_data
&----
text
----
--> p1 text
<-- p2 text
----
form get_data .
call function 'WS_UPLOAD' "#EC *
exporting
filename = file
filetype = 'DAT'
tables
data_tab = gt_ft_sales
exceptions
conversion_error = 1
file_open_error = 2
file_read_error = 3
invalid_type = 4
no_batch = 5
unknown_error = 6
invalid_table_width = 7
gui_refuse_filetransfer = 8
customer_error = 9
no_authority = 10
others = 11.
if sy-subrc <> 0 .
message e000.
endif.
endform. " get_data
&----
*& Form BAPI
&----
form bapi .
loop at gt_ft_sales into wa_gt_ft_sales.
wa_gt_ft_sales1 = wa_gt_ft_sales.
at new partn_numb.
wa_header-doc_type = wa_gt_ft_sales1-doc_type..
wa_header-sales_org = wa_gt_ft_sales1-sales_org . "'0001'
wa_header-distr_chan = wa_gt_ft_sales1-distr_chan. "'01'
wa_header-division = wa_gt_ft_sales1-division. " '01'
wa_header-purch_no = wa_gt_ft_sales1-purch_no.
wa_header-req_date_h = wa_gt_ft_sales1-reqdate.
call function 'CONVERSION_EXIT_PARVW_INPUT'
exporting
input = wa_gt_ft_sales1-partn_role
importing
output = v_parvw.
wa_header-partn_role = v_parvw.
wa_header-partn_numb = wa_gt_ft_sales1-partn_numb.
wa_header-unload_pt = wa_gt_ft_sales1-unload_pt.
move-corresponding wa_header to gt_order_partners.
move-corresponding wa_header to gt_order_header_in.
append gt_order_header_in.
append gt_order_partners.
endat.
call function 'CONVERSION_EXIT_CCMAT_INPUT'
exporting
input = wa_gt_ft_sales1-material
importing
output = v_matnr.
.
gt_order_items_in-material = v_matnr .
gt_order_items_in-target_qty = wa_gt_ft_sales1-targetquantity . "'1000'
gt_order_items_in-req_qty = wa_gt_ft_sales1-reqqty.
gt_order_items_in-req_date = wa_gt_ft_sales1-reqdate.
*GT_ORDER_ITEMS_IN-BILL_DATE = wa_GT_FT_SALES1-REQDATE.
gt_order_items_in-ref_1 = wa_gt_ft_sales1-ref_1.
append gt_order_items_in.
clear : wa_gt_ft_sales1,wa_header.
at end of partn_numb.
call function 'BAPI_SALESORDER_CREATEFROMDAT1'
exporting
order_header_in = gt_order_header_in
WITHOUT_COMMIT = ' '
CONVERT_PARVW_AUART = 'X'
importing
salesdocument = salesdocument
SOLD_TO_PARTY =
SHIP_TO_PARTY =
BILLING_PARTY =
return = gt_return
tables
order_items_in = gt_order_items_in
order_partners = gt_order_partners.
ORDER_ITEMS_OUT =
ORDER_CFGS_REF =
ORDER_CFGS_INST =
ORDER_CFGS_PART_OF =
ORDER_CFGS_VALUE =
ORDER_CCARD =
ORDER_CFGS_BLOB =
ORDER_SCHEDULE_EX =
if gt_return-type eq 'E' .
e_rec = e_rec + 1.
read table gt_return with key id = 'V1'.
format color col_negative inverse on.
rec_no = e_rec + s_rec.
concatenate text-006 rec_no ':'
gt_return-message into msg separated by space .
condense msg.
write: / msg.
format color col_negative inverse off.
elseif gt_return-number = '000'.
s_rec = s_rec + 1.
format color col_positive inverse on.
msg = 'SUCCESS'.
condense msg.
write: / msg .
format color col_positive inverse off.
write 😕 salesdocument, 'Has been created'.
perform commit_mm.
endif.
clear: gt_return[], msg.
endat.
endloop.
endform. " SLALE_UPLOAD_DATA
&----
*& Form COMMIT_MM
&----
text
----
--> p1 text
<-- p2 text
----
form commit_mm .
call function 'BAPI_TRANSACTION_COMMIT'
exporting
wait = 'X'
importing
return = gt_return1.
clear: gt_order_items_in[]."GT_ORDER_CONDITIONS_IN[].
endform. " COMMIT_MM
inthis pass re_doc field in header...
Edited by: Shailaja Ainala on Jul 31, 2008 9:16 AM
2008 Jul 31 8:15 AM
Hi Marc,
Check out the below code. this might help you to solve your problem
REPORT z4san_create_credit_memo_test.
* Uses SD_SALESDOCUMENT_CREATE
PARAMETERS:
p_vgbel LIKE vbrk-vbeln DEFAULT ' ', "reference invoice
p_fkdat LIKE vbkd-fkdat DEFAULT sy-datum, "billing date
p_auart LIKE tvak-auart DEFAULT 'G2', "sales document type L2 DEBIT MEMO
p_vkorg LIKE tvko-vkorg DEFAULT '0001', "sales org.
p_vtweg LIKE tvtw-vtweg DEFAULT '01', "distr. chan.
p_spart LIKE tspa-spart DEFAULT '01', "division
p_vkbur LIKE tvbur-vkbur DEFAULT ' ', "sales office
p_kunnr LIKE kna1-kunnr DEFAULT '11', "sold-to
p_bstnk LIKE vbak-bstnk DEFAULT 'pono00000017',
"PO number
p_bname LIKE vbak-bname DEFAULT 'Bartholomew Snodgrass',
"name of orderer
p_augru LIKE tvau-augru DEFAULT '006'. "order reason
SELECTION-SCREEN SKIP.
SELECTION-SCREEN BEGIN OF BLOCK i1 WITH FRAME TITLE text-001.
PARAMETERS:
p_matnr LIKE mara-matnr DEFAULT 'T-F009', "material number
p_zmeng TYPE dzmengc DEFAULT '65', "target quantity
p_netwr LIKE vbap-netwr DEFAULT '1.20', "net amount
p_arktx LIKE vbap-arktx DEFAULT 'Afternoon tea',
"short text
p_fbuda LIKE vbkd-fbuda DEFAULT '20060109'."service-rendered date
SELECTION-SCREEN END OF BLOCK i1.
*----------------------------------------------------------------------*
DATA:
return LIKE bapiret2,
returns LIKE TABLE OF return,
salesdocument_ex LIKE bapivbeln-vbeln,
sales_header_in LIKE bapisdhd1,
sales_item_in LIKE bapisditm,
sales_items_in LIKE TABLE OF sales_item_in,
sales_condition_in LIKE bapicond,
sales_conditions_in LIKE TABLE OF sales_condition_in,
sales_partner LIKE bapiparnr,
sales_partners LIKE TABLE OF sales_partner,
incomplete_log LIKE bapiincomp,
incomplete_logs LIKE TABLE OF incomplete_log.
*----------------------------------------------------------------------*
PERFORM:
fill_sales_header_in,
fill_sales_items_in,
fill_sales_partners,
fill_sales_conditions_in,
call_bapi.
*----------------------------------------------------------------------*
FORM call_bapi .
CALL FUNCTION 'SD_SALESDOCUMENT_CREATE'
EXPORTING
* SALESDOCUMENT =
sales_header_in = sales_header_in
* SALES_HEADER_INX =
* SENDER =
* BINARY_RELATIONSHIPTYPE = ' '
* INT_NUMBER_ASSIGNMENT = ' '
* BEHAVE_WHEN_ERROR = ' '
* LOGIC_SWITCH = ' '
business_object = 'BUS2094' "cred. mem. req. 96 FOR DEBIT
* TESTRUN =
* CONVERT_PARVW_AUART = ' '
* STATUS_BUFFER_REFRESH = 'X'
IMPORTING
salesdocument_ex = salesdocument_ex
* SALES_HEADER_OUT =
* SALES_HEADER_STATUS =
TABLES
return = returns
sales_items_in = sales_items_in
* SALES_ITEMS_INX =
sales_partners = sales_partners
* SALES_SCHEDULES_IN =
* SALES_SCHEDULES_INX =
sales_conditions_in = sales_conditions_in
incomplete_log = incomplete_logs
.
PERFORM imcompletion_log.
LOOP AT returns INTO return WHERE type NE 'S'.
MESSAGE ID return-id TYPE 'I' NUMBER return-number
WITH
return-message_v1
return-message_v2
return-message_v3
return-message_v4.
ENDLOOP.
IF salesdocument_ex IS INITIAL.
WRITE: / 'Document not created'.
ELSE.
COMMIT WORK.
WRITE: / 'Sales document number:', salesdocument_ex.
ENDIF.
ENDFORM. " call_bapi
*----------------------------------------------------------------------*
FORM fill_sales_header_in .
CLEAR sales_header_in.
MOVE:
p_fkdat TO sales_header_in-bill_date,
p_vgbel TO sales_header_in-ref_doc, "invoice number
'M' TO sales_header_in-refdoc_cat, "invoice
p_auart TO sales_header_in-doc_type,
p_vkorg TO sales_header_in-sales_org,
p_vtweg TO sales_header_in-distr_chan,
p_spart TO sales_header_in-division,
p_vkbur TO sales_header_in-sales_off,
p_bstnk TO sales_header_in-purch_no_c,
p_bname TO sales_header_in-name,
p_augru TO sales_header_in-ord_reason.
ENDFORM. " fill_sales_header_in
*----------------------------------------------------------------------*
FORM fill_sales_partners .
CLEAR sales_partner.
sales_partner-partn_role = 'AG'.
sales_partner-partn_numb = p_kunnr.
APPEND sales_partner TO sales_partners.
ENDFORM. " fill_sales_partners
*----------------------------------------------------------------------*
FORM fill_sales_items_in .
PERFORM one_item_in USING:
10
p_matnr
p_zmeng
p_netwr
'GBP'
p_arktx
p_fbuda.
ENDFORM. " fill_sales_items_in
*----------------------------------------------------------------------*
FORM one_item_in USING value(p_itm_number)
value(p_p_matnr)
value(p_p_zmeng)
value(p_p_netwr)
value(p_p_waerk)
value(p_p_arktx)
value(p_p_fbuda).
CLEAR sales_item_in.
MOVE:
p_itm_number TO sales_item_in-itm_number,
p_fkdat TO sales_item_in-bill_date,
p_vgbel TO sales_item_in-ref_doc, "invoice number
'M' TO sales_item_in-ref_doc_ca, "invoice
p_p_matnr TO sales_item_in-material,
p_p_zmeng TO sales_item_in-target_qty,
p_p_netwr TO sales_item_in-target_val,
p_p_waerk TO sales_item_in-currency,
p_p_arktx TO sales_item_in-short_text,
p_p_fbuda TO sales_item_in-serv_date.
APPEND sales_item_in TO sales_items_in.
ENDFORM. " one_item_in
*----------------------------------------------------------------------*
FORM fill_sales_conditions_in .
REFRESH sales_conditions_in.
PERFORM one_sales_condition_in USING:
10
p_netwr
'GBP'.
ENDFORM. " fill_sales_conditions_in
*----------------------------------------------------------------------*
FORM one_sales_condition_in USING value(p_itm_number)
value(p_p_netwr)
value(p_p_waerk).
CLEAR sales_condition_in.
MOVE:
p_itm_number TO sales_condition_in-itm_number,
'PR00' TO sales_condition_in-cond_type,
p_p_netwr TO sales_condition_in-cond_value,
p_p_waerk TO sales_condition_in-currency.
APPEND sales_condition_in TO sales_conditions_in.
ENDFORM. " one_sales_condition_in
*----------------------------------------------------------------------*
FORM imcompletion_log .
LOOP AT incomplete_logs INTO incomplete_log.
WRITE: / incomplete_log-itm_number,
incomplete_log-field_text,
incomplete_log-table_name,
incomplete_log-field_name.
ENDLOOP.
ENDFORM. " imcompletion_log
2008 Jul 31 8:18 AM
hiii
try using FM
BAPI_SALESORDER_CREATEFROMDAT2
then Use BAPI_TRANSACTION_COMMIT so that you can come to know where you are getting an error.
regards
twinkal
2008 Jul 31 8:20 AM
Hi,
Try passing the refernce doc to SALES_HEADER_IN-REF_DOC in the import parameters of the FM and to update it pass the value 'X' to the import parameter SALES_HEADER_INX-REF_DOC.
2008 Jul 31 8:29 AM
try to use the function module
BAPI_SALESDOCU_CREATEFROMDATA2
and user fm BAPI_TRANSACTION_COMMIT
2008 Jul 31 8:31 AM
try to use the following fm BAPI_SALESORDER_CREATEFROMDAT2
and then use fm BAPI_TRANSACTION_COMMIT to save the sale order in data base