ABAP EXCEL 프로그램3
P_FILE 도움말 만드는 쪽에 디버깅을 걸어서 본다.
객체 생성 및 메서드 호출
•
CREATE OBJECT OBJFILE.: 객체 OBJFILE 생성.
•
OBJFILE->GET_TEMP_DIRECTORY: 객체의 메서드를 호출하여 임시 디렉토리 경로를 가져온다.
•
CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG: CL_GUI_FRONTEND_SERVICES 클래스의 메서드를 사용하여 파일 열기 대화 상자를 호출한다.
◦
CHANGING 파라미터
▪
FILE_TABLE: 선택된 파일 경로를 저장.
▪
RC: 읽어온 파일 개수를 반환.
이벤트 처리: START-OF-SELECTION과 END-OF-SELECTION
1.
START-OF-SELECTION
•
프로그램 시작 시 실행.
•
데이터 취합 로직 배치.
•
조건에 따라 다음과 같이 분기:
◦
r1: 파일 업로드 및 데이터 처리 로직.
◦
r2: 데이터 조회.
◦
r3: 데이터 삭제.
IF r1 = 'X'.
PERFORM CHECK_BEFORE_PROCESS.
PERFORM UPLOAD_FROM_EXCEL.
PERFORM GET_DATA.
ELSEIF r2 = 'X'.
PERFORM GET_NEEDED_DATA.
ELSEIF r3 = 'X'.
PERFORM DEL_DATA.
ENDIF.
ABAP
복사
2.
END-OF-SELECTION
•
선택 종료 후 출력 로직 실행.
•
데이터 출력 스크린 호출 (CALL SCREEN).
•
데이터 존재 여부에 따라 메시지 출력 가능.
스크린 플로우 로직 및 이벤트 처리
•
PBO (Process Before Output):
◦
화면 출력 전에 실행.
◦
모듈 호출 예제
MODULE STATUS_0100.
MODULE SET_ALV_0100.
ABAP
복사
•
PAI (Process After Input)
◦
사용자 입력 후 실행.
◦
버튼 이벤트 처리
MODULE USER_COMMAND_0100.
MODULE SAVE_DATA.
MODULE EDIT_DATA.
ABAP
복사
ALV (ABAP List Viewer) 설정
1.
필드 카탈로그 정의
•
DEFINE _FCAT 매크로를 사용하여 필드 정의.
_FCAT: 'ZSTATUS' '상태' 'X' '' '3' '',
'MANDT' '클라이언트' 'X' '' '5' '',
'CARRID' '아이디' 'X' '' '5' ''.
ABAP
복사
2.
레이아웃 설정
•
GS_LAYOUT를 통해 행 강조, 최적화, 선택 모드 정의.
GS_LAYOUT-ZEBRA = 'X'.
GS_LAYOUT-CWIDTH_OPT = 'A'.
GS_LAYOUT-SEL_MODE = 'D'.
ABAP
복사
3.
ALV 출력 메서드 호출
•
SET_TABLE_FOR_FIRST_DISPLAY를 사용하여 데이터 및 필드 카탈로그 출력.
CALL METHOD GO_GRID->SET_TABLE_FOR_FIRST_DISPLAY
EXPORTING
IS_LAYOUT = GS_LAYOUT
CHANGING
IT_OUTTAB = GT_ZSC
IT_FIELDCATALOG = GT_FCAT.
ABAP
복사
더블 클릭 이벤트 처리
•
SET HANDLER를 사용하여 더블 클릭 이벤트 핸들링.
CREATE OBJECT g_event_receiver.
SET HANDLER g_event_receiver->handle_double_click FOR GO_GRID.
ABAP
복사
1. 파일 업로드 및 변환 처리
1.
GUI_UPLOAD
•
데이터를 SAP 시스템으로 업로드하기 위해 사용.
•
EXPORTING 파라미터
◦
filename: 업로드할 파일 경로 (예: lv_filename).
◦
filetype: 파일 타입 지정 ('BIN' 또는 'ASC').
•
IMPORTING 파라미터
◦
filelength: 파일 크기(문자 개수).
◦
header: 엑셀 구조와 관련.
•
TABLES 파라미터
◦
data_tab: 업로드된 데이터를 담을 테이블 (예: lt_records).
2.
SCMS_BINARY_TO_XSTRING
•
바이너리 데이터를 XSTRING 형태로 변환.
•
주요 파라미터
◦
input_length: 변환할 데이터 길이.
◦
buffer: 변환된 결과 (XSTRING 데이터).
2. 엑셀 데이터 핸들링
•
cl_fdt_xl_spreadsheet 클래스 사용
◦
NEW 키워드를 통해 엑셀 파일 로드
lo_excel_ref = NEW cl_fdt_xl_spreadsheet(
document_name = lv_filename
xdocument = lv_headerxstring ).
ABAP
복사
◦
메서드 호출:
▪
get_worksheet_names: 시트 이름 목록 반환.
▪
get_itab_from_worksheet: 특정 시트 데이터를 내부 테이블로 변환.
•
필드 심볼로 데이터 참조
◦
필드 심볼 선언
FIELD-SYMBOLS: <gt_data> TYPE STANDARD TABLE.
ABAP
복사
◦
동적 데이터 참조
ASSIGN lo_data_ref->* TO <gt_data>.
ABAP
복사
3. 데이터 검증 및 처리
•
MOVE-CORRESPONDING
◦
동일한 구조의 데이터를 쉽게 이동.
◦
사용 예
MOVE-CORRESPONDING gs_excel TO gs_zsc.
ABAP
복사
•
중복 데이터 검증
◦
READ TABLE과 BINARY SEARCH를 활용
▪
이진 검색은 테이블이 정렬되어 있어야 함.
◦
중복된 데이터에 대해 에러 처리
IF sy-subrc = 0.
gs_zsc-zstatus = ICON_LED_RED.
gs_zsc-zresult = '[중복된 데이터]'.
ENDIF.
ABAP
복사
4. ALSM_EXCEL_TO_INTERNAL_TABLE
•
구 버전의 엑셀 업로드 기능으로 ALSM_EXCEL_TO_INTERNAL_TABLE 추천.
•
5. 스크린 프로그래밍 (디버깅 및 라디오 버튼 처리)
•
PERFORM 호출 구조
IF r1 = 'X'.
PERFORM upload_from_excel.
ELSEIF r2 = 'X'.
PERFORM get_needed_data.
ENDIF.
ABAP
복사
•
라디오 버튼은 동일 그룹 내 단일 선택만 가능.
6. 아이콘 및 메시지
•
상태 표시용 아이콘
gs_zsc-zstatus = ICON_LED_GREEN. " 성공 아이콘
ABAP
복사
•
누적 메시지:
gs_zsc-zresult = gs_zsc-zresult && '[오류 메시지]'.
ABAP
복사
7. 디버깅 및 필드 체크
•
디버깅 시 주요 변수 추적
◦
gs_zsc 데이터 구조 확인.