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: 

Data migration

Former Member
0 Kudos

Hi Friends,

I am new to data migration.

I have a data in the excel sheet i need to send the data through screen FB60, what is the best method to send the data into the database through that screen. Also I have doubt while moving the data into the screen if there are any error records, how to find and process that error records.

Regards,

Line

1 ACCEPTED SOLUTION

Former Member
0 Kudos

Hi Line,

Sorry I thought that i send it to u . Now iam sending Just go thru it.

REPORT zbdc_f65 NO STANDARD PAGE HEADING.

************************************************************************

  • INCLUDES

************************************************************************

INCLUDE <icon>.

************************************************************************

  • DATA DECLARATIONS

************************************************************************

DATA t_ctuprms LIKE ctu_params.

DATA: BEGIN OF t_anlb OCCURS 0,

afabe LIKE anlb-afabe,

xloev LIKE anlb-xloev,

END OF t_anlb.

DATA: BEGIN OF t_itab OCCURS 0,

newko1 LIKE rf05v-newko,

newko2 LIKE rf05v-newko,

wrbtr(13),

billno(20),

billdt(10),

kostl LIKE cobl-kostl,

END OF t_itab.

DATA: BEGIN OF t_itab1 OCCURS 0,

newko1 LIKE rf05v-newko,

newko2 LIKE rf05v-newko,

wrbtr(13),

txt(20),

ltxt(50),

kostl1 LIKE cobl-kostl,

kostl2 LIKE cobl-kostl,

END OF t_itab1.

DATA: BEGIN OF t_itab2 OCCURS 0,

newko1 LIKE rf05v-newko,

newko2 LIKE rf05v-newko,

wrbtr(13),

bill_no(20),

kostl LIKE cobl-kostl,

END OF t_itab2.

                                • start of chg0003***************

DATA: BEGIN OF t_itab3 OCCURS 0,

newko1 LIKE rf05v-newko,

newko2 LIKE rf05v-newko,

wrbtr(13),

bill_no(20),

  • kostl LIKE cobl-kostl,

END OF t_itab3.

*****************end of chg0003*************

DATA: BEGIN OF bdcdata OCCURS 0.

INCLUDE STRUCTURE bdcdata.

DATA: END OF bdcdata.

DATA: w_flname LIKE ibipparms-path,

w_lin TYPE i,

w_tabix LIKE sy-tabix.

DATA: t_excel LIKE alsmex_tabline OCCURS 0 WITH HEADER LINE .

DATA: t_msgtab TYPE TABLE OF bdcmsgcoll WITH HEADER LINE.

DATA: BEGIN OF t_messages OCCURS 0,

index TYPE i,

vendor(18),

account(18),

msgtyp(1),

message(120),

END OF t_messages.

DATA: w_index TYPE i VALUE 1.

************************************************************************

  • SELECTION SCREEN

************************************************************************

SELECTION-SCREEN BEGIN OF BLOCK a1 WITH FRAME.

PARAMETERS:

p_bukrs(004) DEFAULT 'PY00' ,

p_bldat TYPE bldat DEFAULT sy-datum ,

p_budat TYPE budat DEFAULT sy-datum .

SELECTION-SCREEN END OF BLOCK a1.

SELECTION-SCREEN BEGIN OF BLOCK a2 WITH FRAME.

PARAMETERS:

p_blart(002) DEFAULT 'KR',

p_waers TYPE waers DEFAULT 'INR' .

SELECTION-SCREEN END OF BLOCK a2.

SELECTION-SCREEN BEGIN OF BLOCK a3 WITH FRAME .

PARAMETERS:

p_newbs TYPE newbs DEFAULT '31' ,

p_newbs1 TYPE newbs DEFAULT '40' .

  • p_newko TYPE newko DEFAULT '1650000000' .

SELECTION-SCREEN END OF BLOCK a3.

SELECTION-SCREEN BEGIN OF BLOCK a6 WITH FRAME.

PARAMETER: p_txt(100) .

SELECTION-SCREEN END OF BLOCK a6.

SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME .

SELECTION-SCREEN : PUSHBUTTON 33(45) text-a02 USER-COMMAND down .

SELECTION-SCREEN : SKIP 1 .

PARAMETERS : p_flname LIKE rlgrap-filename OBLIGATORY DEFAULT

'C:\F65_Legasy.XLS'.

SELECTION-SCREEN END OF BLOCK b1.

SELECTION-SCREEN BEGIN OF BLOCK a5 WITH FRAME.

SELECTION-SCREEN BEGIN OF LINE.

SELECTION-SCREEN COMMENT 1(31) text-001 FOR FIELD rb_fg.

PARAMETERS rb_fg RADIOBUTTON GROUP g1.

SELECTION-SCREEN COMMENT 50(10) text-002 FOR FIELD rb_ven.

PARAMETERS rb_ven RADIOBUTTON GROUP g2 DEFAULT 'X' USER-COMMAND ucom.

SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN BEGIN OF LINE.

SELECTION-SCREEN COMMENT 1(31) text-003 FOR FIELD rb_bg.

PARAMETERS rb_bg RADIOBUTTON GROUP g1.

SELECTION-SCREEN COMMENT 50(10) text-004 FOR FIELD rb_gl.

PARAMETERS rb_gl RADIOBUTTON GROUP g2.

SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN BEGIN OF LINE.

SELECTION-SCREEN COMMENT 1(31) text-005 FOR FIELD rb_er.

PARAMETERS: rb_er RADIOBUTTON GROUP g1.

SELECTION-SCREEN COMMENT 50(10) text-007 FOR FIELD rb_cs.

PARAMETERS rb_cs RADIOBUTTON GROUP g2.

SELECTION-SCREEN END OF LINE.

                                • start of chg0003***************

SELECTION-SCREEN BEGIN OF LINE.

*SELECTION-SCREEN COMMENT 1(31) text-005 FOR FIELD rb_er.

*PARAMETERS: rb_er RADIOBUTTON GROUP g1.

SELECTION-SCREEN COMMENT 42(18) text-008 FOR FIELD rb_csp.

PARAMETERS: rb_csp RADIOBUTTON GROUP g2.

SELECTION-SCREEN END OF LINE.

*****************end of chg0003*************

SELECTION-SCREEN END OF BLOCK a5.

************************************************************************

  • AT SELECTION SCREEN (F4 HELP)

************************************************************************

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_flname.

CALL FUNCTION 'F4_FILENAME'

EXPORTING

program_name = syst-cprog

dynpro_number = syst-dynnr

  • FIELD_NAME = ' '

IMPORTING

file_name = w_flname.

p_flname = w_flname.

***********************************************************************

  • AT SELECTION SCREEN OUTPUT

***********************************************************************

AT SELECTION-SCREEN OUTPUT.

IF rb_ven = 'X'.

p_newbs = '31'.

p_newbs1 = '40'.

p_blart = 'KR'.

LOOP AT SCREEN.

IF screen-name = 'P_TXT'.

screen-input = 1.

MODIFY SCREEN.

ENDIF.

ENDLOOP.

ELSEIF rb_gl = 'X'.

p_newbs = '40'.

p_newbs1 = '50'.

  • p_blart = 'BR'.

LOOP AT SCREEN.

IF screen-name = 'P_TXT'.

screen-input = 0.

MODIFY SCREEN.

ENDIF.

ENDLOOP.

ELSEIF rb_cs = 'X'.

p_newbs = '40'.

p_newbs1 = '15'.

  • p_blart = 'CN'.

LOOP AT SCREEN.

IF screen-name = 'P_TXT'.

