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

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

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

  • Я НЕ ЗАНИМАЮСЬ SAP
  • Administrator
  • Full Member
  • *****
  • Сообщений: 1 367
  • Репутация: +20/-0
  • Пол: Мужской
  • https://noteifyapp.com
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • 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
You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login