09-22-2008 7:59 AM
Dear Friends
I am working with FI BDC Tcode FS00,
in that program it was (X) was comming in wrong place how can i finde what this was comming 4m bdc programing
&----
*& Report ZDHBVN_FI_FSOO
*&
&----
*&
*&
&----
REPORT ZDHBVN_FI_FSOO NO STANDARD PAGE HEADING
LINE-SIZE 150
LINE-COUNT 60 .
----
DATA DECLARATIONS *
----
DATA : BEGIN OF t_data OCCURS 0,
data element: SAKNR " G/L Account
saknr(010),
data element: BUKRS " Company Code
bukrs(004),
data element: KTOKS " Account Group
ktoks(004),
data element: XPLACCT, " P&L statement acct radio button
xplacct(001),
data element: XBILK " Balance Sheet acct radio button
xbilk(001),
data element: TXT20_ML " Short Text
txt20(020),
data element: TXT50_ML " Long Text
txt50(050),
data element: WAERS " Currency
waers(005),
data element:XSALH " Indicator manage local currency
xsalh(001),
data element: MWSKZ " Indicator manage local currency
mwskz(002),
data element: XMWNO " Posting Key without tax allowed
xmwno(001),
data element: MITKZ " Recouncillation acct type
MITKZ(001),
data element: XOPVW " Open item management
xopvw(001),
data element: XKRES " Line item display
xkres(001),
data element: ZUAWA " sort key
zuawa(003),
data element: FSTAG " Field status group
fstag(004),
data element: XINTB " Indictor posted automatically
xintb(001),
data element: XGKON " Relevant Cash
xgkon(001),
data element: HBKID " House Bank
hbkid(005),
data element: HKTID " Account ID
hktid(005),
END OF t_data.
DATA BEGIN OF t_invalid_data OCCURS 0.
INCLUDE STRUCTURE t_data.
DATA : reason(70),
END OF t_invalid_data.
DATA : BEGIN OF t_dynvalue OCCURS 0.
INCLUDE STRUCTURE dynpread.
DATA : END OF t_dynvalue.
DATA : t_excel_data TYPE alsmex_tabline
OCCURS 0 WITH HEADER LINE.
DATA : BEGIN OF t_unixdata OCCURS 0,
char(100),
END OF t_unixdata.
DATA : BEGIN OF w,
format(25) VALUE ',.,..',
fieldvalue,
text01(30),
message(60),
line01(132),
line02 LIKE w-line01,
line03 LIKE w-line01,
filename TYPE string,
count TYPE i,
index LIKE sy-tabix,
END OF w.
DATA : t_bdcdata LIKE bdcdata OCCURS 0 WITH HEADER LINE,
t_bdcmsg LIKE bdcmsgcoll OCCURS 0 WITH HEADER LINE,
bdc_mode VALUE 'A'.
----
Selections/parameters *
----
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
SELECTION-SCREEN SKIP 1.
PARAMETER : p_file LIKE rlgrap-filename OBLIGATORY,
p_pc RADIOBUTTON GROUP gr1,
p_unix RADIOBUTTON GROUP gr1.
SELECTION-SCREEN END OF BLOCK b1.
----
INITIALIZATION *
----
INITIALIZATION.
----
AT SELECTION-SCREEN *
----
AT SELECTION-SCREEN ON BLOCK b1.
IF NOT p_pc IS INITIAL.
IF NOT p_file IS INITIAL AND ( p_file1(2) <> ':\' OR p_file0(1)
CN 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz' ).
MESSAGE e000(0k) WITH 'Enter a valid PC file name'.
ENDIF.
ELSE.
IF NOT p_file IS INITIAL AND p_file CA ':\'.
MESSAGE e000(0k) WITH 'Enter a valid UNIX file name'.
ENDIF.
ENDIF.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
PERFORM read_screenvalue.
IF NOT w-fieldvalue IS INITIAL.
PERFORM get_filename.
ELSE.
MESSAGE i000(0k) WITH 'File selection not available for UNIX.'.
ENDIF.
AT SELECTION-SCREEN.
PERFORM read_screenvalue.
IF sy-ucomm EQ 'SJOB' AND NOT w-fieldvalue IS INITIAL.
MESSAGE e000(0k) WITH 'File can not be uploaded from presentation'
'server while executing in background'.
ENDIF.
----
TOP-OF-PAGE *
----
TOP-OF-PAGE.
----
START-OF-SELECTION *
----
START-OF-SELECTION.
PERFORM upload_data_to_internal_table.
PERFORM filter_uploaded_data.
PERFORM upload_data.
END-OF-SELECTION.
PERFORM write_failed_data .
&----
*& Form get_filename
&----
text
----
--> p1 text
<-- p2 text
----
FORM get_filename .
CALL FUNCTION 'WS_FILENAME_GET'
EXPORTING
def_path = 'C:\'
mask = w-format
mode = 'O'
title = 'Open File '
IMPORTING
filename = p_file
EXCEPTIONS
inv_winsys = 1
no_batch = 2
selection_cancel = 3
selection_error = 4
OTHERS = 5.
IF sy-subrc <> 0 AND sy-subrc <> 3.
MESSAGE i000(0k) WITH 'Filename get (F4) not available.'.
ENDIF.
ENDFORM. " get_filename
&----
*& Form read_screenvalue
&----
text
----
--> p1 text
<-- p2 text
----
FORM read_screenvalue .
CLEAR : t_dynvalue.
REFRESH : t_dynvalue.
MOVE 'P_PC' TO t_dynvalue-fieldname.
APPEND t_dynvalue.
CLEAR : t_dynvalue.
MOVE 'P_UNIX' TO t_dynvalue-fieldname.
APPEND t_dynvalue.
CALL FUNCTION 'DYNP_VALUES_READ'
EXPORTING
dyname = sy-repid
dynumb = sy-dynnr
TABLES
dynpfields = t_dynvalue
EXCEPTIONS
invalid_abapworkarea = 1
invalid_dynprofield = 2
invalid_dynproname = 3
invalid_dynpronummer = 4
invalid_request = 5
no_fielddescription = 6
invalid_parameter = 7
undefind_error = 8
double_conversion = 9
stepl_not_found = 10
OTHERS = 11.
IF sy-subrc = 0.
READ TABLE t_dynvalue INDEX 1.
IF sy-subrc EQ 0.
MOVE t_dynvalue-fieldvalue TO w-fieldvalue.
ENDIF.
ENDIF.
ENDFORM. " read_screenvalue
&----
*& Form upload_data_to_internal_table
&----
Subroutine for upload data internal table
----
--> p1 text
<-- p2 text
----
FORM upload_data_to_internal_table .
IF NOT p_pc IS INITIAL.
Code to upload data from PC
CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
EXPORTING
filename = p_file
i_begin_col = 1
i_begin_row = 1
i_end_col = 30
i_end_row = 65300
TABLES
intern = t_excel_data
EXCEPTIONS
inconsistent_parameters = 1
upload_ole = 2
OTHERS = 3.
IF sy-subrc <> 0.
MESSAGE i000(0k) WITH 'Error in uploading file. Returncode'
sy-subrc.
ENDIF.
SORT t_excel_data BY row col.
LOOP AT t_excel_data.
IF t_excel_data-row GE 2. "To ignore header line of file
CASE t_excel_data-col.
WHEN 1.
t_data-saknr = t_excel_data-value.
WHEN 2.
t_data-ktoks = t_excel_data-value.
WHEN 3.
t_data-xplacct = t_excel_data-value.
WHEN 4.
t_data-xbilk = t_excel_data-value.
WHEN 5.
t_data-txt20 = t_excel_data-value.
WHEN 6.
t_data-txt50 = t_excel_data-value.
WHEN 7.
t_data-xsalh = t_excel_data-value.
WHEN 8.
t_data-mwskz = t_excel_data-value.
WHEN 9.
t_data-xmwno = t_excel_data-value.
WHEN 10.
T_DATA-MITKZ = T_EXCEL_DATA-VALUE.
WHEN 11.
t_data-xopvw = t_excel_data-value.
WHEN 12.
t_data-zuawa = t_excel_data-value.
WHEN 13.
t_data-fstag = t_excel_data-value.
WHEN 14.
t_data-xintb = t_excel_data-value.
WHEN 15.
t_data-xgkon = t_excel_data-value.
WHEN 16.
t_data-hbkid = t_excel_data-value.
WHEN 17.
t_data-hktid = t_excel_data-value.
CLEAR : t_excel_data.
ENDCASE.
AT END OF row.
t_data-bukrs = 'BP01'.
APPEND t_data.
CLEAR t_data.
ENDAT.
CLEAR : t_excel_data.
ENDIF.
ENDLOOP.
DESCRIBE TABLE t_data LINES w-count.
IF w-count IS INITIAL.
MESSAGE e000(0k) WITH 'No data to process from the flat file.'.
STOP.
ENDIF.
ELSE.
Code to upload that from UNIX
CLEAR : w-count.
OPEN DATASET p_file FOR INPUT IN TEXT MODE ENCODING DEFAULT
MESSAGE w-message.
IF sy-subrc <> 0.
SKIP 2.
WRITE :/10 'Error in opening file from UNIX.'.
WRITE :/10 w-message.
WRITE :/10 'Filename with path', p_file(100).
STOP.
ENDIF.
DO.
CLEAR t_data.
READ DATASET p_file INTO t_unixdata.
IF sy-subrc <> 0.
EXIT.
ENDIF.
APPEND t_unixdata.
ENDDO.
CLOSE DATASET p_file.
LOOP AT t_unixdata.
IF sy-tabix GT 1. "To ignore header line of file
SPLIT t_unixdata-char AT ',' INTO t_data-saknr
t_data-bukrs
t_data-ktoks
t_data-xplacct
t_data-xbilk
t_data-waers
t_data-xsalh
t_data-mwskz
t_data-xmwno
t_data-xopvw
t_data-xkres
t_data-zuawa
t_data-fstag
t_data-xintb
t_data-xgkon
t_data-hbkid
t_data-hktid.
APPEND t_data.
CLEAR t_data.
ENDIF.
ENDLOOP.
CLEAR : w-count.
DESCRIBE TABLE t_data LINES w-count.
IF w-count IS INITIAL.
MESSAGE e000(0k) WITH 'No data to process from the flat file.'.
STOP.
ENDIF.
ENDIF.
ENDFORM. " upload_data_to_internal_table
&----
*& Form filter_uploaded_data
&----
text
----
--> p1 text
<-- p2 text
----
FORM filter_uploaded_data .
LOOP AT T_DATA.
W-INDEX = SY-TABIX.
ENDLOOP.
ENDFORM. " filter_uploaded_data
&----
*& Form upload_data
&----
text
----
--> p1 text
<-- p2 text
----
FORM upload_data .
LOOP AT t_data.
PERFORM fill_bdc_structure.
PERFORM bdc_transaction.
ENDLOOP.
ENDFORM. " upload_data
&----
*& Form fill_bdc_structure
&----
text
----
--> p1 text
<-- p2 text
----
FORM fill_bdc_structure .
REFRESH: t_bdcdata,
t_bdcmsg.
*First Screen ( Type / Description )
perform bdc_dynpro using 'SAPLGL_ACCOUNT_MASTER_MAINTAIN' '2001'.
perform bdc_field using 'BDC_OKCODE'
'=ACC_CRE'.
perform bdc_field using 'BDC_CURSOR'
'GLACCOUNT_SCREEN_KEY-SAKNR'.
perform bdc_field using 'GLACCOUNT_SCREEN_KEY-SAKNR'
t_data-saknr.
perform bdc_field using 'GLACCOUNT_SCREEN_KEY-BUKRS'
'BP01'.
perform bdc_dynpro using 'SAPLGL_ACCOUNT_MASTER_MAINTAIN' '2001'.
perform bdc_field using 'BDC_OKCODE'
'=2102_GROUP'.
perform bdc_field using 'BDC_CURSOR'
'GLACCOUNT_SCREEN_COA-KTOKS'.
perform bdc_field using 'GLACCOUNT_SCREEN_COA-KTOKS'
t_data-ktoks.
perform bdc_field using 'GLACCOUNT_SCREEN_COA-XPLACCT'
'X'.
perform bdc_dynpro using 'SAPLGL_ACCOUNT_MASTER_MAINTAIN' '2001'.
perform bdc_field using 'BDC_OKCODE'
'=TAB02'.
perform bdc_field using 'GLACCOUNT_SCREEN_COA-KTOKS'
t_data-ktoks.
if t_data-ktoks = 'PL' .
perform bdc_field using 'GLACCOUNT_SCREEN_COA-XPLACCT'
'X'.
elseif t_data-ktoks = 'pl'.
perform bdc_field using 'GLACCOUNT_SCREEN_COA-XPLACCT'
'X'.
endif.
if t_data-ktoks = 'AS'.
perform bdc_field using 'GLACCOUNT_SCREEN_COA-XBILK'
'X'.
t_data-xbilk.
elseif t_data-ktoks = 'GL'.
perform bdc_field using 'GLACCOUNT_SCREEN_COA-XBILK'
'X'.
t_data-xbilk.
elseif t_data-ktoks = 'AS'.
perform bdc_field using 'GLACCOUNT_SCREEN_COA-XBILK'
t_data-xbilk.
endif.
perform bdc_field using 'BDC_CURSOR'
'GLACCOUNT_SCREEN_COA-TXT50_ML'.
perform bdc_field using 'GLACCOUNT_SCREEN_COA-TXT20_ML'
t_data-txt20.
perform bdc_field using 'GLACCOUNT_SCREEN_COA-TXT50_ML'
t_data-txt50.
perform bdc_dynpro using 'SAPLGL_ACCOUNT_MASTER_MAINTAIN' '2001'.
perform bdc_field using 'BDC_OKCODE'
'=TAB03'.
perform bdc_field using 'GLACCOUNT_SCREEN_CCODE-WAERS'
'INR'.
perform bdc_field using 'GLACCOUNT_SCREEN_CCODE-XSALH'
t_data-xsalh.
perform bdc_field using 'GLACCOUNT_SCREEN_CCODE-MWSKZ'
t_data-mwskz.
if t_data-xmwno = 'X'.
perform bdc_field using 'GLACCOUNT_SCREEN_CCODE-XMWNO'
'X'.
endif.
perform bdc_field using 'GLACCOUNT_SCREEN_CCODE-MITKZ'
t_data-mitkz.
perform bdc_field using 'BDC_CURSOR'
'GLACCOUNT_SCREEN_CCODE-ZUAWA'.
perform bdc_field using 'GLACCOUNT_SCREEN_CCODE-XKRES'
'X'.
perform bdc_field using 'GLACCOUNT_SCREEN_CCODE-ZUAWA'
t_data-zuawa.
perform bdc_dynpro using 'SAPLGL_ACCOUNT_MASTER_MAINTAIN' '2001'.
perform bdc_field using 'BDC_OKCODE'
'=SAVE'.
perform bdc_field using 'BDC_CURSOR'
'GLACCOUNT_SCREEN_CCODE-FSTAG'.
perform bdc_field using 'GLACCOUNT_SCREEN_CCODE-FSTAG'
t_data-fstag.
if t_data-xintb = 'X'.
Perform bdc_field using 'BDC_CURSOR'
'GLACCOUNT_SCREEN_CCODE-XINTB'.
perform bdc_field using 'GLACCOUNT_SCREEN_CCODE-XINTB'
'X'.
endif.
if t_data-xgkon = 'X'.
perform bdc_field using 'BDC_CURSOR'
'GLACCOUNT_SCREEN_CCODE-XGKON'.
perform bdc_field using 'GLACCOUNT_SCREEN_CCODE-XGKON'
'X'.
endif.
perform bdc_field using 'GLACCOUNT_SCREEN_CCODE-HBKID'
t_data-hbkid.
perform bdc_field using 'GLACCOUNT_SCREEN_CCODE-HKTID'
t_data-hktid.
*Lastly edited by abap01
*perform bdc_dynpro using 'SAPLGL_ACCOUNT_MASTER_MAINTAIN' '2001'.
*perform bdc_field using 'BDC_OKCODE'
*'/EEXIT'.
*perform bdc_field using 'BDC_CURSOR'
*'GLACCOUNT_SCREEN_CCODE-XGKON'.
*perform bdc_dynpro using 'SAPLSPO1' '0100'.
*perform bdc_field using 'BDC_OKCODE'
*'=YES'.
*Lastly edited by abap01
ENDFORM. " fill_bdc_structure
&----
*& Form bdc_transaction
&----
text
----
--> p1 text
<-- p2 text
----
FORM bdc_transaction .
bdc_mode = 'A'.
CALL TRANSACTION 'FS00' USING t_bdcdata
MODE bdc_mode
UPDATE 'S'
MESSAGES INTO t_bdcmsg.
*Record error if sales order not changed
LOOP AT t_bdcmsg WHERE msgtyp EQ 'E'
OR msgtyp EQ 'A'.
CLEAR t_invalid_data.
MOVE-CORRESPONDING t_data TO t_invalid_data.
CALL FUNCTION 'FORMAT_MESSAGE'
EXPORTING
id = t_bdcmsg-msgid
lang = 'EN'
no = t_bdcmsg-msgnr
v1 = t_bdcmsg-msgv1
v2 = t_bdcmsg-msgv2
v3 = t_bdcmsg-msgv3
v4 = t_bdcmsg-msgv4
IMPORTING
msg = t_invalid_data-reason
EXCEPTIONS
not_found = 1
OTHERS = 2.
APPEND t_invalid_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.
ENDLOOP.
ENDFORM. " bdc_transaction
&----
*& Form bdc_dynpro
&----
text
----
-->P_0749 text
-->P_0750 text
----
FORM bdc_dynpro USING program dynpro.
CLEAR t_bdcdata.
t_bdcdata-program = program.
t_bdcdata-dynpro = dynpro.
t_bdcdata-dynbegin = 'X'.
APPEND t_bdcdata.
ENDFORM. " bdc_dynpro
&----
*& Form bdc_field
&----
text
----
-->P_0779 text
-->P_0780 text
----
FORM bdc_field USING fnam fval.
CLEAR t_bdcdata.
t_bdcdata-fnam = fnam.
t_bdcdata-fval = fval.
APPEND t_bdcdata.
ENDFORM. " bdc_field
&----
*& Form write_failed_data
&----
text
----
--> p1 text
<-- p2 text
----
FORM write_failed_data .
LOOP AT t_invalid_data.
WRITE :/1 t_invalid_data-saknr,
9 t_invalid_data-bukrs,
14 t_invalid_data-ktoks,
65 t_invalid_data-txt20,
76 t_invalid_data-reason.
ENDLOOP.
ENDFORM. " write_failed_data
09-22-2008 8:15 AM
09-22-2008 8:15 AM
09-22-2008 8:19 AM
Hi Shanthi,
Check whether you submitted the Dynpro's, screen numbers, field names and field values correctly or not. for checking this. just place the cursor on the field and press F1 and goto technical Information. you will find the required info on all the above mentioned.
Regards,
Swapna.
09-22-2008 9:01 AM
i think this is not enough to give the answer me more clear,
sriiii