screen-input = 1.

MODIFY SCREEN.

ENDIF.

ENDLOOP.

****************start of chg0003*************

ELSEIF rb_csp = 'X'.

p_newbs = '21'.

p_newbs1 = '15'.

p_blart = 'CN'.

LOOP AT SCREEN.

IF screen-name = 'P_TXT'.

screen-input = 1.

MODIFY SCREEN.

ENDIF.

ENDLOOP.

***************end of chg0003*******************

ENDIF.

***********************************************************************

  • AT SELECTION SCREEN

***********************************************************************

AT SELECTION-SCREEN.

CASE sy-ucomm.

WHEN 'DOWN'.

PERFORM create_file.

ENDCASE.

***********************************************************************

  • TOP OF PAGE

***********************************************************************

TOP-OF-PAGE.

PERFORM write_heading.

***********************************************************************

  • START OF SELECTION

***********************************************************************

START-OF-SELECTION.

IF rb_ven = 'X' .

PERFORM fill_t_itab.

ELSEif rb_gl = 'X' .

PERFORM fill_t_itab1.

elseif rb_cs = 'X'.

perform fill_t_itab2.

****************start of chg0003******************

ELSEIF rb_csp = 'X'.

PERFORM fill_t_itab3.

****************end of chg0003********************

ENDIF.

PERFORM execute_bdc.

----


  • FORM execute_bdc *

----


  • Sub-routine to reverse document numbers by calling a BDC with *

  • transaction code FB08 *

----


FORM execute_bdc.

DATA: w_bill(18).

PERFORM fill_ctuprms.

CONCATENATE p_bldat6(2) p_bldat4(2) p_bldat+0(4)

INTO p_bldat.

CONCATENATE p_budat6(2) p_budat4(2) p_budat+0(4)

INTO p_budat.

IF rb_ven = 'X'.

LOOP AT t_itab.

REFRESH bdcdata.

CLEAR w_bill.

CONCATENATE t_itab-billno '-' t_itab-billdt INTO w_bill.

CONDENSE w_bill.

PERFORM fill_bdcdata USING :

'SAPLF040' '0100' 'X',

'BDC_OKCODE' '/00' ' ',

'BKPF-BLDAT' p_bldat ' ',

'BKPF-BLART' p_blart ' ',

'BKPF-BUKRS' p_bukrs ' ',

'BKPF-BUDAT' p_budat ' ',

'BKPF-WAERS' p_waers ' ',

'RF05V-NEWBS' p_newbs ' ',

'RF05V-NEWKO' t_itab-newko1 ' ',

'SAPLF040' '0302' 'X',

'BDC_OKCODE' '/00' ' ',

'BSEG-WRBTR' t_itab-wrbtr ' ',

'BSEG-ZUONR' w_bill ' ',

'BSEG-SGTXT' p_txt ' ',

'RF05V-NEWBS' p_newbs1 ' ',

'RF05V-NEWKO' t_itab-newko2 ' ',

'SAPLF040' '0300' 'X',

'BDC_OKCODE' '=BP' ' ',

'BSEG-WRBTR' '*' ' ',

'BSEG-ZUONR' w_bill ' ',

'BSEG-SGTXT' p_txt ' ',

'SAPLKACB' '0002' 'X',

'BDC_OKCODE' '=ENTE' ' ',

'COBL-GSBER' 'A000' ' ',

'COBL-KOSTL' t_itab-kostl ' '.

CALL TRANSACTION 'F-65' USING bdcdata OPTIONS FROM t_ctuprms

MESSAGES INTO t_msgtab.

CLEAR bdcdata.

REFRESH bdcdata.

PERFORM collect_messages.

ENDLOOP.

ELSEIF rb_gl = 'X'.

LOOP AT t_itab1.

PERFORM fill_bdcdata USING:

'SAPLF040' '0100' 'X',

'BDC_OKCODE' '/00' ' ',

'BKPF-BLDAT' p_bldat ' ',

'BKPF-BLART' p_blart ' ',

'BKPF-BUKRS' p_bukrs ' ',

'BKPF-BUDAT' p_budat ' ',

'BKPF-WAERS' p_waers ' ',

'RF05V-NEWBS' p_newbs ' ',

'RF05V-NEWKO' t_itab1-newko1 ' ',

'SAPLF040' '0300' 'X',

'BDC_OKCODE' '/00' ' ',

'BSEG-WRBTR' t_itab1-wrbtr ' ',

'BSEG-ZUONR' t_itab1-txt ' ',

'BSEG-SGTXT' t_itab1-ltxt ' ',

'RF05V-NEWBS' p_newbs1 ' ',

'RF05V-NEWKO' t_itab1-newko2 ' ',

'SAPLKACB' '0002' 'X',

'BDC_OKCODE' '=ENTE' ' ',

'COBL-GSBER' 'A000' ' ' ,

'COBL-KOSTL' t_itab1-kostl1 ' ',

'SAPLF040' '0300' 'X',

'BSEG-WRBTR' t_itab1-wrbtr ' ',

'SAPLKACB' '0002' 'X',

'BDC_OKCODE' '=ENTE' ' ',

'COBL-GSBER' 'A000' ' ' ,

'COBL-KOSTL' t_itab1-kostl2 ' ',

'SAPLF040' '0300' 'X',

'BDC_OKCODE' '=BP' ' ',

'BSEG-WRBTR' '*' ' ',

'BSEG-ZUONR' t_itab1-txt ' ',

'BSEG-SGTXT' p_txt ' ',

'SAPLKACB' '0002' 'X',

'BDC_OKCODE' '=ENTE' ' ',

'COBL-GSBER' 'A000' ' ' ,

'COBL-KOSTL' t_itab1-kostl2 ' '.

CALL TRANSACTION 'F-65' USING bdcdata OPTIONS FROM t_ctuprms

MESSAGES INTO t_msgtab.

CLEAR bdcdata.

REFRESH bdcdata.

PERFORM collect_messages.

ENDLOOP.

ELSEIF rb_cs = 'X'.

LOOP AT t_itab2.

PERFORM fill_bdcdata USING:

'SAPLF040' '0100' 'X',

'BDC_OKCODE' '/00' ' ',

'BKPF-BLDAT' p_bldat ' ',

'BKPF-BLART' p_blart ' ',

'BKPF-BUKRS' p_bukrs ' ',

'BKPF-BUDAT' p_budat ' ',

'BKPF-WAERS' p_waers ' ',

'RF05V-NEWBS' p_newbs ' ',

'RF05V-NEWKO' t_itab2-newko1 ' ',

'SAPLF040' '0300' 'X',

'BDC_OKCODE' '/00' ' ',

'BSEG-WRBTR' t_itab2-wrbtr ' ',

'BSEG-ZUONR' t_itab2-bill_no' ',

'BSEG-SGTXT' p_txt ' ',

'RF05V-NEWBS' p_newbs1 ' ',

'RF05V-NEWKO' t_itab2-newko2 ' ',

'SAPLKACB' '0002' 'X',

'BDC_OKCODE' '=ENTE' ' ',

'COBL-GSBER' 'A000' ' ',

'COBL-KOSTL' t_itab2-kostl ' ',

'SAPLF040' '0301' 'X',

'BDC_OKCODE' '=BP' ' ',

'BSEG-WRBTR' '*' ' ',

'BSEG-ZUONR' t_itab2-bill_no' ',

'BSEG-SGTXT' p_txt ' '.

CALL TRANSACTION 'F-65' USING bdcdata OPTIONS FROM t_ctuprms

MESSAGES INTO t_msgtab.

