SAP R/3 форум ABAP консультантов
Russian ABAP Developer's Club

Home - FAQ - Search - Memberlist - Usergroups - Profile - Log in to check your private messages - Register - Log in - English
Blogs - Weblogs News

Количество записей PNP


Goto page 1, 2  Next
 
Post new topic   Reply to topic    Russian ABAP Developer's Club Forum Index -> ABAP
View previous topic :: View next topic  
Author Message
flex
Специалист
Специалист



Joined: 02 Feb 2011
Posts: 50

PostPosted: Tue Jul 19, 2011 3:54 pm    Post subject: Количество записей PNP Reply with quote

Всем привет!

Появилась такая интересная задачка: узнать количество записей (в моем случаем табельных номеров) из PNP, точнее после того как заполнили значения на сел. экране и запустили отчет.

Не могу понять, pnp собирает какую либо таблицу перед тем, как используем GET PERNR?

p.s.
Были мысли прочитать кол-во из 1го инфотипа, но это немного не то.
Кол-во записей нужно именно до GET PERNR.


Last edited by flex on Thu Jul 21, 2011 3:03 pm; edited 2 times in total
Back to top
View user's profile Send private message
Удав
Гуру
Гуру


Age: 48
Joined: 25 Jan 2008
Posts: 580
Location: Москва

PostPosted: Wed Jul 20, 2011 12:36 am    Post subject: Reply with quote

А вы поставьте точку останова на GET pernr и посмотрите, откуда вызывается это событие Wink
В ЛБД как правило работают с записями с помощью курсоров, поэтому нельзя узнать количество записей штатными средствами ЛБД до того, как все записи были обработаны.
PS: А что хоть за задача стоит?

_________________
С уважением,
Удав.
Back to top
View user's profile Send private message
flex
Специалист
Специалист



Joined: 02 Feb 2011
Posts: 50

PostPosted: Wed Jul 20, 2011 10:25 am    Post subject: Reply with quote

Задачка такая:
Code:


DATA g_progress_text TYPE string.
DATA n TYPE i.

i = кол-во прошедших табельных / общее кол-во табельных

  " отражение процесса обработки ТН
  CONCATENATE 'Обработано' n '%'
    INTO g_progress_text SEPARATED BY space.
  CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
    EXPORTING
      percentage = 1
      text       = g_progress_text.


Вот как-то так) Ну обработанные табельные понятное дело в цикле считать. Я просто примерно описал задачу кодом.

p.s. поставил точку остановки на GET Pernr, провалился там, увидел табличку pernr_tab, в которой лежит то, что нужно, но её в программе не видно Sad


Last edited by flex on Wed Jul 20, 2011 11:32 am; edited 1 time in total
Back to top
View user's profile Send private message
bimit
Специалист
Специалист



Joined: 11 Jul 2011
Posts: 56

PostPosted: Wed Jul 20, 2011 11:19 am    Post subject: Reply with quote

flex wrote:
Задачка такая:
Code:


DATA g_progress_text TYPE string.
DATA n TYPE i.

i = кол-во прошедших табельных / общее кол-во табельных

  " отражение процесса обработки ТН
  CONCATENATE 'Обработано' n '%'
    INTO g_progress_text SEPARATED BY space.
  CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
    EXPORTING
      percentage = 1
      text       = g_progress_text.


Вот как-то так) Ну обработанные табельные понятное дело в цикле считать. Я просто примерно описал задачу кодом.

p.s. поставил точку остановки на GET Pernr, никуда не провалилось, если вы это имели ввиду...


GET pernr. задает цикл по выбранным табельным номерам, для этого мы ее вначале объявляем NODES pernr. , завершить его можно событием END-OF-SELECTION
Back to top
View user's profile Send private message
bimit
Специалист
Специалист



Joined: 11 Jul 2011
Posts: 56

PostPosted: Wed Jul 20, 2011 11:29 am    Post subject: Re: Количество записей PNP Reply with quote

flex wrote:
Всем привет!

Появилась такая интересная задачка: узнать количество записей (в моем случаем табельных номеров) из PNP, точнее после того как заполнили значения на сел. экране и запустили отчет.

Не могу понять, pnp собирает какую либо таблицу перед тем, как используем GET PERNR?

p.s.
Были мысли прочитать кол-во из 1го инфотипа, но это немного не то.
Кол-во записей нужно именно до GET PERNR.


Непонятно для чего это нужно Rolling Eyes , но можешь посчитать записи в таблице PA0002 (Персональные данные)
Back to top
View user's profile Send private message
flex
Специалист
Специалист



Joined: 02 Feb 2011
Posts: 50

PostPosted: Wed Jul 20, 2011 11:33 am    Post subject: Reply with quote

bimit wrote:
flex wrote:
Задачка такая:
Code:


