HTTP_GET

Jeśli programujesz, administrujesz, integrujesz i masz wątpliwość lub obawę, to właśnie najlepsze miejsce dla Ciebie. Pisz śmiało...
Marcin Kwiatkowski
Posty: 9
Rejestracja: sob lut 27, 2010 6:12 pm
Lokalizacja: Brzeg Dolny / Wrocław

Post autor: Marcin Kwiatkowski »

Podałem wcześniej samo IP, ale w programie całość adresu była wpisana poprawnie.
Jeżeli dobrze rozumiem to część programu służąca do odnalezienia poprawnego adresu xmla jest już napisana

Kod: Zaznacz cały

*&--------------------------------------------------------------------*
*& Form retrieve_xml_file_name
*&--------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
* -->CC_XML_ADDRtext
*---------------------------------------------------------------------*
FORM retrieve_xml_file_name
CHANGING cc_xml_address.

* Retrieve XML File name from NBP site

DATA: lc_status_code(10) TYPE c,
lc_status_text(10) TYPE c,
li_response_entity_body_length TYPE i,
lt_response_entity_body(60000) TYPE c OCCURS 0 WITH HEADER LINE,
lt_response_headers(256) TYPE c OCCURS 0 WITH HEADER LINE.

DATA: li_position TYPE i.


CALL FUNCTION 'HTTP_GET'
EXPORTING
absolute_uri = 'http://195.149.95.21/Kursy/KursyA.html'

proxy = ''
BLANKSTOCRLF = 'Y'
IMPORTING
status_code = lc_status_code
status_text = lc_status_text
response_entity_body_length = li_response_entity_body_length
TABLES
response_entity_body = lt_response_entity_body
response_headers = lt_response_headers
EXCEPTIONS
connect_failed = 1
timeout = 2
internal_error = 3
tcpip_error = 4
data_error = 5
system_failure = 6
communication_failure = 7
OTHERS = 8.

gc_sy_subrc = sy-subrc.

CASE gc_sy_subrc.
WHEN 1.
gc_error = 'connect_failed'.
WHEN 2.
gc_error = 'timeout'.
WHEN 3.
gc_error = 'internal_error'.
WHEN 4.
gc_error = 'tcpip_error'.
WHEN 5.
gc_error = 'data_error'.
WHEN 6.
gc_error = 'system_failure'.
WHEN 7.
gc_error = 'communication_failure'.
WHEN 8.
gc_error = 'others'.
ENDCASE.

IF gc_sy_subrc IS INITIAL.

READ TABLE lt_response_entity_body INDEX 1.
SEARCH lt_response_entity_body FOR 'tabela w formacie .XML'.
Ale wcześniej opisany błąd dalej występuje.

dominik.tylczynski
Posty: 7295
Rejestracja: wt kwie 03, 2007 4:05 pm
Has thanked: 1202 times
Been thanked: 1120 times

Post autor: dominik.tylczynski »

Niby jest napisana, pytanie tylko czy poprawnie - nie testowałem tego. Dla potrzeb ICG napisałem własne rozwiązanie.

Marcin Kwiatkowski
Posty: 9
Rejestracja: sob lut 27, 2010 6:12 pm
Lokalizacja: Brzeg Dolny / Wrocław

Post autor: Marcin Kwiatkowski »

No cóż to dziękuję ;)

Niestety Pańskiego rozwiązania nie zakupię ze względu na studenckie realia finansowe :P

Pozdrawiam i jeszcze raz dziękuję za odpowiedź.

dominik.tylczynski
Posty: 7295
Rejestracja: wt kwie 03, 2007 4:05 pm
Has thanked: 1202 times
Been thanked: 1120 times

Post autor: dominik.tylczynski »

Przedebuguj powyższy program i zobacz czy poprawnie wyszukuje adres XMLa. Jeśli jest problem to na najpewniej w tym miejscu.

ldzierza
Posty: 14
Rejestracja: pt cze 18, 2010 4:16 pm
Been thanked: 2 times

Post autor: ldzierza »

witam,
jesli potrzebujesz jeszcze pomocy zwiazanej z tym programem to prosze o kontakt na PRV.

pzdr,
Lechoo

wojtas7
Posty: 783
Rejestracja: pt mar 14, 2008 12:51 pm
Has thanked: 55 times
Been thanked: 155 times

Re: HTTP_GET

Post autor: wojtas7 »

czy to że BCC z Poznania sprzedaje mój kod powyżej za 2000zł to jest normalne?