CLEAR bdcdata.

REFRESH bdcdata.

PERFORM collect_messages.

ENDLOOP.

****************start of chg0003**************

ELSEIF rb_csp = 'X'.

LOOP AT t_itab3.

PERFORM fill_bdcdata USING:

'SAPLF040' '0100' 'X',

'BDC_OKCODE' '/00' ' ',

'BKPF-BLDAT' p_bldat ' ',

'BKPF-BLART' p_blart ' ',

'BKPF-BUKRS' p_bukrs ' ',

'BKPF-BUDAT' p_budat ' ',

'BKPF-WAERS' p_waers ' ',

'RF05V-NEWBS' p_newbs ' ',

'RF05V-NEWKO' t_itab3-newko1 ' ',

'SAPLF040' '0302' 'X',

'BDC_OKCODE' '/00' ' ',

'BSEG-WRBTR' t_itab3-wrbtr ' ',

'BSEG-ZUONR' t_itab3-bill_no ' ',

'BSEG-SGTXT' p_txt ' ',

'RF05V-NEWBS' p_newbs1 ' ',

'RF05V-NEWKO' t_itab3-newko2 ' ',

* 'SAPLKACB' '0002' 'X',

* 'BDC_OKCODE' '=ENTE' ' ',

* 'COBL-GSBER' 'A000' ' ',

  • 'COBL-KOSTL' t_itab3-kostl ' ',

'SAPLF040' '0301' 'X',

'BDC_OKCODE' '=BP' ' ',

'BSEG-WRBTR' '*' ' ',

'BSEG-ZUONR' t_itab3-bill_no' ',

'BSEG-SGTXT' p_txt ' '.

CALL TRANSACTION 'F-65' USING bdcdata OPTIONS FROM t_ctuprms

MESSAGES INTO t_msgtab.

CLEAR bdcdata.

REFRESH bdcdata.

PERFORM collect_messages.

ENDLOOP.

***************end of chg0003*********************

ENDIF.

PERFORM write_messages.

ENDFORM.

&----


*& Form FILL_BDCDATA

&----


  • SUB-ROUTINE TO FILL BCDDATA FOR EXECUTION OF BDC

----


  • -->P_0414 text *

  • -->P_0415 text *

  • -->P_0416 text *

----


FORM fill_bdcdata USING val1

val2

val3.

CLEAR bdcdata.

IF val3 = 'X'.

MOVE val1 TO bdcdata-program.

MOVE val2 TO bdcdata-dynpro.

MOVE val3 TO bdcdata-dynbegin.

ELSE.

MOVE val1 TO bdcdata-fnam.

MOVE val2 TO bdcdata-fval.

ENDIF.

APPEND bdcdata.

ENDFORM. " FILL_BDCDATA

&----


*& Form FILL_T_ITAB

&----


*SUB-ROUTINE TO FILL DATA FROM A SPECIFIED FILE TO T_ITAB INTERNAL TABLE

----


FORM fill_t_itab.

CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'

EXPORTING

filename = p_flname

i_begin_col = 1

i_begin_row = 2

i_end_col = 6

i_end_row = 9999

TABLES

intern = t_excel

EXCEPTIONS

inconsistent_parameters = 1

upload_ole = 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.

        • Filling Data into Internal Tables T_OUTTAB From Internal Table

        • t_excel.

CLEAR t_itab.

LOOP AT t_excel.

IF t_excel-col = 1 .

t_itab-newko1 = t_excel-value.

ELSEIF t_excel-col = 2 .

t_itab-newko2 = t_excel-value.

ELSEIF t_excel-col = 3 .

MOVE t_excel-value TO t_itab-wrbtr.

ELSEIF t_excel-col = 4 .

t_itab-billno = t_excel-value.

ELSEIF t_excel-col = 5 .

t_itab-billdt = t_excel-value.

ELSEIF t_excel-col = 6 .

t_itab-kostl = t_excel-value.

ENDIF .

AT END OF row.

CONDENSE: t_itab-newko1 , t_itab-newko2,

t_itab-wrbtr , t_itab-billno,

t_itab-billdt , t_itab-kostl.

APPEND t_itab.

CLEAR t_itab.

ENDAT .

ENDLOOP.

ENDFORM. " FILL_T_ITAB

&----


*& Form FILL_CTUPRMS

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM fill_ctuprms.

CLEAR t_ctuprms.

IF rb_bg = 'X'.

t_ctuprms-dismode = 'N'.

ELSEIF rb_fg = 'X'.

t_ctuprms-dismode = 'A'.

ELSE.

t_ctuprms-dismode = 'E'.

ENDIF.

t_ctuprms-updmode = 'S'.

t_ctuprms-defsize = 'X'.

ENDFORM. " FILL_CTUPRMS

&----


*& Form COLLECT_MESSAGES

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM collect_messages.

DATA: w_msg(100).

  • IF w_tabix <> 0 AND p_val = '2'.

LOOP AT t_msgtab.

CALL FUNCTION 'FORMAT_MESSAGE'

EXPORTING

id = t_msgtab-msgid

lang = t_msgtab-msgspra

no = t_msgtab-msgnr

v1 = t_msgtab-msgv1

v2 = t_msgtab-msgv2

IMPORTING

msg = w_msg

EXCEPTIONS

OTHERS = 0.

CONDENSE w_msg.

CLEAR t_messages.

IF rb_ven = 'X'.

t_messages-vendor = t_itab-newko1.

t_messages-account = t_itab-newko2.

ELSEIF rb_gl = 'X'.

t_messages-vendor = t_itab1-newko1.

t_messages-account = t_itab1-newko2.

ENDIF.

t_messages-index = w_index.

t_messages-msgtyp = t_msgtab-msgtyp.

t_messages-message = w_msg.

APPEND t_messages.

ENDLOOP.

w_index = w_index + 1.

REFRESH t_msgtab.

ENDFORM. " COLLECT_MESSAGES

&----


*& Form WRITE_HEADING

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM write_heading.

FORMAT COLOR 1.

ULINE 0(128).

IF rb_ven = 'X'.

WRITE:/1 sy-vline,

2 'Vendor',

12 '/',

16'Acct No',

29 sy-vline,

30 'Status',

39 sy-vline,

40 'Description',

128 sy-vline.

ELSEIF rb_gl = 'X'.

WRITE:/1 sy-vline,

2 'Account1',

12 '/',

16'Account2',

29 sy-vline,

30 'Status',

39 sy-vline,

40 'Description',

128 sy-vline.

ENDIF.

ULINE 0(128).

FORMAT COLOR OFF.

ENDFORM. " WRITE_HEADING

&----


*& Form WRITE_MESSAGES

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM write_messages.

DATA: wa_msg LIKE t_messages.

LOOP AT t_messages.

wa_msg = t_messages.

WRITE:/1 sy-vline.

AT NEW vendor.

CONDENSE: wa_msg-vendor, wa_msg-account.

WRITE: 2 wa_msg-vendor , 12 '/' , 16 wa_msg-account .

ENDAT.

WRITE : 29 sy-vline.

IF wa_msg-msgtyp = 'S'.

WRITE: 30 icon_green_light.

ELSEIF wa_msg-msgtyp = 'E'.

WRITE: 30 icon_red_light.

ELSEIF wa_msg-msgtyp = 'W'.

WRITE: 30 icon_yellow_light.

ENDIF.

WRITE: 39 sy-vline,

wa_msg-message UNDER 'Description' , 128 sy-vline.

AT END OF vendor.

WRITE:/1 sy-vline.

ULINE 1(128).

