Текущее время: Вт, июл 22 2025, 21:56

Часовой пояс: UTC + 3 часа


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 3 ] 
Автор Сообщение
 Заголовок сообщения: Диалоговые окна (проблема с инициализацией полей)
СообщениеДобавлено: Чт, сен 27 2012, 08:14 
Начинающий
Начинающий

Зарегистрирован:
Чт, авг 23 2012, 09:29
Сообщения: 10
Привет! Подскажите пожалуйста, программа выгружает данные из сапа в файл, директорию,имя файла мы выбираем на экране выбора, на нем же мы отбираем по трем полям(критерии) с помощью раскрывающихся списков значений данные из таблицы и всё это грузим в файл. Проблема в том,что в фаил передается 0 байт... Пробежался дебагером по коду, вижу что поля не считываются и цикл if не рабтит...please help!!! Код вложил:
*&---------------------------------------------------------------------*
*& Z_DOWNLOAD_DSO_DIALOG
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT Z_DOWNLOAD_DSO_DIALOG.

data B0001099000 like /BIC/B0001099000 occurs 100
with header line.

data:
wa_/BIC/PTSACCPER type /BIC/B0001099000-/BIC/PTSACCPER, "Отчетный период"
wa_/BIC/PTSRWSRCD type /BIC/B0001099000-/BIC/PTSRWSRCD, "Код дороги ИВЦ источника
wa_/BIC/PTSNUMSES type /BIC/B0001099000-/BIC/PTSNUMSES, "Номер сеанса
ok_code TYPE sy-ucomm.

PARAMETERS file_up1 TYPE string DEFAULT '.txt'.

CALL SCREEN 100.

MODULE all_field_0100 OUTPUT.
SET PF-STATUS 'STATUS_100'.
SET TITLEBAR '0200'.
IF wa_/BIC/PTSACCPER is initial.
B0001099000-/BIC/PTSACCPER = ' '.
if wa_/BIC/PTSRWSRCD is initial.
B0001099000-/BIC/PTSRWSRCD = ' '.
if wa_/BIC/PTSNUMSES is initial.
B0001099000-/BIC/PTSNUMSES = ' '.
ENDIF.
ENDIF.
ENDIF.
ENDMODULE. " all_field_0100 OUTPUT


MODULE button_command_0100 INPUT.
CASE ok_code.
WHEN 'EXIT'.
LEAVE PROGRAM.
WHEN 'OK'.
PERFORM FIELNAME.
ENDCASE.
ENDMODULE.

MODULE set_data_/BIC/PTSACCPER_0100 INPUT.
TYPES: BEGIN OF type_/BIC/PTSACCPER, /BIC/PTSACCPER LIKE B0001099000-/BIC/PTSACCPER,
END OF type_/BIC/PTSACCPER.

DATA itab_/BIC/PTSACCPER TYPE STANDARD TABLE OF type_/BIC/PTSACCPER WITH HEADER LINE.

SELECT DISTINCT /BIC/PTSACCPER from /BIC/B0001099000 into CORRESPONDING FIELDS OF TABLE itab_/BIC/PTSACCPER.

CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = '/BIC/PTSACCPER'
value_org = 'S'
TABLES
value_tab = itab_/BIC/PTSACCPER
EXCEPTIONS
parameter_error = 1
no_values_found = 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.
ENDMODULE.

MODULE set_data_/BIC/PTSRWSRCD_0100 INPUT.
TYPES: BEGIN OF type_/BIC/PTSRWSRCD,
/BIC/PTSRWSRCD LIKE B0001099000-/BIC/PTSRWSRCD,
END OF type_/BIC/PTSRWSRCD.

DATA itab_/BIC/PTSRWSRCD TYPE STANDARD TABLE OF type_/BIC/PTSRWSRCD WITH HEADER LINE.

SELECT DISTINCT /BIC/PTSRWSRCD FROM /BIC/B0001099000 INTO CORRESPONDING FIELDS OF TABLE itab_/BIC/PTSRWSRCD.


CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = '/BIC/PTSRWSRCD'
value_org = 'S'
TABLES
value_tab = itab_/BIC/PTSRWSRCD
EXCEPTIONS
parameter_error = 1
no_values_found = 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.

ENDMODULE. " set_data_/BIC/PTSRWSRCD_0100 INPUT


MODULE set_data_/BIC/PTSNUMSES_0100 INPUT.

TYPES: BEGIN OF type_/BIC/PTSNUMSES,
/BIC/PTSNUMSES LIKE B0001099000-/BIC/PTSNUMSES,
END OF type_/BIC/PTSNUMSES.

