HCM -> call transaction na bogato

Jeśli programujesz, administrujesz, integrujesz i masz wątpliwość lub obawę, to właśnie najlepsze miejsce dla Ciebie. Pisz śmiało...
ODPOWIEDZ
emil
Posty: 133
Rejestracja: pt gru 27, 2019 11:02 am
Has thanked: 29 times
Been thanked: 42 times

HCM -> call transaction na bogato

Post autor: emil »

Założenie jest następujące: na alv robię hotspota, kliknięcie odpali w nowym oknie PA30, gdzie user coś sobie zmieni w razie potrzeby.
Samo uruchomienie transakcji nie stanowi problemu: wrzucam

Kod: Zaznacz cały

CALL TRANSACTION 'PA30'. 
... i mam.

Ale chcę w nowym oknie ;) korzystam więc z:

Kod: Zaznacz cały

CALL FUNCTION 'COPF_CALL_TRANSACTION'
  EXPORTING
    tcode             = 'PA30'
   NEW_SESSION       = 'X'.
...i też mam.

A teraz by było trudniej: chciałbym od razu mieć wprowadzony pernr + nr infotypu (a najlepiej do tego wywołany przycisk przeglądu (shift + f8).

Z podaniem samego pernr większego problemu nie mam:

Kod: Zaznacz cały

SET PARAMETER ID 'PER' FIELD '128'.
CALL TRANSACTION 'PA30'.
...ale ustawienie wartości dla pola CHOIC (typ informacji) już zaczyna być problematyczne. Nie wspominając o uruchomieniu przeglądu.

Sprawdzałem też, czy dam radę wykorzystać bdcdata, ale.. średnio to wyszło (nie uzyskuję wyglądu zwykłego pa30 + nie jestem w stanie przekazać wartości z konkretnym infotypem).

Kod: Zaznacz cały

DATA: it_bdcdata TYPE TABLE OF bdcdata,
      wa_it_bdcdata LIKE LINE OF it_bdcdata.

DATA opt TYPE ctu_params.

CLEAR wa_it_bdcdata.
wa_it_bdcdata-program  = 'SAPMP50A'.
wa_it_bdcdata-dynpro   = '1100'.
wa_it_bdcdata-dynbegin = 'X'.
APPEND wa_it_bdcdata TO it_bdcdata.

CLEAR wa_it_bdcdata.
wa_it_bdcdata-fnam = 'pernr'. "per
wa_it_bdcdata-fval = '8'.
APPEND wa_it_bdcdata TO it_bdcdata.

CLEAR wa_it_bdcdata.
wa_it_bdcdata-fnam = 'CHOIC'. "per
wa_it_bdcdata-fval = '9012'.
APPEND wa_it_bdcdata TO it_bdcdata.

opt-dismode = 'E'.

CALL TRANSACTION 'PA30' USING it_bdcdata OPTIONS FROM opt.
Czy mógłby mnie ktoś kopnąć w dobrym kierunku?
marek.turczynski
Posty: 213
Rejestracja: czw lip 10, 2014 7:53 pm
Has thanked: 21 times
Been thanked: 258 times

Re: HCM -> call transaction na bogato

Post autor: marek.turczynski »

Zamiast CALL_TRANSACTION użyj modułu funkcyjnego HR_MASTERDATA_DIALOG z parametrem p_skip = abap_true.

Marek Turczyński
Marek Turczyński
K602
Posty: 135
Rejestracja: śr sie 24, 2022 11:50 am
Has thanked: 60 times
Been thanked: 86 times
Kontakt:

Re: HCM -> call transaction na bogato

Post autor: K602 »

emil pisze: śr mar 29, 2023 8:00 am Czy mógłby mnie ktoś kopnąć w dobrym kierunku?
Jeśli nie ma opcji standardowej, jakiegoś MF dedykowanego, to musisz nagrać transakcję (SHDB), a nie tworzyć ręcznie. Wtedy są inne wartości dla BDC (załącznik).
Załączniki
z.png
z.png (19.95 KiB) Przejrzano 163 razy
SAP ABAP Certified Developer
emil
Posty: 133
Rejestracja: pt gru 27, 2019 11:02 am
Has thanked: 29 times
Been thanked: 42 times

Re: HCM -> call transaction na bogato

Post autor: emil »

marek.turczynski pisze: śr mar 29, 2023 9:05 am Zamiast CALL_TRANSACTION użyj modułu funkcyjnego HR_MASTERDATA_DIALOG z parametrem p_skip = abap_true.

Marek Turczyński
PRAWIE wystarczająco. Nie znalazłem możliwości odpalenia FM w nowym oknie.
emil
Posty: 133
Rejestracja: pt gru 27, 2019 11:02 am
Has thanked: 29 times
Been thanked: 42 times

Re: HCM -> call transaction na bogato

Post autor: emil »

K602 pisze: śr mar 29, 2023 9:18 am Jeśli nie ma opcji standardowej, jakiegoś MF dedykowanego, to musisz nagrać transakcję (SHDB), a nie tworzyć ręcznie. Wtedy są inne wartości dla BDC (załącznik).
Problem polega na tym, że nie chcę wykonać operacji w tle. Chcę dostarczyć użytkownikowi nowe okno z PA30 i podanymi danymi (nr ewid + infotyp).
dominik.tylczynski
Posty: 8326
Rejestracja: wt kwie 03, 2007 4:05 pm
Has thanked: 1915 times
Been thanked: 1474 times
Kontakt:

Re: HCM -> call transaction na bogato

Post autor: dominik.tylczynski »

emil pisze: śr mar 29, 2023 1:47 pm Problem polega na tym, że nie chcę wykonać operacji w tle. Chcę dostarczyć użytkownikowi nowe okno z PA30 i podanymi danymi (nr ewid + infotyp).
Będziesz mógł to zrobić - nagraj w SHDB wykonanie transakcji do miejsca, do którego chcesz dojść. Potem w swoim programie zrób CALL TRANSACTION ... USING <tablica z nagrania> MODE 'E'.
Nie wiem czy w przypadku PA30 to jest najlepsze podejście, ale generalnie się sprawdza.
emil
Posty: 133
Rejestracja: pt gru 27, 2019 11:02 am
Has thanked: 29 times
Been thanked: 42 times

Re: HCM -> call transaction na bogato

Post autor: emil »

dominik.tylczynski pisze: śr mar 29, 2023 5:01 pm
emil pisze: śr mar 29, 2023 1:47 pm Problem polega na tym, że nie chcę wykonać operacji w tle. Chcę dostarczyć użytkownikowi nowe okno z PA30 i podanymi danymi (nr ewid + infotyp).
Będziesz mógł to zrobić - nagraj w SHDB wykonanie transakcji do miejsca, do którego chcesz dojść. Potem w swoim programie zrób CALL TRANSACTION ... USING <tablica z nagrania> MODE 'E'.
Nie wiem czy w przypadku PA30 to jest najlepsze podejście, ale generalnie się sprawdza.
Skorzystałem z Twojej sugestii i nadal mam problem: z jednej strony bardzo ładnie wchodzę do wyświetlania listy rekordów dla wybranego pernr i infotypu, ale nadal dzieje się to w tym samym oknie w którym była wykonany program.
Myślałem, że może problem wynika z faktu, że robię to z poziomu alv (akcja na hotspocie), ale z bezpośrednio odpalonego programu z obiektów lokalnych dzieje się tak samo.

Kod: Zaznacz cały

REPORT z_wywolanie_tcode_z_param.


    DATA class_name TYPE c LENGTH 30 VALUE 'CL_ABAP_BROWSER'.
    DATA bdcdata_tab TYPE TABLE OF bdcdata.
    DATA opt TYPE ctu_params.
    bdcdata_tab = VALUE #(
      ( program  = 'SAPMP50A' dynpro   = '1000' dynbegin = 'X' )
      ( fnam = 'BDC_OKCODE'       fval = '=LIST' )
      ( fnam = 'RP50G-PERNR'       fval = '128' )
      ( fnam = 'BDC_SUBSCR'       fval = 'SAPMP50A' )
      ( fnam = 'BDC_SUBSCR'       fval = 'SAPMP50A' )
      ( fnam = 'BDC_SUBSCR'       fval = 'SAPMP50A' )
      ( fnam = 'RP50G-TIMR6'       fval = 'X' )
      ( fnam = 'BDC_SUBSCR'       fval = 'SAPMP50A' )
      ( fnam = 'RP50G-CHOIC'       fval = '9201' )
      ).

    opt-dismode = 'E'.
    opt-defsize = 'X'.

    TRY.
        CALL TRANSACTION 'PA30' " WITH AUTHORITY-CHECK
                                USING bdcdata_tab OPTIONS FROM opt  .
      CATCH cx_sy_authorization_error ##NO_HANDLER.
    ENDTRY.