ENDAT.

ENDLOOP.

ENDFORM. " WRITE_MESSAGES

&----


*& Form CREATE_FILE

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM create_file.

DATA t_tmptab LIKE t_itab OCCURS 0 WITH HEADER LINE.

DATA t_tmptab1 LIKE t_itab1 OCCURS 0 WITH HEADER LINE.

IF rb_ven = 'X' .

t_tmptab-newko1 = 'Vendor' .

t_tmptab-newko2 = 'Account' .

t_tmptab-billno = 'Bill No.' .

t_tmptab-billdt = 'Bill Date'.

t_tmptab-kostl = 'Cost Cntr'.

t_tmptab-wrbtr = 'Amount' .

APPEND t_tmptab .

ELSEIF rb_gl = 'X' .

t_tmptab1-newko1 = 'Account1' .

t_tmptab1-newko2 = 'Account2' .

t_tmptab1-txt = 'Assignment' .

t_tmptab1-ltxt = 'Long Text'.

t_tmptab1-kostl1 = 'Cost Cntr1'.

t_tmptab1-kostl2 = 'Cost Cntr2'.

t_tmptab1-wrbtr = 'Amount' .

APPEND t_tmptab1 .

ELSEIF rb_cs = 'X' .

t_tmptab-newko1 = 'Account1' .

t_tmptab-newko2 = 'Customer' .

t_tmptab-billno = 'Assignment' .

t_tmptab-kostl = 'Cost Cntr'.

t_tmptab-wrbtr = 'Amount' .

APPEND t_tmptab .

*************start of chg0003**************

ELSEIF rb_csp = 'X' .

t_tmptab-newko1 = 'Account1' .

t_tmptab-newko2 = 'Customer' .

t_tmptab-billno = 'Assignment' .

  • t_tmptab-kostl = 'Cost Cntr'.

t_tmptab-wrbtr = 'Amount' .

APPEND t_tmptab .

************end of chg0003*****************

ENDIF.

if rb_gl = 'X' .

CALL FUNCTION 'WS_DOWNLOAD'

EXPORTING

filename = p_flname

filetype = 'DAT'

TABLES

data_tab = t_tmptab1

EXCEPTIONS

file_open_error = 1

file_write_error = 2

invalid_filesize = 3

invalid_type = 4

no_batch = 5

unknown_error = 6

invalid_table_width = 7

gui_refuse_filetransfer = 8

customer_error = 9

OTHERS = 10.

else.

CALL FUNCTION 'WS_DOWNLOAD'

EXPORTING

filename = p_flname

filetype = 'DAT'

TABLES

data_tab = t_tmptab

EXCEPTIONS

file_open_error = 1

file_write_error = 2

invalid_filesize = 3

invalid_type = 4

no_batch = 5

unknown_error = 6

invalid_table_width = 7

gui_refuse_filetransfer = 8

customer_error = 9

OTHERS = 10.

endif.

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. " CREATE_FILE

&----


*& Form FILL_T_ITAB1

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM fill_t_itab1.

CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'

EXPORTING

filename = p_flname

i_begin_col = 1

i_begin_row = 2

i_end_col = 7

i_end_row = 9999

TABLES

intern = t_excel

EXCEPTIONS

inconsistent_parameters = 1

upload_ole = 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.

        • Filling Data into Internal Tables T_OUTTAB From Internal Table

        • t_excel.

CLEAR t_itab1.

LOOP AT t_excel.

IF t_excel-col = 1 .

t_itab1-newko1 = t_excel-value.

ELSEIF t_excel-col = 2 .

t_itab1-newko2 = t_excel-value.

ELSEIF t_excel-col = 3 .

MOVE t_excel-value TO t_itab1-wrbtr.

ELSEIF t_excel-col = 4 .

t_itab1-txt = t_excel-value.

ELSEIF t_excel-col = 5 .

t_itab1-ltxt = t_excel-value.

ELSEIF t_excel-col = 6 .

t_itab1-kostl1 = t_excel-value.

ELSEIF t_excel-col = 7 .

t_itab1-kostl2 = t_excel-value.

ENDIF.

AT END OF row.

CONDENSE: t_itab1-newko1 , t_itab1-newko2,

t_itab1-wrbtr , t_itab1-txt,

t_itab1-ltxt, t_itab1-kostl1, t_itab1-kostl2.

APPEND t_itab1.

CLEAR t_itab1.

ENDAT .

ENDLOOP.

ENDFORM. " FILL_T_ITAB1

&----


*& Form fill_t_itab2

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


form fill_t_itab2.

CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'

EXPORTING

filename = p_flname

i_begin_col = 1

i_begin_row = 2

i_end_col = 6

i_end_row = 9999

TABLES

intern = t_excel

EXCEPTIONS

inconsistent_parameters = 1

upload_ole = 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.

        • Filling Data into Internal Tables T_OUTTAB From Internal Table

        • t_excel.

CLEAR t_itab2.

LOOP AT t_excel.

IF t_excel-col = 1 .

t_itab2-newko1 = t_excel-value.

ELSEIF t_excel-col = 2 .

t_itab2-newko2 = t_excel-value.

ELSEIF t_excel-col = 3 .

MOVE t_excel-value TO t_itab2-wrbtr.

ELSEIF t_excel-col = 4 .

t_itab2-bill_no = t_excel-value.

ELSEIF t_excel-col = 6 .

t_itab2-kostl = t_excel-value.

ENDIF.

AT END OF row.

CONDENSE: t_itab2-newko1 , t_itab2-newko2,

t_itab2-wrbtr , t_itab2-bill_no,

t_itab2-kostl.

APPEND t_itab2.

CLEAR t_itab2.

ENDAT .

ENDLOOP.

endform. " fill_t_itab2

*******************start of chg**********************

&----


*& Form fill_t_itab3

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM fill_t_itab3.

CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'

EXPORTING

filename = p_flname

i_begin_col = 1

i_begin_row = 2

i_end_col = 4

i_end_row = 9999

TABLES

intern = t_excel

EXCEPTIONS

inconsistent_parameters = 1

upload_ole = 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.

        • Filling Data into Internal Tables T_OUTTAB From Internal Table

        • t_excel.

CLEAR t_itab3.

LOOP AT t_excel.

IF t_excel-col = 1 .

t_itab3-newko1 = t_excel-value.

ELSEIF t_excel-col = 2 .

t_itab3-newko2 = t_excel-value.

ELSEIF t_excel-col = 3 .

MOVE t_excel-value TO t_itab3-wrbtr.

ELSEIF t_excel-col = 4 .

t_itab3-bill_no = t_excel-value.

  • ELSEIF t_excel-col = 6 .

  • t_itab2-kostl = t_excel-value.

ENDIF.

AT END OF row.

CONDENSE: t_itab3-newko1 , t_itab3-newko2,

t_itab3-wrbtr , t_itab3-bill_no.

APPEND t_itab3.

CLEAR t_itab3.

ENDAT .

ENDLOOP.

ENDFORM.

******************end of chg0003****************

Regards,

Shafi

7 REPLIES 7

Former Member
0 Kudos

To send data you can use BDC or BAPI.

Former Member
0 Kudos

Hi..

1. Upload data into itab using "ALSM_EXCEL_TO_INTERNAL_TABLE" or

" GUI_UPLOAD ".

2. Use CALL TRANSACTION method to insert data in itab to screen.

3. Check sy-subrc after CAll transaction stmt. if sy-subrc not equal to 0.

the record inserted is erroneous.

4. Open BDC, Insert BDC..

Former Member
0 Kudos

