Application Development Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 

Problem in bdc

Former Member
0 Kudos

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

1 ACCEPTED SOLUTION

praveen_kumar132
Participant
0 Kudos

Hi ,

Explain ur query more detail .

Regards,

Praveen.

3 REPLIES 3

praveen_kumar132
Participant
0 Kudos

Hi ,

Explain ur query more detail .

Regards,

Praveen.

Former Member
0 Kudos

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.

0 Kudos

i think this is not enough to give the answer me more clear,

sriiii