http://www.bcc.com.pl/aktualnosci/nowos ... o-sap.html

dominik.tylczynski
Posty: 7295
Rejestracja: wt kwie 03, 2007 4:05 pm
Has thanked: 1202 times
Been thanked: 1120 times

Re: HTTP_GET

Post autor: dominik.tylczynski »

wojtas7 pisze:czy to że BCC z Poznania sprzedaje mój kod powyżej za 2000zł to jest normalne?

http://www.bcc.com.pl/aktualnosci/nowos ... o-sap.html
Dobre pytanie. Zawsze można zapytać bezpośrednio w BCC.

Przy okazji warto się zastanowić czy:
  1. w jakich okolicznościach i na jakim systemie powstał ten kod
  2. faktycznie napisałeś ten program
  3. w świetle praw autorskich jest to nadal twój kod
  4. kto tak naprawdę ma prawa autorskie do tego programu
Bardzo prawdopodobne, że mimo iż napisałeś ten program nie masz do niego praw autorskich; a jeśli nie Ty to kto ma obecnie te prawa - tego nie wiem, ale warto to sprawdzić.

dominik.tylczynski
Posty: 7295
Rejestracja: wt kwie 03, 2007 4:05 pm
Has thanked: 1202 times
Been thanked: 1120 times

Re: HTTP_GET

Post autor: dominik.tylczynski »

EasyExchangeRates – prezentacja produktu (PDF) pisze:EasyExchangeRates – to autorskie rozwiązanie BCC
Z tego można domniemywać, że firma BCC jest autorem i posiada prawa autorskie do tego rozwiązania. Tak mi się przynajmniej wydaje.

wojtas7
Posty: 783
Rejestracja: pt mar 14, 2008 12:51 pm
Has thanked: 55 times
Been thanked: 155 times

Re: HTTP_GET

Post autor: wojtas7 »

To jest problem raczej hipotetyczny, nie zamierzam nikogo "ścigać" ani nawet pytać :-)

Mam swoją satysfakcję że wydaje mi się że pierwszy to napisałem i pewnie w co drugim polskim SAPie program tego rodzaju chodzi :-)

A prawda jest taka że u mojego klienta bodajże w 2005 roku powstało takie zapytanie i po prostu napisałem ten prosty program do tego więc "prawa autorskie" należą do tego klienta.

Z drugiej strony jeśli ktoś coś dorobi w SAPie to oznacza że wszyscy inni, którzy potrzebują taką funkcjonalność i też to zrobią, to nie mają do tego prawa? To byłoby dziwne.

Pozdr

dominik.tylczynski
Posty: 7295
Rejestracja: wt kwie 03, 2007 4:05 pm
Has thanked: 1202 times
Been thanked: 1120 times

Re: HTTP_GET

Post autor: dominik.tylczynski »

wojtas7 pisze:To jest problem raczej hipotetyczny, nie zamierzam nikogo "ścigać" ani nawet pytać :-)

Mam swoją satysfakcję że wydaje mi się że pierwszy to napisałem i pewnie w co drugim polskim SAPie program tego rodzaju chodzi :-)
Szlachetnie z twojej strony, naprawdę. Na koniec dnia satysfakcja jest chyba jedyną walutą, która się nie dewaluuje.
wojtas7 pisze:A prawda jest taka że u mojego klienta bodajże w 2005 roku powstało takie zapytanie i po prostu napisałem ten prosty program do tego więc "prawa autorskie" należą do tego klienta.

Z drugiej strony jeśli ktoś coś dorobi w SAPie to oznacza że wszyscy inni, którzy potrzebują taką funkcjonalność i też to zrobią, to nie mają do tego prawa? To byłoby dziwne.
To chyba nie jest do końca takie proste. Czytałem kiedyś warunki licencji i wynikało z nich, że prawa autorskie do wszystkich developmentów zrobionych w trakcie projektu ma dostawca oprogramowania. To jednak było już jakiś czas temu i zapewne poszczególni klienci indywidualnie negocjują te warunki.

aszymanski
Posty: 68
Rejestracja: pt lip 11, 2014 1:01 pm
Lokalizacja: Kraków
Has thanked: 10 times
Been thanked: 28 times

Re:

Post autor: aszymanski »

