Cześć,
Mam pytanko, jaka tabela zawiera listę załączników? Chciałabym do raportu dodać kolumnę w której oznaczałabym czy jest załącznik do kontaktu utworzonego w VC01N. Jak klikam F1 to mam tylko informację o strukturze... a potrzebuję tabelę do której odwołam się w kodzie..
Jaka to tabela?
-
- Posty: 234
- Rejestracja: pn lut 05, 2018 1:36 pm
- Has thanked: 65 times
- Been thanked: 21 times
Re: Jaka to tabela?
Hej dzięki za odzew
SAP ERP.
Jeżeli chodzi o tabelę TOAV1 w SE16n jak ją chciałam odpalić to niestety jest pusta, a tabela TOAV2 nie istnieje.
A jednak załączniki mam podpięte jak widać na poprzednim screenie, więc to chyba nie te tabelki jeszcze jakiś trop?
Sprawdzałam jeszcze tabelę DRAW, ale w niej są jakieś inne załączniki...
SAP ERP.
Jeżeli chodzi o tabelę TOAV1 w SE16n jak ją chciałam odpalić to niestety jest pusta, a tabela TOAV2 nie istnieje.
A jednak załączniki mam podpięte jak widać na poprzednim screenie, więc to chyba nie te tabelki jeszcze jakiś trop?
Sprawdzałam jeszcze tabelę DRAW, ale w niej są jakieś inne załączniki...
-
- Posty: 561
- Rejestracja: śr kwie 04, 2007 4:32 pm
- Lokalizacja: Poznań
- Has thanked: 9 times
- Been thanked: 165 times
- Kontakt:
Re: Jaka to tabela?
Jeśli mogę coś doradzić - w przypadku GOS sięganie bezpośrednio do tabel BD to proszenie się o problemy. GOS wcale nie jest taki trywialny jaki się początkowo wydaje. Sporo zależy od komponentów instalowanych w ramach danej instancji SAP - np. nieco inaczej to wygląda gdy jest w systemie jakiś content server. Tak czy inaczej lepiej używać dedykowanych klas lub modułów funkcyjnych.
I tak np. aby odczytać czy istnieją jakieś załączniki dla danego obiektu to wystarczy wywołać statyczną metodę COUNT_FOR_OBJECT klasy CL_GOS_ATTACHMENT_QUERY.
W systemie istnieje cała banda klas CL_GOS_* - warto się nimi zainteresować.
Pobranie listy załączników można też zrealizować przy pomocy klasy CL_BINARY_RELATION i metody READ_LINKS_OF_BINREL. Można też wykorzystać moduł funkcyjny BDS_GOS_CONNECTIONS_GET.
Generalnie temat jest dość szeroki i trochę trzeba nad nim przysiedzieć żeby być biegłym w tej materii.
I tak np. aby odczytać czy istnieją jakieś załączniki dla danego obiektu to wystarczy wywołać statyczną metodę COUNT_FOR_OBJECT klasy CL_GOS_ATTACHMENT_QUERY.
W systemie istnieje cała banda klas CL_GOS_* - warto się nimi zainteresować.
Pobranie listy załączników można też zrealizować przy pomocy klasy CL_BINARY_RELATION i metody READ_LINKS_OF_BINREL. Można też wykorzystać moduł funkcyjny BDS_GOS_CONNECTIONS_GET.
Generalnie temat jest dość szeroki i trochę trzeba nad nim przysiedzieć żeby być biegłym w tej materii.
Pozdrawiam,
Jacek Witczak
http://novertio.pl
Jacek Witczak
http://novertio.pl
-
- Posty: 234
- Rejestracja: pn lut 05, 2018 1:36 pm
- Has thanked: 65 times
- Been thanked: 21 times
Re: Jaka to tabela?
Ok, a więc załączniki są w tabeli SOOD, ale idąc tropem użycia tej metody... mam przykładowy kod użycia tej metody:
Nie używałam jej nigdy i nie mam w niej biegłości. Ze strony SAP:
i_object1-typeid nie jestem pewna czy to SDOACTIV w moim przypadku. W OAC3 nie widzę tego połaczenia. Wszędzie w sumie TOA01. Czy może mi ktoś pomóc "obrobić" ten kod nr 1?
Kod: Zaznacz cały
i_object1-typeid = 'YBUS2012'.
i_object1-catid = 'BO'.
i_object1-instid = i_ybus2012-docno.
call method cl_gos_attachment_query=>count_for_object
exporting
is_object = i_object1
ip_arl = space
receiving
rt_stat = i_stat1.
read table i_stat1 into wa_stat1 index 1.
if sy-subrc eq c_0.
move wa_stat1-counter to v_attno1.
endif.
Kod: Zaznacz cały
DATA:
ld_IP_ARL TYPE SGS_FLAG ,
ld_IP_ATTA TYPE SGS_FLAG ,
ld_IP_NOTE TYPE SGS_FLAG ,
ld_IP_PRIVATE TYPE SGS_FLAG ,
ld_IP_URL TYPE SGS_FLAG ,
ld_IT_OBJECT TYPE SIBFLPORBT ,
ld_RT_STAT TYPE SGS_T_ACNT.
"IP_ARL " Count Archive Link Relationships TYPE SGS_FLAG
"IP_ATTA " Count Attachments TYPE SGS_FLAG
"IP_NOTE " Count Notes TYPE SGS_FLAG
"IP_PRIVATE " Count Private Notes TYPE SGS_FLAG
"IP_URL " Count URL TYPE SGS_FLAG
"IT_OBJECT " Business Object TYPE SIBFLPORBT
" ld_IP_ARL = "
" ld_IP_ATTA = "
" ld_IP_NOTE = "
" ld_IP_PRIVATE = "
" ld_IP_URL = "
" ld_IT_OBJECT = "
CALL METHOD CL_GOS_ATTACHMENT_QUERY=>COUNT_FOR_OBJECT(
EXPORTING
IP_ARL = ld_IP_ARL
IP_ATTA = ld_IP_ATTA
IP_NOTE = ld_IP_NOTE
IP_PRIVATE = ld_IP_PRIVATE
IP_URL = ld_IP_URL
IT_OBJECT = ld_IT_OBJECT
RECEIVING
RT_STAT = ld_RT_STAT ).
-
- Posty: 561
- Rejestracja: śr kwie 04, 2007 4:32 pm
- Lokalizacja: Poznań
- Has thanked: 9 times
- Been thanked: 165 times
- Kontakt:
Re: Jaka to tabela?
Też nigdy nie używałem tej metody do kontaktów handlowych w SD ale wydaje mi się, że w polu TYPEID powinnaś wpisać 'VBKA'. Jest też obiekt gospodarczy BUS1037 (Kontakt z partnerem handlowym) - rzuć na niego okiem.
Ten drugi przykład, który podałaś dotyczy metody CL_GOS_ATTACHMENT_QUERY=>COUNT_FOR_OBJECTS. Działa ona podobnie jak COUNT_FOR_OBJECT tylko umożliwia pobranie liczby załączników dla różnych typów obiektów (COUNT_FOR_OBJECT tylko dla jednego).
Ten drugi przykład, który podałaś dotyczy metody CL_GOS_ATTACHMENT_QUERY=>COUNT_FOR_OBJECTS. Działa ona podobnie jak COUNT_FOR_OBJECT tylko umożliwia pobranie liczby załączników dla różnych typów obiektów (COUNT_FOR_OBJECT tylko dla jednego).
Pozdrawiam,
Jacek Witczak
http://novertio.pl
Jacek Witczak
http://novertio.pl
-
- Posty: 234
- Rejestracja: pn lut 05, 2018 1:36 pm
- Has thanked: 65 times
- Been thanked: 21 times
Re: Jaka to tabela?
Dziękuje, faktycznie to bedzie pewnie jeden z tych obiektów.
Uzywałeś tej metody kiedyś? Bo mam problem z deklaracjami danych, masz może jakiś przykład na którym mogłabym się wzorować definiując dane? Obecnie mam tak, ale mam jeszcze jakieś błędy z brakiem danych:
Uzywałeś tej metody kiedyś? Bo mam problem z deklaracjami danych, masz może jakiś przykład na którym mogłabym się wzorować definiując dane? Obecnie mam tak, ale mam jeszcze jakieś błędy z brakiem danych:
Kod: Zaznacz cały
data: gos_attachment type ref to cl_gos_attachment_query,
i_object type sibflporb,
i_stat type SGS_T_ACNT.
i_object-typeid = 'VBKA'. "lub BUS1037
i_object-catid = 'BO'.
i_object-instid = v_docno.
call method cl_gos_attachment_query=>count_for_object
exporting
is_object = i_object
ip_arl = space
receiving
rt_stat = i_stat.
read table i_stat into wa_stat index 1.
if sy-subrc eq 0.
move wa_stat-counter to v_attno.
endif.
-
- Posty: 561
- Rejestracja: śr kwie 04, 2007 4:32 pm
- Lokalizacja: Poznań
- Has thanked: 9 times
- Been thanked: 165 times
- Kontakt:
Re: Jaka to tabela?
W Twoim kodzie nie jest potrzebna deklaracja gos_attachment - do niczego nie jest używana ponieważ metoda COUNT_FOR_OBJECT jest statyczna a nie instancyjna. Brakuje definicji zmiennej v_docno, v_attno oraz wa_stat.
Genralnie staram się nie pisać swojego kodu tutaj żeby niczego nie sugerować ale ja napisałbym to trochę inaczej (tu z wykorzystaniem składni ABAP w wersji >= 7.40):
Zamiast '...' powinnaś wstawić zmienną typu CAS_VBELN zawierającą numer dokumentu zbytu dla kontaktu handlowego - czyli pole, które jest kluczem w tabeli VBKA. Zmienna lv_counter zawiera ilość załączników w GOS dla danego dokumentu bądź 0 jesli takich załaczników nie ma. Zwróć proszę uwagę, że mój przykład żąda liczenia wszystkich elementów GOS (załączniki, adnotacje (notatki) czy odnośniki URL). Jeśli chcesz policzyć konkretne typy elementów GOS musisz użyć odpowiednich parametrów metody COUNT_FOR_OBJECT.
Genralnie staram się nie pisać swojego kodu tutaj żeby niczego nie sugerować ale ja napisałbym to trochę inaczej (tu z wykorzystaniem składni ABAP w wersji >= 7.40):
Kod: Zaznacz cały
data(lt_stat) = cl_gos_attachment_query=>count_for_object( is_object = value #( typeid = 'VBKA' catid = 'BO' instid = '...' ) ).
if lines( lt_stat ) > 0.
data(lv_counter) = lt_stat[ 1 ]-counter.
endif.
Pozdrawiam,
Jacek Witczak
http://novertio.pl
Jacek Witczak
http://novertio.pl
-
- Posty: 234
- Rejestracja: pn lut 05, 2018 1:36 pm
- Has thanked: 65 times
- Been thanked: 21 times
Re: Jaka to tabela?
Hej,
udało mi się to napisać
Mała wskazówka dla potomnych, obiekt BUS1037 dla kontaktów handlowych
A odczyt w metodzie wg zapytania z tabeli:
udało mi się to napisać
Mała wskazówka dla potomnych, obiekt BUS1037 dla kontaktów handlowych
A odczyt w metodzie wg zapytania z tabeli:
Kod: Zaznacz cały
SELECT *
FROM srgbtbrel
APPENDING CORRESPONDING FIELDS OF TABLE lt_link
FOR ALL ENTRIES IN lt_brel
WHERE
instid_a = is_object-instid AND
typeid_a = is_object-typeid AND
catid_a = is_object-catid AND
reltype = lt_brel-reltype