Текущее время: Пн, июн 23 2025, 18:04

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 26 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Подключение к БД САПа
СообщениеДобавлено: Вс, ноя 12 2006, 16:32 
Начинающий
Начинающий
Аватара пользователя

Зарегистрирован:
Ср, май 24 2006, 21:41
Сообщения: 4
Добрый день....
У меня возникла проблема, при внедрении САПа появилась необходимость переписать производственные программы, чтобы они брали данные из БД САПа...
Программы пишу на делфи...
Подскажите пожалуйста как подключиться к той самой БД, без необходимости дописывания кода на abap`e...
данные будут браться только на чтение, таблицы и поля где лежат нужные данные известны...
Мне интересно какие варианты решения данной задачи существуют их плюсы и минусы...


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, ноя 13 2006, 09:31 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Пн, окт 11 2004, 20:32
Сообщения: 2470
Пол: Мужской
По правильному - нужно написать ФМ, который вы будете по RFC вызывать из Дельфи, и который вам будет предоставлять информацию.
Брать же данные напрямую из базы - некрасиво и неправильно, да и не пустят вас наверное туда

_________________
- Может ли настоящий мастер кунг-фу получить по морде?
- Настоящий мастер может все!


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, ноя 13 2006, 09:39 
Ассистент
Ассистент

Зарегистрирован:
Ср, июн 29 2005, 16:47
Сообщения: 40
Можно подключится к сап через компоненты делфи: TSAPFunctions и TSapLOGONcontrol. Примерно так:
Code:
unit SAP1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, SAPFunctionsOCX_TLB, OleCtrls, SAPLogonCtrl_TLB, StdCtrls, Grids;

type
  TForm1 = class(TForm)
    Button1: TButton;
    SAPLogonControl1: TSAPLogonControl;
    SAPFunctions1: TSAPFunctions;
    Button2: TButton;
    Edit1: TEdit;
    Label1: TLabel;
    StringGrid1: TStringGrid;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  Table,Funct, Connection, Table1: VARIANT;
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin

Connection:= FOrm1.SAPLogonControl1.NewConnection;
Connection.LogOn(0,false);
IF Connection.LogOn(0,true) = true THen
   Begin
   ShowMessage('Logon O.K.');
   Button2.Enabled:= true;
   End
Else
   Begin
   ShowMessage('Error on logon :-(((');
   SAPLogonControl1.Enabled:=true;
   End;
End;

procedure TForm1.Button2Click(Sender: TObject);
var txt,vrem : string ;
    r,r2,pole,pos : integer ;
begin
   IF Connection.LogOn(0,true) = true Then
     Begin
      Form1.SAPFunctions1.Connection:= Connection;
      Funct := SAPFunctions1.add('TABLE_ENTRIES_GET_VIA_RFC');
      Funct.exports('TABNAME').value := trim(AnsiUpperCase(form1.Edit1.Text));
         If not Funct.call then
            showMessage(Funct.exception)
         else begin
                 Table := Funct.tables.item('NAMETAB');
                 form1.StringGrid1.ColCount:=Table.rowCount+1;
                   For r:=1 TO StringGrid1.ColCount-1 Do
                     Begin
                      txt := Table.value(r,2);
                      StringGrid1.Cells[r-1,0]:= txt;
                     End;

                 Table1 := Funct.tables.item('TABENTRY');
                 form1.StringGrid1.rowCount:=Table1.rowCount+1;
                 Pos:=1;
                   For r:=1 TO StringGrid1.RowCount-1 Do
                     For r2:=1 TO StringGrid1.ColCount-1 DO
                       Begin
                       txt := Table1.value(r,1);
                       pole:= strToInt(Table.value(r2,10));
                       pos := strToInt(Table.value(r2,5));
                       StringGrid1.Cells[r2-1,r]:= copy(txt,pos,pole);
                       End;
               End;

     End
   Else
   showMessage('Соединение не установлено');
end;


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, ноя 13 2006, 16:20 
Начинающий
Начинающий

Зарегистрирован:
Вт, июл 25 2006, 19:33
Сообщения: 21
New_D написал(а):
Можно подключится к сап через компоненты делфи: TSAPFunctions и TSapLOGONcontrol. Примерно так:
А явки а пароли? В код пихать? :-)

_________________
So I exist in this fragile equilibrium which glues the substance of the universe to me...


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, ноя 13 2006, 16:41 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Пн, окт 11 2004, 20:32
Сообщения: 2470
Пол: Мужской
DLSman написал(а):
А явки а пароли? В код пихать? :-)

Какое нить стандартное решение - либо в ресурсах, либо в реестре, либо в ini-файле. Естессно в зашифрованном виде. Либо заставлять юзера каждый раз вбивать логин

_________________
- Может ли настоящий мастер кунг-фу получить по морде?
- Настоящий мастер может все!


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, ноя 13 2006, 17:17 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Чт, апр 07 2005, 05:27
Сообщения: 621
Откуда: Москва
Пол: Мужской
А это... глупый вопрос... просто завести юзверя в Oracle и напрямую коннектиться и брать данные из БД - никак? Я так понимаю, человек что-то пробует написать "на коленке" и ему 3-х уровневую архитектуру не надо соблюдать.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, ноя 13 2006, 17:57 
Начинающий
Начинающий

Зарегистрирован:
Вт, июл 25 2006, 19:33
Сообщения: 21
ArmAnn написал:
Какое нить стандартное решение - либо в ресурсах, либо в реестре, либо в ini-файле. Естессно в зашифрованном виде.
А теперь представим, что у нас под сотню таких юзеров...

lumer написал:
А это... глупый вопрос... просто завести юзверя в Oracle и напрямую коннектиться и брать данные из БД - никак?
Физицки - без проблем, организационно - м-да... Оборвут чего-нибудь. :-)

_________________
So I exist in this fragile equilibrium which glues the substance of the universe to me...


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, ноя 13 2006, 18:04 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Пн, окт 11 2004, 20:32
Сообщения: 2470
Пол: Мужской
DLSman написал(а):
ArmAnn написал:
Какое нить стандартное решение - либо в ресурсах, либо в реестре, либо в ini-файле. Естессно в зашифрованном виде.
А теперь представим, что у нас под сотню таких юзеров...

Ходят же эти юзеры через саплогон? Точно так же будут ходить и через дельфовую программу, в которой сделать настроечное окошко с данными аккаунта в САП. Либо делается один технический юзер для работы с этой программой, имя/пароль в шифрованном виде лежит в ресурсах либо в ini-файле, и пусть все работают кому нужно

DLSman написал(а):
lumer написал:
А это... глупый вопрос... просто завести юзверя в Oracle и напрямую коннектиться и брать данные из БД - никак?
Физицки - без проблем, организационно - м-да... Оборвут чего-нибудь. :-)

Вот и я про тоже :)
Есть стандартный RFC - по нему и общайтесь

_________________
- Может ли настоящий мастер кунг-фу получить по морде?
- Настоящий мастер может все!


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, ноя 13 2006, 18:28 
Начинающий
Начинающий

Зарегистрирован:
Вт, июл 25 2006, 19:33
Сообщения: 21
ArmAnn написал:
Ходят же эти юзеры через саплогон? Точно так же будут ходить и через дельфовую программу, в которой сделать настроечное окошко с данными аккаунта в САП.
Логиницца еще раз? Не хотел бы быть тем, кому придется объяснять это юзерам. :twisted:

ArmAnn написал:
Либо делается один технический юзер для работы с этой программой, имя/пароль в шифрованном виде лежит в ресурсах либо в ini-файле, и пусть все работают кому нужно
Разнесем сотню юзеров по разным, не связанным между собой, сетям... :-)

ArmAnn написал:
Есть стандартный RFC - по нему и общайтесь
+1. Только вот зачастую лучше через "посредника" общаться. Для порядку.

_________________
So I exist in this fragile equilibrium which glues the substance of the universe to me...


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

Зарегистрирован:
Ср, май 24 2006, 21:41
Сообщения: 4
New_D написал(а):
Можно подключится к сап через компоненты делфи: TSAPFunctions и TSapLOGONcontrol. Примерно так:

А где интересно эти компоненты взять?? :roll:

DLSman написал(а):
New_D написал(а):
Можно подключится к сап через компоненты делфи: TSAPFunctions и TSapLOGONcontrol. Примерно так:
А явки а пароли? В код пихать? :-)

у программы свои пароли и своя система авторизации...
В принципе если смешать все пароли в кучу и зашифровать все в одно друг с другом, то может что-то и получится...

lumer написал:
А это... глупый вопрос... просто завести юзверя в Oracle и напрямую коннектиться и брать данные из БД - никак? Я так понимаю, человек что-то пробует написать "на коленке" и ему 3-х уровневую архитектуру не надо соблюдать.

В принципе почти верно... Начальство требует напрямую как-нить без использования абапа, а админы сопротивляются доступ к базе давать, вот и думаю чего делать... :(

еще я нашел статейку про SAP GUI, но так и не понял как через это можно все реализовать... ссылка на работе, а пишу из дома, так что не подскажу пока... Может кто про это чудо что знает??


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, ноя 14 2006, 08:28 
Ассистент
Ассистент

Зарегистрирован:
Ср, июн 29 2005, 16:47
Сообщения: 40
Залогиниться можно по "тихому" Connection.LogOn(0,false), а в свойствах объекта TSAPLogonControl прописываешь пользователя, систему, пароль, клиента и все


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

Зарегистрирован:
Пн, окт 11 2004, 20:32
Сообщения: 2470
Пол: Мужской
DLSman написал(а):
ArmAnn написал:
Ходят же эти юзеры через саплогон? Точно так же будут ходить и через дельфовую программу, в которой сделать настроечное окошко с данными аккаунта в САП.
Логиницца еще раз? Не хотел бы быть тем, кому придется объяснять это юзерам. :twisted:

ArmAnn написал:
Либо делается один технический юзер для работы с этой программой, имя/пароль в шифрованном виде лежит в ресурсах либо в ini-файле, и пусть все работают кому нужно
Разнесем сотню юзеров по разным, не связанным между собой, сетям... :-)


блин, зануда :)
Вопрос вообще то в уровне взаимодействия сторонней программы с системой, а юзеры и их аккаунты - это уже другие нюансы

_________________
- Может ли настоящий мастер кунг-фу получить по морде?
- Настоящий мастер может все!


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, ноя 14 2006, 09:29 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Пн, окт 11 2004, 20:32
Сообщения: 2470
Пол: Мужской
SIW написал(а):
еще я нашел статейку про SAP GUI, но так и не понял как через это можно все реализовать... ссылка на работе, а пишу из дома, так что не подскажу пока... Может кто про это чудо что знает??

SAP GUI - это 'толстый' клиент для работы с сапом.
В стандартной поставке сап гуя есть RFC SDK - \Program Files\SAP\FrontEnd\SAPgui\rfcsdk\
Там есть примеры и заголовки, правда на C
Если компоненты не найдешь - напиши модуль для общения с сапом на си билдере, и слинкуй с дельфийской программой. Только учти, lib'ы там для MSVC, нужно преобразовать их в формат борланда

И попробуй убедить начальство что напрямую коннект к базе - это нехорошо и вообще дыра в безопастности, не зря базисники у вас сопротивляются. На Абапе же кода потребуется минимум, зато сделано все будет красиво и стандартными вещами

Если у программы своя система авторизации - то можно ограничиться созданием в САПе одного(или нескольких, по необходимости) технического пользователя с минимумом полномочий

_________________
- Может ли настоящий мастер кунг-фу получить по морде?
- Настоящий мастер может все!


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

Зарегистрирован:
Ср, май 24 2006, 21:41
Сообщения: 4
New_D написал(а):
Залогиниться можно по "тихому" Connection.LogOn(0,false), а в свойствах объекта TSAPLogonControl прописываешь пользователя, систему, пароль, клиента и все

Вот этот вариант мне вроде как подходит и было бы интересно его попробовать... Вопрос где взять эти компонеты для делфей??? :(


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, окт 30 2008, 07:53 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Чт, мар 09 2006, 10:12
Сообщения: 565
Откуда: Волгодонск
Пол: Мужской
SIW написал(а):
где взять эти компонеты для делфей??? :(


На будуще:
Эти компоненты имопртируются из соответствующих OCX в Delph делаем Component/Import Component /Import ActiveX Control
выбираем "SAP Logon Control" или "SAP Logon Unicode Control"
и "SAP Remote Function Call Control" или "SAP Remote Function Call Unicode Control"

Создадуться соотв. *_TLB.PAS файлы в них компоненты и лежат

и ещё настройка Connection в приведённом примере опущена:
Code:
  Connection:= SAPLogonControl1.NewConnection;
  Connection.user              := '';     
  Connection.Password          := '';
  Connection.client            := ''; // Мандант
  Connection.Language          := 'EN';

  Connection.SystemNumber      := ; //  числом
  Connection.Destination       := ''; // ИдСистемы
  Connection.ApplicationServer := '';
  Connection.SAPRouter         := '';


Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 26 ]  На страницу 1, 2  След.

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


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

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


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

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