Views 249
Visitors 132

Pengaturan Inbound

Home 
| Top Page | Threads |
Previous  Next

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

SE37-1

SE37-2

SE37-3

Kode Sintak

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)

SM59-3

       SM59-4

Definisikan Port Transaksi WE21 (Silahkan mengacu pada Pengaturan Outbound)

       WE21-3

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

               WE57-1

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

               BD51-1

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

WE42-1

oPada Screen berikutnya, seleksi "function module" anda dari daftar
oSimpan perubahan

               WE42-2

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

WE42-3

Membuat Profile Partner Transaksi BD82/WE20 (Silahkan mengacu pada Pengaturan Outbound)
oKlik WE20-2 pada Parameter Inbound
oRincikan Tipe Pesan  ZYZSO_MT
oRincikan kode proses ZPCRZ2
oSimpan perubahan

               WE20-3

User Threads | New Thread ( Only for Donators )

Threads Last Post Replies Views