분류 전체보기105 [OpenSQL] Internal Table을 이용한 JOIN (FOR ALL ENTRIES 대체) OpenSQL에서 Internal Table을 이용한 JOIN 사용 FOR ALL ENTRIES 대체 (단, 대량의 데이터는 성능 이슈 존재) ABAP New syntax 의 Open SQL에서 For all entries를 대신해서 Internal Table을 쿼리문에 직접 Join 할 수 있습니다 Inner join, outer join 모두 사용 가능하며 이로 인해 좀더 간단하게 쿼리문 작성이 가능해 졌습니다. # 사용예시 DATA LT_BSEG TYPE STANDARD TABLE OF BSEG. SELECT BUKRS, BELNR, GJAHR FROM BKPF WHERE GJAHR EQ '2022' INTO TABLE @DATA(LT_BKPF) UP TO 10 ROWS. IF SY-SUBRC NE.. 2023. 7. 18. [Syntax] VALUE - structure 와 internal table에 값 할당 VALUE ABAP New syntax 인 VALUE는 move-corresponding 및 append와 유사한 기능을 수행합니다. Structure에 사용시 초기화 후 move-corresponding 형태로 값을 할당합니다. Internal Table에 사용시 초기화 후 append 형태로 값을 추가 합니다. * BASE 문을 이용하여 Internal Table을 초기화하지 않고 append가 가능합니다 workarea를 이용한 append를 완전히 대체하긴 어렵지만 간단히 사용하기에는 아주 편리합니다. # 사용예시 TYPES: BEGIN OF T_TMP, BUKRS TYPE T001-BUKRS, BUTXT TYPE T001-BUTXT, END OF T_TMP. TYPES TT_TMP TYPE TA.. 2023. 7. 18. [Syntax] COND, SWITCH 문 (SQL의 case문과 유사) COND, SWITCH ABAP New syntax 중 하나로 조건에 따라 값을 지정해주는 구문으로 ABAP의 CASE 보다는 SQL의 CASE 문과 사용 방법이 비슷합니다 # 사용 예시 DATA: LV_QUERY TYPE C VALUE 'C', LV_RESLT TYPE I. "CASE ------------------------------------------- CASE LV_QUERY. WHEN 'A'. LV_RESLT = 1. WHEN 'B'. LV_RESLT = 2. WHEN 'C'. LV_RESLT = 3. WHEN OTHERS. LV_RESLT = 0. ENDCASE. WRITE:/ LV_RESLT. "COND ------------------------------------------- LV.. 2023. 7. 18. [Syntax] Internal Table 레코드 수 및 Read table 구문 Internal Table 레코드 수 Read Table ABAP New syntax를 이용하여 좀더 간결하게 개발이 가능합니다 # 사용예시 DATA: LT_T001 TYPE SORTED TABLE OF T001 WITH UNIQUE KEY BUKRS, LS_T001 LIKE LINE OF LT_T001, LV_BUKRS TYPE T001-BUKRS, LV_TABIX TYPE SY-TABIX. SELECT * FROM T001 INTO CORRESPONDING FIELDS OF TABLE @LT_T001. IF SY-SUBRC NE 0. EXIT. ENDIF. ** Internal table 레코드 수 ------------------------------------------------- "Old Sy.. 2023. 7. 18. [Syntax] REDUCE - 축소 연산자 REDUCE 축소 연산자 ABAP New syntax 중 하나인 REDUCE 구문 입니다. 단순한 집계 같은 경우 LOOP 보다 사용이 간편하고 성능도 우수하다 합니다. # 사용 예시 SELECT * FROM T001 INTO TABLE @DATA(LT_TMP). " 기존 LOOP SUM 구문 DATA LV_CNT TYPE I VALUE 0. LOOP AT LT_TMP INTO DATA(LS_TMP) WHERE XTEMPLT EQ SPACE. LV_CNT += 1. ENDLOOP. WRITE:/ LV_CNT. CLEAR LV_CNT. " REDUCE 를 이용한 COUNT LV_CNT = REDUCE I( INIT X = 0 FOR LS IN LT_TMP WHERE ( XTEMPLT EQ SPACE ) N.. 2023. 7. 12. [Function] Internal Table 엑셀 다운로드(XLSX 형식) 인터널 테이블 엑셀 다운로드 ZCM_ITAB_FILE_DOWNLOAD_DIALOG ZCM_ITAB_FILE_DOWNLOAD Internal Table의 데이터를 SALV class를 이용하여 XLSX 형식 엑셀 파일로 다운로드 하는 Function입니다. ALV에서 스프레드시트로 내보내기 하는 것과 동일한 형식으로 다운로드 됩니다. ABAP 내에서 E-Mail이나 oData 등에서 엑셀 파일의 Binary 처리하기 위해 "Internal Table -> Excel" Function과 Dialog Function 2개로 나누어 개발했습니다. # 소스코드 ZCM_ITAB_FILE_DOWNLOAD Internal Table의 데이터를 XLSX형식 엑셀 파일로 Binary 데이터(EV_BINTAB)으로 반환 F.. 2023. 7. 11. [Function] ZCM_EXCEL_UPLOAD - 필드 점검 및 변환 엑셀 업로드 ZCM_EXCEL_UPLOAD 필드 점검 및 변환 엑셀 업로드 ALSM_EXCEL_TO_INTERNAL_TABLE # 2023.09.06 수정 : 소스코드를 좀더 간결하게 수정, 금액필드의 통화에따른 Input형식 변환 추가 ABAP에서 엑셀 업로드 프로그램 개발시 정해진 양식에 올바르게 값을 넣지 않을 경우(주로 숫자 형식의 항목에 문자를 넣을 경우) 아래와 같이 필드 컨버전 오류가 발생하게 됩니다. 이런 경우 많은 개발자들이 Excel 데이터를 받은 후에 숫자에 해당하는 항목을 replace 문으로 특수문자를 제거하는 식으로 하고 있으나 후 처리를 위해 잔손이 많이 가고, 사용자들의 기행으로 인해 완벽한 예외처리가 되지 않아 종종 덤프가 발생하게 됩니다. 엑셀 업로드의 근본적인 문제 해결과 개발 편의.. 2023. 7. 10. 이전 1 ··· 7 8 9 10 11 12 13 ··· 15 다음