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

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 13 ] 
Автор Сообщение
 Заголовок сообщения: ALV отчет
СообщениеДобавлено: Чт, июн 01 2006, 17:17 
Начинающий
Начинающий

Зарегистрирован:
Чт, июн 01 2006, 15:56
Сообщения: 23
Откуда: Екатеринбург
Вывожу на экран таблицу.
После нажатия на кнопочку внутренняя табличка меняется. Я хочу, чтоб на экране она тоже менялась. Делаю как повторный вызов perform alv_list после нажатия на кнопку. Тогда после этого выходит двойная табличка (поля повторяются по 2 раза). :( :(
Как сделать, чтобы измененная таблица просто встала заменой старой? Помогите, пожалуйста!


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, июн 01 2006, 17:28 
Гость
в логике обработки кнопочки добавь
RS_SELFIELD-REFRESH = 'X'.

если непонятно, то давай покажи свой код


Принять этот ответ
Вернуться к началу
  
 
 Заголовок сообщения: Re: ALV отчет
СообщениеДобавлено: Чт, июн 01 2006, 17:39 
Директор
Директор

Зарегистрирован:
Чт, май 12 2005, 11:10
Сообщения: 1038
Пол: Мужской
Sveta83 написал(а):
Вывожу на экран таблицу.
После нажатия на кнопочку внутренняя табличка меняется. Я хочу, чтоб на экране она тоже менялась. Делаю как повторный вызов perform alv_list после нажатия на кнопку. Тогда после этого выходит двойная табличка (поля повторяются по 2 раза). :( :(
Как сделать, чтобы измененная таблица просто встала заменой старой? Помогите, пожалуйста!


Видимо если нажать еще раз на кнопку - то полей станет еще на 1 комплект больше?

Ненужно вызывать второй раз функцию, в которой заполняется структура полей ALV_GRID-а. Нужно просто изменить внутреннюю таблицу, кторая лежит под этим гридом и потом вызывать refresh.
Опция включения refresh-а показана выше.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, июн 01 2006, 20:07 
Начинающий
Начинающий

Зарегистрирован:
Чт, июн 01 2006, 15:56
Сообщения: 23
Откуда: Екатеринбург
нет, не второй раз на кнопку нажать
есть кнопка, после того как я нажму данные во внутренней таблице поменяются, но на экране остается старая табличка, не изменная
а мне нужно, чтоб после нажатия , табличка на экране автоматически тоже изменилась
я просто в функции обработки кнопки, добавила еще раз perform alv_list, после чего она становится на 1 комплект больше


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, июн 02 2006, 02:12 
Гость
Sveta83 написал(а):
нет, не второй раз на кнопку нажать
есть кнопка, после того как я нажму данные во внутренней таблице поменяются, но на экране остается старая табличка, не изменная
а мне нужно, чтоб после нажатия , табличка на экране автоматически тоже изменилась
я просто в функции обработки кнопки, добавила еще раз perform alv_list, после чего она становится на 1 комплект больше


Света, давайте код обработки нажатия на кнопку


Принять этот ответ
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, июн 02 2006, 05:24 
Начинающий
Начинающий

Зарегистрирован:
Чт, июн 01 2006, 15:56
Сообщения: 23
Откуда: Екатеринбург
Код программы:



TABLES: BKPF, Z00AVIZO, Z00AVIZOP.



DATA: AVSR TYPE P, AVSR_2 TYPE C, OTV(1), PEREM(10) TYPE C,

MSG LIKE BDCMSGCOLL OCCURS 10 WITH HEADER LINE,

X1(10) TYPE C, X2(16) TYPE C, X3(16) TYPE C, X4(16) TYPE C,

X5(16) TYPE C, X6(16) TYPE C.



TYPE-POOLS: SLIS.



DATA:

T_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,

T_SORT TYPE SLIS_T_SORTINFO_ALV,

L_LAYOUT TYPE SLIS_LAYOUT_ALV,

L_SEL_H TYPE SLIS_SEL_HIDE_ALV,

T_EVENTS TYPE SLIS_T_EVENT,

GX_VARIANT LIKE DISVARIANT,

G_SAVE(1) TYPE C,

G_EXIT(1) TYPE C,

G_VARIANT LIKE DISVARIANT,

G_PRINT TYPE SLIS_PRINT_ALV,

G_REPID LIKE SY-REPID.



DATA: BEGIN OF AVS OCCURS 50,

BUKRS LIKE BKPF-BUKRS,

BELNR LIKE BKPF-BELNR, "№ бух док-та

AVZNR(10) TYPE C, "№ док-та авизо

GJAHR LIKE Z00AVIZOP-GJAHR, "Фин год

MONAT LIKE BKPF-MONAT, "Период проводки

DEL LIKE Z00AVIZO-DEL, "Признак удаления авизо

XBLNR LIKE BKPF-XBLNR, "Старый № ссылки

NEW LIKE BKPF-XBLNR, "Новый № ссылки

XBLNR_2 LIKE BKPF-XBLNR,

AVZNR_N(10) TYPE C,

CH(1),

END OF AVS.



SELECTION-SCREEN BEGIN OF BLOCK CARR WITH FRAME TITLE TEXT-SER.

PARAMETERS: PBUKRS LIKE BKPF-BUKRS DEFAULT '6002'

MEMORY ID BUK OBLIGATORY.

SELECT-OPTIONS: PMONAT FOR BKPF-MONAT DEFAULT '1' TO '12'

OBLIGATORY NO-EXTENSION.

PARAMETERS: PGJAHR LIKE BKPF-GJAHR DEFAULT SY-DATUM(4)

MEMORY ID BUK OBLIGATORY.

SELECTION-SCREEN END OF BLOCK CARR.



INITIALIZATION.



AT SELECTION-SCREEN ON PMONAT.

IF PMONAT-LOW > 12 OR PMONAT-HIGH > 12.

MESSAGE E014 WITH 'Значение периода должно быть не больше 12.'.

ENDIF.



START-OF-SELECTION.



SELECT A~AVZNR A~BELNR A~BUKRS B~DEL B~GJAHR B~MONAT

INTO CORRESPONDING FIELDS OF TABLE AVS

FROM Z00AVIZOP AS A

INNER JOIN Z00AVIZO AS B

ON A~AVZNR = B~AVZNR AND A~GJAHR = B~GJAHR

WHERE A~BUKRS = PBUKRS AND B~GJAHR = PGJAHR

AND B~MONAT IN PMONAT.

* and b~del = space.



SORT AVS BY MONAT BELNR AVZNR.



LOOP AT AVS.



SELECT SINGLE XBLNR FROM BKPF INTO AVS-XBLNR

WHERE BELNR = AVS-BELNR AND BUKRS = PBUKRS

AND GJAHR = AVS-GJAHR.



MOVE AVS-XBLNR TO AVS-XBLNR_2.

*убираем нули и сдвигаем поле влево

AVSR = AVS-AVZNR.

AVS-AVZNR = AVSR.

SHIFT AVS-AVZNR LEFT DELETING LEADING SPACE.



*авизо удалено и есть в ссылке

IF AVS-DEL = 'X' AND AVS-XBLNR CS AVS-AVZNR.

PEREM = AVS-AVZNR.

SHIFT PEREM LEFT DELETING LEADING SPACE.

ENDIF.



SEARCH AVS-XBLNR FOR PEREM.

IF SY-SUBRC = 0.

SPLIT AVS-XBLNR AT ' ' INTO X1 X2 X3 X4 X5 X6.

CONCATENATE X2 X3 X4 X5 X6

INTO AVS-XBLNR

SEPARATED BY ' '.

SHIFT AVS-XBLNR LEFT DELETING LEADING SPACE.

ELSE.

ENDIF.

MODIFY AVS.



*авизо не удалено и в ссылке его нет

IF AVS-DEL = SPACE.

SEARCH AVS-XBLNR FOR AVS-AVZNR.

IF SY-SUBRC = 0.

ELSE.

SHIFT AVS-XBLNR LEFT DELETING LEADING SPACE.

CONCATENATE AVS-AVZNR AVS-XBLNR

INTO AVS-NEW

SEPARATED BY ' '.

ENDIF.

ENDIF.



AVS-CH = 'X'.



MODIFY AVS.



ENDLOOP.

*удаляем лишние строки из таблицы

DELETE AVS WHERE NEW = SPACE.



DELETE ADJACENT DUPLICATES FROM AVS

COMPARING BELNR AVZNR.



PERFORM ALV_LIST.



*&---------------------------------------------------------------------*

*& Form ALV_LIST

*&---------------------------------------------------------------------*

FORM ALV_LIST.

CLEAR AVS.

G_REPID = SY-REPID.

PERFORM PRL_FIELDCAT .

PERFORM PRL_LAYOUT CHANGING L_LAYOUT.

PERFORM FILL_SORT CHANGING T_SORT.

PERFORM PRL_SEL_H CHANGING L_SEL_H.

PERFORM PRL_EVENTS CHANGING T_EVENTS.

PERFORM PRL_VARIANT CHANGING G_VARIANT.

PERFORM PRINT_BUILD USING G_PRINT.



CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'

EXPORTING

I_CALLBACK_PROGRAM = G_REPID

I_CALLBACK_PF_STATUS_SET = 'PF_STATUS_SET'

I_CALLBACK_USER_COMMAND = 'USER_COMMAND'

I_STRUCTURE_NAME = 'AVS'

IS_LAYOUT = L_LAYOUT

IT_FIELDCAT = T_FIELDCAT

IT_SORT = T_SORT

IS_SEL_HIDE = L_SEL_H

IT_EVENTS = T_EVENTS

IS_VARIANT = G_VARIANT

I_DEFAULT = 'X'

I_SAVE = 'A'

IS_PRINT = G_PRINT

TABLES

T_OUTTAB = AVS

EXCEPTIONS

PROGRAM_ERROR = 1

OTHERS = 2.



ENDFORM. " ALV_LIST

*---------------------------------------------------------------------*

FORM USER_COMMAND USING U_UCOMM LIKE SY-UCOMM

SELFIELD TYPE SLIS_SELFIELD.

CASE U_UCOMM.



WHEN 'S_XBN'.

CALL FUNCTION 'POPUP_TO_DECIDE'

EXPORTING

TEXTLINE1 = 'Изменить исходные данные?'

* textline2 = ' '

TEXT_OPTION1 = 'Да'

TEXT_OPTION2 = 'Нет'

TITEL = 'Изменение поля ссылки'

CANCEL_DISPLAY = ' '

IMPORTING

ANSWER = OTV

EXCEPTIONS

OTHERS = 1.



*изменяем данные

IF OTV = 1.

PERFORM CREATE_CH.



* PERFORM ALV_LIST.



.



ELSE.

ENDIF.

ENDCASE.



ENDFORM.

*---------------------------------------------------------------------*

FORM FILL_SORT CHANGING C_T_SORT TYPE SLIS_T_SORTINFO_ALV.

ENDFORM. " FILL_SORT

*---------------------------------------------------------------------*

FORM PRL_EVENTS CHANGING L_EVENTS TYPE SLIS_T_EVENT.

DATA: L_EVENTS_C LIKE LINE OF L_EVENTS.

L_EVENTS_C-NAME = 'TOP_OF_PAGE'.

L_EVENTS_C-FORM = 'TOP_OF_PAGE'.

APPEND L_EVENTS_C TO L_EVENTS.

ENDFORM.



*---------------------------------------------------------------------*

* FORM TOP_OF_PAGE *

*---------------------------------------------------------------------*

* ........ *

*---------------------------------------------------------------------*

FORM TOP_OF_PAGE.

NEW-LINE NO-SCROLLING.

FORMAT COLOR COL_BACKGROUND INTENSIFIED OFF.

WRITE: SY-DATUM, SY-UZEIT.



NEW-LINE SCROLLING.

ENDFORM. " PRINT_BUILD

*---------------------------------------------------------------------*

FORM PRL_FIELDCAT.

DATA: STR_FIELDCAT LIKE LINE OF T_FIELDCAT,

N_POS TYPE I.



CLEAR STR_FIELDCAT.

N_POS = N_POS + 1.

STR_FIELDCAT-COL_POS = N_POS.

STR_FIELDCAT-SELTEXT_L = 'Период'.

STR_FIELDCAT-FIELDNAME = 'MONAT'.

STR_FIELDCAT-OUTPUTLEN = 6.

STR_FIELDCAT-DO_SUM = 'X'.

APPEND STR_FIELDCAT TO T_FIELDCAT.



CLEAR STR_FIELDCAT.

N_POS = N_POS + 1.

STR_FIELDCAT-COL_POS = N_POS.

STR_FIELDCAT-SELTEXT_L = 'Номер бух.док-та'.

STR_FIELDCAT-FIELDNAME = 'BELNR'.

STR_FIELDCAT-OUTPUTLEN = 16.

STR_FIELDCAT-DO_SUM = 'X'.

APPEND STR_FIELDCAT TO T_FIELDCAT.



CLEAR STR_FIELDCAT.

N_POS = N_POS + 1.

STR_FIELDCAT-COL_POS = N_POS.

STR_FIELDCAT-SELTEXT_L = 'Старый ссыл.номер'.

STR_FIELDCAT-FIELDNAME = 'XBLNR_2'.

STR_FIELDCAT-OUTPUTLEN = 17.

APPEND STR_FIELDCAT TO T_FIELDCAT.



CLEAR STR_FIELDCAT.

N_POS = N_POS + 1.

STR_FIELDCAT-COL_POS = N_POS.

STR_FIELDCAT-SELTEXT_L = 'Новый ссыл.номер'.

STR_FIELDCAT-FIELDNAME = 'NEW'.

STR_FIELDCAT-OUTPUTLEN = 16 .

STR_FIELDCAT-DO_SUM = 'X'.

APPEND STR_FIELDCAT TO T_FIELDCAT.



ENDFORM. " PRL_FIELDCAT

*---------------------------------------------------------------------*

FORM PRL_LAYOUT CHANGING P_L_LAYOUT.

L_LAYOUT-MIN_LINESIZE = 200.

L_LAYOUT-MAX_LINESIZE = 10000.

L_LAYOUT-BOX_FIELDNAME = 'CH'.

ENDFORM. " PRL_LAYOUT

*---------------------------------------------------------------------*

FORM PRL_SEL_H CHANGING L_SEL_H TYPE SLIS_SEL_HIDE_ALV.

DATA: LH_ENTRIES LIKE LINE OF L_SEL_H-T_ENTRIES.

L_SEL_H-MODE = 'C'. "(R)eplace or (C)hange

LH_ENTRIES-MODE = 'D'. "(D)elete (A)dd

LH_ENTRIES-SELNAME = 'P_STAMM'.

APPEND LH_ENTRIES TO L_SEL_H-T_ENTRIES.

ENDFORM. " PRL_SEL_H

*----------------------------------------------------------------------*

FORM PRL_VARIANT CHANGING G_VARIANT LIKE DISVARIANT.

G_VARIANT-REPORT = SY-REPID.

ENDFORM. " PRL_VARIANT

*----------------------------------------------------------------------*

FORM PRINT_BUILD USING G_PRINT TYPE SLIS_PRINT_ALV.

G_PRINT-NO_PRINT_LISTINFOS = 'X'.

ENDFORM. " PRINT_BUILD

*----------------------------------------------------------------------*

FORM PF_STATUS_SET USING EXTAB TYPE SLIS_T_EXTAB.

SET TITLEBAR 'S_AVS' WITH PBUKRS.

SET PF-STATUS 'STANDARD1' EXCLUDING EXTAB.

ENDFORM.

*&---------------------------------------------------------------------*

*& Form CREATE_CH

*&---------------------------------------------------------------------*

FORM CREATE_CH.



LOOP AT AVS WHERE CH = 'X'.



CLEAR: BDC, MSG. REFRESH: BDC, MSG.

PERFORM BDC_INS USING: 'X' 'SAPMF05L' '0100',

' ' 'RF05L-BELNR' AVS-BELNR,

' ' 'RF05L-BUKRS' AVS-BUKRS,

' ' 'RF05L-GJAHR' AVS-GJAHR,

' ' 'BDC_OKCODE' '/00'.

PERFORM BDC_INS USING: 'X' 'SAPMF05L' '0700',

' ' 'BDC_OKCODE' '=VK'.

PERFORM BDC_INS USING: 'X' 'SAPMF05L' '1710',

' ' 'BKPF-XBLNR' AVS-NEW,

' ' 'BDC_OKCODE' '=ENTR'.

PERFORM BDC_INS USING: 'X' 'SAPMF05L' '0700',

' ' 'BDC_OKCODE' '=AE'.

CALL TRANSACTION 'FB02' USING BDC MODE 'N' UPDATE 'S'

MESSAGES INTO MSG.

ENDLOOP.



* read table msg with key msgid = 'F5' msgnr = '312'.

IF SY-SUBRC NE 0.

MESSAGE S998.

ELSE.

MESSAGE W999.

ENDIF.



ENDFORM.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, июн 02 2006, 07:02 
Специалист
Специалист

Зарегистрирован:
Чт, авг 19 2004, 07:31
Сообщения: 234
Откуда: Нижнекамск
FORM USER_COMMAND USING U_UCOMM LIKE SY-UCOMM
SELFIELD TYPE SLIS_SELFIELD.
<бла-бла-бла>

SELFIELD-refresh = 'X'.

ENDFORM.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, июн 02 2006, 10:01 
Начинающий
Начинающий

Зарегистрирован:
Чт, июн 01 2006, 15:56
Сообщения: 23
Откуда: Екатеринбург
А обновлять внутреннюю табличку не нужно?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, июн 02 2006, 10:05 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Чт, июн 16 2005, 10:29
Сообщения: 336
Откуда: Минск->Москва
Пол: Мужской
Таблица данных, которые отображаются в АЛВ у вас меняется, с ваших слов, а то что вам подсказали, позволит отобразить измененую информацию на экране.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, июн 02 2006, 12:06 
Начинающий
Начинающий

Зарегистрирован:
Чт, июн 01 2006, 15:56
Сообщения: 23
Откуда: Екатеринбург
Добавила, ничего не получается!

Выделяю одну запись, жму изменить, и в итоге таблица на экране остается той же самой!

И так же запись помечена галочкой!





FORM USER_COMMAND USING U_UCOMM LIKE SY-UCOMM
SELFIELD TYPE SLIS_SELFIELD.
CASE U_UCOMM.

WHEN 'S_XBN'.

CALL FUNCTION 'POPUP_TO_DECIDE'
EXPORTING
TEXTLINE1 = 'Изменить исходные данные?'
* textline2 = ' '
TEXT_OPTION1 = 'Да'
TEXT_OPTION2 = 'Нет'
TITEL = 'Изменение поля ссылки'
CANCEL_DISPLAY = ' '



IMPORTING
ANSWER = OTV
EXCEPTIONS
OTHERS = 1.

*изменяем данные
IF OTV = 1.

PERFORM CREATE_CH.

SELFIELD-refresh = 'X'.

ELSE.
ENDIF.
ENDCASE.


ENDFORM.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, июн 02 2006, 12:34 
Специалист
Специалист

Зарегистрирован:
Чт, авг 19 2004, 07:31
Сообщения: 234
Откуда: Нижнекамск
ну для того чтобы таблица изменилась на экране
нужно чтобы она сначала изменилась в программе, а я не вижу что то чтобы она менялась
поэтому всё отрабатывает правильно
попробуйте
FORM USER_COMMAND USING U_UCOMM LIKE SY-UCOMM
SELFIELD TYPE SLIS_SELFIELD.
CASE U_UCOMM.

WHEN 'S_XBN'.

CALL FUNCTION 'POPUP_TO_DECIDE'
EXPORTING
TEXTLINE1 = 'Изменить исходные данные?'
* textline2 = ' '
TEXT_OPTION1 = 'Да'
TEXT_OPTION2 = 'Нет'
TITEL = 'Изменение поля ссылки'
CANCEL_DISPLAY = ' '



IMPORTING
ANSWER = OTV
EXCEPTIONS
OTHERS = 1.

*изменяем данные
IF OTV = 1.

PERFORM CREATE_CH.
refresh avs.
SELFIELD-refresh = 'X'.

ELSE.
ENDIF.
ENDCASE.
ENDFORM.

Если после этого будет непонятно то я уж не знаю что делать


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, июн 02 2006, 15:32 
Начинающий
Начинающий

Зарегистрирован:
Чт, июн 01 2006, 15:56
Сообщения: 23
Откуда: Екатеринбург
Большое спасибо!! :)
Я уже все поняла! Я решила, что после пакетного ввода, табличка тоже меняется и даже туда не смотрела, и искала ошибку совсем в другом!!
Извините!!! :roll:


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, июн 05 2006, 08:30 
Специалист
Специалист

Зарегистрирован:
Чт, авг 19 2004, 07:31
Сообщения: 234
Откуда: Нижнекамск
Да не за что. На самом деле не так уж всё и сложно. :D


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

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


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

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


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

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