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

Часовой пояс: 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 часа


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

Сейчас этот форум просматривают: Google [Bot]


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

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