|
<< Click to Display Table of Contents >> Navigation: All About ABAP Technique > Indonesia > Costumized IDOC > Pengaturan Inbound |
Kode Sintak dan Pengaturan di Client Penerima.
Function Module Pengirim "Inbound IDoc"
Di sistem penerima, buat sebuah function module Z_IDOC_INPUT_ZYZSO_MT menggunakan SE37. Dibawah telah dideskripsikan logika yang sama.
Tambahkan Include MBDCONWF. Include ini mengandung konstanta "predefined ALE". Buat loop pada tabel EDIDC.
•Cek apabila tipe pesan adalah ZRZORDER. Dengan kata lain menimbulkan eksepsi WRONG_FUNCTION_CALLED
•lakukan proses looping pada tabel EDIDD
oTempatkan data dari segments ke tabel internal yang cocok
oSebagai Contoh : Tempatkan data dari segment ZRZSEG1 ke tabel internal ZCUSTOMERS
•Lakukan Update tabel DDic dari tabel internal
•Tergantung dari hasil update, isikan record status IDoc (type BDIDOCSTAT) dan tempatkan pada tabel yang bersangkutan.
oStatus 53 => Success
oStatus 51 => Error



FUNCTION z_idoc_input_zyzso_mt. *"---------------------------------------------------------------------- *"*"Local interface: *" IMPORTING *" VALUE(INPUT_METHOD) LIKE BDWFAP_PAR-INPUTMETHD *" VALUE(MASS_PROCESSING) LIKE BDWFAP_PAR-MASS_PROC *" VALUE(NO_APPLICATION_LOG) LIKE SY-DATAR OPTIONAL *" VALUE(MASSAVEINFOS) LIKE MASSSAVINF STRUCTURE MASSSAVINF *" OPTIONAL *" EXPORTING *" VALUE(WORKFLOW_RESULT) LIKE BDWF_PARAM-RESULT *" VALUE(APPLICATION_VARIABLE) LIKE BDWF_PARAM-APPL_VAR *" VALUE(IN_UPDATE_TASK) LIKE BDWFAP_PAR-UPDATETASK *" VALUE(CALL_TRANSACTION_DONE) LIKE BDWFAP_PAR-CALLTRANS *" TABLES *" IDOC_CONTRL STRUCTURE EDIDC *" IDOC_DATA STRUCTURE EDIDD *" IDOC_STATUS STRUCTURE BDIDOCSTAT *" RETURN_VARIABLES STRUCTURE BDWFRETVAR *" SERIALIZATION_INFO STRUCTURE BDI_SER *"----------------------------------------------------------------------
INCLUDE mbdconwf. DATA : it_emp_data1 LIKE zcustomers OCCURS 0 WITH HEADER LINE, it_emp_data2 LIKE zsoheaders OCCURS 0 WITH HEADER LINE, it_emp_data3 LIKE zsoitems OCCURS 0 WITH HEADER LINE.
DATA : gen_data1 LIKE zcustomers, gen_data2 LIKE zsoheaders, gen_data3 LIKE zsoitems.
workflow_result = c_wf_result_ok.
DATA : counter TYPE int4.
* SELECT COUNT( * ) FROM zsach1 INTO counter. * counter = counter + 1.
LOOP AT idoc_contrl. IF idoc_contrl-mestyp NE 'ZYZSO_MT'. * RAISE wrong_function_called. ENDIF.
CLEAR gen_data1. CLEAR gen_data2. CLEAR gen_data3.
REFRESH it_emp_data1. REFRESH it_emp_data2. REFRESH it_emp_data3.
LOOP AT idoc_data WHERE docnum EQ idoc_contrl-docnum. IF idoc_data-segnam = 'ZYZSEG1'. CLEAR it_emp_data1. gen_data1 = idoc_data-sdata.
MOVE-CORRESPONDING gen_data1 TO it_emp_data1. APPEND it_emp_data1.
ELSEIF idoc_data-segnam = 'ZYZSEG2'. CLEAR it_emp_data2. gen_data2 = idoc_data-sdata.
MOVE-CORRESPONDING gen_data2 TO it_emp_data2. APPEND it_emp_data2.
ELSEIF idoc_data-segnam = 'ZYZSEG3'. CLEAR it_emp_data3. gen_data3 = idoc_data-sdata.
MOVE-CORRESPONDING gen_data3 TO it_emp_data3. APPEND it_emp_data3.
ELSE. MESSAGE 'ERROR' TYPE 'I'. ENDIF. ENDLOOP. ENDLOOP.
INSERT zcustomers FROM TABLE it_emp_data1. INSERT zsoheaders FROM TABLE it_emp_data2. INSERT zsoitems FROM TABLE it_emp_data3. *****
CALL FUNCTION 'EDI_DOCUMENT_OPEN_FOR_EDIT' EXPORTING document_number = idoc_data-docnum IMPORTING idoc_control = idoc_contrl TABLES idoc_data = idoc_data EXCEPTIONS document_foreign_lock = 1 document_not_exist = 2 document_not_open = 3 status_is_unable_for_changing = 4 OTHERS = 5.
CALL FUNCTION 'EDI_CHANGE_DATA_SEGMENTS' TABLES idoc_changed_data_range = idoc_data EXCEPTIONS idoc_not_open = 1 data_record_not_exist = 2 OTHERS = 3.
DATA t_itab_edids40 LIKE edi_ds40 OCCURS 0 WITH HEADER LINE. CLEAR t_itab_edids40.
t_itab_edids40-docnum = idoc_data-docnum. t_itab_edids40-status = '51'. t_itab_edids40-repid = sy-repid. t_itab_edids40-tabnam = 'EDI_DS'. t_itab_edids40-mandt = sy-mandt. t_itab_edids40-stamqu = 'SAP'. t_itab_edids40-stamid = 'B1'. t_itab_edids40-stamno = '999'. t_itab_edids40-stapa1 = 'Sold to changed to '. *t_itab_edids40-stapa2 = t_new_kunnr. t_itab_edids40-logdat = sy-datum. t_itab_edids40-logtim = sy-uzeit. APPEND t_itab_edids40.
CALL FUNCTION 'EDI_DOCUMENT_CLOSE_EDIT' EXPORTING document_number = idoc_data-docnum do_commit = 'X' do_update = 'X' write_all_status = 'X' TABLES status_records = t_itab_edids40 EXCEPTIONS idoc_not_open = 1 db_error = 2 OTHERS = 3.
ENDFUNCTION.
|
Pengaturan Inbound
•Definisikan Sistem Logika – Transaksi SALE (Silahkan mengacu pada Pengaturan Outbound). Wajib dilakukan jika SAP R/3 Penerima memiliki IP berbeda
•Tempatkan Client di Sistem Logika – Transaksi SALE (Silahkan mengacu pada Pengaturan Outbound). Wajib dilakukan jika SAP R/3 Penerima memiliki IP berbeda
•Lakukan Maintain pada Tujuan RFC – Transaksi SM59 (Silahkan mengacu pada Pengaturan Outbound)

