|
<< Click to Display Table of Contents >> Navigation: All About ABAP Technique > Indonesia > Costumized IDOC > Pengaturan Outbound |
Definisikan Sistem Logika dan Tempatkan Client ke Sistem Logika – Transaksi SALE

•Masuk ke "Define Logical System "(Lihat gambar diatas)
•Definisikan logika sistem yang baru untuk mengidentifikasi sistem lokal dan Simpan
![]() |
•Sekarang, masuk ke "Assign Client to Logical System" (Lihat Gambar paling atas)
•Tambahkan entri baru
•Spesifikasikan Client, yang sebelumnya telah dibuat sistem logika dan atribut lainnya.
•Simpan dan entrikan(masukkan)
![]() |
•Definisikan logika sistem yang baru untuk mengidentifikasi sistem partner dan Simpan
![]() |
Memaintenance Tujuan RFC – Transaksi SM59
•Buat sebuah tujuan RFC baru untuk Tipe koneksi R/3
•Spesifikasikan Host target pada Tab 'Technical settings'.
![]() |
•Sediakan Logon credentials pada tab "Logon/Security".
![]() |
•Simpan pengaturan
•Untuk memferivikasi Pengaturan, Klik pada ''Test connection" atau "Remote logon''
Definisikan Port – Transaksi WE21
•Kita perlu mendefinisikan Port RFC untuk sistem partner.
•Klik pada "Transactional RFC"
•Buat Port Baru.
![]() |
•Isikan sebuh deskripsi
•Spesifikasikan nama target tujuan RFC
![]() |
•Simpan Objek
Memaintenan Model Distribusi – Transaksi BD64
•Klik pada "Change" ![]()
•Buat model view baru ![]()
•Isikan "Short text" dan "Technical name" pada Model View
![]() |
| Cttn : Technical Name sebaiknya namanya sesuai dengan RFC Destinations. Selain itu Technical Name adalah Case Sensitive. |
•Tambahkan Tipe Pesan ![]()
•Spesifikasikan sistem pengirim dan penerima.
•Juga, spesifikasikan tipe pesan yang telah kita buat sebelumnya
![]() |
•Simpan Model Distribusi
Cttn : Setelah Add message type sebaiknya disave dulu, jangan jalankan langkah di bawah ini (Generate/Create Partner Profile) karena akan muncul message "No messages have been defined for the selection conditions in the model".
Buat "Partner Profile" – Transaksi BD82/WE20
•Untuk menghasilkan 'Partner profile' secra otomatis, anda dapat menggunakan BD82 atau BD64 dan gunakan path menu Environment -> Generate partner profiles
oSelain itu, anda dapat menggunakan transaksi WE20 untuk membuat sebuah "partner profile"
![]() |
•Pada "selection screen", spesifikasikan view model, sistem taraget dan Eksekusi
•Hasilnya akan ditampilkan pada layar berikutnya
![]() |
•Untuk memverifikasi "partner profile" masuk ke WE20
•Cek"partner profile" Sistem target
![]() |
View Model Terdistribusi (Distribute Model View) – Transaski BD64
•Seleksi Model View
•Masuk ke path menu Edit -> Model View -> Distribute
•Hasil Log akan ditampilkan pada screen berikutnya.
![]() |
Program untuk menghasilkan 'Outbound IDoc'
Buat program 'executable' ZRZ_ORDER_IDOC di SE38. Dibawah, telah saya diskripsikan logika program :
•Ambil data dari DDic Tabel ZCUSTOMERS, ZSOHEADERS dan ZSOITEMS sebagai kriteria seleksi.
•Isikan Struktur record Kontrol dari tipe EDIDC
oRincikan Tipe Pesan, Tipe IDoc basic, Port tRFC, nomor Partner, dan Tipe Partner Penerima
•Isikan record data
oDefinisikan struktur seperti 'IDoc Segment'
oIsikan struktur dengan data yang telah diambil
oLewati nama segment dan striuktur diatas dengan field yang cocok dari Tipe Struktur EDIDD
oTempatkan struktur EDIDD ke Tabel Internal tipe EDIDD
•Sekarang, panggil "function module" MASTER_IDOC_DISTRIBUTE dan lewati Struktur Record Kontrol IDoc dan tabel record data.
•Sistem bekerja dengan baik jika nilai kembali adalah nol
•Function module memberikan nilai kembali sebuah tabel Tipe EDIDC untuk memberikan detail tentang meggenerate/menghasilkan IDoc
•Tampilkan Log yang sesuai
*&---------------------------------------------------------------------* *& Report ZYZ_ORDER_IDOC * *& * *&---------------------------------------------------------------------* *& * *& * *&---------------------------------------------------------------------*
REPORT zyz_order_idoc .
PARAMETERS : p_logsys TYPE tbdlst-logsys.
DATA : gen_segment1 LIKE edidd-segnam VALUE 'ZYZSEG1', gen_segment2 LIKE edidd-segnam VALUE 'ZYZSEG2', gen_segment3 LIKE edidd-segnam VALUE 'ZYZSEG3'.
DATA : control_dat LIKE edidc, gen_data1 LIKE zcustomers, gen_data2 LIKE zsoheaders, gen_data3 LIKE zsoitems.
TABLES : zcustomers, zsoheaders, zsoitems.
DATA : BEGIN OF intab1 OCCURS 0. INCLUDE STRUCTURE zcustomers. DATA : END OF intab1.
DATA : BEGIN OF intab2 OCCURS 0. INCLUDE STRUCTURE zsoheaders. DATA : END OF intab2.
DATA : BEGIN OF intab3 OCCURS 0. INCLUDE STRUCTURE zsoitems. DATA : netwr LIKE vbap-netwr, zmeng LIKE vbap-zmeng. data : END OF intab3.
DATA : int_edidd LIKE edidd OCCURS 0 WITH HEADER LINE, int_edidc LIKE edidc OCCURS 0 WITH HEADER LINE.
SELECT vbeln kunnr INTO CORRESPONDING FIELDS OF TABLE intab2 FROM vbak WHERE vbeln = '0000005016'. IF sy-subrc NE 0. MESSAGE 'no data' TYPE 'l'. EXIT. ENDIF.
SELECT kunnr name1 ort01 land1 INTO CORRESPONDING FIELDS OF TABLE intab1 FROM kna1 FOR ALL ENTRIES IN intab2 WHERE kunnr = intab2-kunnr. IF sy-subrc NE 0. MESSAGE 'no data' TYPE 'l'. EXIT. ENDIF.
SELECT vbeln posnr matnr netwr zmeng waerk zieme INTO CORRESPONDING FIELDS OF TABLE intab3 FROM vbap FOR ALL ENTRIES IN intab2 WHERE vbeln = intab2-vbeln. IF sy-subrc NE 0. MESSAGE 'no data' TYPE 'l'. EXIT. ENDIF.
LOOP AT intab3. WRITE intab3-netwr TO intab3-netwr_d. WRITE intab3-zmeng TO intab3-zmeng_d. MODIFY intab3. ENDLOOP.
control_dat-mestyp = 'ZYZSO_MT'. control_dat-idoctp = 'ZYZORDER'. control_dat-rcvpor = '810'. control_dat-rcvprt = 'LS'. control_dat-rcvprn = p_logsys.
LOOP AT intab1. MOVE-CORRESPONDING intab1 TO gen_data1. int_edidd-segnam = gen_segment1. int_edidd-sdata = gen_data1. APPEND int_edidd. CLEAR intab1. ENDLOOP.
LOOP AT intab2. MOVE-CORRESPONDING intab2 TO gen_data2. int_edidd-segnam = gen_segment2. int_edidd-sdata = gen_data2. APPEND int_edidd. CLEAR intab2. ENDLOOP.
LOOP AT intab3. gen_data3-vbeln = intab3-vbeln. gen_data3-posnr = intab3-posnr. gen_data3-matnr = intab3-matnr. gen_data3-netwr_d = intab3-netwr_d. gen_data3-zmeng_d = intab3-zmeng_d. gen_data3-waerk = intab3-waerk. gen_data3-zieme = intab3-zieme.
int_edidd-segnam = gen_segment3. int_edidd-sdata = gen_data3. APPEND int_edidd. CLEAR intab3. ENDLOOP.
CALL FUNCTION 'MASTER_IDOC_DISTRIBUTE' EXPORTING master_idoc_control = control_dat * OBJ_TYPE = '' * CHNUM = '' TABLES communication_idoc_control = int_edidc master_idoc_data = int_edidd EXCEPTIONS error_in_idoc_control = 1 error_writing_idoc_status = 2 error_in_idoc_data = 3 sending_logical_system_unknown = 4 OTHERS = 5 . IF sy-subrc <> 0. MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno. ELSE. LOOP AT int_edidc. WRITE :/ 'IDOC GENERATED',int_edidc-docnum. ENDLOOP. COMMIT WORK. ENDIF.
|
4t