FORM UPLOAD_EXCEL .
DATA : LT_ALSMEX TYPE TABLE OF ALSMEX_TABLINE. "ALSMEX_TABLINE는 ABAP에서 사용되는 테이블 형식의 데이터 구조체
" LS_ALSMEX TYPE ALSMEX_TABLINE.
CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
EXPORTING
FILENAME = PA_FILE " 받아온 파일 "
I_BEGIN_COL = 1 " 시작 할 열번호 "
I_BEGIN_ROW = 2 " 시작 할 행번호 "
I_END_COL = 256 " 명시한 필드갯수 "
I_END_ROW = 500 " 최대 행갯수 "
TABLES
INTERN = LT_ALSMEX " 해당 테이블에 값 넣기. "
EXCEPTIONS
INCONSISTENT_PARAMETERS = 1
UPLOAD_OLE = 2 " UPLOAD_OLE은 ABAP에서 사용되는 함수, OLE (Object Linking and Embedding) 기술을 사용하여 외부 파일을 업로드
OTHERS = 3.
DATA: LT_DFIES TYPE TABLE OF DFIES.
CALL FUNCTION 'DDIF_FIELDINFO_GET'
EXPORTING
TABNAME = 'ZSFLIGHT'
TABLES
DFIES_TAB = LT_DFIES.
IF LT_DFIES[] IS NOT INITIAL.
DELETE LT_DFIES[] WHERE FIELDNAME = 'MANDT'.
ENDIF.
LOOP AT LT_ALSMEX INTO DATA(LS_ALSMEX).
ASSIGN COMPONENT LS_ALSMEX-COL OF STRUCTURE GS_EXCEL TO FIELD-SYMBOL(<FS_FIELD>).
READ TABLE LT_DFIES INTO DATA(LS_DFIES) INDEX LS_ALSMEX-COL.
IF SY-SUBRC EQ 0.
CASE LS_DFIES-INTTYPE.
WHEN 'P'.
REPLACE ALL OCCURRENCES OF ',' IN LS_ALSMEX-VALUE WITH SPACE.
WHEN 'D'.
REPLACE ALL OCCURRENCES OF '-' IN LS_ALSMEX-VALUE WITH SPACE.
WHEN OTHERS.
ENDCASE.
IF LS_DFIES-CONVEXIT IS NOT INITIAL.
DATA(FUNCTION_NAME) = 'CONVERSION_EXIT_' && LS_DFIES-CONVEXIT && '_INPUT'.
CALL FUNCTION FUNCTION_NAME
EXPORTING
INPUT = LS_ALSMEX-VALUE
IMPORTING
OUTPUT = LS_ALSMEX-VALUE.
ENDIF.
<FS_FIELD> = LS_ALSMEX-VALUE.
ENDIF.
AT END OF ROW.
APPEND GS_EXCEL TO GT_EXCEL.
ENDAT.
ENDLOOP.
GT_LIST[] = CORRESPONDING #( GT_EXCEL[] MAPPING CURRCODE = CURRENCY ).
ENDFORM.
PROFORM만 분석
LT_ALSMEX는 업로드된 Excel 파일의 데이터를 저장하는 데 사용될 내부 테이블이다. ALSM_EXCEL_TO_INTERNAL_TABLE 함수를 통해 업로드된 데이터가 이 테이블에 저장될 것이다.
즉, LT_ALSMEX: 엑셀 파일의 데이터를 저장하는 ABAP 내부 테이블 이고
LT_DFIES: 데이터 사전에서 특정 테이블의 필드 정보를 저장하는 ABAP 내부 테이블 이다.
데이터 사전이 무엇일까
데이터 사전(Data Dictionary)은 SAP 시스템에서 데이터 구조와 관련된 모든 정보를 관리하고 저장하는 중요한 부분임.
데이터 사전은 데이터베이스 개체(테이블, 뷰, 인덱스 등)의 정의와 메타데이터(데이터에 대한 데이터)를 포함하며, SAP 시스템에서 데이터 관리와 관련된 다양한 기능을 제공 함.
a. 테이블 정의: 데이터베이스 테이블의 구조와 관련된 정보를 정의합니다. 이는 필드의 이름, 데이터 형식(문자열, 숫자 등), 길이, 키 여부(기본 키, 외래 키) 등을 포함합니다.
b. 도메인: 데이터 유형(예: 문자열, 숫자, 날짜 등)에 대한 정의를 포함하며, 이는 특정 테이블 필드의 데이터 형식을 정의하는 데 사용됩니다.
c. 뷰(View): 하나 이상의 기본 테이블로부터 데이터를 검색하는 논리적 구조를 정의합니다. 뷰는 복잡한 데이터 추출이나 보고서 작성 등에 사용될 수 있습니다.
d. 인덱스(Index): 테이블에서 데이터 접근을 빠르게 하기 위해 필드의 정렬된 집합을 정의합니다. 인덱스는 검색 속도를 향상시키며, 특정 필드의 고유성을 보장하는 데도 사용됩니다.
e. 구조체 및 유형(Type): ABAP 프로그램에서 사용할 수 있는 복합 데이터 형식을 정의합니다. 예를 들어, 여러 필드를 하나의 논리적 단위로 그룹화하는 구조체를 정의할 수 있습니다.
f. 도메인 메타데이터: 도메인에 대한 추가 메타데이터 정보를 포함합니다. 예를 들어, 도메인에 대한 설명, 입력 도움말, 값 범위 등을 정의할 수 있습니다.
데이터 사전은 SAP 시스템의 데이터 일관성과 유지 보수를 보장하며, 데이터 모델링 및 개발 과정에서 중요한 역할을 한다. 개발자는 데이터 사전을 사용하여 데이터 구조를 정의하고 이를 기반으로 프로그램을 개발하며, 데이터의 정확성과 일관성을 유지할 수 있다.
GT_LIST[] = CORRESPONDING #( GT_EXCEL[] MAPPING CURRCODE = CURRENCY ).