Тут вот, пришлось помогать коллеге по работе, попросил человек, программка простая, но из-за одной логической ошибки угрохали почти больше часа, выложу сюда, может кому пригодится, или самому через годик пригодится ...
Z_MKPF_MSEG - вьюха (MKPF + MSEG )
Самый главный код:
SELECT mblnr budat CPUTM werks matnr FROM z_mkpf_mseg
INTO CORRESPONDING FIELDS OF TABLE gt_outtab
WHERE werks IN so_werks AND matnr IN so_matnr AND budat IN so_budat
and bwart in so_bwart.
SORT gt_outtab BY werks matnr budat DESCENDING CPUTM DESCENDING.
LOOP AT gt_outtab INTO ls_outtab.
" блин оказывается нельзя использовать AND
ON CHANGE OF "ls_outtab-budat OR
ls_outtab-werks OR ls_outtab-matnr.
IF
"ls_outtab-budat <> ls_outtab1-budat and
ls_outtab-werks <> ls_outtab1-werks or " <<<<<- тут была ошибка вместо OR поставил AND
ls_outtab-matnr <> ls_outtab1-matnr .
APPEND ls_outtab TO gt_outtab1.
ENDIF.
move ls_outtab to ls_outtab1.
ENDON.
"
ENDLOOP.
Весь код:
*&---------------------------------------------------------------------*
*& Report ZMM_LAST_IN
*&
*&---------------------------------------------------------------------*
*& Выбор последних приходов
*&---------------------------------------------------------------------*
REPORT zmm_last_in_01.
TABLES: z_mkpf_mseg, t001k.
INCLUDE zmm_functions.
TYPES: BEGIN OF gs_outtab.
TYPES: celltab TYPE lvc_t_styl.
TYPES: colinfo TYPE lvc_t_scol.
TYPES: sticon TYPE icon_d.
INCLUDE STRUCTURE z_mkpf_mseg.
TYPES: END OF gs_outtab.
DATA: gt_outtab TYPE STANDARD TABLE OF gs_outtab WITH HEADER LINE.
DATA: ls_outtab LIKE LINE OF gt_outtab.
DATA: gt_outtab1 TYPE STANDARD TABLE OF gs_outtab WITH HEADER LINE.
DATA: ls_outtab1 LIKE LINE OF gt_outtab1.
DATA: gt_werks LIKE t001k OCCURS 0 WITH HEADER LINE.
* Определение экрана выбора
SELECTION-SCREEN BEGIN OF BLOCK 01 WITH FRAME TITLE text-001.
SELECT-OPTIONS: so_werks FOR z_mkpf_mseg-werks.
SELECT-OPTIONS: so_matnr FOR z_mkpf_mseg-matnr.
SELECT-OPTIONS: so_budat FOR z_mkpf_mseg-budat.
SELECT-OPTIONS: so_bwart FOR z_mkpf_mseg-bwart.
PARAMETERS: pa_ekorg TYPE eine-ekorg NO-DISPLAY DEFAULT 'X000'.
SELECTION-SCREEN END OF BLOCK 01.
START-OF-SELECTION.
PERFORM select_data.
PERFORM show_grid.
*&---------------------------------------------------------------------*
*& Form select_data
*&---------------------------------------------------------------------*
FORM select_data .
SELECT mblnr budat cputm werks matnr FROM z_mkpf_mseg
INTO CORRESPONDING FIELDS OF TABLE gt_outtab
WHERE werks IN so_werks AND matnr IN so_matnr AND budat IN so_budat
AND bwart IN so_bwart.
SORT gt_outtab BY werks matnr budat DESCENDING cputm DESCENDING.
LOOP AT gt_outtab INTO ls_outtab.
" блин оказывается нельзя использовать AND
ON CHANGE OF "ls_outtab-budat OR
ls_outtab-werks OR ls_outtab-matnr.
IF
"ls_outtab-budat <> ls_outtab1-budat and
ls_outtab-werks <> ls_outtab1-werks OR " <<<<<- тут была ошибка вместо OR поставил AND
ls_outtab-matnr <> ls_outtab1-matnr .
APPEND ls_outtab TO gt_outtab1.
ENDIF.
MOVE ls_outtab TO ls_outtab1.
ENDON.
"
ENDLOOP.
ENDFORM. " select_data
*&---------------------------------------------------------------------*
*& Form show_grid
*&---------------------------------------------------------------------*
FORM show_grid .
DATA: gs_layout TYPE slis_layout_alv.
DATA: lt_fcat TYPE slis_t_fieldcat_alv.
PERFORM build_alv_layout USING gs_layout.
PERFORM build_alv_fieldcat USING lt_fcat.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy-repid
* i_callback_pf_status_set = 'ALV_MAIN_STATUS_SET'
* i_callback_user_command = 'USER_COMMAND'
is_layout = gs_layout
it_fieldcat = lt_fcat
i_default = 'X'
i_save = 'A'
TABLES
t_outtab = gt_outtab1
EXCEPTIONS
program_error = 1
OTHERS = 2.
ENDFORM. " show_grid
**********************************************************************
* FORM : build_alv_layout
**********************************************************************
FORM build_alv_layout USING rs_layout TYPE slis_layout_alv.
rs_layout-zebra = 'X'.
rs_layout-coltab_fieldname = 'COLINFO'.
rs_layout-edit = ''.
ENDFORM. "build_alv_layout
FORM build_alv_fieldcat CHANGING rt_fieldcat TYPE slis_t_fieldcat_alv.
DATA: ls_fcat TYPE slis_fieldcat_alv.
DATA: syrepid LIKE sy-repid.
CLEAR ls_fcat.
ls_fcat-fieldname = 'CHECKBOX'.
ls_fcat-edit = 'X'.
ls_fcat-no_out = 'X'.
ls_fcat-tech = 'X'.
ls_fcat-outputlen = 6.
ls_fcat-col_pos = 01.
APPEND ls_fcat TO rt_fieldcat.
syrepid = sy-repid.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
* i_program_name = syrepid
i_structure_name = 'Z_MKPF_MSEG'
* i_inclname = syrepid
CHANGING
ct_fieldcat = rt_fieldcat
EXCEPTIONS
inconststent_interface = 1
program_error = 2
OTHERS = 3.
ENDFORM. "build_alv_fieldcat