DATA g_progress_text TYPE string.
DATA n TYPE i.

i = кол-во прошедших табельных / общее кол-во табельных

  " отражение процесса обработки ТН
  CONCATENATE 'Обработано' n '%'
    INTO g_progress_text SEPARATED BY space.
  CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
    EXPORTING
      percentage = 1
      text       = g_progress_text.


Вот как-то так) Ну обработанные табельные понятное дело в цикле считать. Я просто примерно описал задачу кодом.

p.s. поставил точку остановки на GET Pernr, никуда не провалилось, если вы это имели ввиду...


GET pernr. задает цикл по выбранным табельным номерам, для этого мы ее вначале объявляем NODES pernr. , завершить его можно событием END-OF-SELECTION


Уж это я знаю Laughing
Back to top
View user's profile Send private message
flex
Специалист
Специалист



Joined: 02 Feb 2011
Posts: 50

PostPosted: Wed Jul 20, 2011 11:34 am    Post subject: Re: Количество записей PNP Reply with quote

bimit wrote:
flex wrote:
Всем привет!

Появилась такая интересная задачка: узнать количество записей (в моем случаем табельных номеров) из PNP, точнее после того как заполнили значения на сел. экране и запустили отчет.

Не могу понять, pnp собирает какую либо таблицу перед тем, как используем GET PERNR?

p.s.
Были мысли прочитать кол-во из 1го инфотипа, но это немного не то.
Кол-во записей нужно именно до GET PERNR.


Непонятно для чего это нужно Rolling Eyes , но можешь посчитать записи в таблице PA0002 (Персональные данные)


Не хочется делать лишние действия. Хочется найти способ посчитать количество записей (выбранных табельных) из какой-либо pnp-шной таблицы...
Back to top
View user's profile Send private message
bimit
Специалист
Специалист



Joined: 11 Jul 2011
Posts: 56

PostPosted: Wed Jul 20, 2011 11:54 am    Post subject: Re: Количество записей PNP Reply with quote

flex wrote:
bimit wrote:
flex wrote:
Всем привет!

Появилась такая интересная задачка: узнать количество записей (в моем случаем табельных номеров) из PNP, точнее после того как заполнили значения на сел. экране и запустили отчет.

Не могу понять, pnp собирает какую либо таблицу перед тем, как используем GET PERNR?

p.s.
Были мысли прочитать кол-во из 1го инфотипа, но это немного не то.
Кол-во записей нужно именно до GET PERNR.


Непонятно для чего это нужно Rolling Eyes , но можешь посчитать записи в таблице PA0002 (Персональные данные)


Не хочется делать лишние действия. Хочется найти способ посчитать количество записей из какой-либо pnp-шной таблицы...


А что значит количество записей pnp-шной таблицы?? есть разве таблица где ключевое поле только табельный?? задай событие START-OF-SELECTION обычным селектом считай из PA0002 записи во внутреннюю табицу и делай что хочешь с ней, а потом уж задавай get pernr.
Back to top
View user's profile Send private message
flex
Специалист
Специалист



Joined: 02 Feb 2011
Posts: 50

PostPosted: Wed Jul 20, 2011 11:58 am    Post subject: Reply with quote

Посидел в отладчике, нашел табличку pernr_tab, вот это то, что нужно, но, к сожалению в программе её не увидеть Sad


4293.jpg
 Description:
 Filesize:  110.19 KB
 Viewed:  22271 Time(s)

4293.jpg


Back to top
View user's profile Send private message
bimit
Специалист
Специалист



Joined: 11 Jul 2011
Posts: 56

PostPosted: Wed Jul 20, 2011 12:50 pm    Post subject: Reply with quote

flex wrote:
Посидел в отладчике, нашел табличку pernr_tab, вот это то, что нужно, но, к сожалению в программе её не увидеть Sad


вот так попробуй

Code:
SELECT DISTINCT pa0001~pernr
         INTO TABLE lt_pernrs
         FROM   pa0001 INNER JOIN m_premw
           ON   pa0001~pernr       = m_premw~pernr.



Как я понял табельные вот из этой таблицы берутся m_premw. pernr_tab заполняется именно так
Back to top
View user's profile Send private message
XXX_:)
Аналитик
Аналитик


Age: 40
Joined: 01 Feb 2008
Posts: 387
Location: Воронеж

PostPosted: Wed Jul 20, 2011 3:55 pm    Post subject: Reply with quote

Smile прикольно все это читать Smile. Через 1 или 2 ИТ не получиться, ведь на экране куча фильтров, как вы собираетесь их учитывать при таком подходе?

Если pernr_tab вам подходит сделайте на нее ссылку. assign - почитайте в хелпе и на форумах. ассайница нужно к (sapdbpnp)pernr_tab.
Удачи

