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>.