![]() |
•Definisikan Port – Transaksi WE21 (Silahkan mengacu pada Pengaturan Outbound)
![]() |
•Tempatkan "Function Module" ke "Logical message" – Transaksi WE57
oBuat entri baru
oRincikan nama "Function Module" sebagai Z_IDOC_INPUT_ZYZSO_MT
oJuga, rincikan Tipe seabagi F, Tipe Basic IDoc sebagai ZYZORDER, Tipe Pesan sebagai ZYZSO_MT dan "Direction" sebagai 2 (Inbound)
oSimpan Entri
![]() |
•Definisikan Metode Input untuk Function Module Inbound – Transaksi BD51
oBuat entri baru
oIsikan "Function Module name" dengan Z_IDOC_INPUT_ZYZSO_MT
oRincikan metode input sebagai 2
oSimpan Entri
| |
•Buat Kode Proses – Transaksi WE42
oBuat Proses kode baru ZPCRZ2
oSeleksi Proses dengan "ALE Service"
oPilih Tipe Proses sebagai suatu proses oleh "function module"
oSimpan Entri

oPada Screen berikutnya, seleksi "function module" anda dari daftar
oSimpan perubahan
![]() |
oSekarang anda akan dibawa pada screen berikutnya
oKlik Ganda pada Pesan Logika
oIn the Assignment to logical message, specify the message type ZYZSO_MT
oSimpan perubahan

•Membuat Profile Partner – Transaksi BD82/WE20 (Silahkan mengacu pada Pengaturan Outbound)
oKlik
pada Parameter Inbound
oRincikan Tipe Pesan ZYZSO_MT
oRincikan kode proses ZPCRZ2
oSimpan perubahan
![]() |