Hi,

U can go thru BDC's, Bapi's. I am sending a sample program to upload data into f-65 transaction and handle the records . Just go thru it and try to understand.

Regards,

Shafi

0 Kudos

Thank u shafi

Line

0 Kudos

Hi Shafi,

Can u pls send me some sample program for f-65 to upload the data and handle the records.

Regards,

Line

former_member189629
Active Contributor
0 Kudos

Hi Line,

You will have to develop a BDC program using call txn (FB60) or session method or by using appropriate BAPIs. Firstly you will have to import the excel data into your program (using fn GUI_UPLOAD) and convert XLS into itab (by using fn ALSM_EXCEL_TO_INTERNAL_TABLE). and then, you would loop thru the table and populate txn screens (for which you must have to record the txn using SHDB).

Do let me know if you nered more clarity. Reward if helpful.

Karthik

Former Member
0 Kudos

Hi Line,

Sorry I thought that i send it to u . Now iam sending Just go thru it.

REPORT zbdc_f65 NO STANDARD PAGE HEADING.

************************************************************************

  • INCLUDES

************************************************************************

INCLUDE <icon>.

************************************************************************

  • DATA DECLARATIONS

************************************************************************

DATA t_ctuprms LIKE ctu_params.

DATA: BEGIN OF t_anlb OCCURS 0,

afabe LIKE anlb-afabe,

xloev LIKE anlb-xloev,

END OF t_anlb.

DATA: BEGIN OF t_itab OCCURS 0,

newko1 LIKE rf05v-newko,

newko2 LIKE rf05v-newko,

wrbtr(13),

billno(20),

billdt(10),

kostl LIKE cobl-kostl,

END OF t_itab.

DATA: BEGIN OF t_itab1 OCCURS 0,

newko1 LIKE rf05v-newko,

newko2 LIKE rf05v-newko,

wrbtr(13),

txt(20),

ltxt(50),

kostl1 LIKE cobl-kostl,

kostl2 LIKE cobl-kostl,

END OF t_itab1.

DATA: BEGIN OF t_itab2 OCCURS 0,

newko1 LIKE rf05v-newko,

newko2 LIKE rf05v-newko,

wrbtr(13),

bill_no(20),

kostl LIKE cobl-kostl,

END OF t_itab2.

                                • start of chg0003***************

DATA: BEGIN OF t_itab3 OCCURS 0,

newko1 LIKE rf05v-newko,

newko2 LIKE rf05v-newko,

wrbtr(13),

bill_no(20),

  • kostl LIKE cobl-kostl,

END OF t_itab3.

*****************end of chg0003*************

DATA: BEGIN OF bdcdata OCCURS 0.

INCLUDE STRUCTURE bdcdata.

DATA: END OF bdcdata.

DATA: w_flname LIKE ibipparms-path,

w_lin TYPE i,

w_tabix LIKE sy-tabix.

DATA: t_excel LIKE alsmex_tabline OCCURS 0 WITH HEADER LINE .

DATA: t_msgtab TYPE TABLE OF bdcmsgcoll WITH HEADER LINE.

DATA: BEGIN OF t_messages OCCURS 0,

index TYPE i,

vendor(18),

account(18),

msgtyp(1),

message(120),

END OF t_messages.

DATA: w_index TYPE i VALUE 1.

************************************************************************

  • SELECTION SCREEN

************************************************************************

SELECTION-SCREEN BEGIN OF BLOCK a1 WITH FRAME.

PARAMETERS:

p_bukrs(004) DEFAULT 'PY00' ,

p_bldat TYPE bldat DEFAULT sy-datum ,

p_budat TYPE budat DEFAULT sy-datum .

SELECTION-SCREEN END OF BLOCK a1.

SELECTION-SCREEN BEGIN OF BLOCK a2 WITH FRAME.

PARAMETERS:

p_blart(002) DEFAULT 'KR',

p_waers TYPE waers DEFAULT 'INR' .

SELECTION-SCREEN END OF BLOCK a2.

SELECTION-SCREEN BEGIN OF BLOCK a3 WITH FRAME .

PARAMETERS:

p_newbs TYPE newbs DEFAULT '31' ,

p_newbs1 TYPE newbs DEFAULT '40' .

  • p_newko TYPE newko DEFAULT '1650000000' .

SELECTION-SCREEN END OF BLOCK a3.

SELECTION-SCREEN BEGIN OF BLOCK a6 WITH FRAME.

PARAMETER: p_txt(100) .

SELECTION-SCREEN END OF BLOCK a6.

SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME .

SELECTION-SCREEN : PUSHBUTTON 33(45) text-a02 USER-COMMAND down .

SELECTION-SCREEN : SKIP 1 .

PARAMETERS : p_flname LIKE rlgrap-filename OBLIGATORY DEFAULT

'C:\F65_Legasy.XLS'.

SELECTION-SCREEN END OF BLOCK b1.

SELECTION-SCREEN BEGIN OF BLOCK a5 WITH FRAME.

SELECTION-SCREEN BEGIN OF LINE.

SELECTION-SCREEN COMMENT 1(31) text-001 FOR FIELD rb_fg.

PARAMETERS rb_fg RADIOBUTTON GROUP g1.

SELECTION-SCREEN COMMENT 50(10) text-002 FOR FIELD rb_ven.

PARAMETERS rb_ven RADIOBUTTON GROUP g2 DEFAULT 'X' USER-COMMAND ucom.

SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN BEGIN OF LINE.

SELECTION-SCREEN COMMENT 1(31) text-003 FOR FIELD rb_bg.

PARAMETERS rb_bg RADIOBUTTON GROUP g1.

SELECTION-SCREEN COMMENT 50(10) text-004 FOR FIELD rb_gl.

PARAMETERS rb_gl RADIOBUTTON GROUP g2.

SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN BEGIN OF LINE.

SELECTION-SCREEN COMMENT 1(31) text-005 FOR FIELD rb_er.

PARAMETERS: rb_er RADIOBUTTON GROUP g1.

SELECTION-SCREEN COMMENT 50(10) text-007 FOR FIELD rb_cs.

PARAMETERS rb_cs RADIOBUTTON GROUP g2.

SELECTION-SCREEN END OF LINE.

                                • start of chg0003***************

SELECTION-SCREEN BEGIN OF LINE.

*SELECTION-SCREEN COMMENT 1(31) text-005 FOR FIELD rb_er.

*PARAMETERS: rb_er RADIOBUTTON GROUP g1.

SELECTION-SCREEN COMMENT 42(18) text-008 FOR FIELD rb_csp.

PARAMETERS: rb_csp RADIOBUTTON GROUP g2.

SELECTION-SCREEN END OF LINE.

*****************end of chg0003*************

SELECTION-SCREEN END OF BLOCK a5.

************************************************************************

  • AT SELECTION SCREEN (F4 HELP)

************************************************************************

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_flname.

CALL FUNCTION 'F4_FILENAME'

EXPORTING

program_name = syst-cprog

dynpro_number = syst-dynnr

  • FIELD_NAME = ' '

IMPORTING

file_name = w_flname.

p_flname = w_flname.

***********************************************************************

  • AT SELECTION SCREEN OUTPUT

***********************************************************************

AT SELECTION-SCREEN OUTPUT.

IF rb_ven = 'X'.

p_newbs = '31'.

p_newbs1 = '40'.

p_blart = 'KR'.

LOOP AT SCREEN.

IF screen-name = 'P_TXT'.

screen-input = 1.

MODIFY SCREEN.

ENDIF.

ENDLOOP.

