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
RFC_CALL_TRANSACTION
-
- Posty: 6
- Rejestracja: pt paź 01, 2010 10:12 pm
Re: RFC_CALL_TRANSACTION
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
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
-
- Posty: 8350
- Rejestracja: wt kwie 03, 2007 4:05 pm
- Has thanked: 1922 times
- Been thanked: 1476 times
- Kontakt:
Re: RFC_CALL_TRANSACTION
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.
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.
Re: RFC_CALL_TRANSACTION
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.
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 (24.17 KiB) Przejrzano 2109 razy
-
- Posty: 8350
- Rejestracja: wt kwie 03, 2007 4:05 pm
- Has thanked: 1922 times
- Been thanked: 1476 times
- Kontakt:
Re: RFC_CALL_TRANSACTION
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:
Napisz więcej co potrzebujesz, co chcesz uzyskać i przede wszystkim po co to chcesz robić, dlaczego nie wystarczy praca bezpośrednio w SAP?
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:
Napisz więcej co potrzebujesz, co chcesz uzyskać i przede wszystkim po co to chcesz robić, dlaczego nie wystarczy praca bezpośrednio w SAP?