Elemen Struktural Segmen EDI
Segmen berisi satu atau beberapa elemen data, dan merupakan unit informasi perantara dalam pesan. Setiap segmen dimulai dengan pengidentifikasi segmen data tiga karakter, dan diakhir dengan terminator segmen (secara default apostrof (')). Elemen data dalam segmen dipisahkan oleh pemisah elemen data. Pemisah elemen data secara default adalah tanda plus (+). Segmen diklasifikasikan sebagai Wajib atau Opsional. Pemisah untuk pertukaran keluar dapat diatur dalam perjanjian antara dua mitra dagang atau sebagai bagian dari perjanjian mitra dagang fallback.
Bersarang
Segmen dapat dikelompokkan dalam hubungan hierarkis yang disebut bersarang. Ada dua jenis bersarang yang berbeda: eksplisit dan implisit. Dalam satu pertukaran, hanya satu jenis bersarang yang dapat digunakan.
Bersarang secara eksplisit menggunakan indikasi eksplisit bahwa perulangan ditumpuk. Ketika nesting eksplisit digunakan, elemen data komponen pertama dalam tag segmen akan menjadi kode segmen. Ini akan diikuti oleh elemen data komponen kondisional yang menunjukkan tingkat dan insiden pengulangan segmen. Jumlah elemen data komponen yang digunakan untuk tujuan ini tergantung pada tingkat hierarkis tempat segmen muncul dalam struktur pesan. Jika segmen muncul pada tingkat satu, elemen data komponen segera mengikuti kode segmen akan digunakan. Jika segmen akan muncul di tingkat dua, elemen data komponen segera mengikuti kode segmen dan elemen data komponen berikutnya akan digunakan. Jika segmen akan muncul di tingkat tiga, tiga elemen data komponen yang mengikuti kode segmen akan digunakan. Alur tidak dapat melakukan verifikasi struktural yang membandingkan data dengan hierarki.
Dalam Penumpukan implisit, urutan segmen yang ditentukan dalam struktur pesan diikuti secara ketat. Hubungan bersarang antara segmen secara implisit terbukti dan tidak ada indikasi lebih lanjut yang diperlukan untuk pemrosesan.
Loop
Satu atau beberapa segmen dapat diulangi sebagai perulangan di dalam set transaksi. Ada dua jenis perulangan yang berbeda: tidak terbatas dan terikat.
Perulangan Tidak Terikat
Perulangan yang tidak terbatas tidak memiliki segmen identifikasi unik untuk menandai awal dan akhir perulangan. Perulangan yang tidak terbatas diulang sesuai dengan hitungan. Jika hitungan tidak memiliki nilai, perulangan akan berulang dua kali. Setiap segmen dalam perulangan hanya dapat terjadi sekali dalam urutan tertentu.
Awal perulangan yang tidak terbatas ditetapkan oleh elemen data pertama yang unik. Elemen pertama dapat muncul sekali dan hanya sekali dalam setiap kemunculan. Perulangan yang tidak terbatas dapat disarangkan dalam perulangan; jika demikian, perulangan tidak terbatas dalam tidak dapat dimulai pada posisi ordinal yang sama dengan perulangan luar mana pun dan tidak dapat dimulai dengan ID segmen yang sama dengan perulangan luar apa pun. Perulangan berlapis tidak dapat berisi segmen yang juga merupakan segmen awal dari perulangan luar apa pun dalam struktur berlapis yang sama.
Perulangan Terikat
Perulangan terikat dimulai dengan LS segmen yang telah ditentukan sebelumnya (Loop Start) dan diakhbungkan dengan LE segmen yang telah ditentukan sebelumnya (Loop End). Opsionalitas segmen LS harus cocok dengan segmen pertama dalam perulangan. Perulangan terikat dapat berisi perulangan terikat lainnya.
Catatan
Perulangan terikat di X12 dan perulangan eksplisit di EDIFACT setara.
Pengikatan digunakan dalam perulangan untuk menyelesaikan ambiguitas. Penentu persyaratan pada segmen LS/LE cocok dengan penentu persyaratan segmen pertama perulangan. Pengikatan melonggarkan pembatasan struktural yang diberlakukan pada penggunaan segmen tertentu yang umumnya berulang. Segmen terikat tidak memiliki batasan sehubungan dengan ID segmen awal. Ini memungkinkan segmen yang sama untuk memulai perulangan terikat dan digunakan di luar perulangan, seperti dalam contoh berikut:
AA
LS
BB
CC
LE
BB
Perulangan subordinat (perulangan dalam perulangan) diizinkan. Jika perulangan terikat ditumpuk dalam perulangan, perulangan dalam tidak dapat dimulai pada posisi ordinal yang sama dengan perulangan luar apa pun. Perulangan terikat dalam harus berakhir sebelum perulangan luar langsung.
Setiap perulangan terikat dalam set transaksi harus memiliki nilai loop_id> yang ditentukan <secara unik dari satu hingga empat huruf besar atau digit numerik. Disarankan agar segmen LS dan LE yang sesuai berisi nilai loop_id> unik <yang sama. Elemen <data loop_id> akan diproses sebagai elemen data "reguler" dan divalidasi untuk jenis data, panjang min/maks, opsionalitas, dll. Validasi lintas segmen (di seluruh LS dan LE) tidak akan dilakukan. BizTalk Server akan memverifikasi resolusi ambiguitas melalui kehadiran segmen LS dan LE dan tidak ada yang lain. Dalam kasus pelanggaran aturan elemen data, kumpulan transaksi diterima dengan kesalahan, dan BizTalk Server mengembalikan AK501=E dan penilaian yang sesuai di AK2/AK3 di ACK.
Diperlukan juga bahwa pemasangan segmen LS/LE diberlakukan. Jika terjadi ketidakcocokan, set transaksi ditolak karena masalah resolusi ambiguitas yang melekat, dan AK501 = E dan AK502 = 5 dikembalikan dalam Pemantau Peristiwa dan ACK 997. Ketika salah satu atau kedua segmen LS/LE hilang, tetapi set transaksi tidak ambigu, set transaksi akan diterima dengan kesalahan, dan AK501=E dan AK502 = 5 dikembalikan.
Pasangan LS/LE dapat bersifat opsional atau wajib. Namun, kecuali pasangan terkandung dalam perulangan induk yang dapat diulang, pasangan tidak pernah dapat diulang. Dalam kedua kasus, kedua MaxOccurs untuk pasangan LS/LE bisa 1, tetapi tidak lebih besar dari 1.Ini diberlakukan dalam validasi skema.
EDI Disassembler dan EDI Assembler menangani segmen LS dan LE. Selama penguraian, Pembongkar membuat simpul XML untuk segmen LS dan LE, dan memvalidasi segmen. Selama serialisasi, Assembler membuat segmen LS dan LE dari simpul XML, dan memvalidasinya. Jika segmen LS atau LE yang diharapkan hilang, set transaksi ditangguhkan/ditolak dengan AK501 = E dan AK502 = 5. Jika segmen LS/LE ada tanpa elemen data yang sesuai, dan validasi EDI diaktifkan, kumpulan transaksi diterima dengan kesalahan dan AK501 = E dan AK502 = 5 dilaporkan dalam Pemantau Peristiwa dan ACK 997.