ELSEIF rb_gl = 'X'.

p_newbs = '40'.

p_newbs1 = '50'.

  • p_blart = 'BR'.

LOOP AT SCREEN.

IF screen-name = 'P_TXT'.

screen-input = 0.

MODIFY SCREEN.

ENDIF.

ENDLOOP.

ELSEIF rb_cs = 'X'.

p_newbs = '40'.

p_newbs1 = '15'.

  • p_blart = 'CN'.

LOOP AT SCREEN.

IF screen-name = 'P_TXT'.

screen-input = 1.

MODIFY SCREEN.

ENDIF.

ENDLOOP.

****************start of chg0003*************

ELSEIF rb_csp = 'X'.

p_newbs = '21'.

p_newbs1 = '15'.

p_blart = 'CN'.

LOOP AT SCREEN.

IF screen-name = 'P_TXT'.

screen-input = 1.

MODIFY SCREEN.

ENDIF.

ENDLOOP.

***************end of chg0003*******************

ENDIF.

***********************************************************************

  • AT SELECTION SCREEN

***********************************************************************

AT SELECTION-SCREEN.

CASE sy-ucomm.

WHEN 'DOWN'.

PERFORM create_file.

ENDCASE.

***********************************************************************

  • TOP OF PAGE

***********************************************************************

TOP-OF-PAGE.

PERFORM write_heading.

***********************************************************************

  • START OF SELECTION

***********************************************************************

START-OF-SELECTION.

IF rb_ven = 'X' .

PERFORM fill_t_itab.

ELSEif rb_gl = 'X' .

PERFORM fill_t_itab1.

elseif rb_cs = 'X'.

perform fill_t_itab2.

****************start of chg0003******************

ELSEIF rb_csp = 'X'.

PERFORM fill_t_itab3.

****************end of chg0003********************

ENDIF.

PERFORM execute_bdc.

----


  • FORM execute_bdc *

----


  • Sub-routine to reverse document numbers by calling a BDC with *

  • transaction code FB08 *

----


FORM execute_bdc.

DATA: w_bill(18).

PERFORM fill_ctuprms.

CONCATENATE p_bldat6(2) p_bldat4(2) p_bldat+0(4)

INTO p_bldat.

CONCATENATE p_budat6(2) p_budat4(2) p_budat+0(4)

INTO p_budat.

IF rb_ven = 'X'.

LOOP AT t_itab.

REFRESH bdcdata.

CLEAR w_bill.

CONCATENATE t_itab-billno '-' t_itab-billdt INTO w_bill.

CONDENSE w_bill.

PERFORM fill_bdcdata USING :

'SAPLF040' '0100' 'X',

'BDC_OKCODE' '/00' ' ',

'BKPF-BLDAT' p_bldat ' ',

'BKPF-BLART' p_blart ' ',

'BKPF-BUKRS' p_bukrs ' ',

'BKPF-BUDAT' p_budat ' ',

'BKPF-WAERS' p_waers ' ',

'RF05V-NEWBS' p_newbs ' ',

'RF05V-NEWKO' t_itab-newko1 ' ',

'SAPLF040' '0302' 'X',

'BDC_OKCODE' '/00' ' ',

'BSEG-WRBTR' t_itab-wrbtr ' ',

'BSEG-ZUONR' w_bill ' ',

'BSEG-SGTXT' p_txt ' ',

'RF05V-NEWBS' p_newbs1 ' ',

'RF05V-NEWKO' t_itab-newko2 ' ',

'SAPLF040' '0300' 'X',

'BDC_OKCODE' '=BP' ' ',

'BSEG-WRBTR' '*' ' ',

'BSEG-ZUONR' w_bill ' ',

'BSEG-SGTXT' p_txt ' ',

'SAPLKACB' '0002' 'X',

'BDC_OKCODE' '=ENTE' ' ',

'COBL-GSBER' 'A000' ' ',

'COBL-KOSTL' t_itab-kostl ' '.

CALL TRANSACTION 'F-65' USING bdcdata OPTIONS FROM t_ctuprms

MESSAGES INTO t_msgtab.

CLEAR bdcdata.

REFRESH bdcdata.

PERFORM collect_messages.

ENDLOOP.

ELSEIF rb_gl = 'X'.

LOOP AT t_itab1.

PERFORM fill_bdcdata USING:

'SAPLF040' '0100' 'X',

'BDC_OKCODE' '/00' ' ',

'BKPF-BLDAT' p_bldat ' ',

'BKPF-BLART' p_blart ' ',

'BKPF-BUKRS' p_bukrs ' ',

'BKPF-BUDAT' p_budat ' ',

'BKPF-WAERS' p_waers ' ',

'RF05V-NEWBS' p_newbs ' ',

'RF05V-NEWKO' t_itab1-newko1 ' ',

'SAPLF040' '0300' 'X',

'BDC_OKCODE' '/00' ' ',

'BSEG-WRBTR' t_itab1-wrbtr ' ',

'BSEG-ZUONR' t_itab1-txt ' ',

'BSEG-SGTXT' t_itab1-ltxt ' ',

'RF05V-NEWBS' p_newbs1 ' ',

'RF05V-NEWKO' t_itab1-newko2 ' ',

'SAPLKACB' '0002' 'X',

'BDC_OKCODE' '=ENTE' ' ',

'COBL-GSBER' 'A000' ' ' ,

'COBL-KOSTL' t_itab1-kostl1 ' ',

'SAPLF040' '0300' 'X',

'BSEG-WRBTR' t_itab1-wrbtr ' ',

'SAPLKACB' '0002' 'X',

'BDC_OKCODE' '=ENTE' ' ',

'COBL-GSBER' 'A000' ' ' ,

'COBL-KOSTL' t_itab1-kostl2 ' ',

'SAPLF040' '0300' 'X',

'BDC_OKCODE' '=BP' ' ',

'BSEG-WRBTR' '*' ' ',

'BSEG-ZUONR' t_itab1-txt ' ',

'BSEG-SGTXT' p_txt ' ',

'SAPLKACB' '0002' 'X',

'BDC_OKCODE' '=ENTE' ' ',

'COBL-GSBER' 'A000' ' ' ,

'COBL-KOSTL' t_itab1-kostl2 ' '.

CALL TRANSACTION 'F-65' USING bdcdata OPTIONS FROM t_ctuprms

MESSAGES INTO t_msgtab.

CLEAR bdcdata.

REFRESH bdcdata.

PERFORM collect_messages.

ENDLOOP.

ELSEIF rb_cs = 'X'.

LOOP AT t_itab2.

PERFORM fill_bdcdata USING:

'SAPLF040' '0100' 'X',

'BDC_OKCODE' '/00' ' ',

'BKPF-BLDAT' p_bldat ' ',

'BKPF-BLART' p_blart ' ',

'BKPF-BUKRS' p_bukrs ' ',

'BKPF-BUDAT' p_budat ' ',

'BKPF-WAERS' p_waers ' ',

'RF05V-NEWBS' p_newbs ' ',

'RF05V-NEWKO' t_itab2-newko1 ' ',

'SAPLF040' '0300' 'X',

'BDC_OKCODE' '/00' ' ',

'BSEG-WRBTR' t_itab2-wrbtr ' ',

'BSEG-ZUONR' t_itab2-bill_no' ',

'BSEG-SGTXT' p_txt ' ',

'RF05V-NEWBS' p_newbs1 ' ',

'RF05V-NEWKO' t_itab2-newko2 ' ',

'SAPLKACB' '0002' 'X',

'BDC_OKCODE' '=ENTE' ' ',