Czy coś pominąłem?
K602
Posty: 135
Rejestracja: śr sie 24, 2022 11:50 am
Has thanked: 60 times
Been thanked: 86 times
Kontakt:

Re: HCM -> call transaction na bogato

Post autor: K602 »

SAP ABAP Certified Developer
emil
Posty: 133
Rejestracja: pt gru 27, 2019 11:02 am
Has thanked: 29 times
Been thanked: 42 times

Re: HCM -> call transaction na bogato

Post autor: emil »

K602 pisze: czw mar 30, 2023 10:08 am Rzuć okiem na to:

https://answers.sap.com/questions/85939 ... ing-a.html
Próbowałem już skorzystać z TH_CREATE_MODE, ale nie byłem w stanie wysterować parametrem zawartości pola z pernr.
Przed chwilą się zorientowałem, że trzeba było podać pole ekranu, a nie id parametru... <facepalm>

W zasadzie problem rozwiązany, dziękuję za pomoc :)

Nie zmienia to faktu, że (tu głównie zwracam się do Dominika) jeśli ktoś by w stanie był wysterować rozwiązanie z bdcdatą do nowego okna - chętnie bym się zapoznał z taką opcją. Ma to potencjał na przyszłość. :)
K602
Posty: 135
Rejestracja: śr sie 24, 2022 11:50 am
Has thanked: 60 times
Been thanked: 86 times
Kontakt:

Re: HCM -> call transaction na bogato

Post autor: K602 »

emil pisze: czw mar 30, 2023 11:04 am Nie zmienia to faktu, że (tu głównie zwracam się do Dominika) jeśli ktoś by w stanie był wysterować rozwiązanie z bdcdatą do nowego okna - chętnie bym się zapoznał z taką opcją. Ma to potencjał na przyszłość. :)
To zrób inaczej. Wrzuć zrobione nagranie z SHDB (BDC_DATA), które Ci poleciłem i wrzuć je w osobny program, ustal transakcję dla niego i potem TH_CREATE_MODE z podaniem tej zetowej transakcji... na około, ale skoro takie ciekawe wymaganie... :)
SAP ABAP Certified Developer
ODPOWIEDZ