dtylczyn pisze:Adres 195.149.95.21 prowadzi do głównej strony NBP. Na niej jest link do tabeli kursów średnich: http://195.149.95.21/home.aspx?f=/kursy/kursya.html Tę samą tabelę znajdziesz na stronie: http://www.nbp.pl/kursy/kursya.html U dołu tabeli masz link do kursów w formie XML: http://www.nbp.pl/kursy/xml/a111z100610.xml Problem z NBP polega na tym, że adres do strony z XML się zmienia. Zatem przez HTTP_GET musisz pobrać dane poprzednich URL, przeanalizować je, znaleźć aktualny adres do strony z XML i ściągnąć ją ponownie przez HTTP_GET.
Witam,
swego czasu przerabiałem ten temat i doszedłem do tego, że numer tabeli kursów to numer kolejnego dnia roboczego w roku (dla podanego wyżej przykładu - plik a111z100610.xml - nr tabeli 111). Standardowa funkcja (nie pamiętam teraz nazwy) znajdzie nam ten numer na podstawie kalendarza PL.
Jakiś czas temu NBP poszedł po rozum do głowy i obecnie udostępnia listę nazw plików XML pod adresem:
http://www.nbp.pl/kursy/xml/dir.txt

Po odczytaniu tej listy łatwo znaleźć właściwy plik XML na dany dzień.
To jest również lepsze rozwiązanie niż korzystanie z pliku LastA, bo dzięki temu możemy wczytać również kursy historyczne.

Instrukcja dotycząca pobierania kursów i opis zawartości dir.txt znajdziemy pod linkiem:
http://www.nbp.pl/home.aspx?f=/kursy/in ... walut.html

pozdrawiam,
Adam Szymański

wojtas7
Posty: 783
Rejestracja: pt mar 14, 2008 12:51 pm
Has thanked: 55 times
Been thanked: 155 times

Re: HTTP_GET

Post autor: wojtas7 »

Dzięki za update. Mój kod akurat wyciągał nazwę pliku z .html.

mektos
Posty: 19
Rejestracja: wt kwie 19, 2011 3:14 pm
Has thanked: 4 times
Been thanked: 1 time

Re: HTTP_GET

Post autor: mektos »

Witam

Zaciekawił mnie kod, który pobiera kursy walut z nbp do SAPa.

Chciałem przetestować połączenie modułu HTTP_GET.
Wpisałem tam adres podany w programie http://195.136.199.105/Kursy/KursyA.html, jednak mam problemy z połączeniem. Błąd połączenia: Connect to Host 195.136.199.105 Port 80 error: NIECONN_REFUSED
Podałem również adres http://www.nbp.pl/Kursy/KursyA.html i dalej nic...
Może trzeba podać jakiś nowy link?

Odpaliłem też sam program i nic nie pobrał. W OB08 nie widzę aktualnego kursu. Tabela zplnbp również jest pusta.

Pogadałem z zespołem SAP basis i powiedzieli mi, że pewnie trzeba zdefiniować połączenie RFC.
Wiecie może co tam trzeba powpisywać by to działało?
Ponoć SAP jest otwarty na połączenia HTTP...

Do tego pytanie do tabeli zplnbp. Jest jej struktura, ale nie wiem na jakich polach ustawić klucz (SAP wymaga by tabele miały klucze na polach). Póki co ustawiłem klucz na wszystkich polach.

Pozdrawiam

wojtas7
Posty: 783
Rejestracja: pt mar 14, 2008 12:51 pm
Has thanked: 55 times
Been thanked: 155 times

Re: HTTP_GET

Post autor: wojtas7 »

sprawdź Proxy, połączenie RFC nie jest potrzebne.

mektos
Posty: 19
Rejestracja: wt kwie 19, 2011 3:14 pm
Has thanked: 4 times
Been thanked: 1 time

Re: HTTP_GET

Post autor: mektos »

Hej

Dziękuje za odpowiedź.
Wpisałem proxy i test modułu HTTP_GET coś zwrócił (w załączeniu widok z SAP).
Wpisałem też proxy w dwóch miejscach kodu programu gdzie jest mowa o proxy.
Jednak program nie wczytuje mi kursów ani do tej nowej tabeli Z... ani nie widzę aktualnych kursów w OB08... (typ kursu M z EUR na PLN)

Jednak po wpisaniu proxy program generuje się kilka sekund (wcześniej działał kilka minut)

Co może być nie tak?
Nie jestem aż tak zaawansowany w ABAPie by prześledzić cały ten program...

Pisałeś o tym, że program został rozbudowany o inne funkcjonalności. Mogę prosić o ten pierwotny prosty kod który działał? Rozumiem, że wczytuje on aktualny kurs z danego dnia?