SAPфорум.RU
https://sapboard.ru/forum/

Необходима помощь с отчетом ALV!!!
https://sapboard.ru/forum/viewtopic.php?f=13&t=96199
Страница 1 из 1

Автор:  exotik [ Вт, мар 20 2018, 11:23 ]
Заголовок сообщения:  Необходима помощь с отчетом ALV!!!

На основе таблицы zobur необходимо сформировать отчет ALV со списком полей:
ФИО - ИТ0002-NACHN + ИТ0002-VORNA + ИТ0002-MIDNM.
DEV_NAME - поле DEV_name из таблицы zobur
DEV_MNF - поле DEV_MNF из таблицы zobur.
Пример кода, не судите строго, только начинаю изучать))))
Code:
tables: pernr,zobur .
infotypes: 0002.

data: begin of itab occurs 0 ,
  pernr type p0002-pernr,
  name like p0001-ename,
  DEV_MNf like Zobur-DEV_MNf,
  DEV_MODEL like Zobur-DEV_MODEL ,
  ADD_INFO like Zobur-ADD_INFO ,
  end of itab.

data: begin of itab1 occurs 0,
  pernr like p0002-pernr,
  name like p0001-ename,
  DEV_MNf like Zobur-DEV_MNf,
  DEV_MODEL like Zobur-DEV_MODEL ,
  ADD_INFO like Zobur-ADD_INFO ,
  end of itab1.



data: name like p0001-ename.
DATA: gc_alv_table TYPE REF TO cl_salv_table.



initialization.

pnptimed = 'D'.
start-of-selection.

get pernr.
provide * from p0002  between pn-begda and pn-endda.

    concatenate p0002-nachn  p0002-vorna  p0002-MIDNM into name.

    itab1-pernr = p0002-pernr.
   itab1-name = name.

append itab1.
select * from zobur
into corresponding fields of table itab
  where pernr = itab1-pernr.

  endprovide.


  end-of-selection.


cl_salv_table=>factory( IMPORTING r_salv_table = gc_alv_table
                          CHANGING t_table = itab[] ).
gc_alv_table->display( ).

возможно как-то перенести поле Name из таблицы itab1 в itab? Или какие есть еще варианты написать данный отчет?

Автор:  Kuranov.Dmitry [ Вт, мар 20 2018, 11:34 ]
Заголовок сообщения:  Re: Необходима помощь с отчетом ALV!!!

Я бы по другому организовал блок GET.

Code:
GET pernr.

    CLEAR itab.
   SELECT SINGLE  * FROM zobur
          INTO CORRESPONDING FIELDS OF  itab
                          WHERE pernr = pernr-pernr.
         

  LOOP AT p0002 WHERE begda <= pn-endda AND endda >= pn-begda.
     
        itab-pernr = p0002-pernr.
        CONCATENATE p0002-nachn  p0002-vorna  p0002-MIDNM INTO itab-name SEPARATED BY space.
       append itab.
  ENDLOOP.

  end-of-selection.


cl_salv_table=>factory( IMPORTING r_salv_table = gc_alv_table
                          CHANGING t_table = itab[] ).
gc_alv_table->display( ).



зачем две таблицы?

Автор:  Besa [ Вт, мар 20 2018, 11:36 ]
Заголовок сообщения:  Re: Необходима помощь с отчетом ALV!!!

Наверное, чтобы предупредить шквал элементарных вопросов, Вам имеет смысл что нибудь почитать для начинающих
http://sapboard.ru/forum/viewtopic.php?f=13&t=23150
http://sapboard.ru/forum/viewtopic.php?f=13&t=80772
, погуглить, https://www.sapnuts.com/courses/core-abap/internal-table-work-area/internal-table-operations.html, понажимать f1 в абап редакторе

Автор:  exotik [ Вт, мар 20 2018, 12:19 ]
Заголовок сообщения:  Re: Необходима помощь с отчетом ALV!!!

