Текущее время: Вс, июл 27 2025, 02:28

Часовой пояс: UTC + 3 часа


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 14 ] 
Автор Сообщение
 Заголовок сообщения: Отчет по сотрудникам
СообщениеДобавлено: Чт, май 08 2008, 09:37 
Начинающий
Начинающий
Аватара пользователя

Зарегистрирован:
Ср, май 07 2008, 15:23
Сообщения: 13
Большая просьба помочь начинающему программисту...

Была поставлена задача сформировать отчет "Список сотрудников, работающих по срочному договору"
отчет был реализован с помощью программы:

Code:
REPORT  zhr_adm_02.
*-- Îïèñàíèå

DEFINE m_fieldcat.
  add 1 to ls_fieldcat-col_pos.
  ls_fieldcat-fieldname   = &1.
  ls_fieldcat-ref_tabname = &2.

  append ls_fieldcat to lt_fieldcat.
END-OF-DEFINITION.
*---------------------------------------------------------------------*
TYPE-POOLS: slis.                      " ALV Global types

data: BEGIN OF stable2,
   cttyp  TYPE zhr_adm_02-cttyp,
     pernr  TYPE zhr_adm_02-pernr,
     ename  TYPE zhr_adm_02-ENAME,
     stexts TYPE zhr_adm_02-STEXTS,
     stexto TYPE zhr_adm_02-STEXTO,
     ctedt  TYPE zhr_adm_02-ctedt.

data END OF stable2.

TYPES: BEGIN OF stable,
      cttyp  TYPE zhr_adm_02-cttyp,
     pernr  TYPE zhr_adm_02-pernr,
     ename  TYPE zhr_adm_02-ENAME,
     stexts TYPE zhr_adm_02-STEXTS,
     stexto TYPE zhr_adm_02-stexto,
     ctedt  TYPE zhr_adm_02-ctedt,

    END OF stable.



DATA: gt_itable TYPE TABLE OF stable.

data: stexts TYPE zhr_adm_02-stexts,
      stexto TYPE zhr_adm_02-stexto.

TABLES: pernr.
INFOTYPES: 0000, 0001, 0002, 0016, 1000.                     "Ïåðñîíàëüíûå äàííûå
SELECT-OPTIONS: zcttyp FOR p0016-cttyp.

*-- Ýêðàí âûáîðà
INITIALIZATION.

START-OF-SELECTION.
*-- Îáðàáîòêà

clear: stexts, stexto.

GET pernr.
  PROVIDE * FROM p0016 BETWEEN pn-begda AND pn-endda.
    CHECK zcttyp.
    stable2-cttyp = p0016-cttyp.
    stable2-ctedt = p0016-ctedt.
    PROVIDE * FROM p0000 BETWEEN pn-begda AND pn-endda.
      stable2-pernr = p0000-pernr.
    ENDPROVIDE.

    PROVIDE * FROM p0001 BETWEEN pn-begda AND pn-endda.

      stable2-ename = p0001-ename.

      SELECT SINGLE STEXT INTO stexts
               FROM HRP1000 WHERE OBJID = p0001-plans
                              AND PLVAR = '01'
                              AND OTYPE = 'S'
                              AND BEGDA <= pn-endda
                              AND ENDDA >= pn-begda
                              AND LANGU = SY-LANGU .
      if sy-subrc = 0.
       stable2-stexts = stexts.
      endif.

      SELECT SINGLE STEXT INTO stexto
               FROM HRP1000 WHERE OBJID = p0001-orgeh
                              AND PLVAR = '01'
                              AND OTYPE = 'O'
                              AND BEGDA <= pn-endda
                              AND ENDDA >= pn-begda
                              AND LANGU = SY-LANGU .
      if sy-subrc = 0.
       stable2-stexto = stexto.
      endif.

    ENDPROVIDE.
    append stable2 to gt_itable.
  ENDPROVIDE.

END-OF-SELECTION.

sort gt_itable by cttyp stexto ascending.

PERFORM z_alv.

FORM z_alv.


call function 'REUSE_ALV_GRID_DISPLAY'
  EXPORTING
     I_STRUCTURE_NAME                  = 'ZHR_ADM_02'
  tables
     t_outtab                          = gt_itable
.

ENDFORM.


что в свою очередь выводить таблицу в EXCEL в виде:

Изображение
Изображение

однако начальницу он не строил, ей надо чтобы это выглядело так:

[img][img]http://img246.imageshack.us/img246/5698/sap2xh3.th.jpg[/img][/img]

Как это сделать не имею ни малейшего представления… подскажите пожалуйста как это сделать или хотябы где почитать.
Заранее спасибо!


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, май 08 2008, 09:43 
Директор
Директор

