11-16-2007 9:20 AM
hi
can any one have sample code for VA41 sales contract(bdc).
i need to develop bdc program for sales contract VA41.
please provide sample code.its urgent.
thanks in advance.
11-16-2007 9:22 AM
Hi,
use SHDB to record VA41 and generate a programm.
That's the simplest way.
Regards, Dieter
11-16-2007 9:30 AM
Hi
see the sample code for MM contracts not SD VA41
but record similar to it using SHDB and do it
REPORT zmm_contract_upload_mat
NO STANDARD PAGE HEADING
LINE-SIZE 255.
Standard Include for Selection Screen
INCLUDE bdcrecx1.
Internal Table for Upload Data
DATA: BEGIN OF i_con OCCURS 0,
Initial Screen
sno(3), " SNo
lifnr(010), " Vendor No
evart(004), " Contract Type
vedat(010), " Contract Creation Date
ekorg(004), " Purchase Orgn
ekgrp(003), " Pur.Group
bukrs(004), " Company Code
Header Details Screen
kdatb(010), " Start Date
kdate(010), " End Date
zterm(004), " Payment Terms
ktwrt(020), " Target Value
waers(005), " Currency
zbd1t(003), " Payment Days
wkurs(012), " Exchange Rate
inco1(003), " Incoterms
Item Data
ematn(018), " Material No
ktmng(017), " Quantity
netpr(014), " Price
Item Details
abmng(017),
peinh(005),
bprme(003),
bpumn(006),
bpumz(006),
mahn1(004),
mahn2(004),
mahn3(004),
bednr(010), " Tracking No
prsdr(001),
repos(001),
END OF i_con.
Internal Table for header Data
DATA: BEGIN OF it_header OCCURS 0,
sno(3), " SNo
lifnr(010), " Vendor No
evart(004), " Contract Type
vedat(010), " Contract Creation Date
ekorg(004), " Purchase Orgn
ekgrp(003), " Pur.Group
bukrs(004), " Company Code
kdatb(010), " Start Date
kdate(010), " End Date
zterm(004), " Payment Terms
ktwrt(020), " Target Value
waers(005), " Currency
inco1(003), " Incoterms
END OF it_header.
Internal Table for Item Data
DATA: BEGIN OF it_item OCCURS 0,
sno(3), " SNo
ematn(018), " Material No
ktmng(017), " Quantity
netpr(014), " Price
bednr(010), " Tracking No
END OF it_item.
Data Variables & Constants
CONSTANTS : c_x VALUE 'X'. " Flag
DATA : v_l(2), " Counter
v_rows LIKE sy-srows, " Rows in TC
v_field(45). " String
Parameters
PARAMETERS: p_file LIKE ibipparms-path. " Filename
At selection-screen on Value Request for file Name
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
Get the F4 Values for the File
CALL FUNCTION 'F4_FILENAME'
EXPORTING
program_name = syst-cprog
dynpro_number = syst-dynnr
IMPORTING
file_name = p_file.
Start of Selection
START-OF-SELECTION.
Open the BDC Session
PERFORM open_group.
Upload the File into internal Table
CALL FUNCTION 'UPLOAD'
EXPORTING
filename = p_file
filetype = 'DAT'
TABLES
data_tab = i_con
EXCEPTIONS
conversion_error = 1
invalid_table_width = 2
invalid_type = 3
no_batch = 4
unknown_error = 5
gui_refuse_filetransfer = 6
OTHERS = 7.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
SORT i_con BY sno.
LOOP AT i_con.
MOVE-CORRESPONDING i_con TO it_item.
APPEND it_item.
CLEAR it_item.
AT END OF sno.
READ TABLE i_con INDEX sy-tabix.
MOVE-CORRESPONDING i_con TO it_header.
APPEND it_header.
CLEAR it_header.
ENDAT.
ENDLOOP.
SORT it_header BY sno.
SORT it_item BY sno.
v_rows = sy-srows - 6.
Upload the Data from Internal Table
LOOP AT it_header.
PERFORM bdc_dynpro USING 'SAPMM06E' '0200'.
PERFORM bdc_field USING 'BDC_CURSOR'
'EKKO-EKGRP'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'EKKO-LIFNR'
it_header-lifnr.
PERFORM bdc_field USING 'RM06E-EVART'
it_header-evart.
PERFORM bdc_field USING 'RM06E-VEDAT'
it_header-vedat.
PERFORM bdc_field USING 'EKKO-EKORG'
it_header-ekorg.
PERFORM bdc_field USING 'EKKO-EKGRP'
it_header-ekgrp.
Company Code Data
PERFORM bdc_dynpro USING 'SAPMM06E' '0514'.
PERFORM bdc_field USING 'BDC_CURSOR'
'EKKO-BUKRS'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=ENTE'.
PERFORM bdc_field USING 'EKKO-BUKRS'
it_header-bukrs.
Header Details Data
PERFORM bdc_dynpro USING 'SAPMM06E' '0201'.
PERFORM bdc_field USING 'BDC_CURSOR'
'EKKO-INCO1'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'EKKO-KDATB'
it_header-kdatb.
PERFORM bdc_field USING 'EKKO-KDATE'
it_header-kdate.
PERFORM bdc_field USING 'EKKO-ZTERM'
it_header-zterm.
PERFORM bdc_field USING 'EKKO-KTWRT'
it_header-ktwrt.
PERFORM bdc_field USING 'EKKO-WAERS'
it_header-waers.
PERFORM bdc_field USING 'EKKO-ZBD1T'
it_header-zbd1t.
PERFORM bdc_field USING 'EKKO-WKURS'
it_header-wkurs.
PERFORM bdc_field USING 'EKKO-INCO1'
it_header-inco1.
Item Data
PERFORM bdc_dynpro USING 'SAPMM06E' '0220'.
PERFORM bdc_field USING 'BDC_CURSOR'
'EKPO-NETPR(01)'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
v_l = 0.
LOOP AT it_item where sno = it_header-sno.
v_l = v_l + 1.
CLEAR v_field.
CONCATENATE 'EKPO-EMATN(' v_l ')' INTO v_field.
PERFORM bdc_field USING v_field it_item-ematn.
CLEAR v_field.
CONCATENATE 'EKPO-KTMNG(' v_l ')' INTO v_field.
PERFORM bdc_field USING v_field it_item-ktmng.
CLEAR v_field.
CONCATENATE 'EKPO-NETPR(' v_l ')' INTO v_field.
PERFORM bdc_field USING v_field it_item-netpr.
Item details
PERFORM bdc_dynpro USING 'SAPMM06E' '0211'.
PERFORM bdc_field USING 'BDC_CURSOR'
'EKPO-BEDNR'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'EKPO-ABMNG'
i_con-abmng.
PERFORM bdc_field USING 'EKPO-PEINH'
i_con-peinh.
PERFORM bdc_field USING 'EKPO-BPRME'
i_con-bprme.
PERFORM bdc_field USING 'EKPO-BPUMN'
i_con-bpumn.
PERFORM bdc_field USING 'EKPO-BPUMZ'
i_con-bpumz.
PERFORM bdc_field USING 'EKPO-MAHN1'
i_con-mahn1.
PERFORM bdc_field USING 'EKPO-MAHN2'
i_con-mahn2.
PERFORM bdc_field USING 'EKPO-MAHN3'
i_con-mahn3.
PERFORM bdc_field USING 'EKPO-BEDNR'
it_item-bednr.
PERFORM bdc_field USING 'EKPO-PRSDR'
i_con-prsdr.
PERFORM bdc_field USING 'EKPO-REPOS'
i_con-repos.
IF v_l = v_rows.
v_l = 0.
PERFORM bdc_dynpro USING 'SAPMM06E' '0220'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_dynpro USING 'SAPMM06E' '220'.
PERFORM bdc_field USING 'BDC_OKCODE'
'P+'.
ENDIF.
ENDLOOP.
PERFORM bdc_dynpro USING 'SAPMM06E' '0220'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RM06E-EBELP'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=BU'.
Call The Transaction
PERFORM bdc_transaction USING 'ME31K'.
ENDLOOP.
Close the BDC Session
PERFORM close_group.
Regards
Anji