'COBL-GSBER' 'A000' ' ',

'COBL-KOSTL' t_itab2-kostl ' ',

'SAPLF040' '0301' 'X',

'BDC_OKCODE' '=BP' ' ',

'BSEG-WRBTR' '*' ' ',

'BSEG-ZUONR' t_itab2-bill_no' ',

'BSEG-SGTXT' p_txt ' '.

CALL TRANSACTION 'F-65' USING bdcdata OPTIONS FROM t_ctuprms

MESSAGES INTO t_msgtab.

CLEAR bdcdata.

REFRESH bdcdata.

PERFORM collect_messages.

ENDLOOP.

****************start of chg0003**************

ELSEIF rb_csp = 'X'.

LOOP AT t_itab3.

PERFORM fill_bdcdata USING:

'SAPLF040' '0100' 'X',

'BDC_OKCODE' '/00' ' ',

'BKPF-BLDAT' p_bldat ' ',

'BKPF-BLART' p_blart ' ',

'BKPF-BUKRS' p_bukrs ' ',

'BKPF-BUDAT' p_budat ' ',

'BKPF-WAERS' p_waers ' ',

'RF05V-NEWBS' p_newbs ' ',

'RF05V-NEWKO' t_itab3-newko1 ' ',

'SAPLF040' '0302' 'X',

'BDC_OKCODE' '/00' ' ',

'BSEG-WRBTR' t_itab3-wrbtr ' ',

'BSEG-ZUONR' t_itab3-bill_no ' ',

'BSEG-SGTXT' p_txt ' ',

'RF05V-NEWBS' p_newbs1 ' ',

'RF05V-NEWKO' t_itab3-newko2 ' ',

* 'SAPLKACB' '0002' 'X',

* 'BDC_OKCODE' '=ENTE' ' ',

* 'COBL-GSBER' 'A000' ' ',

  • 'COBL-KOSTL' t_itab3-kostl ' ',

'SAPLF040' '0301' 'X',

'BDC_OKCODE' '=BP' ' ',

'BSEG-WRBTR' '*' ' ',

'BSEG-ZUONR' t_itab3-bill_no' ',

'BSEG-SGTXT' p_txt ' '.

CALL TRANSACTION 'F-65' USING bdcdata OPTIONS FROM t_ctuprms

MESSAGES INTO t_msgtab.

CLEAR bdcdata.

REFRESH bdcdata.

PERFORM collect_messages.

ENDLOOP.

***************end of chg0003*********************

ENDIF.

PERFORM write_messages.

ENDFORM.

&----


*& Form FILL_BDCDATA

&----


  • SUB-ROUTINE TO FILL BCDDATA FOR EXECUTION OF BDC

----


  • -->P_0414 text *

  • -->P_0415 text *

  • -->P_0416 text *

----


FORM fill_bdcdata USING val1

val2

val3.

CLEAR bdcdata.

IF val3 = 'X'.

MOVE val1 TO bdcdata-program.

MOVE val2 TO bdcdata-dynpro.

MOVE val3 TO bdcdata-dynbegin.

ELSE.

MOVE val1 TO bdcdata-fnam.

MOVE val2 TO bdcdata-fval.

ENDIF.

APPEND bdcdata.

ENDFORM. " FILL_BDCDATA

&----


*& Form FILL_T_ITAB

&----


*SUB-ROUTINE TO FILL DATA FROM A SPECIFIED FILE TO T_ITAB INTERNAL TABLE

----


FORM fill_t_itab.

CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'

EXPORTING

filename = p_flname

i_begin_col = 1

i_begin_row = 2

i_end_col = 6

i_end_row = 9999

TABLES

intern = t_excel

EXCEPTIONS

inconsistent_parameters = 1

upload_ole = 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.

        • Filling Data into Internal Tables T_OUTTAB From Internal Table

        • t_excel.

CLEAR t_itab.

LOOP AT t_excel.

IF t_excel-col = 1 .

t_itab-newko1 = t_excel-value.

ELSEIF t_excel-col = 2 .

t_itab-newko2 = t_excel-value.

ELSEIF t_excel-col = 3 .

MOVE t_excel-value TO t_itab-wrbtr.

ELSEIF t_excel-col = 4 .

t_itab-billno = t_excel-value.

ELSEIF t_excel-col = 5 .

t_itab-billdt = t_excel-value.

ELSEIF t_excel-col = 6 .

t_itab-kostl = t_excel-value.

ENDIF .

AT END OF row.

CONDENSE: t_itab-newko1 , t_itab-newko2,

t_itab-wrbtr , t_itab-billno,

t_itab-billdt , t_itab-kostl.

APPEND t_itab.

CLEAR t_itab.

ENDAT .

ENDLOOP.

ENDFORM. " FILL_T_ITAB

&----


*& Form FILL_CTUPRMS

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM fill_ctuprms.

CLEAR t_ctuprms.

IF rb_bg = 'X'.

t_ctuprms-dismode = 'N'.

ELSEIF rb_fg = 'X'.

t_ctuprms-dismode = 'A'.

ELSE.

t_ctuprms-dismode = 'E'.

ENDIF.

t_ctuprms-updmode = 'S'.

t_ctuprms-defsize = 'X'.

ENDFORM. " FILL_CTUPRMS

&----


*& Form COLLECT_MESSAGES

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM collect_messages.

DATA: w_msg(100).

  • IF w_tabix <> 0 AND p_val = '2'.

LOOP AT t_msgtab.

CALL FUNCTION 'FORMAT_MESSAGE'

EXPORTING

id = t_msgtab-msgid

lang = t_msgtab-msgspra

no = t_msgtab-msgnr

v1 = t_msgtab-msgv1

v2 = t_msgtab-msgv2

IMPORTING

msg = w_msg

EXCEPTIONS

OTHERS = 0.

CONDENSE w_msg.

CLEAR t_messages.

IF rb_ven = 'X'.

t_messages-vendor = t_itab-newko1.

t_messages-account = t_itab-newko2.

ELSEIF rb_gl = 'X'.

t_messages-vendor = t_itab1-newko1.

t_messages-account = t_itab1-newko2.

ENDIF.

t_messages-index = w_index.

t_messages-msgtyp = t_msgtab-msgtyp.

t_messages-message = w_msg.

APPEND t_messages.

ENDLOOP.

w_index = w_index + 1.

REFRESH t_msgtab.

ENDFORM. " COLLECT_MESSAGES

&----


*& Form WRITE_HEADING

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM write_heading.

FORMAT COLOR 1.

ULINE 0(128).

IF rb_ven = 'X'.

WRITE:/1 sy-vline,

2 'Vendor',

12 '/',

16'Acct No',

29 sy-vline,

30 'Status',

39 sy-vline,

40 'Description',

128 sy-vline.

ELSEIF rb_gl = 'X'.

WRITE:/1 sy-vline,

2 'Account1',

12 '/',

16'Account2',

29 sy-vline,

30 'Status',

39 sy-vline,

40 'Description',

128 sy-vline.

ENDIF.

ULINE 0(128).

FORMAT COLOR OFF.

ENDFORM. " WRITE_HEADING

&----


*& Form WRITE_MESSAGES

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM write_messages.

DATA: wa_msg LIKE t_messages.

LOOP AT t_messages.

wa_msg = t_messages.

WRITE:/1 sy-vline.

AT NEW vendor.

CONDENSE: wa_msg-vendor, wa_msg-account.

WRITE: 2 wa_msg-vendor , 12 '/' , 16 wa_msg-account .

ENDAT.