Kuranov.Dmitry написал(а):
Я бы по другому организовал блок GET.

Code:
GET pernr.

    CLEAR itab.
   SELECT SINGLE  * FROM zobur
          INTO CORRESPONDING FIELDS OF  itab
                          WHERE pernr = pernr-pernr.
         

  LOOP AT p0002 WHERE begda <= pn-endda AND endda >= pn-begda.
     
        itab-pernr = p0002-pernr.
        CONCATENATE p0002-nachn  p0002-vorna  p0002-MIDNM INTO itab-name SEPARATED BY space.
       append itab.
  ENDLOOP.

  end-of-selection.


cl_salv_table=>factory( IMPORTING r_salv_table = gc_alv_table
                          CHANGING t_table = itab[] ).
gc_alv_table->display( ).



зачем две таблицы?


В таблице zobur по ТН имеется несколько записей

Автор:  Kuranov.Dmitry [ Вт, мар 20 2018, 12:35 ]
Заголовок сообщения:  Re: Необходима помощь с отчетом ALV!!!

exotik написал(а):

В таблице zobur по ТН имеется несколько записей


логично, по тем у которых была смена второго ИТ в периоде ,будет две записи.

А как надо? по последней записи?
Скорректируйте цикл LOOP.

Автор:  Kuranov.Dmitry [ Вт, мар 20 2018, 12:38 ]
Заголовок сообщения:  Re: Необходима помощь с отчетом ALV!!!

Code:
CLEAR itab.
   SELECT SINGLE  * FROM zobur
          INTO CORRESPONDING FIELDS OF  itab
                          WHERE pernr = pernr-pernr.
         
  CHECK sy-subrc EQ 0.  "Отсеиваем ТН у которых нет данных в zobur

  LOOP AT p0002 WHERE begda <= pn-endda AND endda >= pn-endda. "Берем запись активную на конец периода
        itab-pernr = p0002-pernr.
        CONCATENATE p0002-nachn  p0002-vorna  p0002-MIDNM INTO itab-name SEPARATED BY space.
       append itab.
  ENDLOOP.

Автор:  exotik [ Вт, мар 20 2018, 12:50 ]
Заголовок сообщения:  Re: Необходима помощь с отчетом ALV!!!  Тема решена

Kuranov.Dmitry написал(а):
Code:
CLEAR itab.
   SELECT SINGLE  * FROM zobur
          INTO CORRESPONDING FIELDS OF  itab
                          WHERE pernr = pernr-pernr.
         
  CHECK sy-subrc EQ 0.  "Отсеиваем ТН у которых нет данных в zobur

  LOOP AT p0002 WHERE begda <= pn-endda AND endda >= pn-endda. "Берем запись активную на конец периода
        itab-pernr = p0002-pernr.
        CONCATENATE p0002-nachn  p0002-vorna  p0002-MIDNM INTO itab-name SEPARATED BY space.
       append itab.
  ENDLOOP.


Большое спасибо!
Вышел такой селект.
Code:


   SELECT  * FROM zobur
          into CORRESPONDING FIELDS OF itab
                          WHERE pernr = pernr-pernr.

  CHECK sy-subrc = 0.  "Отсеиваем ТН у которых нет данных в zobur
LOOP AT p0002 WHERE begda <= pn-endda AND endda >= pn-endda. "Берем запись активную на конец периода
        itab-pernr = p0002-pernr.
        CONCATENATE p0002-nachn  p0002-vorna  p0002-MIDNM INTO itab-name SEPARATED BY space.
       append itab.
  ENDLOOP.
endselect.

Автор:  Удав [ Ср, мар 21 2018, 00:55 ]
Заголовок сообщения:  Re: Необходима помощь с отчетом ALV!!!

exotik написал(а):
Вышел такой селект.

Неправильный вышел select. Посмотрите внимательнее на код Kuranov.Dmitry

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/