레이블이 PI/PO인 게시물을 표시합니다. 모든 게시물 표시
레이블이 PI/PO인 게시물을 표시합니다. 모든 게시물 표시

2022-07-08

SAP PO의 특정 AP서버에서 부하가 발생하는 경우, 이설정을 의심해보세요

혹시 SAP PO시스템을 운영중에 특정 AP서버나 노드에서 부하가 발생하는 현상을 보신경우 로그레벨 설정을 의심해보는것도 좋을것 같습니다. 일반 어플리케이션 프로젝트를 진행하더라도 운영에 배포하는 경우  Log4j나 로그관련 라이브러리의 로그레벨은 개발과 운영환경의 설정 차이는 존재하는데요. PO에서도 채널, 메시지, 서버의 로그 등 운영상에 잘못된 설정으로 인해 전체시스템에 부하를 줄수 있는 부분이라 만약 신규 운영서버 오프 시 고려해야될 부분중에 하나인것 같습니다.

SAP PO의 로그레벨 설정

NWA > Configuration > Infrastructure > Log Configuration 메뉴를 보면 여러 카테고리가 존재하는데 서버, 각 어댑터의 로그레벨에 영향을 주는것 같고 아마 다른  AP서버의 로그레벨과 비교를 해보면 차이점을 찾을수 있을것 같습니다.

2022-06-16

MYSQL프로시 호출시 User does not have access to metadata required to determine stored procedure parameter... 에러 해결방법

SAP PO와 MYSQL 프로시저 동기방식으로 연계시 발생된 에러발생 후 해결하는 과정에 대해 정리를 했으며 연계하는 프로시저는 INPUT,OUTPUT 존재했는데 오라클 프로시저 연계할때와는 Request,Response구조나 DB호출파라메터가 달라지는것 같습니다.

첫번째에러내용

java.sql.SQLException: User does not have access to metadata required to determine stored procedure parameter type. If rights an not be granted, configure connection with 'noAccessToProcedureBodies=true' to have driver generate parameters that represent INOUT strings irregardless of atual parameter types
번역기를 돌려보면 연계하는 MYSQL DB의 권한확인이나 PO에서 호출하는 JDBC호출 URL에 파라메터 추가 한 후 테스트가 필요해보이는것 같습니다.

2022-05-22

SAP Concur와 Rest채널에서의 엑세스토큰 옵션 3가지+1

"실제 해보진 않았고 관련 사이트를 보고 개념만 정리했습니다."


SAP PO와 Concur간 연계방식인 Rest 채널통해 서비스 URL호출하기전에 엑세스토큰(OAuth 2.0) 인증에 대한 지원옵션에 대해 담아봤습니다.
PO에서 Concur 업무를 위한 API를 호출하기위해서는 엑세스 토큰이 필요하다고 하는데요. 제가 보았던 부분에 대해서는 1회만 엑세스토큰을 받아 계속 사용할수 있는게 아닌 주기적으로(예를들어 한시간 마다) 받아야 하는 번거로움이 있어보였습니다.


SAP Concur란?
SAP Concur 솔루션은 모든 경비, 출장 및 공급업체 송장 지출을 하나의 시스템에 연결하여 지출을 엔드 투 엔드에서 관리, 거래에 대한 가시성을 높이고 모든 사용자를 위한 프로세스를 단순화하는 단일 방법을 제공한다고 한다고 하는데.. 쉽게 얘기하면 Concur는 경영진이 출장 경비를 관리할수 있게 해주는 '클라우드 기반 경비 및 관리 소프트웨어 솔루션'이라고 합니다. 

2022-05-09

SAP PO, JDK, JDBC 버젼 호환성 체크방법

10년이상의 오래된 EAI 솔루션, 플랫폼을 다른 EAI로 전환할 시에 일반적으로 JDBC버젼도 그대로 전환하는것을 보게 되었고 DB연계방식의 인터페이스들의 오라클, MSSQL 등 버젼업 되면서 변경요청하는 JDBC .jar 버젼들을 보며 PO내부에 있는 JDBC버젼들도 확인 및 교체가 필요해 보여 관련내용에 대해 정리를 해봤습니다.

