Using keyboardevent (newbie)
Hi all,
In my file, I have an introduction playing over and over. When someone hits the "K" button, I need the file to immediately go to and play a frame labeled "waterdepth". What am I missing below? I keep getting an error saying that "keyboard event cannot be loaded."
Help!
import flash.events.KeyboardEvent;
stage.addEventListener(KeyboardEvent.KEY_DOWN, waterdepth);
function waterdepth(e:KeyboardEvent):void {
if(event.keyCode == 75) {
gotoandPlay("waterdepth");
don't you see an error???
use:
import flash.events.KeyboardEvent;
stage.addEventListener(KeyboardEvent.KEY_DOWN, waterdepth);
function waterdepth(e:KeyboardEvent):void {
if(e.keyCode == 75) {
gotoandPlay("waterdepth");
Similar Messages
-
How to achieve good non-interlaced video using compressor (newbie question)
Dear all,
I am completely at sea but I know that I have to use the "none" setting for the field order and cannot for the life of me work this out.
Now- I usually export direct from Final Cut Pro (H.264, best quality etc etc) but this time the exported QT file just will not de-interlace (not my footage but I have to deliver the edit), come **** or high water.
So- a kind soul said to use Compressor... And to not use any field ordering.
But HOW? I watched videos, sought to use the instructions given me here but am still totally lost.
What I did:
1. Launched Compressor,
2. Dragged in the self-contained reference QT file from my desktop,
3. Picked a setting (H.264 which has field reordering ON by default),
4. Dropped the "setting" into the blue field to right of clip thumb,
5. Double-clicked the "setting" and then-
6. picked the "Encoder" button, as instructed but cannot change the Field Order.
Because Compressor is completely new to me I don't know if I ought to NOT pick a setting until I have it how I want it, saved it as a "custom setting" and THEN bring it into the project or if I am to do it once brought in to the project. Either way- how to change the field order to "none". Or should I pick a de-interlace filter? Just that I have been looking and testing and nothing I do creates a de-interlaced final file.
All the tutorial videos I have watched (erm- about 5 now) go over exporting and how to pick your settings from those which exist but what I need to know is how to change a setting to suit (ie get rid of the evil interlacing).
I am hoping someone here can give me a very simple step by step or point me in the direction of one.Let me see if I can wrap my head around what you're trying to do. You started with an HD timeline 1280 x 720 (16:9). Into this you want to add your SD PAL clips, shrunk down for a picture in picture effect (a completely different concept from multicam.) But your shrunk down clips have nasty interlacing, and the one clip which was meant to be full frame looks like rubbish, right? Sorry but there's no way to blow a clip up 180% and have it look even halfway decent. At least not in FCP. Compressor has an upscale algorithm, available in the same Frame Controls tab where you did the de-interlacing, which can give you somewhat better results. There's also a plug-in from Red Giant called Instant HD which may or may not yield better results than Compressor.
Here's where you went wrong. The clips to be shrunk should have been deinterlaced before bringing them into FCP, and into your sequence. Go ahead and do this, using the ProRes 422 setting, with the deinterlacing technique from before.
Your sequence in FCP is fine, except that you want to change its compressor to ProRes 422 so that it matches your newly imported de-interlaced clips.
You want to de-interlace your P2 1080i clips beforehand as well. The other change to make to your sequence is to change Field Dominance to None.
If you've already finished your edit, you can still do all of the de-interlacing, outputting all of the results to a new folder. But you have to do every source clip in its entirety if you want to re-link to retain your edit.
When Compressor's done - this will probably take all night - open your FCP project, select all the source clips, right-click and choose Reconnect Media. Locate the newly de-interlaced ProRes clips and Connect.
Then you only need to export your sequence as a Quicktime Movie, Current Settings, Self-contained. This will give you a pristine master which will play fine on your computer, and from which you may then use Compressor to create a web or dvd version as needed. -
Hi,
I've got a question on how to use TimeStamp?...which timestamp class/method to use?..etc,etc...
I'm using JDeveloper with Oracle 8i and it's a distributed database environment.
I've got a single UI for order entry and Ineedto capture the timestamp from the UI and put it into the tables using JDBC - is there such a sample available somewhere or can anyone help me, please?....this is for an assignment and it's due wednesday (9th Oct)- australian time...& this is the only part of it that I havent been able to figure out yet thanks!!...appreciate any help..Hi,
thanks very much for that - I did go thru the forums and there was stuff on timestamp but not on what I needed to do - I managed to get it going using oracle's 'to_date' function so it's ok now....took me all afternoon but I finally got it happening (only in my li'l trial date table that I made for it - but hey at least it works) .. now to integrate into the actual assignment!!....thanks heaps, ciao, -
FB05 posting problem using POSTING_INTERFACE_CLEARING
Hi All,
I have a problem posting FB05 using POSTING_INTERFACE_CLEARING.My requirement is to select open item based on document number and then create another leg for that open item using GL account,posting key and amount that matches the selected open item amount.
I am not sure whether I am not doing the right thing because I get an error 'Difference is too large for clearing'. If I actually go to FB05 and 'choose open item' for document number and try to hit 'Save' on the list of open items screen,I get the same error. I then select 'Charge off difference' and it takes me to screen that is quite similar to FB01 and I enter the other leg of the entry i.e posting key,acct no,amount etc.I want to replicate the same process using funtion module.I am sending you the code,please help me.
start-of-selection.
i_splitinput-compcode = '0410'.
i_splitinput-currency = 'USD'.
i_splitinput-amount = '299'.
i_splitinput-reference = '90286483'.
i_splitinput-date = '20090320'.
i_splitinput-type = 'D'.
i_splitinput-clearingacct = '101002'.
append i_splitinput.
loop at i_splitinput.
at first.
perform posting_interface_start using 'C'.
endat.
at new currency.
perform f_create_document_header using i_splitinput-compcode
i_splitinput-currency.
endat.
perform f_create_document_items .
at end of currency.
perform f_post_gl_document.
endat.
at last.
perform f_posting_interface_end.
endat.
endloop.
*& Form posting_interface_start
text
-->P_P_TYPE text
form posting_interface_start using p_type.
data lv_mode type c value 'N'.
if p_type = 'C'.
call function 'POSTING_INTERFACE_START'
exporting
i_function = 'C'
i_mode = lv_mode
i_update = 'S'
exceptions
client_incorrect = 1
function_invalid = 2
group_name_missing = 3
mode_invalid = 4
update_invalid = 5
others = 6.
if sy-subrc <> 0.
message 'Error initializing posting interface'(e05) type 'I'.
endif.
endif.
endform. " posting_interface_start
*& Form f_create_document_header
text
--> p1 text
<-- p2 text
form f_create_document_header using p_compcode p_currency.
data: l_waers type waers,
l_postdate(10) type c,
l_docdate(10),
l_bktxt type bktxt,
l_blart type blart.
*---Convert dates to proper format MM/DD/YYYY
write p_pstdat to l_postdate mm/dd/yyyy.
write p_docdat to l_docdate mm/dd/yyyy.
i_ftpost-stype = 'K'. "Header
i_ftpost-count = 1.
perform ftpost_field using: 'BKPF-BUKRS' p_compcode, "Company Cd
'BKPF-WAERS' p_currency, "Doc Currency
'BKPF-BLART' p_doctyp, "Doc Type
'BKPF-BLDAT' l_docdate, "Doc Date
'BKPF-BUDAT' l_postdate, "Posting Dt
'BKPF-BKTXT' p_doctxt, "Header Text
'BKPF-XBLNR' p_ref, "Ref Doc
'RF05A-AUGTX' 'Test'. "Clearing item text
*creditnote to your own
*debit to customer but sometimes you post credit
*payor-vendor +ve payee-customer -ve
i_ftpost-count = 0.
endform. " f_create_document_header
*& Form ftpost_field
text
-->P_1045 text
-->P_PA_BUKRS text
form ftpost_field using field_name type any
field_value type any.
i_ftpost-fnam = field_name.
i_ftpost-fval = field_value.
append i_ftpost.
endform. " ftpost_field
*& Form f_create_document_items
text
--> p1 text
<-- p2 text
form f_create_document_items .
*concatenate i_splitinput
i_ftclear-agkoa = 'D'."D-cust, v-vend
i_ftclear-agkon = '1041048'."cust/ven acct
i_ftclear-agbuk = i_splitinput-compcode.
i_ftclear-xnops = 'X'.
i_ftclear-xfifo = space.
i_ftclear-agums = space.
i_ftclear-avsid = space.
i_ftclear-selfd = 'BELNR'.
i_ftclear-selvon = i_splitinput-reference.
i_ftclear-selbis = 'Test'.
collect i_ftclear.clear i_ftclear.
i_ftclear-selvon = '101002'.
i_ftclear-selbis = '101002'.
append i_ftclear.
i_ftpost-stype = 'P'. "Details
i_ftpost-count = i_ftpost-count + 1.
perform ftpost_field using: 'RF05A-NEWBS' '15', "Post Key
'RF05A-NEWKO' '1071990', "GL Account
'BSEG-WRBTR' '299', "DC Amount
'BSEG-SGTXT' 'SAN'. "Item Text
'BSEG-ZUONR' i_post-merchant_id.
*lt_ftclear-selvon = p_doc2.
*lt_ftclear-selbis = p_doc2.
*APPEND lt_ftclear.
endform. " f_create_document_items
*& Form f_post_gl_document
text
--> p1 text
<-- p2 text
form f_post_gl_document .
refresh i_blntab.
clear i_blntab.
call function 'POSTING_INTERFACE_CLEARING'
exporting
i_auglv = 'UMBUCHNG'
i_tcode = 'FB05'
I_SGFUNCT = ' '
I_NO_AUTH = ' '
importing
e_msgid = v_msgid
e_msgno = v_msgno
e_msgty = v_msgty
e_msgv1 = v_msgv1
e_msgv2 = v_msgv2
e_msgv3 = v_msgv3
e_msgv4 = v_msgv4
e_subrc = g_subrc
tables
t_blntab = i_blntab
t_ftclear = i_ftclear
t_ftpost = i_ftpost
t_fttax = i_fttax
exceptions
clearing_procedure_invalid = 1
clearing_procedure_missing = 2
table_t041a_empty = 3
transaction_code_invalid = 4
amount_format_error = 5
too_many_line_items = 6
company_code_invalid = 7
screen_not_found = 8
no_authorization = 9
others = 10
if sy-subrc <> 0.
v_message = 'Posting Interface Error.'.
endif.
CALL FUNCTION 'FORMAT_MESSAGE'
EXPORTING
id = v_msgid
lang = sy-langu
no = v_msgno
v1 = v_msgv1
v2 = v_msgv2
v3 = v_msgv3
v4 = v_msgv4
IMPORTING
msg = v_message
EXCEPTIONS
not_found = 1
OTHERS = 2.
WRITE : V_MESSAGE.
endform. " f_post_gl_document
*& Form f_posting_interface_end
text
--> p1 text
<-- p2 text
form f_posting_interface_end .
call function 'POSTING_INTERFACE_END'
exporting
i_bdcimmed = ' '
exceptions
session_not_processable = 1
others = 2.
if sy-subrc <> 0.
endif.
endform. " f_posting_interface_end
Thanks in advance.Hi Abaper,
This is in continuation of my previous email,I am sending you my code.Please take a look and let me know your suggestions.Also can you please share with me your code if you have ever worked with FB05.
Also I have debugged and found that at the end on program SAFM05A screen 0733 ,the code enters document number BELNR and does okcode - /11. This takes to the screen SAPDF05X screen 3100 where it does try to save.I believe 3100 is a final screen according to the FM code but there is something I may not be passing which is not allowing it to save.
*Session header
perform populate_xbgr00.
append xbgr00 to dataset.
write p_docdat to p_docdat mm/dd/yy.
write p_pstdat to p_pstdat mm/dd/yy.
*Document header
perform populate_xbbkpf using
i_splitinput-compcode
p_docdat
p_pstdat
p_doctyp
i_splitinput-currency
sum_inprec_hd_tmp-xblnr
'Test'.
append xbbkpf to dataset.
*bbseg bselk and bselp
perform populate_xbbseg .
*********forms
form populate_xbgr00 .
move '0' to xbgr00-stype.
move 'zsan' to xbgr00-group.
move sy-mandt to xbgr00-mandt.
move sy-uname to xbgr00-usnam.
move 'X' to xbgr00-xkeep.
move space to xbgr00-xkeep.
move '/' to xbgr00-nodata.
endform. " populate_xbgr00
form populate_xbbkpf using p1 p2 p3 p4 p5 p7.
move '1' to xbbkpf-stype.
move 'FB05' to xbbkpf-tcode.
move p2 to xbbkpf-bldat.
move p4 to xbbkpf-blart.
move p1 to xbbkpf-bukrs.
move p3 to xbbkpf-budat.
move '/' to xbbkpf-monat.
move p5 to xbbkpf-waers.
move '/' to xbbkpf-kursf.
move '/' to xbbkpf-belnr.
move '/' to xbbkpf-wwert.
move p6 to xbbkpf-xblnr.
move '/' to xbbkpf-bvorg.
move p7 to xbbkpf-bktxt.
move '/' to xbbkpf-pargb.
move 'UMBUCHNG' to xbbkpf-auglv.
endform.
form populate_xbbseg .
move '2' to xbbseg-stype.
move 'BBSEG' to xbbseg-tbnam.
move '15' to xbbseg-newbs.
move '100' to xbbseg-wrbtr.
move 'Assign' to xbbseg-zuonr.
move 'Itemtext' to xbbseg-sgtxt.
move I_SPLITINPUT-CLEARINGACCT to xbbseg-newko. "G/L
append xbbseg to dataset.
xbselk-stype = '2'.
xbselk-agkon = 'CUST0010'.
xbselk-agbuk = i_splitinput-compcode.
xbselk-agkoa = 'K'.
xbselk-sende = '/'.
xbselk-tbnam = 'BSELK'.
XBSELK-XNOPS = 'X'.
append xbselk to dataset.
xbselp-stype = '2'.
xbselp-feldn_1 = 'BELNR'.
xbselp-slvon_1 = i_splitinput-reference.
xbselp-slbis_1 = 'Test'.
xbselp-tbnam = 'BSELP'.
append xbselp to dataset.
endform
Edited by: abap78 on Mar 23, 2009 5:10 AM -
Guys is there a FREE and easy to use for newbie debugger ? I am not debugging windowsXP so i dont need super duper. What i am looking for is a program where i can watch it run through the code and i can stop/pause slow down watch value change etc etc basic functions. Can you guys help me out.
i got this error:
Note that JAVA_HOME is the path to the JDK, while JSWAT_HOME is the path to the jswat.jar file. The <JAVA_HOME>\lib directory must contain the tools.jar file in order for JSwat to start. This file contains the JPDA classes (com.sun.jdi) used by JSwat. If the file containing these classes is located elsewhere in your system, you must make the appropriate change to the command used to invoke JSwat.
when trying to run bat file. so i updated code and ran it , like this
java -Djava.ext.dirs=C:\Program Files\j2sdk_nb\j2sdk1.4.2\lib -jar C:\jswat-2.27\jswat-2.27\jswat.jar
ran that windo pop up then went away.
i will try again later -
Call transaction error handling
how to maintain the log i.e sucess/failures like below.
Line No. Success/ Failure Document No Error Details
1 S Doc 740000001
2 S Doc 740000002
3 F Co- code does not exist
4 F GL Account does not exist
I'm getting only one last document no: but i need all the documents to be displayed i.e either success/failures.
below is my code.
TYPES: BEGIN OF ty_filedata,
bukrs TYPE bukrs, "Company code
blart TYPE blart, "Document type
bldat TYPE char10, "Document Date
budat TYPE char10, "Posting date
xblnr TYPE xblnr, "Reference
bktxt TYPE bktxt, "Document Header text
waers TYPE waers, "Currency
newbs TYPE bschl, "Posting Key for the next line item
wrbtr TYPE char10, "Amount
zuonr LIKE bsik-zuonr, "Assignment
sgtxt TYPE sgtxt, "Text
newko TYPE hkont, "Account for the next line item
END OF ty_filedata.
TYPES: BEGIN OF ty_detail_log,
item_no TYPE i, " Item line no.
status(1) TYPE c, " Status - success/failure
doc_no TYPE bkpf-belnr," Document No.
message TYPE string, " Message
END OF ty_detail_log.
*& DATA declaration of internal tables
Internal Table declaration for excel data
DATA: it_itab TYPE STANDARD TABLE OF alsmex_tabline INITIAL SIZE 0,
Internal Table declaration for upload data
it_upload TYPE STANDARD TABLE OF ty_filedata INITIAL SIZE 0,
Internal Table Declaration for BDCDATA
it_bdcdata TYPE STANDARD TABLE OF bdcdata,
Internal Table Declaration for BDCMSGCOLL
it_bdcmsgcoll TYPE STANDARD TABLE OF bdcmsgcoll,
Internal Table Declaration for FILENMAE
lf_fname TYPE rlgrap-filename.
t_err_log TYPE STANDARD TABLE OF ty_err
INITIAL SIZE 0, " table for validation error log
t_DETAIL_LOG TYPE STANDARD TABLE OF TY_DETAIL_LOG.
C_MSGNO TYPE BDC_MNR VALUE '312',
*& DATA declaration of work area
Work Area declaration for Excel Data
DATA: w_itab TYPE alsmex_tabline,
Work Area declaration for upload data
w_upload TYPE ty_filedata,
Work Area declaration for upload data
w_upload_n TYPE ty_filedata,
Work Area declaration for upload data
w_bdcdata TYPE bdcdata,
Work Area declaration for upload data
w_bdcmsgcoll TYPE bdcmsgcoll,
w_detail_log TYPE ty_detail_log.
*& SELECTION-SCREEN
SELECTION-SCREEN: BEGIN OF BLOCK bk1 WITH FRAME TITLE text-001.
PARAMETERS:p_file TYPE rlgrap-filename. " MODIF ID G1.
SELECTION-SCREEN: END OF BLOCK bk1.
*& AT SELECTION SCREEN
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
CALL FUNCTION 'KD_GET_FILENAME_ON_F4'
EXPORTING
dynpro_number = syst-dynnr
CHANGING
file_name = p_file
EXCEPTIONS
mask_too_long = 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.
*& START-OF-SELECTION
START-OF-SELECTION.
DATA: lw_itab TYPE alsmex_tabline.
lf_fname = p_file.
CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
EXPORTING
filename = lf_fname
i_begin_col = '1'
i_begin_row = '6'
i_end_col = '12'
i_end_row = '999'
TABLES
intern = it_itab[]
EXCEPTIONS
inconsistent_parameters = 1
upload_ole = 2
OTHERS = 3.
IF sy-subrc <> 0.
*MESSAGE S205(ZF_COMMON_MSGS_FIN1) DISPLAY LIKE C_E.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ELSE.
IF it_itab IS NOT INITIAL.
SORT it_itab BY row col.
DELETE it_itab WHERE row LT 6.
LOOP AT it_itab INTO lw_itab.
w_itab = lw_itab.
AT NEW row.
CLEAR: w_upload.
ENDAT.
CASE w_itab-col.
WHEN '0001'.
w_upload-bukrs = w_itab-value.
WHEN '0002'.
w_upload-blart = w_itab-value.
WHEN '0003'.
w_upload-bldat = w_itab-value.
WHEN '0004'.
w_upload-budat = w_itab-value.
WHEN '0005'.
w_upload-xblnr = w_itab-value.
WHEN '0006'.
w_upload-bktxt = w_itab-value.
WHEN '0007'.
w_upload-waers = w_itab-value.
WHEN '0008'.
w_upload-newbs = w_itab-value.
WHEN '0009'.
w_upload-wrbtr = w_itab-value.
WHEN '0010'..
w_upload-zuonr = w_itab-value.
WHEN '0011'.
w_upload-sgtxt = w_itab-value.
WHEN '0012'.
w_upload-newko = w_itab-value.
ENDCASE.
AT END OF row.
APPEND w_upload TO it_upload.
CLEAR: w_upload.
ENDAT.
ENDLOOP.
*endif.
ENDIF.
DATA: lw_upload TYPE ty_filedata,
lv_lines TYPE sy-tabix,
lv_index TYPE sy-tabix.
DESCRIBE TABLE it_upload LINES lv_lines.
LOOP AT it_upload INTO lw_upload.
lv_index = sy-tabix.
w_upload = lw_upload.
IF NOT w_upload-bukrs IS INITIAL.
IF lv_index GT 1.
CALL TRANSACTION 'FB01' USING it_bdcdata
MODE 'N' UPDATE 'S' MESSAGES INTO it_bdcmsgcoll.
PERFORM fr_format_message_text.
REFRESH: it_bdcdata.
ENDIF.
PERFORM bdc_dynpro USING 'SAPMF05A' '0100'.
PERFORM bdc_field USING 'BDC_CURSOR'
'BKPF-XBLNR'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'BKPF-BLDAT'
w_upload-bldat.
PERFORM bdc_field USING 'BKPF-BLART'
w_upload-blart.
PERFORM bdc_field USING 'BKPF-BUKRS'
w_upload-bukrs.
PERFORM bdc_field USING 'BKPF-BUDAT'
w_upload-budat.
PERFORM bdc_field USING 'BKPF-WAERS'
w_upload-waers.
PERFORM bdc_field USING 'BKPF-XBLNR'
w_upload-xblnr.
*perform bdc_field using 'FS006-DOCID'
PERFORM bdc_field USING 'RF05A-NEWBS'
w_upload-newbs.
PERFORM bdc_field USING 'RF05A-NEWKO'
w_upload-newko.
ENDIF.
IF lv_index NE lv_lines.
lv_index = lv_index + 1.
READ TABLE it_upload INTO w_upload_n INDEX lv_index.
PERFORM bdc_dynpro USING 'SAPMF05A' '0300'.
PERFORM bdc_field USING 'BDC_CURSOR'
'BSEG-WRBTR'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'BSEG-WRBTR'
w_upload-wrbtr.
PERFORM bdc_field USING 'RF05A-NEWBS'
w_upload_n-newbs.
PERFORM bdc_field USING 'RF05A-NEWKO'
w_upload_n-newko.
ELSE.
PERFORM bdc_dynpro USING 'SAPMF05A' '0300'.
PERFORM bdc_field USING 'BDC_CURSOR'
'BSEG-WRBTR'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=BU'.
PERFORM bdc_field USING 'BSEG-WRBTR'
w_upload-wrbtr.
ENDIF.
PERFORM bdc_dynpro USING 'SAPLKACB' '0002'.
PERFORM bdc_field USING 'BDC_CURSOR'
'COBL-ANLN1'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=ENTE'.
ENDLOOP.
CALL TRANSACTION 'FB01' USING it_bdcdata
MODE 'N' UPDATE 'S' MESSAGES INTO it_bdcmsgcoll.
PERFORM fr_format_message_text .
REFRESH: it_bdcdata.
*& Form BDC_DYNPRO
FORM bdc_dynpro USING program dynpro.
CLEAR w_bdcdata.
w_bdcdata-program = program.
w_bdcdata-dynpro = dynpro.
w_bdcdata-dynbegin = 'X'.
APPEND w_bdcdata TO it_bdcdata.
ENDFORM. "BDC_DYNPRO
Insert field *
FORM bdc_field USING fnam fval.
IF fval <> space.
CLEAR w_bdcdata.
w_bdcdata-fnam = fnam.
w_bdcdata-fval = fval.
APPEND w_bdcdata TO it_bdcdata.
ENDIF.
ENDFORM. "BDC_FIELD
*& Form fr_format_message_text
FORM fr_format_message_text.
DATA: lf_msg TYPE string.
WRITE:/ sy-uline(125).
FORMAT COLOR 1 INTENSIFIED ON.
WRITE : /1 sy-vline,
2 text-041 , "'record Number',
16 sy-vline,
17 text-042 , " 'success/failure',
35 sy-vline,
36 text-043, " 'document no',
55 sy-vline,
56 text-044, "'Error details',
125 sy-vline.
WRITE:/ sy-uline(125).
LOOP AT it_bdcmsgcoll INTO w_bdcmsgcoll.
CALL FUNCTION 'FORMAT_MESSAGE'
EXPORTING
id = w_bdcmsgcoll-msgid
lang = sy-langu
no = w_bdcmsgcoll-msgnr
v1 = w_bdcmsgcoll-msgv1
v2 = w_bdcmsgcoll-msgv2
v3 = w_bdcmsgcoll-msgv3
v4 = w_bdcmsgcoll-msgv4
IMPORTING
msg = lf_msg
EXCEPTIONS
not_found = 1
OTHERS = 2.
IF sy-subrc EQ 0.
WRITE:/01 sy-vline,
02 sy-tabix,
16 sy-vline,
17 w_bdcmsgcoll-msgtyp,
35 sy-vline,
36 w_bdcmsgcoll-msgv1,
55 sy-vline,
56 lf_msg,
125 sy-vline.
WRITE:/ sy-uline(125).
ENDIF.
ENDLOOP.
ENDFORM. "fr_format_message_text
Thanks in advance.Hi Neelima,
Just put the following code within that LOOP...ENDLOOP statement.
LOOP AT it_upload INTO lw_upload.
CALL TRANSACTION 'FB01' USING it_bdcdata
MODE 'N' UPDATE 'S' MESSAGES INTO it_bdcmsgcoll.
PERFORM fr_format_message_text .
REFRESH: it_bdcdata.
ENDLOOP.
Regards,
R.Nagarajan.
We can - -
Adding Data to the database for SAP Transactions
Hi
I'm new to the whole ABAP. I would like to enquire about adding transaction data in SAP through ABAP but it must be immediate.
I know that one can use a BAPI to add data and can rollback if any problems occur.
But if no BAPI exists how does one write code to add a document to the SAP database but with everything SAP transaction requires like the BAPI. What is the process and how???
So let say I wanted to do FB01 which is SAP FI document and must be immediate. There is a BAPI that exists for it but if there was not one how would I do this???
I know one can also use BDC but that creates a batch and then needs to be executed in SM35, I want a way to add data for two or three SAP transactions, if any problems occur with any of the steps rollback everything else commit everything to the database.
Any simple detail examples (code) that satisfy the above will be greatly appreciated and REWARDED.
Thanks in advanceLuis,
i have a code exactly same BDC for FB01.
refer:
REPORT z_etching_fb01
NO STANDARD PAGE HEADING LINE-SIZE 255.
*etching invoice load
INCLUDE bdcrecx1.
TYPE-POOLS: truxs , slis.
*PARAMETERS: dataset(132) LOWER CASE DEFAULT
* 'c:\temp\etchingload.txt'.
PARAMETER: pfile LIKE rlgrap-filename." OBLIGATORY.
SELECTION-SCREEN BEGIN OF BLOCK a WITH FRAME TITLE text-001.
PARAMETER: p_kunnr LIKE kna1-kunnr OBLIGATORY, "kna1-kunnr
p_bukrs LIKE bseg-bukrs,
p_mwskz LIKE t007a-mwskz OBLIGATORY,"t007a-mwskz
p_prctr LIKE cepc-prctr OBLIGATORY,"cepc-prctr
* p_newko LIKE ska1-saknr OBLIGATORY DEFAULT 41000000,"
p_budat LIKE bkpf-budat OBLIGATORY ,
p_hkont LIKE bseg-hkont OBLIGATORY DEFAULT 41000000 ,
p_waers TYPE waers OBLIGATORY DEFAULT 'GBP'."tcurr-waers
SELECTION-SCREEN END OF BLOCK a.
SELECTION-SCREEN BEGIN OF BLOCK b WITH FRAME TITLE text-002.
PARAMETER : report AS CHECKBOX DEFAULT 'X'.
SELECTION-SCREEN END OF BLOCK b.
*** 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 ***
* ALV *
DATA: it_fieldcat TYPE slis_t_fieldcat_alv,
wa_fieldcat LIKE LINE OF it_fieldcat,
it_top_of_page TYPE slis_t_listheader,
ls_layout TYPE slis_layout_alv,
gt_events TYPE slis_t_event.
DATA: it_raw TYPE truxs_t_text_data.
DATA: BEGIN OF record,
* data element: BLDAT
bldat_001(010), "Invoice Date
* data element: BLART
blart_002(002), " Doc Type DR or DG if credit
* data element: BUKRS
bukrs_003(004), " Company Code
* data element: BUDAT
budat_004(010), "Posting Date
* data element: MONAT
monat_005(002), "period"
* data element: WAERS
waers_006(005), "Currency
* data element: XBLNR1
xblnr_007(016), "Invoice Number
* data element: BKTXT
bktxt_008(025), "PO number
* data element: SAEOBJART
docid_009(010),
* data element: NEWBS
newbs_010(002), "posting Key
* data element: NEWKO
newko_011(017), "Customer number or GL account
* data element: WRBTR
wrbtr_012(016), "Amount
* data element: DZTERM
zterm_013(004),
* data element: DZBD1T
zbd1t_014(003),
* data element: DZFBDT
zfbdt_015(010),
* data element: DZUONR
zuonr_016(018), "Invoice Number
* data element: SGTXT
sgtxt_017(050), " PO number
* data element: NEWBS
newbs_018(002),
* data element: NEWKO
newko_019(017), "GL Account
* data element: WRBTR
wrbtr_020(016), "Amount
* data element: MWSKZ
mwskz_021(002), "Tax
* data element: DZUONR
zuonr_022(018), "Invoice Number
* data element: SGTXT
sgtxt_023(050), "PO Number
* data element: PRCTR
prctr_024(010), "Profit Center
* data element: WRBTR
wrbtr_025(016), " Amount
* data element: MWSKZ
mwskz_026(002), "Tax
* data element: DZUONR
zuonr_027(018), "Invoice Number
* data element: SGTXT
sgtxt_028(050), "PO Number
* data element: FMORE
fmore_029(001),
* data element: PRCTR
prctr_030(010), "Pr Center
* data element: FWSTE
fwste_01_031(016),
END OF record.
DATA: BEGIN OF it_excel OCCURS 0,
* data element: XBLNR1
xblnr_007(016), "Invoice Number
* data element: BLDAT
bldat_001(010), "Invoice Date
* data element: WRBTR
wrbtr_012(016), "Amount
* data element: WRBTR
wrbtr_025(016), " Tax Amount
* data element: WRBTR
wrbtr_020(016), "Gross Amount
* data element: BLART
blart_002(002), " No of units
* data element: MONAT
monat_005(002), "No of units second test"
* data element: BKTXT
bktxt_008(025), "PO number
* data element: SGTXT
sgtxt_017(050), " PO number
* data element: BUKRS
bukrs_003(004), " Company Code
* data element: BUDAT
budat_004(010), "Posting Date
* budat_004 TYPE string, "Posting Date
* data element: WAERS
waers_006(005), "Currency*
* data element: NEWKO
newko_011(017), "Customer number or GL account
* data element : kunnr
kunnr_019(010), " customer
mwskz(002),
prctr(010),
date(002),
month(002),
** data element: BKTXT
* bktxt_008(025), "PO number
** data element: SAEOBJART
* docid_009(010),
** data element: NEWBS
* newbs_010(002), "posting Key
** data element: DZTERM
* zterm_013(004),
** data element: DZBD1T
* zbd1t_014(003),
** data element: DZFBDT
* zfbdt_015(010),
** data element: DZUONR
* zuonr_016(018), "Invoice Number
** data element: NEWBS
* newbs_018(002),
** data element: NEWKO
* newko_019(017), "GL Account
** data element: MWSKZ
* mwskz_021(002), "Tax
** data element: DZUONR
* zuonr_022(018), "Invoice Number
** data element: SGTXT
* sgtxt_023(050), "PO Number
** data element: PRCTR
* prctr_024(010), "Profit Center
** data element: MWSKZ
* mwskz_026(002), "Tax
** data element: DZUONR
* zuonr_027(018), "Invoice Number
** data element: SGTXT
* sgtxt_028(050), "PO Number
** data element: FMORE
* fmore_029(001),
** data element: PRCTR
* prctr_030(010), "Pr Center
** data element: FWSTE
* fwste_01_031(016),
END OF it_excel.
DATA : BEGIN OF it_bkpf OCCURS 0,
belnr LIKE bkpf-belnr,
budat LIKE bkpf-budat,
bldat LIKE bkpf-bldat,
xblnr LIKE bkpf-xblnr,
bktxt LIKE bkpf-bktxt,
total LIKE bseg-dmbtr,
numdocs TYPE p DECIMALS 0,
END OF it_bkpf,
BEGIN OF it_bseg OCCURS 0,
belnr LIKE bseg-belnr,
dmbtr LIKE bseg-dmbtr,
mwsts LIKE bseg-mwsts,
pswsl LIKE bseg-pswsl,
END OF it_bseg,
BEGIN OF it_final OCCURS 0,
belnr LIKE bkpf-belnr,
budat LIKE bkpf-budat,
bldat LIKE bkpf-bldat,
xblnr LIKE bkpf-xblnr,
bktxt LIKE bkpf-bktxt,
dmbtr LIKE bseg-dmbtr,
mwsts LIKE bseg-mwsts,
pswsl LIKE bseg-pswsl,
END OF it_final.
***** End generated data section ***
AT SELECTION-SCREEN ON VALUE-REQUEST FOR pfile.
PERFORM sub_browse_file. "Get file name
START-OF-SELECTION.
PERFORM sub_data_load. " Transfer excel into internal table.
PERFORM sub_calc_excel.
IF report = 'X'.
* PERFORM data_selection.
* PERFORM data_move.
*********************************GET ALV DATA
PERFORM alv_get_data.
*********************************ALV GRID DATA
PERFORM alv_grid.
ENDIF.
*if report = ''.
* PERFORM write.
* PERFORM open_dataset USING dataset.
PERFORM open_group.
* DO.
* READ DATASET dataset INTO record.
LOOP AT it_excel.
* IF sy-subrc <> 0. EXIT. ENDIF.
PERFORM bdc_dynpro USING 'SAPMF05A' '0100'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RF05A-NEWKO'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'BKPF-BLDAT'
it_excel-bldat_001.
PERFORM bdc_field USING 'BKPF-BLART'
'DR'." record-blart_002.
PERFORM bdc_field USING 'BKPF-BUKRS'
it_excel-bukrs_003.
PERFORM bdc_field USING 'BKPF-BUDAT'
it_excel-budat_004.
PERFORM bdc_field USING 'BKPF-MONAT'
'3'. "record-monat_005.
PERFORM bdc_field USING 'BKPF-WAERS'
it_excel-waers_006.
PERFORM bdc_field USING 'BKPF-XBLNR'
it_excel-xblnr_007.
PERFORM bdc_field USING 'BKPF-BKTXT'
it_excel-bktxt_008.
PERFORM bdc_field USING 'FS006-DOCID'
'*' ."record-docid_009.
PERFORM bdc_field USING 'RF05A-NEWBS'
'01'." record-newbs_010.
PERFORM bdc_field USING 'RF05A-NEWKO'
it_excel-kunnr_019 .
PERFORM bdc_dynpro USING 'SAPMF05A' '0301'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RF05A-NEWKO'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'BSEG-WRBTR'
it_excel-wrbtr_020." it_excel-wrbtr_012.
PERFORM bdc_field USING 'BSEG-ZTERM'
'NT30' ." record-zterm_013.
PERFORM bdc_field USING 'BSEG-ZBD1T'
'30'."record-zbd1t_014.
PERFORM bdc_field USING 'BSEG-ZFBDT'
it_excel-bldat_001."record-zfbdt_015.
PERFORM bdc_field USING 'BSEG-ZUONR'
it_excel-xblnr_007."record-zuonr_016.
PERFORM bdc_field USING 'BSEG-SGTXT'
it_excel-sgtxt_017.
PERFORM bdc_field USING 'RF05A-NEWBS'
'50'." record-newbs_018.
PERFORM bdc_field USING 'RF05A-NEWKO'
it_excel-newko_011." record-newko_019."Gl account
PERFORM bdc_dynpro USING 'SAPMF05A' '0300'.
PERFORM bdc_field USING 'BDC_CURSOR'
'BSEG-SGTXT'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'BSEG-WRBTR'
it_excel-wrbtr_012."changes from 12 to 20
PERFORM bdc_field USING 'BSEG-MWSKZ'
it_excel-mwskz." record-mwskz_021.
PERFORM bdc_field USING 'BSEG-ZUONR'
it_excel-xblnr_007." record-zuonr_022.
PERFORM bdc_field USING 'BSEG-SGTXT'
it_excel-sgtxt_017." record-sgtxt_023.
PERFORM bdc_dynpro USING 'SAPLKACB' '0002'.
PERFORM bdc_field USING 'BDC_CURSOR'
'COBL-PRCTR'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=ENTE'.
PERFORM bdc_field USING 'COBL-PRCTR'
it_excel-prctr ." record-prctr_024.
PERFORM bdc_dynpro USING 'SAPMF05A' '0300'.
PERFORM bdc_field USING 'BDC_CURSOR'
'BSEG-WRBTR'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=STER'.
PERFORM bdc_field USING 'BSEG-WRBTR'
it_excel-wrbtr_012." it_excel-wrbtr_025.
PERFORM bdc_field USING 'BSEG-MWSKZ'
it_excel-mwskz.
PERFORM bdc_field USING 'BSEG-ZUONR'
it_excel-xblnr_007." record-zuonr_027.
PERFORM bdc_field USING 'BSEG-SGTXT'
it_excel-sgtxt_017." record-sgtxt_028.
PERFORM bdc_field USING 'DKACB-FMORE'
'X' ."record-fmore_029.
PERFORM bdc_dynpro USING 'SAPLKACB' '0002'.
PERFORM bdc_field USING 'BDC_CURSOR'
'COBL-PARGB'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=ENTE'.
PERFORM bdc_field USING 'COBL-PRCTR'
it_excel-prctr." record-prctr_030.
PERFORM bdc_dynpro USING 'SAPLTAX1' '0300'.
PERFORM bdc_field USING 'BDC_CURSOR'
'BSET-FWSTE(01)'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=GOBU'.
PERFORM bdc_field USING 'BSET-FWSTE(01)'
it_excel-wrbtr_025." record-fwste_01_031.
PERFORM bdc_transaction USING 'FB01'.
REFRESH:bdcdata,messtab.
ENDLOOP.
REFRESH:bdcdata.
** PERFORM bdc_dynpro USING 'SAPMF05A' '0100'.
* PERFORM bdc_field USING 'BDC_CURSOR'
* 'RF05A-NEWKO'.
* PERFORM bdc_field USING 'BDC_OKCODE'
* '/00'.
* PERFORM bdc_field USING 'BKPF-BLDAT'
* record-bldat_001.
* PERFORM bdc_field USING 'BKPF-BLART'
* record-blart_002.
* PERFORM bdc_field USING 'BKPF-BUKRS'
* record-bukrs_003.
* PERFORM bdc_field USING 'BKPF-BUDAT'
* record-budat_004.
* PERFORM bdc_field USING 'BKPF-MONAT'
* record-monat_005.
* PERFORM bdc_field USING 'BKPF-WAERS'
* record-waers_006.
* PERFORM bdc_field USING 'BKPF-XBLNR'
* record-xblnr_007.
* PERFORM bdc_field USING 'BKPF-BKTXT'
* record-bktxt_008.
* PERFORM bdc_field USING 'FS006-DOCID'
* record-docid_009.
* PERFORM bdc_field USING 'RF05A-NEWBS'
* record-newbs_010.
* PERFORM bdc_field USING 'RF05A-NEWKO'
* record-newko_011.
* PERFORM bdc_dynpro USING 'SAPMF05A' '0301'.
* PERFORM bdc_field USING 'BDC_CURSOR'
* 'RF05A-NEWKO'.
* PERFORM bdc_field USING 'BDC_OKCODE'
* '/00'.
* PERFORM bdc_field USING 'BSEG-WRBTR'
* record-wrbtr_012.
* PERFORM bdc_field USING 'BSEG-ZTERM'
* record-zterm_013.
* PERFORM bdc_field USING 'BSEG-ZBD1T'
* record-zbd1t_014.
* PERFORM bdc_field USING 'BSEG-ZFBDT'
* record-zfbdt_015.
* PERFORM bdc_field USING 'BSEG-ZUONR'
* record-zuonr_016.
* PERFORM bdc_field USING 'BSEG-SGTXT'
* record-sgtxt_017.
* PERFORM bdc_field USING 'RF05A-NEWBS'
* record-newbs_018.
* PERFORM bdc_field USING 'RF05A-NEWKO'
* record-newko_019.
* PERFORM bdc_dynpro USING 'SAPMF05A' '0300'.
* PERFORM bdc_field USING 'BDC_CURSOR'
* 'BSEG-SGTXT'.
* PERFORM bdc_field USING 'BDC_OKCODE'
* '/00'.
* PERFORM bdc_field USING 'BSEG-WRBTR'
* record-wrbtr_020.
* PERFORM bdc_field USING 'BSEG-MWSKZ'
* record-mwskz_021.
* PERFORM bdc_field USING 'BSEG-ZUONR'
* record-zuonr_022.
* PERFORM bdc_field USING 'BSEG-SGTXT'
* record-sgtxt_023.
* PERFORM bdc_dynpro USING 'SAPLKACB' '0002'.
* PERFORM bdc_field USING 'BDC_CURSOR'
* 'COBL-PRCTR'.
* PERFORM bdc_field USING 'BDC_OKCODE'
* '=ENTE'.
* PERFORM bdc_field USING 'COBL-PRCTR'
* record-prctr_024.
* PERFORM bdc_dynpro USING 'SAPMF05A' '0300'.
* PERFORM bdc_field USING 'BDC_CURSOR'
* 'BSEG-WRBTR'.
* PERFORM bdc_field USING 'BDC_OKCODE'
* '=STER'.
* PERFORM bdc_field USING 'BSEG-WRBTR'
* record-wrbtr_025.
* PERFORM bdc_field USING 'BSEG-MWSKZ'
* record-mwskz_026.
* PERFORM bdc_field USING 'BSEG-ZUONR'
* record-zuonr_027.
* PERFORM bdc_field USING 'BSEG-SGTXT'
* record-sgtxt_028.
* PERFORM bdc_field USING 'DKACB-FMORE'
* record-fmore_029.
* PERFORM bdc_dynpro USING 'SAPLKACB' '0002'.
* PERFORM bdc_field USING 'BDC_CURSOR'
* 'COBL-PARGB'.
* PERFORM bdc_field USING 'BDC_OKCODE'
* '=ENTE'.
* PERFORM bdc_field USING 'COBL-PRCTR'
* record-prctr_030.
* PERFORM bdc_dynpro USING 'SAPLTAX1' '0300'.
* PERFORM bdc_field USING 'BDC_CURSOR'
* 'BSET-FWSTE(01)'.
* PERFORM bdc_field USING 'BDC_OKCODE'
* '=GOBU'.
* PERFORM bdc_field USING 'BSET-FWSTE(01)'
* record-fwste_01_031.
* PERFORM bdc_transaction USING 'FB01'.
* ENDDO.
PERFORM close_group.
* PERFORM close_dataset USING dataset.
*endif.
*& Form sub_browse_file
* text
* --> p1 text
* <-- p2 text
FORM sub_browse_file .
CALL FUNCTION 'F4_FILENAME'
EXPORTING
program_name = syst-cprog
dynpro_number = syst-dynnr
* FIELD_NAME = ' '
IMPORTING
file_name = pfile.
ENDFORM. " sub_browse_file
*& Form sub_data_load
* text
* --> p1 text
* <-- p2 text
FORM sub_data_load .
CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'
EXPORTING
* I_FIELD_SEPERATOR =
i_line_header = 'X'
i_tab_raw_data = it_raw
i_filename = pfile
TABLES
i_tab_converted_data = it_excel[]
* 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. " sub_data_load
**& Form data_selection
** text
** --> p1 text
** <-- p2 text
*FORM data_selection .
* SELECT * FROM bkpf
* INTO CORRESPONDING FIELDS OF TABLE it_bkpf
* WHERE budat = p_budat AND
* bukrs = p_bukrs.
* IF NOT it_bkpf[] IS INITIAL.
* SELECT belnr dmbtr mwsts pswsl
* FROM bseg INTO TABLE it_bseg
* FOR ALL ENTRIES IN it_bkpf
* WHERE belnr = it_bkpf-belnr AND
* kunnr = p_kunnr AND
* hkont = p_hkont AND
* pswsl = p_waers.
* ENDIF.
*ENDFORM. " data_selection
**& Form data_move
** text
** --> p1 text
** <-- p2 text
*FORM data_move.
* SORT : it_bseg BY belnr,
* it_bkpf BY belnr.
* LOOP AT it_bseg.
* it_final-dmbtr = it_bseg-dmbtr.
* it_final-belnr = it_bseg-belnr.
* it_final-mwsts = it_bseg-mwsts.
* it_final-pswsl = it_bseg-pswsl.
* READ TABLE it_bkpf WITH KEY belnr = it_bseg-belnr BINARY SEARCH.
* IF sy-subrc = 0.
* it_final-budat = it_bkpf-budat.
* it_final-bldat = it_bkpf-bldat.
* it_final-xblnr = it_bkpf-xblnr.
* it_final-bktxt = it_bkpf-bktxt.
* ENDIF.
* APPEND it_final.
* CLEAR it_final.
* ENDLOOP.
*ENDFORM. " data_move
*& Form alv_get_data
* text
* --> p1 text
* <-- p2 text
FORM alv_get_data .
CLEAR it_fieldcat.
***************** Document number
* wa_fieldcat-col_pos = '1'. " ALV O/P COL-1
wa_fieldcat-fieldname = 'XBLNR_007'.
wa_fieldcat-seltext_m = 'Document number'.
wa_fieldcat-just = 'L'.
wa_fieldcat-no_zero(1) = 'X'.
wa_fieldcat-outputlen = 15.
wa_fieldcat-tabname = 'IT_EXCEL'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
***************** Posting Date
* wa_fieldcat-col_pos = '2'. " ALV O/P COL-1
wa_fieldcat-fieldname = 'BUDAT_004'.
wa_fieldcat-seltext_m = 'Posting Date'.
wa_fieldcat-just = 'L'.
wa_fieldcat-no_zero(1) = 'X'.
wa_fieldcat-outputlen = 20.
wa_fieldcat-tabname = 'IT_EXCEL'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
******************** Document Date
* wa_fieldcat-col_pos = '3'. " ALV O/P COL-2
wa_fieldcat-fieldname = 'BLDAT_001'.
wa_fieldcat-seltext_m = 'Document Date'.
wa_fieldcat-just = 'L'.
wa_fieldcat-tabname = 'IT_EXCEL'.
wa_fieldcat-outputlen = 15.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
********************* REFERENCE DOCUMENT
** wa_fieldcat-col_pos = '4'. " ALV O/P COL-2
* wa_fieldcat-fieldname = 'XBLNR'.
* wa_fieldcat-seltext_m = 'REFERENCE DOCUMENT'.
* wa_fieldcat-just = 'L'.
* wa_fieldcat-tabname = 'IT_EXCEL'.
** wa_fieldcat-outputlen = 15.
* APPEND wa_fieldcat TO it_fieldcat.
* CLEAR wa_fieldcat.
***************** DOCUMENT HEADER TEXT
* wa_fieldcat-col_pos = '5'. " ALV O/P COL-3
wa_fieldcat-fieldname = 'SGTXT_017'.
wa_fieldcat-seltext_m = 'DOCUMENT HEADER TEXT'.
wa_fieldcat-just = 'L'.
wa_fieldcat-tabname = 'IT_EXCEL'.
* wa_fieldcat-outputlen = 15.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
*******************Invoice Net amount
* wa_fieldcat-col_pos = '6'. " ALV O/P COL-4
wa_fieldcat-fieldname = 'WRBTR_012'.
wa_fieldcat-seltext_m = 'Invoice Net amount'.
wa_fieldcat-just = 'L'.
wa_fieldcat-tabname = 'IT_EXCEL'.
* wa_fieldcat-outputlen = 15.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
*********** Tax Amount
* wa_fieldcat-col_pos = '7'. " ALV O/P COL-5
wa_fieldcat-fieldname = 'WRBTR_025'.
wa_fieldcat-seltext_m = 'Tax Amount'.
wa_fieldcat-just = 'L'.
* wa_fieldcat-no_zero(1) = 'X'.
wa_fieldcat-tabname = 'IT_EXCEL'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
*********** NEt Amount
* wa_fieldcat-col_pos = '7'. " ALV O/P COL-5
wa_fieldcat-fieldname = 'WRBTR_020'.
wa_fieldcat-seltext_m = 'Net Amount'.
wa_fieldcat-just = 'L'.
* wa_fieldcat-no_zero(1) = 'X'.
wa_fieldcat-tabname = 'IT_EXCEL'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
*********** General ledger currency
* wa_fieldcat-col_pos = '7'. " ALV O/P COL-5
wa_fieldcat-fieldname = 'WAERS_006'.
wa_fieldcat-seltext_l = 'General ledger currency'.
wa_fieldcat-just = 'L'.
* wa_fieldcat-no_zero(1) = 'X'.
wa_fieldcat-outputlen = 25.
wa_fieldcat-tabname = 'IT_EXCEL'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
ENDFORM. " alv_get_data
*& Form alv_grid
* text
* --> p1 text
* <-- p2 text
FORM alv_grid .
* PERFORM fill_list_header USING it_top_of_page[].
* PERFORM event-build USING gt_events[].
PERFORM fill_layout USING ls_layout.
MESSAGE 'Please press F3 to generate a session or call transaction method after getting report!' TYPE 'I'.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy-repid
is_layout = ls_layout
it_fieldcat = it_fieldcat
it_events = gt_events[]
i_save = 'A'
TABLES
t_outtab = it_excel
EXCEPTIONS
program_error = 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. " alv_grid
* FORM FILL_LAYOUT *
FORM fill_layout USING p_ls_layout TYPE slis_layout_alv.
p_ls_layout-zebra = 'X'.
p_ls_layout-cell_merge = 'X'.
ENDFORM. "fill_layout
*& Form sub_calc_excel
* text
* --> p1 text
* <-- p2 text
FORM sub_calc_excel .
data: idate TYPE sy-datum,
tdat8 type string.
LOOP AT it_excel.
CONCATENATE it_excel-blart_002 '/' it_excel-monat_005 '/' it_excel-bktxt_008 INTO
it_excel-sgtxt_017.
it_excel-bukrs_003 = p_bukrs.
* it_excel-budat_004 = p_budat.
it_excel-waers_006 = p_waers.
it_excel-newko_011 = p_hkont.
it_excel-kunnr_019 = p_kunnr.
it_excel-mwskz = p_mwskz.
it_excel-prctr = p_prctr.
idate = p_budat.
CALL FUNCTION 'DATUMSAUFBEREITUNG'
EXPORTING
* FLAGM = ' '
* FLAGW = ' '
IDATE = idate
* IMONT = ' '
* IWEEK = ' '
IMPORTING
* MDAT4 =
* MDAT6 =
* TDAT4 =
* TDAT6 =
TDAT8 = tdat8
* WDAT4 =
* WDAT6 =
* EXCEPTIONS
* DATFM_UNGUELTIG = 1
* DATUM_UNGUELTIG = 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.
it_excel-budat_004 = tdat8.
* CONCATENATE it_excel-budat_004+4(2) '/' it_excel-budat_004+6(2) '/' it_excel-budat_004+0(4)
* INTO it_excel-budat_004.
* SPLIT it_excel-bldat_001 AT '/' INTO it_excel-month it_excel-date.
* CONCATENATE it_excel-date '.' it_excel-month '.' it_excel-bldat_001+6(4) INTO it_excel-bldat_001.
MODIFY it_excel.
CLEAR it_excel.
ENDLOOP.
ENDFORM. " sub_calc_excel
*& Form write
* text
* --> p1 text
* <-- p2 text
*form write .
*OPEN DATASET dataset FOR OUTPUT IN TEXT MODE ENCODING DEFAULT.
*data: wa_excel like line of it_excel.
*loop at it_excel into wa_excel.
*TRANSFER wa_excel to dataset.
*endloop.
*CLOSE DATASETdataset.
*endform. " write -
hi,
i am create a programm for f-27 type DG by bdc session method
when i execute it on 3rd screen of execution it ask for the values for PAYMENT TERMS but in manual entry OF F-27 it does not TAKE ANY PAYMENT TERMS. plz check my code and tell me where is the problem in coding.
CODES:
REPORT zcrdtdgupld
NO STANDARD PAGE HEADING LINE-SIZE 255.
*INCLUDE zdata_declarations.
I N T E R N A L T A B L E *
DATA: BEGIN OF wa_data,
bldat TYPE BDC_FVAL, "Document Date10
blart TYPE BDC_FVAL, "Document Type
bukrs TYPE BDC_FVAL, "Company Code
budat TYPE BDC_FVAL, "Posting Date10
monat TYPE BDC_FVAL, "Period
waers TYPE BDC_FVAL, "Currency
xblnr TYPE BDC_FVAL, "Reference Field
docid TYPE BDC_FVAL, "Document ID
newbs TYPE BDC_FVAL, "Posting Key
newko TYPE BDC_FVAL, "Account Code
wrbtr TYPE BDC_FVAL, "Amount in Documentcurrency
zfbdt TYPE BDC_FVAL, "Baseline Date10
newbs2 TYPE BDC_FVAL, "Account Key2
newko2 TYPE BDC_FVAL, "Account code2
wrbtr2 TYPE BDC_FVAL, "bseg-wrbtr,"Amount2
kostl TYPE BDC_FVAL, " cost center
prctr TYPE BDC_FVAL, " profit center
END OF wa_data.
D A T A *
DATA: it_data LIKE TABLE OF wa_data.
DATA: it_bdcdata TYPE TABLE OF bdcdata.
DATA: wa_bdcdata LIKE LINE OF it_bdcdata.
DATA: v_file TYPE string.
S E L E C T I O N S C R E E N *
SELECTION-SCREEN BEGIN OF BLOCK b.
PARAMETERS : pa_file LIKE fc03tab-pl00_file OBLIGATORY.
SELECTION-SCREEN END OF BLOCK b.
AT SELECTION-SCREEN *
AT SELECTION-SCREEN ON VALUE-REQUEST FOR pa_file.
PERFORM get_file USING pa_file.
S T A R T O F S E L E C T I O N *
START-OF-SELECTION.
v_file = pa_file.
*uploading flat file into internal table
PERFORM upload_file USING v_file CHANGING it_data.
*open the session
PERFORM open_session.
*POPULATING THE BDCDATA
LOOP AT it_data INTO wa_data.
REFRESH it_bdcdata.
PERFORM bdc_dynpro USING 'SAPMF05A' '0100' 'X'.
PERFORM bdc_field USING 'BDC_CURSOR' 'RF05A-NEWKO'.
PERFORM bdc_field USING 'BDC_OKCODE' '/00'.
PERFORM bdc_field USING 'BKPF-BLDAT' wa_data-bldat.
PERFORM bdc_field USING 'BKPF-BLART' wa_data-blart.
PERFORM bdc_field USING 'BKPF-BUKRS' wa_data-bukrs.
PERFORM bdc_field USING 'BKPF-BUDAT' wa_data-budat.
PERFORM bdc_field USING 'BKPF-MONAT' wa_data-monat.
PERFORM bdc_field USING 'BKPF-WAERS' wa_data-waers.
PERFORM bdc_field USING 'BKPF-XBLNR' wa_data-xblnr.
PERFORM bdc_field USING 'FS006-DOCID' wa_data-docid.
PERFORM bdc_field USING 'RF05A-NEWBS' wa_data-newbs.
PERFORM bdc_field USING 'RF05A-NEWKO' wa_data-newko.
PERFORM bdc_dynpro USING 'SAPMF05A' '0301' 'X'.
PERFORM bdc_field USING 'BDC_CURSOR' 'BSEG-WRBTR'.
PERFORM bdc_field USING 'BDC_OKCODE' '/00'.
PERFORM bdc_field USING 'BSEG-WRBTR' wa_data-wrbtr.
PERFORM bdc_field USING 'BSEG-ZFBDT' wa_data-zfbdt.
PERFORM bdc_field USING 'RF05A-NEWBS' wa_data-newbs2.
PERFORM bdc_field USING 'RF05A-NEWKO' wa_data-newko2.
PERFORM bdc_dynpro USING 'SAPMF05A' '0300' 'X'.
PERFORM bdc_field USING 'BDC_CURSOR' 'BSEG-WRBTR'.
PERFORM bdc_field USING 'BDC_OKCODE' '=BU'.
PERFORM bdc_field USING 'BSEG-WRBTR' wa_data-wrbtr2.
PERFORM bdc_dynpro USING 'SAPLKACB' '0002' 'X'.
PERFORM bdc_field USING 'BDC_CURSOR' 'COBL-PRCTR'.
PERFORM bdc_field USING 'BDC_OKCODE' '=ENTE'.
PERFORM bdc_field USING 'COBL-KOSTL' wa_data-kostl. "'101902'
PERFORM bdc_field USING 'COBL-PRCTR' wa_data-prctr.
PERFORM bdc_insert USING 'F-27' it_bdcdata.
ENDLOOP.
*close the session
PERFORM close_session.
*& Form get_file
text
-->P_PA_FILE text
FORM get_file USING p_pa_file.
CALL FUNCTION 'KD_GET_FILENAME_ON_F4'
EXPORTING
program_name = syst-repid
field_name = 'PA_FILE'
CHANGING
file_name = pa_file.
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. " get_file
*& Form upload_file
text
-->P_V_FILE text
<--P_IT_DATA text
FORM upload_file USING p_v_file
CHANGING p_it_data LIKE it_data.
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
filename = p_v_file
filetype = 'DAT'
has_field_separator = '#'
TABLES
data_tab = p_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.
ENDFORM. " upload_file
*& Form open_session
text
--> p1 text
<-- p2 text
FORM open_session .
CALL FUNCTION 'BDC_OPEN_GROUP'
EXPORTING
client = sy-mandt
DEST = FILLER8
group = 'JAYANT'
HOLDDATE = FILLER8
keep = 'X'
user = sy-uname.
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. " open_session
*& Form bdc_dynpro
text
-->P_0043 text
-->P_0044 text
FORM bdc_dynpro USING program TYPE BDC_PROG
dynpro TYPE BDC_DYNR
dynbegin TYPE BDC_START.
wa_bdcdata-program = program.
wa_bdcdata-dynpro = dynpro.
wa_bdcdata-dynbegin = dynbegin.
APPEND wa_bdcdata TO it_bdcdata.
CLEAR wa_bdcdata.
ENDFORM. " bdc_dynpro
*& Form bdc_field
text
-->P_0048 text
-->P_0049 text
FORM bdc_field USING fnam TYPE FNAM_____4
fval TYPE BDC_FVAL.
wa_bdcdata-fnam = fnam.
wa_bdcdata-fval = fval.
APPEND wa_bdcdata TO it_bdcdata.
CLEAR wa_bdcdata.
ENDFORM. " bdc_field
*& Form bdc_insert
text
-->P_0183 text
-->P_IT_BDCDATA text
FORM bdc_insert USING p_tcode TYPE sytcode
p_it_bdcdata LIKE it_bdcdata.
CALL FUNCTION 'BDC_INSERT'
EXPORTING
tcode = p_tcode
TABLES
dynprotab = p_it_bdcdata.
ENDFORM. " bdc_insert
*& Form close_session
text
--> p1 text
<-- p2 text
FORM close_session .
CALL FUNCTION 'BDC_CLOSE_GROUP'.
ENDFORM. "close_session
plz help me in this programm
thanks
jayant.why not post this in the ABAP forum?
You expect Basis people to help you on this one? -
hi gurus,
i have a problem in bdc programm there is 3 screen using transaction f-27
there is two amount field as(wrbtr,wrbtr2)
two screen are run fine but the 3 screen does't take data automatically from flat file plz help me its urgent see my codes and give me solution.
TYPES: BEGIN OF it_output,
bldat(10) TYPE C, "Document Date
blart TYPE bkpf-blart, "Document Type
bukrs TYPE bkpf-bukrs, "Company Code
budat(10) TYPE C, "Posting Date
monat TYPE bkpf-monat, "Period
waers TYPE bkpf-waers, "Currency
xblnr TYPE bkpf-xblnr, "Reference Field
docid TYPE fs006-docid, "Document ID
newbs TYPE rf05a-newbs, "Posting Key
newko TYPE rf05a-newko, "Account Code
wrbtr(16) TYPE C, "Amount in Document currency
zfbdt(10) TYPE C, "Baseline Date
newbs2 TYPE rf05a-newbs, "Account Key2
newko2 TYPE rf05a-newko, "Account code2
wrbtr2(16) TYPE C, "Amount2
END OF it_output.
DATA lt_output TYPE it_output OCCURS 0 WITH HEADER LINE.
DATA it_bdc LIKE bdcdata OCCURS 0 WITH HEADER LINE.
DATA it_messtab LIKE bdcmsgcoll OCCURS 1 WITH HEADER LINE.
D A T A *
DATA: message TYPE string.
DATA: p_file1 type string.
S E L E C T - O P T I O N S / P A R A M E T E R S *
SELECTION-SCREEN BEGIN OF BLOCK block0 WITH FRAME.
PARAMETERS : p_file LIKE rlgrap-filename OBLIGATORY.
SELECTION-SCREEN END OF BLOCK block0.
A T S E L E C T I O N - S C R E E N *
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
CALL FUNCTION 'KD_GET_FILENAME_ON_F4'
EXPORTING
static = 'X'
mask = space
CHANGING
file_name = p_file.
S T A R T - O F - S E L E C T I O N
START-OF-SELECTION.
PERFORM upload.
PERFORM bdc.
PERFORM write_message.
*& Form bdc
text
FORM bdc.
LOOP AT lt_output.
READ TABLE lt_output INDEX 1.
PERFORM bdc_dynpro USING 'SAPMF05A' '0100'.
PERFORM bdc_field USING 'BDC_CURSOR' 'RF05A-NEWKO'.
PERFORM bdc_field USING 'BDC_OKCODE' '/00'.
PERFORM bdc_field USING 'BKPF-BLDAT' lt_output-bldat.
PERFORM bdc_field USING 'BKPF-BLART' lt_output-blart.
PERFORM bdc_field USING 'BKPF-BUKRS' lt_output-bukrs.
PERFORM bdc_field USING 'BKPF-BUDAT' lt_output-budat.
PERFORM bdc_field USING 'BKPF-MONAT' lt_output-monat.
PERFORM bdc_field USING 'BKPF-WAERS' lt_output-waers.
PERFORM bdc_field USING 'BKPF-XBLNR' lt_output-xblnr.
PERFORM bdc_field USING 'FS006-DOCID' lt_output-docid.
PERFORM bdc_field USING 'RF05A-NEWBS' lt_output-newbs.
PERFORM bdc_field USING 'RF05A-NEWKO' lt_output-newko.
PERFORM bdc_dynpro USING 'SAPMF05A' '0302'.
PERFORM bdc_field USING 'BDC_CURSOR' 'RF05A-NEWKO'.
PERFORM bdc_field USING 'BDC_OKCODE' '/00'.
PERFORM bdc_field USING 'BSEG-WRBTR' lt_output-wrbtr.
PERFORM bdc_field USING 'BSEG-ZFBDT' lt_output-zfbdt.
PERFORM bdc_field USING 'RF05A-NEWBS' lt_output-newbs2."newbs2
PERFORM bdc_field USING 'RF05A-NEWKO' lt_output-newko2."newko2
PERFORM bdc_dynpro USING 'SAPMF05A' '0301'.
PERFORM bdc_field USING 'BDC_CURSOR' 'BSEG-WRBTR'.
PERFORM bdc_field USING 'BDC_OKCODE' '=BU'.
PERFORM bdc_field USING 'BSEG-WRBTR' lt_output-wrbtr2."wrbtr2
PERFORM bdc_field USING 'BSEG-MWSKZ' '**'.
PERFORM bdc_field USING 'BSEG-ZTERM' 'C007'.
PERFORM bdc_field USING 'BSEG-ZBD1T' '7'.
CALL TRANSACTION 'F-27' USING it_bdc mode 'A'
MESSAGES INTO it_messtab.
CLEAR it_bdc. REFRESH it_bdc.
ENDLOOP.
ENDFORM. "bdc
*& Form write_message
text
FORM write_message.
LOOP AT it_messtab .
CLEAR message.
CALL FUNCTION 'FORMAT_MESSAGE'
EXPORTING
id = sy-msgid
lang = 'EN'
no = sy-msgno
v1 = sy-msgv1
v2 = sy-msgv2
v3 = sy-msgv3
v4 = sy-msgv4
IMPORTING
msg = message.
CASE it_messtab-msgtyp.
WHEN 'S'.
WRITE:/ message.
CLEAR message.
WHEN 'E'.
FORMAT COLOR 6 ON.
WRITE:/ message.
CLEAR message.
ENDCASE.
ENDLOOP.
ENDFORM. "write_message
FORM BDC_DYNPRO *
--> PROGRAM *
--> DYNPRO *
FORM bdc_dynpro USING program dynpro.
it_bdc-program = program.
it_bdc-dynpro = dynpro.
it_bdc-dynbegin = 'X'.
APPEND it_bdc.
CLEAR it_bdc.
ENDFORM. "BDC_DYNPRO
FORM *
FORM bdc_field USING fnam fval.
it_bdc-fnam = fnam.
it_bdc-fval = fval.
APPEND it_bdc.
CLEAR it_bdc.
ENDFORM. "BDC_FIELD
*& Form upload
text
--> p1 text
<-- p2 text
FORM upload .
p_file1 = p_file.
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
filename = p_file1
FILETYPE = 'DAT'
tables
data_tab = lt_output
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.
ENDFORM. " upload
i am also send u my flat file the client says that in amount filed of 3rd screen we will give the * asterick or other amount plz take it.
thank
plz help me.
jay
Edited by: jayant kumar on Apr 30, 2008 12:42 PMhi jayant,
Declare '**' as a character constant and pass this constant to the Subroutine.
data : c_astrick type char2 value '**'.
PERFORM bdc_field USING 'BSEG-MWSKZ c_astrick.
Reward points if it is helpful.
Regards,
srilatha. -
Dear Friends,
Do anybody has the code for BDC for Transaction Code F-02.
If anybody has plz send me.
Thanks & Reg,
Nishanttry this:
REPORT zfir_f02
NO STANDARD PAGE HEADING LINE-SIZE 255.
INCLUDE bdcrecx1.
TYPES : BEGIN OF tp_flatfile,
bldat(10),
doctyp(2),
comp(4),
postdate(10),
period(2),
currency(5),
reference(16),
htext(25),
postkey(2),
account(17),
amount(16),
profit(10),
assign(18),
text(50),
busarea(4),
cost(10),
bline(10),
base(16),
postkey2(2),
account2(17),
amount2(16),
profit2(10),
assign2(18),
text2(50),
busarea2(4),
END OF tp_flatfile.
DATA : t_flatfile TYPE TABLE OF tp_flatfile WITH HEADER LINE.
DATA : g_file TYPE string.
CLASS cl_abap_char_utilities DEFINITION LOAD.
CONSTANTS:con_tab TYPE c VALUE cl_abap_char_utilities=>horizontal_tab.
SELECTION-SCREEN BEGIN OF BLOCK blk1 WITH FRAME.
PARAMETERS : p_file LIKE rlgrap-filename OBLIGATORY.
SELECTION-SCREEN END OF BLOCK blk1.
*C-- Selection Screen VALUE-REQUEST FOR File path
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
CALL FUNCTION 'F4_FILENAME'
EXPORTING
program_name = syst-cprog
dynpro_number = syst-dynnr
IMPORTING
file_name = p_file.
g_file = p_file.
*START-OF-SELECTION.
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
filename = g_file
filetype = 'ASC'
has_field_separator = 'X'
TABLES
data_tab = t_flatfile
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.
loop at t_flatfile.
write:/ t_flatfile-doctyp,t_flatfile-amount.
endloop.
START-OF-SELECTION.
PERFORM open_group.
LOOP AT t_flatfile.
PERFORM bdc_dynpro USING 'SAPMF05A' '0100'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RF05A-NEWKO'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'BKPF-BLDAT'
t_flatfile-bldat.
PERFORM bdc_field USING 'BKPF-BLART'
t_flatfile-doctyp.
PERFORM bdc_field USING 'BKPF-BUKRS'
t_flatfile-comp.
PERFORM bdc_field USING 'BKPF-BUDAT'
t_flatfile-postdate.
PERFORM bdc_field USING 'BKPF-MONAT'
t_flatfile-period.
PERFORM bdc_field USING 'BKPF-WAERS'
t_flatfile-currency.
PERFORM bdc_field USING 'BKPF-XBLNR'
t_flatfile-reference.
PERFORM bdc_field USING 'BKPF-BKTXT'
t_flatfile-htext.
PERFORM bdc_field USING 'FS006-DOCID'
PERFORM bdc_field USING 'RF05A-NEWBS'
t_flatfile-postkey.
PERFORM bdc_field USING 'RF05A-NEWKO'
t_flatfile-account.
CASE t_flatfile-postkey.
WHEN '40' OR '50'.
PERFORM bdc_dynpro USING 'SAPMF05A' '0300'.
PERFORM bdc_field USING 'BDC_CURSOR'
'BSEG-SGTXT'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'BSEG-WRBTR'
t_flatfile-amount.
PERFORM bdc_field USING 'BSEG-ZUONR'
t_flatfile-assign.
PERFORM bdc_field USING 'BSEG-SGTXT'
t_flatfile-text.
IF t_flatfile-postkey = '40' and t_flatfile-account > '300000'.
PERFORM bdc_field USING 'DKACB-FMORE'
'X'.
ENDIF.
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-GSBER'
t_flatfile-busarea.
PERFORM bdc_field USING 'BDC_OKCODE'
'=ENTE'.
PERFORM bdc_field USING 'COBL-KOSTL'
t_flatfile-cost.
PERFORM bdc_field USING 'COBL-PRCTR'
t_flatfile-profit.
PERFORM bdc_dynpro USING 'SAPMF05A' '0300'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RF05A-NEWKO'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'RF05A-NEWBS'
t_flatfile-postkey2.
PERFORM bdc_field USING 'RF05A-NEWKO'
t_flatfile-account2.
PERFORM debit_credit.
WHEN '21' OR '31' OR '24' OR '34'.
**perform bdc_field using 'RF05A-NEWBS'
'31'.
**perform bdc_field using 'RF05A-NEWKO'
'25000'.
PERFORM bdc_field USING 'DKACB-FMORE'
'X'.
PERFORM bdc_dynpro USING 'SAPMF05A' '0302'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RF05A-NEWKO'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_dynpro USING 'SAPLKACB' '0002'.
PERFORM bdc_field USING 'BDC_CURSOR'
'COBL-GSBER'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=ENTE'.
PERFORM bdc_field USING 'COBL-GSBER'
t_flatfile-busarea.
PERFORM bdc_field USING 'COBL-KOSTL'
t_flatfile-cost.
PERFORM bdc_dynpro USING 'SAPMF05A' '0302'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RF05A-NEWKO'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'BSEG-WRBTR'
t_flatfile-amount.
PERFORM bdc_field USING 'BSEG-GSBER'
t_flatfile-busarea.
PERFORM bdc_field USING 'BSEG-ZFBDT'
t_flatfile-bline.
PERFORM bdc_field USING 'BSEG-SKFBT'
t_flatfile-base.
PERFORM bdc_field USING 'BSEG-ZUONR'
t_flatfile-assign.
PERFORM bdc_field USING 'BSEG-SGTXT'
t_flatfile-text.
PERFORM bdc_field USING 'RF05A-NEWBS'
t_flatfile-postkey2.
PERFORM bdc_field USING 'RF05A-NEWKO'
t_flatfile-account2.
PERFORM bdc_dynpro USING 'SAPLFWTD' '0100'.
PERFORM bdc_field USING 'BDC_CURSOR'
'WITH_ITEM-WT_WITHCD(01)'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=GO'.
PERFORM debit_credit.
PERFORM bdc_dynpro USING 'SAPMF05A' '0300'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RF05A-NEWKO'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'BSEG-WRBTR'
t_flatfile-amount2.
PERFORM bdc_field USING 'BSEG-ZUONR'
t_flatfile-assign2.
PERFORM bdc_field USING 'BSEG-SGTXT'
t_flatfile-text2.
PERFORM bdc_dynpro USING 'SAPLKACB' '0002'.
PERFORM bdc_field USING 'BDC_CURSOR'
'COBL-GSBER'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=ENTE'.
PERFORM bdc_field USING 'COBL-GSBER'
t_flatfile-busarea2.
PERFORM bdc_field USING 'COBL-KOSTL'
t_flatfile-cost.
PERFORM bdc_field USING 'COBL-PRCTR'
t_flatfile-profit2.
PERFORM bdc_dynpro USING 'SAPMF05A' '0300'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RF05A-NEWKO'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=BU'.
PERFORM bdc_dynpro USING 'SAPLKACB' '0002'.
PERFORM bdc_field USING 'BDC_CURSOR'
'COBL-GSBER'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=ENTE'.
WHEN '01' OR '11' OR '04' OR '14' OR '07' OR '17'.
*perform bdc_field using 'RF05A-NEWBS'
'11'.
*perform bdc_field using 'RF05A-NEWKO'
'1'.
PERFORM bdc_dynpro USING 'SAPMF05A' '0301'.
PERFORM bdc_field USING 'BDC_CURSOR'
'BSEG-SGTXT'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'BSEG-WRBTR'
t_flatfile-amount.
PERFORM bdc_field USING 'BSEG-MWSKZ'
PERFORM bdc_field USING 'BSEG-GSBER'
t_flatfile-busarea.
IF NOT t_flatfile-bline IS INITIAL.
PERFORM bdc_field USING 'BSEG-ZFBDT'
t_flatfile-bline.
ENDIF.
IF NOT t_flatfile-base IS INITIAL.
PERFORM bdc_field USING 'BSEG-SKFBT'
t_flatfile-base.
ENDIF.
PERFORM bdc_field USING 'BSEG-ZUONR'
t_flatfile-assign.
PERFORM bdc_field USING 'BSEG-SGTXT'
t_flatfile-text.
PERFORM bdc_field USING 'RF05A-NEWBS'
t_flatfile-postkey2.
PERFORM bdc_field USING 'RF05A-NEWKO'
t_flatfile-account2.
PERFORM debit_credit.
ENDCASE.
*perform bdc_dynpro using 'SAPMF05A' '0301'.
*perform bdc_field using 'BDC_CURSOR'
'BSEG-WRBTR'.
*perform bdc_field using 'BDC_OKCODE'
'=AB'.
*perform bdc_field using 'BSEG-WRBTR'
'3,000.00'.
*perform bdc_field using 'BSEG-MWSKZ'
*perform bdc_field using 'BSEG-GSBER'
'VUSO'.
*perform bdc_field using 'BSEG-ZFBDT'
'19.07.2005'.
*perform bdc_field using 'BSEG-SKFBT'
'3,000.00'.
*perform bdc_field using 'BSEG-ZUONR'
'ASSIGN'.
*perform bdc_field using 'BSEG-SGTXT'
'TEXT'.
PERFORM bdc_dynpro USING 'SAPMF05A' '0700'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RF05A-NEWBS'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=BU'.
*perform bdc_field using 'BKPF-XBLNR'
'REF'.
*perform bdc_field using 'BKPF-BKTXT'
'text'.
PERFORM bdc_transaction USING 'F-02'.
ENDLOOP.
PERFORM close_group.
*& Form debit_credit
text
FORM debit_credit.
**SRINI
IF t_flatfile-postkey = '40' OR t_flatfile-postkey = '50'.
PERFORM bdc_dynpro USING 'SAPLKACB' '0002'.
PERFORM bdc_field USING 'BDC_CURSOR'
'COBL-GSBER'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=ENTE'.
ENDIF.
***SRINI
PERFORM bdc_dynpro USING 'SAPMF05A' '0300'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RF05A-NEWKO'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'BSEG-WRBTR'
t_flatfile-amount2.
PERFORM bdc_field USING 'BSEG-ZUONR'
t_flatfile-assign2.
PERFORM bdc_field USING 'BSEG-SGTXT'
t_flatfile-text2.
PERFORM bdc_dynpro USING 'SAPLKACB' '0002'.
PERFORM bdc_field USING 'BDC_CURSOR'
'COBL-KOSTL'.
'COBL-GSBER'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=ENTE'.
PERFORM bdc_field USING 'COBL-GSBER'
t_flatfile-busarea2.
PERFORM bdc_field USING 'COBL-KOSTL'
t_flatfile-cost.
PERFORM bdc_field USING 'COBL-PRCTR'
t_flatfile-profit2.
PERFORM bdc_dynpro USING 'SAPMF05A' '0300'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RF05A-NEWKO'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=BU'.
PERFORM bdc_dynpro USING 'SAPLKACB' '0002'.
PERFORM bdc_field USING 'BDC_CURSOR'
'COBL-GSBER'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=ENTE'.
ENDFORM. "debit_credit
regards,
Bikash -
Hi abappers
I am using the following code in my program.
i m getting a syntax error that i do not understand? can any body help me out with this.
Regards
Narendiran Rathinavelu
*& Report ZTEST_RECUPLOAD
REPORT ZTEST_RECUPLOAD.
*include bdcrecx1.
******************Selection screen************************************
SELECTION-SCREEN BEGIN OF BLOCK 1 WITH FRAME TITLE TEXT-T01 .
PARAMETERS P_FILE TYPE RLGRAP-FILENAME OBLIGATORY.
PARAMETERS P_SESSN TYPE APQI-GROUPID DEFAULT 'RECURRING'.
PARAMETERS P_SESSN2 TYPE APQI-GROUPID DEFAULT 'RECURRING_E'.
SELECTION-SCREEN END OF BLOCK 1.
********************Type declaration**********************************
*type for data input table
TYPES : BEGIN OF TY_DATA,
BUKRS TYPE T001-BUKRS, "Company code
BLART TYPE BKPF-BLART, "Document type
BUDAT TYPE BKPF-BUDAT, "Posting date
DBBDT TYPE BKDF-DBBDT, "First run
DBATR TYPE BKDF-DBATR, "Next run
DBEDT TYPE BKDF-DBEDT, "last run
DBMON TYPE BKDF-DBMON, "Run frequency
DBTAG TYPE BKDF-DBTAG, "Run date
DBZHL TYPE BKDF-DBZHL, "no of runs
XBLNR TYPE BKPF-XBLNR, "reference(site)
BKTXT TYPE BKPF-BKTXT, "document header data
USNAM TYPE BKPF-USNAM, "User name
CPUDT TYPE BKPF-CPUDT, "Entry date
BSCHL_1 TYPE BSEG-BSCHL, "Posting key 1 item
HKONT_1 TYPE BSEG-HKONT, "Account 1 item
DESC_1 TYPE CHAR40, "Description vendor/GL 1 item
MWSKZ_1 TYPE BSEG-MWSKZ, "Tax code 1 item
MWSTS1_1 TYPE BSEG-MWSTS, "Tax Amount 1 item
MWSTS2_1 TYPE BSEG-MWSTS, "Amount is local currency 1 item
MWSTS3_1 TYPE BSEG-MWSTS, "Amount is foreign currency 1 item
SGTXT_1 TYPE BSEG-SGTXT, "Item text 1 item
ZUONR_1 TYPE BSEG-ZUONR, "Assignment 1 item
BSCHL_2 TYPE BSEG-BSCHL, "Posting key 2 item
HKONT_2 TYPE BSEG-HKONT, "Account 2 item
DESC_2 TYPE CHAR40, "Description vendor/GL 2 item
MWSKZ_2 TYPE BSEG-MWSKZ, "Tax code 2 item
MWSTS1_2 TYPE BSEG-MWSTS, "Tax Amount 2 item
MWSTS2_2 TYPE BSEG-MWSTS, "Amount is local currency 2 item
MWSTS3_2 TYPE BSEG-MWSTS, "Amount is foreign currency 2 item
KOSTL TYPE COBL-KOSTL, "Cost center
AUFNR TYPE COBL-AUFNR, "Internal order number
SGTXT_2 TYPE BSEG-SGTXT, "Item text 2 item
ZUONR_2 TYPE BSEG-ZUONR, "Assignment 2 item
END OF TY_DATA.
*type for data error table
TYPES : BEGIN OF TY_ERROR,
BUKRS TYPE T001-BUKRS, "Company code
BLART TYPE BKPF-BLART, "Document type
BUDAT TYPE BKPF-BUDAT, "Posting date
DBBDT TYPE BKDF-DBBDT, "First run
DBATR TYPE BKDF-DBATR, "Next run
DBEDT TYPE BKDF-DBEDT, "last run
DBMON TYPE BKDF-DBMON, "Run frequency
DBTAG TYPE BKDF-DBTAG, "Run date
DBZHL TYPE BKDF-DBZHL, "no of runs
XBLNR TYPE BKPF-XBLNR, "reference(site)
BKTXT TYPE BKPF-BKTXT, "document header data
USNAM TYPE BKPF-USNAM, "User name
CPUDT TYPE BKPF-CPUDT, "Entry date
BSCHL_1 TYPE BSEG-BSCHL, "Posting key 1 item
HKONT_1 TYPE BSEG-HKONT, "Account 1 item
DESC_1 TYPE CHAR40, "Description vendor/GL 1 item
MWSKZ_1 TYPE BSEG-MWSKZ, "Tax code 1 item
MWSTS1_1 TYPE BSEG-MWSTS, "Tax Amount 1 item
MWSTS2_1 TYPE BSEG-MWSTS, "Amount is local currency 1 item
MWSTS3_1 TYPE BSEG-MWSTS, "Amount is foreign currency 1 item
SGTXT_1 TYPE BSEG-SGTXT, "Item text 1 item
ZUONR_1 TYPE BSEG-ZUONR, "Assignment 1 item
BSCHL_2 TYPE BSEG-BSCHL, "Posting key 2 item
HKONT_2 TYPE BSEG-HKONT, "Account 2 item
DESC_2 TYPE CHAR40, "Description vendor/GL 2 item
MWSKZ_2 TYPE BSEG-MWSKZ, "Tax code 2 item
MWSTS1_2 TYPE BSEG-MWSTS, "Tax Amount 2 item
MWSTS2_2 TYPE BSEG-MWSTS, "Amount is local currency 2 item
MWSTS3_2 TYPE BSEG-MWSTS, "Amount is foreign currency 2 item
KOSTL TYPE COBL-KOSTL, "Cost center
AUFNR TYPE COBL-AUFNR, "Internal order number
SGTXT_2 TYPE BSEG-SGTXT, "Item text 2 item
ZUONR_2 TYPE BSEG-ZUONR, "Assignment 2 item
END OF TY_ERROR.
********************Data declaration***********************************
DATA : T_DATA TYPE TABLE OF TY_DATA, "Table to upload correct entries
T_ERROR TYPE TABLE OF TY_ERROR. "Table to upload error data
DATA : W_DATA TYPE TY_DATA, "workarea for t_data
W_ERROR TYPE TY_ERROR. "workarea for t_error
DATA : T_BDCDATA TYPE TABLE OF BDCDATA,
W_BDCDATA TYPE BDCDATA.
DATA : T_SEL_FILE TYPE FILETABLE,
W_RETURN_CODE TYPE I VALUE '0',
W_SEL_FILE LIKE LINE OF T_SEL_FILE.
DATA : T_DATAIN TYPE TABLE OF TY_DATA,
W_DATAIN TYPE string.
DATA : W_FILE TYPE STRING.
********************At Selection Screen*********************************
*selection screen validations
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.
CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG
EXPORTING
WINDOW_TITLE = 'Select File for upload'
DEFAULT_EXTENSION =
DEFAULT_FILENAME =
FILE_FILTER = '*.xls'
WITH_ENCODING =
INITIAL_DIRECTORY =
MULTISELECTION =
CHANGING
FILE_TABLE = T_SEL_FILE
RC = W_RETURN_CODE
USER_ACTION =
FILE_ENCODING =
EXCEPTIONS
FILE_OPEN_DIALOG_FAILED = 1
CNTL_ERROR = 2
ERROR_NO_GUI = 3
NOT_SUPPORTED_BY_GUI = 4
OTHERS = 5
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
IF W_RETURN_CODE <> -1.
READ TABLE T_SEL_FILE INTO W_SEL_FILE INDEX 1.
CLEAR P_FILE.
MOVE W_SEL_FILE TO P_FILE.
ENDIF.
*at selection screen
AT SELECTION-SCREEN ON P_SESSN.
IF P_SESSN IS INITIAL.
P_SESSN = 'RECURRING'.
ENDIF.
AT SELECTION-SCREEN ON P_SESSN2.
IF P_SESSN2 IS INITIAL.
P_SESSN2 = 'RECURRING_E'.
ENDIF.
*********************Start of Selection ****************************
START-OF-SELECTION.
OPEN DATASET P_FILE FOR INPUT IN TEXT MODE ENCODING DEFAULT.
*error message when file not found.
IF SY-SUBRC <> 0.
MESSAGE 'File Not Found' TYPE 'E'.
ENDIF.
DO.
READ DATASET P_FILE INTO w_datain.
IF SY-SUBRC EQ 0.
perform pre_process_record using w_datain
changing w_data.
PERFORM VALIDATE_DATA TABLES T_DATA
T_ERROR
USING W_DATA.
ELSE.
EXIT.
ENDIF.
ENDDO.
CLOSE DATASET P_FILE.
*check if any error has occured.
IF T_ERROR[] IS NOT INITIAL.
PERFORM FILL_BDC_TABLE TABLES T_ERROR
T_BDCDATA
USING P_SESSN2.
ENDIF.
*Check if any records are present to be uploaded.
IF T_DATA[] IS NOT INITIAL.
PERFORM FILL_BDC_TABLE TABLES T_DATA
T_BDCDATA
USING P_SESSN.
ELSE.
WRITE :/ 'No Correct Records were found to create session in SM35',
/ 'Please Check the File'.
ENDIF.
*& Form validate_data
Sub routine to check correctness of the uploaded data.
-->P_T_DATA table to upload correct entries
-->P_T_ERROR table to upload erroneous entries
-->P_W_DATA current record
FORM VALIDATE_DATA TABLES P_T_DATA STRUCTURE W_DATA
P_T_ERROR STRUCTURE W_ERROR
USING P_W_DATA.
DATA : L_W_LIFNR TYPE LFA1-LIFNR,
L_W_SAKNR TYPE SKA1-SAKNR.
DATA: L_W_DATA TYPE TY_DATA,
L_W_ERROR TYPE TY_ERROR.
MOVE P_W_DATA TO L_W_DATA.
DATA : L_FG_ERROR TYPE C,
L_W_DATE TYPE SY-DATUM.
CONSTANTS : C_X TYPE C VALUE 'X',
C_O2CA(4) TYPE C VALUE 'O2CA',
C_ZK_1(2) TYPE C VALUE 'ZK',
C_ZK_2(2) TYPE C VALUE 'zk',
C_NUM(17) TYPE C VALUE '01234567890/.-, ',
C_31(2) TYPE C VALUE '31',
C_40(2) TYPE C VALUE '40'.
L_FG_ERROR = SPACE.
DO.
*check document type is 'ZK'
IF NOT L_W_DATA-BLART NE C_ZK_1 OR
L_W_DATA-BLART NE C_ZK_2.
L_FG_ERROR = C_X.
EXIT.
ENDIF.
*check 1 item text fields are filled by numeric value.
IF NOT L_W_DATA-SGTXT_1 CO C_NUM.
L_FG_ERROR = C_X.
EXIT.
ENDIF.
*check 2 item text fields are filled by date.
MOVE L_W_DATA-SGTXT_2 TO L_W_DATE.
CALL FUNCTION 'DATE_CHECK_PLAUSIBILITY'
EXPORTING
DATE = L_W_DATE
EXCEPTIONS
PLAUSIBILITY_CHECK_FAILED = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
L_FG_ERROR = C_X.
EXIT.
ENDIF.
*check first posting key is '31'
IF NOT L_W_DATA-BSCHL_1 EQ C_31.
L_FG_ERROR = C_X.
EXIT.
ENDIF.
*check second posting key is '40'
IF NOT L_W_DATA-BSCHL_2 EQ C_40.
L_FG_ERROR = C_X.
EXIT.
ENDIF.
*check valid Vendor
SELECT SINGLE LIFNR FROM LFA1 INTO L_W_LIFNR
WHERE LIFNR = L_W_DATA-HKONT_1.
IF SY-SUBRC <> 0.
L_FG_ERROR = C_X.
EXIT.
ENDIF.
*check valid G/L account.
SELECT SINGLE SAKNR FROM SKA1 INTO L_W_SAKNR
WHERE KTOPL = C_O2CA AND
SAKNR = L_W_DATA-HKONT_2.
IF SY-SUBRC <> 0.
L_FG_ERROR = C_X.
EXIT.
ENDIF.
*check 1 item assignment contains numeric value
IF NOT L_W_DATA-ZUONR_1 CO C_NUM.
L_FG_ERROR = C_X.
EXIT.
ENDIF.
*check 2 item assigment contains date value
MOVE L_W_DATA-ZUONR_2 TO L_W_DATE.
CALL FUNCTION 'DATE_CHECK_PLAUSIBILITY'
EXPORTING
DATE = L_W_DATE
EXCEPTIONS
PLAUSIBILITY_CHECK_FAILED = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
L_FG_ERROR = C_X.
EXIT.
ENDIF.
*check if no error has occured
IF NOT L_FG_ERROR EQ C_X.
EXIT.
ENDIF.
ENDDO.
*check error flag and insert error text.
CASE L_FG_ERROR.
WHEN C_X. "When error has occured.
APPEND L_W_DATA TO P_T_ERROR.
WHEN OTHERS. "When no error has occured.
APPEND L_W_DATA TO P_T_DATA.
ENDCASE.
ENDFORM. " validate_data
*& Form download_error_log
Sub routine to download the error log
-->P_T_ERROR error log
FORM DOWNLOAD_ERROR_LOG TABLES P_T_ERROR STRUCTURE W_ERROR.
DATA : L_FILENAME TYPE STRING,
L_PATH TYPE STRING,
L_FULLPATH TYPE STRING.
CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG
EXPORTING
WINDOW_TITLE = 'Save the Error log'
CHANGING
FILENAME = L_FILENAME
PATH = L_PATH
FULLPATH = L_FULLPATH
EXCEPTIONS
CNTL_ERROR = 1
ERROR_NO_GUI = 2
NOT_SUPPORTED_BY_GUI = 3
OTHERS = 4.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
CHECK L_FULLPATH IS NOT INITIAL.
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
FILENAME = L_FULLPATH
FILETYPE = 'ASC'
WRITE_FIELD_SEPARATOR = 'X'
TABLES
DATA_TAB = P_T_ERROR
EXCEPTIONS
FILE_WRITE_ERROR = 1
NO_BATCH = 2
GUI_REFUSE_FILETRANSFER = 3
INVALID_TYPE = 4
NO_AUTHORITY = 5
UNKNOWN_ERROR = 6
HEADER_NOT_ALLOWED = 7
SEPARATOR_NOT_ALLOWED = 8
FILESIZE_NOT_ALLOWED = 9
HEADER_TOO_LONG = 10
DP_ERROR_CREATE = 11
DP_ERROR_SEND = 12
DP_ERROR_WRITE = 13
UNKNOWN_DP_ERROR = 14
ACCESS_DENIED = 15
DP_OUT_OF_MEMORY = 16
DISK_FULL = 17
DP_TIMEOUT = 18
FILE_NOT_FOUND = 19
DATAPROVIDER_EXCEPTION = 20
CONTROL_FLUSH_ERROR = 21
OTHERS = 22.
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. " download_error_log
*& Form fill_bdc_table
bdc session is created in SM35
-->P_T_DATA correct data
-->P_T_BDCDATA bdcdata
-->P_P_SESSN session name
FORM FILL_BDC_TABLE TABLES P_T_DATA STRUCTURE W_DATA
P_T_BDCDATA STRUCTURE BDCDATA
USING P_P_SESSN.
DATA : L_W_DATA TYPE TY_DATA. "workarea for t_data
CONSTANTS: C_EUR(3) TYPE C VALUE 'EUR'.
*open batch
PERFORM OPEN_GROUP USING P_P_SESSN.
LOOP AT P_T_DATA INTO L_W_DATA.
*clear the bdc table
REFRESH P_T_BDCDATA.
*initial screen
PERFORM BDC_DYNPRO TABLES P_T_BDCDATA
USING 'SAPMF05A' '0106'.
PERFORM : BDC_FIELD TABLES P_T_BDCDATA USING 'BDC_CURSOR' 'BKPF-WAERS',
BDC_FIELD TABLES P_T_BDCDATA USING 'BDC_OKCODE' '/00', "enter
BDC_FIELD TABLES P_T_BDCDATA USING 'BKPF-BUKRS' L_W_DATA-BUKRS, "company code
BDC_FIELD TABLES P_T_BDCDATA USING 'BKDF-DBBDT' L_W_DATA-DBBDT, "first run on
BDC_FIELD TABLES P_T_BDCDATA USING 'BKDF-DBATR' L_W_DATA-DBATR, "next run on
BDC_FIELD TABLES P_T_BDCDATA USING 'BKDF-DBEDT' L_W_DATA-DBEDT, "last run on
BDC_FIELD TABLES P_T_BDCDATA USING 'BKDF-DBMON' L_W_DATA-DBMON, "run frequency
BDC_FIELD TABLES P_T_BDCDATA USING 'BKDF-DBTAG' L_W_DATA-DBTAG, "run date
BDC_FIELD TABLES P_T_BDCDATA USING 'BKPF-BLART' L_W_DATA-BLART, "document type
BDC_FIELD TABLES P_T_BDCDATA USING 'BKPF-WAERS' C_EUR, "currency
BDC_FIELD TABLES P_T_BDCDATA USING 'BKPF-XBLNR' L_W_DATA-XBLNR, "reference
BDC_FIELD TABLES P_T_BDCDATA USING 'BKPF-BKTXT' L_W_DATA-BKTXT, "document header data
BDC_FIELD TABLES P_T_BDCDATA USING 'RF05A-NEWBS' L_W_DATA-BSCHL_1,"posting key
BDC_FIELD TABLES P_T_BDCDATA USING 'RF05A-NEWKO' L_W_DATA-HKONT_1."account no
*second screen (First line item)
PERFORM BDC_DYNPRO TABLES P_T_BDCDATA
USING 'SAPMF05A' '0302'.
PERFORM : BDC_FIELD TABLES P_T_BDCDATA USING 'BDC_CURSOR' 'RF05A-NEWKO',
BDC_FIELD TABLES P_T_BDCDATA USING 'BDC_OKCODE' '/00', "enter
BDC_FIELD TABLES P_T_BDCDATA USING 'BSEG-WRBTR' L_W_DATA-MWSTS2_1, "amount in LC
BDC_FIELD TABLES P_T_BDCDATA USING 'BSEG-MWSKZ' L_W_DATA-MWSKZ_1, "tax code
BDC_FIELD TABLES P_T_BDCDATA USING 'BSEG-ZUONR' L_W_DATA-ZUONR_1, "assignment
BDC_FIELD TABLES P_T_BDCDATA USING 'BSEG-SGTXT' L_W_DATA-SGTXT_1, "item level text
BDC_FIELD TABLES P_T_BDCDATA USING 'RF05A-NEWBS' L_W_DATA-BSCHL_2, "posting key
BDC_FIELD TABLES P_T_BDCDATA USING 'RF05A-NEWKO' L_W_DATA-HKONT_2. "account no
*third screen (Second line item)
PERFORM BDC_DYNPRO TABLES P_T_BDCDATA
USING 'SAPMF05A' '0300'.
PERFORM : BDC_FIELD TABLES P_T_BDCDATA USING 'BDC_CURSOR' 'BSEG-EBELN',
BDC_FIELD TABLES P_T_BDCDATA USING 'BDC_OKCODE' '=AB', "overview button
BDC_FIELD TABLES P_T_BDCDATA USING 'BSEG-WRBTR' L_W_DATA-MWSTS2_2, "amount in LC
BDC_FIELD TABLES P_T_BDCDATA USING 'BSEG-MWSKZ' L_W_DATA-MWSKZ_2, "tax code
BDC_FIELD TABLES P_T_BDCDATA USING 'BSEG-ZUONR' L_W_DATA-ZUONR_2, "assigment
BDC_FIELD TABLES P_T_BDCDATA USING 'BSEG-SGTXT' L_W_DATA-SGTXT_2. "item text
*fourth screen (pop up)
PERFORM BDC_DYNPRO TABLES P_T_BDCDATA
USING 'SAPLKACB' '0002'.
PERFORM : BDC_FIELD TABLES P_T_BDCDATA USING 'BDC_CURSOR' 'COBL-KOSTL',
BDC_FIELD TABLES P_T_BDCDATA USING 'BDC_OKCODE' '=ENTE', "ok button
BDC_FIELD TABLES P_T_BDCDATA USING 'COBL-KOSTL' L_W_DATA-KOSTL, "cost center
BDC_FIELD TABLES P_T_BDCDATA USING 'COBL-AUFNR' L_W_DATA-AUFNR. "order number
*fifth screen
PERFORM BDC_FIELD TABLES P_T_BDCDATA
USING 'SAPMF05A' '0070'.
PERFORM : BDC_FIELD TABLES P_T_BDCDATA USING 'BDC_CURSOR' 'RF05A-NEWBS',
BDC_FIELD TABLES P_T_BDCDATA USING 'BDC_OKCODE' '=BU'. "save document
PERFORM BDC_INSERT TABLES P_T_BDCDATA
USING 'ZREC_ENTRY'.
ENDLOOP.
*close the batch.
PERFORM CLOSE_GROUP.
ENDFORM. " fill_bdc_table
*& Form bdc_dynpro
bdc screen insert sub routine
-->P_T_BDCDATA BDC table
-->P_PROGRAM Program name
-->P_SCREEN Screen no
FORM BDC_DYNPRO TABLES P_T_BDCDATA STRUCTURE BDCDATA
USING VALUE(P_PROGRAM)
VALUE(P_SCREEN).
CONSTANTS C_X TYPE C VALUE 'X'.
DATA L_W_BDCDATA TYPE BDCDATA.
L_W_BDCDATA-PROGRAM = P_PROGRAM.
L_W_BDCDATA-DYNPRO = P_SCREEN.
L_W_BDCDATA-DYNBEGIN = C_X.
APPEND L_W_BDCDATA TO P_T_BDCDATA.
ENDFORM. " bdc_dynpro
*& Form bdc_field
bdc field screen routine
-->P_T_BDCDATA BDC table
-->P_FIELD Field name
-->P_VALUE Value
FORM BDC_FIELD TABLES P_T_BDCDATA STRUCTURE BDCDATA
USING VALUE(P_FIELD)
VALUE(P_VALUE).
DATA L_W_BDCDATA TYPE BDCDATA. "Work area
L_W_BDCDATA-FNAM = P_FIELD.
L_W_BDCDATA-FVAL = P_VALUE.
APPEND L_W_BDCDATA TO P_T_BDCDATA.
ENDFORM. " bdc_field
*& Form open_group
bdc open group in sm35
-->P_P_SESSN session name
FORM OPEN_GROUP USING P_P_SESSN.
CONSTANTS C_X TYPE C VALUE 'X'.
CALL FUNCTION 'BDC_OPEN_GROUP'
EXPORTING
CLIENT = SY-MANDT
GROUP = P_P_SESSN
KEEP = C_X
USER = SY-UNAME
PROG = SY-CPROG
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. " open_group
*& Form bdc_insert
bdc insert in sm35
-->P_T_BDCDATA bdcdata table
-->P_tcode transaction
FORM BDC_INSERT TABLES P_T_BDCDATA STRUCTURE BDCDATA
USING VALUE(P_TCODE).
CALL FUNCTION 'BDC_INSERT'
EXPORTING
TCODE = P_TCODE
TABLES
DYNPROTAB = P_T_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
*& Form close_group
bdc close group in sm35
FORM 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. " close_group
*& Form pre_process_record
text
-->P_W_DATAIN text
<--P_W_DATA text
FORM pre_process_record USING P_W_DATAIN
CHANGING P_W_DATA.
move p_w_datain to p_w_data-bukrs.
ENDFORM. " pre_process_recordcopy paste this code
*& Report ZTEST_RECUPLOAD
REPORT ZTEST_RECUPLOAD.
*include bdcrecx1.
*******************Selection screen*************************************
SELECTION-SCREEN BEGIN OF BLOCK 1 WITH FRAME TITLE TEXT-T01 .
PARAMETERS P_FILE TYPE RLGRAP-FILENAME OBLIGATORY.
PARAMETERS P_SESSN TYPE APQI-GROUPID DEFAULT 'RECURRING'.
PARAMETERS P_SESSN2 TYPE APQI-GROUPID DEFAULT 'RECURRING_E'.
SELECTION-SCREEN END OF BLOCK 1.
*********************Type declaration***********************************
*type for data input table
TYPES : BEGIN OF TY_DATA,
BUKRS TYPE T001-BUKRS, "Company code
BLART TYPE BKPF-BLART, "Document type
* BUDAT TYPE BKPF-BUDAT, "Posting date
DBBDT TYPE BKDF-DBBDT, "First run
DBATR TYPE BKDF-DBATR, "Next run
DBEDT TYPE BKDF-DBEDT, "last run
DBMON TYPE BKDF-DBMON, "Run frequency
DBTAG TYPE BKDF-DBTAG, "Run date
* DBZHL TYPE BKDF-DBZHL, "no of runs
XBLNR TYPE BKPF-XBLNR, "reference(site)
BKTXT TYPE BKPF-BKTXT, "document header data
* USNAM TYPE BKPF-USNAM, "User name
* CPUDT TYPE BKPF-CPUDT, "Entry date
BSCHL_1 TYPE BSEG-BSCHL, "Posting key 1 item
HKONT_1 TYPE BSEG-HKONT, "Account 1 item
DESC_1 TYPE CHAR40, "Description vendor/GL 1 item
MWSKZ_1 TYPE BSEG-MWSKZ, "Tax code 1 item
* MWSTS1_1 TYPE BSEG-MWSTS, "Tax Amount 1 item
MWSTS2_1 TYPE BSEG-MWSTS, "Amount is local currency 1 item
* MWSTS3_1 TYPE BSEG-MWSTS, "Amount is foreign currency 1 item
SGTXT_1 TYPE BSEG-SGTXT, "Item text 1 item
ZUONR_1 TYPE BSEG-ZUONR, "Assignment 1 item
BSCHL_2 TYPE BSEG-BSCHL, "Posting key 2 item
HKONT_2 TYPE BSEG-HKONT, "Account 2 item
DESC_2 TYPE CHAR40, "Description vendor/GL 2 item
MWSKZ_2 TYPE BSEG-MWSKZ, "Tax code 2 item
** MWSTS1_2 TYPE BSEG-MWSTS, "Tax Amount 2 item
MWSTS2_2 TYPE BSEG-MWSTS, "Amount is local currency 2 item
* MWSTS3_2 TYPE BSEG-MWSTS, "Amount is foreign currency 2 item
KOSTL TYPE COBL-KOSTL, "Cost center
AUFNR TYPE COBL-AUFNR, "Internal order number
SGTXT_2 TYPE BSEG-SGTXT, "Item text 2 item
ZUONR_2 TYPE BSEG-ZUONR, "Assignment 2 item
END OF TY_DATA.
*type for data error table
TYPES : BEGIN OF TY_ERROR,
BUKRS TYPE T001-BUKRS, "Company code
BLART TYPE BKPF-BLART, "Document type
* BUDAT TYPE BKPF-BUDAT, "Posting date
DBBDT TYPE BKDF-DBBDT, "First run
DBATR TYPE BKDF-DBATR, "Next run
DBEDT TYPE BKDF-DBEDT, "last run
DBMON TYPE BKDF-DBMON, "Run frequency
DBTAG TYPE BKDF-DBTAG, "Run date
* DBZHL TYPE BKDF-DBZHL, "no of runs
XBLNR TYPE BKPF-XBLNR, "reference(site)
BKTXT TYPE BKPF-BKTXT, "document header data
* USNAM TYPE BKPF-USNAM, "User name
* CPUDT TYPE BKPF-CPUDT, "Entry date
BSCHL_1 TYPE BSEG-BSCHL, "Posting key 1 item
HKONT_1 TYPE BSEG-HKONT, "Account 1 item
DESC_1 TYPE CHAR40, "Description vendor/GL 1 item
MWSKZ_1 TYPE BSEG-MWSKZ, "Tax code 1 item
* MWSTS1_1 TYPE BSEG-MWSTS, "Tax Amount 1 item
MWSTS2_1 TYPE BSEG-MWSTS, "Amount is local currency 1 item
* MWSTS3_1 TYPE BSEG-MWSTS, "Amount is foreign currency 1 item
SGTXT_1 TYPE BSEG-SGTXT, "Item text 1 item
ZUONR_1 TYPE BSEG-ZUONR, "Assignment 1 item
BSCHL_2 TYPE BSEG-BSCHL, "Posting key 2 item
HKONT_2 TYPE BSEG-HKONT, "Account 2 item
DESC_2 TYPE CHAR40, "Description vendor/GL 2 item
MWSKZ_2 TYPE BSEG-MWSKZ, "Tax code 2 item
* MWSTS1_2 TYPE BSEG-MWSTS, "Tax Amount 2 item
MWSTS2_2 TYPE BSEG-MWSTS, "Amount is local currency 2 item
* MWSTS3_2 TYPE BSEG-MWSTS, "Amount is foreign currency 2 item
KOSTL TYPE COBL-KOSTL, "Cost center
AUFNR TYPE COBL-AUFNR, "Internal order number
SGTXT_2 TYPE BSEG-SGTXT, "Item text 2 item
ZUONR_2 TYPE BSEG-ZUONR, "Assignment 2 item
END OF TY_ERROR.
*********************Data declaration************************************
DATA : T_DATA TYPE TABLE OF TY_DATA, "Table to upload correct entries
T_ERROR TYPE TABLE OF TY_ERROR. "Table to upload error data
DATA : W_DATA type TY_DATA, "workarea for t_data
W_ERROR TYPE TY_ERROR. "workarea for t_error
DATA : T_BDCDATA TYPE TABLE OF BDCDATA,
W_BDCDATA TYPE BDCDATA.
DATA : T_SEL_FILE TYPE FILETABLE,
W_RETURN_CODE TYPE I VALUE '0',
W_SEL_FILE LIKE LINE OF T_SEL_FILE.
DATA : T_DATAIN TYPE TABLE OF TY_DATA,
W_DATAIN TYPE string.
DATA : W_FILE TYPE STRING.
*********************At Selection Screen**********************************
*selection screen validations
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.
CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG
EXPORTING
WINDOW_TITLE = 'Select File for upload'
* DEFAULT_EXTENSION =
* DEFAULT_FILENAME =
FILE_FILTER = '*.xls'
* WITH_ENCODING =
* INITIAL_DIRECTORY =
* MULTISELECTION =
CHANGING
FILE_TABLE = T_SEL_FILE
RC = W_RETURN_CODE
* USER_ACTION =
* FILE_ENCODING =
EXCEPTIONS
FILE_OPEN_DIALOG_FAILED = 1
CNTL_ERROR = 2
ERROR_NO_GUI = 3
NOT_SUPPORTED_BY_GUI = 4
OTHERS = 5
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
IF W_RETURN_CODE <> -1.
READ TABLE T_SEL_FILE INTO W_SEL_FILE INDEX 1.
CLEAR P_FILE.
MOVE W_SEL_FILE TO P_FILE.
ENDIF.
*at selection screen
AT SELECTION-SCREEN ON P_SESSN.
IF P_SESSN IS INITIAL.
P_SESSN = 'RECURRING'.
ENDIF.
AT SELECTION-SCREEN ON P_SESSN2.
IF P_SESSN2 IS INITIAL.
P_SESSN2 = 'RECURRING_E'.
ENDIF.
*********************Start of Selection ****************************
START-OF-SELECTION.
OPEN DATASET P_FILE FOR INPUT IN TEXT MODE ENCODING DEFAULT.
*error message when file not found.
IF SY-SUBRC <> 0.
MESSAGE 'File Not Found' TYPE 'E'.
ENDIF.
DO.
READ DATASET P_FILE INTO w_datain.
IF SY-SUBRC EQ 0.
perform pre_process_record using w_datain
changing w_data.
PERFORM VALIDATE_DATA TABLES T_DATA
T_ERROR
USING W_DATA.
ELSE.
EXIT.
ENDIF.
ENDDO.
CLOSE DATASET P_FILE.
*check if any error has occured.
IF T_ERROR[] IS NOT INITIAL.
PERFORM FILL_BDC_TABLE TABLES T_ERROR
T_BDCDATA
USING P_SESSN2.
ENDIF.
*Check if any records are present to be uploaded.
IF T_DATA[] IS NOT INITIAL.
PERFORM FILL_BDC_TABLE TABLES T_DATA
T_BDCDATA
USING P_SESSN.
ELSE.
WRITE :/ 'No Correct Records were found to create session in SM35',
/ 'Please Check the File'.
ENDIF.
*& Form validate_data
* Sub routine to check correctness of the uploaded data.
* -->P_T_DATA table to upload correct entries
* -->P_T_ERROR table to upload erroneous entries
* -->P_W_DATA current record
FORM VALIDATE_DATA TABLES P_T_DATA STRUCTURE W_DATA
P_T_ERROR STRUCTURE W_ERROR
USING P_W_DATA structure w_data .
DATA : L_W_LIFNR TYPE LFA1-LIFNR,
L_W_SAKNR TYPE SKA1-SAKNR.
DATA: L_W_DATA TYPE TY_DATA,
L_W_ERROR TYPE TY_ERROR.
MOVE P_W_DATA TO L_W_DATA.
DATA : L_FG_ERROR TYPE C,
L_W_DATE TYPE SY-DATUM.
CONSTANTS : C_X TYPE C VALUE 'X',
C_O2CA(4) TYPE C VALUE 'O2CA',
C_ZK_1(2) TYPE C VALUE 'ZK',
C_ZK_2(2) TYPE C VALUE 'zk',
C_NUM(17) TYPE C VALUE '01234567890/.-, ',
C_31(2) TYPE C VALUE '31',
C_40(2) TYPE C VALUE '40'.
L_FG_ERROR = SPACE.
DO.
*check document type is 'ZK'
IF NOT L_W_DATA-BLART NE C_ZK_1 OR
L_W_DATA-BLART NE C_ZK_2.
L_FG_ERROR = C_X.
EXIT.
ENDIF.
*check 1 item text fields are filled by numeric value.
IF NOT L_W_DATA-SGTXT_1 CO C_NUM.
L_FG_ERROR = C_X.
EXIT.
ENDIF.
*check 2 item text fields are filled by date.
MOVE L_W_DATA-SGTXT_2 TO L_W_DATE.
CALL FUNCTION 'DATE_CHECK_PLAUSIBILITY'
EXPORTING
DATE = L_W_DATE
EXCEPTIONS
PLAUSIBILITY_CHECK_FAILED = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
L_FG_ERROR = C_X.
EXIT.
ENDIF.
*check first posting key is '31'
IF NOT L_W_DATA-BSCHL_1 EQ C_31.
L_FG_ERROR = C_X.
EXIT.
ENDIF.
*check second posting key is '40'
IF NOT L_W_DATA-BSCHL_2 EQ C_40.
L_FG_ERROR = C_X.
EXIT.
ENDIF.
*check valid Vendor
SELECT SINGLE LIFNR FROM LFA1 INTO L_W_LIFNR
WHERE LIFNR = L_W_DATA-HKONT_1.
IF SY-SUBRC <> 0.
L_FG_ERROR = C_X.
EXIT.
ENDIF.
*check valid G/L account.
SELECT SINGLE SAKNR FROM SKA1 INTO L_W_SAKNR
WHERE KTOPL = C_O2CA AND
SAKNR = L_W_DATA-HKONT_2.
IF SY-SUBRC <> 0.
L_FG_ERROR = C_X.
EXIT.
ENDIF.
*check 1 item assignment contains numeric value
IF NOT L_W_DATA-ZUONR_1 CO C_NUM.
L_FG_ERROR = C_X.
EXIT.
ENDIF.
*check 2 item assigment contains date value
MOVE L_W_DATA-ZUONR_2 TO L_W_DATE.
CALL FUNCTION 'DATE_CHECK_PLAUSIBILITY'
EXPORTING
DATE = L_W_DATE
EXCEPTIONS
PLAUSIBILITY_CHECK_FAILED = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
L_FG_ERROR = C_X.
EXIT.
ENDIF.
*check if no error has occured
IF NOT L_FG_ERROR EQ C_X.
EXIT.
ENDIF.
ENDDO.
*check error flag and insert error text.
CASE L_FG_ERROR.
WHEN C_X. "When error has occured.
APPEND L_W_DATA TO P_T_ERROR.
WHEN OTHERS. "When no error has occured.
APPEND L_W_DATA TO P_T_DATA.
ENDCASE.
ENDFORM. " validate_data
*& Form download_error_log
* Sub routine to download the error log
* -->P_T_ERROR error log
FORM DOWNLOAD_ERROR_LOG TABLES P_T_ERROR STRUCTURE W_ERROR.
DATA : L_FILENAME TYPE STRING,
L_PATH TYPE STRING,
L_FULLPATH TYPE STRING.
CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG
EXPORTING
WINDOW_TITLE = 'Save the Error log'
CHANGING
FILENAME = L_FILENAME
PATH = L_PATH
FULLPATH = L_FULLPATH
EXCEPTIONS
CNTL_ERROR = 1
ERROR_NO_GUI = 2
NOT_SUPPORTED_BY_GUI = 3
OTHERS = 4.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
CHECK L_FULLPATH IS NOT INITIAL.
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
FILENAME = L_FULLPATH
FILETYPE = 'ASC'
WRITE_FIELD_SEPARATOR = 'X'
TABLES
DATA_TAB = P_T_ERROR
EXCEPTIONS
FILE_WRITE_ERROR = 1
NO_BATCH = 2
GUI_REFUSE_FILETRANSFER = 3
INVALID_TYPE = 4
NO_AUTHORITY = 5
UNKNOWN_ERROR = 6
HEADER_NOT_ALLOWED = 7
SEPARATOR_NOT_ALLOWED = 8
FILESIZE_NOT_ALLOWED = 9
HEADER_TOO_LONG = 10
DP_ERROR_CREATE = 11
DP_ERROR_SEND = 12
DP_ERROR_WRITE = 13
UNKNOWN_DP_ERROR = 14
ACCESS_DENIED = 15
DP_OUT_OF_MEMORY = 16
DISK_FULL = 17
DP_TIMEOUT = 18
FILE_NOT_FOUND = 19
DATAPROVIDER_EXCEPTION = 20
CONTROL_FLUSH_ERROR = 21
OTHERS = 22.
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. " download_error_log
*& Form fill_bdc_table
* bdc session is created in SM35
* -->P_T_DATA correct data
* -->P_T_BDCDATA bdcdata
* -->P_P_SESSN session name
FORM FILL_BDC_TABLE TABLES P_T_DATA STRUCTURE W_DATA
P_T_BDCDATA STRUCTURE BDCDATA
USING P_P_SESSN.
DATA : L_W_DATA TYPE TY_DATA. "workarea for t_data
CONSTANTS: C_EUR(3) TYPE C VALUE 'EUR'.
*open batch
PERFORM OPEN_GROUP USING P_P_SESSN.
LOOP AT P_T_DATA INTO L_W_DATA.
*clear the bdc table
REFRESH P_T_BDCDATA.
*initial screen
PERFORM BDC_DYNPRO TABLES P_T_BDCDATA
USING 'SAPMF05A' '0106'.
PERFORM : BDC_FIELD TABLES P_T_BDCDATA USING 'BDC_CURSOR' 'BKPF-WAERS',
BDC_FIELD TABLES P_T_BDCDATA USING 'BDC_OKCODE' '/00', "enter
BDC_FIELD TABLES P_T_BDCDATA USING 'BKPF-BUKRS' L_W_DATA-BUKRS, "company code
BDC_FIELD TABLES P_T_BDCDATA USING 'BKDF-DBBDT' L_W_DATA-DBBDT, "first run on
BDC_FIELD TABLES P_T_BDCDATA USING 'BKDF-DBATR' L_W_DATA-DBATR, "next run on
BDC_FIELD TABLES P_T_BDCDATA USING 'BKDF-DBEDT' L_W_DATA-DBEDT, "last run on
BDC_FIELD TABLES P_T_BDCDATA USING 'BKDF-DBMON' L_W_DATA-DBMON, "run frequency
BDC_FIELD TABLES P_T_BDCDATA USING 'BKDF-DBTAG' L_W_DATA-DBTAG, "run date
BDC_FIELD TABLES P_T_BDCDATA USING 'BKPF-BLART' L_W_DATA-BLART, "document type
BDC_FIELD TABLES P_T_BDCDATA USING 'BKPF-WAERS' C_EUR, "currency
BDC_FIELD TABLES P_T_BDCDATA USING 'BKPF-XBLNR' L_W_DATA-XBLNR, "reference
BDC_FIELD TABLES P_T_BDCDATA USING 'BKPF-BKTXT' L_W_DATA-BKTXT, "document header data
BDC_FIELD TABLES P_T_BDCDATA USING 'RF05A-NEWBS' L_W_DATA-BSCHL_1,"posting key
BDC_FIELD TABLES P_T_BDCDATA USING 'RF05A-NEWKO' L_W_DATA-HKONT_1."account no
*second screen (First line item)
PERFORM BDC_DYNPRO TABLES P_T_BDCDATA
USING 'SAPMF05A' '0302'.
PERFORM : BDC_FIELD TABLES P_T_BDCDATA USING 'BDC_CURSOR' 'RF05A-NEWKO',
BDC_FIELD TABLES P_T_BDCDATA USING 'BDC_OKCODE' '/00', "enter
BDC_FIELD TABLES P_T_BDCDATA USING 'BSEG-WRBTR' L_W_DATA-MWSTS2_1, "amount in LC
BDC_FIELD TABLES P_T_BDCDATA USING 'BSEG-MWSKZ' L_W_DATA-MWSKZ_1, "tax code
BDC_FIELD TABLES P_T_BDCDATA USING 'BSEG-ZUONR' L_W_DATA-ZUONR_1, "assignment
BDC_FIELD TABLES P_T_BDCDATA USING 'BSEG-SGTXT' L_W_DATA-SGTXT_1, "item level text
BDC_FIELD TABLES P_T_BDCDATA USING 'RF05A-NEWBS' L_W_DATA-BSCHL_2, "posting key
BDC_FIELD TABLES P_T_BDCDATA USING 'RF05A-NEWKO' L_W_DATA-HKONT_2. "account no
*third screen (Second line item)
PERFORM BDC_DYNPRO TABLES P_T_BDCDATA
USING 'SAPMF05A' '0300'.
PERFORM : BDC_FIELD TABLES P_T_BDCDATA USING 'BDC_CURSOR' 'BSEG-EBELN',
BDC_FIELD TABLES P_T_BDCDATA USING 'BDC_OKCODE' '=AB', "overview button
BDC_FIELD TABLES P_T_BDCDATA USING 'BSEG-WRBTR' L_W_DATA-MWSTS2_2, "amount in LC
BDC_FIELD TABLES P_T_BDCDATA USING 'BSEG-MWSKZ' L_W_DATA-MWSKZ_2, "tax code
BDC_FIELD TABLES P_T_BDCDATA USING 'BSEG-ZUONR' L_W_DATA-ZUONR_2, "assigment
BDC_FIELD TABLES P_T_BDCDATA USING 'BSEG-SGTXT' L_W_DATA-SGTXT_2. "item text
*fourth screen (pop up)
PERFORM BDC_DYNPRO TABLES P_T_BDCDATA
USING 'SAPLKACB' '0002'.
PERFORM : BDC_FIELD TABLES P_T_BDCDATA USING 'BDC_CURSOR' 'COBL-KOSTL',
BDC_FIELD TABLES P_T_BDCDATA USING 'BDC_OKCODE' '=ENTE', "ok button
BDC_FIELD TABLES P_T_BDCDATA USING 'COBL-KOSTL' L_W_DATA-KOSTL, "cost center
BDC_FIELD TABLES P_T_BDCDATA USING 'COBL-AUFNR' L_W_DATA-AUFNR. "order number
*fifth screen
PERFORM BDC_FIELD TABLES P_T_BDCDATA
USING 'SAPMF05A' '0070'.
PERFORM : BDC_FIELD TABLES P_T_BDCDATA USING 'BDC_CURSOR' 'RF05A-NEWBS',
BDC_FIELD TABLES P_T_BDCDATA USING 'BDC_OKCODE' '=BU'. "save document
PERFORM BDC_INSERT TABLES P_T_BDCDATA
USING 'ZREC_ENTRY'.
ENDLOOP.
*close the batch.
PERFORM CLOSE_GROUP.
ENDFORM. " fill_bdc_table
*& Form bdc_dynpro
* bdc screen insert sub routine
* -->P_T_BDCDATA BDC table
* -->P_PROGRAM Program name
* -->P_SCREEN Screen no
FORM BDC_DYNPRO TABLES P_T_BDCDATA STRUCTURE BDCDATA
USING VALUE(P_PROGRAM)
VALUE(P_SCREEN).
CONSTANTS C_X TYPE C VALUE 'X'.
DATA L_W_BDCDATA TYPE BDCDATA.
L_W_BDCDATA-PROGRAM = P_PROGRAM.
L_W_BDCDATA-DYNPRO = P_SCREEN.
L_W_BDCDATA-DYNBEGIN = C_X.
APPEND L_W_BDCDATA TO P_T_BDCDATA.
ENDFORM. " bdc_dynpro
*& Form bdc_field
* bdc field screen routine
* -->P_T_BDCDATA BDC table
* -->P_FIELD Field name
* -->P_VALUE Value
FORM BDC_FIELD TABLES P_T_BDCDATA STRUCTURE BDCDATA
USING VALUE(P_FIELD)
VALUE(P_VALUE).
DATA L_W_BDCDATA TYPE BDCDATA. "Work area
L_W_BDCDATA-FNAM = P_FIELD.
L_W_BDCDATA-FVAL = P_VALUE.
APPEND L_W_BDCDATA TO P_T_BDCDATA.
ENDFORM. " bdc_field
*& Form open_group
* bdc open group in sm35
* -->P_P_SESSN session name
FORM OPEN_GROUP USING P_P_SESSN.
CONSTANTS C_X TYPE C VALUE 'X'.
CALL FUNCTION 'BDC_OPEN_GROUP'
EXPORTING
CLIENT = SY-MANDT
GROUP = P_P_SESSN
KEEP = C_X
USER = SY-UNAME
PROG = SY-CPROG
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. " open_group
*& Form bdc_insert
* bdc insert in sm35
* -->P_T_BDCDATA bdcdata table
* -->P_tcode transaction
FORM BDC_INSERT TABLES P_T_BDCDATA STRUCTURE BDCDATA
USING VALUE(P_TCODE).
CALL FUNCTION 'BDC_INSERT'
EXPORTING
TCODE = P_TCODE
TABLES
DYNPROTAB = P_T_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
*& Form close_group
* bdc close group in sm35
FORM 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. " close_group
*& Form pre_process_record
* text
* -->P_W_DATAIN text
* <--P_W_DATA text
FORM pre_process_record USING P_W_DATAIN
CHANGING P_W_DATA structure w_data.
move p_w_datain to p_w_data-bukrs.
ENDFORM. " pre_process_record -
Hi Expert,
Very Good Morning to All .
i'm working on BDC Program for F-02 ( G/L Account Posting ) ,but its not able to run only when posting key is '25' apart from '25' posting key it works very fine .is there any one help me to solve this issue following is my current code ..
REPORT zcfi_sal_f02
NO STANDARD PAGE HEADING LINE-SIZE 255.
TYPE-POOLS: truxs.
DATA: BEGIN OF itab OCCURS 0,
srno(10),
bldat(12),
blart(2),
bukrs(4),
budat(12),
monat(4),
waers(5),
xblnr(30),
bktxt(30),
newbs(2),
newko(12),
wrbtr(18),
kostl(12),
prctr(10),
zuonr(10),
sgtxt(30),
END OF itab,
itab1 LIKE TABLE OF itab WITH HEADER LINE,
cnt TYPE i.
*Data decleration for Error Message
DATA: t_msg TYPE TABLE OF bdcmsgcoll, " Collecting Error messages
w_msg TYPE bdcmsgcoll,
w_msg1(51).
*Structure for error message
TYPES : BEGIN OF ty_s_error,
msg_err(300) TYPE c,
END OF ty_s_error.
DATA: it_output TYPE TABLE OF ty_s_error,
wa_output LIKE LINE OF it_output,
wa_error TYPE string.
DATA : scrn_no LIKE bdcdata-dynpro.
DATA : scrn_no1 LIKE bdcdata-dynpro.
DATA : bdcdata LIKE bdcdata OCCURS 0 WITH HEADER LINE.
DATA: fieldnmknam TYPE bdcdata-fnam.
DATA : BEGIN OF itab_lfbw OCCURS 0,
witht TYPE lfbw-witht,
wt_withcd TYPE lfbw-wt_withcd,
wt_subjct TYPE lfbw-wt_subjct,
END OF itab_lfbw.
DATA : i TYPE i.
DATA : ven_ind.
DATA : no_lines TYPE sy-tabix.
DATA : gsber(4),xref1(20),xref2(20),xref3(20).
DATA : bukrs(4).
*DATA : filename TYPE string.
*Selection Screen
***parameters : f_file like rlgrap-filename,
*** ctu_mode like ctu_params-dismode default 'A'.
PARAMETERS : f_file LIKE rlgrap-filename,
*** e_file TYPE rlgrap-filename OBLIGATORY, " Error File Path
ctu_mode LIKE ctu_params-dismode DEFAULT 'A'.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR f_file.
CALL FUNCTION 'F4_FILENAME'
* EXPORTING
* PROGRAM_NAME = 'ZMM02_BDC'
* DYNPRO_NUMBER = SYST-DYNNR
** FIELD_NAME = ' '
IMPORTING
file_name = f_file.
*START OF SELECTION
START-OF-SELECTION.
PERFORM upload_data.
PERFORM bdc_execution.
END-OF-SELECTION.
* Uploading data file to internal table. *
FORM upload_data.
DATA : raw_data TYPE truxs_t_text_data.
CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'
EXPORTING
* I_FIELD_SEPERATOR =
i_line_header = 'X'
i_tab_raw_data = raw_data
i_filename = f_file
TABLES
i_tab_converted_data = itab[]
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.
itab1[] = itab[].
DELETE ADJACENT DUPLICATES FROM itab COMPARING srno.
ENDFORM. "upload_data
*& Form bdc_execution
* text
FORM bdc_execution.
LOOP AT itab.
cnt = 1.
PERFORM bdc_dynpro USING 'SAPMF05A' '0100'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RF05A-NEWKO'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'BKPF-BLDAT'
itab-bldat. "'02.03.2013'.
PERFORM bdc_field USING 'BKPF-BLART'
itab-blart. "'SA'.
PERFORM bdc_field USING 'BKPF-BUKRS'
itab-bukrs. "'1000'.
PERFORM bdc_field USING 'BKPF-BUDAT'
itab-budat. "'02.03.2013'.
PERFORM bdc_field USING 'BKPF-MONAT'
itab-monat. "'3'.
PERFORM bdc_field USING 'BKPF-WAERS'
itab-waers. "'INR'.
PERFORM bdc_field USING 'BKPF-XBLNR'
itab-xblnr. "'Salary_Test2'.
PERFORM bdc_field USING 'BKPF-BKTXT'
itab-bktxt. "'Salary upload'.
PERFORM bdc_field USING 'FS006-DOCID'
PERFORM bdc_field USING 'RF05A-NEWBS'
itab-newbs. "'50'.
PERFORM bdc_field USING 'RF05A-NEWKO'
itab-newko. "'15030019'.
CASE itab-newbs.
WHEN '50'.
PERFORM bdc_dynpro USING 'SAPMF05A' '0300'.
PERFORM bdc_field USING 'BDC_CURSOR'
'BSEG-SGTXT'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'BSEG-WRBTR'
itab-wrbtr. "'100'.
PERFORM bdc_field USING 'BSEG-ZUONR'
itab-zuonr. "'1110'.
PERFORM bdc_field USING 'BSEG-SGTXT'
itab-sgtxt. "'pf for the month jan-12'.
PERFORM bdc_field USING 'DKACB-FMORE'
'X'.
PERFORM bdc_dynpro USING 'SAPLKACB' '0002'.
PERFORM bdc_field USING 'BDC_CURSOR'
'COBL-PRCTR'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=ENTE'.
PERFORM bdc_field USING 'COBL-KOSTL'
itab-kostl. ""'11000000'.
PERFORM bdc_field USING 'COBL-PRCTR'
itab-prctr. "'1110'.
PERFORM bdc_dynpro USING 'SAPMF05A' '0300'.
PERFORM bdc_field USING 'BDC_CURSOR'
'BSEG-WRBTR'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=AB'.
PERFORM bdc_dynpro USING 'SAPLKACB' '0002'.
PERFORM bdc_field USING 'BDC_CURSOR'
'COBL-PRCTR'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=ENTE'.
WHEN '40'.
PERFORM bdc_dynpro USING 'SAPMF05A' '0300'.
PERFORM bdc_field USING 'BDC_CURSOR'
'BSEG-SGTXT'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'BSEG-WRBTR'
itab-wrbtr. ""'100'.
PERFORM bdc_field USING 'BSEG-ZUONR'
itab-zuonr. ""'21 March'.
PERFORM bdc_field USING 'BSEG-SGTXT'
itab-sgtxt. ""'21 March 2013'.
PERFORM bdc_field USING 'DKACB-FMORE'
'X'.
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'
itab-kostl. ""'11000000'.
PERFORM bdc_field USING 'COBL-PRCTR'
itab-prctr. ""'1000'.
PERFORM bdc_dynpro USING 'SAPMF05A' '0300'.
PERFORM bdc_field USING 'BDC_CURSOR'
'BSEG-WRBTR'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=AB'.
PERFORM bdc_dynpro USING 'SAPLKACB' '0002'.
PERFORM bdc_field USING 'BDC_CURSOR'
'COBL-KOSTL'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=ENTE'.
WHEN '25'.
PERFORM bdc_dynpro USING 'SAPMF05A' '0302'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RF05A-NEWKO'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'BSEG-WRBTR'
itab-wrbtr. ""'100'.
PERFORM bdc_field USING 'BSEG-ZUONR'
itab-zuonr. ""'21 March'.
PERFORM bdc_field USING 'BSEG-SGTXT'
itab-sgtxt. ""'21 March 2013'.
PERFORM bdc_field USING 'RF05A-NEWBS'
itab-NEWBS.
PERFORM bdc_field USING 'RF05A-NEWKO'
itab-NEWKO.
PERFORM bdc_field USING 'DKACB-FMORE'
'X'.
PERFORM bdc_dynpro USING 'SAPMF05A' '0002'.
PERFORM bdc_field USING 'BDC_CURSOR'
'=ENTE'.
PERFORM bdc_field USING 'COBL-PRCTR'
itab-prctr. ""'1000'.
PERFORM bdc_dynpro USING 'SAPMF05A' '0302'.
PERFORM bdc_field USING 'BDC_CURSOR'
'BSEG-WRBTR'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=AB'.
PERFORM bdc_dynpro USING 'SAPLKACB' '0002'.
PERFORM bdc_field USING 'BDC_CURSOR'
'COBL-PRCTR'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=ENTE'.
ENDCASE.
LOOP AT itab1 WHERE srno = itab-srno.
CASE cnt.
WHEN '1'.
CLEAR cnt.
WHEN OTHERS.
CASE itab1-newbs.
WHEN '50'.
PERFORM bdc_dynpro USING 'SAPMF05A' '0700'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RF05A-NEWKO'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'BKPF-XBLNR'
itab1-xblnr. "'SALARY_TEST2'.
PERFORM bdc_field USING 'BKPF-BKTXT'
itab1-bktxt. "'Salary upload'.
PERFORM bdc_field USING 'RF05A-NEWBS'
itab1-newbs. "'50'.
PERFORM bdc_field USING 'RF05A-NEWKO'
itab1-newko. "'15030021'.
PERFORM bdc_dynpro USING 'SAPMF05A' '0300'.
PERFORM bdc_field USING 'BDC_CURSOR'
'BSEG-SGTXT'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'BSEG-WRBTR'
itab1-wrbtr. "'100'.
PERFORM bdc_field USING 'BSEG-ZUONR'
itab1-zuonr. "'1110'.
PERFORM bdc_field USING 'BSEG-SGTXT'
itab1-sgtxt. "'pf for the month jan-12'.
PERFORM bdc_field USING 'DKACB-FMORE'
'X'.
PERFORM bdc_dynpro USING 'SAPLKACB' '0002'.
PERFORM bdc_field USING 'BDC_CURSOR'
'COBL-PRCTR'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=ENTE'.
PERFORM bdc_field USING 'COBL-KOSTL'
itab1-kostl. ""'11000000'.
PERFORM bdc_field USING 'COBL-PRCTR'
itab1-prctr. "'1110'.
PERFORM bdc_dynpro USING 'SAPMF05A' '0300'.
PERFORM bdc_field USING 'BDC_CURSOR'
'BSEG-WRBTR'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=AB'.
PERFORM bdc_dynpro USING 'SAPLKACB' '0002'.
PERFORM bdc_field USING 'BDC_CURSOR'
'COBL-PRCTR'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=ENTE'.
WHEN '40'.
PERFORM bdc_dynpro USING 'SAPMF05A' '0700'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RF05A-NEWKO'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'BKPF-XBLNR'
itab1-xblnr. ""'REF TEXT'.
PERFORM bdc_field USING 'BKPF-BKTXT'
itab1-bktxt. ""'DOC HEAD TEXT'.
PERFORM bdc_field USING 'RF05A-NEWBS'
itab1-newbs. ""'40'.
PERFORM bdc_field USING 'RF05A-NEWKO'
itab1-newko. ""'42010010'.
PERFORM bdc_dynpro USING 'SAPMF05A' '0300'.
PERFORM bdc_field USING 'BDC_CURSOR'
'BSEG-SGTXT'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'BSEG-WRBTR'
itab1-wrbtr. ""'123'.
PERFORM bdc_field USING 'BSEG-ZUONR'
itab1-zuonr. ""'1000'.
PERFORM bdc_field USING 'BSEG-SGTXT'
itab1-sgtxt. ""'SALARY TEXT'.
PERFORM bdc_field USING 'DKACB-FMORE'
'X'.
PERFORM bdc_dynpro USING 'SAPLKACB' '0002'.
PERFORM bdc_field USING 'BDC_CURSOR'
'COBL-PRCTR'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=ENTE'.
PERFORM bdc_field USING 'COBL-KOSTL'
itab1-kostl. ""'11000260'.
PERFORM bdc_field USING 'COBL-PRCTR'
itab1-prctr. ""'1000'.
PERFORM bdc_dynpro USING 'SAPMF05A' '0300'.
PERFORM bdc_field USING 'BDC_CURSOR'
'BSEG-WRBTR'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=AB'.
PERFORM bdc_dynpro USING 'SAPLKACB' '0002'.
PERFORM bdc_field USING 'BDC_CURSOR'
'COBL-KOSTL'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=ENTE'.
WHEN '34'.
PERFORM bdc_dynpro USING 'SAPMF05A' '0700'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RF05A-NEWKO'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'BKPF-XBLNR'
itab1-xblnr. "'SALARY_TEST2'.
PERFORM bdc_field USING 'BKPF-BKTXT'
itab1-bktxt. "'DOC HEAD TEXT'.
PERFORM bdc_field USING 'RF05A-NEWBS'
itab1-newbs. "'34'.
PERFORM bdc_field USING 'RF05A-NEWKO'
itab1-newko. "'EMP1266'.
PERFORM bdc_dynpro USING 'SAPMF05A' '0302'.
PERFORM bdc_field USING 'BDC_CURSOR'
'BSEG-SGTXT'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'BSEG-WRBTR'
itab1-wrbtr. "'50'.
PERFORM bdc_field USING 'BSEG-ZUONR'
itab1-zuonr. "'1110'.
PERFORM bdc_field USING 'BSEG-SGTXT'
itab1-sgtxt. "'aaa'.
PERFORM bdc_dynpro USING 'SAPMF05A' '0302'.
PERFORM bdc_field USING 'BDC_CURSOR'
'BSEG-WRBTR'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=AB'.
WHEN '35'.
PERFORM bdc_dynpro USING 'SAPMF05A' '0700'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RF05A-NEWKO'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'BKPF-XBLNR'
itab1-xblnr. "'SALARY_TEST2'.
PERFORM bdc_field USING 'BKPF-BKTXT'
itab1-bktxt. "'Salary upload'.
PERFORM bdc_field USING 'RF05A-NEWBS'
itab1-newbs. "'35'.
PERFORM bdc_field USING 'RF05A-NEWKO'
itab1-newko. "'EMP1266'.
PERFORM bdc_dynpro USING 'SAPMF05A' '0302'.
PERFORM bdc_field USING 'BDC_CURSOR'
'BSEG-SGTXT'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'BSEG-WRBTR'
itab1-wrbtr. "'1000'.
PERFORM bdc_field USING 'BSEG-ZUONR'
itab1-zuonr. "'1110'.
PERFORM bdc_field USING 'BSEG-SGTXT'
itab1-sgtxt. "'Advance recovered2'.
PERFORM bdc_dynpro USING 'SAPMF05A' '0302'.
PERFORM bdc_field USING 'BDC_CURSOR'
'BSEG-WRBTR'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=AB'.
WHEN '25'.
PERFORM bdc_dynpro USING 'SAPMF05A' '0700'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RF05A-NEWKO'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'BKPF-XBLNR'
itab1-xblnr. "'SALARY_TEST2'.
PERFORM bdc_field USING 'BKPF-BKTXT'
itab1-bktxt. "'Salary upload'.
PERFORM bdc_field USING 'RF05A-NEWBS'
itab1-newbs. "'25'.
PERFORM bdc_field USING 'RF05A-NEWKO'
itab1-newko. "'EMP1266'.
PERFORM bdc_dynpro USING 'SAPMF05A' '0302'.
PERFORM bdc_field USING 'BDC_CURSOR'
'BSEG-SGTXT'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'BSEG-WRBTR'
itab1-wrbtr. "'1000'.
PERFORM bdc_field USING 'BSEG-ZUONR'
itab1-zuonr. "'1110'.
PERFORM bdc_field USING 'BSEG-SGTXT'
itab1-sgtxt. "'Advance recovered11'.
PERFORM bdc_dynpro USING 'SAPMF05A' '0302'.
PERFORM bdc_field USING 'BDC_CURSOR'
'BSEG-WRBTR'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=AB'.
WHEN '24'.
PERFORM bdc_dynpro USING 'SAPMF05A' '0700'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RF05A-NEWKO'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'BKPF-XBLNR'
itab1-xblnr. "'SALARY_TEST2'.
PERFORM bdc_field USING 'BKPF-BKTXT'
itab1-bktxt. "'Salary upload'.
PERFORM bdc_field USING 'RF05A-NEWBS'
itab1-newbs. "'24'.
PERFORM bdc_field USING 'RF05A-NEWKO'
itab1-newko. "'600003'.
PERFORM bdc_dynpro USING 'SAPMF05A' '0302'.
PERFORM bdc_field USING 'BDC_CURSOR'
'BSEG-SGTXT'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'BSEG-WRBTR'
itab1-wrbtr. "'60'.
PERFORM bdc_field USING 'BSEG-ZUONR'
itab1-zuonr. "'1110'.
PERFORM bdc_field USING 'BSEG-SGTXT'
itab1-sgtxt. "' WEST_CGF_Direct /salary exp/jan-12'.
PERFORM bdc_dynpro USING 'SAPMF05A' '0302'.
PERFORM bdc_field USING 'BDC_CURSOR'
'BSEG-WRBTR'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=AB'.
ENDCASE.
ENDCASE.
ENDLOOP.
PERFORM bdc_dynpro USING 'SAPMF05A' '0700'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RF05A-NEWBS'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=BU'.
CALL TRANSACTION 'F-02' USING bdcdata
MODE ctu_mode
UPDATE 'S'
MESSAGES INTO t_msg.
REFRESH: bdcdata, t_msg.
CLEAR: bdcdata, t_msg, w_msg.
CLEAR: itab, itab1.
ENDLOOP.
ENDFORM . "bdc_execution
*& 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
* Insert field *
FORM bdc_field USING fnam fval.
CLEAR bdcdata.
IF fval <> space.
bdcdata-fnam = fnam.
bdcdata-fval = fval.
APPEND bdcdata.
ENDIF.
ENDFORM. "BDC_FIELDIf you really don't want to use a BAPI (whatever your actual reasons) you could let Sap do it for you and do not worry about the screen numbers and sequence.
Look at scn for following FM :
POSTING_INTERFACE_START
POSTING_INTERFACE_DOCUMENT
POSTING_INTERFACE_END
Also note that F-02 is FB01 in disguise (with SA / 40 default values on first screen)
Regards,
Raymond -
Dear All,
Iam facing the problem in BDC Program..the code is..
LOOP AT IT_RECORD.
perform bdc_dynpro using 'SAPMF05A' '0300'.
perform bdc_field using 'BDC_CURSOR' 'RF05A-NEWKO'.
perform bdc_field using 'BDC_OKCODE' '/00'.
perform bdc_field using 'BSEG-WRBTR' IT_RECORD-vramt. "'100000'.
perform bdc_field using 'RF05A-NEWBS' it_record-pkey. "'50'.
perform bdc_field using 'RF05A-NEWKO' it_Record-vrac. "'24450024'.
perform bdc_field using 'DKACB-FMORE' 'X'.
perform bdc_dynpro using 'SAPLKACB' '0002'.
perform bdc_field using 'BDC_CURSOR' 'COBL-GSBER'.
perform bdc_field using 'BDC_OKCODE' '=ENTE'.
perform bdc_field using 'COBL-GSBER' it_record-gsber. "'KABA' .
COUNT = COUNT + 1.
WRITE:/ COUNT.
IF COUNT = 4.
perform bdc_dynpro using 'SAPMF05A' '0302'.
perform bdc_field using 'BDC_CURSOR'
'BSEG-GSBER'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'BSEG-WRBTR' IT_RECORD-VRAMT. "'50000'.
perform bdc_field using 'BSEG-MWSKZ' '**'.
perform bdc_field using 'BSEG-GSBER' IT_RECORD-GSBER ."'kaba'.
perform bdc_field using 'BSEG-ZFBDT' '03.12.2007'.
perform bdc_dynpro using 'SAPMF05A' '0302'.
perform bdc_field using 'BDC_CURSOR'
'BSEG-WRBTR'.
perform bdc_field using 'BDC_OKCODE'
'=BS'.
perform bdc_field using 'BSEG-WRBTR' IT_RECORD-VRAMT. "'50,000.00'.
perform bdc_field using 'BSEG-MWSKZ'
perform bdc_field using 'BSEG-BUPLA' '1800'.
perform bdc_field using 'BSEG-GSBER' IT_RECORD-GSBER."'KABA'.
perform bdc_field using 'BSEG-ZFBDT' '03.12.2007'.
perform bdc_dynpro using 'SAPMF05A' '0700'.
perform bdc_field using 'BDC_CURSOR'
'RF05A-NEWBS'.
perform bdc_field using 'BDC_OKCODE'
'=BU'.
CALL TRANSACTION 'F-02' USING BDCDATA MODE 'A'.
ELSE.
CONTINUE.
ENDIF.
ENDLOOP.
here iam using 4 line item(in text file) ..if count = 4 its not going to next screen, its repeating..its not simulating and posting the doc..
pls guide me friends.hi i send the code here, if u can understand clear it..
report ZBDC_FI_MVF_02 no standard page heading line-size 255.
DATA : BEGIN OF IT_RECORDS OCCURS 0,
BLDAT LIKE BKPF-BLDAT,
BLART LIKE BKPF-BLART,
BUKRS LIKE BKPF-BUKRS,
BUDAT LIKE BKPF-BUDAT,
MONAT LIKE BKPF-MONAT,
WAERS LIKE BKPF-WAERS,
NEWBS LIKE RF05A-NEWBS,
NEWKO LIKE RF05A-NEWKO,
END OF IT_RECORDS.
DATA : BEGIN OF IT_RECORD OCCURS 0,
VRAMT(15), " LIKE BSEG-WRBTR,
PKEY LIKE RF05A-NEWBS,
VrAC(10), " LIKE RF05A-NEWKO,
GSBER LIKE COBL-GSBER,
END OF IT_RECORD.
DATA : BDCDATA LIKE BDCDATA OCCURS 0 WITH HEADER LINE,
DATE1 LIKE SY-DATUM,
DATE2 LIKE SY-DATUM,
LOOP(3).
DATA : COUNT(3).
start-of-selection.
PERFORM GET_DATA1.
PERFORM GET_DATA2.
PERFORM PROCESS_DATA.
FORM PROCESS_DATA.
perform bdc_dynpro using 'SAPMF05A' '0100'.
perform bdc_field using 'BDC_CURSOR'
'RF05A-NEWKO'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
date1 = it_RecordS-bldat.
CONCATENATE DATE16(2) DATE14(2) DATE1+0(4) INTO DATE1.
perform bdc_field using 'BKPF-BLDAT' DATE1. "'03.12.2007'.
perform bdc_field using 'BKPF-BLART' IT_RECORDS-BLART. "'SA'.
perform bdc_field using 'BKPF-BUKRS' IT_RECORDS-BUKRS. "'1800'.
date2 = it_RecordS-bUdat.
CONCATENATE DATE26(2) DATE24(2) DATE2+0(4) INTO DATE2.
perform bdc_field using 'BKPF-BUDAT' DATE2. "'03.12.2007'.
perform bdc_field using 'BKPF-MONAT' IT_RECORDS-MONAT. "'9'.
perform bdc_field using 'BKPF-WAERS' IT_RECORDS-WAERS. "'INR'.
perform bdc_field using 'FS006-DOCID' '*'.
perform bdc_field using 'RF05A-NEWBS' IT_RECORDS-NEWBS. "'40'.
perform bdc_field using 'RF05A-NEWKO' IT_RECORDS-NEWKO. "'24450024'.
*perform bdc_field using 'RF05A-NEWBS' IT_RECORDS-PKEY. "'50'.
*perform bdc_field using 'RF05A-NEWKO' IT_RECORDS-VENAC. "'24450024'.
*perform bdc_field using 'DKACB-FMORE' 'X'.
COUNT = '0'.
LOOP AT IT_RECORD.
perform bdc_dynpro using 'SAPMF05A' '0300'.
perform bdc_field using 'BDC_CURSOR' 'RF05A-NEWKO'.
perform bdc_field using 'BDC_OKCODE' '/00'.
perform bdc_field using 'BSEG-WRBTR' IT_RECORD-vramt. "'100000'.
perform bdc_field using 'RF05A-NEWBS' it_record-pkey. "'50'.
perform bdc_field using 'RF05A-NEWKO' it_Record-vrac. "'24450024'.
perform bdc_field using 'DKACB-FMORE' 'X'.
perform bdc_dynpro using 'SAPLKACB' '0002'.
perform bdc_field using 'BDC_CURSOR' 'COBL-GSBER'.
perform bdc_field using 'BDC_OKCODE' '=ENTE'.
perform bdc_field using 'COBL-GSBER' it_record-gsber. "'KABA' .
COUNT = COUNT + 1.
IF COUNT = 4.
clear count.
perform bdc_dynpro using 'SAPMF05A' '0302'.
perform bdc_field using 'BDC_CURSOR'
'BSEG-GSBER'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'BSEG-WRBTR' IT_RECORD-VRAMT. "'50000'.
perform bdc_field using 'BSEG-MWSKZ' '**'.
perform bdc_field using 'BSEG-GSBER' IT_RECORD-GSBER ."'kaba'.
perform bdc_field using 'BSEG-ZFBDT' '03.12.2007'.
perform bdc_dynpro using 'SAPMF05A' '0302'.
perform bdc_field using 'BDC_CURSOR'
'BSEG-WRBTR'.
perform bdc_field using 'BDC_OKCODE'
'=BS'.
perform bdc_field using 'BSEG-WRBTR' IT_RECORD-VRAMT. "'50,000.00'.
perform bdc_field using 'BSEG-MWSKZ'
perform bdc_field using 'BSEG-BUPLA' '1800'.
perform bdc_field using 'BSEG-GSBER' IT_RECORD-GSBER."'KABA'.
perform bdc_field using 'BSEG-ZFBDT' '03.12.2007'.
perform bdc_dynpro using 'SAPMF05A' '0700'.
perform bdc_field using 'BDC_CURSOR'
'RF05A-NEWBS'.
perform bdc_field using 'BDC_OKCODE'
'=BU'.
CALL TRANSACTION 'F-02' USING BDCDATA MODE 'A'.
ELSE.
CONTINUE.
ENDIF.
ENDLOOP.
perform bdc_dynpro using 'SAPMF05A' '0302'.
perform bdc_field using 'BDC_CURSOR'
'BSEG-GSBER'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'BSEG-WRBTR' '50000'.
perform bdc_field using 'BSEG-MWSKZ' '**'.
perform bdc_field using 'BSEG-GSBER' 'kaba'.
perform bdc_field using 'BSEG-ZFBDT' '03.12.2007'.
perform bdc_dynpro using 'SAPMF05A' '0302'.
perform bdc_field using 'BDC_CURSOR'
'BSEG-WRBTR'.
perform bdc_field using 'BDC_OKCODE'
'=BS'.
perform bdc_field using 'BSEG-WRBTR' IT_RECORD-VRAMT. "'50,000.00'.
perform bdc_field using 'BSEG-MWSKZ' '**'.
perform bdc_field using 'BSEG-BUPLA' '1800'.
perform bdc_field using 'BSEG-GSBER' IT_RECORD-GSBER. "'KABA'.
perform bdc_field using 'BSEG-ZFBDT' '03.12.2007'.
perform bdc_dynpro using 'SAPMF05A' '0700'.
perform bdc_field using 'BDC_CURSOR'
'RF05A-NEWBS'.
perform bdc_field using 'BDC_OKCODE'
'=BU'.
perform bdc_transaction using 'F-02'.
*CALL TRANSACTION 'F-02' USING BDCDATA MODE 'A'.
ENDFORM.
Start new screen *
FORM BDC_DYNPRO USING PROGRAM DYNPRO.
CLEAR BDCDATA.
BDCDATA-PROGRAM = PROGRAM.
BDCDATA-DYNPRO = DYNPRO.
BDCDATA-DYNBEGIN = 'X'.
APPEND BDCDATA.
ENDFORM.
Insert field *
FORM BDC_FIELD USING FNAM FVAL.
IF FVAL <> ' '.
CLEAR BDCDATA.
BDCDATA-FNAM = FNAM.
BDCDATA-FVAL = FVAL.
APPEND BDCDATA.
ENDIF.
ENDFORM.
*& Form GET_DATA
form GET_DATA1 .
CALL FUNCTION 'UPLOAD'
EXPORTING
FILENAME = 'C:\MVF-02_1.txt'
FILETYPE = 'DAT'
TABLES
data_tab = IT_RECORDS
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.
endform. " GET_DATA
*& Form GET_DATA2
form GET_DATA2 .
CALL FUNCTION 'UPLOAD'
EXPORTING
FILENAME = 'C:\MVF-02_2.TXT'
FILETYPE = 'DAT'
TABLES
data_tab = IT_RECORD
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.
endform. " GET_DATA2 -
Problem in BDC: Not Picking the second entry of file
Dear Friends,
I have been working on a BDC and have been facing a problem. This code uploads the first entry of my file properly but repeats the same entry again second time, doesn't refresh or take the second entry of the file.
Please have a look at the code & suggest the necessary corrections.
Regards,
Alok.
report ZFBPS_BDC
no standard page heading line-size 255.
data: bdcdata1 like bdcdata occurs 0 with header line.
data : vf_index type i.
*include bdcrecx1.
DATA: BEGIN OF ENTRIES OCCURS 0,
RECNO(5),
NEWBS(2),
NEWKO(17),
NEWNUM(1),
WRBTR(13),
GSBER(4),
KOSTL(10),
SECCO(4),
ZFBDT(8),
zuonr(18),
SGTXT(50),
FMORE(1),
HKONT(10),
PRCTR(10),
AUFNR(3),
MWSKZ(2),
XBLNR(16),
BKTXT(25),
END OF ENTRIES.
DATA: TEMP(8),
DOCDATE(8),
SPLGL(1),
PKEY(2),
GL(17),
VCHAMT(13),
BUSAREA(4),
SECCODE(4),
FBDT(8),
zzuonr(18),
COSTCEN(10),
AUFNR(3),
SGTXT(50).
data : vf_start_col type i value '1', "start column
vf_start_row type i value '1', "start row
vf_end_col type i value '256', "maximum column
vf_end_row type i value '65536', "maximum row
p_text(20). "stores error messages
Internal Table
data : it_excel type kcde_cells occurs 0 with header line.
*/ Field symbol
field-symbols : <fs>.
parameters: p_file LIKE rlgrap-filename MEMORY ID M01,
NOHEADER AS CHECKBOX.
parameters: COMPANY(4) TYPE C DEFAULT 'SCL',
GROUP(12) TYPE C DEFAULT 'BDCTEST',
USER(12) TYPE C DEFAULT SY-UNAME,
KEEP(1) TYPE C DEFAULT 'X',
POSTDATE LIKE SY-DATUM DEFAULT SY-DATUM,
DOC_TYPE(2) TYPE C DEFAULT 'KR',
HOLDDATE LIKE SY-DATUM.
***********************************************upload data from excel
CALL FUNCTION 'KCD_EXCEL_OLE_TO_INT_CONVERT'
EXPORTING
filename = p_file
i_begin_col = VF_START_COL
i_begin_row = VF_START_ROW
i_end_col = VF_END_COL
i_end_row = VF_END_ROW
tables
intern = IT_EXCEL
EXCEPTIONS
INCONSISTENT_PARAMETERS = 1
UPLOAD_OLE = 2
OTHERS = 3 .
IF sy-subrc <> 0.
WRITE: / 'EXCEL UPLOAD FAILED :', p_file, SY-SUBRC.
else.
sort it_excel by row col.
loop at it_excel.
IF NOHEADER = 'X'
AND It_EXCEL-row = 1.
CONTINUE.
ENDIF.
vf_index = it_excel-col.
assign component vf_index of structure ENTRIES to <fs>.
move it_excel-value to <fs>.
at end of row.
append ENTRIES.
clear ENTRIES.
endat.
endloop.
endif.
start-of-selection.
LOOP AT ENTRIES.
WRITE: / ENTRIES-RECNO,
ENTRIES-NEWBS,
ENTRIES-NEWKO,
ENTRIES-NEWNUM,
ENTRIES-WRBTR,
ENTRIES-GSBER,
ENTRIES-SECCO,
ENTRIES-ZFBDT,
ENTRIES-ZUONR,
ENTRIES-SGTXT.
ENDLOOP.
WRITE: / 'THIS IS THE BDC PROGRAM FOR SAMTEL'.
perform bdc_dynpro using 'SAPMF05A' '0100'.
perform bdc_field using 'BDC_OKCODE' '/00'.
PERFORM BDC_FIELD USING 'BDC_CURSOR' 'RF05A-NEWKO'.
TEMP = POSTDATE.
DOCDATE = TEMP+6(2).
DOCDATE2(2) = TEMP4(2).
DOCDATE4(4) = TEMP0(4).
*PERFORM BDC_FIELD USING 'BKPF-BLDAT' DOCDATE.
*PERFORM BDC_FIELD USING 'BKPF-BLART' DOC_TYPE.
*PERFORM BDC_FIELD USING 'BKPF-BUKRS' COMPANY.
*PERFORM BDC_FIELD USING 'BKPF-WAERS' 'INR'.
*PERFORM BDC_FIELD USING 'BKPF-BUDAT' DOCDATE.
*PERFORM BDC_FIELD USING 'BKPF-XBLNR' 'Deepak'.
*PERFORM BDC_FIELD USING 'BKPF-BKTXT' 'Sahib'.
LOOP AT ENTRIES.
REFRESH BDCDATA1.
perform bdc_dynpro using 'SAPMF05A' '0100'.
perform bdc_field using 'BDC_CURSOR'
'RF05A-NEWKO'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'BKPF-BLDAT' DOCDATE.
PERFORM BDC_FIELD USING 'BKPF-BLART' DOC_TYPE.
PERFORM BDC_FIELD USING 'BKPF-BUKRS' COMPANY.
PERFORM BDC_FIELD USING 'BKPF-WAERS' 'INR'.
PERFORM BDC_FIELD USING 'BKPF-BUDAT' DOCDATE.
PERFORM BDC_FIELD USING 'BKPF-XBLNR' 'Deepak'.
PERFORM BDC_FIELD USING 'BKPF-BKTXT' 'Sahib'.
perform bdc_field using 'RF05A-NEWBS'
ENTRIES-NEWBS.
perform bdc_field using 'RF05A-NEWKO'
ENTRIES-NEWKO.
perform bdc_dynpro using 'SAPMF05A' '0300'.
perform bdc_field using 'BDC_CURSOR'
'BSEG-SGTXT'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'BSEG-WRBTR'
ENTRIES-WRBTR.
perform bdc_field using 'BSEG-ZUONR'
ENTRIES-ZUONR.
perform bdc_field using 'BSEG-SGTXT'
ENTRIES-SGTXT.
perform bdc_field using 'DKACB-FMORE'
ENTRIES-FMORE.
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-GSBER'
ENTRIES-GSBER.
perform bdc_field using 'COBL-KOSTL'
ENTRIES-KOSTL.
perform bdc_dynpro using 'SAPMF05A' '0300'.
perform bdc_field using 'BDC_CURSOR'
'RF05A-NEWKO'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'BSEG-WRBTR'
ENTRIES-WRBTR.
perform bdc_field using 'BSEG-ZUONR'
ENTRIES-ZUONR.
perform bdc_field using 'BSEG-SGTXT'
ENTRIES-SGTXT.
perform bdc_field using 'RF05A-NEWBS'
ENTRIES-NEWBS.
perform bdc_field using 'RF05A-NEWKO'
ENTRIES-NEWKO.
perform bdc_field using 'DKACB-FMORE'
ENTRIES-FMORE.
perform bdc_dynpro using 'SAPLKACB' '0002'.
perform bdc_field using 'BDC_CURSOR'
'COBL-GSBER'.
perform bdc_field using 'BDC_OKCODE'
'=ENTE'.
perform bdc_field using 'COBL-GSBER'
ENTRIES-GSBER.
perform bdc_field using 'COBL-KOSTL'
ENTRIES-KOSTL.
perform bdc_field using 'COBL-PRCTR'
ENTRIES-PRCTR.
perform bdc_dynpro using 'SAPMF05A' '0300'.
perform bdc_field using 'BDC_CURSOR'
'RF05A-NEWKO'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'BSEG-WRBTR'
ENTRIES-WRBTR.
perform bdc_field using 'BSEG-SGTXT'
ENTRIES-SGTXT.
perform bdc_field using 'RF05A-NEWBS'
ENTRIES-NEWBS.
perform bdc_field using 'RF05A-NEWKO'
ENTRIES-NEWKO.
perform bdc_field using 'DKACB-FMORE'
ENTRIES-FMORE.
perform bdc_dynpro using 'SAPLKACB' '0002'.
perform bdc_field using 'BDC_CURSOR'
'COBL-GSBER'.
perform bdc_field using 'BDC_OKCODE'
'=ENTE'.
perform bdc_field using 'COBL-GSBER'
ENTRIES-GSBER.
perform bdc_dynpro using 'SAPMF05A' '0300'.
perform bdc_field using 'BDC_CURSOR'
'BSEG-WRBTR'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'BSEG-WRBTR'
ENTRIES-WRBTR.
perform bdc_field using 'DKACB-FMORE'
ENTRIES-FMORE.
perform bdc_dynpro using 'SAPLKACB' '0002'.
perform bdc_field using 'BDC_CURSOR'
'COBL-GSBER'.
perform bdc_field using 'BDC_OKCODE'
'=ENTE'.
perform bdc_field using 'COBL-GSBER'
ENTRIES-GSBER.
perform bdc_dynpro using 'SAPMF05A' '0300'.
perform bdc_field using 'BDC_CURSOR'
'RF05A-NEWKO'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'BSEG-WRBTR'
ENTRIES-WRBTR.
perform bdc_field using 'BSEG-SGTXT'
ENTRIES-SGTXT.
perform bdc_field using 'RF05A-NEWBS'
ENTRIES-NEWBS.
perform bdc_field using 'RF05A-NEWKO'
ENTRIES-NEWKO.
perform bdc_field using 'DKACB-FMORE'
ENTRIES-FMORE.
perform bdc_dynpro using 'SAPLKACB' '0002'.
perform bdc_field using 'BDC_CURSOR'
'COBL-GSBER'.
perform bdc_field using 'BDC_OKCODE'
'=ENTE'.
perform bdc_field using 'COBL-GSBER'
ENTRIES-GSBER.
perform bdc_dynpro using 'SAPMF05A' '0300'.
perform bdc_field using 'BDC_CURSOR'
'RF05A-NEWKO'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'BSEG-WRBTR'
ENTRIES-WRBTR.
perform bdc_field using 'BSEG-SGTXT'
ENTRIES-SGTXT.
perform bdc_field using 'RF05A-NEWBS'
ENTRIES-NEWBS.
perform bdc_field using 'RF05A-NEWKO'
ENTRIES-NEWKO.
perform bdc_field using 'DKACB-FMORE'
ENTRIES-FMORE.
perform bdc_dynpro using 'SAPLKACB' '0002'.
perform bdc_field using 'BDC_CURSOR'
'COBL-GSBER'.
perform bdc_field using 'BDC_OKCODE'
'=ENTE'.
perform bdc_field using 'COBL-GSBER'
ENTRIES-GSBER.
perform bdc_dynpro using 'SAPMF05A' '0300'.
perform bdc_field using 'BDC_CURSOR'
'RF05A-NEWKO'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'BSEG-WRBTR'
ENTRIES-WRBTR.
perform bdc_field using 'BSEG-SGTXT'
ENTRIES-SGTXT.
perform bdc_field using 'RF05A-NEWBS'
ENTRIES-NEWBS.
perform bdc_field using 'RF05A-NEWKO'
ENTRIES-NEWKO.
perform bdc_field using 'DKACB-FMORE'
ENTRIES-FMORE.
perform bdc_dynpro using 'SAPLKACB' '0002'.
perform bdc_field using 'BDC_CURSOR'
'COBL-GSBER'.
perform bdc_field using 'BDC_OKCODE'
'=ENTE'.
perform bdc_field using 'COBL-GSBER'
ENTRIES-GSBER.
perform bdc_dynpro using 'SAPMF05A' '0302'.
perform bdc_field using 'BDC_CURSOR'
'BSEG-SGTXT'.
perform bdc_field using 'BDC_OKCODE'
'=AB'.
perform bdc_field using 'BSEG-HKONT'
ENTRIES-HKONT.
perform bdc_field using 'BSEG-WRBTR'
ENTRIES-WRBTR.
perform bdc_field using 'BSEG-MWSKZ'
ENTRIES-MWSKZ.
perform bdc_field using 'BSEG-ZFBDT'
ENTRIES-ZFBDT.
perform bdc_field using 'BSEG-SGTXT'
ENTRIES-SGTXT.
perform bdc_dynpro using 'SAPLFWTD' '0100'.
perform bdc_field using 'BDC_CURSOR'
'WITH_ITEM-WT_WITHCD(01)'.
perform bdc_field using 'BDC_OKCODE'
'=GO'.
perform bdc_dynpro using 'SAPMF05A' '0700'.
perform bdc_field using 'BDC_CURSOR'
'RF05A-NEWBS'.
perform bdc_field using 'BDC_OKCODE'
'=BS'.
perform bdc_field using 'BKPF-XBLNR'
ENTRIES-XBLNR.
perform bdc_field using 'BKPF-BKTXT'
ENTRIES-BKTXT.
perform bdc_dynpro using 'SAPMF05A' '0700'.
perform bdc_field using 'BDC_CURSOR'
'RF05A-NEWBS'.
perform bdc_field using 'BDC_OKCODE'
'=BU'.
perform bdc_field using 'BKPF-XBLNR'
ENTRIES-XBLNR.
perform bdc_field using 'BKPF-BKTXT'
ENTRIES-BKTXT.
perform bdc_field using 'BDC_OKCODE'
'=YES'.
call transaction 'FB01' using bdcdata1 mode 'A'.
ENDLOOP.
Start new screen *
form bdc_dynpro using program dynpro.
clear bdcdata1.
bdcdata1-program = program.
bdcdata1-dynpro = dynpro.
bdcdata1-dynbegin = 'X'.
append bdcdata1.
endform.
Insert field *
form bdc_field using fnam fval.
clear bdcdata1.
bdcdata1-fnam = fnam.
bdcdata1-fval = fval.
append bdcdata1.
endform.Hi
You better use LSMW instaed of using BDC for FB01 Transaction. The Problem is not with REFRESH.
Regards,
Anji -
Pop of prctr field in programm
hi,
i make a bdc using f-27 call trans.
there it is work fine but a problem in 3rd screen that at time of saving amount data at 3rd screen the (coding block name screen)----> are pop up in this the profit centre field are given as( whaildummy) this is given by me and then data is saved but i want that it directly save as we run the tcode f-27 in actual way witout codes this screen are not come but in my codes it will come at 3rd screen with popup and after given profit centre it save in company code.
plz help me i am wait for u'r rply plz
thanks
jayant
i am send the codes and flat file
report ZF27TEST
no standard page heading line-size 255.
I N T E R N A L T A B L E *
TYPES: BEGIN OF it_output,
bldat(10) TYPE C, "Document Date
blart TYPE bkpf-blart, "Document Type
bukrs TYPE bkpf-bukrs, "Company Code
budat(10) TYPE C, "Posting Date
monat TYPE bkpf-monat, "Period
waers TYPE bkpf-waers, "Currency
xblnr TYPE bkpf-xblnr, "Reference Field
docid TYPE fs006-docid, "Document ID
newbs TYPE rf05a-newbs, "Posting Key
newko TYPE rf05a-newko, "Account Code
wrbtr(16) TYPE C, "Amount in Document currency
zfbdt(10) TYPE C, "Baseline Date
newbs2 TYPE rf05a-newbs, "Account Key2
newko2 TYPE rf05a-newko, "Account code2
wrbtr2(16) TYPE C, "Amount2
END OF it_output.
DATA lt_output TYPE it_output OCCURS 0 WITH HEADER LINE.
DATA it_bdc LIKE bdcdata OCCURS 0 WITH HEADER LINE.
DATA it_messtab LIKE bdcmsgcoll OCCURS 1 WITH HEADER LINE.
D A T A *
DATA: message TYPE string.
DATA: p_file1 type string.
S E L E C T - O P T I O N S / P A R A M E T E R S *
SELECTION-SCREEN BEGIN OF BLOCK block0 WITH FRAME.
PARAMETERS : p_file LIKE rlgrap-filename OBLIGATORY.
SELECTION-SCREEN END OF BLOCK block0.
A T S E L E C T I O N - S C R E E N *
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
CALL FUNCTION 'KD_GET_FILENAME_ON_F4'
EXPORTING
static = 'X'
mask = space
CHANGING
file_name = p_file.
S T A R T - O F - S E L E C T I O N
START-OF-SELECTION.
PERFORM upload.
PERFORM bdc.
PERFORM write_message.
*& Form bdc
text
FORM bdc.
LOOP AT lt_output.
READ TABLE lt_output INDEX 1.
perform bdc_dynpro using 'SAPMF05A' '0100'.
perform bdc_field using 'BDC_CURSOR' 'RF05A-NEWKO'.
perform bdc_field using 'BDC_OKCODE' '/00'.
perform bdc_field using 'BKPF-BLDAT' lt_output-bldat.
perform bdc_field using 'BKPF-BLART' lt_output-blart.
perform bdc_field using 'BKPF-BUKRS' lt_output-bukrs.
perform bdc_field using 'BKPF-BUDAT' lt_output-budat.
perform bdc_field using 'BKPF-MONAT' lt_output-monat.
perform bdc_field using 'BKPF-WAERS' lt_output-waers.
perform bdc_field using 'BKPF-XBLNR' lt_output-xblnr.
perform bdc_field using 'FS006-DOCID' lt_output-docid.
perform bdc_field using 'RF05A-NEWBS' lt_output-newbs.
perform bdc_field using 'RF05A-NEWKO' lt_output-newko.
perform bdc_dynpro using 'SAPMF05A' '0302'.
perform bdc_field using 'BDC_CURSOR' 'RF05A-NEWKO'.
perform bdc_field using 'BDC_OKCODE' '/00'.
perform bdc_field using 'BSEG-WRBTR' lt_output-wrbtr.
*perform bdc_field using 'BSEG-ZTERM' 'V030'.
*perform bdc_field using 'BSEG-ZBD1T' '30'.
*perform bdc_field using 'BSEG-ZFBDT' '08.04.2008'.
perform bdc_field using 'RF05A-NEWBS' lt_output-newbs2.
perform bdc_field using 'RF05A-NEWKO' lt_output-newko2.
perform bdc_dynpro using 'SAPMF05A' '0300'.
perform bdc_field using 'BDC_CURSOR' 'BSEG-WRBTR'.
perform bdc_field using 'BDC_OKCODE' '=BU'.
perform bdc_field using 'BSEG-WRBTR' lt_output-wrbtr2.
perform bdc_field using 'DKACB-FMORE' 'X'.
CALL TRANSACTION 'F-27' USING it_bdc mode 'A'
MESSAGES INTO it_messtab.
CLEAR it_bdc. REFRESH it_bdc.
ENDLOOP.
ENDFORM. "bdc
*& Form write_message
text
FORM write_message.
LOOP AT it_messtab .
CLEAR message.
CALL FUNCTION 'FORMAT_MESSAGE'
EXPORTING
id = sy-msgid
lang = 'EN'
no = sy-msgno
v1 = sy-msgv1
v2 = sy-msgv2
v3 = sy-msgv3
v4 = sy-msgv4
IMPORTING
msg = message.
CASE it_messtab-msgtyp.
WHEN 'S'.
WRITE:/ message.
CLEAR message.
WHEN 'E'.
FORMAT COLOR 6 ON.
WRITE:/ message.
CLEAR message.
ENDCASE.
ENDLOOP.
ENDFORM. "write_message
FORM BDC_DYNPRO *
--> PROGRAM *
--> DYNPRO *
FORM bdc_dynpro USING program dynpro.
it_bdc-program = program.
it_bdc-dynpro = dynpro.
it_bdc-dynbegin = 'X'.
APPEND it_bdc.
CLEAR it_bdc.
ENDFORM. "BDC_DYNPRO
FORM *
FORM bdc_field USING fnam fval.
it_bdc-fnam = fnam.
it_bdc-fval = fval.
APPEND it_bdc.
CLEAR it_bdc.
ENDFORM. "BDC_FIELD
*& Form upload
text
--> p1 text
<-- p2 text
FORM upload .
p_file1 = p_file.
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
filename = p_file1
FILETYPE = 'DAT'
tables
data_tab = lt_output
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. " upload
F O R M A L E N D - O F - P R O G R A M *
flat file is
30.04.2008 DA 8601 30.04.2008 4 CNY REF1 31 90001 500 30.04.2008 40 3990000002 500
in between REF1 and pstky 31 there is blank tab for DOCID
thanksHello Suresh,
The pop-up comes due to an inconsistent settings maintained in SE54. There is a flag called 'Compare Flag', which I am assuming, has been set to Automatically Adjustable in SE54.
But beyond this, you have manually adjusted the screen parameters, which contradict with the Compare flag settings.
Goto SE54, and change the flag to Adjustable in Dialog and save the SE54.
The pop-up should be eliminated.
Regards,
Rekha
Maybe you are looking for
-
Initializing properties for form objects
If I want to set starting values for some form objects as soon as the form opens, what's the best event to use? I want to set a date field's value to the current date. I also want to set the Presence property of some objects to "Visible" or "Invisibl
-
The preview stopped working in the develop module.
Initially the preview worked for 15 minutes and then stopped generating a preview of the desired pre-set. Clicking on the pre-set did have the correct picture but the preview wasn't available. It would be easier to see what preview you were looking a
-
When attempting synch iTunes photos tab yields spinning ball.
When synching my iPhone or iPad a spinning wheel appears when on the photos tab in iTunes. In other words, I cannot select photos to transfer from my iMac to my iPad or iPhone. The spinning wheel never goes away while on the photos tab. Other tabs
-
Itunes could not sync contacts to the iphone because the sync server failed
itunes could not sync contacts to the iphone because the sync server failed
-
HT1306 Where can you buy these CR 2032 Batteries for the remote?
I have two remote controls. They are both the same. One came with Apple TV and one came woth my IMAC computer. I am trying to find out where to buy the batteries for the remote. The numbers are CR-2032 or BR-2032.