Автор Тема: Выборка последнего документа по заводу и материалу  (Прочитано 7082 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Паганель

  • Я НЕ ЗАНИМАЮСЬ SAP
  • Administrator
  • Full Member
  • *****
  • Сообщений: 1 367
  • Репутация: +20/-0
  • Пол: Мужской
  • https://noteifyapp.com
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • MacPlus Software
Тут вот, пришлось помогать коллеге по работе, попросил человек, программка простая, но из-за одной логической ошибки угрохали почти больше часа, выложу сюда, может кому пригодится, или самому через годик пригодится ...

Z_MKPF_MSEG - вьюха (MKPF + MSEG )

Самый главный код:
Код: You are not allowed to view links. Register or Login
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.  

Весь код:
Код: You are not allowed to view links. Register or Login
*&---------------------------------------------------------------------*
*& 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
« Последнее редактирование: Июль 19, 2009, 05:22:11 pm от Паганель »
You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login

Sapforum.Biz