Автор Тема: Новичок. Выгрзука таблицы в DBF файл  (Прочитано 15295 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн KishMish

  • Newbie
  • *
  • Сообщений: 2
  • Репутация: +0/-0
  • YearsYearsYearsYearsYearsYearsYearsYears
Я новичок (самоучка).
Подскажите, пожалуйста, последовательность действий для выгрузки таблицы в ДБФ файл
Использую рабочий пример с использованием
 CALL FUNCTION 'GET_FIELDTAB'
CALL FUNCTION 'WS_DOWNLOAD'


файл выгружается но данных там нет. он пустой.
таблица не пустая (выгружается в ALV)

не могу понять в чем дело.

проконсультируйте по логике алгоритма действий
что, зачем, и для чего тут используются, соответсно что тут не так
Код: You are not allowed to view links. Register or Login

 CONCATENATE 'C:\TEMP\acr_Tempo.DBF' '' INTO filename.

DATA: ZX030L LIKE X030L.
DATA: BEGIN OF FLDITAB OCCURS 0,
      FLDNAME(11) TYPE C,
      END OF FLDITAB.
DATA BEGIN OF ZDFIES OCCURS 0.
     INCLUDE STRUCTURE DFIES.
DATA END OF ZDFIES.

CALL FUNCTION 'GET_FIELDTAB'
      EXPORTING
          LANGU              = SY-LANGU
          ONLY               = SPACE
          TABNAME            = 'acr_Tempo'
          WITHTEXT           = 'X'
      IMPORTING
          HEADER             = ZX030L
      TABLES
          FIELDTAB           = ZDFIES
      EXCEPTIONS
          INTERNAL_ERROR      = 01
          NO_TEXTS_FOUND      = 02
          TABLE_HAS_NO_FIELDS = 03
          TABLE_NOT_ACTIV     = 04.

     CASE SY-SUBRC.
        WHEN 0.
          LOOP AT ZDFIES.
               FLDITAB-FLDNAME = ZDFIES-FIELDNAME.
               APPEND FLDITAB.
          ENDLOOP.
        WHEN OTHERS.
*             MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*              with  SY-SUBR
       ENDCASE.
    .                                                        " 1.1
  CALL FUNCTION 'WS_DOWNLOAD'
    EXPORTING
     filename                        = 'C:\TEMP\acr_Tempo.DBF'
     filetype                        = 'DBF'
    TABLES
      data_tab                      = tb_out
      FIELDNAMES                    = FLDITAB

   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
            .


Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 727
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Re: Новичок. Выгрзука таблицы в DBF файл
« Ответ #1 : Март 31, 2011, 04:32:18 pm »
You are not allowed to view links. Register or Login
Код: You are not allowed to view links. Register or Login
 CALL FUNCTION 'WS_DOWNLOAD'
    EXPORTING
     filename                        = 'C:\TEMP\acr_Tempo.DBF'
     filetype                        = 'DBF'
    TABLES
      data_tab                      = tb_out
      FIELDNAMES                    = FLDITAB
   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
            .
Ну данные должны быть в таблице tb_out а я не вижу в вашем коде где вы ее заполняете данными из таблицы.

Оффлайн KishMish

  • Newbie
  • *
  • Сообщений: 2
  • Репутация: +0/-0
  • YearsYearsYearsYearsYearsYearsYearsYears
Re: Новичок. Выгрзука таблицы в DBF файл
« Ответ #2 : Апрель 01, 2011, 07:12:28 am »
Таблица заполняется 100% . Она выводится на экран с помощь ALV.
В АЛВ ее видно.
моя задача сделать кнопку чтобы после показа АЛВ можно было выгрузить в ДБФ.


Код: You are not allowed to view links. Register or Login
DATA:BEGIN OF tb_out OCCURS 0,
bukrs(4),
saknr like skat-saknr,
txt50(60)," TYPE skat-txt50,
GVTYP LIKE bseg-GVTYP,
"belnr LIKE bseg-belnr,
belnr(10),
budat LIKE bkpf-budat,
bldat LIKE bkpf-bldat,
sgtxt(60),
usnam LIKE bkpf-usnam,
"dmbtr LIKE bseg-wrbtr,
dmbtr(20)," TYPE p DECIMALS 2,
shkzg LIKE bseg-shkzg,
lifn_kun like bseg-lifnr,
name1 like LFA1-name1,
augbl like bseg-augbl,
augdt like bseg-augdt,
bschl like bseg-bschl,
koart like bseg-koart,
fipos like bseg-fipos,
dmbe2 like bseg-dmbe2,
kurs2 like bkpf-kurs2,
hwae2 like bkpf-hwae2,
CPUDT like bkpf-CPUDT,
id_storno(2),

acr_2(15) Type c,
acr_3(15) Type c,
END OF tb_out.

Интерисует конкретно вот что
что происходит? (ивзвините если банальщина)
как я понял
Код: You are not allowed to view links. Register or Login
CALL FUNCTION 'WS_DOWNLOAD'
    EXPORTING
     filename                        = 'C:\TEMP\acr_Tempo.DBF'
     filetype                        = 'DBF'
    TABLES
      data_tab                      = tb_out
      FIELDNAMES                    = FLDITAB
Указываются ИМЯ ТИП ТАблицаДляВыгрузки и ТаблицаСИменамиПолей
FLDITAB  - определеяется в
Код: You are not allowed to view links. Register or Login
CALL FUNCTION 'GET_FIELDTAB'
      EXPORTING
          LANGU              = SY-LANGU
          ONLY               = SPACE
          TABNAME            = 'acr_Tempo'
          WITHTEXT           = 'X'
      IMPORTING
          HEADER             = ZX030L
      TABLES
          FIELDTAB           = ZDFIES
где я не совсем понимаю назначения представленных параметров.
объясните пжста или ссылку (русс) дайте.
что должно быть в GET_FIELDTAB
и какой результат доже быть после ее выполнения?


спасибо за ответ.

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 727
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Re: Выгрзука таблицы в DBF файл
« Ответ #3 : Апрель 22, 2011, 12:48:35 am »
Ну вообще-то я глянул в 6.0 реализацию данной функции, ну что сказать, не умеет она выгружать данные в формате  DBF, внутри идет проверка на тип передаваемого файла для выгрузки:
Код: You are not allowed to view links. Register or Login
CASE FILETYPE.
    WHEN 'ASC'.
    WHEN 'DAT'.
      ....
    WHEN 'BIN'.
      ....
    WHEN 'VSS'.
      ....
    WHEN OTHERS.
      RAISE INVALID_TYPE.
  ENDCASE.
Так что на DBF получите код ошибки: RAISE INVALID_TYPE. Это так сказать из плохого.. а из хорошего, есть новая функция: GUI_DOWNLOAD, которая позволяет как раз выгружать файл в формате DBF. Пример выгрузки таблицы MKPF для системы IDES, там у меня записей 400 где-то документов было, находится ниже. Попробуйте у себя в системе для своей таблицы.
Код: You are not allowed to view links. Register or Login
*&---------------------------------------------------------------------*
*& Report  YTSH_TEMP
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT  ytsh_temp.

DATA: lt_dfies LIKE dfies OCCURS 1 WITH HEADER LINE,
      lt_mkpf LIKE mkpf OCCURS 1 WITH HEADER LINE.
DATA: BEGIN OF flditab OCCURS 0,
      fldname LIKE dfies-fieldname,
END OF flditab.


* Данные для выгрузкки
SELECT * INTO TABLE lt_mkpf
FROM mkpf WHERE mjahr = '2008'.


CALL FUNCTION 'GET_FIELDTAB'
  EXPORTING
    tabname             = 'MKPF'
  TABLES
    fieldtab            = lt_dfies
  EXCEPTIONS
    internal_error      = 01
    no_texts_found      = 02
    table_has_no_fields = 03
    table_not_activ     = 04.

IF sy-subrc = 0.
  LOOP AT lt_dfies.
    APPEND lt_dfies-fieldname TO flditab.
  ENDLOOP.
ENDIF.

CALL FUNCTION 'GUI_DOWNLOAD'
  EXPORTING
*   BIN_FILESIZE                    =
    filename                        = 'C:\TEMP\TEST.DBF'
    filetype                        = 'DBF'
  TABLES
    data_tab                        = lt_mkpf
    fieldnames                      = flditab
 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.

PS: Пример полученного файла ниже, кодировка UTF-8, так как система юникодная, открывал его для просмотра, через Calc LibreOffice 3, так как других читалок формата DBF давно уже не держу. Вроде нормально открывалось. Кстати, если не передать список полей, то поля в DBF-файле будут называться типа F1, F2, F3 и т.д.
« Последнее редактирование: Апрель 22, 2011, 12:55:49 am от Uukrul »

Оффлайн KomAndr

  • Newbie
  • *
  • Сообщений: 4
  • Репутация: +0/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYears
Re: Новичок. Выгрзука таблицы в DBF файл
« Ответ #4 : Ноябрь 22, 2012, 09:43:26 am »
Всем привет.
Сделал аналогичную выгрузку, всё ок, за исключение русского текста(что-то с кодировкой).
А именно ФИО.

Как это можно победить?

Оффлайн KomAndr

  • Newbie
  • *
  • Сообщений: 4
  • Репутация: +0/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYears
Re: Новичок. Выгрзука таблицы в DBF файл
« Ответ #5 : Ноябрь 22, 2012, 10:43:50 am »
Вопрос решился:
CALL FUNCTION 'GUI_DOWNLOAD'
    EXPORTING
*     BIN_FILESIZE     =
      codepage         = '1503'
      filename         = lv_fullfilename
      filetype         = 'DBF'
    TABLES
      data_tab         = gt_sber_outtab
      fieldnames       = flditab
    EXCEPTIONS
      file_write_error = 1
      OTHERS           = 99.
  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
      WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 727
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Re: Новичок. Выгрзука таблицы в DBF файл
« Ответ #6 : Ноябрь 22, 2012, 11:02:51 am »
You are not allowed to view links. Register or Login
Сделал аналогичную выгрузку, всё ок, за исключение русского текста(что-то с кодировкой).
А именно ФИО.
Выгружаете локально? Тогда это настройка GUI клиента поставьте кодировку выгрузки win1251

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 727
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Re: Новичок. Выгрзука таблицы в DBF файл
« Ответ #7 : Ноябрь 23, 2012, 12:52:02 pm »
You are not allowed to view links. Register or Login
codepage         = '1503'
Ну я имел в виду вот это при настройке подключения, тогда все выгрузки идут вроде как с нужной кодировкой.