PI Consumer Proxy Oluşturma
Web servis ile karşı sistemden veri çekmek için normalde consumer servis oluştururuz. Fakat PI üzerinden veri çekiyorsak consumer proxy’yi ABAP Danışmanı olarak biz değil PI danışmanları oluşturuyor.
- PI danışmanı bize şöyle bir bilgi dönecektir:
SC_SAPURLUS_EKAYNAK, 1.0 of sapurlus.com >> http://sapurlus.com/EN002/gmp3raporu >>
SI_SAP_GMP3_RAPORU_OUT_SYNC
- PI tarafının oluşturduğu proxy’yi SAP’de SPROXY işlem kodunda görebiliriz.
- SAP’den dışarıya veri aktaran proxyler INB, dışarıdam SAP’ye veri aktaran proxyler OUT olarak isimlendirilir. Biz dışarıdan veri çekeceğimiz için OUT ara yüzünü sağ tıklayarak generate etmemiz gerekiyor(Proxy Yarat).
- Package ve request no ile beraber bir ön ek girilmesi gerekiyor.
- Oluşan consumer serviste ABAP Name kısmında yeni oluşan class’ı görebiliriz
Class: ZPO_CO_SI_SAP_GMP3_RAPORU_OUT
- Öncelikle Consumer servisin aktif edilmesi gerekiyor.
- Class içinde bizim ilgilendiğimiz method: SI_SAP_GMP3_RAPORU_OUT_SYNC
- Bu otomatik oluşmuş bir methodtur.
method SI_SAP_GMP3_RAPORU_OUT_SYNC.
data:
ls_parmbind type abap_parmbind,
lt_parmbind type abap_parmbind_tab.
ls_parmbind-name = `OUTPUT`.
ls_parmbind-kind = cl_abap_objectdescr=>importing.
get reference of OUTPUT into ls_parmbind-value.
insert ls_parmbind into table lt_parmbind.
ls_parmbind-name = `INPUT`.
ls_parmbind-kind = cl_abap_objectdescr=>exporting.
get reference of INPUT into ls_parmbind-value.
insert ls_parmbind into table lt_parmbind.
if_proxy_client~execute(
exporting
method_name = `SI_SAP_GMP3_RAPORU_OUT_SYNC`
changing
parmbind_tab = lt_parmbind
).
endmethod.
- Otomatik oluşan methodları, bizim oluşturduğumuz ABAP programları içinde PI`dan veri çekmek üzere kullanabiliriz.
DATA(lo_ent1) = NEW zpo_co_si_sap_gmp3_raporu_out( ).
DATA: ls_ent2 TYPE zpo_mt_sap_gmp3_raporu_res,
ls_ent1 TYPE zpo_mt_sap_gmp3_raporu_req,
ls_line LIKE LINE OF ls_ent1-mt_sap_gmp3_raporu_req-slip_no.
FIELD-SYMBOLS: <lfs_item> LIKE LINE OF ls_ent2-mt_sap_gmp3_raporu_res-item.
SORT lt_slip_col BY zz_slipn.
LOOP AT lt_slip_col ASSIGNING <lfs_slip>.
CLEAR ls_line.
ls_line = <lfs_slip>-zz_slipn.
APPEND ls_line TO ls_ent1-mt_sap_gmp3_raporu_req-slip_no.
ENDLOOP.
UNASSIGN <lfs_slip>.
TRY.
CALL METHOD lo_ent1->si_sap_gmp3_raporu_out_sync
EXPORTING
output = ls_ent1
IMPORTING
input = ls_ent2.
CATCH cx_ai_system_fault .
ENDTRY.
LOOP AT ls_ent2-mt_sap_gmp3_raporu_res-item ASSIGNING <lfs_item>.
READ TABLE lt_slip_col ASSIGNING <lfs_slip>
WITH KEY zz_slipn = <lfs_item>-slip_no
BINARY SEARCH.
IF sy-subrc = 0.
<lfs_slip>-fditt = <lfs_item>-total_total_amount.
<lfs_slip>-fdiat = <lfs_item>-total_total_count.
<lfs_slip>-fdiitt = <lfs_item>-cancel_total_amount.
<lfs_slip>-fdiiat = <lfs_item>-cancel_total_count.
<lfs_slip>-fgttr = <lfs_slip>-fditt - <lfs_slip>-fdiitt.
ENDIF.
UNASSIGN <lfs_slip>.
ENDLOOP.
UNASSIGN <lfs_item>.