_________________
Hормальные люди делают вещи намного более безумные чем всё, что делают сумасшедшие (c) С.Лем
Back to top
View user's profile Send private message Blog
flex
Специалист
Специалист



Joined: 02 Feb 2011
Posts: 50

PostPosted: Wed Jul 20, 2011 4:28 pm    Post subject: Reply with quote

XXX_:) wrote:
Smile прикольно все это читать Smile. Через 1 или 2 ИТ не получиться, ведь на экране куча фильтров, как вы собираетесь их учитывать при таком подходе?

Если pernr_tab вам подходит сделайте на нее ссылку. assign - почитайте в хелпе и на форумах. ассайница нужно к (sapdbpnp)pernr_tab.
Удачи


Спасибо! буду пробовать!
Back to top
View user's profile Send private message
Удав
Гуру
Гуру


Age: 48
Joined: 25 Jan 2008
Posts: 580
Location: Москва

PostPosted: Wed Jul 20, 2011 6:15 pm    Post subject: Reply with quote

flex wrote:
Посидел в отладчике, нашел табличку pernr_tab, вот это то, что нужно, но, к сожалению в программе её не увидеть Sad

Как это не увидеть? Wink
Code:
  TYPES: BEGIN OF t_index,
          pernr LIKE pernr-pernr,
        END OF t_index,
        tt_index TYPE STANDARD TABLE OF t_index.

  DATA: num_of_rec TYPE i.
  FIELD-SYMBOLS: <fs_tab> TYPE tt_index.
...
GET pernr.
  IF num_of_rec IS INITIAL.
    ASSIGN ('(SAPDBPNP)index[]') TO <fs_tab>.
    IF sy-subrc = 0.
      num_of_rec = LINES(<fs_tab>).
    ENDIF.
  ENDIF.

_________________
С уважением,
Удав.
Back to top
View user's profile Send private message
Удав
Гуру
Гуру


Age: 48
Joined: 25 Jan 2008
Posts: 580
Location: Москва

PostPosted: Wed Jul 20, 2011 6:18 pm    Post subject: Reply with quote

XXX wrote:
Если pernr_tab вам подходит

Не подходит.
Code:
*   Array-Fetch fest fќr jeweils Array_Fetch_Number Personalnr.
    DESCRIBE TABLE index LINES sy-tfill.
    CHECK sy-tfill > 0.
    n_times = sy-tfill div array_fetch_number + 1.
    low_value = 1.
    high_value = low_value + array_fetch_number.
    DO n_times TIMES.
      REFRESH pernr_tab.
      APPEND LINES OF index FROM low_value TO high_value
             TO pernr_tab.
      DESCRIBE TABLE pernr_tab LINES sy-tfill.
      CHECK sy-tfill > 0.

_________________
С уважением,
Удав.
Back to top
View user's profile Send private message
flex
Специалист
Специалист



Joined: 02 Feb 2011
Posts: 50

PostPosted: Thu Jul 21, 2011 10:48 am    Post subject: Reply with quote

Удав wrote:
flex wrote:
Посидел в отладчике, нашел табличку pernr_tab, вот это то, что нужно, но, к сожалению в программе её не увидеть Sad

Как это не увидеть? Wink
Code:
  TYPES: BEGIN OF t_index,
          pernr LIKE pernr-pernr,
        END OF t_index,
        tt_index TYPE STANDARD TABLE OF t_index.

  DATA: num_of_rec TYPE i.
  FIELD-SYMBOLS: <fs_tab> TYPE tt_index.
...
GET pernr.
  IF num_of_rec IS INITIAL.
    ASSIGN ('(SAPDBPNP)index[]') TO <fs_tab>.
    IF sy-subrc = 0.
      num_of_rec = LINES(<fs_tab>).
    ENDIF.
  ENDIF.


Спасибо большое! Только начинаю осваивать эти операции в абапе, новичок так сказать)

Табличка index - это первое на что внимание обратил, но потом почему-то переключился на pernr_tab -_-

p.s.

Кстати конструкция LINES(<fs_tab>) не работает, ругается на lines, разбираюсь как все таки вытащить)

Quote:
Не подходит.


По коду, приведенному вами, видно что чистится в какой-то момент, но после события GET pernr там есть значения, так что получается что подходит (?)

Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Russian ABAP Developer's Club Forum Index -> ABAP All times are GMT + 4 Hours
Goto page 1, 2  Next
Page 1 of 2

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You can download files in this forum


All product names are trademarks of their respective companies. SAPNET.RU websites are in no way affiliated with SAP AG.
SAP, SAP R/3, R/3 software, mySAP, ABAP, BAPI, xApps, SAP NetWeaver and any other are registered trademarks of SAP AG.
Every effort is made to ensure content integrity. Use information on this site at your own risk.