DATA itab_/BIC/PTSNUMSES TYPE STANDARD TABLE OF type_/BIC/PTSNUMSES WITH HEADER LINE.

SELECT DISTINCT /BIC/PTSNUMSES FROM /BIC/B0001099000
INTO CORRESPONDING FIELDS OF TABLE itab_/BIC/PTSNUMSES.

CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = '/BIC/PTSNUMSES'
value_org = 'S'
TABLES
value_tab = itab_/BIC/PTSNUMSES
EXCEPTIONS
parameter_error = 1
no_values_found = 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.
ENDMODULE. " set_data_/BIC/PTSNUMSES_0100 INPUT

MODULE Cycle_of_condition_0100 INPUT.

*Условия полей для 1ой таблицы
*-----------------------------------------------------------------------
IF WA_/BIC/PTSACCPER <> ' ' and wa_/BIC/PTSRWSRCD = ' ' and wa_/BIC/PTSNUMSES = ' '.
SELECT * from /BIC/B0001099000 into table B0001099000
WHERE /BIC/PTSACCPER = WA_/BIC/PTSACCPER.
endif.

IF WA_/BIC/PTSACCPER <> ' ' and wa_/BIC/PTSRWSRCD <> ' ' and wa_/BIC/PTSNUMSES = ' '.
SELECT * from /BIC/B0001099000 into table B0001099000
WHERE /BIC/PTSACCPER = WA_/BIC/PTSACCPER AND /BIC/PTSRWSRCD = wa_/BIC/PTSRWSRCD.
endif.

If WA_/BIC/PTSACCPER <> ' ' and wa_/BIC/PTSRWSRCD <> ' ' and wa_/BIC/PTSNUMSES <> ' '.
SELECT * from /BIC/B0001099000 into table B0001099000
WHERE /BIC/PTSACCPER = WA_/BIC/PTSACCPER AND /BIC/PTSRWSRCD = wa_/BIC/PTSRWSRCD
AND /BIC/PTSNUMSES = wa_/BIC/PTSNUMSES.
endif.

If WA_/BIC/PTSACCPER <> ' ' and wa_/BIC/PTSRWSRCD = ' ' and wa_/BIC/PTSNUMSES <> ' '.
SELECT * from /BIC/B0001099000 into table B0001099000
WHERE /BIC/PTSACCPER = WA_/BIC/PTSACCPER AND /BIC/PTSNUMSES = wa_/BIC/PTSNUMSES.
endif.
ENDMODULE. " Cycle_of_condition_0100 INPUT.

form FIELNAME.



CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
FILENAME = file_up1
FILETYPE = 'ASC'
WRITE_FIELD_SEPARATOR = 'X'
DAT_MODE = 'X'
TABLES
DATA_TAB = B0001099000.

DATA:
l_filename1 TYPE string,
l_filename2 TYPE string,
l_path TYPE string,
l_fullpath TYPE string,
l_action TYPE i.
l_filename1 = file_up1.
CALL METHOD cl_gui_frontend_services=>file_save_dialog
EXPORTING
window_title = 'Пожалуйста, выберите место '
default_extension = 'txt'
default_file_name = file_up1
file_filter = '*. txt'
CHANGING
filename = l_filename2
path = l_path
fullpath = l_fullpath
user_action = l_action
* data_tab = IT_EXP
* file_table = IT_EXP "initial_directory = 'C:'
* rc = IT_EXP
EXCEPTIONS

cntl_error = 1
OTHERS = 2. "#EC NOTEXT
CHECK sy-subrc = 0.

CALL METHOD cl_gui_cfw=>flush.
IF l_action = 0.
file_up1 = l_fullpath.
ENDIF.

ENDFORM.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Диалоговые окна (проблема с инициализацией полей)
СообщениеДобавлено: Чт, сен 27 2012, 09:43 
Ассистент
Ассистент

Зарегистрирован:
Пн, июн 27 2011, 15:21
Сообщения: 31
Какие именно поля не считываются? И где условие if не срабатывает?

И, кстати, какого типа отчетный период? Если типа datum (напр. 20120927), то условие:
Code:
IF WA_/BIC/PTSACCPER <> ' '

не подходит по-моему. Надо писать что-то вроде:
Code:
IF WA_/BIC/PTSACCPER <> ' 00000000'


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Диалоговые окна (проблема с инициализацией полей)
СообщениеДобавлено: Чт, сен 27 2012, 10:03 
Начинающий
Начинающий

Зарегистрирован:
Чт, авг 23 2012, 09:29
Сообщения: 10
Сделал, просто нужно было кое что поменять местами... Теперь осталось подкорректировать выход из программы, после выполнения... А то пока я нажму кнопку EXIT она выгружает мне всё :)))


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 3 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB