Текущее время: Пн, июл 28 2025, 13:28

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 8 ] 
Автор Сообщение
 Заголовок сообщения: SAP RFC SDK and C++
СообщениеДобавлено: Вт, апр 01 2008, 16:29 
Начинающий
Начинающий

Зарегистрирован:
Ср, ноя 28 2007, 09:42
Сообщения: 22
В первую очередь хотелось бы узнать кто писал и каких успех добился. Хочу вызвать ФМ средствами C++. ФМ получает информацию из спула и передает в экспортируемую таблицу. на PHP модуль отрабатывает, а средствами C++ удается только запустить ФМ, но не получить выходные данные)))если кто поможет, буду только рад. Хотелось бы увидеть любые исходники и даже кусочки строк.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SAP RFC SDK and C++
СообщениеДобавлено: Вт, апр 01 2008, 16:46 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Вт, авг 31 2004, 14:57
Сообщения: 5258
Откуда: Ростов невеликий
Пол: Мужской
A_Smith написал(а):
В первую очередь хотелось бы узнать кто писал и каких успех добился. Хочу вызвать ФМ средствами C++. ФМ получает информацию из спула и передает в экспортируемую таблицу. на PHP модуль отрабатывает, а средствами C++ удается только запустить ФМ, но не получить выходные данные)))если кто поможет, буду только рад. Хотелось бы увидеть любые исходники и даже кусочки строк.

да ты афигел - там же все исходники есть!
загляни в text


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SAP RFC SDK and C++
СообщениеДобавлено: Вт, апр 01 2008, 16:55 
Председатель
Председатель
Аватара пользователя

Зарегистрирован:
Пн, сен 06 2004, 11:43
Сообщения: 1551
Пол: Мужской
A_Smith написал(а):
В первую очередь хотелось бы узнать кто писал и каких успех добился.
1. Писали многие
2. Skif прав - там есть исходники
3. У тебя есть генератор как клиента, так и сервера
4. Что толку с наших исходников - тут лучше тебе выкладывать что навая - чтоб люди могли глянуть и подсказать где косяк...........
5. На сколько я помню - у PHP библиотеки тот же librfc32 как "дравер"...........

_________________
Ex ipso fonte bibere
Цитата:
Abyssus abyssum invocat
Dies diem docet
Ducunt volentem fata, nolentem trahunt

Estote prudentes sicut serpentes


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, апр 02 2008, 07:47 
Начинающий
Начинающий

Зарегистрирован:
Ср, ноя 28 2007, 09:42
Сообщения: 22
Спасибо что хоть кто-то откликнулся...Вот смотрите есть код...
Code:
#include "stdafx.h"
#include "conio.h"
#include "saprfc.h"
#include "sapitab.h"
#include "string.h"
 
