RFC_CALL_TRANSACTION

Jeśli programujesz, administrujesz, integrujesz i masz wątpliwość lub obawę, to właśnie najlepsze miejsce dla Ciebie. Pisz śmiało...
ODPOWIEDZ
ozeh
Posty: 2
Rejestracja: pt lut 24, 2017 10:55 pm

RFC_CALL_TRANSACTION

Post autor: ozeh »

Cześć,

Wiem, że to pierwszy post i w ogóle od razu uderzam z pytaniem, na które pewnie znalazłbym odpowiedź w necie, ale wierzcie mi, że przeszukałem już sporo, a potrzebuję tylko kierunku, w którym mam podażać w celu rozwiązania problemu. Nie jestem ekspertem od SAP i w zasadzie poruszam się w nim niewiele i znam się też niewiele, stąd pytanie do Was.

Z powodzeniem od kilku lat używam sobie przestarzałego RFC_READ_TABLE do pozyskiwania danych z tabel SAPa, ale natknąłem się na sytuację, gdzie mam mały program, który ktoś napisał używając SAP GUI i SAP scripting. Program generalnie loguje się do SAP, otwiera jakąś niestandardową transakcję, gdzie jest okienko do wyboru kryteriów, wybiera wariant, generuje z tego raport na jakimś tam layoucie i później zapisuje to do XLS.

Czy można to zrobić omijając SAP GUI? Wiem, że w RFC są funkcje takie jak np. RFC_CALL_TRANSACTION oraz RFC_CALL_TRANSACTION_USING, gdzie można przekazać BDCTABLE i tym sposobem pewnie wybrać wariant i wypełnić wszystkie kryteria po czym odpalić transakcję, ale niestety ten FM nie zwraca żadnych danych, tak jak np. RFC_READ_TABLE i tu mam największy problem.

Pewnie można napisać w ABAP jakiś wrapper do RFC_CALL_TRANSACTION, który na końcu zwróci dane, ale po pierwsze mam ograniczony dostęp w SAP, a po drugie brakuje mi dokumentacji, żeby to w ogóle ogarnąć.

Ktoś może wskaże kierunek?

Pozdrawiam,
Marcin
netweaverboy
Posty: 6
Rejestracja: pt paź 01, 2010 10:12 pm

Re: RFC_CALL_TRANSACTION

Post autor: netweaverboy »

Cześć,

Nie wiem czy dobrze Ciebie zrozumiałem, ale ja takie wymagania realizuję tak:
1. modyfikacja raportu - dodaję niewidoczny parametr dzięki któremu steruję działaniem raportu, domyślnie ma działać jak przed modyfikacją,
zmiana polega na tym, że znajduję miejsce w kodzie tuż przed wywołaniem REUSE_ALV_GRID_DISPLAY, w parametrze - tabeli mam już gotowe dane,
teraz na podstawie mojego parametru wejściowego zamiast wyświetlić grida, eksportuję dane do pamięci,
2. piszę moduł funkcyjny, w którym wywołuję SUBMITem ten raport z odpowiednimi parametrami i ustawionym moim dodatkowym parametrem wskazującym, że raport ma wyeksportować dane do pamięci a nie je wyświetlić,
3. kolejny krok to import danych z pamięci - teraz w klubie disco mogę robić wszystko - przetworzyć te dane lub zwrócić jako wynik działania modułu.
Pozdrawiam,
NetweaverBoy
dominik.tylczynski
Posty: 8350
Rejestracja: wt kwie 03, 2007 4:05 pm
Has thanked: 1922 times
Been thanked: 1476 times
Kontakt:

Re: RFC_CALL_TRANSACTION

Post autor: dominik.tylczynski »

RFC_READ_TABLE czyta dane bezpośrednio z tablicy SAP.
RFC_CALL_TRANSACTION wywołuje w tle podaną transakcję. Zwykle transakcje, w przeciwieństwie do raportów nie zwracają danych. Zatem trudno oczekiwać, aby RFC_CALL_TRANSACTION zwracało dane.
ozeh
Posty: 2
Rejestracja: pt lut 24, 2017 10:55 pm

Re: RFC_CALL_TRANSACTION

Post autor: ozeh »

Tak jak pisałem, nie znam się na SAP za bardzo, ale to chyba nie tyle jest transakcja, co program, który przyjmuje jakieś kryteria i zwraca je w postaci tabeli, tak jak widać w załączonym przeze mnie pliku -> tzn. to jest okno kryteriów. Pytanie moje brzmi czy da się taki program wykonać zdalnie z poziomu innej aplikacji za pomocą RFC, wybierając kryteria i w rezultacie otrzymując tabelę z wynikami, podobnie jak ma to miejsce przy RFC_READ_TABLE.

Jeśli nie, to czy istnieje możliwość napisania funkcji w SAP, która będzie to robiła i będzie dostępna zdalnie przez RFC? Jak się do tego zabrać i jakie dostępy trzeba mieć w SAP?

Pozdrawiam.
Załączniki
img.png
img.png (24.17 KiB) Przejrzano 2109 razy
dominik.tylczynski
Posty: 8350
Rejestracja: wt kwie 03, 2007 4:05 pm
Has thanked: 1922 times
Been thanked: 1476 times
Kontakt:

Re: RFC_CALL_TRANSACTION

Post autor: dominik.tylczynski »

W SAP transakcja to swego rodzaju skrót, który wywołuje program (raport, program dialogowy itp.) Zatem to jednak jest transakcja, jeśli chcesz ją wywołać przez RFC_CALL_TRANSACTION. To w jaki sposób działa transakcja, jakie ma funkcje interaktywne, jak zwraca czy wyświetla dane zależy wyłącznie od tego jak została oprogramowana. Zatem nie można podać prostego sposobu jak wywołać transakcję zdalnie (np. przez RFC_CALL_TRANSACTION) i pobrać z niej dane. Generalnie temat integracji nie jest trywialny. Jednak odpowiadając wprost na Twoje pytanie "czy można" - oczywiście, że można. Kwestią jest tylko ile się trzeba napracować, aby taką integrację zrobić. Integracja SAP z innymi systemami to nie jest trywialny temat.

Przez żartobliwą analogię - w "Tomorrow Never Dies" James Bond ma BMW 750 zintegrowany z telefonem komórkowym - czyli można to zrobić:


Jednak nie wystarczy przykleić telefon srebrną taśmą do kierownicy, aby uzyskać taki efekt - to potrafi tylko MacGyver:
SAP po polsku, nauka SAP, SAP dla początkujących, SAP, S/4HANA, SAP ERP, SAPFORUM, FORUMSAP, HANA, SAP CLOUD PLATFORM, ABAP, EWM

Napisz więcej co potrzebujesz, co chcesz uzyskać i przede wszystkim po co to chcesz robić, dlaczego nie wystarczy praca bezpośrednio w SAP?
ODPOWIEDZ