Зарегистрирован:
Чт, июн 21 2007, 09:01
Сообщения: 904
Откуда: УЖ 15/2
Пол: Мужской
Хочу подарить народу ФМ для выгрузки данных в WORD, EXCEL


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Отчет по сотрудникам
СообщениеДобавлено: Чт, май 08 2008, 09:45 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, сен 07 2004, 17:47
Сообщения: 2988
Slavik написал(а):
...
Как это сделать не имею ни малейшего представления… подскажите пожалуйста как это сделать или хотябы где почитать.
Заранее спасибо!

Почитате хотя бы тему "Хочу подарить народу ФМ для выгрузки данных в WORD, EXCEL" или тому-подобное. Здесь, на форуме, довольно много чего есть посвященного выгрузке в Excel. К тому-же почему имено Excel а не смартформы или PDF?

_________________
"После" - не значит "вследствие"


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, май 08 2008, 10:26 
Начинающий
Начинающий
Аватара пользователя

Зарегистрирован:
Ср, май 07 2008, 15:23
Сообщения: 13
почему EXCEL незнаю,видимо им так удобней,но это и не столь важно... щас читаю файл топика http://sapboard.ru/forum/viewtopic.php?t=4880 но найти нужное <я не знать русский языка>(


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, май 08 2008, 10:37 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, сен 07 2004, 17:47
Сообщения: 2988
Slavik написал(а):
почему EXCEL незнаю,видимо им так удобней,но это и не столь важно...
Как сказать, как сказать!
Цитата:
щас читаю файл топика http://sapboard.ru/forum/viewtopic.php?t=4880 но найти нужное <я не знать русский языка>(

А что именно там ищите?

_________________
"После" - не значит "вследствие"


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, май 08 2008, 10:59 
Начинающий
Начинающий
Аватара пользователя

Зарегистрирован:
Ср, май 07 2008, 15:23
Сообщения: 13
Цитата:
А что именно там ищите?


как сделать чтобы поля орг.единица и вид договора были не в отдельном столбце,а были заголовком и уже в зависимости от значения этих полей выводились остальные поля


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, май 08 2008, 13:25 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, авг 19 2004, 17:37
Сообщения: 1962
Откуда: Москва
Пол: Мужской
Slavik написал(а):
как сделать чтобы поля орг.единица и вид договора были не в отдельном столбце,а были заголовком и уже в зависимости от значения этих полей выводились остальные поля

Данным средством можно реализовать отчет любого уровня группировки. Нужно только немного разобраться. :)

_________________
"For all entries" не в SAP-ах, "for all entries" в головах! :)


Последний раз редактировалось Parazit Чт, май 08 2008, 18:13, всего редактировалось 1 раз.

Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, май 08 2008, 13:48 
Начинающий
Начинающий
Аватара пользователя

Зарегистрирован:
Ср, май 07 2008, 15:23
Сообщения: 13
Цитата:
Данным средством можно реализовать отчет любого уровня группировки. Нужно только немного разобраться.

"данным" это каким? тем что в примере во втором посте?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, май 13 2008, 12:08 
Начинающий
Начинающий
Аватара пользователя

Зарегистрирован:
Ср, май 07 2008, 15:23
Сообщения: 13
не могу найти как дописать надо,если кто-то знает помогите плз исправить программу


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, май 13 2008, 12:24 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, сен 07 2004, 17:47
Сообщения: 2988
Slavik написал(а):
не могу найти как дописать надо,если кто-то знает помогите плз исправить программу

Что, куда и где надо дописать? Какую программу править?
Задавайте более конкретные вопросы - быстрее получите ответ.

_________________
"После" - не значит "вследствие"


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, май 14 2008, 08:39 
Начинающий
Начинающий
Аватара пользователя

Зарегистрирован:
Ср, май 07 2008, 15:23
Сообщения: 13
Предоставленная программа реализует то что нарисовано на первом рисунке, надо чтобы получилось так как на втором. Если точней то чтобы сортировка шла по полю "вид договора (CTTYP)" но чтобы оно было не отдельным столбцом, а было как бы заголовком и уже относительно этого поля выводились остальные поля.

======================
PERNR таб. №
NACHN Фамилия
VORNA Имя
MIDNM Отчество
PLANS Должность
ORGEH Структурное подразделение
CTEDT Окончание договора
CTTYP Вид договора


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, май 14 2008, 21:09 
Президент
Президент

Зарегистрирован:
Пт, апр 28 2006, 22:39
Сообщения: 2514
Откуда: North Taxolina, USA
Пол: Женский
Slavik написал(а):
не могу найти как дописать надо,если кто-то знает помогите плз исправить программу