void main()
{
   static RFC_OPTIONS        rfc_opt;
   static RFC_CONNOPT_R3ONLY rfc_connopt_r3only;
   static RFC_PARAMETER      exporting[2];
   static RFC_PARAMETER      importing[1];
   static RFC_TABLE          tables[1];
   RFC_HANDLE                handle;
   RFC_RC                    rc;
   char *                    exception_ptr;
   ITAB_H                    ltab;
   char                      lst[100];
   char *                    lpt;
   int                       line, lnr, len;
   
   rfc_connopt_r3only.hostname = "ServerName";
   rfc_connopt_r3only.sysnr = 1;
 
   rfc_opt.client   = "Client";
   rfc_opt.user     = "user";
   rfc_opt.language = "E";
   rfc_opt.password = "password";
   rfc_opt.trace    = 1;
   rfc_opt.mode     = RFC_MODE_R3ONLY;
   rfc_opt.connopt = &rfc_connopt_r3only;
   
   ltab    = ItCreate( "buff", 100, 0, 0 );
 
   importing[0].name = NULL;

   exporting[0].name = "ZZ_INPUT_DOC_2_STEP2";
   exporting[0].nlen = 20;
   exporting[0].type = TYPC;
   exporting[0].addr = ltab;

   exporting[1].name = "6";
   exporting[1].nlen = 1;
   exporting[1].type = TYPC;
   exporting[1].addr = ltab;

   tables[0].name = "I_BUFF";
   tables[0].nlen = 5;
   tables[0].type = TYPC;
   tables[0].ithandle = ltab;
   tables[0].leng = 100;
   
   exporting[0].name = NULL;

   handle = RfcOpen( &rfc_opt );
   if( handle == RFC_HANDLE_NULL )
   {
     printf("\nConnect error!");   
   }
   else {printf("\nСonnect is OK!");}

   rc = RfcCallReceive( handle,                         
                        "Z_ASM_MON_PERCH",
                  exporting,
                        importing,
                        tables,
                        &exception_ptr );
   RfcClose( handle );

   switch(rc)
   {
      case RFC_OK:                  printf("\nO.K.");break;
      case RFC_FAILURE:             printf("\nError occurred");break;
      case RFC_EXCEPTION:           printf("\nException raised");break;
      case RFC_SYS_EXCEPTION:       printf("\nSystem exception raised, connection closed");break;
      case RFC_CALL:                printf("\nCall received");break;
      case RFC_INTERNAL_COM:        printf("\nInternal communication, repeat (internal use only");break;
      case RFC_CLOSED:              printf("\nConnection closed by the other side");break;
      case RFC_RETRY:               printf("\nNo data yet (RfcListen or RfcWaitForRequest only)");break;
      case RFC_NO_TID:              printf("\nNo Transaction ID available");break;
        case RFC_EXECUTED:            printf("\nFunction already executed");break;
      case RFC_SYNCHRONIZE:         printf("\nSynchronous Call in Progress (only for Windows)");break;
      case RFC_MEMORY_INSUFFICIENT: printf("\nMemory insufficient");break;
      case RFC_VERSION_MISMATCH:    printf("\nVersion mismatch");break;
      case RFC_NOT_FOUND:           printf("\nFunction not found (internal use only)");break;
      case RFC_CALL_NOT_SUPPORTED:  printf("\nThis call is not supported");break;
      case RFC_NOT_OWNER:           printf("\nCaller does not own the specified handle");break;
        case RFC_NOT_INITIALIZED:     printf("\nRFC not yet initialized");break;
        case RFC_SYSTEM_CALLED:       printf("\nA system call such as RFC_PING for connection test is executed");break;
      case RFC_INVALID_HANDLE:      printf("\nAn invalid handle was passed to an API call");break;
      case RFC_INVALID_PARAMETER:   printf("\nAn invalid parameter was passed to an API call or parameter length mismatch (expected and received) has been detected.");break;
      case RFC_CANCELED:            printf("\nAn rfc call has been canceled by user");break;
      case RFC_CONVERSION:          printf("\nAn error during conversion has been detected");break;
      case RFC_INVALID_PROTOCOL:    printf("\nThe received data has an unsupported format. e.g.: non unicode application receives data sended in unicode format");break;      
   } 
 
   lnr = ItFill( ltab );
   if (lnr==0) printf("\nThere are no lines");
   for ( line=1; line <= lnr; line++)
   {
     lpt = (char *) ItGetLine( ltab, line );
     len = strlen(lpt);
     memcpy( lst, (char *) ItGetLine( ltab, line ), len);
     lst[len] = '\0';
     printf( "%s\n", lst );
   } 
   _getch();
}

Вызываемый ФМ Z_ASM_MON_PERCH(Import JOB_NAME, JOB_STEP; Export I_BUFF): вход два строковых параметра, на выходе внутренняя таблица...

RfcCallReceive отрабатывает и возвращает RFC_OK, но вот дальше lnr = ItFill( ltab ) возвращает 0. Если кто подскажет как происходит передача экспортируемой таблицы буду только рад или хотя бы где мои кривые руки допустили ошибку...не пройдите мимо, помогите


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, апр 02 2008, 08:45 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Ср, ноя 23 2005, 13:37
Сообщения: 1805
Откуда: ECC 6.0
Пол: Мужской
Должны быть так: tables[0].nlen = 6;


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, апр 02 2008, 09:06 
Начинающий
Начинающий

Зарегистрирован:
Ср, ноя 28 2007, 09:42
Сообщения: 22
sibrin написал:
Должны быть так: tables[0].nlen = 6;


Это мелочи...я забыл поправить когда сюда выкладывал...может есть что то более существенное?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, апр 02 2008, 09:11 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Ср, ноя 23 2005, 13:37
Сообщения: 1805
Откуда: ECC 6.0
Пол: Мужской
Ничего себе мелочи :) Может и длина строки таблицы не 100 байт?


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

Зарегистрирован:
Пн, сен 06 2004, 11:43
Сообщения: 1551
Пол: Мужской
A_Smith написал(а):
exporting[1].name = "6";
А это как понимать ?

_________________
Ex ipso fonte bibere
Цитата:
Abyssus abyssum invocat
Dies diem docet
Ducunt volentem fata, nolentem trahunt

Estote prudentes sicut serpentes


Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 8 ] 

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


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

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


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

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