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

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


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

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


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

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