안녕~!
엑셀파일의 내용을 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번 스크린을 통해 화면을 보여주는거고
아니면 워닝 메세지를 띄우도록 설정 햇 따 ~!

결과는... 보여줄 수없지만 대충 이러하다.
만약 데이터 타입이 다르거나 누락된 필드가 존재한다면 '필드 누락:' 글자 뒤에 필드명을 나열하고,
코드는 정상인데 삭제되었거나 텍스트테이블에 조회되지 않는 코드라면 '유효하지 않은 데이터:' 글자 뒤에 리스트업하게 함.
이게 끝임 움캬!
'SAP > ABAP' 카테고리의 다른 글
| [ABAP] OLE로 엑셀 다운로드 만들어보기 (간단 ver.) (0) | 2024.11.26 |
|---|---|
| [ABAP] OLE 로 엑셀 다운로드 만들어보기(복잡 ver.) (4) | 2024.11.14 |
| [ABAP] 소수점 맨끝자리 0 안 보이게 만들기 (0) | 2024.11.12 |
| [ABAP] 이진법 변환입니다 근데 이제 음수도 고려한 (0) | 2024.11.08 |
| [SELECTION-SCREEN] user-command in Parameter (0) | 2024.10.24 |