참고한 사이트를 보면 SAP PO의 NetWeaver 릴리즈와 자바의 JVM버젼과 호환되는 JDBC드라이버 버젼들을 사용하게 되는데요. 신규 PO프로젝트를 진행 시에 아래 사이트를 참고하여 PO의 JVM 버젼에 맞게 각 DB업체에서 제공하는 JDBC파일을 다운로드 받아 PO에 디폴로이를 진행하면 되는 부분인데 DB종류가 다양해지는 만큼 EAI담당자 입장에서 관리대상이 많이 지는 부분도 고려가 필요해보입니다.

PO프로젝트 진행, 운영하다보면 3073720-PO JDBC Adapter error DriverManaerException 관련 오류들도 발생된적도 있는데 연계하는 JDBC드라이버와 데이터베이스 그리고 PO의 자바 버젼간의 호환성에 대해 확인을 해야될 부분 같고 이에 대해 SAP 입장에서는 JDBC드라이버는 공급업체(오라클,MSSQL 등)에 제공되어 SAP의 영역밖인 문제로 보는것 같고 이런 문제에 대해서는 공급업체 쪽에 문의하라는 가이드를 SAP 공식문서에서 본적도 있었던것 같습니다.

2022-04-26

scheduler.relocMode 값이 샌더채널의 폴링실행시 주는 현상

이전에 폴링되는 샌더채널의 이상증상에 대한 내용을 정리 후에 relocMode 값에 대해 좀더 자세하게 담아보려고 하는데요. 이전글도 미리 참고해주시면 좋을것 같습니다.

자신이 진행하는 SAP PO 프로젝트나 운영중인 시스템의 샌더채널에서 아래와 같은 현상들이 보이신다면 scheduler.relocMode 관련 설정값을 확인해보시는것도 좋을것 같습니다.
  1. 파일, JDBC 등 샌더채널의 폴링작업 시 두개의 노드에서 중복실행 됩니다.
  2. 폴링작업이 한 노드에서만 실행됩니다.
  3. 폴링설정한 시간과 다르게 불규칙하게 실행됩니다.(예를들어 더 빨리실행)

지금까지는 폴링시간을 60초로 제 자신이 생각한 기준으로 연계시스템에 가이드를 했었지만 그 이하의 실시간에 가까운 폴링시간에서는 위와 같은 현상이 드물게 보이기도 하는것 같습니다. 폴링하는 시간이 짧다고 해서 위 현상에 대한 원인이라고 하기 충분하지 않은게 해당 폴링관련 설정값들은 시스템특성, 인터페이스 시나리오, 사용자 요청사항에 따라 변경이 가능하도록 되어있으며 중복문제 해결을 위해 기존 설정값들의 의도(분산,성능 등)와 모순될 가능성이 있는부분이 있어 충분한 확인과 테스트가 필요해보입니다.


2022-04-25

Log Viewer 로그 출력을 위한 카테고리 설정

SAP PO의 매핑이나 자바프록시, 어댑터모듈, 어댑터 및 메시지나 채널모니터링 그리고 Log Viewer에서 확인할수 있는 로그 출력방법이나 소스들은 각 각 다른것 같습니다. 이중 Log Viewer에 로그를 출력하기 위해서는 아래의 구문을 적용하면 되는 것  같은데요.

