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

Выбор данных из BEx
https://sapboard.ru/forum/viewtopic.php?f=12&t=93866
Страница 1 из 1

Автор:  Rayman [ Пт, окт 21 2016, 10:03 ]
Заголовок сообщения:  Выбор данных из BEx

Здравствуйте.
Изучаю sap bw.
В данный момент я сделал запрос, вывел его на "Технический лист", на листе "Отчет" нарисовал шапку и под шапку хочу подставить данные с технического листа, а собственно из BEx запроса.
Вариант подстановки запроса под шапкой на листе отчетности не подходит.
Хочу отметить, что bex запрос, и та таблица которая выводится - динамическая. И копировать нужно таблицу выкидывая 2 первые строки, так как там не значения, а шапка.
Вопрос: как выделить динамическую таблицу BEx запроса и скопировать ее на лист отчета в нужное место? Делал с помощью vba статическую таблицу, там все более или менее просто, можно хоть формулами экселя все сделать.

Автор:  Air_demon [ Вт, окт 25 2016, 09:31 ]
Заголовок сообщения:  Re: Выбор данных из BEx

http://sapland.ru/articles/stats/2013/1/ispolizovanie-kollektsii-pri-obrabotke-vihodnih-dannih-bex-zaprosov.html

Автор:  Rayman [ Вт, окт 25 2016, 11:24 ]
Заголовок сообщения:  Re: Выбор данных из BEx

Спасибо за ответ, написал данный код, но сваливается в ошибку то прорабатывает макрос, то нет. Есть варианты, что я сделал не так?
Открываю книгу, нажимаю изменить значения (новый выбор) и сваливается.
С уважением.
Code:
Public Function BEx() As BExApplication
    Set BEx = Application.Run("BExAnalyzer.xla!GetBEx", ThisWorkbook)
End Function
Sub BExOnRefresh(ParamArray varname())

    If varname(0) = "DP_2" Then
   
        'откуда
        DPOffsetC = varname(1).Column
        DPOffsetR = varname(1).Row + 2
       
        DPOffsetLC = varname(1).Column + varname(1).Columns.Count - 1
        DPOffsetLR = varname(1).Row + varname(1).Rows.Count - 2
       
        'куда
        shiftR = 34
        shiftC = 2
       
        Dim mRng As Range
            Set mRng = Sheets("Технический лист").Range(Cells(DPOffsetR, DPOffsetC), Cells(DPOffsetLR, DPOffsetLC))
           
                If Application.CountA(mRng) = 0 Then
                    MsgBox "Empty!!!"
                    Exit Sub
                        Else
                            mRng.Copy
                            Sheets("Ведение данных").Cells(shiftR, shiftC).PasteSpecial xlPasteValues
                 End If
       
    End If
   
End Sub


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

Автор:  G [ Сб, дек 03 2016, 17:21 ]
Заголовок сообщения:  Re: Выбор данных из BEx

Если не будет получаться с готовыми решениями, напишите в эту тему, я накидаю кое-что своё, оно по другим принципам сделано, но возможно сгодится.

Избегайте обращений к листу по заголовкам:
Sheets("Технический лист").Range(Cells(DPOffsetR, DPOffsetC), Cells(DPOffsetLR, DPOffsetLC))

Лучше по имени:

Лист4.Range(Cells(DPOffsetR, DPOffsetC), Cells(DPOffsetLR, DPOffsetLC))

А то захочется переименовать лист -- и ищи в коде все вхождения. Или пользователь переименует.

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