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

Расширение средства поиска в кассовой книге (тр. fbcj)



 
Post new topic   Reply to topic    Russian ABAP Developer's Club Forum Index -> ABAP
View previous topic :: View next topic  
Author Message
Qwest
Участник
Участник


Age: 36
Joined: 16 Feb 2011
Posts: 7

PostPosted: Thu Feb 17, 2011 12:08 am    Post subject: Расширение средства поиска в кассовой книге (тр. fbcj) Reply with quote

Всем добрый вечер! Очень нужна помощь или хотя бы какой нибудь совет. В кассовой книге, которая отображается на экране вызываемым тр. fbcj, есть таблица с расходами и приходами, одно из полей называется Бизнес-операция (например, EO01: ВОЗВРАТ ДС НА Р/СЧ), так же в этой таблице есть другое дополнительное поле, которое служит для значений оснований на данную операцию (например, в связи с какими то причинами, ну т.е. что типа комментария), но к этому полю цепляется средство поиска, откуда и подтягиваются значения. Ситуация следующая: средство поиска подключено к полю, все работает, открывается, заполняется, но пользователям требуется чтобы происходила автоматическая фильтрация значений при открытии средства поиска в зависимости от значения в поле Бизнес операция.
Для решения данной проблемы я решил создать ФМ для средства поиска и там все обрабатывать, но вот не могу понять как мне подтянуть значение поля Grid'а с экрана в ФМ?
1. Могут ли помочь события типа hotspot_click и методы типа get_cell_value ALV Grida?
2. или может можно использовать какой нибудь UserExit, если да, то какой?
Рад буду любому предложению выхода из данной ситуации, пока копаю в сторону событий и методов для ALV Grid'а.
Заранее благодарен за любую помощь Smile
Back to top
View user's profile Send private message
vga
Мастер
Мастер


Age: 145
Joined: 04 Oct 2007
Posts: 1218
Location: Санкт-Петербург

PostPosted: Thu Feb 17, 2011 12:07 pm    Post subject: Reply with quote

Давайте порассуждаем. Smile
Как я понял, из вашего FM нужно получить ссылку на alv grid, затем узнать текущую выделенную строку, по ней обратиться к таблице с данными и получить значение из ячейки с типом Бизнес операцией.

1) Получить ссылку на объектный грид - FM GET_GLOBALS_FROM_SLVC_FULLSCR
2) метод GET_CURRENT_CELL или GET_SELECTED_ROWS
3) Посмотрите по стеку вызова из вашего FM, как к данным через ASSIGN добраться.

_________________
Молитва - это запрос разработчику на изменение кода программы.
Back to top
View user's profile Send private message Blog Visit poster's website
Dmitriy
Аналитик
Аналитик


Age: 46
Joined: 14 Nov 2008
Posts: 300
Location: Russia

PostPosted: Thu Feb 17, 2011 2:13 pm    Post subject: Reply with quote

Там на самом деле экранная таблица... Wink
В ФМ (SH-exit) посредством динамического ASSIGN вытягиваете нужное значение поля "Бизнес-операция", п.3 поста vga:
FIELD-SYMBOLS: <fs_tab> TYPE TABLE OF iscj_postings.
ASSIGN ('(SAPMFCJ0)ITCJ_EPOSTINGS[]') to <fs_tab>[].
Индекс строки получаете подобным же образом, см. код SAPMFCJ0. Ну или сразу же готовую строку, если возможно.

_________________
ABAP/4 You
Back to top
View user's profile Send private message
Qwest
Участник
Участник


Age: 36
Joined: 16 Feb 2011
Posts: 7

PostPosted: Thu Feb 17, 2011 7:25 pm    Post subject: Reply with quote

vga и Dmitriy, Спасибо большое, что ответили, очень помогли, хотя бы теперь знаю в каком направлении идти, вообщем попробовал реализовать вариант с ASSIGN, для начала просто получить данные из таблицы:
Code:

DATA: lt_postings LIKE ISCJ_E_POSTINGS OCCURS 0 WITH HEADER LINE.
FIELD-SYMBOLS: <fs_tab> TYPE ANY TABLE.
  ASSIGN ('(SAPMFCJ0)ISCJ_E_POSTINGS[]') to <fs_tab>[].
   if sy-subrc = 0.
     lt_postings[] = <fs_tab>[].
     UNASSIGN <fs_tab>.
   endif.

Но к сожалению, на сколько я понял, ASSIGN не отрабатывает, при трассировке параметр sy-subrc = 4. Сегодня пока не успел разобраться из -за чего это может быть, надо будет еще раз проверить код, возможно где то ошибся.
Back to top
View user's profile Send private message
Dmitriy
Аналитик
Аналитик


Age: 46
Joined: 14 Nov 2008
Posts: 300
Location: Russia

PostPosted: Thu Feb 17, 2011 8:00 pm    Post subject: Reply with quote

Qwest wrote:
Code:

DATA: lt_postings LIKE ISCJ_E_POSTINGS OCCURS 0 WITH HEADER LINE.
FIELD-SYMBOLS: <fs_tab> TYPE ANY TABLE.
  ASSIGN ('(SAPMFCJ0)ISCJ_E_POSTINGS[]') to <fs_tab>[].
   if sy-subrc = 0.
     lt_postings[] = <fs_tab>[].
     UNASSIGN <fs_tab>.
   endif.

Но к сожалению, на сколько я понял, ASSIGN не отрабатывает, при трассировке параметр sy-subrc = 4. Сегодня пока не успел разобраться из -за чего это может быть, надо будет еще раз проверить код, возможно где то ошибся.

ISCJ_E_POSTINGS в вашем коде - это структура СД, обратите более пристальное внимание на типизацию используемых таблиц и структур.
Code:
* Таблица
FIELD-SYMBOLS: <fs_tab> TYPE TABLE OF iscj_postings.
ASSIGN ('(SAPMFCJ0)ITCJ_E_POSTINGS[]') to <fs_tab>.

OR
Code:
* Рабочая область (структура)
FIELD-SYMBOLS: <line> TYPE iscj_e_postings.
ASSIGN ('(SAPMFCJ0)ISCJ_E_POSTINGS') to <line>.

По идее, должно работать...

_________________
ABAP/4 You
Back to top
View user's profile Send private message
Qwest
Участник
Участник


Age: 36
Joined: 16 Feb 2011
Posts: 7

PostPosted: Thu Feb 17, 2011 8:51 pm    Post subject: Reply with quote

Понятно, спасибо, попробую поразбираться более детально, просто когда я описал так:
Code:
FIELD-SYMBOLS: <fs_tab> TYPE TABLE OF iscj_postings.

он ругался на то, что после TABLE не хватает точки и я решил объвить так как написал выше. Просто я пока недавно работаю в сапе и поэтому пока еще не до конца усвоил логику работы данной системы, но в принципе щас понял, буду пробывать. Еще раз спасибо за помощь Smile
Back to top
View user's profile Send private message
Dmitriy
Аналитик
Аналитик


Age: 46
Joined: 14 Nov 2008
Posts: 300
Location: Russia

PostPosted: Thu Feb 17, 2011 9:42 pm    Post subject: Reply with quote

Всё верно, это я ошибся. Конечно же нужно было так объявить:
Code:
TYPES: tt_postings TYPE TABLE OF iscj_postings.
FIELD-SYMBOLS: <fs_tab> TYPE tt_postings.

т.е. сначала тип таблицы, а уже потом ссылку на него при декларации <fs_tab>, так что извиняйте: знал, но забыл. Smile

_________________
ABAP/4 You
Back to top
View user's profile Send private message
Qwest
Участник
Участник


Age: 36
Joined: 16 Feb 2011
Posts: 7

PostPosted: Thu Feb 17, 2011 10:09 pm    Post subject: Reply with quote

Ааа, теперь ясно, ладно буду завтра пробывать, надеюсь, что все получится, а то уже сроки поджимают Smile
Back to top
View user's profile Send private message
Dmitriy
Аналитик
Аналитик


Age: 46
Joined: 14 Nov 2008
Posts: 300
Location: Russia

PostPosted: Fri Feb 25, 2011 10:29 pm    Post subject: Reply with quote

Qwest wrote:
Ааа, теперь ясно, ладно буду завтра пробывать, надеюсь, что все получится, а то уже сроки поджимают Smile

И у вас, Qwest, похоже ничего не вышло, молчите если: сроки все вышли и вы уже не абапер, как в соседней ветке товарищ. Smile

_________________
ABAP/4 You
Back to top
View user's profile Send private message
Qwest
Участник
Участник


Age: 36
Joined: 16 Feb 2011
Posts: 7

PostPosted: Thu Mar 03, 2011 9:50 am    Post subject: Reply with quote

Very Happy Извиняюсь, что не отписался по результатам сразу, было очень много работы ) Dmitriy Спасибо большое за помощь, вы мне очень помогли, узнал много нового для себя, Assign сработало, значения подтянулись ) правда реализацию задуманного пришлось немного сделать по другому:
Code:

data: ztrname TYPE TCJ_TRANS_NAMES-transact_name.
data: dynpfields type table of DYNPREAD with header LINE.
data: stepl like SY-STEPL.

stepl = CALLCONTROL-CUROW - 14. "получаем индекс текущей строки
CLEAR dynpfields[].
dynpfields-fieldname  = 'ISCJ_E_POSTINGS-TRANSACT_NAME'.
dynpfields-stepl = stepl.
APPEND dynpfields.

    CALL FUNCTION 'DYNP_VALUES_READ' "берем значение поля экран 110
    EXPORTING
      dyname     = 'SAPMFCJ0'
      dynumb     = '0110'
    TABLES
      dynpfields = dynpfields
    EXCEPTIONS
      OTHERS = 1.
    ztrname = dynpfields-fieldvalue. " получаем нужное значение из поля Grid'а



Ну а дальше идет обработка полученного значения и формирования списка SH.
Back to top
View user's profile Send private message
Dmitriy
Аналитик
Аналитик


Age: 46
Joined: 14 Nov 2008
Posts: 300
Location: Russia

PostPosted: Thu Mar 03, 2011 12:05 pm    Post subject: Reply with quote

Спасибо, что отписали про результат, а особенно за иллюстрацию альтернативного решения. Рад, что вы остались в деле. Wink
_________________
ABAP/4 You
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
Page 1 of 1

 
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.