Azure Logic Apps에서 일반적인 SAP 통합 시나리오에 대한 워크플로 만들기
적용 대상: Azure Logic Apps(사용량 + 표준)
이 방법 가이드에서는 Azure Logic Apps 및 SAP 커넥터를 사용하여 몇 가지 일반적인 SAP 통합 시나리오에 대한 예제 논리 앱 워크플로를 만드는 방법을 보여 줍니다.
표준 및 사용량 논리 앱 워크플로는 모두 다중 테넌트 Azure에서 호스트되고 실행되는 SAP 관리형 커넥터를 제공합니다. 표준 워크플로는 단일 테넌트 Azure Logic Apps에서 호스트되고 실행되는 SAP 기본 제공 서비스 공급자 커넥터도 제공합니다. 자세한 내용은 커넥터 기술 참조를 참고하세요.
필수 조건
- 시작하기 전에 특정 시나리오에 대한 SAP 커넥터 요구 사항을 검토하고 충족합니다.
솔루션을 테스트하기 위해 HTTP 요청을 보낼 수 있는 도구를 설치하거나 사용합니다. 예를 들면 다음과 같습니다.
- Visual Studio Marketplace의 확장이 포함된 Visual Studio Code
- PowerShell Invoke-RestMethod
- Microsoft Edge - 네트워크 콘솔 도구
- Bruno
- curl
주의
자격 증명, 비밀, 액세스 토큰, API 키 및 기타 유사한 정보와 같은 중요한 데이터가 있는 시나리오의 경우 필요한 보안 기능으로 데이터를 보호하고, 오프라인 또는 로컬로 작동하며, 데이터를 클라우드에 동기화하지 않고, 온라인 계정에 로그인할 필요가 없는 도구를 사용해야 합니다. 이렇게 하면 중요한 데이터가 대중에게 노출되는 위험을 줄일 수 있습니다.
SAP에서 메시지 받기
다음 논리 앱 워크플로 예는 워크플로의 SAP 트리거가 SAP 서버로부터 메시지를 받을 때 트리거됩니다.
SAP 트리거 추가
다중 테넌트 Azure Logic Apps에 사용량 워크플로가 있는지 또는 단일 테넌트 Azure Logic Apps에 표준 워크플로가 있는지 여부에 따라 해당하는 단계를 따릅니다.
Azure Portal의 디자이너에서 사용량 논리 앱과 빈 워크플로를 엽니다.
메시지가 표시되면 온-프레미스 SAP 서버에 대해 다음 연결 정보를 제공합니다. 완료되면 만들기를 선택합니다. 또는 다음 단계를 계속하여 SAP 트리거를 설정합니다.
매개 변수 필수 설명 연결 이름 예 연결 이름을 입력합니다. 데이터 게이트웨이 예 1. 구독에서 데이터 게이트웨이를 설치하기 위해 Azure Portal에서 만든 데이터 게이트웨이 리소스의 Azure 구독을 선택합니다.
2. 연결 게이트웨이에서 Azure의 데이터 게이트웨이 리소스를 선택합니다.클라이언트 예 SAP 서버에 연결하는 데 사용할 SAP 클라이언트 ID 인증 유형 예 연결에 사용할 인증 유형으로, 기본(사용자 이름 및 암호)이어야 합니다. SNC 연결을 만들려면 SNC(보안 네트워크 통신) 사용을 참조하세요. SAP 사용자 이름 예 SAP 서버의 사용자 이름 SAP 암호 예 SAP 서버의 암호 로그온 형식 예 애플리케이션 서버 또는 그룹(메시지 서버)을 선택한 다음 선택 사항으로 표시되더라도 해당 필수 매개 변수를 구성합니다.
애플리케이션 서버:
- AS 호스트: SAP 애플리케이션 서버의 호스트 이름
- AS 서비스: SAP 애플리케이션 서버의 서비스 이름 또는 포트 번호
- AS 시스템 번호: SAP 서버의 시스템 번호(00~99 범위)
그룹:
- MS 서버 호스트: SAP 메시지 서버의 호스트 이름
- MS 서비스 이름 또는 포트 번호: SAP 메시지 서버의 서비스 이름 또는 포트 번호
- MS 시스템 ID: SAP 서버의 시스템 ID
- MS 로그온 그룹: SAP 서버의 로그온 그룹. SAP 서버에서 CCMS: 로그온 그룹 유지(T-Code SMLG) 대화 상자를 열어 로그온 그룹 값을 찾거나 편집할 수 있습니다. 자세한 내용은 SAP Note 26317 - 자동 부하 분산을 위한 로그온 그룹 설정을 검토하세요.안전한 형식 지정 아니요 이 옵션은 이전 버전과의 호환성을 위해 제공되며 문자열 길이만 확인합니다. 기본적으로 강력한 형식 지정은 스키마에 대해 XML 유효성 검사를 수행하여 잘못된 값을 확인하는 데 사용됩니다. 이 동작은 이전에 발생한 문제를 검색하는 데 도움이 될 수 있습니다. 안전한 형식 지정 설정에 대해 자세히 알아봅니다. SNC 사용 아니요 SNC 연결을 만들려면 SNC(보안 네트워크 통신) 사용을 참조하세요.
SNC에 대한 자세한 내용은 RFC 통합을 위한 SAP SNC 시작 - SAP 블로그를 참조하세요.
선택적으로 사용 가능한 다른 연결 매개 변수는 기본 연결 정보를 참조하세요.
Azure Logic Apps가 연결을 설정하고 테스트하면 트리거 정보 상자가 나타납니다. 발생할 수 있는 연결 문제에 대한 자세한 내용은 연결 문제 해결을 참조하세요.
SAP 서버 구성 및 시나리오에 따라 메시지가 수신될 때 트리거에 필요한 매개 변수 값을 제공하고 시나리오에서 사용하려는 다른 사용 가능한 트리거 매개 변수를 추가합니다.
참고 항목
이 SAP 트리거는 폴링 트리거가 아닌 웹후크 기반 트리거이며 폴링 일정을 지정하는 옵션은 없습니다. 예를 들어 온-프레미스 데이터 게이트웨이에서 관리되는 SAP 커넥터를 사용하는 경우 메시지가 도착하는 경우에만 데이터 게이트웨이에서 트리거가 호출되므로 폴링이 필요하지 않습니다.
매개 변수 필수 설명 GatewayHost 예 SAP RFC 서버 등록 게이트웨이 호스트 GatewayService 예 SAP RFC 서버 등록 게이트웨이 서비스 ProgramId 예 SAP RFC 서버 등록 게이트웨이 프로그램 ID입니다.
참고: 이 값은 대/소문자를 구분합니다. 논리 앱 워크플로와 SAP 서버를 구성할 때 프로그램 ID 값에 동일한 대/소문자 형식을 일관되게 사용해야 합니다. 그렇지 않으면 SAP에 IDoc를 보내려고 할 때 tRFC 모니터(T-Code SM58)에 다음 오류가 표시될 수 있습니다(링크에는 SAP 로그인 필요).
- 함수 IDOC_INBOUND_ASYNCHRONOUS 찾을 수 없음(2399329)
- ABAP RFC가 아닌 클라이언트(파트너 유형)는 지원되지 않음(353597)DegreeOfParallelism 아니요 병렬로 처리할 호출 수입니다. 이 매개 변수를 추가하고 값을 변경하려면 새 매개 변수 추가 목록에서 DegreeOfParallelism을 선택하고 새 값을 입력합니다. SapActions 아니요 SAP 작업 목록을 기반으로 SAP 서버에서 수신하는 메시지를 필터링합니다. 이 매개 변수를 추가하려면 새 매개 변수 추가 목록에서 SapActions를 선택합니다. 새 SapActions 섹션에서 SapActions - 1 매개 변수의 경우 파일 선택기를 사용하여 SAP 작업을 선택하거나 작업을 수동으로 지정합니다. SAP 작업에 대한 자세한 내용은 IDoc 작업에 대한 메시지 스키마를 참조하세요. IDoc 형식 아니요 IDoc를 수신하는 데 사용할 형식입니다. 이 매개 변수를 추가하려면 새 매개 변수 추가 목록에서 IDoc 형식을 선택합니다.
- IDoc를 SAP 일반 XML로 받으려면 IDoc 형식 목록에서 SapPlainXml을 선택합니다.
- IDoc를 플랫 파일로 받으려면 IDoc 형식 목록에서 FlatFile을 선택합니다.
- 참고: 워크플로에서 플랫 파일 디코딩 작업도 사용하는 경우 플랫 파일 스키마에서 early_terminate_optional_fields 속성을 사용하고 값을 true로 설정해야 합니다. 이 요구 사항은IDOC_INBOUND_ASYNCHRONOUS
라는 이름의 tRFC 호출에서 SAP가 보낸 플랫 파일 IDoc 데이터 레코드가 전체 SDATA 필드 길이로 채워지지 않기 때문에 필요합니다. Azure Logic Apps는 SAP에서 받은 대로 패딩 없이 플랫 파일 IDoc 원본 데이터를 제공합니다. 또한 이 SAP 트리거를 플랫 파일 디코딩 작업과 결합할 때 작업에 제공된 스키마가 일치해야 합니다.릴리스되지 않은 세그먼트가 있는 IDOC 받기 아니요 릴리스되지 않은 세그먼트 유무에 관계없이 IDoc를 받습니다. 이 매개 변수를 추가하고 값을 변경하려면 새 매개 변수 추가 목록에서 릴리스되지 않은 세그먼트가 있는 IDOC 받기를 선택하고 예 또는 아니요를 선택합니다. SncPartnerNames 아니요 SAP 클라이언트 라이브러리 수준에서 트리거를 호출할 수 있는 권한이 있는 SNC 파트너 목록입니다. 목록에 있는 파트너만 SAP 서버의 SNC 연결을 통해 권한을 부여받습니다. 이 매개 변수를 추가하려면 새 매개 변수 추가 목록에서 SncPartnerNames를 선택합니다. 각 이름을 세로 막대(|)로 구분하여 입력해야 합니다. 다음 예제에서는 사용량 워크플로에서 기본적으로 구성된 SAP 관리형 트리거를 보여 줍니다.
다음 예제에서는 SAP 작업을 선택하여 메시지를 필터링할 수 있는 SAP 관리형 트리거를 보여 줍니다.
또는 작업을 수동으로 지정하여 다음을 수행합니다.
다음은 두 개 이상의 메시지를 수신하도록 트리거를 설정할 때 작업이 어떻게 나타나는지 보여주는 예제입니다.
SAP 서버에서 메시지 수신을 시작할 수 있도록 워크플로를 저장합니다. 디자이너 도구 모음에서 저장을 선택합니다.
이제 워크플로가 SAP 서버에서 메시지를 받을 준비가 되었습니다.
트리거가 실행되고 워크플로를 실행한 후 워크플로의 트리거 기록을 검토하여 트리거 등록이 성공했는지 확인합니다.
SAP에서 IDoc 패킷 수신
IDoc 일괄 처리 또는 그룹인 IDoc 패킷을 수신하기 위해 SAP 트리거 추가 구성이 필요하지 않습니다. 그러나 트리거가 패킷을 수신한 후 IDoc 패킷의 각 항목을 처리하려면 몇 가지 추가 단계를 실행하여 IDoc를 패킷으로 보내도록 SAP를 설정하여 패킷을 개별 IDoc로 분할해야 합니다.
다음 예제 워크플로에서는 xpath()
함수를 사용하여 패킷에서 개별 IDoc를 추출하는 방법을 보여 줍니다.
시작하려면 SAP 트리거를 사용하는 사용량 또는 표준 논리 앱 워크플로가 필요합니다. 워크플로가 이 트리거로 아직 시작되지 않은 경우 이 가이드의 이전 단계에 따라 워크플로에 메시지를 받을 수 있는 SAP 트리거를 추가합니다.
SAP 요청 상태를 사용하여 SAP 서버에 즉시 회신하려면 SAP 관리형 트리거를 사용하는지 아니면 SAP 기본 제공 트리거를 사용하는지에 따라 다음 응답 작업을 추가합니다.
SAP 관리형 트리거: 이 트리거의 경우 워크플로에 응답 작업을 추가합니다.
응답 작업에서 다음 상태 코드(
statusCode
) 중 하나를 사용합니다.상태 코드 설명 202 수락됨 처리를 위해 요청이 수락되었지만 처리가 아직 완료되지 않았습니다. 204 콘텐츠 없음 서버에서 요청을 성공적으로 수행했으며 응답 페이로드 본문에 보낼 추가 콘텐츠가 없습니다. 200 OK 서버에서 길이가 0인 페이로드 본문을 생성하는 경우에도 이 상태 코드는 항상 페이로드를 포함합니다. SAP 기본 제공 트리거: 이 트리거의 경우 SAP 서버 작업에 응답 작업을 워크플로에 추가합니다.
참고 항목
SAP 서버와의 통신 채널을 해제하도록 트리거 바로 뒤에 이 응답 작업을 추가하는 것이 가장 좋습니다.
워크플로가 SAP에서 수신하는 XML IDoc의 루트 네임스페이스를 가져옵니다.
XML 문서에서 이 네임스페이스를 추출하고 네임스페이스를 로컬 문자열 변수에 저장하려면 변수 초기화 작업을 추가합니다.
작업의 제목을 받은 IDoc의 루트 노드에 대한 네임스페이스 가져오기로 바꿉니다.
변수의 이름을 입력하고 형식을 문자열로 설정합니다.
작업의 값 매개 변수에서 편집 상자를 선택하여 식 또는 함수 편집기를 열고
xpath()
함수를 사용하여 다음 식을 만듭니다.xpath(xml(triggerBody()?['Content']), 'namespace-uri(/*)')
사용량 워크플로
표준 워크플로
완료되면 식이 확인되고 이제 다음 형식으로 표시됩니다.
로컬 배열 변수에 IDoc 컬렉션을 저장하여 개별 IDoc를 추출하려면 다음 단계를 수행합니다.
변수 초기화 작업을 추가합니다.
작업의 제목을 IDoc 데이터 요소를 사용하여 배열 가져오기로 바꿉니다.
변수의 이름을 입력하고 형식을 배열로 설정합니다.
배열 변수를 사용하면 컬렉션을 열거하여 워크플로에 제공되는 각 IDoc에서 개별적으로 처리할 수 있습니다.
작업의 값 매개 변수에서 편집 상자를 선택하여 식 또는 함수 편집기를 열고 다음
xpath()
식을 만듭니다.xpath(xml(triggerBody()?['Content']), '/*[local-name()="Receive"]/*[local-name()="idocData"]')
완료되면 식이 확인되고 이제 다음 형식으로 표시됩니다.
사용량 워크플로
이 예제에서 다음 워크플로는 For each라는 컨트롤 작업과 파일 만들기라는 SFTP-SSH 작업을 사용하여 각 IDoc를 SFTP 서버로 전송합니다. 각 IDoc는 루트 네임스페이스를 포함해야 합니다. 이러한 이유로 IDoc를 다운스트림 앱 또는 이 예제처럼 SFTP 서버로 보내기 전에 파일 콘텐츠를 루트 네임스페이스와 함께
<Receive></Receive>
요소 내에 래핑하는 것입니다.참고 항목
사용량 워크플로의 경우 이 패턴은 사용량 논리 앱 리소스와 빈 워크플로를 만들 때 템플릿 갤러리에서 선택할 수 있는 빠른 시작 템플릿으로 사용할 수 있습니다. 또는 워크플로 디자이너가 열려 있는 경우 디자이너 도구 모음에서 템플릿을 선택합니다.
표준 워크플로
이 예제에서 다음 워크플로는 For each라는 컨트롤 작업과 파일 만들기라는 SFTP-SSH 작업을 사용하여 각 IDoc를 SFTP 서버로 전송합니다. 각 IDoc는 루트 네임스페이스를 포함해야 합니다. 이러한 이유로 IDoc를 다운스트림 앱 또는 이 예제처럼 SFTP 서버로 보내기 전에 파일 콘텐츠를 루트 네임스페이스와 함께
<Receive></Receive>
요소 내에 래핑하는 것입니다.
SAP 작업을 사용하여 받은 메시지 필터링
SAP 관리형 커넥터를 사용하는 경우, 워크플로의 트리거 아래에서 받은 XML 페이로드의 루트 노드 네임스페이스를 기준으로 SAP 서버에서 원치 않는 작업을 명시적으로 필터링하여 제외하는 방법을 설정합니다. 하나 이상의 SAP 작업을 사용하여 목록(배열)을 제공할 수 있습니다. 기본적으로 이 배열은 비어 있습니다. 즉, 워크플로가 필터링 없이 SAP 서버의 모든 메시지를 수신합니다. 배열 필터를 설정하면 트리거는 지정된 SAP 작업 유형의 메시지만 수신하고 SAP 서버에서 보내는 그 외의 모든 메시지를 거부합니다. 그러나 이 필터는 수신한 페이로드의 형식 지정이 강한지 아니면 약한지에는 영향을 주지 않습니다. SAP 작업 필터링은 온-프레미스 데이터 게이트웨이의 SAP 어댑터 수준에서 발생합니다. 자세한 내용은 SAP에서 Azure Logic Apps로 IDoc 전송을 테스트하는 방법을 참조하세요.
트리거에 대한 비동기 요청-회신 패턴 설정
SAP 관리 커넥터는 Azure Logic Apps 트리거에 Azure의 비동기 요청-회신 패턴을 지원합니다. 이 패턴을 사용하여 성공적인 요청을 만들 수 있으며, 사용하지 않으면 기본 동기 요청-회신 패턴으로 인해 요청이 실패합니다.
참고 항목
워크플로의 응답 작업이 여러 개 있는 경우 모든 응답 작업에서 동일한 요청-회신 패턴을 사용해야 합니다. 예를 들어 여러 응답 작업을 사용할 수 있는 스위치 컨트롤을 워크플로에서 사용하는 경우 동일한 요청-응답 패턴(동기 또는 비동기)을 사용하도록 모든 응답 작업을 설정해야 합니다.
응답 작업에 비동기 응답을 사용하도록 설정하면 워크플로가 처리 요청을 수락한 후 202 수락됨으로 응답할 수 있습니다. 회신에는 요청의 최종 상태를 검색하는 데 사용할 수 있는 위치 헤더가 포함됩니다.
SAP 커넥터를 사용하여 워크플로에 대한 비동기 요청-회신 패턴을 구성하려면 다음 단계를 따르세요.
디자이너에서 논리 앱 워크플로를 엽니다. 워크플로가 SAP 트리거로 시작하는지 확인합니다.
워크플로에서 응답 작업을 찾고 해당 작업의 설정을 엽니다.
워크플로가 사용량인지 아니면 표준인지에 따라 해당 단계를 따릅니다.
- 사용량: 비동기 응답에서 설정을 끄기에서 켜기로 설정하고 완료를 선택합니다.
- 표준: 네트워킹을 확장하고 비동기 응답에서 설정을 끄기에서 켜기로 설정합니다.
워크플로를 저장합니다.
SAP에 IDoc 보내기
SAP 서버에 IDoc를 보내고 응답을 반환하는 논리 앱 워크플로를 만들려면 다음 예제를 따릅니다.
- HTTP 요청에 의해 트리거되는 논리 앱 워크플로를 만듭니다.
- IDoc를 SAP로 보내기 위한 SAP 작업을 워크플로에 추가합니다.
- 워크플로에 응답 작업을 추가합니다.
- RFC를 사용하여 SAP ABAP에서 회신을 받는 경우 RFC(원격 함수 호출) 요청-응답 패턴을 만듭니다.
- 워크플로를 테스트합니다.
요청 트리거 추가
워크플로가 XML HTTP를 통해 SAP에서 IDoc를 수신하도록 하려면 요청 기본 제공 트리거를 사용할 수 있습니다. 이 트리거는 SAP 서버가 워크플로에 HTTP POST 요청을 보낼 수 있는 URL이 포함된 엔드포인트를 만듭니다. 워크플로에서 이러한 요청을 받으면 트리거가 실행되어 워크플로의 다음 단계를 실행합니다.
CPIC(일반 프로그래밍 인터페이스 통신)를 통해 IDoc를 일반 XML 또는 플랫 파일로 수신하려면 SAP에서 메시지 수신 섹션을 검토하세요.
다중 테넌트 Azure Logic Apps에 사용량 워크플로가 있는지 또는 단일 테넌트 Azure Logic Apps에 표준 워크플로가 있는지 여부에 따라 해당하는 단계를 따릅니다.
Azure Portal 디자이너에서 사용량 논리 앱 리소스와 빈 워크플로를 만듭니다.
디자이너에서 다음 일반 단계에 따라 HTTP 요청이 수신될 때라는 요청 기본 제공 트리거를 찾아서 추가합니다.
워크플로를 저장합니다. 디자이너 도구 모음에서 저장을 선택합니다.
이 단계에서는 트리거가 SAP 서버로부터 요청을 받을 수 있는 엔드포인트 URL을 생성합니다. 예를 들면 다음과 같습니다.
IDoc를 보내는 SAP 작업 추가
다음으로, 워크플로의 요청 트리거가 실행될 때 IDoc를 SAP로 보내는 작업을 만듭니다. 다중 테넌트 Azure Logic Apps에 사용량 워크플로가 있는지 또는 단일 테넌트 Azure Logic Apps에 표준 워크플로가 있는지 여부에 따라 해당하는 단계를 따릅니다.
워크플로 디자이너의 요청 트리거 아래에서 새 단계를 선택합니다.
메시지가 표시되면 온-프레미스 SAP 서버에 대해 다음 연결 정보를 제공합니다. 완료되면 만들기를 선택합니다. 그렇지 않으면 다음 단계를 계속하여 SAP 작업을 설정합니다.
매개 변수 필수 설명 연결 이름 예 연결 이름을 입력합니다. 데이터 게이트웨이 예 1. 구독에서 데이터 게이트웨이를 설치하기 위해 Azure Portal에서 만든 데이터 게이트웨이 리소스의 Azure 구독을 선택합니다.
2. 연결 게이트웨이에서 Azure의 데이터 게이트웨이 리소스를 선택합니다.클라이언트 예 SAP 서버에 연결하는 데 사용할 SAP 클라이언트 ID 인증 유형 예 연결에 사용할 인증 유형으로, 기본(사용자 이름 및 암호)이어야 합니다. SNC 연결을 만들려면 SNC(보안 네트워크 통신) 사용을 참조하세요. SAP 사용자 이름 예 SAP 서버의 사용자 이름 SAP 암호 예 SAP 서버의 암호 로그온 형식 예 애플리케이션 서버 또는 그룹(메시지 서버)을 선택한 다음 선택 사항으로 표시되더라도 해당 필수 매개 변수를 구성합니다.
애플리케이션 서버:
- AS 호스트: SAP 애플리케이션 서버의 호스트 이름
- AS 서비스: SAP 애플리케이션 서버의 서비스 이름 또는 포트 번호
- AS 시스템 번호: SAP 서버의 시스템 번호(00~99 범위)
그룹:
- MS 서버 호스트: SAP 메시지 서버의 호스트 이름
- MS 서비스 이름 또는 포트 번호: SAP 메시지 서버의 서비스 이름 또는 포트 번호
- MS 시스템 ID: SAP 서버의 시스템 ID
- MS 로그온 그룹: SAP 서버의 로그온 그룹. SAP 서버에서 CCMS: 로그온 그룹 유지(T-Code SMLG) 대화 상자를 열어 로그온 그룹 값을 찾거나 편집할 수 있습니다. 자세한 내용은 SAP Note 26317 - 자동 부하 분산을 위한 로그온 그룹 설정을 검토하세요.안전한 형식 지정 아니요 이 옵션은 이전 버전과의 호환성을 위해 제공되며 문자열 길이만 확인합니다. 기본적으로 강력한 형식 지정은 스키마에 대해 XML 유효성 검사를 수행하여 잘못된 값을 확인하는 데 사용됩니다. 이 동작은 이전에 발생한 문제를 검색하는 데 도움이 될 수 있습니다. 안전한 형식 지정 설정에 대해 자세히 알아봅니다. SNC 사용 아니요 SNC 연결을 만들려면 SNC(보안 네트워크 통신) 사용을 참조하세요.
SNC에 대한 자세한 내용은 RFC 통합을 위한 SAP SNC 시작 - SAP 블로그를 참조하세요.
선택적으로 사용 가능한 다른 연결 매개 변수는 기본 연결 정보를 참조하세요.
Azure Logic Apps가 연결을 설정하고 테스트하면 SAP 작업 정보 상자가 나타납니다. 발생할 수 있는 연결 문제에 대한 자세한 내용은 연결 문제 해결을 참조하세요.
SAP에 메시지 보내기 작업에서 SAP 서버에서 사용 가능한 SAP 작업을 찾아 선택하여 IDoc를 보냅니다.
SAP에 메시지 보내기 작업은 제네릭이며 BAPI, IDoc, RFC 또는 tRFC 유형의 메시지를 보낼 수 있지만 먼저 사용할 메시지 유형 및 SAP 작업을 선택해야 합니다.
SAP 작업 매개 변수의 편집 상자에서 폴더 아이콘을 선택합니다. 열리는 목록에서 BAPI, IDOC, RFC 또는 TRFC를 선택합니다. 이 예에서는 IDOC을 선택합니다. 다른 형식을 선택하면 선택 사항에 따라 사용 가능한 SAP 작업이 변경됩니다.
참고 항목
잘못된 게이트웨이(500) 오류 또는 잘못된 요청(400) 오류가 발생하는 경우 500 잘못된 게이트웨이 또는 400 잘못된 요청 오류를 참조하세요.
화살표를 사용하여 SAP 작업 형식 폴더를 찾아 사용하려는 SAP 작업을 찾아 선택합니다.
이 예에서는 ORDERS>ORDERS05>720>Send를 선택합니다.
원하는 작업을 찾을 수 없는 경우 경로를 수동으로 입력할 수 있습니다. 예를 들면 다음과 같습니다.
팁
SAP 작업 매개 변수의 경우 식 편집기를 사용하여 매개 변수 값을 입력할 수 있습니다. 이렇게 하면 다양한 메시지 유형에 동일한 SAP 작업을 사용할 수 있습니다.
IDoc 메시지에 대한 자세한 내용은 IDoc 작업에 대한 메시지 스키마를 검토하세요.
SAP에 메시지 보내기 작업에 요청 트리거의 본문 출력을 포함합니다.
입력 메시지 매개 변수에서 편집 상자 내부를 선택하여 동적 콘텐츠 목록을 엽니다.
동적 콘텐츠 목록의 HTTP 요청이 수신될 때 아래에서 본문을 선택합니다. 본문 필드에는 요청 트리거의 본문 출력이 포함됩니다.
참고 항목
본문 필드가 목록에 표시되지 않는 경우 HTTP 요청이 수신될 때 레이블 옆에 있는 자세히 보기를 선택합니다.
이제 SAP에 메시지 보내기 작업에 요청 트리거의 본문 콘텐츠가 포함되고 해당 출력을 SAP 서버로 보냅니다. 예를 들면 다음과 같습니다.
워크플로를 저장합니다.
SAP 서버에 플랫 파일 ID 보내기(관리형 커넥터에만 해당)
SAP 관리형 커넥터를 사용할 때 플랫 파일 스키마를 사용하여 IDoc를 보내려면 XML 봉투에 IDoc를 래핑하고 일반적인 단계에 따라 IDoc를 보내는 SAP 작업을 추가할 수 있지만 다음과 같은 변경 사항이 적용됩니다.
참고 항목
SAP 기본 제공 커넥터를 사용하는 경우 XML 봉투에 플랫 파일 IDoc를 래핑하지 않도록 합니다.
XML 봉투로 IDoc 래핑
메시지를 보내는 데 사용하는 SAP 작업에서 다음 URI를 사용합니다.
http://Microsoft.LobServices.Sap/2007/03/Idoc/SendIdoc
XML 봉투를 사용하여 입력 메시지의 서식을 지정합니다.
다음 예제에서는 샘플 XML 페이로드를 보여 줍니다.
<SendIdoc xmlns="http://Microsoft.LobServices.Sap/2007/03/Idoc/">
<idocData>EDI_DC 3000000001017945375750 30INVOIC011BTSVLINV30KUABCABCFPPC LDCA X004010810 4 SAPMSX LSEDI ABCABCFPPC 000d3ae4-723e-1edb-9ca4-cc017365c9fd 20210217054521INVOICINVOIC01ZINVOIC2RE 20210217054520
E2EDK010013000000001017945375000001E2EDK01001000000010 ABCABC1.00000 0060 INVO9988298128 298.000 298.000 LB Z4LR EN 0005065828 L
E2EDKA1 3000000001017945375000002E2EDKA1 000000020 RS ABCABCFPPC 0005065828 ABCABCABC ABCABC Inc. Limited Risk Distributor ABCABC 1950 ABCABCABCA Blvd ABCABAABCAB L5N8L9 CA ABCABC E ON V-ABCABC LDCA
E2EDKA1 3000000001017945375000003E2EDKA1 000000020 AG 0005065828 ABCABCFPPC ABCABC ABCABC ABCABC - FPP ONLY 88 ABCABC Crescent ABCABAABCAB L5R 4A2 CA ABCABC 111 111 1111 E ON ABCABCFPPC EN
E2EDKA1 3000000001017945375000004E2EDKA1 000000020 RE 0005065828 ABCABCFPPC ABCABC ABCABC ABCABC - FPP ONLY 88 ABCABC Crescent ABCABAABCAB L5R 4A2 CA ABCABC 111 111 1111 E ON ABCABCFPPC EN
E2EDKA1 3000000001017945375000005E2EDKA1 000000020 RG 0005065828 ABCABCFPPC ABCABC ABCABC ABCABC - FPP ONLY 88 ABCABC Crescent ABCABAABCAB L5R 4A2 CA ABCABC 111 111 1111 E ON ABCABCFPPC EN
E2EDKA1 3000000001017945375000006E2EDKA1 000000020 WE 0005001847 41 ABCABC ABCABC INC (ABCABC) DC A. ABCABCAB 88 ABCABC CRESCENT ABCABAABCAB L5R 4A2 CA ABCABC 111-111-1111 E ON ABCABCFPPC EN
E2EDKA1 3000000001017945375000007E2EDKA1 000000020 Z3 0005533050 ABCABCABC ABCABC Inc. ABCA Bank Swift Code -ABCABCABCAB Sort Code - 1950 ABCABCABCA Blvd. Acc No -1111111111 ABCABAABCAB L5N8L9 CA ABCABC E ON ABCABCFPPC EN
E2EDKA1 3000000001017945375000008E2EDKA1 000000020 BK 1075 ABCABCABC ABCABC Inc 1950 ABCABCABCA Blvd ABCABAABCAB ON L5N 8L9 CA ABCABC (111) 111-1111 (111) 111-1111 ON
E2EDKA1 3000000001017945375000009E2EDKA1 000000020 CR 1075 CONTACT ABCABCABC 1950 ABCABCABCA Blvd ABCABAABCAB ON L5N 8L9 CA ABCABC (111) 111-1111 (111) 111-1111 ON
E2EDK02 3000000001017945375000010E2EDK02 000000020 0099988298128 20210217
E2EDK02 3000000001017945375000011E2EDK02 000000020 00140-N6260-S 20210205
E2EDK02 3000000001017945375000012E2EDK02 000000020 0026336270425 20210217
E2EDK02 3000000001017945375000013E2EDK02 000000020 0128026580537 20210224
E2EDK02 3000000001017945375000014E2EDK02 000000020 01740-N6260-S
E2EDK02 3000000001017945375000015E2EDK02 000000020 900IAC
E2EDK02 3000000001017945375000016E2EDK02 000000020 901ZSH
E2EDK02 3000000001017945375000017E2EDK02 000000020 9078026580537 20210217
E2EDK03 3000000001017945375000018E2EDK03 000000020 02620210217
E2EDK03 3000000001017945375000019E2EDK03 000000020 00120210224
E2EDK03 3000000001017945375000020E2EDK03 000000020 02220210205
E2EDK03 3000000001017945375000021E2EDK03 000000020 01220210217
E2EDK03 3000000001017945375000022E2EDK03 000000020 01120210217
E2EDK03 3000000001017945375000023E2EDK03 000000020 02420210217
E2EDK03 3000000001017945375000024E2EDK03 000000020 02820210418
E2EDK03 3000000001017945375000025E2EDK03 000000020 04820210217
E2EDK17 3000000001017945375000026E2EDK17 000000020 001DDPDelivered Duty Paid
E2EDK17 3000000001017945375000027E2EDK17 000000020 002DDPdestination
E2EDK18 3000000001017945375000028E2EDK18 000000020 00160 0 Up to 04/18/2021 without deduction
E2EDK28 3000000001017945375000029E2EDK28 000000020 CA BOFACATT Bank of ABCABAB ABCABC ABCABAB 50127217 ABCABCABC ABCABC Inc.
E2EDK28 3000000001017945375000030E2EDK28 000000020 CA 026000082 ABCAbank ABCABC ABCABAB 201456700OLD ABCABCABC ABCABC Inc.
E2EDK28 3000000001017945375000031E2EDK28 000000020 GB ABCAGB2L ABCAbank N.A ABCABA E14, 5LB GB63ABCA18500803115593 ABCABCABC ABCABC Inc. GB63ABCA18500803115593
E2EDK28 3000000001017945375000032E2EDK28 000000020 CA 020012328 ABCABANK ABCABC ABCABAB ON M5J 2M3 2014567007 ABCABCABC ABCABC Inc.
E2EDK28 3000000001017945375000033E2EDK28 000000020 CA 03722010 ABCABABC ABCABABC Bank of Commerce ABCABAABCAB 64-04812 ABCABCABC ABCABC Inc.
E2EDK28 3000000001017945375000034E2EDK28 000000020 IE IHCC In-House Cash Center IHCC1075 ABCABCABC ABCABC Inc.
E2EDK28 3000000001017945375000035E2EDK28 000000020 CA 000300002 ABCAB Bank of ABCABC ABCABAB 0021520584OLD ABCABCABC ABCABC Inc.
E2EDK28 3000000001017945375000036E2EDK28 000000020 US USCC US Cash Center (IHC) city USCC1075 ABCABCABC ABCABC Inc.
E2EDK29 3000000001017945375000037E2EDK29 000000020 0064848944US A CAD CA ABCABC CA United States US CA A Air Air
E2EDKT1 3000000001017945375000038E2EDKT1 000000020 ZJ32E EN
E2EDKT2 3000000001017945375000039E2EDKT2 000038030 GST/HST877845941RT0001 *
E2EDKT2 3000000001017945375000040E2EDKT2 000038030 QST1021036966TQ0001 *
E2EDKT1 3000000001017945375000041E2EDKT1 000000020 Z4VL
E2EDKT2 3000000001017945375000042E2EDKT2 000041030 0.000 *
E2EDKT1 3000000001017945375000043E2EDKT1 000000020 Z4VH
E2EDKT2 3000000001017945375000044E2EDKT2 000043030 *
E2EDK14 3000000001017945375000045E2EDK14 000000020 008LDCA
E2EDK14 3000000001017945375000046E2EDK14 000000020 00710
E2EDK14 3000000001017945375000047E2EDK14 000000020 00610
E2EDK14 3000000001017945375000048E2EDK14 000000020 015Z4F2
E2EDK14 3000000001017945375000049E2EDK14 000000020 0031075
E2EDK14 3000000001017945375000050E2EDK14 000000020 021M
E2EDK14 3000000001017945375000051E2EDK14 000000020 0161075
E2EDK14 3000000001017945375000052E2EDK14 000000020 962M
E2EDP010013000000001017945375000053E2EDP01001000000020 000011 2980.000 EA 298.000 LB MOUSE 298.000 Z4TN 4260
E2EDP02 3000000001017945375000054E2EDP02 000053030 00140-N6260-S 00000120210205 DFUE
E2EDP02 3000000001017945375000055E2EDP02 000053030 0026336270425 00001120210217
E2EDP02 3000000001017945375000056E2EDP02 000053030 0168026580537 00001020210224
E2EDP02 3000000001017945375000057E2EDP02 000053030 9100000 00000120210205 DFUE
E2EDP02 3000000001017945375000058E2EDP02 000053030 911A 00000120210205 DFUE
E2EDP02 3000000001017945375000059E2EDP02 000053030 912PP 00000120210205 DFUE
E2EDP02 3000000001017945375000060E2EDP02 000053030 91300 00000120210205 DFUE
E2EDP02 3000000001017945375000061E2EDP02 000053030 914CONTACT ABCABCABC 00000120210205 DFUE
E2EDP02 3000000001017945375000062E2EDP02 000053030 963 00000120210205 DFUE
E2EDP02 3000000001017945375000063E2EDP02 000053030 965 00000120210205 DFUE
E2EDP02 3000000001017945375000064E2EDP02 000053030 9666336270425 00000120210205 DFUE
E2EDP02 3000000001017945375000065E2EDP02 000053030 9078026580537 00001020210205 DFUE
E2EDP03 3000000001017945375000066E2EDP03 000053030 02920210217
E2EDP03 3000000001017945375000067E2EDP03 000053030 00120210224
E2EDP03 3000000001017945375000068E2EDP03 000053030 01120210217
E2EDP03 3000000001017945375000069E2EDP03 000053030 02520210217
E2EDP03 3000000001017945375000070E2EDP03 000053030 02720210217
E2EDP03 3000000001017945375000071E2EDP03 000053030 02320210217
E2EDP03 3000000001017945375000072E2EDP03 000053030 02220210205
E2EDP19 3000000001017945375000073E2EDP19 000053030 001418VVZ
E2EDP19 3000000001017945375000074E2EDP19 000053030 002RJR-00001 AB ABCABCABC Mouse FORBUS BLUETOOTH
E2EDP19 3000000001017945375000075E2EDP19 000053030 0078471609000
E2EDP19 3000000001017945375000076E2EDP19 000053030 003889842532685
E2EDP19 3000000001017945375000077E2EDP19 000053030 011CN
E2EDP26 3000000001017945375000078E2EDP26 000053030 00459064.20
E2EDP26 3000000001017945375000079E2EDP26 000053030 00352269.20
E2EDP26 3000000001017945375000080E2EDP26 000053030 01052269.20
E2EDP26 3000000001017945375000081E2EDP26 000053030 01152269.20
E2EDP26 3000000001017945375000082E2EDP26 000053030 0126795.00
E2EDP26 3000000001017945375000083E2EDP26 000053030 01552269.20
E2EDP26 3000000001017945375000084E2EDP26 000053030 00117.54
E2EDP26 3000000001017945375000085E2EDP26 000053030 00252269.20
E2EDP26 3000000001017945375000086E2EDP26 000053030 940 2980.000
E2EDP26 3000000001017945375000087E2EDP26 000053030 939 2980.000
E2EDP05 3000000001017945375000088E2EDP05 000053030 + Z400MS List Price 52269.20 17.54 1 EA CAD 2980
E2EDP05 3000000001017945375000089E2EDP05 000053030 + XR1 Tax Jur Code Level 6795.00 13.000 52269.20
E2EDP05 3000000001017945375000090E2EDP05 000053030 + Tax Subtotal1 6795.00 2.28 1 EA CAD 2980
E2EDP05 3000000001017945375000091E2EDP05 000053030 + Taxable Amount + TaxSubtotal1 59064.20 19.82 1 EA CAD 2980
E2EDP04 3000000001017945375000092E2EDP04 000053030 CX 13.000 6795.00 7000000000
E2EDP04 3000000001017945375000093E2EDP04 000053030 CX 0 0 7001500000
E2EDP04 3000000001017945375000094E2EDP04 000053030 CX 0 0 7001505690
E2EDP28 3000000001017945375000095E2EDP28 000053030 00648489440000108471609000 CN CN ABCAB ZZ 298.000 298.000 LB US 400 United Stat KY
E2EDPT1 3000000001017945375000096E2EDPT1 000053030 0001E EN
E2EDPT2 3000000001017945375000097E2EDPT2 000096040 AB ABCABCABC Mouse forBus Bluetooth EN/XC/XD/XX Hdwr Black For Bsnss *
E2EDS01 3000000001017945375000098E2EDS01 000000020 0011
E2EDS01 3000000001017945375000099E2EDS01 000000020 01259064.20 CAD
E2EDS01 3000000001017945375000100E2EDS01 000000020 0056795.00 CAD
E2EDS01 3000000001017945375000101E2EDS01 000000020 01159064.20 CAD
E2EDS01 3000000001017945375000102E2EDS01 000000020 01052269.20 CAD
E2EDS01 3000000001017945375000103E2EDS01 000000020 94200000 CAD
E2EDS01 3000000001017945375000104E2EDS01 000000020 9440.00 CAD
E2EDS01 3000000001017945375000105E2EDS01 000000020 9450.00 CAD
E2EDS01 3000000001017945375000106E2EDS01 000000020 94659064.20 CAD
E2EDS01 3000000001017945375000107E2EDS01 000000020 94752269.20 CAD
E2EDS01 3000000001017945375000108E2EDS01 000000020 EXT
Z2XSK010003000000001017945375000109Z2XSK01000000108030 Z400 52269.20
Z2XSK010003000000001017945375000110Z2XSK01000000108030 XR1 13.000 6795.00 CX
</idocData>
</SendIdoc>
응답 작업 추가
이제 SAP 서버의 결과를 원래 요청자에게 반환하도록 워크플로를 설정합니다. 이 작업의 경우, 다음 단계를 따릅니다.
워크플로 디자이너의 SAP 작업에서 새 단계를 선택합니다.
디자이너에서 다음 일반적인 단계에 따라 응답이라는 요청 기본 제공 작업을 찾아 추가합니다.
응답 작업의 본문 매개 변수에 대해 편집 상자 내부를 선택하여 동적 콘텐츠 목록을 엽니다.
동적 콘텐츠 목록의 SAP에 메시지 보내기 아래에서 본문을 선택합니다. 본문 필드에는 SAP 작업의 본문 출력이 포함됩니다.
워크플로를 저장합니다.
RFC(원격 함수 호출) 요청-응답 패턴 만들기
SAP 관리형 커넥터를 사용하는 사용량 워크플로의 경우 RFC(원격 함수 호출)를 사용하여 SAP ABAP에서 Azure Logic Apps로 회신을 받아야 하는 경우 요청 및 응답 패턴을 구현해야 합니다. 요청 트리거를 사용할 때 워크플로에서 IDoc를 받으려면 워크플로의 첫 번째 작업이 콘텐츠 없이 200 확인 상태 코드를 사용하는 응답 작업이여야 합니다. 이 권장 단계에서는 tRFC를 통해 즉시 SAP LUW(Logical Unit of Work) 비동기 전송을 완료합니다. 그러면 SAP CPIC 대화를 다시 사용할 수 있습니다. 그런 다음 워크플로에 더 많은 작업을 추가하여 이후 전송을 차단하지 않고 받은 IDoc를 처리할 수 있습니다.
참고 항목
SAP 트리거는 응답 매개 변수가 없는 tRFC를 통해 IDoc를 수신합니다.
요청-응답 패턴을 구현하려면 먼저 generate schema
명령을 사용하여 RFC 스키마를 찾아야 합니다. 생성된 스키마에는 두 개의 루트 노드가 있을 수 있습니다.
- 하나는 SAP에서 수신하는 호출인 요청 노드입니다.
- 다른 하나는 SAP에 대한 회신인 응답 노드입니다.
다음 예제에서 STFC_CONNECTION
RFC 모듈은 요청 및 응답 패턴을 생성합니다. 요청 XML을 구문 분석하여 SAP가 <ECHOTEXT>
를 요청하는 노드 값을 추출합니다. 응답은 현재 타임스탬프를 동적 값으로 삽입합니다. 논리 앱 워크플로에서 SAP로 STFC_CONNECTION
RFC를 보낼 때 비슷한 응답을 받게 됩니다.
<STFC_CONNECTIONResponse xmlns="http://Microsoft.LobServices.Sap/2007/03/Rfc/">
<ECHOTEXT>@{first(xpath(xml(triggerBody()?['Content']), '/*[local-name()="STFC_CONNECTION"]/*[local-name()="REQUTEXT"]/text()'))}</ECHOTEXT>
<RESPTEXT>Azure Logic Apps @{utcNow()}</RESPTEXT>
</STFC_CONNECTIONResponse>
워크플로 테스트
사용량 논리 앱 리소스가 이미 활성화되어 있지 않은 경우 논리 앱 메뉴에서 개요를 선택합니다. 도구 모음에서 사용을 선택합니다.
디자이너 도구 모음에서 실행>실행을 선택하여 워크플로를 수동으로 시작합니다.
웹후크 트리거 페이로드를 시뮬레이션하고 워크플로를 트리거하려면 HTTP 요청 도구와 지침을 사용하여 요청 트리거에 필요한 메서드를 포함하여 워크플로의 요청 트리거에 의해 만들어진 엔드포인트 URL로 HTTP 요청을 보냅니다. 요청에 메시지 콘텐츠를 포함해야 합니다.
이 예에서는 POST 메서드와 엔드포인트 URL을 사용하여 IDoc 파일을 보냅니다. 이 파일은 XML 형식이어야 하며 선택한 SAP 작업에 대한 네임스페이스를 포함해야 합니다. 예를 들면 다음과 같습니다.
<?xml version="1.0" encoding="UTF-8" ?> <Send xmlns="http://Microsoft.LobServices.Sap/2007/03/Idoc/2/ORDERS05//720/Send"> <idocData> <...> </idocData> </Send>
HTTP 요청을 보낸 후 워크플로의 응답을 기다립니다.
이제 ID를 보내고 SAP 서버와 통신할 수 있는 워크플로를 만들었습니다. 워크플로의 SAP 연결을 설정했으므로 이제 BAPI 및 RFC를 사용해 볼 수 있습니다.
워크플로 시간 제한 문제
워크플로는 다음 시나리오에서 시간 초과됩니다.
응답에 필요한 모든 단계는 요청 제한 시간 내에 완료되지 않습니다. 이 조건이 발생하면 요청이 차단될 수 있습니다. 문제 진단에 도움이 되도록 논리 앱 워크플로를 확인하고 모니터링하는 방법을 알아봅니다.
SAP 시스템의 처리 모드는 기본 트리거 즉시 설정으로 설정되므로 SAP 시스템은 IDoc 처리가 완료될 때까지 IDoc 전송에 대한 인바운드 호출을 차단합니다.
예를 들어 워크플로가 한 번에 한 번에 하나의 IDoc를 SAP에 보내는 경우 SAP 시스템이 로드 중인 경우 대기 중인 IDoc는 시간 초과를 호출합니다. 기본 처리 모드를 사용하면 IDoc가 처리를 완료할 때까지 SAP 시스템에서 IDoc 전송에 대한 인바운드 호출을 차단합니다. Azure Logic Apps에서 워크플로 작업에는 기본적으로 2분 제한 시간이 있습니다.
이 문제를 해결하려면 백그라운드 프로그램에서 설정을 트리거로 변경하는 필수 구성 요소 섹션의 단계를 수행합니다.
안전한 형식 지정
기본적으로 SAP 연결을 만들 때 강력한 형식 지정은 스키마에 대해 XML 유효성 검사를 수행하여 잘못된 값을 확인하는 데 사용됩니다. 이 동작은 이전에 발생한 문제를 검색하는 데 도움이 될 수 있습니다.
안전한 형식 지정 옵션은 이전 버전과의 호환성을 위해 제공되며 문자열 길이만 확인합니다.
안전한 형식 지정을 선택하면 SAP의 DATS 형식 및 TIMS 형식은 해당하는 XML이 아닌 문자열 xs:date
및 xs:time
로 처리되며 xmlns:xs="http://www.w3.org/2001/XMLSchema"
입니다. 안전한 형식 지정은 모든 스키마 생성 동작, "전송" 페이로드 및 "수신" 응답에 대한 전송 메시지 그리고 트리거에 영향을 줍니다.
강력한 형식 지정을 사용하는 경우(안전한 형식 지정은 사용되지 않음) 스키마는 DATS 및 TIMS 형식을 보다 간단한 XML 형식으로 매핑합니다.
<xs:element minOccurs="0" maxOccurs="1" name="UPDDAT" nillable="true" type="xs:date"/>
<xs:element minOccurs="0" maxOccurs="1" name="UPDTIM" nillable="true" type="xs:time"/>
강력한 형식 지정을 사용하여 메시지를 보내면 DATS 및 TIMS 응답은 일치하는 XML 형식 포맷을 준수합니다.
<DATE>9999-12-31</DATE>
<TIME>23:59:59</TIME>
안전한 형식 지정을 사용하면 스키마는 DATS 및 TIMS 형식을 길이가 제한된 XML 문자열 필드에만 매핑합니다. 예를 들면 다음과 같습니다.
<xs:element minOccurs="0" maxOccurs="1" name="UPDDAT" nillable="true">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="8" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element minOccurs="0" maxOccurs="1" name="UPDTIM" nillable="true">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="6" />
</xs:restriction>
</xs:simpleType>
</xs:element>
안전한 형식 지정을 사용하도록 설정된 메시지를 보내면 DATS 및 TIMS 응답은 다음 예제와 같습니다.
<DATE>99991231</DATE>
<TIME>235959</TIME>
고급 시나리오
SAP로 데이터를 보내기 위한 언어 헤더 변경
Azure Logic Apps에서 SAP에 연결하는 경우 SAP 연결에서 SAP 서버로 데이터를 보내는 데 사용되는 기본 언어는 영어입니다. 그러나 SAP 관리형 커넥터 및 SAP 기본 제공 커넥터는 다양한 방식으로 사용되는 언어 변경 및 저장을 처리합니다.
SAP 기본 제공 커넥터를 사용하여 연결을 만들 때 연결 매개 변수를 사용하면 언어 매개 변수 값을 SAP 연결 매개 변수의 일부로 지정하고 저장할 수 있습니다.
SAP 관리형 커넥터와의 연결을 만들 때 연결 매개 변수에는 언어 매개 변수가 없습니다. 따라서 이 시간 동안에는 SAP 서버로 데이터를 보내는 데 사용할 언어를 지정할 수 없습니다. 대신 워크플로 디자인 타임과 런타임 모두에서 커넥터는 서버로 전송되는 각 요청에서 웹 브라우저의 로컬 언어를 사용합니다. 예를 들어 브라우저가 포르투갈어로 설정된 경우 Azure Logic Apps는 포르투갈어와의 SAP 연결을 만들고 테스트하지만 해당 언어와의 연결을 저장하지는 않습니다.
그러나 인바운드 요청에 표준 HTTP 헤더
Accept-Language
를 사용하여 연결의 언어를 설정할 수 있습니다. 대부분의 웹 브라우저는 로캘 설정에 따라Accept-Language
헤더를 추가합니다. 워크플로 디자이너에서 새 SAP 연결을 만들 때 웹 브라우저가 이 헤더를 적용합니다. 따라서 원하는 언어를 사용하도록 웹 브라우저의 설정을 업데이트하거나 워크플로 디자이너 대신 Azure Resource Manager를 사용하여 SAP 연결을 만들 수 있습니다.예를 들어 HTTP 요청이 수신될 때라는 요청 트리거를 사용하여
Accept-Language
헤더가 있는 요청을 논리 앱 워크플로로 보낼 수 있습니다. 워크플로의 모든 작업은 헤더를 수신합니다. 그런 다음, SAP는 BAPI 오류 메시지처럼 시스템 메시지에 지정된 언어를 사용합니다. 런타임에Accept-Language
헤더를 전달하지 않으면 기본적으로 영어가 사용됩니다.Accept-Language
헤더를 사용하는 경우 계정 정보 및/또는 권한을 확인하고 다시 시도하세요 오류가 발생할 수 있습니다. 이 경우 SAP 구성 요소의 오류 로그를 확인합니다. 이 오류는 헤더를 사용하는 SAP 구성 요소에서 실제로 발생하므로 다음 오류 메시지 중 하나가 표시될 수 있습니다.“SAP.Middleware.Connector.RfcLogonException: 설치된 언어 중 하나를 선택합니다.”
“SAP.Middleware.Connector.RfcAbapMessageException: 설치된 언어 중 하나를 선택합니다.”
트랜잭션을 별도로 명시적으로 확인
Azure Logic Apps에서 SAP로 트랜잭션을 보낼 때 SAP 문서 트랜잭션 RFC 서버 프로그램에 설명된 대로 이 교환이 두 단계로 이루어집니다.
기본적으로 SAP에 메시지 보내기라는 SAP 관리형 커넥터 작업은 함수를 전송하고 단일 호출에서 트랜잭션을 확인하는 단계를 모두 처리합니다. 이러한 단계를 분리하는 옵션도 있습니다. 전송 및 확인 단계를 분리하는 기능은 SAP에서 트랜잭션 중복을 방지하려는 시나리오에 유용합니다. 이러한 시나리오에는 네트워크 문제 등으로 인해 발생하는 오류가 포함됩니다.
[IDOC] SAP에 문서 보내기라는 SAP 관리형 커넥터 작업을 사용하여 트랜잭션을 확인하지 않고도 자동으로 IDoc를 SAP에 보낼 수 있습니다. 그런 다음 [IDOC - RFC] 트랜잭션 ID 확인이라는 SAP 관리형 커넥터 작업을 사용하여 트랜잭션을 명시적으로 확인할 수 있습니다. 워크플로가 다른 단계에서 트랜잭션을 별도로 확인하면 SAP 시스템은 트랜잭션을 한 번만 완료합니다.
표준 워크플로의 SAP 기본 제공 커넥터에도 [IDoc] SAP에 문서 보내기 및 [IDOC - RFC] 트랜잭션 ID 확인과 같이 전송 및 확인 단계를 별도로 처리하는 작업이 있습니다.
다음 예제 워크플로에서는 이 패턴을 보여 줍니다.
디자이너에서 빈 워크플로를 사용하여 사용량 또는 표준 논리 앱을 만들고 엽니다. 요청 트리거 추가
중복된 IDoc를 SAP로 보내지 않도록 하려면 다음 대체 단계에 따라 SAP 작업에서 IDoc 트랜잭션 ID를 만들고 사용합니다.
[IDOC] SAP에 문서 보내기라는 SAP 작업을 워크플로에 추가합니다. SAP 시스템에 보내는 IDoc에 대한 정보와 다음 값을 제공합니다.
매개 변수 값 설명 TID 확인 문제 트랜잭션 ID를 자동으로 확인하지 않으며, 별도의 단계에서 명시적으로 수행됩니다. 트랜잭션 ID GUID < IDoc-transaction-ID> 이 매개 변수가 자동으로 나타나지 않으면 새 매개 변수 추가 목록을 열고 매개 변수를 선택합니다.
이 값을 수동으로 지정하거나 [IDOC] SAP에 문서 보내기 작업의 출력으로 커넥터에서 이 GUID를 자동으로 생성할 수 있습니다. 이 예제에서는 GUID를 자동으로 생성하기 위해 이 매개 변수를 비워 둡니다.사용량 워크플로
표준 워크플로
[IDOC] SAP에 문서 보내기라는 SAP 작업에서 설정을 열어 재시도 정책을 검토합니다.
기본 옵션이 권장 정책이지만 특정 요구 사항에 맞게 사용자 지정 정책을 선택할 수 있습니다. 사용자 지정 정책을 사용하도록 선택한 경우, 일시 네트워크 중단을 극복하기 위해 하나 이상의 재시도를 설정합니다.
이제 [IDOC - RFC] 트랜잭션 ID 확인이라는 SAP 작업을 추가합니다.
트랜잭션 ID 매개 변수에서 편집 상자 내부를 선택하여 동적 콘텐츠 목록을 엽니다.
목록의 [IDOC] SAP에 문서 보내기 아래에서 이전 SAP작업의 출력인 트랜잭션 ID 값을 선택합니다.
사용량 워크플로
표준 워크플로
이 단계가 실행된 후에는 SAP 커넥터 쪽과 SAP 시스템 쪽에서 현재 트랜잭션이 완료된 것으로 표시됩니다.
트랜잭션 ID 변수를 사용하여 중복 ID를 보내지 않도록 방지
SAP에 중복 IDoc를 보내는 워크플로에 문제가 발생하는 경우 IDoc 트랜잭션 식별자 역할을 하는 문자열 변수를 만들 수 있습니다. 그런 다음 이 식별자를 사용하여 일시 중단, 네트워크 문제 또는 승인 손실과 같은 조건에서 중복 네트워크 전송을 방지할 수 있습니다.
디자이너에서 요청 트리거를 추가한 후 [IDOC] SAP에 문서 보내기라는 SAP 작업을 추가하기 전에 워크플로에 변수 초기화라는 작업을 추가합니다.
작업 이름을 IDoc 트랜잭션 ID만들기로 바꿉니다.
작업 정보 상자에서 다음 매개 변수 값을 제공합니다.
매개 변수 값 설명 이름 < 변수 이름> 변수의 이름(예: IDocTransactionID) Type String 변수 형식 값 guid()
편집 상자 내부를 선택하여 식 또는 함수 편집기를 열고 guid()를 입력합니다. 변경 내용을 저장합니다.
이제 Value 매개 변수가 GUID를 생성하는 guid() 함수로 설정됩니다.사용량 워크플로
표준 워크플로
참고 항목
SAP 시스템은 지정된 시간이 지난 후 또는 기본값인 24시간 후 트랜잭션 식별자를 잊어버립니다. 따라서 SAP는 ID 또는 GUID를 알 수 없을 때 틀림없이 트랜잭션 식별자를 확인합니다. 트랜잭션 식별자 확인이 실패한다는 것은 SAP가 확인을 승인하기 전에 SAP 시스템에서 오류가 발생했다는 뜻입니다.
[IDOC] SAP에 문서 보내기라는 SAP 작업을 워크플로에 추가합니다. SAP 시스템에 보내는 IDoc에 대한 정보와 다음 값을 제공합니다.
매개 변수 값 설명 TID 확인 문제 트랜잭션 ID를 자동으로 확인하지 않으며, 별도의 단계에서 명시적으로 수행됩니다. 트랜잭션 ID GUID < IDoc-transaction-ID> 이 매개 변수가 자동으로 나타나지 않으면 새 매개 변수 추가 목록을 열고 매개 변수를 선택합니다. 만든 트랜잭션 ID 변수를 선택하려면 다음 단계를 수행합니다.
1. 트랜잭션 ID GUID 매개 변수에서 편집 상자 내부를 선택하여 동적 콘텐츠 목록을 엽니다.
2. 목록의 변수 아래에서 이전에 만든 변수(이 예제의 경우 IDocTransactionID)를 선택합니다.사용량 워크플로
표준 워크플로
[IDOC] SAP에 문서 보내기라는 SAP 관리형 작업의 경우 설정을 열어 재시도 정책을 검토합니다.
기본 옵션이 권장 정책이지만 특정 요구 사항에 맞게 사용자 지정 정책을 선택할 수 있습니다. 사용자 지정 정책을 사용하도록 선택한 경우, 일시 네트워크 중단을 극복하기 위해 하나 이상의 재시도를 설정합니다.
참고 항목
관리형 커넥터 작업만 현재 재시도 정책 설정이 있으며 기본 제공 서비스 공급자 기반 커넥터는 없습니다.
이제 [IDOC - RFC] 트랜잭션 ID 확인이라는 SAP 작업을 추가합니다.
트랜잭션 ID 매개 변수에서 편집 상자 내부를 선택하여 동적 콘텐츠 목록을 엽니다.
목록의 변수 아래에 만든 변수의 이름(이 예제의 경우 IDocTransactionID)을 입력합니다.
사용량 워크플로
표준 워크플로
필요에 따라 테스트 환경에서 중복 제거의 유효성을 검사합니다.
[IDOC] SAP에 문서 보내기라는 다른 SAP 작업을 추가합니다. 트랜잭션 ID 매개 변수에서 이전 단계에서 사용한 트랜잭션 ID GUID를 선택합니다.
[IDOC] SAP에 문서 보내기 작업을 호출할 때마다 할당된 IDoc 번호의 유효성을 검사하려면 트랜잭션 ID 및 수신 방향이 동일한 [IDOC] 트랜잭션에 대한 IDOC 목록 가져오기 작업을 사용합니다.
두 호출에 대해 동일한 IDoc 번호가 반환되면 IDoc가 중복 제거되었습니다.
동일한 IDoc를 두 번 보내면 SAP에서 tRFC 호출의 중복을 식별할 수 있는지 확인하고 단일 인바운드 IDoc 메시지에 대한 두 번의 호출을 확인할 수 있습니다.
문제 해결
연결 문제
연결을 만드는 동안 다음 오류가 표시되면 SAP NCo 클라이언트 라이브러리 설치에 문제가 있는 것입니다.
연결 테스트에 실패했습니다. 오류 '요청을 처리하지 못했습니다. 오류 세부 정보: 'sapnco, Version=3.0.0.42, Culture=neutral, PublicKeyToken 50436dca5c7f7d23' 또는 해당 종속성 중 하나를 로드할 수 없습니다. 지정한 파일을 찾을 수 없습니다.'
필요한 SAP NCo 클라이언트 라이브러리 버전을 설치하고 다른 모든 필수 구성 요소를 충족하는지 확인합니다.
500 잘못된 게이트웨이 또는 400 잘못된 요청 오류
서비스 'sapgw00' 알 수 없음과 유사한 메시지와 함께 500 잘못된 게이트웨이 또는 400 잘못된 요청 오류가 수신되는 경우 포트 번호에 대한 네트워크 서비스 이름 확인은 예를 들어 다음과 같습니다.
{
"body": {
"error": {
"code": 500,
"source": "EXAMPLE-FLOW-NAME.eastus.environments.microsoftazurelogicapps.net",
"clientRequestId": "00000000-0000-0000-0000-000000000000",
"message": "BadGateway",
"innerError": {
"error": {
"code": "UnhandledException",
"message": "\nERROR service 'sapgw00' unknown\nTIME Wed Nov 11 19:37:50 2020\nRELEASE 721\nCOMPONENT NI (network interface)\nVERSION 40\nRC -3\nMODULE ninti.c\nLINE 933\nDETAIL NiPGetServByName: 'sapgw00' not found\nSYSTEM CALL getaddrinfo\nCOUNTER 1\n\nRETURN CODE: 20"
}
}
}
}
}
옵션 1: API 연결 및 트리거 구성에서 게이트웨이 서비스 이름을 해당 포트 번호로 바꿉니다. 오류 예에서는
sapgw00
을 실제 포트 번호(예:3300
)로 바꿔야 합니다.옵션 2: 온-프레미스 데이터 게이트웨이를 사용하는 경우 게이트웨이 서비스 이름을
%windir%\System32\drivers\etc\services
의 포트 매핑에 추가한 다음 온-프레미스 데이터 게이트웨이 서비스를 다시 시작할 수 있습니다. 예를 들면 다음과 같습니다.sapgw00 3300/tcp
SAP 애플리케이션 서버 또는 메시지 서버 이름이 IP 주소로 확인되는 경우 비슷한 오류가 발생할 수 있습니다. 온-프레미스 데이터 게이트웨이의 경우 대신 %windir%\System32\drivers\etc\hosts
의 IP 주소 매핑에 이름을 추가할 수 있습니다. 예를 들면 다음과 같습니다.
10.0.1.9 SAPDBSERVER01 # SAP System Server VPN IP by computer name
10.0.1.9 SAPDBSERVER01.someguid.xx.xxxxxxx.cloudapp.net # SAP System Server VPN IP by fully qualified computer name
SAP에서 트리거로 IDoc 패킷을 보내는 오류
SAP에서 트리거로 IDoc 패킷을 보낼 수 없는 경우 SAP tRFC(T-코드 SM58) 대화 상자에서 tRFC(트랜잭션 RFC) 호출 거부 메시지를 검토하세요. SAP 인터페이스에 다음과 같은 오류 메시지가 나타날 수 있습니다. 이 오류 메시지는 상태 텍스트 필드의 부분 문자열 제한으로 인해 잘립니다.
IDoc 메타에서 세그먼트 또는 그룹 정의 E2EDK36001을 찾을 수 없습니다.
이 오류 메시지는 예상한 오류가 다른 오류와 함께 발생했다는 뜻입니다. 예를 들어 해당 세그먼트를 SAP에서 해제하지 않았기 때문에 IDoc XML 페이로드를 생성할 수 없습니다. 따라서 변환에 필요한 세그먼트 형식 메타데이터가 없습니다.
SAP에서 이러한 세그먼트를 해제하게 하려면 SAP 시스템의 ABAP 엔지니어에게 문의하세요.
IReplyChannel의 RequestContext가 회신 전송 없이 닫혔습니다.
SAP 관리형 커넥터의 경우 이 오류 메시지는 채널에 대한 모든 catch-all 처리기가 오류로 인해 종료되면 예기치 않은 오류가 발생하며 다른 메시지를 처리하기 위해 채널을 다시 만든다는 것을 의미합니다.
참고 항목
SAP 관리형 트리거는 SOAP 기반 SAP 어댑터를 사용하는 Webhook 트리거입니다. 그러나 SAP 기본 제공 트리거는 SOAP SAP 어댑터를 사용하지 않고 이 오류 메시지를 받지 않는 Azure Functions 기반 트리거입니다.
워크플로가 IDoc를 수신했음을 확인하려면 상태 코드 200 OK를 반환하는 응답 작업을 추가합니다. 본문을 비워 두고, 헤더를 변경하거나 추가하지 않습니다. IDoc는 응답 페이로드를 허용하지 않는 tRFC를 통해 전송됩니다.
IDoc를 거부하려면 200 OK 이외의 HTTP 상태 코드로 응답합니다. 그러면 SAP 어댑터는 사용자를 대신하여 SAP에 다시 예외를 반환합니다. 애플리케이션에서 처리할 수 없는 잘못 라우팅된 IDoc 같은 IDoc만 거부하여 전송 오류를 SAP에 다시 알려야 합니다. IDoc에 포함된 데이터와 관련된 문제처럼 애플리케이션 수준 오류에 대한 IDoc를 거부해서는 안 됩니다. 애플리케이션 수준 유효성 검사를 위한 전송 수락을 지연하는 경우 연결이 다른 IDoc를 전송하지 못하도록 차단하기 때문에 성능이 저하될 수 있습니다.
이 오류 메시지가 수신되고 Azure Logic Apps 호출과 관련된 시스템 오류가 발생하는 경우 해당 환경의 온-프레미스 데이터 게이트웨이 서비스에 대한 네트워크 설정을 구성했는지 확인합니다. 예를 들어 네트워크 환경에서 Azure 엔드포인트를 호출하려면 프록시를 사용해야 하는 경우에는 프록시를 사용하도록 온-프레미스 데이터 게이트웨이 서비스를 구성해야 합니다. 자세한 내용은 프록시 구성을 검토하세요.
이 오류 메시지가 수신되고 Azure Logic Apps를 호출하는 동안 간헐적 오류가 발생하는 경우 다음 단계에 따라 다시 시도 횟수 또는 다시 시도 간격을 늘려야 할 수도 있습니다.
Microsoft.PowerBI.EnterpriseGateway.exe.config라는 온-프레미스 데이터 게이트웨이 서비스 구성 파일에서 SAP 설정을 확인합니다.
configuration
루트 노드 아래에configSections
요소가 없으면 추가합니다.configSections
노드에서 다음 특성이 있는section
요소를 추가합니다(없는 경우).name="SapAdapterSection" type="Microsoft.Adapters.SAP.Common.SapAdapterSection, Microsoft.Adapters.SAP.Common"
Important
기존
section
요소의 특성을 변경하지 마십시오(해당 요소가 이미 존재하는 경우).게이트웨이 서비스 구성에 다른 섹션이나 섹션 그룹이 선언되지 않은 경우
configSections
요소는 다음 버전과 같습니다.<configSections> <section name="SapAdapterSection" type="Microsoft.Adapters.SAP.Common.SapAdapterSection, Microsoft.Adapters.SAP.Common"/> </configSections>
configuration
루트 노드 아래에SapAdapterSection
요소가 없으면 추가합니다.SapAdapterSection
노드에서 다음 특성이 있는Broker
요소를 추가합니다(없는 경우).WebhookRetryDefaultDelay="00:00:00.10" WebhookRetryMaximumCount="2"
Important
Broker
요소가 이미 있는 경우에도 해당 요소의 특성을 변경합니다.SAP 어댑터 구성에서 다른 요소나 특성이 선언되지 않은 경우
SapAdapterSection
요소는 다음 버전과 같습니다.<SapAdapterSection> <Broker WebhookRetryDefaultDelay="00:00:00.10" WebhookRetryMaximumCount="2" /> </SapAdapterSection>
다시 시도 횟수 설정은
WebhookRetryMaximumCount="2"
형식입니다. 다시 시도 간격 설정은WebhookRetryDefaultDelay="00:00:00.10"
형식이며 여기서 시간 간격은HH:mm:ss.ff
형식입니다.
참고 항목
구성 파일에 대한 자세한 내용은 .NET Framework에 대한 구성 파일 스키마를 참조하세요.
변경 내용을 저장합니다.
온-프레미스 데이터 게이트웨이를 사용하는 경우 게이트웨이를 다시 시작합니다.