Из солидарности к "бродильно-лагерному цеху". 8) Предлагаю не самое элегантное, но довольно простое решение. Вся имеющая функциональность остается, но на selection screen добавляем пимпочку - "Отчет в Excel". При нажатии производится выборка данных (по уже имеющемуся алгоритму) во внутреннюю табличку. Потом табличка сортируется как надо (вид договора, цех и т.д.) и в цикле по табличке (LOOP) брутально заполняются клетки для Excel с подзаголовками и прочая. Потом отчет напрямую посылается в Excel через это, как его, OLE Automation.

Вот очень примитивный прототип (набросала по-быстрому на базе имеющегося, но не моего, репорта):

Code:
include ole2incl.

data: obj_excel type ole2_object.
data: obj_books type ole2_object.
data: obj_book  type ole2_object.
data: obj_cell  type ole2_object.

data: begin of itab_data occurs 0,
      level1,
      level2,
      field1,
      field2,
     end of itab_data.

data: l_row type i.

<выборка данных в itab_data>

  create object obj_excel 'EXCEL.APPLICATION'.
  call method of obj_excel 'WORKBOOKS' = obj_books.
  call method of obj_books 'ADD' = obj_book.

  l_row = 1.

   sort itab_data by level1 level2.

  loop at itab_data.

    at first.
      perform fill_cell using l_row 1 'This is the report header'.
      l_row = l_row + 1.
    endat.

    at new level1.
* First level header
      perform fill_cell using l_row 1 itab_data-level1.
      l_row = l_row + 1.
    endat.

    at new level2.
* Second level header
      perform fill_cell using l_row 1 itab_data-level2.
      l_row = l_row + 1.
    endat.

* Details
    perform fill_cell using l_row 1 itab_data-field1.
    perform fill_cell using l_row 2 itab_data-field2.
    l_row = l_row + 1.

  endloop.

form fill_cell using p_row p_col p_value.
  call method of obj_excel 'CELLS' = obj_cell
       exporting #1 = p_row #2 = p_col.
  set property of obj_cell 'VALUE' = p_value.
endform.


Здесь в табличке itab_data поля level1 и level2 означают уровни, по которым будет разбита табличка. Когда меняется значение level1 или level2, то печатается соотв. подзаголовок. Например, если у вас в табличке:

договор1 цех1 Вася Пупкин
договор1 цех2 Витя Пупкин
договор1 цех2 Сеня Пупкин
договор2 цех1 Вова Пупкин

То на выходе будет:

This is the report header
договор1
цех1
Вася Пупкин
цех2
Витя Пупкин
Сеня Пупкин
договор2
цех1
Вова Пупкин

Подобным образом можно добавить и суммы, и все, что угодно. Обратите внимание, что структура самой таблички важна для правильной работы AT ... ENDAT. Естественно, уровней может быть больше и даже не обязательно использовать AT, это я просто идею иллюстрирую.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, май 16 2008, 10:52 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, авг 19 2004, 17:37
Сообщения: 1962
Откуда: Москва
Пол: Мужской
Jelena написала:
...брутально заполняются клетки для Excel с подзаголовками и прочая. Потом отчет напрямую посылается в Excel через это, как его, OLE Automation.


Кстати, чтобы не заморачиваться с OLE, для вывода напрямую в ячейки по их адресам можно использовать мой модуль выгрузки. В поле IT_VALUES-VAR_NAME = "адрес ячейки в формате Excel", в поле IT_VALUES-VALUE = "текстовое значение". Преимущество, в сравнении с OLE, в скорости вывода отчета, примерно на порядок.

p.s.
Но все же раскладывание по ячейкам на уровне АБАП более геморройное занятие, чем использование форматированного шаблона.

_________________
"For all entries" не в SAP-ах, "for all entries" в головах! :)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, май 16 2008, 17:03 
Президент
Президент

Зарегистрирован:
Пт, апр 28 2006, 22:39
Сообщения: 2514
Откуда: North Taxolina, USA
Пол: Женский
Parazit написал:
Кстати, чтобы не заморачиваться с OLE, для вывода напрямую в ячейки по их адресам можно использовать мой модуль выгрузки. [...] Но все же раскладывание по ячейкам на уровне АБАП более геморройное занятие, чем использование форматированного шаблона.


Абсолютно с вами согласна. Просто мне показалось, что у нашего начинающего коллеги возникли определенные трудности с интерпретацией и адаптацией модуля. Соответственно был предложен более примитивный вариант. :)


Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 14 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex [Bot]


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB