안녕~!

엑셀파일의 내용을 ALV 로 출력하는 과정을 정리하려구 한다.

먼저 업로드를 위해서는 파일 경로를 불러오는 기능이 필요하다.

1. 파일 경로 불러오기(SEARCH HELP)

selection screen 만들어주기. 해당 파라미터 변수 이름은 pa_file 로 지정했따

그리고 f4 서치헬프 달아주기~!

나는 해당 메서드를 사용함요

엑셀 파일만 찾아서 오픈하게 기본 확장자와 필터를 모두 엑셀로맞췄다.

여기서 값을 가져온다면 lt_table에 경로와 lv_rc에 성공여부를 코드로 반환해줌요

잘 들어옴요 ^_^ 이제 경로를 불러왔으면 실행버튼으로 해당 엑셀 파일을 열어볼것이다

2. EXCEL 파일 읽어오기

초기값이면 읽어오는 서브루틴이 작동 못하게...! 막아쥬고 시작.

처음은 파일 기반 데이터를 채워주고(하이라이트 표시)

데이터를 정상적으로 alv용 itab 에 옮겨담았을 시(= 값이 존재할때) 부가정보(신호등, 텍스트 등등...)를 추가해준 후에 출력해주는 것이다

파일을 가져오기 위해서 필요한 변수들. 나머지는 형변환용 변수니까 참고만 하고 신경쓰지 마쇼잉!!

 

엑셀 데이터를 가져올 때 아밥 상에서는 모든 걸 문자형으로 가져오게됨

그리고 금액같은 경우는 코드를 거칠 때 통화 때문에 값이 달라지게 되는데 그것 또한 DB 저장 시 금액으로 재적용해줘야 할 때도 있고, 혹은 conversion exit 을 통해 하나씩 형변환을 해줘야할 때가 있음요

이때 사용할 수 있는게 뭐시냐!!

바로 DFIES 테이블 입니다.

2-1. 타입 정보 빼내기

글로벌 스트럭쳐/테이블 에 대하여 각 정보를 담아서 출력해주는 구조거든여.

그래서 로컬로 따로 선언하고 하나씩 바꿔줘도 좋지만~! 저는 글로벌 스트럭쳐를 선언해두고,

타입명을 기준으로 데이터를 조회해서 쓰고있음요

실제루다가. 이렇게 뜹니다. 여기서 필요한 정보를 사용하면 되아요

2-2. 엑셀 파일 데이터 빼내기

엑셀 파일은 아래 펑션을 사용하면 됩니다.(위 코드랑 이어짐)

엑셀 값은 이렇게 행 / 열 / 값 필드 구조로 가져오게 됩니다.

ex) (1)행 (1)열에는 (값) 이 들어가있다.

그러니 당연히 엑셀파일도 필드 순서대로 데이터를 넣어놔야겠죠?!

 

그리고... 그리고 이제 루프와 필드심볼을 이용해서 필드 하나하나에 값을 할당해주면 됩니다.

2-3. 필드에 값 할당해주기

루프 사용방법은 이러하다: 

1. 값이 들어있는 lt_intern을 기준으로 루프를 돌린다

2. 컬럼값을 이용하여 필드를 지정한다(by 필드심볼)

3. 컬럼값을 이용하여 lt_dfies의 정보를 읽어와서 형변환을 해준다

4. 필드에 해당 값을 할당해준다

4. 모든 필드에 대한 할당 작업이 끝나면 보여주고자 하는 work area 에 move-corresponding & itab append 해준다

꺄르르

중간중간 있는 부가적인 코드들은 다 타입 맞춰주기 위한 작업들임.

참고로 ls_data 는 순전히 글로벌 스트럭처 필드들만 존재하는 타입 변수고,

gs_upload는 글로벌에다가 필드명, 신호등 등 별도의 필드를 추가한 전혀 다른 구성의 스트럭쳐 변수다.

itab 상에서 move-corresponding 이 가능하면 그렇게 하시오.

 

참고로 !!!!

나만 그랬는진 모르겠지만 ... 환율 적용하는 부분에서 조금 머리아픈 이슈가 있었다.

이건 나중에 따로 적어볼 예정이지만 암튼 금액적인 부분에서도 뭔가 해줘야한다는거 ~

이렇게 해서 gt_upload 인터널 테이블에 데이터가 들어와있다면, 100번 스크린을 통해 화면을 보여주는거고

아니면 워닝 메세지를 띄우도록 설정 햇 따 ~!

결과는... 보여줄 수없지만 대충 이러하다.

만약 데이터 타입이 다르거나 누락된 필드가 존재한다면 '필드 누락:' 글자 뒤에 필드명을 나열하고,

코드는 정상인데 삭제되었거나 텍스트테이블에 조회되지 않는 코드라면 '유효하지 않은 데이터:' 글자 뒤에 리스트업하게 함.

 

이게 끝임 움캬!

+ Recent posts