Для версии 4.7
Для начинающих - могу предложить
образец программки, которая выводит
в алв табличку, заданную на селекционном экране.
Прежде чем запускать скопируйте с помощью транзакции
SE41 из программы SAPLKKBL статус STANDARD_FULLSCREEN
в свою программу, тогда можно будет его в своей программе менять,
вот примерный текст.
ГУРУ! Не судите строго - это для начинающих!
Code:
REPORT ZALV_SHABLON .
TYPE-POOLS: SLIS, KKBLO.
FIELD-SYMBOLS: <WA>, <P> TYPE STANDARD TABLE.
DATA: ZAP TYPE REF TO DATA,
PRN LIKE SY-REPID,
T_DD02T LIKE DD02T,
ZAGOL(90).
PARAMETERS: N_TABL LIKE DD02L-TABNAME OBLIGATORY.
* "Определение имени таблицы
START-OF-SELECTION.
CLEAR: T_DD02T.
SELECT SINGLE * INTO T_DD02T FROM DD02T
WHERE TABNAME = N_TABL
AND DDLANGUAGE = 'R'.
IF T_DD02T-TABNAME IS INITIAL.
WRITE:/ 'Не найдена таблица ', N_TABL.
EXIT.
ENDIF.
PERFORM READDAN.
PERFORM VALV.
*&---------------------------------------------------------------------*
*& Form READDAN
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM READDAN.
IF <P> IS ASSIGNED.
UNASSIGN <P>.
ENDIF.
CREATE DATA ZAP TYPE STANDARD TABLE OF (N_TABL).
ASSIGN ZAP->* TO <P>.
SELECT * FROM (N_TABL) APPENDING TABLE <P>.
* Здесь идет выборка из таблиц БД
ENDFORM. "READDAN
*&---------------------------------------------------------------------*
*& Form VALV
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM VALV.
PRN = SY-REPID.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = PRN
I_SAVE = 'A'
I_CALLBACK_USER_COMMAND = 'USCOM'
I_CALLBACK_PF_STATUS_SET = 'SETPF'
I_STRUCTURE_NAME = N_TABL
TABLES
T_OUTTAB = <P>.
ENDFORM. "VALV
*&---------------------------------------------------------------------*
*& Form SETPF
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->LT_EXTAB text
*----------------------------------------------------------------------*
FORM SETPF USING LT_EXTAB TYPE KKBLO_T_EXTAB .
SET PF-STATUS 'STANDARD_FULLSCREEN'.
* " Меню, которое можно редактировать
CLEAR: ZAGOL.
ZAGOL = T_DD02T-TABNAME.
CONDENSE: ZAGOL, T_DD02T-DDTEXT.
CONCATENATE 'Таблица' ZAGOL T_DD02T-DDTEXT INTO ZAGOL
SEPARATED BY SPACE.
SET TITLEBAR '1' WITH ZAGOL.
ENDFORM. "SETPF
*&---------------------------------------------------------------------*
*& Form USCOM
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->R_UCOMM text
* -->RS_SELFIELD text
*----------------------------------------------------------------------*
FORM USCOM USING R_UCOMM LIKE SY-UCOMM
RS_SELFIELD TYPE SLIS_SELFIELD.
IF <WA> IS ASSIGNED.
UNASSIGN <WA>.
ENDIF.
IF RS_SELFIELD-TABINDEX > 0.
READ TABLE <P> INDEX RS_SELFIELD-TABINDEX ASSIGNING <WA>.
ENDIF.
IF R_UCOMM = '&IC1' AND <WA> IS ASSIGNED.
* Здесь идет обработка по двойному щелчку на запись
* Данные о записи, на которую кликнули в переменной <WA>
ENDIF.
IF R_UCOMM = 'REFR'.
PERFORM READDAN.
RS_SELFIELD-REFRESH = 'X'.
* Обработка нажатия клавиши "Обновить"
ENDIF.
IF R_UCOMM = 'KOM1'.
* Здесь идет обработка по нажатие на клавишу "Команда 1"
IF <WA> IS ASSIGNED.
* есть выделенная строка
* Данные о записи, которую выделили в переменной <WA>
ELSE.
* нет выделенной строки
ENDIF.
ENDIF.
IF R_UCOMM = 'KOM2'.
* Здесь идет обработка по нажатие на клавишу "Команда 2"
IF <WA> IS ASSIGNED.
* есть выделенная строка
* Данные о записи, которую выделили в переменной <WA>
ELSE.
* нет выделенной строки
ENDIF.
ENDIF.
IF R_UCOMM = 'KOM3'.
* Здесь идет обработка по нажатие на клавишу "Команда 3"
IF <WA> IS ASSIGNED.
* есть выделенная строка
* Данные о записи, которую выделили в переменной <WA>
ELSE.
* нет выделенной строки
ENDIF.
ENDIF.
ENDFORM. "USCOM