반응형

Java에서 SAP와 RFC 통신을 하는데, 우리가 데이터를 담아 SAP 쪽으로 데이터를 송신하고, 그것에 대한 결과를 리턴 받는 경우가 종종 생긴다. 근데, 리턴을 받을 때, Key와 Value 형태를 가져와서 HashMap에 담고 싶은데, getExportParameterList에서 어떻게 꺼내와야 할지 모르면 이 글을 보면 된다. 이번 글에는 function.getExportParameterList()에서 Key값을 가져오고, 그 Key 값에 매핑되어 있는 Value까지 가져오는 방법에 대해 기록한다.


목차

1. JCoFunction 형태
2. getListMetaData()를 사용하여 Key, Value 가져오기

1. JCoFunction 형태

위의 글에서 아래의 코드를 설명했다. 

function.getExportParameterList();

이 function에 대한 정의는 다음과 같다. RFC 이름을 가지고 있는 JCoFunction에 대한 객체를 의미한다. 우리는 이 객체를 통해서 파라미터를 담은 리스트를 JCoParameterList에 import 한다.

JCoFunction function = destination.getRepository().getFunction("RFC 이름");

 

데이터를 넣어 RFC를 호출하게 되면, 리턴 값을 SAP에서 던져주게 되는데, 이 경우에 우리는 JcoFunction에서 export한 리스트에서 그 데이터를 직접 꺼내야 한다. 이 때 사용하는 것이 아래의 코드다. 이런 식으로 변수 이름에 해당하는 데이터를 가져와서 사용한다.

Object test = function.getExportParameterList().getValue("변수 이름");
String str = String.valueOf(test);

 

근데, 1개씩 보낸다면 상관 없겠지만, 리턴 받는 값이 10개 이상이면 10개에 대한 것을 다 코딩을 해야 한다. 거기에, 그 RFC가 1개가 아니라 20개 정도가 있으면 개노가다를 해야 한다.

 

이 경우를 막기 위해 아래와 같이 사용하면 된다.

 

2. getListMetaData()를 사용하여 Key, Value 가져오기

위의 개노가다를 막기 위해 사용하는 것이 getListMetaData()이다.

처음에는 Iterator를 사용하려고 했는데, 값을 꺼내는게 좀 힘들어서 찾아봤더니 getListMetaData라는 함수가 있어서 그것을 통해 꺼내와서 세팅을 할 수 있다.

JCoListMetaData iter = function.getExportParameterList().getListMetaData();
	    	
for(int i = 0; i < iter.getFieldCount(); i++) {
	String key = iter.getName(i);
	returnMap.put(key, function.getExportParameterList().getValue(key));
}

 

위와 같이 JCoListMetaData를 만들고, 반복문을 돌려 getName을 통해 key를 추출하고, function.getExportParameterList().getValue(key)를 사용하여 해당 Key의 Value를 가져올 수 있다.

 


 

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기