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

Часовой пояс: 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 часа


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

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