Sales order: Errror
Hi friends,
please, can any one explain about Receiver category is not allowed by settlement profile SD1 for this sender.
this error is coming , while we are creating the sales order.
Prasanth,
I did try to create a sales order with other sales area and other customer, still I am getting the same error which reads like this.
"Receiver categ. is not allowed by settlement prof. SD1 for this sender
Message no. KD 031"
I checked the settlement profile SD1 in controlling and it looks OK. Any clue?
Similar Messages
-
Error while creating sales order : Materail not listed !!!
Dear All,
While creating a Sales Order, I am getting this message. please let me know. what is listing means.
How to check it.
error message
Material XYYXY is not listed and therefore not allowed
Message no. V1118
Diagnosis
The material entered is not allowed for the transaction because the listing is missing.
Procedure
Check your entries. If they are correct, check whether the listing is complete.
end of errror message.
Thank You.
Regards
Venkat.
Will award points for useful replies.Hi,
Hope this will make your fundamentals about listing clearer.
Material listing (and exclusion) lets you control which materials specific customers may (or may not) buy. For example, if you create a material listing for a specific customer, the customer can only order products from that list. You can also create a master record for material exclusion for a particular customer. Then the customer can not order excluded materials from you.
Material listing applies to two partner functions in Sales & Distribution: the sold-to party and the payer.
In the standard version of the SAP System, when the sold-to party and payer are different, the material listing check is as follows:
· If the sold-to party has a material listing, the system only checks this listing (no other check takes place).
If there is no listing for the sold-to party, but a listing has been created for the payer, the system automatically checks the payers listing.
· If no material listing data exists for either the sold-to party or payer, then the customer may order any material.
Regards
SD -
Problem while creating a Sales Order from RFC
Dear All,
I get an error ( Errror ID "TD" Number "600" ) "Text XXXXXXXXXX000001 ID X106 language EN not found" whenever I try to create a Sales Order for a particular Customer and Material.
But when I create Manually using VA01 for the same details, a Sales Order is created Successfully.
The error is coming from the Standard Function Module "SD_SALES_ITEM_MAINTAIN".
Please let me know if any of you have come accross similar problem and if yes, please provide me a solution.
Thanks and Regards,
Dinakaran.RHi Dinakaran,
How ru passing the values in the RFC????
pass the item details through the tables option of FM...else it will give the error...
Regards,
Vamshi -
Inbound idoc processing using custom FM to cancel sales orders
hello all,
I have a scenario where i need to create a customized function module which is assigned to custom message type. and this function module is triggered when inbound idoc comes, which will process idoc data for cancellation of sales orders. If an errror occurs than the error during cancellation has to be reflected back in the idoc status.
can anyone tell me how exactly i can log the status and reflect it back, how exactly can i do this
And what are all the objects i need to create to succusfully execute this scenario, i have created message type, function module, i am using orders05 do i need to create process code also.
Thanks,
krishnam raju.Hi Krishna,
Hope you are done with the Inbound function module creation. But, just creation of function module would not be enough, what u said that is like creation of Process code should also be done.
WE42 is the transaction code for inbound process code.
And while creation of the process code, we need to do few things like:
We need to create an entry of the inbound function module in BD51 transaction or so. And coming to updating of the status, open any of the inbound function module, you will observe that there is a standard subroutine which will update the IDOC_STATUS record. You can implement the same logic whenever you want to update an error message.
Thanks,
Adithya K -
Hi,
I am using BDC to ceate salesorder.I am able to create sales order for one item. But when I try it for multiple items, it is still creating a new sales order for each item. I am trying to loop the items but still it is creating a new sales order.I am also attaching my code. Can somebody look into it and tell me what should be done to loop the items.
DATA: BEGIN OF ITAB OCCURS 0,
KUNNR1 LIKE KUAGV-KUNNR,
KUNNR2 LIKE KUWEV-KUNNR,
KETDAT LIKE RV45A-KETDAT,
DWERK LIKE RV45A-DWERK,
ZTERM LIKE VBKD-ZTERM,
INCO1 LIKE VBKD-INCO1,
INCO2 LIKE VBKD-INCO2,
AUDAT LIKE RV45A-KETDAT,
VKBUR LIKE VBAK-VKBUR,
BZIRK LIKE VBKD-BZIRK,
IHREZ LIKE VBKD-IHREZ,
MABNR LIKE RV45A-MABNR,
KWMENG LIKE RV45A-KWMENG,
END OF ITAB.
include bdcrecx1.
PARAMETERS: PATH(128) DEFAULT 'C:\sales.txt'.
start-of-selection.
CALL FUNCTION 'WS_UPLOAD'
EXPORTING
FILENAME = path
FILETYPE = 'DAT'
TABLES
DATA_TAB = ITAB
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 open_group.
loop at itab.
perform bdc_dynpro using 'SAPMV45A' '0101'.
perform bdc_field using 'BDC_CURSOR'
'VBAK-AUART'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'VBAK-AUART'
'ZOR'.
perform bdc_field using 'VBAK-VKORG'
'1000'.
perform bdc_field using 'VBAK-VTWEG'
'10'.
perform bdc_field using 'VBAK-SPART'
'10'.
perform bdc_dynpro using 'SAPMV45A' '4001'.
perform bdc_field using 'BDC_OKCODE'
'KKAU'.
perform bdc_field using 'KUAGV-KUNNR'
itab-kunnr1.
perform bdc_field using 'KUWEV-KUNNR'
itab-kunnr2.
perform bdc_field using 'RV45A-KETDAT'
itab-ketdat.
perform bdc_field using 'RV45A-KPRGBZ'
'D'.
perform bdc_field using 'VBKD-PRSDT'
'11/17/2005'.
perform bdc_field using 'VBKD-ZTERM'
itab-zterm.
perform bdc_field using 'VBKD-INCO1'
ITAB-INCO1.
perform bdc_field using 'VBKD-INCO2'
ITAB-INCO2.
perform bdc_dynpro using 'SAPMV45A' '4002'.
perform bdc_field using 'BDC_OKCODE'
'=T\05'.
perform bdc_field using 'BDC_CURSOR'
'VBKD-BZIRK'.
perform bdc_field using 'VBAK-AUDAT'
ITAB-AUDAT.
perform bdc_field using 'VBAK-VKBUR'
ITAB-VKBUR.
perform bdc_field using 'VBAK-WAERK'
'USD'.
perform bdc_field using 'VBKD-PRSDT'
'11/17/2005'.
perform bdc_field using 'VBKD-BZIRK'
ITAB-BZIRK.
perform bdc_dynpro using 'SAPMV45A' '4002'.
perform bdc_field using 'BDC_OKCODE'
'=T\08'.
perform bdc_field using 'BDC_CURSOR'
'VBKD-ZLSCH'.
perform bdc_field using 'VBKD-KTGRD'
'01'.
perform bdc_field using 'VBKD-ZLSCH'
'C'.
perform bdc_field using 'VBAK-ZUONR'
'Open Sales order'.
perform bdc_dynpro using 'SAPMV45A' '4002'.
perform bdc_field using 'BDC_OKCODE'
'=T\10'.
perform bdc_field using 'BDC_CURSOR'
'GVS_TC_DATA-REC-PARTNER(05)'.
perform bdc_field using 'GV_FILTER'
'PARALL'.
perform bdc_field using 'GVS_TC_DATA-REC-PARTNER(05)'
'3838'.
perform bdc_dynpro using 'SAPMV45A' '4002'.
perform bdc_field using 'BDC_OKCODE'
'=T\13'.
perform bdc_field using 'BDC_CURSOR'
'VBKD-BSARK'.
perform bdc_field using 'VBKD-BSARK'
'CU01'.
perform bdc_field using 'VBKD-IHREZ'
ITAB-IHREZ.
perform bdc_dynpro using 'SAPMV45A' '4002'.
perform bdc_field using 'BDC_OKCODE'
'/EBACK'.
perform bdc_field using 'BDC_CURSOR'
'VBAK-ZZLEAT'.
perform bdc_field using 'VBAK-ZZWARR'
'12346C'.
perform bdc_field using 'VBAK-ZZFABW'
'F14689'.
perform bdc_field using 'VBAK-ZZWARX'
'12012005'.
perform bdc_field using 'VBAK-ZZLEAT'
'CGUYFIU'.
perform bdc_dynpro using 'SAPMV45A' '4001'.
perform bdc_field using 'BDC_OKCODE'
'=PKO1'.
perform bdc_field using 'KUAGV-KUNNR'
itab-kunnr1.
perform bdc_field using 'KUWEV-KUNNR'
itab-kunnr2.
perform bdc_field using 'RV45A-KETDAT'
itab-ketdat.
perform bdc_field using 'RV45A-KPRGBZ'
'D'.
perform bdc_field using 'VBKD-PRSDT'
'11/17/2005'.
perform bdc_field using 'VBKD-ZTERM'
itab-zterm.
perform bdc_field using 'VBKD-INCO1'
ITAB-INCO1.
perform bdc_field using 'VBKD-INCO2'
ITAB-INCO2.
perform bdc_field using 'BDC_CURSOR'
'RV45A-CCODE(01)'.
perform bdc_field using 'RV45A-MABNR(01)'
ITAB-MABNR.
perform bdc_field using 'RV45A-KWMENG(01)'
'1'.
perform bdc_field using 'VBAP-WERKS(01)'
itab-dwerk.
perform bdc_dynpro using 'SAPMV45A' '4001'.
perform bdc_field using 'BDC_OKCODE'
'=PKO1'.
perform bdc_field using 'KUAGV-KUNNR'
itab-kunnr1.
perform bdc_field using 'KUWEV-KUNNR'
itab-kunnr2.
perform bdc_field using 'RV45A-KETDAT'
itab-ketdat.
perform bdc_field using 'RV45A-KPRGBZ'
'D'.
perform bdc_field using 'VBKD-PRSDT'
'11/17/2005'.
perform bdc_field using 'VBKD-ZTERM'
itab-zterm.
perform bdc_field using 'VBKD-INCO1'
ITAB-INCO1.
perform bdc_field using 'VBKD-INCO2'
ITAB-INCO2.
perform bdc_field using 'BDC_CURSOR'
'VBAP-POSNR(01)'.
perform bdc_field using 'RV45A-VBAP_SELKZ(01)'
'X'.
perform bdc_dynpro using 'SAPMV45A' '5003'.
perform bdc_field using 'BDC_OKCODE'
'/EBACK'.
Loop.
perform bdc_dynpro using 'SAPMV45A' '4001'.
perform bdc_field using 'BDC_OKCODE'
'=PKO1'.
perform bdc_field using 'KUAGV-KUNNR'
itab-kunnr1.
perform bdc_field using 'KUWEV-KUNNR'
itab-kunnr2.
perform bdc_field using 'RV45A-KETDAT'
itab-ketdat.
perform bdc_field using 'RV45A-KPRGBZ'
'D'.
perform bdc_field using 'VBKD-PRSDT'
'11/17/2005'.
perform bdc_field using 'VBKD-ZTERM'
itab-zterm.
perform bdc_field using 'VBKD-INCO1'
ITAB-INCO1.
perform bdc_field using 'VBKD-INCO2'
ITAB-INCO2.
perform bdc_field using 'BDC_CURSOR'
'RV45A-CCODE(02)'.
perform bdc_field using 'BDC_CURSOR'
'VBAP-WERKS(02)'.
perform bdc_field using 'RV45A-MABNR(02)'
ITAB-MABNR.
perform bdc_field using 'RV45A-KWMENG(02)'
'1'.
perform bdc_field using 'VBAP-WERKS(02)'
itab-dwerk.
perform bdc_dynpro using 'SAPMV45A' '4001'.
perform bdc_field using 'BDC_OKCODE'
'=PKO1'.
perform bdc_field using 'KUAGV-KUNNR'
itab-kunnr1.
perform bdc_field using 'KUWEV-KUNNR'
itab-kunnr2.
perform bdc_field using 'RV45A-KETDAT'
itab-ketdat.
perform bdc_field using 'RV45A-KPRGBZ'
'D'.
perform bdc_field using 'VBKD-PRSDT'
'11/17/2005'.
perform bdc_field using 'VBKD-ZTERM'
itab-zterm.
perform bdc_field using 'VBKD-INCO1'
ITAB-INCO1.
perform bdc_field using 'VBKD-INCO2'
ITAB-INCO2.
perform bdc_field using 'BDC_CURSOR'
'VBAP-POSNR(01)'.
perform bdc_field using 'RV45A-VBAP_SELKZ(01)'
'X'.
perform bdc_dynpro using 'SAPMV45A' '5003'.
perform bdc_field using 'BDC_OKCODE'
'/EBACK'.
endloop.
perform bdc_dynpro using 'SAPMV45A' '4001'.
perform bdc_field using 'BDC_OKCODE'
'=SICH'.
perform bdc_field using 'KUAGV-KUNNR'
itab-kunnr1.
perform bdc_field using 'KUWEV-KUNNR'
itab-kunnr2.
perform bdc_field using 'RV45A-KETDAT'
ITAB-KETDAT.
perform bdc_field using 'RV45A-KPRGBZ'
'D'.
perform bdc_field using 'VBKD-PRSDT'
'11/17/2005'.
perform bdc_field using 'VBKD-ZTERM'
ITAB-ZTERM.
perform bdc_field using 'VBKD-INCO1'
ITAB-INCO1.
perform bdc_field using 'VBKD-INCO2'
ITAB-INCO2.
perform bdc_field using 'BDC_CURSOR'
'RV45A-MABNR(02)'.
perform bdc_transaction using 'VA01'.
endloop.
Perform close_group.Hi,
Check the below code its excatly same code which u want.
REPORT Z90VR_UPLOAD_SALESORDERS
NO STANDARD PAGE HEADING
LINE-COUNT 65(2)
LINE-SIZE 160.
TABLES
Tables : knb1, "Customer Master (Company Code)
mara, "General Material Data
knvv, "Customer Master Sales Data
pa0003. "HR Master Record: Infotype 0003
INTERNAL TABLES
Internal table to store flat file records
Data : Begin of it_file occurs 0,
record(600) type c,
end of it_file.
Internal table to store upload records
Data : begin of it_sales occurs 0,
vbeln like vbak-vbeln,
auart like vbak-auart,
vkorg like vbak-vkorg,
vtweg like vbak-vtweg,
spart like vbak-spart,
kunnr like kna1-kunnr,
kunnr_old like kna1-kunnr,
Ship like kna1-kunnr,
ship_old like kna1-kunnr,
bstnk like vbak-bstnk,
bstdk like vbak-bstdk,
matnr like mara-matnr,
kwmeng(20) type C,
fdate like vbak-audat,
vstel like vbap-vstel,
route like vbap-route,
Qty(20) type c,
lgort like vbap-lgort,
zzshipto like vbak-zzshipto,
custext(132) type c,
shptext(132) type c,
flag(1) type c,
zzretdat like vbak-zzretdat,
augru like vbak-augru,
emp(10) type c,
end of it_sales.
Internal table to hold BDC data
Data begin of it_bdcdata occurs 0.
include structure bdcdata.
data end of it_bdcdata.
Internal table to store error messages
Data : it_bdcmsg like bdcmsgcoll occurs 0 with header line.
Internal table to store error records.
Data : begin of it_error occurs 0,
vbeln like vbak-vbeln,
kunnr like kna1-kunnr,
ship like kna1-kunnr,
matnr like mara-matnr,
pernr like pa0003-pernr,
msg(75) type c,
end of it_error.
DATA
Data : wk_auart like vbak-auart, "Sales document type
wk_vkorg like vbak-vkorg, "Sales organization
wk_vtweg like vbak-vtweg, "Distribution channel
wk_spart like vbak-spart, "Division
wk_kunnr like kna1-kunnr, "Customer number(sold to party)
wk_kunnr_old like kna1-kunnr, "OldCustomer no.(sold to party)
wk_Ship like kna1-kunnr, "Customer number(ship to party)
wk_ship_old like kna1-kunnr, "OldCustomer no.(ship to party)
wk_bstnk like vbak-bstnk, "Customer purchase order number
wk_vbeln like vbak-vbeln, "Old sales Document Number
wk_bstdk like vbak-bstdk, "Customer purchase order date
wk_matnr like mara-matnr, "Material number
wk_kwmeng(17) type c, "Order quantity
wk_fdate like vbak-audat, "First Date
wk_vstel like vbap-vstel, "Shipping point/receiving point
wk_route like vbap-route, "Route
wk_Qty(17) type c, "Stock quantity
wk_lgort like vbap-lgort, "Storage location
wk_zzshipto like vbak-zzshipto, "RBJP-T: Ship-to-party code
wk_Custext(132) type c, "Comment for customer
wk_shptext(132) type c, "Comment for warehouse
wk_flag(1) type c, "Order ombnation flag
wk_zzretdat like vbak-zzretdat, "RBJP-T Stock Return Deadline
wk_augru like vbak-augru, "Order reason
wk_emp(10) type c. "sales Employee
*--- Variable to store customer comment text & Shipping Instruction text
Data : W_shptext(132) type c, "To store customer comment text
w_custext(132) type c, "To store Shipping Instruction text
wk_error_rec like sy-tabix, "To store no of error records
wk_Success_rec like sy-tabix. "To store of Success records
Constants *
Data : c_mode(1) type c value 'N'.
SELECTION-SCREEN LAYOUT
selection-screen : skip 2.
selection-screen begin of block blk1 with frame title text-001.
selection-screen : skip 1.
parameter : p_file like rlgrap-filename default 'C:\SalesBackorder.csv'
obligatory,
p_spt(1) type c default ',' obligatory.
selection-screen end of block blk1.
At Selection Screen
*--- Provide F4 help for the File Path
at selection-screen on value-request for p_file.
call function 'KD_GET_FILENAME_ON_F4'
EXPORTING
mask = ',.csv'
static = 'X'
CHANGING
file_name = p_file.
Start of Selection
START-OF-SELECTION.
*--- Clearing internal tables & Variables used
perform clear_tables.
*--- Upload the file into internal table.
perform upload_input_file.
*--- Split the records upladed from the file.
perform split_records.
*--- Check the record values are valid
perform check_records.
*--- Check for the valid customer data sales data
perform valid_customer_data.
*--- Populating the BDC Table
perform populate_bdcdata.
End of Selection
END-OF-SELECTION.
clear wk_error_rec.
Describe table it_error lines wk_error_rec.
*--- Display error report list
perform display_error_list.
TOP-OF-PAGE *
TOP-OF-PAGE.
*--- Printing Column headings
perform column_headings.
*& Form upload_input_file
Uploading the file into internal table
FORM upload_input_file.
CALL FUNCTION 'WS_UPLOAD'
EXPORTING
FILENAME = p_file
FILETYPE = 'ASC'
TABLES
DATA_TAB = it_file
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
OTHERS = 10.
IF SY-SUBRC <> 0.
message i000(z1) with 'Error while Uploading the file'.
ENDIF.
ENDFORM. " upload_input_file
*& Form split_records
Spliting the upload records from file records at ',' or ';' into
respective filed values
FORM split_records.
data : wk_file(500) type c. " Variable to store record
If not it_file[] is initial.
loop at it_file from 2.
clear wk_file.
WK_file = it_file-record.
split the records at ','
split WK_file at p_spt into wk_auart
wk_vkorg
wk_vtweg
wk_spart
wk_kunnr
wk_kunnr_old
wk_Ship
wk_ship_old
wk_bstnk
wk_vbeln
wk_bstdk
wk_matnr
wk_kwmeng
wk_fdate
wk_vstel
wk_route
wk_Qty
wk_lgort
wk_zzshipto
wk_Custext
wk_shptext
wk_flag
wk_zzretdat
wk_augru
wk_emp.
move the records into internal table
move : wk_auart to it_sales-auart,
wk_vkorg to it_sales-vkorg,
wk_vtweg to it_sales-vtweg,
wk_spart to it_sales-spart,
wk_kunnr to it_sales-kunnr,
wk_kunnr_old to it_sales-kunnr_old,
wk_Ship to it_sales-ship,
wk_ship_old to it_sales-ship_old,
wk_bstnk to it_sales-bstnk,
wk_vbeln to it_sales-vbeln,
wk_bstdk to it_sales-bstdk,
wk_matnr to it_sales-matnr,
wk_kwmeng to it_sales-kwmeng,
wk_fdate to it_sales-fdate,
wk_vstel to it_sales-vstel,
wk_route to it_sales-route,
wk_Qty to it_sales-qty,
wk_lgort to it_sales-lgort,
wk_zzshipto to it_sales-zzshipto,
wk_Custext to it_sales-custext,
wk_shptext to it_sales-shptext,
wk_flag to it_sales-flag,
wk_zzretdat to it_sales-zzretdat,
wk_augru to it_sales-augru,
wk_emp to it_sales-emp.
append it_sales.
clear it_sales.
endloop. "loop at it_file from 2.
endif. "If not it_file[] is initial
ENDFORM. " split_records
*& Form check_records
Check the values exist in check table if not delete the records
and append into internal error table records
FORM check_records.
If not it_sales[] is initial.
*--Sorting the internal table on old sales document number uploaded
sort it_sales by vbeln.
loop at it_sales.
*--- Check the old sold to party exist & if exist then get the new sold
*--- to party Number
if not it_sales-kunnr_old is initial.
clear knb1-kunnr.
select single kunnr
from knb1
into knb1-kunnr
where altkn = it_sales-kunnr_old.
if sy-subrc = 0.
it_sales-kunnr = knb1-kunnr.
else.
it_error-vbeln = it_sales-vbeln.
it_error-kunnr = it_sales-kunnr_old.
it_error-msg = text-010.
append it_error.
clear it_error.
delete it_sales where vbeln = it_sales-vbeln.
clear it_sales.
continue.
endif. "if sy-subrc = 0.
endif. "if not it_sales-kunnr_old is initial.
*--- Check the old ship to party exist & if exist then get the new ship
*--- to party Number
if not it_sales-ship_old is initial.
clear knb1-kunnr.
select single kunnr
from knb1
into knb1-kunnr
where altkn = it_sales-ship_old.
if sy-subrc = 0.
it_sales-ship = knb1-kunnr.
else.
it_error-vbeln = it_sales-vbeln.
it_error-ship = it_sales-ship_old.
it_error-msg = text-011.
append it_error.
clear it_error.
delete it_sales where vbeln = it_sales-vbeln.
clear it_sales.
continue.
endif. "if sy-subrc = 0.
endif. "if not it_sales-ship_old is initial.
*--- Check the old matnr exist & if exist then get the new material
*--- number
if not it_sales-matnr is initial.
clear mara-matnr.
select single matnr
from mara
into mara-matnr
where bismt = it_sales-matnr.
if sy-subrc = 0.
it_sales-matnr = mara-matnr.
else.
it_error-vbeln = it_sales-vbeln.
it_error-matnr = it_sales-matnr.
it_error-msg = text-012.
append it_error.
clear it_error.
delete it_sales where vbeln = it_sales-vbeln.
clear it_sales.
continue.
endif. "if sy-subrc = 0.
endif. "if not it_sales-matnr is initial.
*---- Check the Sales Employee Number exist in master table PA0003
if not it_sales-emp is initial.
clear pa0003-pernr.
select single pernr
from pa0003
into pa0003-pernr
where pernr = it_sales-emp.
if sy-subrc ne 0.
it_error-vbeln = it_sales-vbeln.
it_error-pernr = it_sales-emp.
it_error-msg = text-013.
append it_error.
clear it_error.
delete it_sales where vbeln = it_sales-vbeln.
clear it_sales.
continue.
endif. "if sy-subrc = 0.
endif. "if not it_sales-emp is initial.
modify it_sales index sy-tabix.
clear it_sales.
endloop.
endif. "If not it_sales[] is initial.
ENDFORM. " check_records
*& Form populate_bdcdata
Populating BDCDATA Table & passing the data by calling
transaction 'VA01' to create Sales Orders
FORM populate_bdcdata.
Data : flag_item(1) type C. "Flag for populating Item details
*--- Sorting the internal table by old sales document number.
sort it_sales by vbeln.
If not it_sales[] is initial.
loop at it_sales.
clear : flag_item,
W_shptext,
w_custext.
W_shptext = it_sales-shptext.
w_custext = it_sales-custext.
*--- At new sales document number(old document number from file)
*--- populate the header data & first item details.
at new vbeln.
clear it_bdcdata.
refresh it_bdcdata.
read table it_sales index sy-tabix.
perform append_bdcdata using : 'X' 'SAPMV45A' '0101',
' ' 'VBAK-AUART' it_sales-auart,
' ' 'VBAK-VKORG' it_sales-vkorg,
' ' 'VBAK-VTWEG' it_sales-vtweg,
' ' 'VBAK-SPART' it_sales-spart,
' ' 'BDC_OKCODE' '/00',
'X' 'SAPMV45A' '4001',
' ' 'KUAGV-KUNNR' it_sales-kunnr.
if not it_sales-ship is initial.
perform append_bdcdata using ' ' 'KUWEV-KUNNR' it_sales-ship.
endif.
perform append_bdcdata using : ' ' 'VBKD-BSTKD' it_sales-bstnk,
' ' 'VBKD-BSTDK' it_sales-bstdk,
' ' 'VBAK-AUGRU' it_sales-augru,
' ' 'BDC_OKCODE' '=KZKU',
new logic.
'X' 'SAPMSSY0' '0120',
' ' 'BDC_CURSOR' '04/06',
' ' 'BDC_OKCODE' '=CHOO',
end of logic
'X' 'SAPMV45A' '4002'.
*--- Depending upon the sales document type (AUART) passing the RBJP-T
*--- Stock Return Deadline (ZZRETDAT) if Auart is 'ZRLB' or 'ZRKB' the
*--- passing the Stock Return Deadline Date.
if it_sales-auart = 'ZRLB' or
it_sales-auart = 'ZRKB'.
perform append_bdcdata using : ' ' 'VBAK-ZZRETDAT' it_sales-zzretdat.
endif.
perform append_bdcdata using : ' ' 'VBAK-ZZSHIPTO' it_sales-zzshipto,
' ' 'BDC_OKCODE' '=T\07',
'X' 'SAPMV45A' '4002',
' ' 'GVS_TC_DATA-REC-PARVW(06)' 'AF',
' ' 'GVS_TC_DATA-REC-PARTNER(06)'
it_sales-emp,
' ' 'BDC_OKCODE' '/EBACK'.
*---First Items details
perform append_bdcdata using :
'X' 'SAPMV45A' '4001',
' ' 'RV45A-ETDAT(01)' it_sales-fdate,
' ' 'RV45A-KWMENG(01)' it_sales-kwmeng,
' ' 'RV45A-MABNR(01)' it_sales-matnr,
' ' 'BDC_OKCODE' '/00',
'X' 'SAPMV45A' '4001',
' ' 'RV45A-VBAP_SELKZ(01)' 'X',
' ' 'BDC_OKCODE' '=PDE2',
'X' 'SAPMV45A' '4003',
' ' 'VBAP-LGORT' it_sales-lgort,
' ' 'VBAP-VSTEL' it_sales-vstel,
' ' 'VBAP-ROUTE' it_sales-route.
*--- If Order combination flag is 'X' then check box is made click else
*--- not click
If it_sales-flag = 'X'.
perform append_bdcdata using :
' ' 'VBKD-KZAZU' 'X'.
else.
perform append_bdcdata using :
' ' 'VBKD-KZAZU' ' '.
endif.
perform append_bdcdata using :
' ' 'BDC_OKCODE' '/EBACK',
'X' 'SAPMV45A' '4001'.
flag_item = 'X'.
endat.
*---- From 2 items.
if flag_item = ' '.
perform append_bdcdata using :
' ' 'BDC_OKCODE' 'POAN',
'X' 'SAPMV45A' '4001',
' ' 'RV45A-ETDAT(02)' it_sales-fdate,
' ' 'RV45A-KWMENG(02)' it_sales-kwmeng,
' ' 'RV45A-MABNR(02)' it_sales-matnr,
' ' 'BDC_OKCODE' '/00',
'X' 'SAPMV45A' '4001',
' ' 'RV45A-VBAP_SELKZ(02)' 'X',
' ' 'BDC_OKCODE' '=PDE2',
'X' 'SAPMV45A' '4003',
' ' 'VBAP-LGORT' it_sales-lgort,
' ' 'VBAP-VSTEL' it_sales-vstel,
' ' 'VBAP-ROUTE' it_sales-route.
If it_sales-flag = 'X'.
perform append_bdcdata using :
' ' 'VBKD-KZAZU' 'X'.
else.
perform append_bdcdata using :
' ' 'VBKD-KZAZU' ' '.
endif.
perform append_bdcdata using :
' ' 'BDC_OKCODE' '/EBACK',
'X' 'SAPMV45A' '4001',
' ' 'BDC_OKCODE' '/00',
'X' 'SAPMV45A' '4001'.
endif. "if flag = ' '.
*--- At end of the sales document saving the records
at end of vbeln.
read table it_sales index sy-tabix.
perform append_bdcdata using :
' ' 'BDC_OKCODE' '=SICH'.
*--- calling transaction 'VA01'
perform call_transaction.
endat.
endloop. "loop at it_sales.
endif. "If not it_sales[] is initial.
ENDFORM. " populate_bdcdata
*& Form append_bdcdata
Populating the BDC table for using in Call Transaction
Form append_bdcdata using dynbegin fld1 fld2.
*---Identifying as new screen
IF DYNBEGIN = 'X' .
MOVE: DYNBEGIN TO IT_BDCDATA-DYNBEGIN,
FLD1 TO IT_BDCDATA-PROGRAM,
FLD2 TO IT_BDCDATA-DYNPRO.
ELSE.
*---Identifying a field name and field value
MOVE: FLD1 TO IT_BDCDATA-FNAM,
FLD2 TO IT_BDCDATA-FVAL.
ENDIF.
APPEND IT_BDCDATA.
CLEAR IT_BDCDATA.
ENDFORM. " append_bdcdata
*& Form call_transaction
text
FORM call_transaction.
*--- Data declaration for Local variables
Data : l_mess_lines type i, "variable for no of msg lines
l_msg_text(100) type c, "For capturing format message
l_newvbeln like vbak-vbeln, "For holding new sales Doc No
flag_text(1) type C value 'X'. "Flag for getting header text
*--- Internal Table to store header text & header structure
Data : it_tline like tline occurs 100 with header line,
it_tline1 like tline occurs 100 with header line,
t_thead like thead.
*--- Call transaction method
call transaction 'VA01'
using it_bdcdata
mode c_mode
UPDATE 'S'
messages into it_bdcmsg.
*--- If success then Populating the header text for Comment for
*--- Customer & Shipping Instruction
if sy-subrc eq 0 and
sy-msgty ne 'A' and
sy-msgty ne 'E' .
Incrementing the counter for success record
wk_success_rec = wk_success_rec + 1.
clear l_mess_lines.
describe table it_bdcmsg lines l_mess_lines.
read table it_bdcmsg index l_mess_lines.
*--- Formatting the Success message using Call Function 'FORMAT_MESSAGE'
perform format_message using l_msg_text.
clear l_newvbeln.
move it_bdcmsg-msgv2 to l_newvbeln.
*--- Padding with zeros for the new sales Ducument number created
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = l_newvbeln
IMPORTING
OUTPUT = l_newvbeln.
*--- The below logic is added because we can't update the Header Text
through Batch Input so we need to first create new sales documnet
number then get that sales document no & by using function module
SAVE_TEXT update the Header Text.
*--- Populating the header text for Comment for Customer & Shipping
*--- Instruction
clear it_tline.
refresh it_tline.
*--- Populating the header text for Comment for customer
it_tline-tdformat = '*'.
it_tline-tdline = w_custext.
append it_tline.
clear it_tline.
*--- Populating the header text for Shipping Instruction
it_tline-tdformat = '*'.
it_tline-tdline = w_shptext.
append it_tline.
clear it_tline.
loop at it_tline.
refresh it_tline1.
read table it_tline index sy-tabix.
it_tline1-tdformat = it_tline-tdformat.
it_tline1-tdline = it_tline-tdline.
append it_tline1.
clear it_tline1.
*--- for Comment for Customer ID
if flag_text = 'X'.
clear t_thead.
t_thead-tdobject = 'VBBK'.
t_thead-tdname = l_newvbeln.
t_thead-tdid = '0003'.
t_thead-tdspras = sy-langu.
endif. "if flag_text = 'X'.
*--- for Shipping Instruction ID
if flag_text = ' '.
clear t_thead.
t_thead-tdobject = 'VBBK'.
t_thead-tdname = l_newvbeln.
t_thead-tdid = '0012'.
t_thead-tdspras = sy-langu.
endif. "if flag_text = ' '.
*--- Save the text using Functional Module 'SAVE_TEXT'
perform save_text tables it_tline1
using t_thead.
clear flag_text.
endloop. "loop at it_tline.
else.
*--- If error then get the error message
clear l_mess_lines.
describe table it_bdcmsg lines l_mess_lines.
read table it_bdcmsg index l_mess_lines.
*--- Formatting the Error message using Call Function 'FORMAT_MESSAGE'
clear l_msg_text.
perform format_message using l_msg_text.
it_error-vbeln = it_sales-vbeln.
it_error-msg = l_msg_text.
append it_error.
clear it_error.
endif. "if sy-subrc eq 0 and
"sy-msgty ne 'A' and
clear it_bdcmsg.
refresh it_bdcmsg.
ENDFORM. " call_transaction
*& Form FORMAT_MESSAGE
Formating the system message
FORM FORMAT_MESSAGE USING P_DL_MSG_TEXT.
CALL FUNCTION 'FORMAT_MESSAGE'
EXPORTING
ID = SY-MSGID
LANG = SY-LANGU
NO = SY-MSGNO
V1 = SY-MSGV1
V2 = SY-MSGV2
V3 = SY-MSGV3
V4 = SY-MSGV4
IMPORTING
MSG = P_DL_MSG_TEXT
EXCEPTIONS
NOT_FOUND = 1
OTHERS = 2.
CONDENSE P_DL_MSG_TEXT.
ENDFORM. " FORMAT_MESSAGE
*& Form save_text
text
FORM save_text tables it_tline structure tline
using t_thead.
CALL FUNCTION 'SAVE_TEXT'
EXPORTING
CLIENT = SY-MANDT
HEADER = t_thead
SAVEMODE_DIRECT = 'X'
TABLES
LINES = it_tline
EXCEPTIONS
ID = 1
LANGUAGE = 2
NAME = 3
OBJECT = 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.
ENDFORM. " save_text
*& Form display_error_list
writing error list
FORM display_error_list.
If not it_error[] is initial.
sort it_error by vbeln.
loop at it_error.
write: /00 it_error-vbeln,
12 it_error-kunnr,
35 it_error-ship,
58 it_error-matnr,
88 it_error-msg.
if not it_error-pernr is initial.
write : 78 it_error-pernr.
endif.
endloop.
endif.
ENDFORM. " display_error_list
*& Form column_headings
writing Column Headings for errror records
FORM column_headings.
write : /00 text-002,
45 wk_success_rec.
write : /00 text-003,
45 wk_error_rec.
uline.
format color col_heading intensified.
write: /00 text-004,
12 text-005,
35 text-006,
58 text-007,
78 text-008,
88 text-009,
160 space.
format color col_heading intensified off.
uline.
ENDFORM. " column_headings
*& Form valid_customer_data
Check the combination of Customer number ,sales organisation,
Distribution channel & Division exist in Customer Master Sales
Data(KNVV) if not delete the old document number from internal
table
FORM valid_customer_data.
data : l_customer_text(50) type c.
if not it_sales[] is initial.
loop at it_sales.
*--- Check the combination of Customer number ,sales organisation,
*--- Distribution channel & Division exist in Customer Master Sales
*--- Data(KNVV)
clear : KNVV,
l_customer_text.
select single *
from knvv
into knvv
where Kunnr = It_sales-kunnr
and vkorg = it_sales-vkorg
and vtweg = it_sales-vtweg
and spart = it_sales-spart.
if sy-subrc ne 0.
it_error-vbeln = it_sales-vbeln.
concatenate text-014
it_sales-vkorg
it_sales-vtweg
it_sales-spart
text-015 into
l_customer_text separated by space.
it_error-msg = l_customer_text.
append it_error.
clear it_error.
delete it_sales where vbeln = it_sales-vbeln.
clear it_sales.
continue.
endif.
endloop.
endif. "if not it_sales[] is initial.
ENDFORM. " valid_customer_data
*& Form clear_tables
Clearing Internal table & variables
FORM clear_tables.
clear : it_file,
it_sales,
it_bdcdata,
it_bdcmsg,
it_error,
wk_success_rec,
wk_error_rec.
refresh : it_file,
it_sales,
it_bdcdata,
it_bdcmsg,
it_error.
ENDFORM. " clear_tables -
Open Sales Orders Backlog Report
Hi All: I have been asked to create Backlog reports for Open Sales Orders and the revenue amounts for the next 15days, one month, 2 months, 3 months 6 months etc etc. Does anyone know of a standard report that covers that and the business content and cues that go with it?
Thanks in advance
BobbyI haven't seen any standard content for it, with my client, we actually developed the open order report from Item extractor and status extractor. And compare the created on date to the system data to see how long it has been opened for and put it in different buckets.
Hopes that help.
thanks.
Wond. -
Need a report on open order aging. The open order means not delivered or partially delivered. Further with days range since its open or not fully delievered i.e. > 15 days or 15-30 days and so on.
The standard transactions Va05 and VL10c can provide the list but dont provide any aging info.
Kindly help in this.
thanks
anuDear Anu
1. First in VA05 you can use Variants and get the report as desired by you,create one variant and use Filter along with greater then, less then (all are in selection option icon)
This way you can create three variants.
But limitation is dates has to be manually changed in variants each time.
2. Try this Tcodes
S_ALR_87014387 Display Document Flow
S_ALR_87014392 Display Document Flow
This reports will give you document flow run report with ticking checkbox for sales order,delivery and goods isse then after getting the list expand all (Shift+F12)
you will get the quantities for sales order, and what is delivered and what is issued.
3. As such if you want exactly the report you can take help of ABAP to create the ALV
4. Report or create Queries in SQVI , or else create MCSI report
Regards
Jitesh -
How to restrict manual changing of free goods in sales order
Hi ,
Goodmorning ,
We have some requirement : In sales order free goods quantity determination by system should not be allowed to change manually , where can we do this ?
Looking for your inputs
Thanks and regards
VenkatAs per SAP Standard, when the main Item quantity is changed, the Free Goods are redetermined. In this case any manual changes to Free Goods Quantities are lost.
But your requirement is for restricting the Chages of the Quantity of Free Goods Correct?
I believe there is no SAP standard solution for this. You will have to apply a User Exit, which will check the Item category of each LIne item & if it is free goods (TANN) then changes are not permitted.
Hope this helps.
Thanks,
Jignesh Mehta -
Query help needed for Sales order panel user field query.
I have a user defined form field on sales order row level called = U_DEPFEEAMT
1, I would like this field to get the value from a field on this sales order row level multiplied by what is in point 2 below. The details of field in point 1 is :
Form=139, item=38, pane=1, column=10002117, and row=1
2. The contents in field 1 should be multiplied by a value coming from another user field linked to OITM master item.
The details of user field attached to OITM is :
OITM.U_DepositFeeON
Appreciate your help.
Thank you.Try this one:
SELECT T0.U_DepositFeeON*$[$38.10002117.number\]
FROM dbo.OITM T0
WHERE T0.ItemCode = $[$38.1.0\]
Thanks,
Gordon -
Logic for Open Sales order qty
What should be the logic given to determine "open sales order qty" during designing a report.
Note the criterias are as under:
1) Open sales order qty is the confirmed qty less the delivery qty.
2) The delivery qty should be delivery order qty (The delivery should not necessarily be pick, packed & PGI)sorry it doesn't work for services, since they do not create requirements.
in this case you can use VBFA table, subracting all the delivered quantities VBFA-RFMNG with VBFA-VBTYP_N = J and VBFA-VBELV/VBFA-POSNV = to your order/item from the ordered quantities
hope this help you.
Roberto -
Dear all,
I need to create a open sales order report. Could you please tell me from which table i can get open sales order. Its standard report is VA05 and also I checked in table VBBE. but all record which i get from VA05 are not visible in VBBE table. It means VBBE doesnt carry all pending open records.
Please guide me from which table i can get it or what is the sriteria to get it?
Thankyou very much in advance
Punnet Sharmahi,
my logic goes like this:
Note: Open cursor is used since we are dealing with huge amnt of data:
* Select orders based on their Delivery status
SELECT vbeln
FROM vbuk INTO TABLE git_vbuk
WHERE lfstk = 'A' OR lfstk = 'B' .
* Filter selected orders
* Selection using open cursor
DATA: lwa_op_sal_ord1 TYPE gt_comtab.
IF sy-subrc = 0.
OPEN CURSOR c1 FOR
SELECT vbap~matnr
FROM vbap INNER JOIN vbak
ON vbap~vbeln EQ vbak~vbeln
FOR ALL entries IN git_vbuk
WHERE vbap~vbeln = git_vbuk-vbeln AND
vbak~vbtyp = 'C'.
DO.
CLEAR lwa_op_sal_ord1.
FETCH NEXT CURSOR c1 INTO CORRESPONDING FIELDS OF lwa_op_sal_ord1.
IF sy-subrc = 0.
APPEND lwa_op_sal_ord1 TO li_op_sal_ord1.
ELSE.
CLOSE CURSOR c1.
EXIT.
ENDIF.
ENDDO.
ENDIF.
here filter orders based on 'A' and 'B' from VBUK...
then frm header table VBAK get order for vbtyp ='C'.
now li_op_sal_ord1 will have open sales orders..
Moreover as per ur query y do u need the item data frm VBAP as u are only concerned abt VBELN.
If u need item u hv 2 run another select.
regards,
ags -
Open Balance on Sales Order Cost Report
Hi SAP Group -
I have a couple questions about the settlement of manufacturing variance to COPA.
When our settlement process is complete (production order and sales order both settled to COPA), there is a balance remaining on the sales order cost report which is equal to the manufacturing variance on the production order.
It seems that the manufacturing variance is posting from the production order to the sales order, but is not being assigned to the PSEG and flowing to COPA.
I am looking for advice in two areas:
First, how do we "clear" these balances on old orders that are already settled?
Second, how do we prevent this from happening on future orders?
Thanks !!!Refer to OSS 183250 and note 186485.
If you dont specify in the settlement profile for the production order that the variances are not transferred from the production order into CO-PA, you will settle the variances to <b>CO-PA twice</b>: once from the production order (broken down into variance categories), and once from the sales order item. The settlement rule still references the material and not the sales order item.
Special Features of Product Cost by Sales Order with Valuated Sales Order Stock
<a href="http://help.sap.com/erp2005_ehp_02/helpdata/en/90/ba66cc446711d189420000e829fbbd/content.htm">Read the topic on 'Special Features of Product Cost by Sales Order with Valuated Sales Order Stock'</a>
You may want to check the period of the variance settlement from mfg order to sales order and ensure the settlement of sales order is also done the same period, if the type is PER. -
Hi,
We have a business scenario of one sales order --> one delivery document. Any items which have not been confirmed for delivery need to be closed out so that they do not show up as open requirements.
One way is to reject the open line items. However, rejection reduces the original customer sales order value.
Is there any other way that the open sales order line items can be changed in status so that the pricing is intact, but the item is closed out ?
Would appreciate inputs from the forum
ThanksHi
In standard itself this can be achieved
In t code OVAG itself for your reason of rejection if you maintain BLANK in the statistical column
Then those rejected values will not be reflected in sales order
Suppose a sales order contains three materials say
Material A qty 3 units
Material B qty 3 units
Material C qty 2 units
Each and everything is priced as 10 US dollars
then the nett value of this order will be 80 US dollars
Suppose if you reject Material C qty 2 units with a reason of rejection by maintaining the settings that i mentioned above the sales order value still Will be 80 US dollars and will not become 60 US dollars
This is what you are looking for (i hope so)
Please try this
Regards
Raja -
hai to all
i my senario i should download the open sale order existing in the present production server into a flat fle
can anyone tell me where this ship- to party is getting stored while creating the sale order. please let me know the table name.
regards
vijayHi Vijay,
To find out Open Sales Order. You shoud get them from VBUK-GBSTK <> 'C'. Store them in internal table.
To get Ship-to-party, you can get it from VBPA (partner table).
VBPA-VBELN = sales order number
VBPA-POSNR = '000000'
VBPA-PARVW = 'WE' or 'SH'
You will get details for Ship to Party.
regards,
ram -
Hi!
I need report similar to /AFS/MD04 AFS stock req list but for all material of one sale order on onew screen.
User want to see statuses for allpositions of order at one time to make decision about delivery.
any standart report?
Andrey Garshin.Hi Andrey,
I don't see a benefit from seeing statuses in a sales order.
/AFS/MD04 is a stock/requirements list for the MRP conroller.
It does a complete different calculation than ARUN or ATP.
It will not help you to determine what can delivered.
You can have orders in B status and still be able to allocate and deliver it.
So explain your business requirements. What do you want to see?
Best Regards,
Markus
Edited by: Markus Doerr on Jun 8, 2010 10:16 AM
Maybe you are looking for
-
How do I hide or delete a deferred update?
I acidentally deferred an update that I meant to hide. I cannot figure out how to hide or delete it from the deferred list in System Update (latest version). This is on a T500 2081 running Vista 64. Message Edited by kalnoc on 02-13-2009 10:21 AM
-
Single Apple ID with multiple IPAD 2 logins
Hi, My school just purchased 12 IPAD2 for educational purpose. May I know is it possible to have one Apple ID (with one credit card details) to login to all 12 IPAD2s one at a time? Also, is there a way, where I downloaded selected apps and "Clone" t
-
How to embed small video frame clip into large frame segment?
Hi, folks: I have an video of an interview that I imported at 720x480. During the interview, the presenter shows a video clip. I have a wmv file of the clip at 320x240. I imported the wmv clip and included it in the larger interview sequence. But (ob
-
Hi experts. i have DEV, QAS,PRD landscape with ecc6 hp-ux. oracle data base. sap router was installed in the win2003 server (separate server). and it was working perfectly one of my client has formatted the sap router server bcoz of virus. i have the
-
Hi there, I've been searching for about two days now, trying to find a solution to our problem. We want to open MS Explorer from a link in Netscape. So basicaly force the link to open a new window in MS Explorer (this is for an internal jsp applicati