BDC recording for transaction 'Me01'
Hi,
Can u help me in BDC recording for transaction 'ME01' .
I have no idea for transaction 'ME01' .
give sample code if possible.
Thanks
For creating source list you will check that purchasing view has been maintained for this material
Source list for resticting, purcasing a material from a specific vendor only for the period specified in source list
Regards,
Amit R.
Similar Messages
-
Bdc recording for trancastion ME01
Hi,
Can u help me in BDC recording for transaction 'ME01' .
I have no idea for transaction 'ME01' & here i like to know how to handle table ctr during bdc recording?
give sample code if possible.
ThanksSee the sample attached code for ME51 using table control.
similarly record the same for ME01 and copy the TC logic from this.
REPORT zmm_pr_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_pr OCCURS 0,
Header Screen
sno(3), " SNo
bsart(004), " PR Type
epstp(001), " Item Category
knttp(001), " Account Assignment
eeind(010), " Delivery Date
lpein(001), " Category of Del Date
werks(004), " Plant
lgort(004), " Storage Location
ekgrp(003), " Purchasing Group
matkl(009), " Material Group
bednr(010), " Tracking No
afnam(012), " Requisitioner
Item Details
matnr(018), " Material No
menge(017), " Quantity
badat(010),
frgdt(010),
preis(014), " Valuation Price
waers(005), " Currency
peinh(005),
wepos(001),
repos(001),
sakto(010), " GL Account
kostl(010), " Cost Center
bnfpo(005),
END OF i_pr.
Internal Table for header Data
DATA: BEGIN OF it_header OCCURS 0,
sno(3), " SNo
bsart(004), " PR Type
epstp(001), " Item Category
knttp(001), " Account Assignment
eeind(010), " Delivery Date
werks(004), " Plant
lgort(004), " Storage Location
ekgrp(003), " Purchasing Group
matkl(009), " Material Group
bednr(010), " Tracking No
afnam(012), " Requisitioner
END OF it_header.
Internal Table for Item Data
DATA: BEGIN OF it_item OCCURS 0,
sno(3), " SNo
matnr(018), " Material No
menge(017), " Quantity
preis(014), " Valuation Price
sakto(010), " GL Account
kostl(010), " Cost Center
END OF it_item.
Data Variables & Constants
CONSTANTS : c_x VALUE 'X'. " Flag
DATA : v_l(2), " Counter
v_rowno(5), " Row No
v_2(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_pr
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_pr BY sno.
LOOP AT i_pr.
MOVE-CORRESPONDING i_pr TO it_item.
APPEND it_item.
CLEAR it_item.
AT END OF sno.
READ TABLE i_pr INDEX sy-tabix.
MOVE-CORRESPONDING i_pr 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.
Header Data
PERFORM bdc_dynpro USING 'SAPMM06B' '0100'.
PERFORM bdc_field USING 'BDC_CURSOR'
'EBAN-BEDNR'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'EBAN-BSART'
it_header-bsart.
PERFORM bdc_field USING 'RM06B-EPSTP'
it_header-epstp.
PERFORM bdc_field USING 'EBAN-KNTTP'
it_header-knttp.
PERFORM bdc_field USING 'RM06B-EEIND'
it_header-eeind.
PERFORM bdc_field USING 'RM06B-LPEIN'
it_header-lpein.
PERFORM bdc_field USING 'EBAN-WERKS'
it_header-werks.
PERFORM bdc_field USING 'EBAN-LGORT'
it_header-lgort.
PERFORM bdc_field USING 'EBAN-EKGRP'
it_header-ekgrp.
PERFORM bdc_field USING 'EBAN-MATKL'
it_header-matkl.
PERFORM bdc_field USING 'EBAN-BEDNR'
it_header-bednr.
PERFORM bdc_field USING 'EBAN-AFNAM'
it_header-afnam.
Item Details
v_l = 0.
To add no. of rows
v_2 = 0 .
As the screen is showing 13 rows defaulted to 130
v_rowno = 130 .
LOOP AT it_item WHERE sno = it_header-sno.
v_l = v_l + 1.
IF v_l = 14 .
IF v_2 = 12 .
v_2 = 12 .
v_l = 2 .
From second time onwards it is displaying 12 rows only
v_rowno = v_rowno + 120 .
PERFORM bdc_dynpro USING 'SAPMM06B' '0106'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RM06B-BNFPO'.
PERFORM bdc_field USING 'RM06B-BNFPO'
v_rowno.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
ELSE.
V_2 initialized to 12 for second screen purpose
v_2 = 12 .
v_l = 2 .
PERFORM bdc_dynpro USING 'SAPMM06B' '0106'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RM06B-BNFPO'.
PERFORM bdc_field USING 'RM06B-BNFPO'
v_rowno .
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
ENDIF.
ENDIF.
PERFORM bdc_dynpro USING 'SAPMM06B' '0106'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
CLEAR v_field.
CONCATENATE 'EBAN-MATNR(' v_l ')' INTO v_field.
PERFORM bdc_field USING v_field it_item-matnr.
CLEAR v_field.
CONCATENATE 'EBAN-MENGE(' v_l ')' INTO v_field.
PERFORM bdc_field USING v_field it_item-menge.
PERFORM bdc_dynpro USING 'SAPMM06B' '0102'.
PERFORM bdc_field USING 'BDC_CURSOR'
'EBAN-PREIS'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'EBAN-PREIS'
it_item-preis.
PERFORM bdc_dynpro USING 'SAPMM06B' '0505'.
PERFORM bdc_field USING 'BDC_CURSOR'
'EBKN-SAKTO'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=ENTE'.
PERFORM bdc_field USING 'EBKN-SAKTO'
it_item-sakto.
Cost Center
PERFORM bdc_dynpro USING 'SAPLKACB' '0002'.
PERFORM bdc_field USING 'BDC_CURSOR'
'COBL-KOSTL'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=ENTE'.
PERFORM bdc_field USING 'COBL-KOSTL'
it_item-kostl.
PERFORM bdc_field USING 'BDC_OKCODE'
'=ENTE'.
ENDLOOP.
PERFORM bdc_dynpro USING 'SAPMM06B' '0106'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RM06B-BNFPO'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=BU'.
Call The Transaction
PERFORM bdc_transaction USING 'ME51'.
ENDLOOP.
Close the BDC Session
PERFORM close_group.
reward if useful
Regards
Vasu -
Problem in BDC recording for transaction /J4I/015W3A
hello all,
i am recording for transaction /J4I/015W3A it has 4 select options if we enter all select options and press enter it will guide to another screen which has table control . i need the fill the entries there also and save the recording.
i have completed recording with all the steps.
if i try to run the report with this recording the problem is that the first screen the entries which i have entered in select options are not defaulted and instead first enter okcode is getting triggered as there are no values on select options and enter is triggered an error message is displayed saying enter all the values .
how can i over come this problem...........?hi,
while recording, ok code will come first, for each screen you have to kept ok code at last .
This will work.
regards,
pavan -
BDC Recording for cm07 Transaction
Hi Everyone,
I'm doing BDC recording for CM07 transaction. In Recording, i need to give a print command by specifying the spool title.
For this, after opening the print window, i need to click the 'properties' button, and then select the spool title and input the value.
But I'm unable to do the recording of this print dialog box. The recording ends as soon as I give the print command.
Can anyone please tell me the solution to it.
Thanks and Regards
Rishika bawaHi,
See via transaction SHDB:
SAPLCORU_S 0100 X
BDC_OKCODE BU
AFRUD-RUECK 0000000000
AFRUD-AUFNR 100051152
AFRUD-VORNR 0010
AFRUD-LMNGA 100,000
AFRUD-MEINH PC
AFRUD-XMNGA 2,000
AFRUD-ISM01 200
AFRUD-ILE01 PC
The table for confirmations is AFRU.
Best regards,
Leandro Mengue -
Problem in creating a BDC program for transaction cj20n(project sytem)
Hi all,
I am trying to create project,WBS element ,network and activity using a BDC program,
I am able to create to a recording for the transaction cj20n using tcode shdb but when i run the recording it doesnt run properly i am not able to create any thing.
I get error saying that a particular field doesnt exist on the screen.
Is possible to create a BDC program for transaction CJ20N ?
Also is there any other alternative apart from using a BAPI or a function module.
Thanks,
NishantHi,
Check below link for BAPIs of transaction cj20n.
[BAPI for cj20n|BAPI for CJ20N transaction]
Thanks,
Asit Purbey. -
Bdc recording for XK02 to change vendor address
Dear All,
I am trying to create a bdc recording for XK02 transaction to change Address fields ( Name1 ... Name4 , House num1, street , House number supplement , city , State , Postal code etc .)
When i open the transaction XK02 by clicking address, I see all the above fields.
But when i try to create a recording for the same XK02 transaction through SM35, I see House no & Street as one field and House number supplement missing.
Please let me know how can i update House num1 , Street and House num supplement seperately.
Thanks,
HimaPlease chekc you entry in Country & Region.
The region should belong to the country.
Regards
Bhavesh MIstry -
hi
i have been asked to do bdc recording for the transaction mek1 through the call transaction method.can u people plss tell me how to go abt it?Hi,
You can Record using the Tcode SHDB and format the program and use.
You can use VK11 tcode also which is similar to MEK1.
see the sample code for VK11 ; You can change as per your requirement.
report ZSDBDCP_PRICING no standard page heading
line-size 255.
Includes
include zbdcrecx1.
Internal Tables
*--Internal Table To hold condition records data from flat file.
Data: begin of it_pricing occurs 0,
key(4),
f1(4),
f2(4),
f3(2),
f4(18),
f5(16),
end of it_pricing.
*--Internal Table To hold condition records header .
data : begin of it_header occurs 0,
key(4),
f1(4),
f2(4),
f3(2),
end of it_header.
*--Internal Table To hold condition records details .
data : begin of it_details occurs 0,
key(4),
f4(18),
f5(16),
end of it_details.
data : v_sno(2),
v_rows type i,
v_fname(40).
start-of-selection.
refresh : it_pricing,it_header,it_details.
clear : it_pricing,it_header,it_details.
CALL FUNCTION 'UPLOAD'
EXPORTING
FILENAME = 'C:\WINDOWS\Desktop\pricing.txt'
FILETYPE = 'DAT'
TABLES
DATA_TAB = it_pricing
EXCEPTIONS
CONVERSION_ERROR = 1
INVALID_TABLE_WIDTH = 2
INVALID_TYPE = 3
NO_BATCH = 4
UNKNOWN_ERROR = 5
GUI_REFUSE_FILETRANSFER = 6
OTHERS = 7.
WRITE : / 'Condition Records ', P_FNAME, ' on ', SY-DATUM.
OPEN DATASET P_FNAME FOR INPUT IN TEXT MODE.
if sy-subrc ne 0.
write : / 'File could not be uploaded.. Check file name.'.
stop.
endif.
CLEAR : it_pricing[], it_pricing.
DO.
READ DATASET P_FNAME INTO V_STR.
IF SY-SUBRC NE 0.
EXIT.
ENDIF.
write v_str.
translate v_str using '#/'.
SPLIT V_STR AT ',' INTO it_pricing-key
it_pricing-F1 it_pricing-F2 it_pricing-F3
it_pricing-F4 it_pricing-F5 .
APPEND it_pricing.
CLEAR it_pricing.
ENDDO.
IF it_pricing[] IS INITIAL.
WRITE : / 'No data found to upload'.
STOP.
ENDIF.
loop at it_pricing.
At new key.
read table it_pricing index sy-tabix.
move-corresponding it_pricing to it_header.
append it_header.
clear it_header.
endat.
move-corresponding it_pricing to it_details.
append it_details.
clear it_details.
endloop.
perform open_group.
v_rows = sy-srows - 8.
loop at it_header.
perform bdc_dynpro using 'SAPMV13A' '0100'.
perform bdc_field using 'BDC_CURSOR'
'RV13A-KSCHL'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'RV13A-KSCHL'
it_header-f1.
perform bdc_dynpro using 'SAPMV13A' '1004'.
perform bdc_field using 'BDC_CURSOR'
'KONP-KBETR(01)'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'KOMG-VKORG'
it_header-f2.
perform bdc_field using 'KOMG-VTWEG'
it_header-f3.
**Table Control
v_sno = 0.
loop at it_details where key eq it_header-key.
v_sno = v_sno + 1.
clear v_fname.
CONCATENATE 'KOMG-MATNR(' V_SNO ')' INTO V_FNAME.
perform bdc_field using v_fname
it_details-f4.
clear v_fname.
CONCATENATE 'KONP-KBETR(' V_SNO ')' INTO V_FNAME.
perform bdc_field using v_fname
it_details-f5.
if v_sno eq v_rows.
v_sno = 0.
perform bdc_dynpro using 'SAPMV13A' '1004'.
perform bdc_field using 'BDC_OKCODE'
'=P+'.
perform bdc_dynpro using 'SAPMV13A' '1004'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
endif.
endloop.
*--Save
perform bdc_dynpro using 'SAPMV13A' '1004'.
perform bdc_field using 'BDC_OKCODE'
'=SICH'.
perform bdc_transaction using 'VK11'.
endloop.
perform close_group.
Regards,
Anji -
Hi,
I am asked to do bdc recording for the transaction sm30 through call transaction method. Can u please tell me how to do that...Hi Buvana,
While recording just mentioned the tcode as SM30 and then it takes you automaticcaly to that transaction code then enter the table name and press maintain tab and then select new entreis. Enter the values then save it. Press back button. Now it will take return to recording section. now u can able to see the recoding section. Generate the program automaticcaly from the recording. Now take neccessary internal tables and complete the code. Reply for any queries and reward for useful points. Take care while recording. Don't mention any wrong values.
Regards,
Kumar. -
hi all,
how to do bdc recording for AS01.please send me step step by approach.Hi Satya,
Welcome to SDN.
Check this Sample program.
REPORT ZASSET .
INCLUDE ZASSET_INC .
PARAMETERS: P_PCFILE LIKE RLGRAP-FILENAME.
*PARAMETERS: P_FILE_S LIKE RLGRAP-FILENAME.
PARAMETER : H_CHK AS CHECKBOX.
"Proc Mode
Include the BDC *
**BDC DATA STUCTURE
*DATA: BEGIN OF BDCDATA OCCURS 0.
INCLUDE STRUCTURE BDCDATA.
*DATA: END OF BDCDATA.
messages of call transaction
*DATA: MESSTAB LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE.
TYPE-POOLS
TYPE-POOLS TRUXS.
DATA IT_DATA1 TYPE TRUXS_T_TEXT_DATA.
DATA : BEGIN OF IT_DATA OCCURS 0,
INVZU(015),
ANLKL(008),
BUKRS(004),
TXT50(100),
SERNR(018),
MENGE(018),
INKEN(001),
AKTIV(010),
KOSTL(010),
WERKS(004),
STORT(010),
ORD41(004),
ORD42(004),
EQANZ(001),
LIFNR(010),
AFASL(004),
NDJAR(003),
AFABG(010),
ANLGR(012),
ANLGR2(004),
ANBTR01_01(016),
ANBTR01_06(016),
ANBTR01_16(016),
TDATE(010),
TCODE(004),
TAMT(018),
PERNR(012),
KFZKF(015),
SAP_ASSET(12),
ERR_ASSET,
END OF IT_DATA.
DATA : BEGIN OF IT_DATA2 OCCURS 0,
INVZU(015),
TDATE(010),
TCODE(004),
TAMT(018),
END OF IT_DATA2.
DATA : BEGIN OF IT_DATA3 OCCURS 0,
ITEM(003),
INVZU(015),
ANLKL(010),
BUKRS(010),
TXT50(050),
SERNR(018),
MENGE(018),
INKEN(001),
AKTIV(010),
KOSTL(010),
WERKS(004),
STORT(010),
ORD41(004),
ORD42(004),
EQANZ(001),
LIFNR(010),
AFASL(004),
NDJAR(003),
AFABG(010),
ANLGR(012),
ANLGR2(004),
ANBTR01_01(016),
ANBTR01_06(016),
ANBTR01_16(016),
TDATE(010),
TCODE(004),
TAMT(018),
SAP_ASSET(12),
ERR_ASSET,
END OF IT_DATA3.
SUB ASSET MASTER TABLE
DATA : BEGIN OF IT_DATA_SUB OCCURS 0,
INVZU_M(015),
INVZU(015),
BUKRS(004),
TXT50(100),
ANLHTXT(050),
SERNR(018),
MENGE(018),
MEINS_007(003),
XHIST_008(001),
AKTIV(010),
GSBER_011(004),
KOSTL(010),
STORT(010),
ORD41(004),
ORD42(004),
EQANZ_016(001),
LIFNR(010),
LIEFE(030),
NDJAR(003),
NDPER(003),
ANBTR01_01(016),
ANBTR01_06(016),
ANBTR01_16(016),
BZDAT(010),
BWASL(003),
ANBTR01(016),
ANLN1(012),
ERR_SUB,
SUB_CODE(012),
ERR_SUB1,
END OF IT_DATA_SUB.
*& At selection-screen on value request for getting f4 help
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_PCFILE.
PERFORM VALUE_REQUEST_P_FILE.
*AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE_S.
PERFORM VALUE_REQUEST_P_FILE_S.
START OF SELECTION *
START-OF-SELECTION.
To Upload the flat file datas *
PERFORM GET_DATA.
PERFORM UP_LOAD.
PERFORM SUB_UPLOAD.
WRITE :/ 'FOLLOWING ASSETS CREATED'.
WRITE:/ 'OLD ASSET'.
WRITE: 20 'COMPANY'.
WRITE: 30 'SAP CODE'.
LOOP AT IT_DATA WHERE ERR_ASSET NE 'X'.
WRITE :/ IT_DATA-INVZU,
20 IT_DATA-BUKRS, 30 IT_DATA-SAP_ASSET.
ENDLOOP.
SKIP 2.
WRITE :/ 'FOLLOWING SUB ASSETS CREATED'.
WRITE:/ 'OLD ASSET'.
WRITE: 16 'OLD SUB ASSET'.
WRITE: 35 'COMPANY'.
WRITE: 45 'SAP CODE'.
WRITE: 60 'SUB ASSET'.
LOOP AT IT_DATA_SUB WHERE ERR_SUB NE 'X' AND ERR_SUB1 NE 'X'.
WRITE :/ IT_DATA_SUB-INVZU_M,
16 IT_DATA_SUB-INVZU,
35 IT_DATA_SUB-BUKRS, 45 IT_DATA_SUB-ANLN1, 60
*IT_DATA_SUB-SUB_CODE.
ENDLOOP.
*& Form value_request_p_file
FORM VALUE_REQUEST_P_FILE .
CALL FUNCTION 'F4_FILENAME'
EXPORTING
PROGRAM_NAME = SYST-CPROG
DYNPRO_NUMBER = SYST-DYNNR
FIELD_NAME = 'x'
IMPORTING
FILE_NAME = P_PCFILE.
ENDFORM. " value_request_p_file
*& Form UP_LOAD
text
--> p1 text
<-- p2 text
FORM UP_LOAD .
SORT IT_DATA BY INVZU.
SORT IT_DATA2 BY INVZU.
DATA : V_LEN1 TYPE I, V_LEN2 TYPE I, V_SUBSTR1(50) ,V_SUBSTR2(50).
perform open_dataset using dataset.
PERFORM OPEN_GROUP.
LOOP AT IT_DATA.
CONDENSE IT_DATA-TXT50.
V_LEN1 = STRLEN( IT_DATA-TXT50 ).
IF V_LEN1 > 50.
V_SUBSTR1 = IT_DATA-TXT50+0(50).
V_LEN2 = V_LEN1 - 50.
V_SUBSTR2 = IT_DATA-TXT50+50(50).
ELSE.
V_SUBSTR1 = IT_DATA-TXT50.
V_SUBSTR2 = ''..
ENDIF.
REFRESH BDCDATA.
PERFORM BDC_DYNPRO USING 'SAPLAIST' '0105'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'ANLA-BUKRS'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'ANLA-ANLKL'
IT_DATA-ANLKL.
PERFORM BDC_FIELD USING 'ANLA-BUKRS'
IT_DATA-BUKRS.
PERFORM BDC_DYNPRO USING 'SAPLAIST' '1000'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=TAB02'.
PERFORM BDC_FIELD USING 'ANLA-TXT50'
V_SUBSTR1. "IT_DATA-TXT50.
PERFORM BDC_FIELD USING 'ANLA-TXA50'
V_SUBSTR2.
PERFORM BDC_FIELD USING 'ANLA-SERNR'
IT_DATA-SERNR.
PERFORM BDC_FIELD USING 'ANLA-MENGE'
IT_DATA-MENGE.
*perform bdc_field using 'ANLA-INKEN'
record-INKEN_006.
PERFORM BDC_FIELD USING 'ANLA-INVZU'
IT_DATA-INVZU.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'ANLA-AKTIV'.
PERFORM BDC_FIELD USING 'ANLA-AKTIV'
IT_DATA-AKTIV.
PERFORM BDC_DYNPRO USING 'SAPLAIST' '1000'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=TAB03'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'ANLZ-PERNR'.
PERFORM BDC_FIELD USING 'ANLZ-PERNR'
IT_DATA-PERNR.
PERFORM BDC_FIELD USING 'ANLZ-KOSTL'
IT_DATA-KOSTL.
PERFORM BDC_FIELD USING 'ANLZ-WERKS'
IT_DATA-WERKS.
PERFORM BDC_FIELD USING 'ANLZ-STORT'
IT_DATA-STORT.
IF IT_DATA-ANLKL = 'VHCL'.
PERFORM BDC_FIELD USING 'ANLZ-KFZKZ'
IT_DATA-KFZKF.
ENDIF.
PERFORM BDC_DYNPRO USING 'SAPLAIST' '1000'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=TAB04'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'ANLA-ORD42'.
PERFORM BDC_FIELD USING 'ANLA-ORD41'
IT_DATA-ORD41.
PERFORM BDC_FIELD USING 'ANLA-ORD42'
IT_DATA-ORD42.
*perform bdc_field using 'RA02S-EQANZ'
record-EQANZ_014.
PERFORM BDC_DYNPRO USING 'SAPLAIST' '1000'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=TAB06'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'ANLA-LIFNR'.
PERFORM BDC_FIELD USING 'ANLA-LIFNR'
IT_DATA-LIFNR.
PERFORM BDC_DYNPRO USING 'SAPLAIST' '1000'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=TAB08'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'ANLV-VSART'.
PERFORM BDC_DYNPRO USING 'SAPLAIST' '1000'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=SELZ'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'RA02S-XAKPLA(02)'.
PERFORM BDC_DYNPRO USING 'SAPLAIST' '0195'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'ANLB-AFASL'.
IF IT_DATA-TCODE IS INITIAL.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=ALTD'.
ELSE.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=ALTB'.
ENDIF.
PERFORM BDC_FIELD USING 'ANLB-ANLGR'
IT_DATA-ANLGR.
PERFORM BDC_FIELD USING 'ANLB-ANLGR2'
IT_DATA-ANLGR2.
PERFORM BDC_DYNPRO USING 'SAPLALTD' '1100'.
IF IT_DATA-TCODE IS INITIAL.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=BUCH'.
PERFORM BDC_FIELD USING 'RALT_DYNP_STRUC-ANBTR01(01)'
IT_DATA-ANBTR01_01.
IF H_CHK NE 'X'.
PERFORM BDC_FIELD USING 'RALT_DYNP_STRUC-ANBTR01(06)'
IT_DATA-ANBTR01_06.
ENDIF.
ELSE.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=ALTB'.
PERFORM BDC_DYNPRO USING 'SAPLALTD' '1200'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=BUCH'.
PERFORM BDC_FIELD USING 'RALT_DYNP_STRUC-BZDAT(01)'
IT_DATA-TDATE.
PERFORM BDC_FIELD USING 'RALT_DYNP_STRUC-BWASL(01)'
IT_DATA-TCODE.
PERFORM BDC_FIELD USING 'RALT_DYNP_STRUC-ANBTR01(01)'
IT_DATA-TAMT.
ENDIF.
REFRESH MESSTAB.
CALL TRANSACTION 'AS91' USING BDCDATA
MODE H_MODE
UPDATE 'S'
MESSAGES INTO MESSTAB.
PERFORM BDC_TRANSACTION USING 'AS91'.
ENDLOOP..
PERFORM CLOSE_GROUP.
*perform close_dataset using dataset.
ENDFORM. " UP_LOAD
*& Form GET_DATA
text
--> p1 text
<-- p2 text
FORM GET_DATA .
CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'
EXPORTING
I_TAB_RAW_DATA = IT_DATA1
I_FILENAME = P_PCFILE
TABLES
I_TAB_CONVERTED_DATA = IT_DATA.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
LOOP AT IT_DATA3.
IF IT_DATA3-ITEM = '1'.
MOVE-CORRESPONDING IT_DATA3 TO IT_DATA.
APPEND IT_DATA.
ELSEIF IT_DATA3-ITEM = '2'.
IT_DATA2-INVZU = IT_DATA3-INVZU.
IT_DATA2-TDATE = IT_DATA3-ANLKL.
IT_DATA2-TCODE = IT_DATA3-BUKRS.
IT_DATA2-TAMT = IT_DATA3-TXT50.
APPEND IT_DATA2.
ENDIF.
ENDLOOP.
IF NOT P_FILE_S IS INITIAL.
CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'
EXPORTING
I_TAB_RAW_DATA = IT_DATA1
I_FILENAME = P_FILE_S
TABLES
I_TAB_CONVERTED_DATA = IT_DATA_SUB.
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.
ENDFORM. " GET_DATA
FORM BDC_DYNPRO
--> PROGRAM
--> DYNPRO
**FORM BDC_DYNPRO USING PROGRAM DYNPRO.
CLEAR BDCDATA.
BDCDATA-PROGRAM = PROGRAM.
BDCDATA-DYNPRO = DYNPRO.
BDCDATA-DYNBEGIN = 'X'.
APPEND BDCDATA.
**ENDFORM. " BDC_DYNPRO
FORM BDC_FIELD
--> FNAM
--> FVAL
**FORM BDC_FIELD USING FNAM FVAL.
CLEAR BDCDATA.
BDCDATA-FNAM = FNAM.
BDCDATA-FVAL = FVAL.
APPEND BDCDATA.
**ENDFORM. "BDC_FIELD
***& Form bdc_transaction
text
-->TCODE text
**FORM BDC_TRANSACTION USING TCODE.
REFRESH MESSTAB.
CALL TRANSACTION TCODE USING BDCDATA
MODE H_MODE
UPDATE 'S'
MESSAGES INTO MESSTAB.
**ENDFORM. " bdc_transaction
*& Form VALUE_REQUEST_P_FILE_S
text
--> p1 text
<-- p2 text
FORM VALUE_REQUEST_P_FILE_S .
CALL FUNCTION 'F4_FILENAME'
EXPORTING
PROGRAM_NAME = SYST-CPROG
DYNPRO_NUMBER = SYST-DYNNR
FIELD_NAME = 'x'
IMPORTING
FILE_NAME = P_FILE_S.
ENDFORM. " VALUE_REQUEST_P_FILE_S
*& Form sUB_upload
text
--> p1 text
<-- p2 text
***FORM SUB_UPLOAD .
DATA : V_LEN1 TYPE I, V_LEN2 TYPE I, V_SUBSTR1(50) ,V_SUBSTR2(50).
LOOP AT IT_DATA_SUB WHERE ERR_SUB NE 'X'.
CONDENSE IT_DATA_SUB-TXT50.
V_LEN1 = STRLEN( IT_DATA_SUB-TXT50 ).
IF V_LEN1 > 50.
V_SUBSTR1 = IT_DATA_SUB-TXT50+0(50).
V_LEN2 = V_LEN1 - 50.
V_SUBSTR2 = IT_DATA_SUB-TXT50+50(50).
ELSE.
V_SUBSTR1 = IT_DATA_SUB-TXT50.
V_SUBSTR2 = ''..
ENDIF.
REFRESH BDCDATA.
PERFORM BDC_DYNPRO USING 'SAPLAIST' '0110'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'ANLA-ANLN1'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=MAST'.
PERFORM BDC_FIELD USING 'ANLA-ANLN1'
IT_DATA_SUB-ANLN1.
PERFORM BDC_FIELD USING 'ANLA-BUKRS'
IT_DATA_SUB-BUKRS.
PERFORM BDC_DYNPRO USING 'SAPLAIST' '1000'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=TAB02'.
PERFORM BDC_FIELD USING 'ANLA-TXT50'
V_SUBSTR1. "IT_DATA_SUB-TXT50.
PERFORM BDC_FIELD USING 'ANLA-TXa50'
V_SUBSTR2. "IT_DATA_SUB-TXT50.
****perform bdc_field using 'ANLH-ANLHTXT'
it_data_sub-ANLHTXT_004.
PERFORM BDC_FIELD USING 'ANLA-SERNR'
IT_DATA_SUB-SERNR.
PERFORM BDC_FIELD USING 'ANLA-MENGE'
IT_DATA_SUB-MENGE.
****perform bdc_field using 'ANLA-MEINS'
it_data_sub-MEINS_007.
****perform bdc_field using 'RA02S-XHIST'
it_data_sub-XHIST_008.
PERFORM BDC_FIELD USING 'ANLA-INVZU'
IT_DATA_SUB-INVZU.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'ANLA-AKTIV'.
PERFORM BDC_FIELD USING 'ANLA-AKTIV'
IT_DATA_SUB-AKTIV.
PERFORM BDC_DYNPRO USING 'SAPLAIST' '1000'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=TAB03'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'ANLZ-GSBER'.
****perform bdc_field using 'ANLZ-GSBER'
it_data_sub-GSBER_011.
****perform bdc_field using 'ANLZ-KOSTL'
it_data_sub-KOSTL_012.
PERFORM BDC_FIELD USING 'ANLZ-STORT'
IT_DATA_SUB-STORT.
PERFORM BDC_DYNPRO USING 'SAPLAIST' '1000'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=TAB04'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'ANLA-ORD41'.
PERFORM BDC_FIELD USING 'ANLA-ORD41'
IT_DATA_SUB-ORD41.
PERFORM BDC_FIELD USING 'ANLA-ORD42'
IT_DATA_SUB-ORD42.
****perform bdc_field using 'RA02S-EQANZ'
it_data_sub-EQANZ_016.
PERFORM BDC_DYNPRO USING 'SAPLAIST' '1000'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=TAB07'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'ANLA-LIFNR'.
PERFORM BDC_FIELD USING 'ANLA-LIFNR'
IT_DATA_SUB-LIFNR.
****perform bdc_field using 'ANLA-LIEFE'
IT_DATA_SUB-LIEFE.
PERFORM BDC_DYNPRO USING 'SAPLAIST' '1000'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=TAB08'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'ANLA-LEART'.
PERFORM BDC_DYNPRO USING 'SAPLAIST' '1000'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=SELZ'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'T093T-AFBKTX(01)'.
PERFORM BDC_DYNPRO USING 'SAPLAIST' '0195'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'ANLB-NDPER'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=ALTD'.
PERFORM BDC_FIELD USING 'ANLB-NDJAR'
IT_DATA_SUB-NDJAR.
PERFORM BDC_FIELD USING 'ANLB-NDPER'
IT_DATA_SUB-NDPER.
****perform bdc_field using 'ANLB-AFABG'
record-AFABG_029.
PERFORM BDC_DYNPRO USING 'SAPLALTD' '1100'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'ANLA-ANLN1'.
IF IT_DATA_SUB-BWASL IS INITIAL.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=BUCH'.
PERFORM BDC_FIELD USING 'RALT_DYNP_STRUC-ANBTR01(01)'
IT_DATA_SUB-ANBTR01_01.
Accu deprn automatically calculated by system changed on 6th Aug.
PERFORM BDC_FIELD USING 'RALT_DYNP_STRUC-ANBTR01(06)'
IT_DATA_SUB-ANBTR01_06.
ELSE.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=ALTB'.
PERFORM BDC_DYNPRO USING 'SAPLALTD' '1200'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'RALT_DYNP_STRUC-BZDAT(01)'
IT_DATA_SUB-BZDAT.
PERFORM BDC_FIELD USING 'RALT_DYNP_STRUC-BWASL(01)'
IT_DATA_SUB-BWASL.
PERFORM BDC_FIELD USING 'RALT_DYNP_STRUC-ANBTR01(01)'
IT_DATA_SUB-ANBTR01.
PERFORM BDC_DYNPRO USING 'SAPLALTD' '1200'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'ANLA-ANLN1'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=BUCH'.
****perform bdc_transaction using 'AS94'.
ENDIF.
REFRESH MESSTAB.
CALL TRANSACTION 'AS94' USING BDCDATA
MODE H_MODE
UPDATE 'S'
MESSAGES INTO MESSTAB.
IF SY-SUBRC = 0.
READ TABLE MESSTAB INDEX 1.
IT_DATA_sub-SUB_CODE = MESSTAB-MSGV1.
DATA AN1 TYPE ANLN1.
DATA AN2 TYPE ANLN2.
GET PARAMETER ID 'AN2' FIELD AN2.
IT_DATA_SUB-SUB_CODE = AN2. "MESSTAB-MSGV1.
MODIFY IT_DATA_SUB TRANSPORTING SUB_CODE.
ELSE.
IT_DATA_SUB-ERR_SUB1 = 'X'.
MODIFY IT_DATA_SUB TRANSPORTING ERR_SUB1.
ENDIF.
REFRESH BDCDATA.
ENDLOOP.
***ENDFORM. " sUB_upload
****& Form SUB_UPLOAD1
text
***FORM SUB_UPLOAD1 .
LOOP AT IT_DATA_SUB WHERE ERR_SUB NE 'X'.
PERFORM BDC_DYNPRO USING 'SAPLAIST' '0110'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'ANLA-ANLN1'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=MAST'.
PERFORM BDC_FIELD USING 'ANLA-ANLN1'
IT_DATA_SUB-ANLN1.
PERFORM BDC_FIELD USING 'ANLA-BUKRS'
IT_DATA_SUB-BUKRS.
PERFORM BDC_DYNPRO USING 'SAPLAIST' '1000'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=TAB02'.
PERFORM BDC_FIELD USING 'ANLA-TXT50'
IT_DATA_SUB-TXT50.
****perform bdc_field using 'ANLH-ANLHTXT'
it_data_sub-ANLHTXT_004.
PERFORM BDC_FIELD USING 'ANLA-SERNR'
IT_DATA_SUB-SERNR.
PERFORM BDC_FIELD USING 'ANLA-MENGE'
IT_DATA_SUB-MENGE.
****perform bdc_field using 'ANLA-MEINS'
it_data_sub-MEINS_007.
****perform bdc_field using 'RA02S-XHIST'
it_data_sub-XHIST_008.
PERFORM BDC_FIELD USING 'ANLA-INVZU'
IT_DATA_SUB-INVZU.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'ANLA-AKTIV'.
PERFORM BDC_FIELD USING 'ANLA-AKTIV'
IT_DATA_SUB-AKTIV.
PERFORM BDC_DYNPRO USING 'SAPLAIST' '1000'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=TAB03'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'ANLZ-GSBER'.
****perform bdc_field using 'ANLZ-GSBER'
it_data_sub-GSBER_011.
****perform bdc_field using 'ANLZ-KOSTL'
it_data_sub-KOSTL_012.
PERFORM BDC_FIELD USING 'ANLZ-STORT'
IT_DATA_SUB-STORT.
PERFORM BDC_DYNPRO USING 'SAPLAIST' '1000'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=TAB04'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'ANLA-ORD41'.
PERFORM BDC_FIELD USING 'ANLA-ORD41'
IT_DATA_SUB-ORD41.
PERFORM BDC_FIELD USING 'ANLA-ORD42'
IT_DATA_SUB-ORD42.
****perform bdc_field using 'RA02S-EQANZ'
it_data_sub-EQANZ_016.
PERFORM BDC_DYNPRO USING 'SAPLAIST' '1000'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=TAB07'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'ANLA-LIFNR'.
PERFORM BDC_FIELD USING 'ANLA-LIFNR'
IT_DATA_SUB-LIFNR.
****perform bdc_field using 'ANLA-LIEFE'
IT_DATA_SUB-LIEFE.
PERFORM BDC_DYNPRO USING 'SAPLAIST' '1000'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=TAB08'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'ANLA-LEART'.
PERFORM BDC_DYNPRO USING 'SAPLAIST' '1000'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=SELZ'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'T093T-AFBKTX(01)'.
PERFORM BDC_DYNPRO USING 'SAPLAIST' '0195'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'ANLB-NDPER'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=ALTD'.
PERFORM BDC_FIELD USING 'ANLB-NDJAR'
IT_DATA_SUB-NDJAR.
PERFORM BDC_FIELD USING 'ANLB-NDPER'
IT_DATA_SUB-NDPER.
****perform bdc_field using 'ANLB-AFABG'
record-AFABG_029.
PERFORM BDC_DYNPRO USING 'SAPLALTD' '1100'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'ANLA-ANLN1'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=ALTB'.
PERFORM BDC_FIELD USING 'RALT_DYNP_STRUC-ANBTR01(01)'
IT_DATA_SUB-ANBTR01_01.
PERFORM BDC_FIELD USING 'RALT_DYNP_STRUC-ANBTR01(06)'
IT_DATA_SUB-ANBTR01_06.
PERFORM BDC_DYNPRO USING 'SAPLALTD' '1200'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'RALT_DYNP_STRUC-BZDAT(01)'
IT_DATA_SUB-BZDAT.
PERFORM BDC_FIELD USING 'RALT_DYNP_STRUC-BWASL(01)'
IT_DATA_SUB-BWASL.
PERFORM BDC_FIELD USING 'RALT_DYNP_STRUC-ANBTR01(01)'
IT_DATA_SUB-ANBTR01.
PERFORM BDC_DYNPRO USING 'SAPLALTD' '1200'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'ANLA-ANLN1'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=BUCH'.
****perform bdc_transaction using 'AS94'.
REFRESH MESSTAB.
CALL TRANSACTION 'AS94' USING BDCDATA
MODE H_MODE
UPDATE 'S'
MESSAGES INTO MESSTAB.
IF SY-SUBRC = 0.
READ TABLE MESSTAB INDEX 1.
IT_DATA_sub-SUB_CODE = MESSTAB-MSGV1.
DATA AN1 TYPE ANLN1.
DATA AN2 TYPE ANLN2.
GET PARAMETER ID 'AN2' FIELD AN2.
IT_DATA_SUB-SUB_CODE = AN2. "MESSTAB-MSGV1.
MODIFY IT_DATA_SUB TRANSPORTING SUB_CODE.
ELSE.
IT_DATA_SUB-ERR_SUB1 = 'X'.
MODIFY IT_DATA_SUB TRANSPORTING ERR_SUB1.
ENDIF.
REFRESH BDCDATA.
ENDLOOP.
***ENDFORM. " sUB_upload
and one more thing i face some issues when doing bdc for AS01, so i use AS91 and AS92 for uploading by using LSMW (direct input method and recording method) and it was successful.(if u have to do coding go for BDC/BAPI or there is no coding better to choose LSMW (it is the easiest way) as of my knowledge, so before starting just analyze once which method is best for ur requirement.
Reward Points for Useful Answers
Thanks
Naveen khan
Message was edited by:
Pattan Naveen -
Hi all,
Can anyone of you provide me complete BDC code for Transaction XD01.
An early reply will be highly appreciated and would be rewarded.
Regards,
NeerajHi Prakash
hope this code will help you.
ABAP BDC SAMPLE CODE XD01
Table/Structure declarations. *
TABLES : KNA1. "Customer master
Constants declarations. *
CONSTANTS : C_MODE VALUE 'A',
C_UPDATE VALUE 'S',
C_X VALUE 'X',
C_SESS TYPE APQI-GROUPID VALUE 'ZCUSTOMER', "Session Name
C_XD01 LIKE TSTC-TCODE VALUE 'XD01'.
Variable declarations. *
DATA : V_FNAME(15) VALUE SPACE, " Name of file to be created
V_FAILREC TYPE I, " No of failed records
V_MSG(255), " Message Text
V_ERRREC TYPE I, " No of failed records
V_LINES TYPE I, " No of records
V_BANKS(15), " Table column BANKS
V_BANKL(15), " Table column BANKL
V_BANKN(15), " Table column BANKN
V_TIDX(2) TYPE N. " Table row index
*-- FLAG DECLARATIONS
DATA : FG_DATA_EXIST VALUE 'X', " Check for data
FG_SESSION_OPEN VALUE ' '. " Check for Session Open
*-- MACRO DEFINITIONS
*-- Macro for BANKS
DEFINE BANKS.
CLEAR V_BANKS.
CONCATENATE 'KNBK-BANKS(' &1 ')' INTO V_BANKS.
CONDENSE V_BANKS.
END-OF-DEFINITION.
*-- Macro for BANKL
DEFINE BANKL.
CLEAR V_BANKL.
CONCATENATE 'KNBK-BANKL(' &1 ')' INTO V_BANKL.
CONDENSE V_BANKL.
END-OF-DEFINITION.
*-- Macro for BANKN
DEFINE BANKN.
CLEAR V_BANKN.
CONCATENATE 'KNBK-BANKN(' &1 ')' INTO V_BANKN.
CONDENSE V_BANKN.
END-OF-DEFINITION.
Structures / Internal table declarations *
*-- Structure to hold BDC data
TYPES : BEGIN OF T_BDCTABLE.
INCLUDE STRUCTURE BDCDATA.
TYPES END OF T_BDCTABLE.
*-- Structure to trap BDC messages
TYPES : BEGIN OF T_MSG.
INCLUDE STRUCTURE BDCMSGCOLL.
TYPES : END OF T_MSG.
*-- Structure to trap ERROR messages
TYPES : BEGIN OF T_ERR_MSG,
MESSAGE(255),
END OF T_ERR_MSG.
*--Internal table to store flat file data
DATA : BEGIN OF IT_KNA1 OCCURS 0,
KUNNR LIKE KNA1-KUNNR,
KTOKD LIKE T077D-KTOKD,
NAME1 LIKE KNA1-NAME1,
SORTL LIKE KNA1-SORTL,
ORT01 LIKE KNA1-ORT01,
PSTLZ LIKE KNA1-PSTLZ,
LAND1 LIKE KNA1-LAND1,
SPRAS LIKE KNA1-SPRAS,
LZONE LIKE KNA1-LZONE,
END OF IT_KNA1.
*--Internal table to store bank details
DATA : BEGIN OF IT_BANK OCCURS 0,
BANKS LIKE KNBK-BANKS,
BANKL LIKE KNBK-BANKL,
BANKN LIKE KNBK-BANKN,
END OF IT_BANK.
*-- Internal table to hold BDC data
DATA: IT_BDCDATA TYPE STANDARD TABLE OF T_BDCTABLE WITH HEADER LINE,
*-- Internal Table to store ALL messages
IT_MSG TYPE STANDARD TABLE OF T_MSG WITH HEADER LINE,
*-- Internal Table to store error messages
IT_ERR_MSG TYPE STANDARD TABLE OF T_ERR_MSG WITH HEADER LINE.
Selection Screen. *
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
PARAMETERS : P_FLNAME(15) OBLIGATORY.
SELECTION-SCREEN END OF BLOCK B1.
SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME TITLE TEXT-002.
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS : R_LIST RADIOBUTTON GROUP GRP1.
SELECTION-SCREEN COMMENT 5(20) TEXT-003.
PARAMETERS : R_SESS RADIOBUTTON GROUP GRP1.
SELECTION-SCREEN COMMENT 30(20) TEXT-004.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK B2.
Event:Initialization *
INITIALIZATION.
AT Selection Screen. *
AT SELECTION-SCREEN.
Event: Start-of-Selection *
START-OF-SELECTION.
V_FNAME = P_FLNAME.
PERFORM GET_DATA.
PERFORM GET_BANKDATA.
PERFORM GENERATE_DATASET.
Event: End-of-Selection *
END-OF-SELECTION.
IF FG_DATA_EXIST = ' '.
MESSAGE I010 WITH TEXT-009.
EXIT.
ENDIF.
PERFORM GENERATE_BDCDATA.
PERFORM DISPLAY_ERR_RECS.
Event: top-of-page
TOP-OF-PAGE.
FORM DEFINITIONS *
*& Form get_data
Subroutine to get the data from mard
--> p1 text
<-- p2 text
FORM GET_DATA.
CALL FUNCTION 'UPLOAD'
EXPORTING
CODEPAGE = ' '
FILENAME = 'C:\XD01.TXT'
FILETYPE = 'DAT'
ITEM = ' '
FILEMASK_MASK = ' '
FILEMASK_TEXT = ' '
FILETYPE_NO_CHANGE = ' '
FILEMASK_ALL = ' '
FILETYPE_NO_SHOW = ' '
LINE_EXIT = ' '
USER_FORM = ' '
USER_PROG = ' '
SILENT = 'S'
IMPORTING
FILESIZE =
CANCEL =
ACT_FILENAME =
ACT_FILETYPE =
TABLES
DATA_TAB = IT_KNA1
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.
IF IT_KNA1[] IS INITIAL.
FG_DATA_EXIST = ' '.
ENDIF.
ENDFORM. " get_data
*& Form GENERATE_DATASET
text
--> p1 text
<-- p2 text
FORM GENERATE_DATASET.
MESSAGE I010 WITH 'OPENING FILE IN APPLICATION SERVER'.
**--Creating a data set in application server
OPEN DATASET V_FNAME FOR OUTPUT IN TEXT MODE ENCODING DEFAULT.
**---Transfering data from internal table to dataset
MESSAGE I010 WITH 'TRANSFERING DATA FROM INETERAL TABLE TO THE FILE'.
LOOP AT IT_KNA1.
TRANSFER IT_KNA1 TO V_FNAME.
ENDLOOP.
**--Closing the dataset
MESSAGE I010 WITH 'CLOSING THE FILE'.
CLOSE DATASET V_FNAME.
ENDFORM. " GENERATE_DATASET
*& Form BDC_DYNPRO
text
-->P_0467 text
-->P_0468 text
FORM BDC_DYNPRO USING PROGRAM DYNPRO.
CLEAR IT_BDCDATA.
IT_BDCDATA-PROGRAM = PROGRAM.
IT_BDCDATA-DYNPRO = DYNPRO.
IT_BDCDATA-DYNBEGIN = 'X'.
APPEND IT_BDCDATA.
ENDFORM.
*& Form BDC_FIELD
text
-->P_0472 text
-->P_0473 text
FORM BDC_FIELD USING FNAM FVAL.
IF NOT FVAL IS INITIAL.
CLEAR IT_BDCDATA.
IT_BDCDATA-FNAM = FNAM.
IT_BDCDATA-FVAL = FVAL.
APPEND IT_BDCDATA.
ENDIF.
ENDFORM.
*& Form GENERATE_BDCDATA
text
--> p1 text
<-- p2 text
FORM GENERATE_BDCDATA.
REFRESH IT_KNA1.
Opening dataset for reading
OPEN DATASET V_FNAME FOR INPUT IN TEXT MODE ENCODING DEFAULT.
Reading the file from application server
DO.
CLEAR: IT_KNA1,IT_BDCDATA.
REFRESH IT_BDCDATA.
READ DATASET V_FNAME INTO IT_KNA1.
IF SY-SUBRC <> 0.
EXIT.
ELSE.
Populate BDC Data for Initial Screen
PERFORM : BDC_DYNPRO USING 'SAPMF02D' '0100',
BDC_FIELD USING 'BDC_CURSOR' 'RF02D-KUNNR',
BDC_FIELD USING 'BDC_OKCODE' '/00',
BDC_FIELD USING 'RF02D-KUNNR' IT_KNA1-KUNNR,
BDC_FIELD USING 'RF02D-KTOKD' IT_KNA1-KTOKD.
Populate BDC Data for Second Screen
PERFORM : BDC_DYNPRO USING 'SAPMF02D' '0110',
BDC_FIELD USING 'BDC_CURSOR' 'KNA1-NAME1',
BDC_FIELD USING 'BDC_OKCODE' '/00',
BDC_FIELD USING 'KNA1-NAME1' IT_KNA1-NAME1,
BDC_FIELD USING 'KNA1-SORTL' IT_KNA1-SORTL,
BDC_FIELD USING 'KNA1-ORT01' IT_KNA1-ORT01,
BDC_FIELD USING 'KNA1-PSTLZ' IT_KNA1-PSTLZ,
BDC_FIELD USING 'KNA1-LAND1' IT_KNA1-LAND1,
BDC_FIELD USING 'KNA1-SPRAS' IT_KNA1-SPRAS.
Populate BDC Data for Third Screen
PERFORM : BDC_DYNPRO USING 'SAPMF02D' '0120',
BDC_FIELD USING 'BDC_CURSOR' 'KNA1-LZONE',
BDC_FIELD USING 'BDC_OKCODE' '/00',
BDC_FIELD USING 'KNA1-LZONE' IT_KNA1-LZONE.
Populate BDC Data for Fourth Screen
PERFORM : BDC_DYNPRO USING 'SAPMF02D' '0125',
BDC_FIELD USING 'BDC_CURSOR' 'KNA1-NIELS',
BDC_FIELD USING 'BDC_OKCODE' '/00'.
Populate BDC Data for Table control for bank details.
V_TIDX = '01'.
LOOP AT IT_BANK.
BANKS V_TIDX.
BANKL V_TIDX.
BANKN V_TIDX.
PERFORM : BDC_DYNPRO USING 'SAPMF02D' '0130',
BDC_FIELD USING 'BDC_CURSOR' V_BANKN,
BDC_FIELD USING 'BDC_OKCODE' '=ENTR',
BDC_FIELD USING V_BANKS IT_BANK-BANKS,
BDC_FIELD USING V_BANKL IT_BANK-BANKL,
BDC_FIELD USING V_BANKN IT_BANK-BANKN.
V_TIDX = V_TIDX + 1.
ENDLOOP.
PERFORM : BDC_DYNPRO USING 'SAPMF02D' '0130',
BDC_FIELD USING 'BDC_CURSOR' V_BANKS,
BDC_FIELD USING 'BDC_OKCODE' '=UPDA'.
CALL TRANSACTION C_XD01 USING IT_BDCDATA
MODE C_MODE
UPDATE C_UPDATE
MESSAGES INTO IT_MSG.
IF SY-SUBRC <> 0.
*--In case of error list display
IF R_LIST = C_X.
V_ERRREC = V_ERRREC + 1.
PERFORM FORMAT_MESSAGE.
IT_ERR_MSG-MESSAGE = V_MSG.
APPEND IT_ERR_MSG.
CLEAR : V_MSG,IT_ERR_MSG.
ENDIF.
*--In case of session log
IF R_SESS = C_X.
*-- In case of transaction fails.
IF FG_SESSION_OPEN = ' '.
FG_SESSION_OPEN = C_X.
PERFORM BDC_OPEN_GROUP.
ENDIF. " IF FG_SESSION_OPEN = ' '.
*-- Insert BDC Data..
PERFORM BDC_INSERT_DATA.
ENDIF. " IF R_SESS = C_X.
ENDIF. " IF SY-SUBRC <> 0.
ENDIF. " IF SY-SUBRC <> 0.
ENDDO.
Closing the dataset
CLOSE DATASET V_FNAME.
*-- Close the session if opened
IF FG_SESSION_OPEN = C_X.
PERFORM BDC_CLOSE_GROUP.
CALL TRANSACTION 'SM35'.
ENDIF.
ENDFORM. " GENERATE_BDCDATA
*& Form BDC_OPEN_GROUP
text
--> p1 text
<-- p2 text
FORM BDC_OPEN_GROUP.
CALL FUNCTION 'BDC_OPEN_GROUP'
EXPORTING
CLIENT = SY-MANDT
DEST = FILLER8
GROUP = C_SESS
HOLDDATE = FILLER8
KEEP = C_X
USER = SY-UNAME
RECORD = FILLER1
IMPORTING
QID =
EXCEPTIONS
CLIENT_INVALID = 1
DESTINATION_INVALID = 2
GROUP_INVALID = 3
GROUP_IS_LOCKED = 4
HOLDDATE_INVALID = 5
INTERNAL_ERROR = 6
QUEUE_ERROR = 7
RUNNING = 8
SYSTEM_LOCK_ERROR = 9
USER_INVALID = 10
OTHERS = 11
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. " BDC_OPEN_GROUP
*& Form BDC_INSERT_DATA
text
--> p1 text
<-- p2 text
FORM BDC_INSERT_DATA.
CALL FUNCTION 'BDC_INSERT'
EXPORTING
TCODE = C_XD01
POST_LOCAL = NOVBLOCAL
PRINTING = NOPRINT
TABLES
DYNPROTAB = IT_BDCDATA
EXCEPTIONS
INTERNAL_ERROR = 1
NOT_OPEN = 2
QUEUE_ERROR = 3
TCODE_INVALID = 4
PRINTING_INVALID = 5
POSTING_INVALID = 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.
ENDFORM. " BDC_INSERT_DATA
*& Form BDC_CLOSE_GROUP
text
--> p1 text
<-- p2 text
FORM BDC_CLOSE_GROUP.
CALL FUNCTION 'BDC_CLOSE_GROUP'
EXCEPTIONS
NOT_OPEN = 1
QUEUE_ERROR = 2
OTHERS = 3.
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. " BDC_CLOSE_GROUP
*& Form FORMAT_MESSAGE
text
--> p1 text
<-- p2 text
FORM FORMAT_MESSAGE.
CLEAR V_LINES.
DESCRIBE TABLE IT_MSG LINES V_LINES.
READ TABLE IT_MSG INDEX V_LINES.
CLEAR V_MSG.
CALL FUNCTION 'FORMAT_MESSAGE'
EXPORTING
ID = IT_MSG-MSGID
LANG = IT_MSG-MSGSPRA
NO = IT_MSG-MSGNR
V1 = IT_MSG-MSGV1
V2 = IT_MSG-MSGV2
V3 = IT_MSG-MSGV3
V4 = IT_MSG-MSGV4
IMPORTING
MSG = V_MSG
EXCEPTIONS
NOT_FOUND = 1
OTHERS = 2.
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. " FORMAT_MESSAGE
*& Form DISPLAY_ERR_RECS
text
--> p1 text
<-- p2 text
FORM DISPLAY_ERR_RECS.
LOOP AT IT_ERR_MSG.
WRITE: / IT_ERR_MSG-MESSAGE.
ENDLOOP.
ENDFORM. " DISPLAY_ERR_RECS
*& Form GET_BANKDATA
text
--> p1 text
<-- p2 text
FORM GET_BANKDATA.
IT_BANK-BANKS = 'AD'.
IT_BANK-BANKL = '1000'.
IT_BANK-BANKN = 'S.B A/C'.
APPEND IT_BANK.
IT_BANK-BANKS = 'AD'.
IT_BANK-BANKL = 'CITY'.
IT_BANK-BANKN = 'CURR. A/C'.
APPEND IT_BANK.
IT_BANK-BANKS = 'AD'.
IT_BANK-BANKL = 'H001'.
IT_BANK-BANKN = 'S.B A/C'.
APPEND IT_BANK.
reward if help. -
BDC Recording for Sorting a coloum
Hi All,
I have to do BDC Recording for a transaction.During recording i have to select a coloum and sort it ascending and then do further processing.
BDC recording happens for sorting but not for selecting coloum.
and hence it gives error when we process the recording that "Select a coloum".
can u plz tell me how to add seelcting coloum in BDC recorording.
ThanksHi,
You should try to incorporate your functionality using FIND or POSITION button instead of going for sort option.
Find or position button work very good in this scenerio. With find button you can find the desired entry easily.
Hope this will solve your problem.
Regards,
Brajvir -
Create BDC recording for position,job,role
hi all,
i want to create BDC recording for position,job,role . what is the transaction for creating postion,job, role?/??
and i have to check wheather for one job , role is there or not? if not i have to create that role.. similiarly i have to check for position that there is corresponding job is there or not.. if not i have to create the job???
how would i do that??
thanks
SAchinHi Sachin,
1) Creating BDC is an ABAP-ers job and being functional its not ur responsibility. If u really want to do that then u can do it through T.Code - SHDB.
While creating BDC for Position u have to go through T.Cdoe - SHDB and in that give PP01 in the TRANSACTION CODE feild. Then go on for recording. After that ask the help of an ABAP-er.
2) To Check if a POSITION or a JOB is there, then Go to T.Code - PP01, under Obj Abbr. feild put S for POSITION and C for JOB and press enter after entering the POSITION and JOB id. U'll get the result. OK
3) To check for ROLE, u have go to T.Code - PFCG and there check for the particular ROLE u r looking for. Here in this T.Code u can actually create, change and delete the ROLES.OK
Hope this helps,
ARNAV... -
Problem in doing BDC recording for Tcode FAGLSKF
Hi All,
I need to make postings for Statistical key figures. For this I need to make postings using transaction FAGLSKF.
Now my problem is that when I try to make recording for transaction FAGLSKF I could not see the values recorded for ITEM Data Table control.
Any one having any idea as what I am missing. Your suggestions would be really helpful.
Regards,
LalitHi Poorna,
Thanks a lot for the valueable feedback.
I checked the FMs mentioned by you. These FMs make the SKF posting but these FMs do not perform any kind of validations.
Like for example if I use tcode FAGLSKF and try to make some posting. In case I am giving some invalid input to this transaction ( e.g. wrong Statistical Key Figure Value ) , this t code does not allow us to post and immediateley thorows some error.
Where as I use FM FAGL_FAGLSKF_PN_POST, this FM makes an entry in the table FAGLSKF_PN without any validations.
This FM simply insert an entry to the table FAGLSKF_PN.
Any Idea how to overcome this. I want to make the validations in the same way as done using Tcode FAGLSKF.
Thanks a lot for your valueable inputs.
Regards,
Lalit -
BDC recording for s_alr_87012090
Hi Friends,
My requirement :
As we do vendor changes in xk02, the critical data like bank details, name and address are to be confirmed. so my client want, the changes done in address should not got to confirmation, so I want to do BDC recording for S_ALR_87012090 ( confir vendor changes ). and will check if only address changes are done then i will run these BDC recording .
but i am unable to do recording.
please help me out.
regards
Kumar MHello Kumar M,
What is the issue with it? Why cant you do the recording?
BR,
Suhas -
After doing the recording for transaction fpcj, the values are not being se
after doing the recording for transaction fpcj, the values are not being sent to the g/l.
HI,
When you are recording.. you might be creating the values... ensure that they are updated into the GL before u write program. I doubt you might have missed the save ..
Thanks
Mahesh
Maybe you are looking for
-
How to look at my contacts in gmail
I just signed up for gmail. I cannot find the contacts list. Does anybody know gmail?
-
Installing another hd to mac mini
. can i install another hd ( ssd ) to my mac mini mid 2011?.
-
Revision: 4982 Author: [email protected] Date: 2009-02-16 23:31:05 -0800 (Mon, 16 Feb 2009) Log Message: Moving DataGroup from item based lookup to an index based lookup. Also, we now cleanup old item renderers when the dataProvider changes. This sol
-
Out of memory by writing to files
Hello, I have a very anoying problem. I've written a self-learning program that parses a lot of sentences (> 800.000). For the storage of my objects i use hashmap and the program is very quick. It parses 300.000 sentences an hour. After the training
-
I have Google as my default home page in Firefox and the Google browser opens when I start Firefox, but every time I open a new tab it opens the Yahoo browser.