다음을 통해 공유


EDI 세그먼트 구조 요소

세그먼트는 메시지에 있는 정보의 중간 단위로 하나 이상의 데이터 요소를 포함합니다. 각 세그먼트는 3자의 데이터 세그먼트 식별자로 시작되며 세그먼트 마침 표시(기본적으로 아포스트로피('))로 끝납니다. 세그먼트 안에 있는 데이터 요소는 데이터 요소 구분 기호로 구분됩니다. 데이터 요소 구분 기호는 기본적으로 더하기 기호(+)입니다. 세그먼트는 필수 또는 옵션으로 분류됩니다. 나가는 교환에 대한 구분 기호는 두 거래 업체 간 규약에서 설정하거나 대체 거래 업체 규약의 일부로 설정할 수 있습니다.

중첩

세그먼트는 중첩이라는 계층적 관계에서 그룹화될 수 있습니다. 중첩에는 명시적 및 암시적 두 가지 유형이 있습니다. 한 가지 교환에는 한 가지 유형의 중첩만 사용할 수 있습니다.

  • 명시적 중첩에서는 반복이 중첩되었다는 명시적 표시를 사용합니다. 명시적 중첩이 사용된 경우 세그먼트 태그에 있는 첫 번째 구성 요소 데이터 요소가 세그먼트 코드가 됩니다. 그 뒤에는 세그먼트 반복에 대한 수준 및 발생을 모두 나타내는 조건부 구성 요소 데이터 요소가 나옵니다. 이러한 용도로 사용되는 구성 요소 데이터 요소의 수는 메시지 구조에 세그먼트가 나타나는 계층 구조로 된 수준에 따라 달라집니다. 세그먼트가 수준 1에 나타나는 경우 세그먼트 코드 바로 다음에 오는 구성 요소 데이터 요소가 사용됩니다. 세그먼트가 수준 2에 나타나는 경우 세그먼트 코드 바로 다음에 오는 구성 요소 데이터 요소와 다음 구성 요소 데이터 요소가 모두 사용됩니다. 세그먼트가 수준 3에 나타나는 경우 세그먼트 코드 다음에 오는 세 개의 구성 요소 데이터 요소가 사용됩니다. 파이프라인에서는 데이터를 계층 구조에 대해 비교하는 구조 유효성 검사를 수행할 수 없습니다.

  • 암시적 중첩에서는 메시지 구조에 지정된 세그먼트 순서를 엄격하게 따릅니다. 세그먼트 간의 중첩 관계는 암시적으로 분명하며 처리를 위한 추가 표시가 필요하지 않습니다.

루프

하나 이상의 세그먼트가 트랜잭션 집합 내에서 루프 로 반복할 수 있습니다. 루프에는 바인딩되지 않은 루프와 바인딩된 두 가지 유형이 있습니다.

unbounded 반복

unbounded 반복에는 반복의 시작과 끝을 표시하는 고유하게 식별하는 세그먼트가 없습니다. unbounded 반복은 횟수에 따라 반복됩니다. 횟수에 값이 없는 경우 반복은 두 번 반복됩니다. 반복에 있는 각 세그먼트는 지정된 순서에 따라 한 번만 나타날 수 있습니다.

unbounded 반복의 시작은 고유한 첫 번째 데이터 요소에 의해 설정됩니다. 첫 번째 요소는 한 번, 각 항목당 한 번만 나타날 수 있습니다. unbounded 반복은 반복 내에서 중첩될 수 있습니다. 따라서 내부 unbounded 반복은 외부 반복과 같은 서수 위치에서 시작할 수 없으며 외부 반복과 동일한 세그먼트 ID로 시작할 수 없습니다. 중첩된 반복은 동일한 중첩 구조에서 외부 반복의 시작 세그먼트이기도 한 세그먼트를 포함할 수 없습니다.

bounded 반복

bounded 반복은 미리 정의된 세그먼트 LS(Loop Start)로 시작되며 미리 정의된 세그먼트 LE(Loop End)로 끝납니다. LS 세그먼트의 옵션은 반복에 있는 첫 번째 세그먼트의 옵션과 일치해야 합니다. bounded 반복은 다른 bounded 반복을 포함할 수 있습니다.

참고

X12의 bounded 반복과 EDIFACT의 명시적 반복은 동등합니다.

모호성을 확인하기 위해 반복에 바인딩을 사용합니다. LS/LE 세그먼트에서 요구 사항 지정자는 반복의 첫 번째 세그먼트 요구 사항 지정자와 일치합니다. 바인딩은 일반적으로 반복되는 특정 세그먼트 사용에 설정되는 구조 제한 사항을 완화합니다. 제한된 세그먼트에는 시작 세그먼트 ID에 대한 제한이 없습니다. 이렇게 하면 다음 예제와 같이 동일한 세그먼트가 바인딩된 루프를 시작하고 루프 외부에서 사용할 수 있습니다.

AA  
LS  
BB  
CC  
LE  
BB  

하위 반복(반복에 포함된 반복)이 허용됩니다. bounded 반복이 반복 내에서 중첩되는 경우 내부 반복을 외부 반복과 같은 서수 위치에서 시작할 수 없습니다. 내부 bounded 반복을 인접한 외부 반복 이전에 종료해야 합니다.

트랜잭션 집합 내의 각 바인딩된 루프에는 1~4개의 대문자 또는 숫자 숫자의 고유하게 정의된 <loop_id> 값이 있어야 합니다. 해당 LS 및 LE 세그먼트에는 동일한 고유한 <loop_id> 값이 포함되어 있는 것이 좋습니다. <loop_id> 데이터 요소는 "일반" 데이터 요소로 처리되고 데이터 형식, 최소/최대 길이, 선택성 등에 대해 유효성이 검사됩니다. 세그먼트 간 유효성 검사(LS 및 LE에서)는 수행되지 않습니다. BizTalk Server LS 및 LE 세그먼트의 존재와 다른 것을 통해 모호성 확인을 확인합니다. 데이터-요소 규칙을 위반하는 경우 트랜잭션 집합이 수락되었으나 오류가 발생하고 BizTalk Server에서 AK501=E 및 ACK의 AK2/AK3에서 적절한 평가를 반환합니다.

또한 LS/LE 세그먼트의 쌍이 강제로 적용됩니다. 일치하지 않는 경우 고유한 모호성 확인 문제로 인해 트랜잭션 집합이 거부되고 997 ACK의 이벤트 뷰어에 AK501 = E 및 AK502 = 5가 반환됩니다. LS/LE 세그먼트 중 하나 또는 둘 다 누락되었지만 트랜잭션 집합이 모호하지 않으면 트랜잭션 집합이 오류로 수락되고 AK501=E 및 AK502 = 5가 반환됩니다.

LS/LE 쌍은 옵션 또는 필수일 수 있습니다. 그러나 반복되는 상위 반복에 쌍이 포함되지 않은 경우 쌍은 반복되지 않습니다. 어느 경우에든 LS/LE 쌍에 대해 모두 MaxOccurs를 1로 설정할 수 있으나 1보다 클 수는 없습니다. 이 내용은 스키마 유효성 검사에 강제 적용됩니다.

EDI 디스어셈블러 및 EDI 어셈블러가 LS 및 LE 세그먼트를 처리합니다. 구문을 분석하는 동안 디스어셈블러는 LS 및 LE 세그먼트에 대해 XML 노드를 만들고 세그먼트의 유효성을 검사합니다. serialize하는 동안 어셈블러는 XML 노드에서 LS 및 LE 세그먼트를 만들고 유효성을 검사합니다. 예상된 LS 또는 LE 세그먼트가 누락된 경우 트랜잭션 집합은 AK501 = E 및 AK502 = 5를 사용하여 일시 중단/거부됩니다. LS/LE 세그먼트가 해당 데이터 요소 없이 있고 EDI 유효성 검사를 사용하도록 설정하면 트랜잭션 집합이 오류로 수락되고 AK501 = E 및 AK502 = 5가 이벤트 뷰어 및 997 ACK에 보고됩니다.