com.sap.tc.logging.Category.getCategory(Category.getRoot(), "<카테고리명>" 

이렇게 넣고

NWA > Troubleshooting > Logs and Traces > Log Configuration에서 카테고리명을 검색하면 해당 Severity를 선택할수 있는데 항목들은 All, Debug, Path, Into, Warning, Error, Fatal, None 가 확인이 됩니다.
그리고 하단에 Per Instance Configuration 탭에도 해당 노드의 Severity를 선택할수 있는데 실제로 못해봐서 이렇게 하면 로그출력을 할수 있는지 잘 모르겠습니다.


일단 참고만 하시길요..

SAP PO프로젝트나 운영 중 발생되는 문제해결 순서

SAP PO프로젝트나 운영을 하다보면 다양한 원인과 문제는 달고 진행되는것 같습니다. 경력이 쌓이다보면 웬만한 문제에 대해서는 알고 있는 지식으로 해결이 가능하지만 가끔 알수 없는 에러나 증상으로 PO담당자를 당황하게 하거나 힘들게 하는 경우도 발생됩니다. 그래서 이번에는 문제 발생시 해결순서에 대해 정리를 해보았는데요. 이런 부분은 사람마다 다를수도 있을것 같습니다.

2022-04-24

ORA-00984: 열을 사용할 수 없습니다.(column not allowed here)에러 해결방법

프로그램이나 DB 툴로 실행했을때는 아무 문제 없이 문제되는 쿼리가 SAP PO와 연계했을 때 알수 없는 문제로 에러가 발생되는 경우가 있습니다. 이번에 발생되었던 오라클 에러인
'ORA-00984: 열을 사용할 수 없습니다.'는 PO에서 어떠한 원인으로 발생된건지 확인하고 어떻게 해결을 해야할지 담아보려고합니다.

이 에러에 대해 인터넷 검색을 해보면 대략 이런 원인이 나오네요.

  1. Insert 쿼리의 문자열에 싱글쿼테이션(')가 포함되었거나 안된경우
  2. 싱글쿼테이션 대신에 더블쿼데이션을 사용할 경우
  3. 내장 함수 등의 이름에 오타가 있는경우

1번 원인 같은경우 PO프로젝트나 운영을 하다보면 데이터문제로 종종 발생되었던 원인이고 PO에서 한개의 싱글쿼테이션을 ' -> '' 이렇게 변경하게되면 해결이 되었던적은 있습니다. 이부분은 아마 다른 언어로 개발된 프로그램에서도 마찬가지일것 같네요.

하지만 이 에러에 대한 원인은 위 3가지가 아닌 다른 원인으로 발생되었는데

현상은 문자와 숫자가 섞인 데이터였고 타겟DB컬럼 타입은 NVARCHAR2 였습니다.

SWCV 운영이관으로 인한 캐시에러 방지하는 방법

SAP XI/PI/PO 프로젝트나 운영을 했던 분이라면 한번쯤 겪었을 현상일것 같은데요. ESR(Enterprise Services Repository)에서 운영시스템으로 이관할 파일을 Tool > Export Design Objects > Individual Objects 메뉴를 통해 수정된 오브젝트만 받을수 있습니다.  하단의 옵션들을 보면 3가지가 있는데 

이중에 'With Software Component Version Definition'는 기본적으로 체크된 상태인데 이대로 Export받은 파일을 운영시스템에 Import한다면? 결국에 전체 SWCV아래의 모든 개체에 대해 캐시가 새로고침되어 운영중인 인터페이스에 영향을 주게 되어 아래와 같은 에러가 발생되는 경우가 있습니다.

"CPAException: Could not Determine mapping steps for message"

임포트한 운영시스템의 Cache Status Overview메뉴를 보았을때 전체SWCV목록의 상태가 'Not Started' 라면 약간 긴장하시는게 좋을것 같은데 이런 실수는 10년차 경력자도 종종 발생될수 있는 부분이였던것 같습니다.

2022-03-26

SAP PO 스레드 로그(Thread Dump) 특징과 상태

스레드 상태

SAP PO에서 대용량사이즈 유입이나 부하를 주는 로직 등으로 인해 OOM(OutOfMemory)가 발생되는 경우가 있는데 이때 발생되는 Thread나 Heap 덤프분석파일이 nwa > troubleshooting > Advanced... 메뉴에 생성되네요. 이 파일 내용을 보고 덤프의 내용 안에서 OOM이 발생된 원인을 알수 있지않을까 생각이 듭니다.

Thread Dump파일을 보는데 확장자가 .b00으로 된 파일이 여러개가 존재하며 안에는 알수없는 수치나 내용으로 복잡하게 보이네요. 이 덤프는 JAVA(JVM)에서 사용되는 스레드에 대한 Thread call stack정보를 담고 있는 스냅샷이라고 하는데 SAP PO내부에 Java application이 hang, 처리속도저하, OOM, CPU사용랑이 높을때 등 발생되는것 같습니다. 해당 내용은 nwds의 SAP Management Console메뉴 > Threads의 Show Call Stack메뉴를 통해서도 볼수 있지만 NWA에서 보는것과는 내용이 달라보입니다.

2022-03-01

SAP ABAP Proxy관련 트랜잭션 코드 SXI_MONITOR와 SXMB_MONI비교 및 메시지포맷설명


예전에 듀얼스택(ABAP)에서 자주 보았던 SXI_MONITOR와 SXMB_MONI의 트랜잭션 코드와 메시지포맷에 대해 정리를 해보았는데요. 현재 싱글스택(온리 자바)에서 EAI업무를 하게되다보니 직접 모니터링하기보다 SAP에서 ABAP Proxy개발을 하는 개발자에게 설명하기 위해 해당 티코드에 대해 가이드를 많이 하게되는 것같습니다.


SXI_MONITOR와 SXMB_MONI의 차이

두개의 티코드에 대한 큰 차이는 없지만 SXMB_MONI는 SXI_MONITOR보다 상위 트랜잭션이라고 말할수 있는 부분이 모니터링 조회화면으로 바로 실행되는 SXI_MONITOR과 다르게 추가로 기본적으로 조회화면 외 

JDBC Sender채널의 Poll Interval(secs) 셋팅 시 0이 왜 필요할까요?

SAP PO에서 DB연계방식으로 사용되는 JDBC Sender 어댑터에서 특정 날,시에만 인터페이스를 수행하기위해서는 채널모니터링의 Availability Planning에서 스케쥴(월,일,시 등) 설정한 항목에 채널을 추가하면 되고 추가로 채널상태는 Stop, Automatic이여야 합니다.

그리고 채널의 Poll Interval(secs)는 보통 86400(24시간)마다 설정하면 지정된 스케쥴 시간에 맞춰 딱 한번 채널이 실행되는데 이 값을 테스트환경에서 Availability Planning설정없이 86400값을 넣으면 24시간마다 채널이 실행이 되는반면에 0으로 넣으면 불필요하게 채널이 실행되지 않아 더 알맞는 값인것 같습니다.

2022-02-19

SAP PO에서 UTF8MB4 데이터처리를 어떻게 해야할까요?


타겟이 MYSQL에서 UTF8MB4관련 에러내용을 본적이 있습니다.
"Incorrect string value: '\xFO\x90\x8D\x83\...' for column '<column name> at row 1"

이전에도 PO매핑 등에서 데이터로 인한 에러가 발생된 경우는 있는데요. 요즘들어 이모지? 등과 같은 유니코드 U+10000이상인 데이터들 원인으로 인한 에러들을 자주 보게 되는것 같습니다.
소스, 타겟 DB나 테이블을 생성 시 서버단에 언어셋과 컬럼타입등을 동일하게 맞추고 인터페이스가 개발이 된다면 데이터로 인한 매핑에러는 거의 없을것 같은데 현실은 그렇지 않은것 같고 이런에러들을 PO안에서 해결을 해야할때가 발생되는것 같은데요. 인터넷에 찾아본 내용들을 간략하게 정리해보았습니다.
정확하지 않는 부분이 있는경우 댓글달아주시면 수정하겠습니다.

2022-02-17

Relationship between EOIO and Sequence Number in SAP PO

SAP PO 큐처리 EOIO와 Sequence Number 관계


SAP PO에서 Message Monitoring 로그들중 순차적으로 처리되는 EOIO방식에 Sequence ID와 Number를 볼수 있는데요. 아이디에는 Proxy이나 JDBC 연계방식에서 사용되는 큐 이름이 들어갈테고 넘버에는 EOIO로 처리되는 메시지마다 시퀀스가 1씩 증가될것입니다. 하지만 큐 이름이 고정인경우 시퀀스가 초기화되지 않고 계속늘어나 나중에 시퀀스가 백만자리까지 보이는경우가 있어 신경이 쓰이는데요. 날짜,시,분,초 등을 붙여서 동적인 큐이름을 만들게 되면 더이상 시퀀스가 무한대로 늘어나 보이지는 않습니다.

Checklist before and after SAP PO server restart

SAP PO서버 재시작 전과 후 체크항목들

PO프로젝트를 하다보면 서버가 다운될때도 있고 운영중인 시스템에 대해 PM작업도 진행하는 경우가 있는데 서버 재시작 전이나 후에 체크할만한 부분을 정리해보았습니다.


PO서버 다운 시 채널중지 필요할까?

메시지 시스템 내에 채널이 실행중인 상태여도 크게 문제가 되지 않다는걸 알고 있는데요. 그래도 운영상 혹시나 생길수 있는 문제(메모리부족 오류 등)를 방지하기 위해서는 채널을 중지해주는게 좋다고 합니다.
참고했던 사이트에서는 아래와 같은 내용을 확인할수 있었는데요.

2022-01-29

What is EJB Session in SAP PO Management Console?

Management Console 모니터링을 하던 중 EJB Session은 항상 수치가 0인 상태로 있는 것을 보게 되었는데 해당 세션은 어떤 연계방식의 인터페이스와 PO어떤기능으로 인해 영향을 받는지 궁금해져서 사이트나 서비스 등을 찾아보긴 했지만 결국에 못찾았습니다.

하지만 항상 그렇듯 이런 궁금증을 찾는 과정중 PO의 새로운걸 알게 되니 좋은것 같습니다.
PO의 자바프록시를 생성 및 개발을 하다보면 EJB라는 용어를 보게 되는데

How to convert numeric data to character in REST Receiver Adapter

SAP PO의 여러 어댑터들 중 Rest Adapter는 유연한 기능으로 인해 많이 사용하게 되는거 같은데요.
내부적으로 Json처리할때 타사의 Jettion라이브러리를 사용하는데 인터페이스 테스트 시 약간의 데이터 구조나 변환작업이 필요한 부분이 발생될수도 이는것 같습니다.

SOAP(XML) to REST(JSON) 인터페이스 테스트 시 소스시스템에서 보낸 숫자데이터가 XML(type:string) to JSON변환 시 quotest("")가 빠지는 모습을 볼수 있습니다.
예를들어
<test>111<test> to {"test":111} 이렇게 변환되는데 문자 결합된 데이터인 't111' 를 보내면 {"test":"t111"}이렇게 처리됩니다.

2022-01-19

What is NWDS(SAP NetWeaver Developer Studio), how to download it and useful plugins


NWDS는 무엇일까?

NetWeaver Developer Studio(NWDS)는 이클립스기반의 SAP Java플랫폼 환경을 지원하는 통합 개발 환경(IDE)이라고 하는데 실제 개발은 http://<po host><port>/dir/start/index.jsp에서 .jnlp 파일 실행한 Tool에서 하는게 익숙해서 그런지 편한것 같습니다. 그리고 NWDS 안에는 여러 유용한 플로그인을 제공해주는데 PO 개발이나 모니터링 업무에 도움을 주는것 같습니다.


유용한 NWDS 플러그인

Management Console

서버별 노드 스레드, FullGC 등 상태를 확인하는데 브라우저에서 애플릿으로 제공되긴 하지만 실행안될때도 있었던것 같아요.
Sender 채널별 스레드 상태 등 Communication Channel 모니터링에서 확인이 어려운 상태들(HANG, LOCK)도 볼수 있어서 유용한것 같습니다.

2022-01-04

SAP PO내에 JMS Queue를 모니터링 할수 있는 방법이 있을까?


실제 SAP PO에서 JMS(Java Message Service) Queue를 사용한 어댑터나 설정들을 사용했던적은 없지만 타 EAI 솔루션에서는 본것 같습니다. EAI업무를 하면서 PO의 플랫폼안에서 개발, 모니터링 등 업무들이 가능하지만 어떤때는 뭔가 불편해 PO업무를 보조하는 다른 어플리케이션을 만들고 싶은 충동도 있고 실제 운영업무에서도 커스텀한 어댑터나 시스템이 사용되고 있는 것 같습니다.

최근글

2026년 6월 12일 데일리 뉴스요약