WRITE : 29 sy-vline.

IF wa_msg-msgtyp = 'S'.

WRITE: 30 icon_green_light.

ELSEIF wa_msg-msgtyp = 'E'.

WRITE: 30 icon_red_light.

ELSEIF wa_msg-msgtyp = 'W'.

WRITE: 30 icon_yellow_light.

ENDIF.

WRITE: 39 sy-vline,

wa_msg-message UNDER 'Description' , 128 sy-vline.

AT END OF vendor.

WRITE:/1 sy-vline.

ULINE 1(128).

ENDAT.

ENDLOOP.

ENDFORM. " WRITE_MESSAGES

&----


*& Form CREATE_FILE

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM create_file.

DATA t_tmptab LIKE t_itab OCCURS 0 WITH HEADER LINE.

DATA t_tmptab1 LIKE t_itab1 OCCURS 0 WITH HEADER LINE.

IF rb_ven = 'X' .

t_tmptab-newko1 = 'Vendor' .

t_tmptab-newko2 = 'Account' .

t_tmptab-billno = 'Bill No.' .

t_tmptab-billdt = 'Bill Date'.

t_tmptab-kostl = 'Cost Cntr'.

t_tmptab-wrbtr = 'Amount' .

APPEND t_tmptab .

ELSEIF rb_gl = 'X' .

t_tmptab1-newko1 = 'Account1' .

t_tmptab1-newko2 = 'Account2' .

t_tmptab1-txt = 'Assignment' .

t_tmptab1-ltxt = 'Long Text'.

t_tmptab1-kostl1 = 'Cost Cntr1'.

t_tmptab1-kostl2 = 'Cost Cntr2'.

t_tmptab1-wrbtr = 'Amount' .

APPEND t_tmptab1 .

ELSEIF rb_cs = 'X' .

t_tmptab-newko1 = 'Account1' .

t_tmptab-newko2 = 'Customer' .

t_tmptab-billno = 'Assignment' .

t_tmptab-kostl = 'Cost Cntr'.

t_tmptab-wrbtr = 'Amount' .

APPEND t_tmptab .

*************start of chg0003**************

ELSEIF rb_csp = 'X' .

t_tmptab-newko1 = 'Account1' .

t_tmptab-newko2 = 'Customer' .

t_tmptab-billno = 'Assignment' .

  • t_tmptab-kostl = 'Cost Cntr'.

t_tmptab-wrbtr = 'Amount' .

APPEND t_tmptab .

************end of chg0003*****************

ENDIF.

if rb_gl = 'X' .

CALL FUNCTION 'WS_DOWNLOAD'

EXPORTING

filename = p_flname

filetype = 'DAT'

TABLES

data_tab = t_tmptab1

EXCEPTIONS

file_open_error = 1

file_write_error = 2

invalid_filesize = 3

invalid_type = 4

no_batch = 5

unknown_error = 6

invalid_table_width = 7

gui_refuse_filetransfer = 8

customer_error = 9

OTHERS = 10.

else.

CALL FUNCTION 'WS_DOWNLOAD'

EXPORTING

filename = p_flname

filetype = 'DAT'

TABLES

data_tab = t_tmptab

EXCEPTIONS

file_open_error = 1

file_write_error = 2

invalid_filesize = 3

invalid_type = 4

no_batch = 5

unknown_error = 6

invalid_table_width = 7

gui_refuse_filetransfer = 8

customer_error = 9

OTHERS = 10.

endif.

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. " CREATE_FILE

&----


*& Form FILL_T_ITAB1

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM fill_t_itab1.

CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'

EXPORTING

filename = p_flname

i_begin_col = 1

i_begin_row = 2

i_end_col = 7

i_end_row = 9999

TABLES

intern = t_excel

EXCEPTIONS

inconsistent_parameters = 1

upload_ole = 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.

        • Filling Data into Internal Tables T_OUTTAB From Internal Table

        • t_excel.

CLEAR t_itab1.

LOOP AT t_excel.

IF t_excel-col = 1 .

t_itab1-newko1 = t_excel-value.

ELSEIF t_excel-col = 2 .

t_itab1-newko2 = t_excel-value.

ELSEIF t_excel-col = 3 .

MOVE t_excel-value TO t_itab1-wrbtr.

ELSEIF t_excel-col = 4 .

t_itab1-txt = t_excel-value.

ELSEIF t_excel-col = 5 .

t_itab1-ltxt = t_excel-value.

ELSEIF t_excel-col = 6 .

t_itab1-kostl1 = t_excel-value.

ELSEIF t_excel-col = 7 .

t_itab1-kostl2 = t_excel-value.

ENDIF.

AT END OF row.

CONDENSE: t_itab1-newko1 , t_itab1-newko2,

t_itab1-wrbtr , t_itab1-txt,

t_itab1-ltxt, t_itab1-kostl1, t_itab1-kostl2.

APPEND t_itab1.

CLEAR t_itab1.

ENDAT .

ENDLOOP.

ENDFORM. " FILL_T_ITAB1

&----


*& Form fill_t_itab2

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


form fill_t_itab2.

CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'

EXPORTING

filename = p_flname

i_begin_col = 1

i_begin_row = 2

i_end_col = 6

i_end_row = 9999

TABLES

intern = t_excel

EXCEPTIONS

inconsistent_parameters = 1

upload_ole = 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.

        • Filling Data into Internal Tables T_OUTTAB From Internal Table

        • t_excel.

CLEAR t_itab2.

LOOP AT t_excel.

IF t_excel-col = 1 .

t_itab2-newko1 = t_excel-value.

ELSEIF t_excel-col = 2 .

t_itab2-newko2 = t_excel-value.

ELSEIF t_excel-col = 3 .

MOVE t_excel-value TO t_itab2-wrbtr.

ELSEIF t_excel-col = 4 .

t_itab2-bill_no = t_excel-value.

ELSEIF t_excel-col = 6 .

t_itab2-kostl = t_excel-value.

ENDIF.

AT END OF row.

CONDENSE: t_itab2-newko1 , t_itab2-newko2,

t_itab2-wrbtr , t_itab2-bill_no,

t_itab2-kostl.

APPEND t_itab2.

CLEAR t_itab2.

ENDAT .

ENDLOOP.

endform. " fill_t_itab2

*******************start of chg**********************

&----


*& Form fill_t_itab3

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM fill_t_itab3.

CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'

EXPORTING

filename = p_flname

i_begin_col = 1

i_begin_row = 2

i_end_col = 4

i_end_row = 9999

TABLES

intern = t_excel

EXCEPTIONS

inconsistent_parameters = 1

upload_ole = 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.

        • Filling Data into Internal Tables T_OUTTAB From Internal Table

        • t_excel.

CLEAR t_itab3.

LOOP AT t_excel.

IF t_excel-col = 1 .

t_itab3-newko1 = t_excel-value.

ELSEIF t_excel-col = 2 .

t_itab3-newko2 = t_excel-value.

ELSEIF t_excel-col = 3 .

MOVE t_excel-value TO t_itab3-wrbtr.

ELSEIF t_excel-col = 4 .

t_itab3-bill_no = t_excel-value.

  • ELSEIF t_excel-col = 6 .

  • t_itab2-kostl = t_excel-value.

ENDIF.

AT END OF row.

CONDENSE: t_itab3-newko1 , t_itab3-newko2,

t_itab3-wrbtr , t_itab3-bill_no.

APPEND t_itab3.

CLEAR t_itab3.

ENDAT .

ENDLOOP.

ENDFORM.

******************end of chg0003****************

Regards,

Shafi