Skip to Content
0
Former Member
Jun 19, 2007 at 06:02 AM

DBF file creation

138 Views

Hi,

I am creating a DBF file using WS_DOWNLOAD and this file is being called by a non SAP program. The file is created but i can't seem to find its field. Code attached, any ideas are welcome. Thanks in advance.

  • Create file

LOOP AT it_final INTO wa_final WHERE docnum EQ wa_temp-docnum

AND amount NE 0.

CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'

EXPORTING

input = wa_final-prodcode

IMPORTING

output = wa_final-prodcode.

IF NOT w_flag IS INITIAL AND

wa_final-prodcode EQ w_prevmatnr AND

wa_final-docnum EQ w_prevvbeln.

READ TABLE it_dbf INTO wa_dbf

WITH KEY docnum = wa_final-docnum

prodcode = wa_final-prodcode BINARY SEARCH.

wa_dbf-qty = wa_dbf-qty + wa_final-qty.

wa_dbf-amount = wa_dbf-amount + wa_final-amount.

MODIFY it_dbf FROM wa_dbf INDEX sy-tabix.

ELSE.

IF wa_final-distcode = '213'.

wa_dbf-distcode = '212'.

ELSE.

wa_dbf-distcode = wa_final-distcode.

ENDIF.

wa_dbf-docnum = wa_final-docnum.

wa_dbf-docdate = wa_final-docdate.

wa_dbf-prodcode = wa_final-prodcode.

wa_dbf-trandate = wa_final-trandate.

wa_dbf-trantime = wa_final-trantime.

wa_dbf-qty = wa_final-qty.

wa_dbf-price = wa_final-price.

wa_dbf-amount = wa_final-amount.

wa_dbf-proddesc = wa_final-proddesc.

wa_dbf-grpcode = wa_final-grpcode.

wa_dbf-brndcode = wa_final-brndcode.

wa_dbf-sku2lku = wa_final-sku2lku.

wa_dbf-lkuprice = wa_final-lkuprice.

wa_dbf-srpprice = wa_final-srpprice.

wa_dbf-status = wa_final-status.

wa_dbf-password = wa_final-password.

APPEND wa_dbf TO it_dbf.

ENDIF.

w_flag = c_mark.

w_prevmatnr = wa_final-prodcode.

w_prevvbeln = wa_final-docnum.

CLEAR: wa_final, wa_dbf.

ENDLOOP.

IF NOT it_dbf IS INITIAL.

PERFORM f_populate_header.

  • retrieve filename

CLEAR: w_distcode, w_vkorg, w_mtart, w_num.

SELECT SINGLE distcode

vkorg

mtart

MAX( range )

INTO (w_distcode, w_vkorg, w_mtart, w_num)

FROM zsdsdis

WHERE distcode = wa_temp-distcode

GROUP by distcode vkorg mtart.

IF sy-subrc EQ 0.

ADD 1 TO w_num.

ELSE.

  • Please maintain distributor list for

MESSAGE i000 WITH text-004 wa_temp-distcode.

STOP.

ENDIF.

CLEAR w_fname.

CONCATENATE c_path c_f wa_temp-distcode w_num c_dot c_ftype

INTO w_fname.

  • generate dbf file

CALL FUNCTION 'WS_DOWNLOAD'

EXPORTING

filename = w_fname

filetype = c_ftype

TABLES

data_tab = it_dbf

fieldnames = it_fname

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.

IF sy-subrc EQ 0.

  • update zautorec flag

CLEAR: wa_final.

LOOP AT it_final INTO wa_final WHERE docnum EQ wa_temp-docnum.

UPDATE zautorec SET flag = c_mark

WHERE distcode = wa_final-distcode

AND docnum = wa_final-docnum

AND posnr = wa_final-posnr

AND docdate = wa_final-docdate

AND prodcode = wa_final-prodcode.

COMMIT WORK AND WAIT.

ENDLOOP.

  • increment numeric range for filename

UPDATE zsdsdis SET range = w_num

WHERE distcode = wa_temp-distcode

AND vkorg = w_vkorg

AND mtart = w_mtart.

COMMIT WORK AND WAIT.

  • count number of created file

ADD 1 TO w_lines.

CLEAR wa_dbf.

REFRESH it_dbf.

ELSE.

  • display error

CLEAR w_error.

SELECT SINGLE text

INTO w_error

FROM t100

WHERE sprsl EQ sy-langu

AND arbgb EQ sy-msgid

AND msgnr EQ sy-msgno.

MESSAGE s000 WITH w_error w_fname.

STOP.

ENDIF. "file creation ok

ENDIF. "it_dbf not initial

ENDLOOP.

MESSAGE s000 WITH w_lines text-003. " n DBF file created.