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

Проблемы кодировки при выгрузке в Excel через вызов BAPI



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



Joined: 28 Jul 2009
Posts: 5

PostPosted: Tue Jul 28, 2009 12:14 pm    Post subject: Проблемы кодировки при выгрузке в Excel через вызов BAPI Reply with quote

Не подскажете в чем может быть причина:
При выгрузке в Excel через вызов BAPI кирилические данные выгружаются в виде ########.
Это происходит на различных версиях MS Office и Windows, кроме одной машины... на ней все ок.

Пример конфигурации:
Windows 2000 SP4
Excel 2003 (11.5612.5606)
SAPGUI 710
SAP ERP Central Component 5.0

Методика выгрузки
Создан ФМ в SE37 по выгрузке
function z_bapi_get_bu_details.
*"----------------------------------------------------------------------
*"*"Локальный интерфейс:
*" IMPORTING
*" VALUE(P_BUKRS) LIKE T001Z-BUKRS
*" VALUE(P_PARAM) TYPE ZSTR_KND
*" EXPORTING
*" VALUE(P_FIO_CACF) LIKE T001Z-PAVAL

*ФИО ГБПолн
select single paval into p_fio_cacf from t001z
where bukrs = p_bukrs
and party = 'SAPR16'.

if sy-subrc <> 0.
return-type = 'E'.
else.
return-type = 'S'.
endif.

endfunction.

Создан объект:
SWO1\Z_SPPFD с методом GetBuDetails (ссылка на z_bapi_get_bu_details)

Вызов из Excel
Dim loSAPObject As Object
Dim loReturn As Object
Dim bResult As Boolean
Dim lvTmp As Variant
Dim oParam As Object
Dim oPCompanycodeDetail As Object
Dim oPCompanycodeAddress As Object
Dim sDate As String

' Запрос
Set loSAPObject = poBAPICtrl.getSapobject("Z_SPPFD")
Set oParam = poBAPICtrl.dimas(loSAPObject, "GetActualVersion", "PParam")
sTmpString = ActiveWorkbook.Sheets("Settings").Range("Settings_Date").Value
sDate = Mid(sTmpString, 7, 4) & Mid(sTmpString, 4, 2) & Mid(sTmpString, 1, 2)
oParam.Value("NOW") = sDate
Set oPCompanycodeDetail = poBAPICtrl.dimas(loSAPObject, "GetBUDetails", "PCompanycodeDetail")
Set oPCompanycodeAddress = poBAPICtrl.dimas(loSAPObject, "GetBUDetails", "PCompanycodeAddress")
Set loReturn = poBAPICtrl.dimas(loSAPObject, "GetBUDetails", "Return")
loSAPObject.GetBUDetails PBukrs:=psBU, PParam:=oParam, Return:=loReturn, PFioCacf:=sBU.FioCacf
....
sBU.Name.ADDR_NO = oPCompanycodeDetail.Value("ADDR_NO")

и т.д.
Back to top
View user's profile Send private message
Удав
Гуру
Гуру


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

PostPosted: Tue Jul 28, 2009 12:23 pm    Post subject: Reply with quote

Посмотрите настройки SAP GUI для системы - на вкладке "Другие" пункт "Кодировка для загрузки и выгрузки"
_________________
С уважением,
Удав.
Back to top
View user's profile Send private message
siva1
Участник
Участник



Joined: 28 Jul 2009
Posts: 5

PostPosted: Tue Jul 28, 2009 1:12 pm    Post subject: Reply with quote

Можно уточнить возможные комбинации?
(т.к. уже пробовал менять методом перебора
Default ANSI for Unicode, Cyrillic Windows) с различными галками...
Back to top
View user's profile Send private message
vga
Мастер
Мастер


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

PostPosted: Tue Jul 28, 2009 1:41 pm    Post subject: Reply with quote

Вы коннект к SAP через VBA делаете?
Если да, установите свойство
Connection.CodePage = "1504"
Back to top
View user's profile Send private message Blog Visit poster's website
siva1
Участник
Участник



Joined: 28 Jul 2009
Posts: 5

PostPosted: Tue Jul 28, 2009 3:45 pm    Post subject: Reply with quote

Спасибо за участие...

Можно поподробнее про строчку Connection.Codepage?

Коннект делаю через
strucSAP.host = .Sheets("SAP").Range("SAPХост").Value
strucSAP.sysname = .Sheets("SAP").Range("SAPСистема").Value
strucSAP.mandant = .Sheets("SAP").Range("SAPМандант").Value
strucSAP.sysnum = .Sheets("SAP").Range("SAPНомерСистемы").Value
strucSAP.router = ""
strucSAP.language = "RU"
strucSAP.user = .Sheets("SAP").Range("SAPПользователь").Value
strucSAP.password = .Sheets("SAP").Range("SAPПароль").Value
' Создание BAPI-объекта
Set oBAPICtrl = BAPIConnect(strucSAP)
If oBAPICtrl Is Nothing Then
strucSAP.router = .Sheets("SAP").Range("SAPРоутер").Value
Set oBAPICtrl = BAPIConnect(strucSAP)
End If

Необходимо определить элемент CodePage в структуре strucSAP?
и затем
strucSAP.CodePage="1504"

если так - то не помогло....
Back to top
View user's profile Send private message
vga
Мастер
Мастер


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

PostPosted: Tue Jul 28, 2009 4:31 pm    Post subject: Reply with quote

siva1 wrote:

Можно поподробнее про строчку Connection.Codepage?

Необходимо определить элемент CodePage в структуре strucSAP?
и затем
strucSAP.CodePage="1504"

если так - то не помогло....

Да, я имел ввиду присвоить значение до установления коннекта
strucSAP.CodePage="1504"
siva1 wrote:
Необходимо определить элемент CodePage в структуре strucSAP?
Не понял, зачем его определять? Он уже там присутствует Smile Возможно Вы свою структуру создаете. Зачем, воспользуйтесь существующей.
Back to top
View user's profile Send private message Blog Visit poster's website
siva1
Участник
Участник



Joined: 28 Jul 2009
Posts: 5

PostPosted: Tue Jul 28, 2009 4:41 pm    Post subject: Reply with quote

Объявлял возможно не совсем верно, но работает)))

' Тип для передачи параметров соединения с SAP-системой
Type TConnection
host As String
sysname As String
sysnum As Integer
mandant As Integer
router As String
language As String
user As String
password As String
End Type

Dim strucSAP As TConnection

и далее использовал...
strucSAP.user = .Sheets("SAP").Range("SAPПользователь").Value
strucSAP.password = .Sheets("SAP").Range("SAPПароль").Value
' Создание BAPI-объекта
Set oBAPICtrl = BAPIConnect(strucSAP)

если не определить CodePage в структуре - прокол....

а какая существует?
Back to top
View user's profile Send private message
vga
Мастер
Мастер


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

PostPosted: Tue Jul 28, 2009 4:45 pm    Post subject: Reply with quote

Ну я с примером
http://www.sapnet.ru/viewtopic.php?t=3267
как-то экспериментировал.
Back to top
View user's profile Send private message Blog Visit poster's website
siva1
Участник
Участник



Joined: 28 Jul 2009
Posts: 5

PostPosted: Tue Jul 28, 2009 5:02 pm    Post subject: Reply with quote

Спасибо, буду использовать...
но с кодировкой то не помогло.
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.