BDC OK codes
HI frds
" = <b>STTE "</b> IS THE OK CODE WHEN WE SET STATUS AS TECO
" <b>= STAB</b> " IS WHEN WE SET AS CLSD.
AM I GOIN RIT OR THERE IS ANY OTHER CONCEPT..
IF I AM GOIN RIGHT THEN WHATS THE OK CODE FOR
Finally billed <b>FNBL.</b>
Hi,
For which Document are you setting the status ? is it for any Maintenance Order or for any Project/WBS Element ? Whatever it is if you want to know the OK Codes then go to respective PF-Status through menu by selecting System->Status and double clicking on its GUI. It will take you to the PF-Status (i.e., user interface). there you can find all the OK Codes.
however, FNBL is nothing but Status. it is not OK Code.
thanks,
sksingh
Similar Messages
-
Hi ,
Could anyone let me know the BDC OK Code for Double click.
I need to select a row by double clicking it in my recording but not able to capture the code for it.
Please do the needful.
Thanks in Advance,
Sowmmya BHi sowmmya,
1. If the row you are talking about is
ALV Grid OO concepts,
then i think there is a problem.
It won't work with BDC as u are trying.
2. Well, for getting the code,
before double clicking go in debug mode /H
and then double click.
3. Now in deubbing mode,
see the value of sy-ucomm.
regards,
amit m. -
BDC OK CODE FOR ENTER NOT RECORDING
I m creating a BDC Programme for uploading OLD PO date from excel to SAP System.
All PO's are Service PO.
PO's date and Delivery Date is in back date.
My programme working fine.
But i have to press enter manually due to PO Date = back date and Delivery date is also back date.
SHDB unable to record this event.
How to record this event.
Is there any way to disable system messages during BDC Programme.
When I press enter two times my programme runs very well.
Kindly help me.
Its very much urgent.
Code is give below.
REPORT zbdcme21n
NO STANDARD PAGE HEADING LINE-SIZE 255.
DATA : l_file TYPE rlgrap-filename.
DATA: e_group_opened.
PARAMETERS session RADIOBUTTON GROUP ctu. "create session
*DATA : session RADIOBUTTON GROUP ctu.
DATA : group(12). "group name of session
group = 'BDC'.
*PARAMETERS: user(12) DEFAULT sy-uname. "user for session in batch
DATA : user(12).
user = sy-uname.
*DATA : keep AS CHECKBOX. "' ' = delete session if finished
DATA : keep TYPE checkbox.
keep = 'X'.
*PARAMETERS: holddate LIKE sy-datum. "'X' = keep session if finished
DATA : holddate LIKE sy-datum.
holddate = sy-datum.
PARAMETERS ctu RADIOBUTTON GROUP ctu. "call transaction
DATA: bdcdata LIKE bdcdata OCCURS 0 WITH HEADER LINE.
DATA : BEGIN OF i_tab OCCURS 0, "excel data stored in this file.
row TYPE alsmex_tabline-row,
col TYPE alsmex_tabline-col,
value TYPE alsmex_tabline-value,
END OF i_tab.
DATA : BEGIN OF wa_line1 OCCURS 0, "excel data stored in this file.
row TYPE alsmex_tabline-row,
col TYPE alsmex_tabline-col,
value TYPE alsmex_tabline-value,
srno TYPE i,
END OF wa_line1.
DATA : wa_line2 LIKE wa_line1 OCCURS 0 WITH HEADER LINE .
DATA : wa_hdr1 LIKE wa_line1 OCCURS 0 WITH HEADER LINE .
DATA : wa_hdr LIKE i_tab OCCURS 0 WITH HEADER LINE .
DATA : wa_line LIKE i_tab OCCURS 0 WITH HEADER LINE .
DATA : w_cnt TYPE i . "store total no of pos
DATA : w_hdr_counter VALUE 1. "for header line count
DATA : w_line_counter VALUE 1. "for Line Item Counter.
w_cnt = 0.
SELECTION-SCREEN: BEGIN OF BLOCK b1 WITH FRAME TITLE text-000.
PARAMETER: dataset TYPE rlgrap-filename OBLIGATORY.
SELECTION-SCREEN: END OF BLOCK b1.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR dataset.
PERFORM upload_file.
*include bdcrecx1.
START-OF-SELECTION.
PERFORM process_itab.
*include bdcrecx1.
START-OF-SELECTION.
PERFORM open_group.
**********************start for header
w_hdr_counter = 1.
WHILE w_hdr_counter <= w_cnt.
PERFORM bdc_dynpro USING 'SAPMM06E' '0100'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RM06E-BEDAT'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
READ TABLE wa_hdr1 WITH KEY col = 2 srno = w_hdr_counter.
PERFORM bdc_field USING 'EKKO-LIFNR'
wa_hdr1-value. "'800000'.
READ TABLE wa_hdr1 WITH KEY col = 3 srno = w_hdr_counter.
PERFORM bdc_field USING 'RM06E-BSART'
wa_hdr1-value. "'ZS'.
READ TABLE wa_hdr1 WITH KEY col = 4 srno = w_hdr_counter.
PERFORM bdc_field USING 'RM06E-BEDAT'
wa_hdr1-value. " '14.01.2008'.
PERFORM bdc_field USING 'RM06E-LPEIN'
'T'.
READ TABLE wa_hdr1 WITH KEY col = 13 srno = w_hdr_counter.
PERFORM bdc_field USING 'RM06E-EEIND'
wa_hdr1-value. "'14.01.2008'. "Delivery Date
PERFORM bdc_field USING 'RM06E-LPEIN'
'T'.
READ TABLE wa_hdr1 WITH KEY col = 6 srno = w_hdr_counter.
PERFORM bdc_field USING 'EKKO-EKORG'
wa_hdr1-value. "'serv'.
READ TABLE wa_hdr1 WITH KEY col = 7 srno = w_hdr_counter.
PERFORM bdc_field USING 'EKKO-EKGRP'
wa_hdr1-value. "'dce'. Purchase Group
READ TABLE wa_hdr1 WITH KEY col = 8 srno = w_hdr_counter.
PERFORM bdc_field USING 'RM06E-EPSTP'
wa_hdr1-value. "'d'. Item Category
READ TABLE wa_hdr1 WITH KEY col = 9 srno = w_hdr_counter.
PERFORM bdc_field USING 'RM06E-KNTTP'
wa_hdr1-value. "'p'. Account Asign Category
READ TABLE wa_hdr1 WITH KEY col = 10 srno = w_hdr_counter.
PERFORM bdc_field USING 'RM06E-WERKS'
wa_hdr1-value. "'1001'.Plant
READ TABLE wa_hdr1 WITH KEY col = 11 srno = w_hdr_counter.
PERFORM bdc_field USING 'RM06E-LGORT'
wa_hdr1-value. " '1101'. Store Location
READ TABLE wa_hdr1 WITH KEY col = 12 srno = w_hdr_counter.
PERFORM bdc_field USING 'RM06E-MATKL'
wa_hdr1-value. "'c003'. Material Group
PERFORM bdc_dynpro USING 'SAPLMLSP' '0200'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
********************end of Header Data*******************
data i type n value 1.
data bfield type string.
LOOP AT wa_line1 WHERE col = 1 AND srno = wa_hdr1-srno.
READ TABLE wa_line2 WITH KEY COL = 14 SRNO = wa_hdr1-srno ROW = wa_line1-ROW.
PERFORM bdc_field USING 'RM11P-HEADTEXT'
wa_line2-value. " 'Earthwork text'.
concatenate 'ESLL-SRVPOS(' i ')' into bfield.
PERFORM bdc_field USING 'BDC_CURSOR'
bfield. " 'ESLL-SRVPOS(01)'. "increase counter
PERFORM bdc_field USING 'RM11P-NEW_ROW'
'10'.
READ TABLE wa_line2 WITH KEY COL = 15 SRNO = wa_hdr1-srno ROW = wa_line1-ROW.
PERFORM bdc_field USING bfield "'ESLL-SRVPOS(01)'
wa_line2-value. "'5000000000'.
concatenate 'ESLL-MENGE(' i ')' into bfield.
READ TABLE wa_line2 WITH KEY COL = 16 SRNO = wa_hdr1-srno ROW = wa_line1-ROW.
PERFORM bdc_field USING bfield "'ESLL-MENGE(01)' "qty
wa_line2-value. "'15'.
concatenate 'ESLL-MEINS(' i ')' into bfield.
READ TABLE wa_line2 WITH KEY COL = 17 SRNO = wa_hdr1-srno ROW = wa_line1-ROW.
PERFORM bdc_field USING bfield "'ESLL-MEINS(01)'
wa_line2-value. "'ft3'.
concatenate 'ESLL-TBTWR(' i ')' into bfield.
READ TABLE wa_line2 WITH KEY COL = 18 SRNO = wa_hdr1-srno ROW = wa_line1-ROW.
PERFORM bdc_field USING bfield " 'ESLL-TBTWR(01)'
wa_line2-value. "'150'.
PERFORM bdc_field USING 'BDC_OKCODE' "Manually added
'/00'.
PERFORM bdc_dynpro USING 'SAPLMLSK' '0200'.
concatenate 'ESKN-PS_PSP_PNR' i ')' into bfield.
PERFORM bdc_field USING 'BDC_CURSOR'
'ESKN-PS_PSP_PNR(01)'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'VRTKZ1'
'X'.
concatenate 'ESKN-SAKTO(' i ')' into bfield.
READ TABLE wa_line2 WITH KEY COL = 19 SRNO = wa_hdr1-srno ROW = wa_line1-ROW.
PERFORM bdc_field USING 'ESKN-SAKTO(01)' "GL Account No.
wa_line2-value. " '6010010'.
concatenate 'ESKN-PS_PSP_PNR(' i ')' into bfield.
READ TABLE wa_line2 WITH KEY COL = 20 SRNO = wa_hdr1-srno ROW = wa_line1-ROW.
PERFORM bdc_field USING 'ESKN-PS_PSP_PNR(01)'
wa_line2-value. " 'HR/KMP-KU'. "WBS Element
PERFORM bdc_dynpro USING 'SAPLMLSK' '0200'.
PERFORM bdc_field USING 'BDC_CURSOR'
'ESLL-INTROW'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=BACK'.
PERFORM bdc_field USING 'VRTKZ1'
'X'.
PERFORM bdc_dynpro USING 'SAPLMLSP' '0200'.
i = i + 1.
ENDLOOP.
PERFORM bdc_field USING 'BDC_OKCODE'
'=BACK'.
PERFORM bdc_field USING 'VRTKZ1'
'X'.
PERFORM bdc_dynpro USING 'SAPLMLSP' '0200'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
*perform bdc_field using 'RM11P-HEADTEXT'
'Earthwork text'.
*perform bdc_field using 'BDC_CURSOR' "Start Service Line 2
'ESLL-SRVPOS(02)'.
*perform bdc_field using 'RM11P-NEW_ROW'
'10'.
*perform bdc_field using 'ESLL-SRVPOS(02)'
'5000000006'.
*perform bdc_field using 'ESLL-MENGE(02)'
'10'.
*perform bdc_field using 'ESLL-MEINS(02)'
'kmk'.
*perform bdc_field using 'ESLL-TBTWR(02)'
'500'.
*perform bdc_dynpro using 'SAPLMLSK' '0200'.
*perform bdc_field using 'BDC_CURSOR'
'ESLL-INTROW'.
*perform bdc_field using 'BDC_OKCODE'
'/00'.
*perform bdc_field using 'VRTKZ1'
'X'.
*perform bdc_dynpro using 'SAPLMLSK' '0200'.
*perform bdc_field using 'BDC_CURSOR'
'ESKN-PS_PSP_PNR(01)'.
*perform bdc_field using 'BDC_OKCODE'
'/00'.
*perform bdc_field using 'VRTKZ1'
'X'.
*perform bdc_field using 'ESKN-SAKTO(01)'
'6010010'.
*perform bdc_field using 'ESKN-PS_PSP_PNR(01)'
'HR/KMP-KU'.
*perform bdc_dynpro using 'SAPLMLSK' '0200'.
*perform bdc_field using 'BDC_CURSOR'
'ESLL-INTROW'.
*perform bdc_field using 'BDC_OKCODE'
'=BACK'.
*perform bdc_field using 'VRTKZ1'
'X'.
*perform bdc_dynpro using 'SAPLMLSP' '0200'.
*perform bdc_field using 'BDC_OKCODE'
'/00'.
*perform bdc_field using 'RM11P-HEADTEXT'
'Earthwork text'.
*perform bdc_field using 'BDC_CURSOR'
'ESLL-KTEXT1(01)'.
*perform bdc_field using 'RM11P-NEW_ROW'
'10'.
*perform bdc_dynpro using 'SAPLMLSP' '0200'.
*perform bdc_field using 'BDC_OKCODE'
'=ESB'.
*perform bdc_field using 'RM11P-HEADTEXT'
'Earthwork text'.
*perform bdc_field using 'BDC_CURSOR'
'ESLL-KTEXT1(01)'.
*perform bdc_field using 'RM11P-NEW_ROW'
'10'.
*perform bdc_dynpro using 'SAPMM06E' '0120'.
*perform bdc_field using 'BDC_CURSOR'
'RM06E-EBELP'.
*perform bdc_field using 'BDC_OKCODE'
'=MALL'.
*perform bdc_field using 'RM06E-EBELP'
'10'.
PERFORM bdc_dynpro USING 'SAPMM06E' '0120'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RM06E-EBELP'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=KOPF'.
PERFORM bdc_field USING 'RM06E-EBELP'
'10'.
PERFORM bdc_dynpro USING 'SAPMM06E' '0101'.
PERFORM bdc_field USING 'BDC_CURSOR'
'EKKO-EKGRP'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=TXK'.
*perform bdc_field using 'EKKO-EKGRP'
'DCE'.
*perform bdc_field using 'EKKO-PINCR'
'10'.
*perform bdc_field using 'EKKO-UPINC'
'1'.
*perform bdc_field using 'EKKO-WAERS'
'INR'.
*perform bdc_field using 'EKKO-WKURS'
' 1.00000'.
PERFORM bdc_dynpro USING 'SAPMM06E' '0103'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RM06E-LTEX1(01)'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=BU'.
PERFORM bdc_field USING 'RM06E-LTEX1(01)'
'Old PO no.'.
*perform bdc_transaction using 'ME21'.
w_hdr_counter = w_hdr_counter + 1.
ENDWHILE.
CALL TRANSACTION 'ME21' USING bdcdata MODE 'A'.
PERFORM close_group.
***************forms************
FORM upload_file.
CALL FUNCTION 'WS_FILENAME_GET'
EXPORTING
*def_filename = ' '
*def_path = ' '
*mask = ' '
mode = '0'
title = 'Choose the Appropriate excel sheet for service PO upload'
IMPORTING
filename = dataset
*EXCEPTIONS
*inv_winsys = 01
*no_batch = 02
*selection_cancel = 03
*selection_error = 04
l_file = dataset.
PERFORM read_exceldata.
ENDFORM. "UPLOAD_FILE
*& Form READ_EXCELDATA
text
FORM read_exceldata.
CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
EXPORTING
filename = l_file
i_begin_col = 1
i_begin_row = 2
i_end_col = 25
i_end_row = 4
TABLES
intern = i_tab
EXCEPTIONS
INCONSISTENT_PARAMETERS = 1
UPLOAD_OLE = 2
OTHERS = 3
ENDFORM. "READ_EXCELDATA
create batchinput session *
(not for call transaction using...) *
FORM open_group.
IF session = 'X'.
SKIP.
WRITE: /(20) 'Create group'(i01), group.
SKIP.
open batchinput group
CALL FUNCTION 'BDC_OPEN_GROUP'
EXPORTING
client = sy-mandt
group = group
user = user
keep = keep
holddate = holddate.
WRITE: /(30) 'BDC_OPEN_GROUP'(i02),
(12) 'returncode:'(i05),
sy-subrc.
ENDIF.
ENDFORM. "OPEN_GROUP
end batchinput session *
(call transaction using...: error session) *
FORM close_group.
IF session = 'X'.
close batchinput group
CALL FUNCTION 'BDC_CLOSE_GROUP'.
WRITE: /(30) 'BDC_CLOSE_GROUP'(i04),
(12) 'returncode:'(i05),
sy-subrc.
ELSE.
IF e_group_opened = 'X'.
CALL FUNCTION 'BDC_CLOSE_GROUP'.
WRITE: /.
WRITE: /(30) 'Fehlermappe wurde erzeugt'(i06).
e_group_opened = ' '.
ENDIF.
ENDIF.
ENDFORM. "CLOSE_GROUP
*& Form BDC_DYNPRO
text
-->PROGRAM text
-->DYNPRO text
FORM bdc_dynpro USING program dynpro.
CLEAR bdcdata.
bdcdata-program = program.
bdcdata-dynpro = dynpro.
bdcdata-dynbegin = 'X'.
APPEND bdcdata.
ENDFORM. "BDC_DYNPRO
****bdc field************
FORM bdc_field USING fnam fval.
IF FVAL <> NODATA.
CLEAR bdcdata.
bdcdata-fnam = fnam.
bdcdata-fval = fval.
APPEND bdcdata.
ENDIF.
ENDFORM. "BDC_FIELD
FORM process_itab.
APPEND LINES OF i_tab TO wa_hdr .
DELETE wa_hdr WHERE col > 13 .
APPEND LINES OF i_tab TO wa_line .
DELETE wa_line WHERE col <> 1 AND col < 14 .
DATA : w_sr TYPE i.
w_sr = 0.
LOOP AT wa_hdr.
IF wa_hdr-col = 1.
w_sr = wa_hdr-value.
ENDIF.
wa_hdr1-row = wa_hdr-row.
wa_hdr1-col = wa_hdr-col.
wa_hdr1-value = wa_hdr-value.
wa_hdr1-srno = w_sr.
APPEND wa_hdr1.
w_cnt = wa_hdr-row.
ENDLOOP.
w_sr = 0.
LOOP AT wa_line.
IF wa_line-col = 1.
w_sr = wa_line-value.
ENDIF.
wa_line1-row = wa_line-row.
wa_line1-col = wa_line-col.
wa_line1-value = wa_line-value.
wa_line1-srno = w_sr.
APPEND wa_line1.
ENDLOOP.
w_sr = 0.
CLEAR wa_line2.
LOOP AT wa_line1.
wa_line2-row = wa_line1-row.
wa_line2-col = wa_line1-col.
wa_line2-value = wa_line1-value.
wa_line2-srno = wa_line1-srno.
APPEND wa_line2.
ENDLOOP.
ENDFORM. "PROCESS_ITAB
***************forms************Hi Pradeep
I find there is a problem in your code
When ever you use
PERFORM bdc_field USING 'BDC_OKCODE'
you should follow it up with
PERFORM bdc_dynpro USING <prg name> <screen number>
Please find code below with changes from a part of your code
PERFORM bdc_field USING 'RM06E-MATKL'
wa_hdr1-value. "'c003'. Material Group
* comment this statement is not needed now.
* PERFORM bdc_dynpro USING 'SAPLMLSP' '0200'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
READ TABLE wa_line2 WITH KEY COL = 14 SRNO = wa_hdr1-srno ROW = wa_line1-ROW.
* Put the bdc_dynpro for the prg name and screen number (I might be wrong with prg name and
* Screen number
PERFORM bdc_dynpro USING 'SAPLMLSK' '0200'.
Reward points as this will definitely help you
Edited by: Sriram Chandran on Mar 15, 2008 4:39 PM -
Error in bdc programing code-pls help
hi friends,
I was tring to do a bdc program.But it shows me an error. MY bdc program is jus to upload a 2 fields in vendoe master table.
That is LIFNR,NAME1 field for the new vendors.
I worked out an execl sheet for this, and jus copied it to the text file by selecting all and pasting.
Even then i get an error code that BDC_open does not exits.
MY code is this, please help me if iam wrong.
If anyone can help to make it more understandable,I Kindly request you to try out this program with the screen shot and mail to this id [email protected] would be very thankful for your timely help.
report Z_PK_BDC
no standard page heading line-size 255.
include bdcrecx1.
parameters: dataset(132) lower case.
parameters: p_file like rlgrap-filename default
'C:\SAP TESTING\p_file.txt'.
DO NOT CHANGE - the generated data section - DO NOT CHANGE ***
If it is nessesary to change the data section use the rules:
1.) Each definition of a field exists of two lines
2.) The first line shows exactly the comment
'* data element: ' followed with the data element
which describes the field.
If you don't have a data element use the
comment without a data element name
3.) The second line shows the fieldname of the
structure, the fieldname must consist of
a fieldname and optional the character '_' and
three numbers and the field length in brackets
4.) Each field must be type C.
Generated data section with specific formatting - DO NOT CHANGE ***
data: begin of record OCCURS 0,
data element: LIF16
LIFNR_001(016),
data element: BUKRS
BUKRS_002(004),
data element: KTOKK
KTOKK_003(004),
data element: ANRED
ANRED_004(015),
data element: NAME1_GP
NAME1_005(035),
data element: SORTL
SORTL_006(010),
data element: NAME2_GP
NAME2_007(035),
data element: STRAS_GP
STRAS_008(035),
data element: ORT01_GP
ORT01_009(035),
data element: ORT02_GP
ORT02_010(035),
data element: PFORT_GP
PFORT_011(035),
data element: LAND1_GP
LAND1_012(003),
data element: SPRAS
SPRAS_013(002),
end of record.
End generated data section ***
start-of-selection.
CALL FUNCTION 'WS_UPLOAD'
EXPORTING
FILENAME = P_FILE
FILETYPE = 'DAT'
TABLES
DATA_TAB = record
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.
WRITE:/ 'SY-SUBRC:', SY-SUBRC.
ENDIF.
LOOP AT RECORD.
*perform open_dataset using dataset.
*perform open_group.
*do.
*read dataset dataset into record.
*if sy-subrc <> 0. exit. endif.
perform bdc_dynpro using 'SAPMF02K' '0105'.
perform bdc_field using 'BDC_CURSOR'
'RF02K-KTOKK'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'RF02K-LIFNR'
record-LIFNR_001.
perform bdc_field using 'RF02K-BUKRS'
record-BUKRS_002.
perform bdc_field using 'RF02K-KTOKK'
record-KTOKK_003.
perform bdc_dynpro using 'SAPMF02K' '0110'.
perform bdc_field using 'BDC_CURSOR'
'LFA1-SPRAS'.
perform bdc_field using 'BDC_OKCODE'
'=UPDA'.
perform bdc_field using 'LFA1-ANRED'
record-ANRED_004.
perform bdc_field using 'LFA1-NAME1'
record-NAME1_005.
perform bdc_field using 'LFA1-SORTL'
record-SORTL_006.
perform bdc_field using 'LFA1-NAME2'
record-NAME2_007.
perform bdc_field using 'LFA1-STRAS'
record-STRAS_008.
perform bdc_field using 'LFA1-ORT01'
record-ORT01_009.
perform bdc_field using 'LFA1-ORT02'
record-ORT02_010.
perform bdc_field using 'LFA1-PFORT'
record-PFORT_011.
perform bdc_field using 'LFA1-LAND1'
record-LAND1_012.
perform bdc_field using 'LFA1-SPRAS'
record-SPRAS_013.
perform bdc_transaction using 'FK01'.
**enddo.
**perform close_group.
endloop.
**perform close_dataset using dataset.
Thanks in Advance
Rinky123Hi,
If you are using GUI_UPLOAD in 4.7 then the file path whatever you are using currently it won't work. Replace the file path like this.
P_FILE LIKE RLGRAP-FILENAME.
DATA: V_FILE TYPE STRING.
V_FILE = P_FILE.
Now take this v_file for function module.Then only it will open the file otherwise you won't get unable to open file error message.
I observerd that you are getting so many fields from the file to the internal table. -
hi guru's,
i have done with the bdc recording.
now to handle the enter code ( i.e.. in my actual target program while executing it, the pressing of enter in the transaction screen should not be there).
What ever the default views selected in trn mm03 should be dynamically done without user interface.. Pressing of enter should also be avoided.
here is my code snippet.
perform bdc_dynpro using 'SAPLMGMM' '0060'.
perform bdc_field using 'BDC_CURSOR'
'RMMG1-MATNR'.
perform bdc_field using 'BDC_OKCODE'
'=ENTR'.
perform bdc_field using 'RMMG1-MATNR'
wa_final-matnr.
perform bdc_dynpro using 'SAPLMGMM' '0070'.
perform bdc_field using 'BDC_CURSOR'
'MSICHTAUSW-DYTXT(02)'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'MSICHTAUSW-KZSEL(01)'
'X'.
perform bdc_field using 'MSICHTAUSW-KZSEL(02)'
'X'.
perform bdc_dynpro using 'SAPLMGMM' '0070'.
perform bdc_field using 'BDC_CURSOR'
'MSICHTAUSW-DYTXT(01)'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_dynpro using 'SAPLMGMM' '0070'.
perform bdc_field using 'BDC_CURSOR'
'MSICHTAUSW-DYTXT(15)'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'MSICHTAUSW-KZSEL(15)'
'X'.
perform bdc_dynpro using 'SAPLMGMM' '0070'.
perform bdc_field using 'BDC_CURSOR'
'MSICHTAUSW-DYTXT(01)'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_dynpro using 'SAPLMGMM' '0070'.
perform bdc_field using 'BDC_CURSOR'
'MSICHTAUSW-DYTXT(01)'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_dynpro using 'SAPLMGMM' '0070'.
perform bdc_field using 'BDC_CURSOR'
'MSICHTAUSW-DYTXT(01)'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_dynpro using 'SAPLMGMM' '0070'.
perform bdc_field using 'BDC_CURSOR'
'MSICHTAUSW-DYTXT(13)'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'MSICHTAUSW-KZSEL(13)'
'X'.
perform bdc_dynpro using 'SAPLMGMM' '0070'.
perform bdc_field using 'BDC_CURSOR'
'MSICHTAUSW-DYTXT(01)'.
perform bdc_field using 'BDC_OKCODE'
'=DEF_SAVE'.
perform bdc_dynpro using 'SAPLMGMM' '0070'.
perform bdc_field using 'BDC_CURSOR'
'USRM1-AAUSW'.
perform bdc_field using 'BDC_OKCODE'
'=DEF_SKIP'.
perform bdc_field using 'USRM1-AAUSW'
'X'.
perform bdc_dynpro using 'SAPLMGMM' '0070'.
perform bdc_field using 'BDC_CURSOR'
'MSICHTAUSW-DYTXT(01)'.
perform bdc_field using 'BDC_OKCODE'
'=ENTR'.
perform bdc_field using 'USRM1-AAUSW'
'X'.
perform bdc_dynpro using 'SAPLMGMM' '0080'.
perform bdc_field using 'BDC_CURSOR'
'RMMG1-WERKS'.
perform bdc_field using 'BDC_OKCODE'
'=DEF_SAVE'.
perform bdc_field using 'RMMG1-WERKS'
plant.
perform bdc_dynpro using 'SAPLMGMM' '0080'.
perform bdc_field using 'BDC_CURSOR'
'RMMG1-WERKS'.
perform bdc_field using 'BDC_OKCODE'
'=ENTR'.
perform bdc_field using 'RMMG1-WERKS'
'Z201'.
perform bdc_dynpro using 'SAPLMGMM' '4004'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'BDC_CURSOR'
'RMMG1-MATNR'.
perform bdc_dynpro using 'SAPLMGMM' '4004'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'BDC_CURSOR'
'RMMG1-MATNR'.
perform bdc_dynpro using 'SAPLMGMM' '4000'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'BDC_CURSOR'
'RMMG1-MATNR'.
perform bdc_dynpro using 'SAPLMGMM' '4000'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'BDC_CURSOR'
'RMMG1-MATNR'.
perform bdc_dynpro using 'SAPLSPO1' '0300'.
perform bdc_field using 'BDC_OKCODE'
'=YES'.
perform bdc_transaction using 'MM03'.
please help me.
*HOW TO HANDLE THE ENTER CODE.
WHAT CHANGES SHOULD I MAKE IN THE ABOVE CODE AND WHAT ARE THE CORRESPONDING DATA DECLARATIONS TO BE MADE.*See The sample code
It consist of Item data and Header data .
REPORT zfv11
NO STANDARD PAGE HEADING LINE-SIZE 255.
DO NOT CHANGE - the generated data section - DO NOT CHANGE ***
If it is nessesary to change the data section use the rules:
1.) Each definition of a field exists of two lines
2.) The first line shows exactly the comment
'* data element: ' followed with the data element
which describes the field.
If you don't have a data element use the
comment without a data element name
3.) The second line shows the fieldname of the
structure, the fieldname must consist of
a fieldname and optional the character '_' and
three numbers and the field length in brackets
4.) Each field must be type C.
Generated data section with specific formatting - DO NOT CHANGE ***
TABLES : t100.
DATA: BEGIN OF record OCCURS 0,
data element: KSCHA
kschl(004), "Condition Type
data element: SELKZ_LIST
selkz(001),
data element: WERKS_D
werks(004), "Plant
data element: ELIFN
lifnr(010), "Vendor
data element: MATNR
matnr(018), "Material No.
data element: KBETR_KOND
kbetr(016), "Amount
data element: KODATAB
datab(010), "Condition Validity Date from
data element: KODATBI
datbi(010), "Condition Validity To
data element: MWSKZ
mwsk1(002),
END OF record.
DATA : BEGIN OF it_new OCCURS 0, " Internal Table for Header Data
kschl(004),
werks(004),
lifnr(010),
END OF it_new.
DATA : BEGIN OF it_item OCCURS 0, " Internal table for Item Data
werks(004),
lifnr(010),
matnr(018),
kbetr(016),
datab(010),
datbi(010),
mwsk1(002),
END OF it_item.
DATA : cnt(2) TYPE n,
fld(25) TYPE c.
TYPE-POOLS: truxs.
DATA: it_raw TYPE truxs_t_text_data.
DATA : n TYPE n.
DATA:
BEGIN OF t_data OCCURS 0,
data TYPE string,
END OF t_data.
DATA:BEGIN OF it_mess OCCURS 0,
msgtyp(5),
lms(200),
msgv1(50),
END OF it_mess.
DATA : p_mode TYPE c.
DATA:it_msgtab TYPE STANDARD TABLE OF bdcmsgcoll WITH HEADER LINE,
it_msgtab1 TYPE STANDARD TABLE OF bdcmsgcoll WITH HEADER LINE.
DATA : l_mstring(150).
DATA : BEGIN OF bdcdata OCCURS 0.
INCLUDE STRUCTURE bdcdata.
DATA: END OF bdcdata.
PARAMETERS : p_file1 LIKE rlgrap-filename.
INITIALIZATION.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file1.
PERFORM file_selection.
PERFORM data_upload.
PERFORM table_control.
LOOP AT it_new.
REFRESH bdcdata.
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_new-kschl.
PERFORM bdc_dynpro USING 'SAPLV14A' '0100'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RV130-SELKZ(01)'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=WEIT'.
PERFORM bdc_dynpro USING 'SAPMV13A' '1363'.
PERFORM bdc_field USING 'BDC_CURSOR'
'KONP-KBETR(01)'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'KOMG-WERKS'
it_new-werks.
PERFORM bdc_field USING 'KOMG-LIFNR'
it_new-lifnr.
DATA: "X(5) TYPE N,
N(5) TYPE N.
N = 0.
LOOP AT it_item.
N = N + 1.
ENDLOOP.
"X = 1.
CNT = 1.
DO N TIMES.
IF CNT > 19.
perform bdc_field using 'BDC_OKCODE' 'KOMG-MATNR(01)'.
perform bdc_field using 'BDC_OKCODE' '=P+'.
PERFORM bdc_dynpro USING 'SAPMV13A' '1363'.
CNT = 1.
ENDIF.
cnt = 1.
LOOP AT it_item WHERE werks EQ it_new-werks AND lifnr EQ it_new-lifnr . "FROM x TO x.
CONCATENATE 'KOMG-MATNR(' cnt ')' INTO fld.
PERFORM bdc_field USING fld it_item-matnr.
CONCATENATE 'KONP-KBETR(' cnt')' INTO fld.
PERFORM bdc_field USING fld it_item-kbetr.
CONCATENATE 'RV13A-DATAB(' cnt ')' INTO fld.
PERFORM bdc_field USING fld it_item-datab.
CONCATENATE 'RV13A-DATBI(' cnt ')' INTO fld.
PERFORM bdc_field USING fld it_item-datbi.
CONCATENATE 'KONP-MWSK1(' cnt ')' INTO fld.
PERFORM bdc_field USING fld it_item-mwsk1.
cnt = cnt + 1.
if cnt = 20.
perform bdc_field using 'BDC_OKCODE' 'KOMG-MATNR(19)'.
perform bdc_field using 'BDC_OKCODE' '=P+'.
PERFORM bdc_dynpro USING 'SAPMV13A' '1363'.
CNT = 1.
endif.
CLEAR it_item.
ENDLOOP.
ENDDO.
PERFORM bdc_dynpro USING 'SAPMV13A' '1363'.
PERFORM bdc_field USING 'BDC_CURSOR'
'KONP-MWSK1(01)'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=SICH'.
CALL TRANSACTION 'FV11' USING bdcdata MODE 'A'
UPDATE 'S'
MESSAGES INTO it_msgtab.
CLEAR bdcdata[].
PERFORM error.
ENDLOOP.
Start new screen -Subroutine for screen s *
FORM bdc_dynpro USING program dynpro.
CLEAR bdcdata.
bdcdata-program = program.
bdcdata-dynpro = dynpro.
bdcdata-dynbegin = 'X'.
APPEND bdcdata.
ENDFORM. "BDC_DYNPRO
Insert field -Subroutine for field s *
FORM bdc_field USING fnam fval.
CLEAR bdcdata.
bdcdata-fnam = fnam.
bdcdata-fval = fval.
APPEND bdcdata.
ENDFORM. "BDC_FIELD
*& Form file_selection
FORM file_selection .
CALL FUNCTION 'F4_FILENAME'
EXPORTING
program_name = syst-cprog
dynpro_number = syst-dynnr
field_name = 'P_FILE1'
IMPORTING
file_name = p_file1.
ENDFORM. " file_selection
*& Form data_upload
FORM data_upload .
CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'
EXPORTING
I_FIELD_SEPERATOR =
i_line_header = 'X'
i_tab_raw_data = it_raw
i_filename = p_file1
TABLES
i_tab_converted_data = record
EXCEPTIONS
conversion_failed = 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. " data_upload
*& Form error
FORM error .
LOOP AT it_msgtab.
IF it_msgtab-msgtyp = 'E'.
SELECT SINGLE * FROM t100 WHERE sprsl = it_msgtab-msgspra
AND arbgb = it_msgtab-msgid
AND msgnr = it_msgtab-msgnr.
IF sy-subrc = 0.
l_mstring = t100-text.
IF l_mstring CS '&1'.
REPLACE '&1' WITH it_msgtab-msgv1 INTO l_mstring.
REPLACE '&2' WITH it_msgtab-msgv2 INTO l_mstring.
REPLACE '&3' WITH it_msgtab-msgv3 INTO l_mstring.
REPLACE '&4' WITH it_msgtab-msgv4 INTO l_mstring.
ELSE.
REPLACE '&' WITH it_msgtab-msgv1 INTO l_mstring.
REPLACE '&' WITH it_msgtab-msgv2 INTO l_mstring.
REPLACE '&' WITH it_msgtab-msgv3 INTO l_mstring.
REPLACE '&' WITH it_msgtab-msgv4 INTO l_mstring.
ENDIF.
CONDENSE l_mstring.
it_mess-msgtyp = it_msgtab-msgtyp.
it_mess-lms = l_mstring.
it_mess-msgv1 = it_msgtab-msgv1.
APPEND it_mess.
WRITE: / it_msgtab-msgtyp, l_mstring(150).
ELSE.
WRITE: / it_msgtab.
it_mess-msgtyp = it_msgtab-msgtyp.
it_mess-lms = l_mstring.
it_mess-msgv1 = it_msgtab-msgv1.
APPEND it_mess.
ENDIF.
ENDIF.
ENDLOOP.
ENDFORM. " error
*& Form table_Control
FORM table_control .
SORT record BY lifnr matnr.
LOOP AT record.
ON CHANGE OF record-lifnr.
MOVE-CORRESPONDING record TO it_new.
APPEND it_new.
ENDON.
MOVE-CORRESPONDING record TO it_item.
APPEND it_item.
ENDLOOP.
ENDFORM. " table_Control
Reward if helpful
Thanks
Jagadeesh.G -
Hi
friends need small help in bdc table control
Well did my bdc spliting the itabs in to header and detail ...
in my detail table i had 3 records ...
after each record i want to press enter in trasaction and recoding is too
done in same way ..
my program insert the all the three records ..properly .but again it insert
the fourth one...blank which is not in detail table..in the pop the insert
ok code appears ..and then it proceeds to next step ..
i want to only number of reocrds in my detail itab.
... my code
LOOP AT i_tab WHERE equnr = i_output-equnr.
w_count = w_count + 1.
MOVE-CORRESPONDING i_tab TO i_tab1.
PERFORM bdc_dynpro USING 'ZOEE_MP_ENTRY' '0200'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'BDC_CURSOR'
'IT_ZOEED-MATNR(01)'.
*Concatenating to perform for detail lines (table control)
CONCATENATE 'IT_ZOEED-fTIME(' w_count ')' INTO w_bdc1.
CONCATENATE 'IT_ZOEED-TTIME(' w_count ')' INTO w_bdc2.
CONCATENATE 'IT_ZOEED-zoper(' w_count ')' INTO w_bdc3.
CONCATENATE 'IT_ZOEED-charg(' w_count ')' INTO w_bdc4.
CONCATENATE 'IT_ZOEED-matnr(' w_count ')' INTO w_bdc5.
CONCATENATE 'IT_ZOEED-Zrcod(' w_count ')' INTO w_bdc6.
PERFORM bdc_field USING w_bdc1
i_tab1-ftime .
PERFORM bdc_field USING w_bdc2
i_tab1-ttime .
PERFORM bdc_field USING w_bdc3
i_tab1-zoper.
IF i_tab1-zoper = 'P'.
PERFORM bdc_field USING w_bdc4
i_tab1-charg.
PERFORM bdc_field USING w_bdc5
i_tab1-matnr.
ENDIF.
IF i_tab1-zoper <> 'P'.
PERFORM bdc_field USING w_bdc6
i_tab1-zrcod.
PERFORM bdc_dynpro USING 'ZOEE_MP_ENTRY' '0200'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
ENDIF.
***Insert okcode
PERFORM bdc_dynpro USING 'ZOEE_MP_ENTRY' '0200'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=ZOEED_TCL1_INSR'.
PERFORM bdc_field USING 'BDC_CURSOR'
'%#AUTOTEXT001'.
PERFORM bdc_dynpro USING 'ZOEE_MP_ENTRY' '0200'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_dynpro USING 'ZOEE_MP_ENTRY' '0200'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'BDC_CURSOR'
'%#AUTOTEXT001'.
ENDLOOP.
PERFORM bdc_dynpro USING 'ZOEE_MP_ENTRY' '0200'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_dynpro USING 'ZOEE_MP_ENTRY' '0200'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=CODE'.
PERFORM bdc_field USING 'BDC_CURSOR'
'%#AUTOTEXT001'.
***and etc.
Pls tell me where iam wrong ... and when i debug it on the 4th insertion there is no sign of okcode and it wont insert the forth rec,,pls give the sol for this..
answers will be rewarded points
thnks in advance
regardsHi
friends need small help in bdc table control
Well did my bdc spliting the itabs in to header and detail ...
in my detail table i had 3 records ...
after each record i want to press enter in trasaction and recoding is too
done in same way ..
my program insert the all the three records ..properly .but again it insert
the fourth one...blank which is not in detail table..in the pop the insert
ok code appears ..and then it proceeds to next step ..
i want to only number of reocrds in my detail itab.
... my code
LOOP AT i_tab WHERE equnr = i_output-equnr.
w_count = w_count + 1.
MOVE-CORRESPONDING i_tab TO i_tab1.
PERFORM bdc_dynpro USING 'ZOEE_MP_ENTRY' '0200'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'BDC_CURSOR'
'IT_ZOEED-MATNR(01)'.
*Concatenating to perform for detail lines (table control)
CONCATENATE 'IT_ZOEED-fTIME(' w_count ')' INTO w_bdc1.
CONCATENATE 'IT_ZOEED-TTIME(' w_count ')' INTO w_bdc2.
CONCATENATE 'IT_ZOEED-zoper(' w_count ')' INTO w_bdc3.
CONCATENATE 'IT_ZOEED-charg(' w_count ')' INTO w_bdc4.
CONCATENATE 'IT_ZOEED-matnr(' w_count ')' INTO w_bdc5.
CONCATENATE 'IT_ZOEED-Zrcod(' w_count ')' INTO w_bdc6.
PERFORM bdc_field USING w_bdc1
i_tab1-ftime .
PERFORM bdc_field USING w_bdc2
i_tab1-ttime .
PERFORM bdc_field USING w_bdc3
i_tab1-zoper.
IF i_tab1-zoper = 'P'.
PERFORM bdc_field USING w_bdc4
i_tab1-charg.
PERFORM bdc_field USING w_bdc5
i_tab1-matnr.
ENDIF.
IF i_tab1-zoper <> 'P'.
PERFORM bdc_field USING w_bdc6
i_tab1-zrcod.
PERFORM bdc_dynpro USING 'ZOEE_MP_ENTRY' '0200'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
ENDIF.
***Insert okcode
PERFORM bdc_dynpro USING 'ZOEE_MP_ENTRY' '0200'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=ZOEED_TCL1_INSR'.
PERFORM bdc_field USING 'BDC_CURSOR'
'%#AUTOTEXT001'.
PERFORM bdc_dynpro USING 'ZOEE_MP_ENTRY' '0200'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_dynpro USING 'ZOEE_MP_ENTRY' '0200'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'BDC_CURSOR'
'%#AUTOTEXT001'.
ENDLOOP.
PERFORM bdc_dynpro USING 'ZOEE_MP_ENTRY' '0200'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_dynpro USING 'ZOEE_MP_ENTRY' '0200'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=CODE'.
PERFORM bdc_field USING 'BDC_CURSOR'
'%#AUTOTEXT001'.
***and etc.
Pls tell me where iam wrong ... and when i debug it on the 4th insertion there is no sign of okcode and it wont insert the forth rec,,pls give the sol for this..
answers will be rewarded points
thnks in advance
regards -
BDC OK Code disappear during debug mode
Hi all,
Currently, I have the following code when call transaction 'FV50':
WA_OPT-DISMODE = 'A'.
WA_OPT-UPDMODE = 'L'.
WA_OPT-DEFSIZE = 'X'.
CALL TRANSACTION 'FV50' USING IT_BDCDATA
OPTIONS FROM WA_OPT
* MODE ctumode
* UPDATE cupdate
MESSAGES INTO IT_MESSTAB.
Based on the above, I'm able to debug tcode FV50 with OK-CODE popup window, so that I can know the error messages displayed on the screen during debug.
As the first debug mode of FV50 encountering error message, which I've forced to exit the debug and exit the program (since some G/L do not exist in respective company code), I have maintained the G/L and re-run the BDC in debug mode (Mode = 'A'). However, this time, the OK-CODE popup window didn't prompt up, where I couldn't debug the BDC screen using OK-CODE popup window.
I have checked the settings in 'Customize Local Layout - ALT + F12' -> Options -> Expert tab -> Dialog Box for OK Code ticked, and I'm not certain why OK-CODE popup window just disappear on the second attempt of BDC debug.
Appreciate if you guys have any idea on this.
Thanks and regards,
PatrickHello,
If the OK-CODE pop up isn't appearing while running in mode A, it means that the continuity is missing in the recording. You may have to re-record the transaction carefully or if you could analyse the missing link, you could directly add it.
Also you could run the BDC in mode 'E' if you want to directly reach the point when any error occurs for better analysis.
Vikranth -
BDC OK CODE To select PO Line Item
Hello,
Can anyone tell me the BDC OkCode to select a particular line item in a PO.
Thanks
Vikyare you using me22 or me22n ?
if me22, just below the table control, you can see a field 'Item' . if you key in 50 in this item, item 50 will come to the top line.
so while doing recording, pass the line item number to this field, RM06E-EBELP, and then hit enter....
loop at your internal table with bdcdata, and pass each item numbers one by one to this field, and do the bdc.
Message was edited by:
Sujamol Augustine -
Function key displayed in BDC Source Code By Transaction
Dear All,
/EE , /EECAN Is the value of function key Back and Cancel respectively in selection screen 1000.
Where i can see these value without going through Source code after recording.Hello,
You could check the table RSMPTEXTS for the field OBJ_CODE with the standard program name for the transaction you are recording
Vikranth -
Regarding BDC return Code and calculation part.
hi guru's..
i have a req.. which tells abt transfering legacy datainto SAP using FB01 Tcode.
here after processing the flat file i have to update the return code of the session and total no of docs, total amoount and the posted documents and their amount in
a Ztable. How can i get the return code and the total amount for successfully processed records as well as for unsuccessful records with their total no. of records after processing the flat file.
<b>Rewards will be given for helpful answers</b>
ChandraIn ur code U will be having the syntax for prosting in FB01.
CALL TRANSACTION 'FB01'
USING bdcdata_tab
OPTIONS FROM opt
MESSAGES INTO t_msg
This message tab will contain all the messages returned by FB01. if the posting is sucessfully done - the message tab will contain the message ( it will contain error messages in case it fails to post).
So u can tap the messsages from here and report accordingly to ur output log.
Cheers
SKC. -
Hi All,
I have done recording in testing client where i have data.
but for developing code i trired to get it from testing client i tried to copy auto genereatoed code but
it is showing me error as Changes to Repository or cross-client Customizing are
not permitted
How can i get that code?
please provide any input.Hi
First down load the recording from Test Client to desk top from SHDB and then come to your dev Client and go to SHDB tcode select a existing record and press change. Now go import and select the file which you downloaded above.
now go to create program icon.
Cheers
Ram -
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. -
How to supress a warning message in BDC for ME11 Tcode
Hi Expert,
I am doing a BDC report for ME11 Tcode and some of warning is ignorable for this transaction code,how can we suppress these warning through BDC program, is it possible or will have to make some changes changes in TCODE(ME11) itself.hi,
if the warning message coming in a pop-up window then it can be supressed in the following way.
1. comment the lines of the code of bdc recording of that pop-up screen along with the perform of bdc ok code '=ENTE".
2. use the structure ctu_params and fill the correspondings fiels, particularly the field nobinpt = 'X' and then use this structure in the call transcation statement as
call transcation 'ME11'
using bdcdata
options from opt ( structure of ctu_params )
3. At the time of recording use the option of check box " no batch input session ".
regards,
Alok -
Facing problem during uploadation of Routing data using CA01-BDC - URGENT
Dear All,
When I am trying to upload Routing data using CA01 in the Table Control scenario, then I am facing problem as my last 2 records are not getting uploaded from my Test file.
For example, I am having 47 records in my Test File and after setting Default size parameters (to avoid screen resolution problem)
I have 15 table control line items data per page. The Page down logic ('=P+') is working fine, but my below BDC code failed to take
the remainder last 2 records from the Test File.
Analysis: When I am running my Call Transaction bdc in foreground, then the 1st page down occurs after 15th record, 2nd page down occurs after 29th record( as in Table Control 1st pages 15th record is coming on the Top of 2nd page). 3rd page down occurs after 43rd record
(as 2nd pages 29th record is coming on the top of 3rd page). In the 4th Table Control Page 43rd record of previous page is coming on top, and then its taking 44th & 45th records from the Test File and then it is triggering SAVE (=BU). Thus, our last 2 records
(i.e. 46th, 47th record) are not getting uploaded in the routing screen from our Test File.
If anybody has encountered this scenario previously, please help me URGENTLY in fixing the bugs here. Its VERY, VERY URGENT
FYI. For others 45 successful records already uploaded, all the screen fields values are coming properly in the routing screen, and here there is no issue.
Thanks very much
Thanks & Regards
Sudipta Project Lead
Volvo Client Location
I am pasting my BDC source code below:
REPORT ZRT1_UPLOAD_CA01_F
NO STANDARD PAGE HEADING
LINE-SIZE 255.
I N C L U D E S *
Include for Data Declarations
INCLUDE zrout_top.
Include for Forms
INCLUDE zrout_form.
INCLUDE zrout_include_f_ca01.
*AT SELECTION-SCREEN ON VALUE-REQUEST FOR <field>
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.
Attaching F4 help with filename
PERFORM F1001_GET_F4.
S T A R T - O F - S E L E C T I O N *
START-OF-SELECTION.
Perform to read the input file
PERFORM f_read_file.
Perform to fill the BDC data
PERFORM f_fill_bdctab.
E N D - O F - S E L E C T I O N *
END-OF-SELECTION.
FREE: i_bdcdata,
i_messtab,
i_record.
x----
*& Include ZROUT_TOP *
D A T A B A S E T A B L E S *
TABLES: t100. "Messages
D A T A D E C L A R A T I O N S *
T A B L E T Y P E S *****************************
For input data
TYPES: BEGIN OF ty_record,
matnr(18), "Material Number
werks(4), "Plant
verwe(3), "Usage
statu(3), "Status
arbpl(8), "Work Center
steus(4), "Control Key
ltxa1(40), "Description of Operation
bmsch(13), "Base Quantity
meinh(3), "Unit of Measure
vgw01(11), "Machine
vge01(3), "Unit of measure of activity
END OF ty_record.
I N T E R N A L T A B L E S ***********************
Internal Table for input file name
DATA: i_file_tab TYPE STANDARD TABLE OF sdokpath INITIAL SIZE 0.
Internal Table for BDC Data
DATA: i_bdcdata TYPE STANDARD TABLE OF bdcdata INITIAL SIZE 0.
Internal Table for BDC Messages
DATA: i_messtab TYPE STANDARD TABLE OF bdcmsgcoll INITIAL SIZE 0.
Internal Table for Input file
DATA: i_record TYPE STANDARD TABLE OF ty_record INITIAL SIZE 0.
W O R K A R E A S *************************
Work Area for input file name
DATA: wa_file_tab LIKE sdokpath.
Work Area for BDC Data
DATA: wa_bdcdata LIKE bdcdata.
Work Area for BDC Messages
DATA: wa_messtab LIKE bdcmsgcoll.
Work Area for Input file
DATA: wa_record TYPE ty_record.
V A R I A B L E S ****************************
DATA: v_filename TYPE string,
v_fnam(40) TYPE c.
DATA: wa_opt TYPE ctu_params.
C O N S T A N T S ***************************
CONSTANTS: c_werks TYPE rc27m-werks VALUE 'tp',
c_steus TYPE plpod-steus VALUE 'PP01'.
*Selection Screen.
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
PARAMETERS:
Input file name
P_FILE TYPE rlgrap-filename OBLIGATORY. " DEFAULT 'C:\'.
SELECTION-SCREEN END OF BLOCK B1.
x----
*& Include ZROUT_FORM *
*& Form f_fill_bdctab
Form to fill the BDC Data
FORM f_fill_bdctab.
TABLES mapl. "Assignment of Task Lists to Materials
DATA: l_cnt_item(3) TYPE n VALUE 1. "Line item counter
DATA: first(3) TYPE n VALUE 16. "Line item counter
DATA: next(3) TYPE n . "Line item counter
DATA: lin(3) TYPE n . "Line item counter
DATA: l_v_bmsch(13), "Base qty
l_v_meinh(3), "Unit of Measure
l_v_vgw01(11), "Machine
l_v_vgw02(11), "Labour
l_v_vge01(3). "Unit of measure of activity
DATA l_v_nextline TYPE sy-tabix.
DATA wa_temp TYPE ty_record.
Initialize Counter
l_cnt_item = 1.
SORT i_record BY matnr.
LOOP AT i_record INTO wa_record.
AT NEW matnr.
REFRESH: i_bdcdata,
i_messtab.
SET PARAMETER ID 'PLN' FIELD space.
SET PARAMETER ID 'PAL' FIELD space.
PERFORM f_bdc_dynpro USING 'SAPLCPDI' '1010'.
PERFORM f_bdc_field USING 'BDC_OKCODE'
'/00'.
Material Number
PERFORM f_bdc_field USING 'RC27M-MATNR'
wa_record-matnr.
Plant
PERFORM f_bdc_field USING 'RC27M-WERKS'
c_werks.
PERFORM f_bdc_field USING 'RC271-PLNNR'
Check if routing already exits for the material
SELECT * FROM mapl
INTO mapl
WHERE matnr EQ wa_record-matnr
AND werks EQ c_werks
AND plnty EQ 'N'.
IF sy-subrc EQ 0.
PERFORM f_bdc_dynpro USING 'SAPLCPDI' '1200'.
PERFORM f_bdc_field USING 'BDC_OKCODE'
'=ANLG '.
ENDIF.
ENDSELECT.
perform f_bdc_dynpro USING 'SAPLCPDA' '1200'.
perform f_bdc_field USING 'BDC_OKCODE'
'=VOUE'.
Group Counter
perform f_bdc_field USING 'PLKOD-PLNAL'
Usage
PERFORM f_bdc_field USING 'PLKOD-VERWE'
'1'.
Status
PERFORM f_bdc_field USING 'PLKOD-STATU'
'4'.
ENDAT.
PERFORM f_bdc_dynpro USING 'SAPLCPDI' '1400'.
Check if page is full
IF l_cnt_item EQ '16'.
Page down
PERFORM f_bdc_field USING 'BDC_OKCODE'
'=P+'.
l_cnt_item = 1.
ELSE.
PERFORM f_bdc_field USING 'BDC_OKCODE'
'/00'.
ENDIF.
CLEAR v_fnam.
Populate item level details
Work Center
CONCATENATE 'PLPOD-ARBPL(' l_cnt_item ')' INTO v_fnam.
PERFORM f_bdc_field USING v_fnam
wa_record-arbpl.
Control Key
CONCATENATE 'PLPOD-STEUS(' l_cnt_item ')' INTO v_fnam.
PERFORM f_bdc_field USING v_fnam
c_steus.
Description of Operation
CONCATENATE 'PLPOD-LTXA1(' l_cnt_item ')' INTO v_fnam.
PERFORM f_bdc_field USING v_fnam
wa_record-ltxa1.
Base Quantity
CONCATENATE 'PLPOD-BMSCH(' l_cnt_item ')' INTO v_fnam.
PERFORM f_bdc_field USING v_fnam
wa_record-bmsch.
Unit of Measure
CONCATENATE 'PLPOD-MEINH(' l_cnt_item ')' INTO v_fnam.
PERFORM f_bdc_field USING v_fnam
wa_record-meinh.
Machine
CONCATENATE 'PLPOD-VGW01(' l_cnt_item ')' INTO v_fnam.
PERFORM f_bdc_field USING v_fnam
wa_record-vgw01.
Labour
CONCATENATE 'PLPOD-VGW02(' l_cnt_item ')' INTO v_fnam.
PERFORM f_bdc_field USING v_fnam
wa_record-vgw02.
Unit of measure of activity
CONCATENATE 'PLPOD-VGE01(' l_cnt_item ')' INTO v_fnam.
PERFORM f_bdc_field USING v_fnam
wa_record-vge01.
l_cnt_item = l_cnt_item + 1.
CLEAR wa_record.
AT END OF matnr.
PERFORM f_bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM f_bdc_field USING 'BDC_OKCODE'
'=BU'.
wa_opt-DISMODE = 'A'.
wa_opt-DEFSIZE = 'X'.
wa_opt-UPDMODE = 'S'.
PERFORM f_bdc_transaction USING 'CA01'.
Initialize Counter
l_cnt_item = 1.
ENDAT.
ENDLOOP.
ENDFORM. " f_fill_bdctab
x----
*& Include ZROUT_INCLUDE_F_CA01 *
*& Form f_read_file
Form to read the file from presentation server
FORM f_read_file .
To get the file name
DATA l_v_file TYPE string.
l_v_file = P_FILE.
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
filename = l_v_file
filetype = 'ASC'
has_field_separator = 'X'
TABLES
data_tab = i_record
EXCEPTIONS
file_open_error = 1
file_read_error = 2
no_batch = 3
gui_refuse_filetransfer = 4
invalid_type = 5
no_authority = 6
unknown_error = 7
bad_data_format = 8
header_not_allowed = 9
separator_not_allowed = 10
header_too_long = 11
unknown_dp_error = 12
access_denied = 13
dp_out_of_memory = 14
disk_full = 15
dp_timeout = 16
OTHERS = 17.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDIF.
ENDFORM. " f_read_file
*& Form f_bdc_dynpro
Form to populate BDC Tab for new screen
-->fp_program Screen program name
-->fp_dynpro Screen Number
Start new screen *
FORM f_bdc_dynpro USING fp_program fp_dynpro.
CLEAR wa_bdcdata.
wa_bdcdata-program = fp_program.
wa_bdcdata-dynpro = fp_dynpro.
wa_bdcdata-dynbegin = 'X'.
APPEND wa_bdcdata TO i_bdcdata.
ENDFORM. "f_bdc_dynpro
*& Form f_bdc_field
Insert field *
FORM f_bdc_field USING fp_fnam fp_fval.
IF NOT fp_fval IS INITIAL.
CLEAR wa_bdcdata.
wa_bdcdata-fnam = fp_fnam.
wa_bdcdata-fval = fp_fval.
APPEND wa_bdcdata TO i_bdcdata.
ENDIF.
ENDFORM. "f_bdc_field
*& Form f_bdc_transaction
Call transaction and error handling
-->fp_tcode Transaction code
FORM f_bdc_transaction USING fp_tcode.
DATA: l_mstring(480),
l_color TYPE i,
l_mode TYPE c.
REFRESH i_messtab.
CALL TRANSACTION fp_tcode USING i_bdcdata
OPTIONS FROM wa_opt
MESSAGES INTO i_messtab.
Messages during upload
LOOP AT i_messtab INTO wa_messtab.
CASE wa_messtab-msgtyp.
WHEN 'S'.
l_color = 5.
WHEN 'E'.
l_color = 6.
WHEN 'W'.
l_color = 3.
ENDCASE.
FORMAT COLOR = l_color.
SELECT SINGLE * FROM t100 WHERE sprsl = wa_messtab-msgspra
AND arbgb = wa_messtab-msgid
AND msgnr = wa_messtab-msgnr.
IF sy-subrc = 0.
l_mstring = t100-text.
IF l_mstring CS '&1'.
REPLACE '&1' WITH wa_messtab-msgv1 INTO l_mstring.
REPLACE '&2' WITH wa_messtab-msgv2 INTO l_mstring.
REPLACE '&3' WITH wa_messtab-msgv3 INTO l_mstring.
REPLACE '&4' WITH wa_messtab-msgv4 INTO l_mstring.
ELSE.
REPLACE '&' WITH wa_messtab-msgv1 INTO l_mstring.
REPLACE '&' WITH wa_messtab-msgv2 INTO l_mstring.
REPLACE '&' WITH wa_messtab-msgv3 INTO l_mstring.
REPLACE '&' WITH wa_messtab-msgv4 INTO l_mstring.
ENDIF.
CONDENSE l_mstring.
WRITE: / wa_messtab-msgtyp, l_mstring(250).
ELSE.
WRITE: / wa_messtab.
ENDIF.
FORMAT COLOR OFF.
ENDLOOP.
SKIP.
ENDFORM. " f_bdc_transaction
FORM F1001_GET_F4.
CALL FUNCTION 'KD_GET_FILENAME_ON_F4'
EXPORTING
PROGRAM_NAME = SY-REPID
DYNPRO_NUMBER = SY-DYNNR
FIELD_NAME = P_FILE
CHANGING
FILE_NAME = P_FILE
EXCEPTIONS
MASK_TOO_LONG = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
File is not selected
MESSAGE I000 WITH TEXT-M01.
ENDIF.
ENDFORM. " F1001_GET_F4Sudipta,
Would request you to post this to ABAP-Forum for Immediate response.
I had this problem, but the ABAP guy did something to correct this...it was more of screen resoultion difference between the recorded system and uploading system. Please try to use the same system which was used to record and try.
Regards,
Prasobh -
Dear Guru,
Here i have encountered a typical issue.
Im Performing BDC for VK11 (Create Condition Record) with "Key Combination" --->> "Location, Material Code (Base Price for Longs)".
While I am running this BDC ( source code attached below) in All screen mode every datas which are of type "CHAR" like--->>
Condition type(kschl) ,
Plant(werks) ,
Material No(matnr),
Valid From date(datab),
Valid To date(datbi),
Rate Unit(konwa) are coming properly from flatfile except
Rate (condition amount - KBETR) which is are of data type "CURR".
So guru I want to know what code i should add into my below bdc prog to fetch data properly into RATE - Condition amount field which is of type " CURR".
Pls Help.
Source Code:
REPORT z_bdc_vk11_famd
NO STANDARD PAGE HEADING LINE-SIZE 255.
*& DATA-DECLARATION
TYPES: BEGIN OF t_cust,
kschl LIKE rv13a-kschl,
werks LIKE komg-werks,
matnr LIKE komg-matnr,
kbetr LIKE konp-kbetr,
konwa LIKE konp-konwa,
datab LIKE rv13a-datab,
datbi LIKE rv13a-datbi,
END OF t_cust.
TYPES: BEGIN OF t_sucrec,
cnum TYPE komg-werks,
cnam TYPE komg-matnr,
END OF t_sucrec.
TYPES: BEGIN OF t_errrec,
lineno TYPE string, "Line Number
message TYPE string, "Error Message
END OF t_errrec.
DATA: v_file TYPE string, "Variable for storing flat file
it_cust TYPE STANDARD TABLE OF t_cust, "Internal table of Customer
wa_cust LIKE LINE OF it_cust, "Workarea of Internal table it_cust
it_sucrec TYPE STANDARD TABLE OF t_sucrec,
"Internal table of Success records
wa_sucrec LIKE LINE OF it_sucrec,
"Workarea of Internal table it_sucrec
it_errrec TYPE STANDARD TABLE OF t_errrec,
"Internal table of Error records
wa_errrec LIKE LINE OF it_errrec,
"Workarea of Internal table it_errrec
it_bdctab LIKE bdcdata OCCURS 0 WITH HEADER LINE,
"Internal table structure of BDCDATA
it_messagetab LIKE bdcmsgcoll OCCURS 0 WITH HEADER LINE,
"Tracing Error Messages
v_date LIKE sy-datum, "Controlling of session date
v_index LIKE sy-tabix, "Index Number
v_totrec TYPE i, "Total Records
v_errrec TYPE i, "Error Records
v_sucrec TYPE i, "Success Records
v_sesschk TYPE c. "Session maintenance
*& SELECTION-SCREEN
SELECTION-SCREEN: BEGIN OF BLOCK blk1 WITH FRAME TITLE text-001 NO
INTERVALS.
PARAMETERS: p_file TYPE rlgrap-filename.
"rlgrap-filename is a predefined structure
SELECTION-SCREEN: END OF BLOCK blk1.
SELECTION-SCREEN: BEGIN OF BLOCK blk2 WITH FRAME TITLE text-002 NO
INTERVALS.
PARAMETERS: p_mode LIKE ctu_params-dismode DEFAULT 'N',
p_update LIKE ctu_params-updmode DEFAULT 'A'.
SELECTION-SCREEN END OF BLOCK blk2.
*& INITIALIZATION
INITIALIZATION.
v_date = sy-datum - 1.
*& AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
CALL FUNCTION 'F4_FILENAME'
EXPORTING
program_name = syst-cprog
dynpro_number = syst-dynnr
field_name = ' '
IMPORTING
file_name = p_file.
*& START-OF-SELECTION
START-OF-SELECTION.
v_file = p_file.
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
filename = v_file
filetype = 'ASC'
has_field_separator = 'X'
TABLES
data_tab = it_cust
EXCEPTIONS
file_open_error = 1
file_read_error = 2
no_batch = 3
gui_refuse_filetransfer = 4
invalid_type = 5
no_authority = 6
unknown_error = 7
bad_data_format = 8
header_not_allowed = 9
separator_not_allowed = 10
header_too_long = 11
unknown_dp_error = 12
access_denied = 13
dp_out_of_memory = 14
disk_full = 15
dp_timeout = 16
OTHERS = 17.
IF sy-subrc = 0.
****MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
*& END-OF-SELECTION
END-OF-SELECTION.
LOOP AT it_cust INTO wa_cust.
v_index = sy-tabix.
PERFORM bdc_dynpro USING 'SAPMV13A' '0100'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RV13A-KSCHL'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=ANTA'.
PERFORM bdc_field USING 'RV13A-KSCHL'
wa_cust-kschl.
PERFORM bdc_dynpro USING 'SAPLV14A' '0100'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RV130-SELKZ(01)'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=WEIT'.
PERFORM bdc_dynpro USING 'SAPMV13A' '1595'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RV13A-DATBI(01)'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'KOMG-WERKS'
wa_cust-werks.
PERFORM bdc_field USING 'KOMG-MATNR(01)'
wa_cust-matnr.
PERFORM bdc_field USING 'KONP-KBETR(01)'
wa_cust-kbetr.
PERFORM bdc_field USING 'KONP-KONWA(01)'
'INR'.
PERFORM bdc_field USING 'RV13A-DATAB(01)'
wa_cust-datab.
PERFORM bdc_field USING 'RV13A-DATBI(01)'
wa_cust-datbi.
PERFORM bdc_dynpro USING 'SAPMV13A' '1595'.
PERFORM bdc_field USING 'BDC_CURSOR'
'KOMG-MATNR(01)'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=SICH'.
CALL TRANSACTION 'VK11' USING it_bdctab
MODE p_mode
UPDATE p_update
MESSAGES INTO it_messagetab.
IF sy-subrc = 0.
*& reading success records to corresponding internal table
READ TABLE it_messagetab WITH KEY msgtyp = 'S'.
IF sy-subrc = 0.
wa_sucrec-cnum = it_messagetab-msgv1.
wa_sucrec-cnum = wa_cust-werks.
wa_sucrec-cnam = wa_cust-matnr.
APPEND wa_sucrec TO it_sucrec.
CLEAR wa_sucrec.
ENDIF.
ELSE.
*& reading error records to corresponding internal table
READ TABLE it_messagetab WITH KEY msgtyp = 'E'.
IF sy-subrc = 0.
CALL FUNCTION 'FORMAT_MESSAGE'
EXPORTING
id = sy-msgid
no = it_messagetab-msgnr
v1 = it_messagetab-msgv1
v2 = it_messagetab-msgv2
v3 = it_messagetab-msgv3
v4 = it_messagetab-msgv4
IMPORTING
msg = wa_errrec-message.
wa_errrec-lineno = v_index.
APPEND wa_errrec TO it_errrec.
CLEAR wa_errrec.
ENDIF.
ENDIF.
CLEAR : it_bdctab, it_messagetab.
REFRESH: it_bdctab, it_messagetab.
ENDLOOP.
DESCRIBE TABLE it_cust LINES v_totrec.
DESCRIBE TABLE it_errrec LINES v_errrec.
DESCRIBE TABLE it_sucrec LINES v_sucrec.
PERFORM disp_data.
SKIP 2.
IF v_sucrec > 0.
PERFORM disp_success_data.
ENDIF.
SKIP 2.
IF v_errrec > 0.
PERFORM disp_error_data.
ENDIF.
*& Form bdc_dynpro
text
-->P_0104 text
-->P_0105 text
FORM bdc_dynpro USING program dynpro.
CLEAR it_bdctab.
it_bdctab-program = program.
it_bdctab-dynpro = dynpro.
it_bdctab-dynbegin = 'X'.
APPEND it_bdctab.
ENDFORM. " bdc_dynpro
*& Form bdc_field
FORM bdc_field USING fnam fval.
CLEAR it_bdctab.
it_bdctab-fnam = fnam.
it_bdctab-fval = fval.
APPEND it_bdctab.
ENDFORM. " bdc_field
*& Form disp_data
FORM disp_data .
ULINE (45).
WRITE : / sy-vline,
4 'FAMD Price Master UPDATE SUMMARY'(004) COLOR 1,
45 sy-vline.
ULINE /(45).
WRITE : / sy-vline,
'Total Records Processed'(007),
28 '=',
30 v_totrec,
45 sy-vline,
/ sy-vline,
'Error Records'(005),
28 '=',
30 v_errrec,
45 sy-vline,
/ sy-vline,
'Successful Records'(006),
28 '=',
30 v_sucrec,
45 sy-vline.
ULINE /(45).
ENDFORM. " disp_data
*& Form disp_success_data
FORM disp_success_data .
ULINE (45).
WRITE : / sy-vline,
14 'Successful Records'(012) COLOR 1,
45 sy-vline.
ULINE /(45).
WRITE : / sy-vline ,
'Plant Number'(010) COLOR 2,
17 sy-vline,
25 'Material Number'(011) COLOR 2,
45 sy-vline.
ULINE /(45).
LOOP AT it_sucrec INTO wa_sucrec.
WRITE: / sy-vline ,
wa_sucrec-cnum,
17 sy-vline,
19 wa_sucrec-cnam,
45 sy-vline.
ENDLOOP.
ULINE /(45).
ENDFORM. " disp_success_data
*& Form disp_error_data
FORM disp_error_data .
ULINE (90).
WRITE : / sy-vline,
35 'Error Records'(013) COLOR 1,
90 sy-vline.
ULINE /(90).
WRITE : / sy-vline,
'Record Number'(008) COLOR 2,
sy-vline,
37 'Reason for error'(009) COLOR 2,
90 sy-vline.
ULINE /(90).
LOOP AT it_errrec INTO wa_errrec.
WRITE : / sy-vline,
wa_errrec-lineno,
17 sy-vline,
wa_errrec-message,
90 sy-vline.
ENDLOOP.
ULINE /(90).
ENDFORM. " disp_error_data
Flat file Sequence:
Condition Type Plant Matrial No Rate Validity start date Validity end dateHi,
I think you are using 'wa_cust-kbetr' directly while populating rate field in BDC.
Please write wa_cust-kbetr into a character variable and pass the character variable to BDC.
data: t_rate(16) type c.
write wa_cust-kbetr to t_rate no-grouping.
Pass t_rate instead of wa_cust-kbetr in the BDC.
PERFORM bdc_field USING 'KONP-KBETR(01)'
t_rate.
Like wise you might have to write your date variables also.
Thanks and regards,
S. Chandramouli.
Maybe you are looking for
-
Hi experts, During MRP run for a material , open PO quantity is not considered If delivery date mentioned in that open PO exceeds 110 days from planning date(MRP run date). If it is less , it considers open PO quantity. MRP type = V1 (Reorder point p
-
I am trying to work with a series of vi's developed in Labview 8 in Labview 7.1. The code was saved with the 'Save for Previous Version' option available in Labview 8. When trying to use the code in LV7.1 my entire Windows XP system locks up (curso
-
Just wow...
As I stated in my last post, I'm new to the Apple world. My iTouch alone has replaced 90% of my Windows use and I'm looking to completely closing that "window" soon. So here is my question... I have the portability I need with the touch, so now I nee
-
My ipod was totally wiped when i last pulled it in. help!
I can't get my iTunes to recognize my ipod. I can't get any of my music back on my ipod.
-
Hey guys I have had my zen touch since november... so i guess it is no longer under warranty. I was using it today, and all of a sudden the touch pad lost response, and will only sometimes let you scroll down... all upward scrolling does not work. I