*&---------------------------------------------------------------------*
*& Include YABAP18_TEMP_F02
*&---------------------------------------------------------------------*
*1. SMW0 FILE DOWNLOAD - DOWN_SMW0_FILE
*2. 1000번 화면에 버튼 추가 - SET_SCREEN_ICON
*3. 문서파일 실행 - EXECUTE_FILE
*4. F4 FILE PATH - F4_FILE_PATH
*5. EXCEL UPLOAD - UPLOAD_EXCEL_FILE
* EXCEL ITAB 을 GT_OUTTAB으로 - MOVE_DATA
*6. 몇개월 전후의 날짜 - ADD_MONTH_TO_DATE
*7. 생산오더로 시스템 상태를 읽음 - BAPI_BUS2002_GET_STATUS
*8. 코스트센터 그룹으로 코스트센터(KOSTL) 조회 - BAPI_COSTCENTERGROUP_GETDETAIL
*9. 코스트센터 그룹 목록 조회 - BAPI_COSTCENTERGROUP_GETLIST
*10. 원그요소그룹으로 원가요소(KSTAR) 목록 조회 - BAPI_COSTELEMENTGRP_GETDETAIL
*11. 코스트엘리먼트그룹 목록 조회 - BAPI_COSTELEMENTGRP_GETLIST
*12. 오더그룹으로 오더(AUFNR) 목록 조회 - BAPI_INTERNALORDRGRP_GETDETAIL
*13. BAPI TRANSACTION - BAPI_TRANSACTION
*14. 날짜 년,월,일 + - 계산 - CALC_DATE_IN_INTERVAL
*15. 자산번호 조회 AUFNR - CALL_AS03
*16. 자산 상세 내역 조회 AUFNR - CALL_AW01N
*17. WBS코드 조회 POSNR - CALL_CJ03
*18. CMOD 조회 - CALL_CMOD
*19. 생산오더 조회 AUFNR - CALL_CO03
*20. DMS문서 조회 - CALL_CV03N
*21. 전표 조회 BELNR - CALL_FB03
*22. 고객조회 KUNNR - CALL_FD03
*23. 거래처 조회 LIFNR - CALL_FK03
*24. MAINTENANCE ORDER조회 AUFNR - CALL_IW33
*25. 코스트 엘리먼트 조회 KOKRS KSTAR - CALL_KA03
*26. 코스트 엘리먼트 그룹 조회 KOKRS KSGRU - CALL_KAH3
*27. 개별항목 조회 BELNR PERIO ERKRS KOKRS - CALL_KE24
*28. 내부오더,투자오더 조회 EAUFN - CALL_KO03
*29. 코스트 센터 조회 KOSTL KOKRS - CALL_KS03
*30. 관리회계 CO 전표 조회 KOKRS BELNR - CALL_KSB5
*31. 코스트센터그룹 조회 KOKRS KSGRU - CALL_KSH3
*32. 자재문서 조회 MBLNR MJAHR - CALL_MB03
*33. 재고 소요량 조회 MATNR WERKS - CALL_MD04
*34. 구매오더 조회 EBELN - CALL_ME23N
*35. 자재 조회 MATNR WERKS - CALL_MM03
*36. 장기계획 재고 소요량 조회 PLSCN MATNR WERKS - CALL_MS04
*37. 배치 조회 MATNR CHARG WERKS LGORT - CALL_MSC3N
*38. INSPECTION LOT 조회 PRUEFLOS - CALL_QA03
*39. 사용결정 조회 - CALL_QA13
*40. CALL SMOD - CALL_SMOD
*41. 사용자 정보 조회 SU01 - CALL_SU01D
*41. 판매오더 조회 VBELN - CALL_VA03
*42. 빌링문서 조회 VBELN - CALL_VF03
*43. 납품문서 조회 VBELN - CALL_VL03N
*44. 고객 CUSTOMER 조회 KUNNR - CALL_XD03
*45. VENDOR 조회 - CALL_XK03
*46. 날짜를 체크하고 각 유저별 포맷으로 변환 - CHK_GLOBAL_DATE
*47. 오더 상태 조회 AUFNR - CHK_ORDER_STATUS
*48. CONV_EXIT_ALPHA_INPUT
*49. CONV_EXIT_ALPHA_OUTPUT
*50. CONV_EXIT_ATINN_INPUT
*51. CONV_EXIT_ATINN_INPUT
*52. CONV_EXIT_MATN1_INPUT
*53. CONV_EXIT_MATN1_OUTPUT
*54. CONV_EXIT_NUMCV_INPUT
*55. CONV_EXIT_NUMCV_OUTPUT
*56. FLTP TYPE 값을 CHAR TYPE DMFH QUSRUD - CONV_FLTP_TO_CHAR
*57. 통화 변경 - LOCAL - CONV_TO_LOC_CURR
*58. 통화 변경 - CONV_TO_FOR_CURR
*59. 통화별로 표시된 금액을 SAP TABLE 입력 형식으로 변 - CURR_AMT_IDOC_TO_SAP
*60. SAP 금액을 통화별로 표시된 금액으로 변경 - CURR_AMT_SAP_TO_IDOC
*61. 통화의 FACTOR 를 반환 - CURR_CONV_FACTOR
*62. 날짜 정합성 체크 - DATE_CHECK_PLAUSIBILITY
*63. 테이블 정보 - DDIF_FIELDINFO_GET
*64. 화면 필드의 값을 읽음 - DYNP_VALUES_READ
*65. 화면 필드 업데이트. 단일값 - DYNP_VALUES_UPD
*66. 화면 필드 업데이트. 여러값 - DYNP_VALUES_UPD_M
*67. 로컬PC에 파일이 존재하는지 체크 - FILE_EXIST
*68. DOMAIN VALUE - GET_DOMAIN_TAB
*69. DOMAIN TEXT - GET_DOMAIN_TEXT
*70. 언어별 도메인 내역 - GET_FIELD_DESC
*71. 파일명 읽는 팝업 - GET_FILE_NAME
*72. 여러 파일 선택 가능한 팝업 - GET_FILE_NAME_MULTI
*73. FILE NAME을 경로, 파일명, 확장자로 나눔 - GET_FILE_NAME_SPLIT
*74. FILE NAME을 경로, 파일명(확장자없는) 확장자로 나눔 - GET_FILE_NAME_SPLIT_2
*75. 해당일자의 말일 - GET_LAST_DAY_OF_MONTH
*76. 오더 상태 - GET_ORDER_STATUS
*77. 검사로트번호로 사용결정코드를 구함 - GET_UD_CODE
*78. SAP USER ID로 이름을 읽어옴 - GET_SAP_USER_NAME
*79. GUI_DOWNLOAD
*80. SMW0에 등록된 양식파일을 다운로드 - GUI_DOWNLOAD_SMW0
*81. 휴일인지 체크하고 이전, 다음일로 반환 - HOLIDAY_GET
*82. 백그라운드 JOB을 CLOSE(실행) 한다. - JOB_CLOSE
*83. 백그라운드 JOB을 생성한다. - JOB_OPEN
*84. - K_HIERARCHY_TABLES_READ
*85. 코스트 센터에 대한 오브젝트 번호 - KOSTL_OBJECT_KEY_GET
*86. MESSAGE를 ITAB에 추가한다. - MESSAGE_APPEND_IT
*87. BAPI 수행후 MESSAGE를 한문장으로 만든다 - MSG_BUILD_BAPI
*88. BDC 수행 후 MESSAGE를 한문장으로 만든다. - MESSAGE_BUILD_BDC
*89. SYSTEM 메세지를 한문장으로 만든다. - MESSAGE_TEXT_BUILD
*90. BAPI 수행후 MESSAGE를 팝업으로 띄운다. - MSG_POP_BAPI
*91. BDC 수행후 MESSAGE를 팝업으로 띄운다. - MSG_POP_BDC
*92. FI 구조체 MESSAGE를 팝업으로 띄운다. - MSG_POP_FI
*93. SYST의 MESSAGE 정보를 BAPI 메세지 정보로 변경 - MSG_SYST_TO_BAPI
*94. NUMBER RANGE 생성, SNRO - NUMBER_GET_NEXT
*95. INPUT 값이 숫자만으로 되어있는지 체크. - NUMERIC_CHECK
*96. 팝업 확인창 - POPUP_CONF
*97. 팝업 확인창 , 버튼이름 지정 - POPUP_CONF2
*98. 팝업 확인창 , 버튼이름과 아이콘 지정 - POPUP_CONF3
*99. 진행 상태 메시지 표시 - PROGRESS_DISPLAY
*100. '-' 부호를 앞으로 보냄 - PUT_SIGN_IN_FRONT
*101. 환율을 RETURN - READ_EXCHANGE_RATE
*102. 텍스트 조회 - READ_TEXT
*103. 텍스트 저장 - SAVE_TEXT
*104. 텍스트 삭제 - DELETE_TEXT
*105. 반올림, 올림, 내림 - ROUND
*106. INCLUDE 프로그램을 던지면 MAIN프로그램 리턴 - RS_GET_MAINPROGRAMS
*107. OBJECT (프로그램 OR FUNCTION) 조회 - RS_TOOL_ACCESS
*108. 원가요소 범주 조회 KOKRS KSTAR - SEL_CSKB_KATYP
*109. 공급업체 정보 LIFNR - SEL_LFA1
*110. 자재에 대한 저장위치데이터 재고 구함 - SEL_MARD
*111. 사번으로 이름 조회 - SEL_PA0001_SNAME
*112. WBS(작업분할구조) 요소 마스터 데이터에서 오브젝트 번호 조회 - SEL_PRPS_OBJNR
*113. 회사코드로 통화 조회 - SEL_T001_WAERS
*114. 저장위치내역으로 저장위치 조회 - SEL_T001L
*115. 시스템 상태 4자리 코드로 시스템 상태 코드 조회 - SEL_TJ02T
*116. 관리회계영역으로 경영 단위 조회 KOKRS ERKRS - SEL_TKA01_ERKRS
*117. 통계주요 지표 조회 KOKRS STAGR MSEHI - SEL_TKA03_MSEHI
*118. - SELECT_OPTIONS_RESTRICT
*119. DB LOG 기록 - SET_DB_LOG
*120. 테이블 필드정보로 CONVERSION 수행 - SMAN_IF_CONVERT_TO
*121. SMARTFORMS FUNCTION MODULE 이름을 구함 - SSF_FUNCTION_MODULE_NAME
*122. 문자열의 길이를 구함 - STRING_LENGTH
*123. 문자 변경 - STRING_REPLACE
*124. 문자 변경 (날짜) - STRING_REPLACE_DATE
*125. - TR_OBJECT_JUMP_TO_TOOL
*126. ROLE 내역 AGR_NAME - TXT_AGR_NAME
*127. 특성 내역 ATNAM ATBEZ - TXT_ATNAM
*128. 오더 유형 내역 조회 AUART (PP) - TXT_AUART_PP
*129. 오더 유형 내역 조회(SD) AUART BEZEI - TXT_AUART_SD
*130. 오더 내역 AUFNR - TXT_AUFNR
*131. 오더 사유 내역 AUGRU BEZEI - TXT_AUGRU
*132. 평가클래스 내역 BKLAS BKBEZ - TXT_BKLAS
*133. 전표유형 내역 BLART - TXT_BLART
*134. 회사코드 내역 - TXT_BUKRS
*135. 사업장 내역 BUPLA - TXT_BUPLA
*136. 이동유형 내역 BWART - TXT_BWART
*137. DMS 문서 텍스트 - TXT_DOKNR
*138. 외부자재그룹 내역 EKTWG EWBEZ - TXT_EXTWG
*139. 예산관리센터 내역 FIKRS FICTR BEZEICH - TXT_FICTR
*140. FUNCTION 내역 - TXT_FUNCNAME
*141. 이동사유 내역 BWART GRUND GRTXT - TXT_GRUND
*142. 사업영역 내역 GSBER GTEXT - TXT_GSBER
*143. - TXT_HERKUNFT
*144. 유지보수 액티비티 유형명 ILART - TXT_ILART
*145. 고객 그룹 내역 KDGRP - TXT_KDGRP
*146. 관리회계영역 내역 KOKRS BEZEI - TXT_KOKRS
*147. 코스트센터 내역 KOKRS KOSTL LTEXT - TXT_KOSTL
*148. 원가요소 내역 KTOPL KSTAR - TXT_KSTAR
*149. 고객 내역 KUNNR - TXT_KUNNR
*150. 공급업체 내역 LIFNR - TXT_LIFNR
*151. 유동성 항목 내역 LQPOS S_TEXT - TXT_LQPOS
*152. 자재그룹 내역(포장자재)MAGRV BEZEI - TXT_MAGRV
*153. 자재그룹 내역 MATKL WGBEZ - TXT_MATKL
*154. 자재내역 MATNR MAKTX - TXT_MATNR
*155. 자재유형 내역 MTART MTBEZ - TXT_MTART
*156. 평가그룹내역 ORDNR ORD4X ORDTX - TXT_ORD4X
*157. 조직 단위 내역 ORGEH ENDDA ORGTX - TXT_ORGEH
*158. 사원그룹 내역 PERSG - TXT_PERSG
*159. 사원 하위그룹 내역 PERSK - TXT_PERSK
*160. 손익센터 내역 KOKRS PRCTR - TXT_PRCTR
*161. 생산계층 내역 PRODH VTEXT - TXT_PRODH
*162. 프로그램 내역 PROGNAME - TXT_PROGNAME
*163. 프로세스 범주 내역 PTYP - TXT_PTYP
*164. 검사 카탈로그 코드 내역 KATALOGART CODEGRUPPE KURZTEXT - TXT_QCODE
*165. 검사 카탈로그 코드 그룹 내역 KATALOGART CODEGRUPPE KURZTEXT - TXT_QCODEGRP
*166. - TXT_RCOMP
*167. 계정 내역 KTOPL SAKNR TXT20 TXT50 - TXT_SAKNR
*168. 섹션 코드 내역 BUKRS SECCODE - TXT_SECCODE
*169. 세트클래스 내역 SETCLS SETCLASS DESCRIPT - TXT_SETCLASS
*170. 세트 내역 SETCLASS SUBCLASS SETNAME DESCRIPT - TXT_SETNAME
*171. - TXT_SFHAART
*172. 조직단위 : 판매제품군 내역 SPART - TXT_SPART
*173. 통계주요지표 내역 KOKRS STAGR BEZEI - TXT_STAGR
*174. TABLE 내역 TABNAME DDTEXT - TXT_TABNAME
*175. T-CODE 내역 TCODE - TXT_TCODE
*176. REQUEST/TASK 내역 TRKORR AS4TEXT - TXT_TRKORR
*177. 지급 방법 보충 내역 UZAWE - TXT_UZAWE
*178. CO 버전 내역 VERSN - TXT_VERSN
*179. 판매조직명 VKORG - TXT_VKORG
*180. 유통경로 내역 VTWEG - TXT_VTWEG
*181. 플랜트 내역 WERKS - TXT_WERKS
*182. SUI 그룹 내역 WWDIV BEZEK - TXT_WWDIV
*183. 작업장/작업장 내역 AUFNR ARBPL ARBTX - WORKSTATION_READ
*184. BDC 입력 - DYNPRO
*185. SMARTFORMS - PRINT_SMARTFORMS
*186. OLE DATA DOWNLOAD - DOWN_OLE_DATA
*187. 로컬 파일 삭제 - CLOSE_FILE
*188. SMW0 파일을 다운로드 - CREATE_FILE
*189. GUI DOWNLOAD - DOWNLOAD
*190. ALV CELL의 수정/조회 모드 변경 - ALV_CELL_EDIT
*191. 텍스트에서 특수문자 및 심볼 제거 - DELETE_SYMBOM
*192. F4 VARIANT - F4_VARIANT
*193. F4 HELP TABLE - F4_HELP_TEBLE
*194. CLASS 특성 정보 - CLAF_CLASSIFICATION_OF_OBJECTS
*196. BATCH CHECK - BATCH_CHECK
*197. ENTER event - ENTER
*198. 자재별 재고 - GET_LABST
*199. 재고 자재+플랜트+저장위치+배치 - GET_LABST_2
*200. 재고 자재+플랜트+저장위치 MB5B 사용 - GET_LABST_3
*&---------------------------------------------------------------------*
*& Form DOWN_SMW0_FILE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_LV_OBJID text
* <--P_LS_RETURN text
*----------------------------------------------------------------------*
FORM DOWN_SMW0_FILE USING P_OBJID TYPE WWWDATA-OBJID
CHANGING PS_RETURN TYPE BAPIRET2 .
CONSTANTS: CO_E(1) VALUE 'E'.
DATA : LS_WWWDATA_ITEM TYPE WWWDATATAB. "DATA TABLE
DATA : LT_MIME LIKE W3MIME OCCURS 100 WITH HEADER LINE.
DATA : LV_FILENAME TYPE STRING,
LV_PATH TYPE STRING,
LV_FULLPATH TYPE STRING,
LV_FILESIZE(10),
LV_SIZE TYPE I.
DATA : LV_DEFAULT_EXTENSION TYPE STRING.
*-- Check File ID
SELECT SINGLE *
FROM WWWDATA
INTO CORRESPONDING FIELDS OF LS_WWWDATA_ITEM
WHERE OBJID = P_OBJID.
IF SY-SUBRC NE 0.
PS_RETURN-TYPE = CO_E.
PS_RETURN-MESSAGE = TEXT-E01. "문서가 존재하지 않습니다.
EXIT.
ENDIF.
*-- Import Web Objects
CALL FUNCTION 'WWWDATA_IMPORT'
EXPORTING
KEY = LS_WWWDATA_ITEM
TABLES
MIME = LT_MIME
EXCEPTIONS
WRONG_OBJECT_TYPE = 1
IMPORT_ERROR = 2
OTHERS = 3.
*-- Read a Parameter from Table WWWPARAMS
CALL FUNCTION 'WWWPARAMS_READ'
EXPORTING
RELID = LS_WWWDATA_ITEM-RELID
OBJID = LS_WWWDATA_ITEM-OBJID
NAME = 'filesize'
IMPORTING
VALUE = LV_FILESIZE.
SELECT SINGLE VALUE
INTO LV_DEFAULT_EXTENSION
FROM WWWPARAMS
WHERE RELID EQ LS_WWWDATA_ITEM-RELID
AND OBJID EQ LS_WWWDATA_ITEM-OBJID
AND NAME EQ 'fileextension'.
IF SY-SUBRC EQ 0.
REPLACE ALL OCCURRENCES OF '.' IN LV_DEFAULT_EXTENSION WITH ''.
CONDENSE LV_DEFAULT_EXTENSION NO-GAPS.
ELSE.
LV_DEFAULT_EXTENSION = 'XLSX'.
ENDIF.
*-- Shows a File Save Dialog
CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG
EXPORTING
DEFAULT_EXTENSION = LV_DEFAULT_EXTENSION
CHANGING
FILENAME = LV_FILENAME
PATH = LV_PATH
FULLPATH = LV_FULLPATH.
LV_SIZE = LV_FILESIZE.
*-- FILE NAME 체크.
CHECK LV_FULLPATH IS NOT INITIAL.
*-- Download an Internal Table to the PC
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
FILENAME = LV_FULLPATH
FILETYPE = 'BIN'
BIN_FILESIZE = LV_SIZE
TABLES
DATA_TAB = LT_MIME.
*-- Download 파일 Excel 실행
CALL FUNCTION 'WS_EXECUTE'
EXPORTING
COMMANDLINE = LV_FULLPATH
PROGRAM = 'EXCEL.EXE'.
ENDFORM. " DOWN_SMW0_FILE
*&---------------------------------------------------------------------*
*& Form SET_SCR_ICON
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM SET_SCREEN_ICON USING VALUE(PV_ICON)
VALUE(PV_TEXT)
VALUE(PV_POS).
FIELD-SYMBOLS : <LFS_SRC> TYPE ANY.
DATA : LV_FLD TYPE STRING.
** 버튼 순서기준의 화면 필드가 Assign
CONCATENATE 'SSCRFIELDS-FUNCTXT_' PV_POS INTO LV_FLD.
ASSIGN (LV_FLD) TO <LFS_SRC>.
** Icon + 텍스트
CALL FUNCTION 'ICON_CREATE'
EXPORTING
NAME = PV_ICON
TEXT = PV_TEXT
INFO = PV_TEXT
IMPORTING
RESULT = <LFS_SRC>.
ENDFORM. " SET_SCR_ICON
*&---------------------------------------------------------------------*
*& Form EXECUTE_FILE
*&---------------------------------------------------------------------*
* 문서파일등을 실행시킨다.
*----------------------------------------------------------------------*
FORM EXECUTE_FILE USING P_FULLPATH. "전체경로
DATA: L_FULLPATH TYPE STRING.
L_FULLPATH = P_FULLPATH.
CALL METHOD CL_GUI_FRONTEND_SERVICES=>EXECUTE
EXPORTING
DOCUMENT = L_FULLPATH
* APPLICATION =
* PARAMETER =
* DEFAULT_DIRECTORY =
* MAXIMIZED =
* MINIMIZED =
* SYNCHRONOUS =
* OPERATION = 'OPEN'
EXCEPTIONS
CNTL_ERROR = 1
ERROR_NO_GUI = 2
BAD_PARAMETER = 3
FILE_NOT_FOUND = 4
PATH_NOT_FOUND = 5
FILE_EXTENSION_UNKNOWN = 6
ERROR_EXECUTE_FAILED = 7
SYNCHRONOUS_FAILED = 8
NOT_SUPPORTED_BY_GUI = 9
OTHERS = 10.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. " EXECUTE_FILE
*&---------------------------------------------------------------------*
*& Form F4_FILE_PATH
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* <--P_P_FILE text
*----------------------------------------------------------------------*
FORM F4_FILE_PATH CHANGING P_FILE.
*-- Get File Location
CALL FUNCTION 'KD_GET_FILENAME_ON_F4'
CHANGING
FILE_NAME = P_FILE
EXCEPTIONS
MASK_TOO_LONG = 1
OTHERS = 2.
IF SY-SUBRC NE 0.
"파일 이름을 가져 오는 중 오류가 발생했습니다.
MESSAGE S000 WITH '파일 이름을 가져 오는 중 오류가 발생했습니다.' DISPLAY LIKE CO_E.
EXIT.
ENDIF.
ENDFORM. " F4_FILE_PATH
*&---------------------------------------------------------------------*
*& Form UPLOAD_EXCEL_FILE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_GT_EXCEL text
* -->P_P_FILE text
*----------------------------------------------------------------------*
FORM UPLOAD_EXCEL_FILE TABLES PT_INTERN STRUCTURE ALSMEX_TABLINE
USING P_FILE LIKE RLGRAP-FILENAME.
*-- Get Excel Data
CLEAR : PT_INTERN, PT_INTERN[].
CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
EXPORTING
FILENAME = P_FILE
I_BEGIN_COL = 1
I_BEGIN_ROW = 2
I_END_COL = 256
I_END_ROW = 9999
TABLES
INTERN = PT_INTERN
EXCEPTIONS
INCONSISTENT_PARAMETERS = 1
UPLOAD_OLE = 2
OTHERS = 3.
IF SY-SUBRC NE 0.
"엑셀 파일을 읽을 수 없습니다.
MESSAGE S000 WITH '엑셀 파일을 읽을 수 없습니다.' DISPLAY LIKE CO_E.
STOP.
ENDIF.
ENDFORM. " UPLOAD_EXCEL_FILE
*&---------------------------------------------------------------------*
*& Form MOVE_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_GT_EXCEL text
*----------------------------------------------------------------------*
FORM MOVE_DATA TABLES PT_INTERN STRUCTURE ALSMEX_TABLINE.
DATA : LV_INDEX TYPE I.
FIELD-SYMBOLS : <FS>.
*-- Sorting the internal table
SORT PT_INTERN BY ROW COL.
CLEAR : GT_OUTTAB, GT_OUTTAB[].
LOOP AT PT_INTERN.
MOVE PT_INTERN-COL TO LV_INDEX.
*-- Assigning the each record to an internal table row
ASSIGN COMPONENT LV_INDEX OF STRUCTURE GT_OUTTAB TO <FS> .
*-- Asigning the field value to a field symbol
MOVE PT_INTERN-VALUE TO <FS> .
AT END OF ROW.
APPEND GT_OUTTAB.
CLEAR : GT_OUTTAB.
ENDAT.
ENDLOOP.
IF GT_OUTTAB[] IS INITIAL.
"Data is not found.
MESSAGE S000 WITH 'Data is not found.' DISPLAY LIKE CO_E.
STOP.
ENDIF.
ENDFORM. " MOVE_DATA
*&---------------------------------------------------------------------*
*& Form ADD_MONTH_TO_DATE
*&---------------------------------------------------------------------*
* 몇개월 전/후 의 날짜를 리턴한다.
*&---------------------------------------------------------------------*
FORM ADD_MONTH_TO_DATE USING P_MONTH "'2', '-3' 등등
P_IN_DATE
CHANGING E_OU_DATE.
DATA: L_OLDDATE TYPE SY-DATUM,
L_NEWDATE TYPE SY-DATUM.
L_OLDDATE = P_IN_DATE.
CALL FUNCTION 'RE_ADD_MONTH_TO_DATE'
EXPORTING
MONTHS = P_MONTH
OLDDATE = L_OLDDATE
IMPORTING
NEWDATE = L_NEWDATE.
E_OU_DATE = L_NEWDATE.
ENDFORM. " ADD_MONTH_TO_DATE
*&---------------------------------------------------------------------*
*& Form BAPI_BUS2002_GET_STATUS
*&---------------------------------------------------------------------*
* 생산오더로 시스템상태를 읽는다.
*&---------------------------------------------------------------------*
FORM BAPI_BUS2002_GET_STATUS TABLES PT_STS STRUCTURE BAPI_SYSTEM_STATUS
USING P_AUFNR "TYPE AUFK-AUFNR
P_WITHOUT_ACT "TYPE BAPINWGI-WO_NETWORK
CHANGING P_STTXT. "TYPE IOHEADER-STTXT.
CLEAR: PT_STS, PT_STS[],
P_STTXT.
CALL FUNCTION 'BAPI_BUS2002_GET_STATUS'
EXPORTING
NUMBER = P_AUFNR
WITHOUT_ACTIVITIES = P_WITHOUT_ACT "' '
* IMPORTING
* RETURN =
TABLES
E_SYSTEM_STATUS = PT_STS
* E_USER_STATUS =
* E_ACTIVITY_SYSTEM_STATUS =
* E_ACTIVITY_USER_STATUS =
.
IF PT_STS[] IS INITIAL. EXIT. ENDIF.
LOOP AT PT_STS.
CONCATENATE P_STTXT PT_STS-SYSTEM_STATUS
INTO P_STTXT SEPARATED BY ''.
ENDLOOP.
ENDFORM. " BAPI_BUS2002_GET_STATUS
*&---------------------------------------------------------------------*
*& Form BAPI_COSTCENTERGROUP_GETDETAIL
*&---------------------------------------------------------------------*
* 코스트센타그룹으로 코스트센타(KOSTL) 목록 조회
*----------------------------------------------------------------------*
FORM BAPI_COSTCENTERGROUP_GETDETAIL TABLES PT_VAL STRUCTURE BAPI1112_VALUES
USING P_KOKRS
P_KSGRU.
DATA: LT_HIER TYPE BAPISET_HIER OCCURS 0,
L_KSGRU LIKE BAPICO_GROUP-GROUPNAME.
CLEAR: PT_VAL, PT_VAL[].
L_KSGRU = P_KSGRU.
CALL FUNCTION 'BAPI_COSTCENTERGROUP_GETDETAIL'
EXPORTING
CONTROLLINGAREA = P_KOKRS
GROUPNAME = L_KSGRU
* LANGUAGE =
* IMPORTING
* RETURN =
TABLES
HIERARCHYNODES = LT_HIER
HIERARCHYVALUES = PT_VAL.
ENDFORM. " BAPI_COSTCENTERGROUP_GETDETAIL
*&---------------------------------------------------------------------*
*& Form BAPI_COSTCENTERGROUP_GETLIST
*&---------------------------------------------------------------------*
* 코스트센타그룹 목록 조회
*----------------------------------------------------------------------*
FORM BAPI_COSTCENTERGROUP_GETLIST TABLES ET_LIST STRUCTURE BAPI1112_LIST
USING P_KOKRS
P_GROUP
P_TOP_ONLY.
CLEAR: ET_LIST, ET_LIST[].
DATA: L_GROUPNAME TYPE BAPICO_GROUP-GROUPNAME.
CONCATENATE P_GROUP '*' INTO L_GROUPNAME.
CALL FUNCTION 'BAPI_COSTCENTERGROUP_GETLIST'
EXPORTING
CONTROLLINGAREAMASK = P_KOKRS "'*'
GROUPNAMEMASK = L_GROUPNAME "'*'
TOPNODESONLY = P_TOP_ONLY "' '
* LANGUAGE =
* IMPORTING
* RETURN =
TABLES
GROUPLIST = ET_LIST .
ENDFORM. " BAPI_COSTCENTERGROUP_GETLIST
*&---------------------------------------------------------------------*
*& Form BAPI_COSTELEMENTGRP_GETDETAIL
*&---------------------------------------------------------------------*
* 원가요소그룹으로 원가요소(KSTAR) 목록 조회
*----------------------------------------------------------------------*
FORM BAPI_COSTELEMENTGRP_GETDETAIL TABLES PT_VAL STRUCTURE BAPI1113_VALUES
USING P_KTOPL
P_GRPNAME
P_KOKRS.
DATA: LT_NODE TYPE TABLE OF BAPISET_HIER WITH HEADER LINE,
L_GRPNAME LIKE BAPICO_GROUP-GROUPNAME.
CLEAR: PT_VAL, PT_VAL[].
L_GRPNAME = P_GRPNAME.
CALL FUNCTION 'BAPI_COSTELEMENTGRP_GETDETAIL'
EXPORTING
CHARTOFACCOUNTS = P_KTOPL
GROUPNAME = L_GRPNAME
CONTROLLINGAREA = P_KOKRS
* IMPORTING
* RETURN =
TABLES
HIERARCHYNODES = LT_NODE
HIERARCHYVALUES = PT_VAL.
ENDFORM. " BAPI_COSTELEMENTGRP_GETDETAIL
*&---------------------------------------------------------------------*
*& Form BAPI_COSTELEMENTGRP_GETLIST
*&---------------------------------------------------------------------*
* 코스트엘리먼트그룹 목록 조회
*----------------------------------------------------------------------*
FORM BAPI_COSTELEMENTGRP_GETLIST TABLES ET_LIST STRUCTURE BAPI1113_LIST
USING P_KTOPL
P_GROUP
P_TOP_ONLY.
CLEAR: ET_LIST, ET_LIST[].
DATA: L_GROUPNAME TYPE BAPICO_GROUP-GROUPNAME.
CONCATENATE P_GROUP '*' INTO L_GROUPNAME.
CALL FUNCTION 'BAPI_COSTELEMENTGRP_GETLIST'
EXPORTING
CHARTOFACCOUNTSMASK = P_KTOPL
GROUPNAMEMASK = L_GROUPNAME "'*'
TOPNODESONLY = P_TOP_ONLY "' '
* LANGUAGE =
* IMPORTING
* RETURN =
TABLES
GROUPLIST = ET_LIST .
ENDFORM. " BAPI_COSTELEMENTGRP_GETLIST
*&---------------------------------------------------------------------*
*& Form BAPI_INTERNALORDRGRP_GETDETAIL
*&---------------------------------------------------------------------*
* 오더그룹으로 오더(AUFNR) 목록 조회
*----------------------------------------------------------------------*
FORM BAPI_INTERNALORDRGRP_GETDETAIL TABLES PT_VAL STRUCTURE BAPI1117_VALUES
USING P_GRPNAME.
DATA: LT_NODE TYPE TABLE OF BAPISET_HIER WITH HEADER LINE,
L_GRP_NM LIKE BAPICO_GROUP-GROUPNAME.
CLEAR: PT_VAL, PT_VAL[].
L_GRP_NM = P_GRPNAME.
CALL FUNCTION 'BAPI_INTERNALORDRGRP_GETDETAIL'
EXPORTING
GROUPNAME = L_GRP_NM
* IMPORTING
* RETURN =
TABLES
HIERARCHYNODES = LT_NODE
HIERARCHYVALUES = PT_VAL.
ENDFORM. " BAPI_INTERNALORDRGRP_GETDETAIL
*&---------------------------------------------------------------------*
*& Form BAPI_TRANSACTION
*&---------------------------------------------------------------------*
* BAPI_TRANSACTION -> COMMIT / ROLLBACK
*----------------------------------------------------------------------*
FORM BAPI_TRANSACTION USING P_GB.
CASE P_GB.
WHEN 'R'.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
WHEN 'C'.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT = 'X'.
ENDCASE.
ENDFORM. " BAPI_TRANSACTION
*&---------------------------------------------------------------------*
*& Form CALC_DATE_IN_INTERVAL
*&---------------------------------------------------------------------*
* 날짜 계산
*----------------------------------------------------------------------*
FORM CALC_DATE_IN_INTERVAL USING P_IN_DATE
P_DAY
P_MONTH
P_YEAR
P_SIGN
CHANGING P_OU_DATE.
CLEAR P_OU_DATE.
CALL FUNCTION 'RP_CALC_DATE_IN_INTERVAL'
EXPORTING
DATE = P_IN_DATE
DAYS = P_DAY
MONTHS = P_MONTH
SIGNUM = P_SIGN "'+'
YEARS = P_YEAR
IMPORTING
CALC_DATE = P_OU_DATE.
ENDFORM. " CALC_DATE_IN_INTERVAL
*&---------------------------------------------------------------------*
*& Form CALL_AS03
*&---------------------------------------------------------------------*
* 자산번호 조회
*----------------------------------------------------------------------*
FORM CALL_AS03 USING P_ANLN1 LIKE ANLA-ANLN1 "자산번호
P_ANLN2 LIKE ANLA-ANLN2 "하위번호
P_BUKRS LIKE ANLA-BUKRS. "회사코드
IF P_ANLN1 IS INITIAL. EXIT. ENDIF.
SET PARAMETER ID 'AN1' FIELD P_ANLN1.
SET PARAMETER ID 'AN2' FIELD P_ANLN2.
SET PARAMETER ID 'BUK' FIELD P_BUKRS.
CALL TRANSACTION 'AS03' AND SKIP FIRST SCREEN.
ENDFORM. " CALL_AS03
*&---------------------------------------------------------------------*
*& Form CALL_AW01N
*&---------------------------------------------------------------------*
* 자산상세 자산번호 클릭시 AW01N 호출
*----------------------------------------------------------------------*
FORM CALL_AW01N USING P_BUKRS
P_GJAHR
P_ANLN1
P_ANLN2.
SET PARAMETER ID 'BUK' FIELD P_BUKRS.
SET PARAMETER ID 'AN1' FIELD P_ANLN1.
SET PARAMETER ID 'AN2' FIELD P_ANLN1.
SET PARAMETER ID 'GJR' FIELD P_GJAHR.
SET PARAMETER ID 'AFB' FIELD '01'. "상각영역
CALL TRANSACTION 'AW01N' AND SKIP FIRST SCREEN.
ENDFORM. " CALL_AW01N
*&---------------------------------------------------------------------*
*& Form CALL_CJ03
*&---------------------------------------------------------------------*
* Project 조회
*----------------------------------------------------------------------*
FORM CALL_CJ03 USING P_POSNR. "WBS코드
SET PARAMETER ID 'PSP' FIELD ''.
SET PARAMETER ID 'PRO' FIELD P_POSNR.
CALL TRANSACTION 'CJ03' AND SKIP FIRST SCREEN.
ENDFORM. " CALL_CJ03
*&---------------------------------------------------------------------*
*& Form CALL_CMOD
*&---------------------------------------------------------------------*
* CALL TRANSACTION 'CMOD'
*&---------------------------------------------------------------------*
FORM CALL_CMOD USING P_MON.
IF P_MON IS INITIAL. EXIT. ENDIF.
SET PARAMETER ID 'MON' FIELD P_MON.
CALL TRANSACTION 'CMOD' AND SKIP FIRST SCREEN.
ENDFORM. " CALL_CMOD
*&---------------------------------------------------------------------*
*& Form CALL_CO03
*&---------------------------------------------------------------------*
* 생산 오더 조회
*----------------------------------------------------------------------*
FORM CALL_CO03 USING P_AUFNR. "생산 오더
IF P_AUFNR IS INITIAL. EXIT. ENDIF.
SET PARAMETER ID 'ANR' FIELD P_AUFNR.
CALL TRANSACTION 'CO03' AND SKIP FIRST SCREEN.
ENDFORM. " CALL_CO03
*&---------------------------------------------------------------------*
*& Form CALL_CV03N
*&---------------------------------------------------------------------*
* DMS 문서 조회
*&---------------------------------------------------------------------*
FORM CALL_CV03N USING P_DOKAR LIKE DRAW-DOKAR "Document Type
P_DOKNR LIKE DRAW-DOKNR "Document number
P_DOKVR LIKE DRAW-DOKVR "Document Version
P_DOKTL LIKE DRAW-DOKTL. "Document Part
IF P_DOKAR IS INITIAL OR
P_DOKNR IS INITIAL.
EXIT.
ENDIF.
IF P_DOKVR IS INITIAL.
P_DOKVR = '00'.
ENDIF.
IF P_DOKTL IS INITIAL.
P_DOKTL = '000'.
ENDIF.
SET PARAMETER ID 'CV1' FIELD P_DOKNR.
SET PARAMETER ID 'CV2' FIELD P_DOKAR.
SET PARAMETER ID 'CV3' FIELD P_DOKVR.
SET PARAMETER ID 'CV4' FIELD P_DOKTL.
CALL TRANSACTION 'CV03N' AND SKIP FIRST SCREEN.
ENDFORM. " CALL_CV03N
*&---------------------------------------------------------------------*
*& Form CALL_FB03
*&---------------------------------------------------------------------*
* 전표 조회
*----------------------------------------------------------------------*
FORM CALL_FB03 USING P_BELNR
P_BUKRS
P_GJAHR.
IF P_BELNR IS INITIAL. EXIT. ENDIF.
SET PARAMETER ID: 'BLN' FIELD P_BELNR,
'BUK' FIELD P_BUKRS,
'GJR' FIELD P_GJAHR.
CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN.
ENDFORM. " CALL_FB03
*&---------------------------------------------------------------------*
*& Form CALL_FD03
*&---------------------------------------------------------------------*
* 고객조회
*----------------------------------------------------------------------*
FORM CALL_FD03 USING P_BUKRS LIKE BKPF-BUKRS
P_KUNNR LIKE KNA1-KUNNR.
SET PARAMETER ID 'KUN' FIELD P_KUNNR.
SET PARAMETER ID 'BUK' FIELD P_BUKRS.
CALL TRANSACTION 'FD03' AND SKIP FIRST SCREEN.
ENDFORM. " CALL_FD03
*&---------------------------------------------------------------------*
*& Form CALL_FK03
*&---------------------------------------------------------------------*
* 거래처 조회
*----------------------------------------------------------------------*
FORM CALL_FK03 USING P_BUKRS LIKE BKPF-BUKRS
P_LIFNR LIKE LFA1-LIFNR.
DATA: L_AUSWL(50). "구매처조회초기화면의 Option선택
* 구매처조회Option지정 ==> 모든 필드 선택 (원천세제외)
* 일반정보: 110-주소, 120-제어, 130-지급거래, 380-담당자
* 회사코드: 210-회계정보, 215-지급거래, 220-서신, 610-원천세
* L_AUSWL = '/110/120/130/380/210/215/220'.
L_AUSWL = '/110/120/380/210/220'.
* 구매처조회
SET PARAMETER ID 'BUK' FIELD P_BUKRS.
SET PARAMETER ID 'LIF' FIELD P_LIFNR.
SET PARAMETER ID 'KDY' FIELD L_AUSWL.
CALL TRANSACTION 'FK03' AND SKIP FIRST SCREEN.
ENDFORM. " CALL_FK03
*&---------------------------------------------------------------------*
*& Form CALL_IW33
*&---------------------------------------------------------------------*
* Maintenance Order 조회
*----------------------------------------------------------------------*
FORM CALL_IW33 USING P_AUFNR.
IF P_AUFNR IS INITIAL. EXIT. ENDIF.
SET PARAMETER ID 'ANR' FIELD P_AUFNR.
CALL TRANSACTION 'IW33' AND SKIP FIRST SCREEN.
ENDFORM. " CALL_IW33
*&---------------------------------------------------------------------*
*& Form CALL_KA03
*&---------------------------------------------------------------------*
* 코스트엘리먼트 조회
*----------------------------------------------------------------------*
FORM CALL_KA03 USING P_KSTAR TYPE CSKA-KSTAR "Cost Element
P_KOKRS LIKE TKA01-KOKRS. "관리회계 영역
IF P_KSTAR IS INITIAL. EXIT. ENDIF.
SET PARAMETER ID 'CAC' FIELD P_KOKRS.
SET PARAMETER ID 'KAT' FIELD P_KSTAR.
CALL TRANSACTION 'KA03' AND SKIP FIRST SCREEN.
ENDFORM. " CALL_KA03
*&---------------------------------------------------------------------*
*& Form CALL_KAH3
*&---------------------------------------------------------------------*
* 코스트엘리먼트그룹 조회
*----------------------------------------------------------------------*
FORM CALL_KAH3 USING P_KAGRU TYPE KAGRU
P_KOKRS LIKE TKA01-KOKRS. "관리회계 영역
IF P_KAGRU IS INITIAL. EXIT. ENDIF.
SET PARAMETER ID 'CAC' FIELD P_KOKRS.
SET PARAMETER ID 'HNA' FIELD P_KAGRU.
CALL TRANSACTION 'KAH3' AND SKIP FIRST SCREEN.
ENDFORM. " CALL_KAH3
*&---------------------------------------------------------------------*
*& Form CALL_KE24
*&---------------------------------------------------------------------*
* 개별 항목 조회 - 실제 데이터
*----------------------------------------------------------------------*
FORM CALL_KE24 USING P_BELNR LIKE CEST1-BELNR "수익성분석의 개별항목 전표번호
P_PERIO LIKE CEST1-PERIO "기간/연도
P_ERKRS LIKE TKEB-ERKRS "경영 단위
P_KOKRS LIKE CEST1-KOKRS "관리회계 영역
P_VRGAR LIKE TVGA-VRGAR. "레코드 유형
SUBMIT RKEB0601 WITH BELNR = P_BELNR
WITH PERIO = P_PERIO
WITH PERKRS = P_ERKRS
WITH PKOKRS = P_KOKRS
WITH PPLIKZ = '0' "계획(1)/실제(0) 지시자
WITH VRGAR = P_VRGAR AND RETURN.
* SET PARAMETER ID 'ERB' FIELD P_ERKRS. "경영단위
* SET PARAMETER ID 'VGA' FIELD P_VRGAR. "경영단위
*
* CALL TRANSACTION 'KE24' AND SKIP FIRST SCREEN.
ENDFORM. " CALL_KE24
*&---------------------------------------------------------------------*
*& Form CALL_KO03
*&---------------------------------------------------------------------*
* 내부오더 조회
*----------------------------------------------------------------------*
FORM CALL_KO03 USING P_EAUFN LIKE ANLA-EAUFN. "투자오더
SET PARAMETER ID 'ANR' FIELD P_EAUFN.
CALL TRANSACTION 'KO03' AND SKIP FIRST SCREEN.
ENDFORM. " CALL_KO03
*&---------------------------------------------------------------------*
*& Form CALL_KS03
*&---------------------------------------------------------------------*
* 코스트센터 조회
*----------------------------------------------------------------------*
FORM CALL_KS03 USING P_KOSTL LIKE CSKS-KOSTL
P_KOKRS LIKE TKA01-KOKRS. "관리회계 영역
IF P_KOSTL IS INITIAL. EXIT. ENDIF.
SET PARAMETER ID 'CAC' FIELD P_KOKRS.
SET PARAMETER ID 'KOS' FIELD P_KOSTL.
CALL TRANSACTION 'KS03' AND SKIP FIRST SCREEN.
ENDFORM. " CALL_KS03
*&---------------------------------------------------------------------*
*& Form CALL_KSB5
*&---------------------------------------------------------------------*
* 관리회계 CO전표: 실제 조회
*----------------------------------------------------------------------*
FORM CALL_KSB5 USING P_KOKRS LIKE TKA01-KOKRS "관리회계 영역
P_BELNR LIKE COBK-BELNR. "전표 번호
IF P_BELNR IS INITIAL. EXIT. ENDIF.
SET PARAMETER ID 'CAC' FIELD P_KOKRS.
SET PARAMETER ID 'BLN' FIELD P_BELNR.
CALL TRANSACTION 'KSB5' AND SKIP FIRST SCREEN.
ENDFORM. " CALL_KSB5
*&---------------------------------------------------------------------*
*& Form CALL_KSH3
*&---------------------------------------------------------------------*
* 코스트센터그룹 조회
*----------------------------------------------------------------------*
FORM CALL_KSH3 USING P_KSGRU TYPE KSGRU
P_KOKRS LIKE TKA01-KOKRS. "관리회계 영역
IF P_KSGRU IS INITIAL. EXIT. ENDIF.
SET PARAMETER ID 'CAC' FIELD P_KOKRS.
SET PARAMETER ID 'HNA' FIELD P_KSGRU.
CALL TRANSACTION 'KSH3' AND SKIP FIRST SCREEN.
ENDFORM. " CALL_KSH3
*&---------------------------------------------------------------------*
*& Form CALL_MB03
*&---------------------------------------------------------------------*
* 자재문서 조회
*----------------------------------------------------------------------*
FORM CALL_MB03 USING P_MBLNR
P_MJAHR.
IF P_MBLNR IS INITIAL. EXIT. ENDIF.
CALL FUNCTION 'MIGO_DIALOG'
EXPORTING
I_ACTION = 'A04'
I_REFDOC = 'R02'
I_NOTREE = 'X'
I_SKIP_FIRST_SCREEN = 'X'
I_DEADEND = 'X'
I_OKCODE = 'OK_GO'
I_MBLNR = P_MBLNR
I_MJAHR = P_MJAHR
* I_ZEILE = GT_M-ZEILE
EXCEPTIONS
ILLEGAL_COMBINATION = 1
OTHERS = 2.
ENDFORM. " CALL_MB03
*&---------------------------------------------------------------------*
*& Form CALL_MD04
*&---------------------------------------------------------------------*
* 재고 소요량 조회
*----------------------------------------------------------------------*
FORM CALL_MD04 USING P_MATNR
P_WERKS.
IF P_MATNR IS INITIAL. EXIT. ENDIF.
SET PARAMETER ID 'MAT' FIELD P_MATNR.
SET PARAMETER ID 'WRK' FIELD P_WERKS.
CALL TRANSACTION 'MD04' AND SKIP FIRST SCREEN.
ENDFORM. " CALL_MD04
*&---------------------------------------------------------------------*
*& Form CALL_ME23N
*&---------------------------------------------------------------------*
* 구매오더 조회
*----------------------------------------------------------------------*
FORM CALL_ME23N USING P_EBELN.
IF P_EBELN IS INITIAL. EXIT. ENDIF.
SET PARAMETER ID 'BES' FIELD P_EBELN.
CALL TRANSACTION 'ME23N' AND SKIP FIRST SCREEN.
ENDFORM. " CALL_ME23N
*&---------------------------------------------------------------------*
*& Form CALL_MM03
*&---------------------------------------------------------------------*
* 자재 & 조회
*----------------------------------------------------------------------*
FORM CALL_MM03 USING P_MATNR "자재
P_WERKS. "플랜트
IF P_MATNR IS INITIAL. EXIT. ENDIF.
SET PARAMETER ID 'MXX' FIELD 'K'. "기본데이타
SET PARAMETER ID 'MAT' FIELD P_MATNR.
IF P_WERKS IS NOT INITIAL.
SET PARAMETER ID 'WRK' FIELD P_WERKS.
ENDIF.
CALL TRANSACTION 'MM03' AND SKIP FIRST SCREEN.
ENDFORM. " CALL_MM03
*&---------------------------------------------------------------------*
*& Form CALL_MS04
*&---------------------------------------------------------------------*
* 장기계획 재고 소요량 조회
*----------------------------------------------------------------------*
FORM CALL_MS04 USING P_PLSCN
P_MATNR
P_WERKS.
IF P_MATNR IS INITIAL. EXIT. ENDIF.
SET PARAMETER ID 'PLS' FIELD P_PLSCN.
SET PARAMETER ID 'MAT' FIELD P_MATNR.
SET PARAMETER ID 'WRK' FIELD P_WERKS.
CALL TRANSACTION 'MS04' AND SKIP FIRST SCREEN.
ENDFORM. " CALL_MS04
*&---------------------------------------------------------------------*
*& Form CALL_MSC3N
*&---------------------------------------------------------------------*
* 배치 조회
*----------------------------------------------------------------------*
FORM CALL_MSC3N USING P_MATNR
P_CHARG
P_WERKS
P_LGORT.
IF P_CHARG IS INITIAL. EXIT. ENDIF.
SET PARAMETER ID 'MAT' FIELD P_MATNR.
SET PARAMETER ID 'CHA' FIELD P_CHARG.
SET PARAMETER ID 'WRK' FIELD P_WERKS.
SET PARAMETER ID 'LAG' FIELD P_LGORT.
CALL TRANSACTION 'MSC3N' AND SKIP FIRST SCREEN.
ENDFORM. " CALL_MSC3N
*&---------------------------------------------------------------------*
*& Form CALL_QA03
*&---------------------------------------------------------------------*
* Inspection Lot 조회
*----------------------------------------------------------------------*
FORM CALL_QA03 USING P_PRUEFLOS TYPE QALS-PRUEFLOS.
IF P_PRUEFLOS IS INITIAL. EXIT. ENDIF.
SET PARAMETER ID 'QLS' FIELD P_PRUEFLOS.
CALL TRANSACTION 'QA03' AND SKIP FIRST SCREEN.
ENDFORM. " CALL_QA03
*&---------------------------------------------------------------------*
*& Form CALL_QA13
*&---------------------------------------------------------------------*
* 사용결정 조회
*----------------------------------------------------------------------*
FORM CALL_QA13 USING P_PRUEFLOS TYPE QALS-PRUEFLOS.
IF P_PRUEFLOS IS INITIAL. EXIT. ENDIF.
SET PARAMETER ID 'QLS' FIELD P_PRUEFLOS.
CALL TRANSACTION 'QA13' AND SKIP FIRST SCREEN.
ENDFORM. " CALL_QA13
*&---------------------------------------------------------------------*
*& Form CALL_SMOD
*&---------------------------------------------------------------------*
* CALL TRANSACTION 'SMOD'
*&---------------------------------------------------------------------*
FORM CALL_SMOD USING P_MON.
IF P_MON IS INITIAL. EXIT. ENDIF.
SET PARAMETER ID 'MON' FIELD P_MON.
CALL TRANSACTION 'SMOD' AND SKIP FIRST SCREEN.
ENDFORM. " CALL_SMOD
*&---------------------------------------------------------------------*
*& Form CALL_SU01D
*&---------------------------------------------------------------------*
FORM CALL_SU01D USING P_UNAME.
* DATA: L_BDC_MODE VALUE 'N'.
*
* CLEAR: GT_BDCD, GT_BDCD[],
* GT_BDCM, GT_BDCM[].
*
* PERFORM BDC_DYNPRO USING:
* 'X' 'SAPLSUU5' '0050',
* ' ' 'BDC_OKCODE' '=SHOW',
* ' ' 'USR02-BNAME' P_UNAME,
* 'X' 'SAPLSUU5' '0100',
* ' ' 'BDC_OKCODE' '/00'.
*
**SAPLSUU5 0050 X
** BDC_OKCODE /ECANC
*
* CALL TRANSACTION 'SU01D' USING GT_BDCD
* MODE L_BDC_MODE.
** MESSAGES INTO LT_BDCM.
*
* SET PARAMETER ID 'XUS' FIELD P_UNAME.
*
* CALL TRANSACTION 'SU01D' AND SKIP FIRST SCREEN.
CALL FUNCTION 'BAPI_USER_DISPLAY'
EXPORTING
USERNAME = P_UNAME
* IMPORTING
* RETURN =
.
ENDFORM. " CALL_SU01D
*&---------------------------------------------------------------------*
*& Form CALL_VA03
*&---------------------------------------------------------------------*
* 판매오더 조회
*----------------------------------------------------------------------*
FORM CALL_VA03 USING P_VBELN.
IF P_VBELN IS INITIAL. EXIT. ENDIF.
SET PARAMETER ID 'AUN' FIELD P_VBELN.
CALL TRANSACTION 'VA03' AND SKIP FIRST SCREEN.
ENDFORM. " CALL_VA03
*&---------------------------------------------------------------------*
*& Form CALL_VF03
*&---------------------------------------------------------------------*
* 빌링문서 조회
*----------------------------------------------------------------------*
FORM CALL_VF03 USING P_VBELN TYPE VBRK-VBELN.
IF P_VBELN IS INITIAL. EXIT. ENDIF.
SET PARAMETER ID 'VF' FIELD P_VBELN.
CALL TRANSACTION 'VF03' AND SKIP FIRST SCREEN.
ENDFORM. " CALL_VF03
*&---------------------------------------------------------------------*
*& Form CALL_VL03N
*&---------------------------------------------------------------------*
* 납품문서 조회
*----------------------------------------------------------------------*
FORM CALL_VL03N USING P_VBELN TYPE LIKP-VBELN.
IF P_VBELN IS INITIAL. EXIT. ENDIF.
SET PARAMETER ID 'VL' FIELD P_VBELN.
CALL TRANSACTION 'VL03N' AND SKIP FIRST SCREEN.
ENDFORM. " CALL_VL03N
*&---------------------------------------------------------------------*
*& Form CALL_XD03
*&---------------------------------------------------------------------*
* Customer 조회
*----------------------------------------------------------------------*
FORM CALL_XD03 USING P_KUNNR.
DATA: L_DDY(40).
IF P_KUNNR IS INITIAL. EXIT. ENDIF.
L_DDY = '/110/120/130/380'. "화면필드의 뒷자리 숫자
SET PARAMETER ID 'KUN' FIELD P_KUNNR.
SET PARAMETER ID 'DDY' FIELD L_DDY. "KRED-AUSWL.
* SET PARAMETER ID 'KDY' FIELD L_KDY. "요건 공급업체일듯 XK03
CALL TRANSACTION 'XD03' AND SKIP FIRST SCREEN.
ENDFORM. " CALL_XD03
*&---------------------------------------------------------------------*
*& Form CALL_XK03
*&---------------------------------------------------------------------*
* Vendor 조회
*----------------------------------------------------------------------*
FORM CALL_XK03 USING P_LIFNR.
DATA: L_KDY(40).
IF P_LIFNR IS INITIAL. EXIT. ENDIF.
L_KDY = '/110/120/130/380'. "화면필드의 뒷자리 숫자
SET PARAMETER ID 'LIF' FIELD P_LIFNR.
SET PARAMETER ID 'KDY' FIELD L_KDY. "KRED-AUSWL.
* SET PARAMETER ID 'DDY' FIELD KRED-AUSWL. "요건 고객일듯 XD03
CALL TRANSACTION 'XK03' AND SKIP FIRST SCREEN.
ENDFORM. " CALL_XK03
*&---------------------------------------------------------------------*
*& Form CHK_GLOBAL_DATE
*&---------------------------------------------------------------------*
* 날짜를 체크하고, 각 유저별 포맷양식으로 변환
*----------------------------------------------------------------------*
FORM CHK_GLOBAL_DATE USING I_DATE_STR "입력 날짜
CHANGING E_DATE
E_ERROR.
CLEAR: E_DATE, E_ERROR.
* 유저별 날짜 포맷 읽기
DATA: L_DATFM TYPE USR01-DATFM VALUE '4'.
CALL METHOD CL_ABAP_DATFM=>GET_DATFM
RECEIVING
DATFM = L_DATFM.
* EXT_TO_INT
DATA: LO_NO_DATE TYPE REF TO CX_ABAP_DATFM_NO_DATE,
LO_INVALID TYPE REF TO CX_ABAP_DATFM_INVALID_DATE,
LO_FORMAT TYPE REF TO CX_ABAP_DATFM_FORMAT_UNKNOWN,
LO_AMBIGUOUS TYPE REF TO CX_ABAP_DATFM_AMBIGUOUS,
L_ERR_TEXT TYPE STRING,
L_DATINT TYPE D,
L_DATE_NUM(8) TYPE N,
L_DATE_CHR(8).
L_DATE_CHR = L_DATE_NUM = I_DATE_STR.
TRY.
CALL METHOD CL_ABAP_DATFM=>CONV_DATE_EXT_TO_INT
EXPORTING
IM_DATEXT = L_DATE_CHR "I_DATE_STR
IM_DATFMDES = L_DATFM
IMPORTING
EX_DATINT = L_DATINT
* EX_DATFMUSED =
.
CATCH CX_ABAP_DATFM_NO_DATE INTO LO_NO_DATE.
L_ERR_TEXT = LO_NO_DATE->GET_TEXT( ).
CATCH CX_ABAP_DATFM_INVALID_DATE INTO LO_INVALID.
L_ERR_TEXT = LO_INVALID->GET_TEXT( ).
CATCH CX_ABAP_DATFM_FORMAT_UNKNOWN INTO LO_FORMAT.
L_ERR_TEXT = LO_FORMAT->GET_TEXT( ).
CATCH CX_ABAP_DATFM_AMBIGUOUS INTO LO_AMBIGUOUS.
L_ERR_TEXT = LO_AMBIGUOUS->GET_TEXT( ).
ENDTRY.
IF L_ERR_TEXT IS NOT INITIAL.
MESSAGE L_ERR_TEXT TYPE 'S' DISPLAY LIKE 'E'.
E_ERROR = 'X'.
E_DATE = L_DATE_NUM = I_DATE_STR.
EXIT.
ENDIF.
E_DATE = L_DATINT.
EXIT.
** INT_TO_EXT
* DATA: LO_EXC_REF TYPE REF TO CX_ABAP_DATFM_FORMAT_UNKNOWN,
* L_RSL_DATE(10).
*
* TRY.
* CALL METHOD CL_ABAP_DATFM=>CONV_DATE_INT_TO_EXT
* EXPORTING
* IM_DATINT = L_DATINT
* IM_DATFMDES = L_DATFM
* IMPORTING
* EX_DATEXT = L_RSL_DATE.
** EX_DATFMUSED = .
* CATCH CX_ABAP_DATFM_FORMAT_UNKNOWN INTO LO_EXC_REF.
* L_ERR_TEXT = LO_EXC_REF->GET_TEXT( ).
*
* ENDTRY.
*
* IF L_ERR_TEXT IS NOT INITIAL.
* MESSAGE L_ERR_TEXT TYPE 'S' DISPLAY LIKE 'E'.
* E_ERROR = 'X'.
* E_DATE = L_DATINT.
* EXIT.
* ENDIF.
*
** 결과
* E_DATE = L_RSL_DATE.
ENDFORM. " CHK_GLOBAL_DATE
*&---------------------------------------------------------------------*
*& Form CHK_ORDER_STATUS
*&---------------------------------------------------------------------*
FORM CHK_ORDER_STATUS USING P_AUFNR P_TXT04
CHANGING P_EXIST.
DATA: L_OBJNR LIKE CAUFV-OBJNR,
L_ISTAT LIKE TJ02T-ISTAT.
CLEAR P_EXIST.
SELECT SINGLE OBJNR
INTO L_OBJNR
FROM CAUFV
WHERE AUFNR = P_AUFNR.
SELECT SINGLE ISTAT
INTO L_ISTAT
FROM TJ02T
WHERE TXT04 = P_TXT04.
SELECT SINGLE COUNT(*)
FROM JEST
WHERE OBJNR = L_OBJNR
AND STAT = L_ISTAT
AND INACT = ''.
IF SY-SUBRC = 0.
P_EXIST = 'X'.
ENDIF.
ENDFORM. " CHK_ORDER_STATUS
*&---------------------------------------------------------------------*
*& Form COIS_HDR_STATUS_SHOW
*&---------------------------------------------------------------------*
FORM COIS_HDR_STATUS_SHOW USING P_AUFNR.
TABLES: CAUFV.
DATA: L_WERKS TYPE WERKS,
L_FLAG TYPE FLAG,
L_MAKTX LIKE MAKT-MAKTX.
IF P_AUFNR IS INITIAL. EXIT. ENDIF.
SELECT SINGLE * FROM CAUFV WHERE AUFNR = P_AUFNR.
L_WERKS = CAUFV-WERKS.
PERFORM TXT_MATNR(ZCO_FORM) USING CAUFV-PLNBEZ
CHANGING L_MAKTX.
CALL FUNCTION 'COIS_HDR_STATUS_SHOW'
EXPORTING
I_OBJECT_NUMBER = CAUFV-OBJNR
I_AUFNR = CAUFV-AUFNR
I_AUART = CAUFV-AUART
I_WERKS = L_WERKS "CAUFV-WERKS
I_MATNR = CAUFV-PLNBEZ
I_MATXT = L_MAKTX
I_ARCHIVE = L_FLAG
I_AUFPL = CAUFV-AUFPL
I_RSNUM = CAUFV-RSNUM
EXCEPTIONS
STATUS_SHOW_NOT_POSSIBLE = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. " COIS_HDR_STATUS_SHOW
*&---------------------------------------------------------------------*
*& Form CONV_EXIT_ALPHA_INPUT
*&---------------------------------------------------------------------*
FORM CONV_EXIT_ALPHA_INPUT USING P_IN
CHANGING P_OUT.
CHECK P_IN IS NOT INITIAL.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = P_IN
IMPORTING
OUTPUT = P_OUT.
ENDFORM. " CONV_EXIT_ALPHA_INPUT
*&---------------------------------------------------------------------*
*& Form CONV_EXIT_ALPHA_OUTPUT
*&---------------------------------------------------------------------*
FORM CONV_EXIT_ALPHA_OUTPUT USING P_IN
CHANGING P_OUT.
CHECK P_IN IS NOT INITIAL.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
EXPORTING
INPUT = P_IN
IMPORTING
OUTPUT = P_OUT.
ENDFORM. " CONV_EXIT_ALPHA_OUTPUT
*&---------------------------------------------------------------------*
*& Form CONV_EXIT_ATINN_INPUT
*&---------------------------------------------------------------------*
FORM CONV_EXIT_ATINN_INPUT USING P_ATINN TYPE AUSP-ATINN
CHANGING E_ATINN.
CALL FUNCTION 'CONVERSION_EXIT_ATINN_INPUT'
EXPORTING
INPUT = P_ATINN
IMPORTING
OUTPUT = E_ATINN.
ENDFORM. " CONV_EXIT_ATINN_INPUT
*&---------------------------------------------------------------------*
*& Form CONV_EXIT_MATN1_INPUT
*&---------------------------------------------------------------------*
FORM CONV_EXIT_MATN1_INPUT USING P_IN
CHANGING P_OUT.
CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT'
EXPORTING
INPUT = P_IN
IMPORTING
OUTPUT = P_OUT
EXCEPTIONS
LENGTH_ERROR = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. " CONV_EXIT_MATN1_INPUT
*&---------------------------------------------------------------------*
*& Form CONV_EXIT_MATN1_OUTPUT
*&---------------------------------------------------------------------*
FORM CONV_EXIT_MATN1_OUTPUT USING P_IN
CHANGING P_OUT.
CALL FUNCTION 'CONVERSION_EXIT_MATN1_OUTPUT'
EXPORTING
INPUT = P_IN
IMPORTING
OUTPUT = P_OUT.
ENDFORM. " CONV_EXIT_MATN1_OUTPUT
*&---------------------------------------------------------------------*
*& Form CONV_EXIT_NUMCV_INPUT
*&---------------------------------------------------------------------*
FORM CONV_EXIT_NUMCV_INPUT USING P_IN
CHANGING P_OUT.
CHECK P_IN IS NOT INITIAL.
CALL FUNCTION 'CONVERSION_EXIT_NUMCV_INPUT'
EXPORTING
INPUT = P_IN
IMPORTING
OUTPUT = P_OUT.
ENDFORM. " CONV_EXIT_NUMCV_INPUT
*&---------------------------------------------------------------------*
*& Form CONV_EXIT_NUMCV_OUTPUT
*&---------------------------------------------------------------------*
FORM CONV_EXIT_NUMCV_OUTPUT USING P_IN
CHANGING P_OUT.
CALL FUNCTION 'CONVERSION_EXIT_NUMCV_OUTPUT'
EXPORTING
INPUT = P_IN
IMPORTING
OUTPUT = P_OUT.
ENDFORM. " CONV_EXIT_NUMCV_OUTPUT
*&---------------------------------------------------------------------*
*& Form CONV_FLTP_TO_CHAR
*&---------------------------------------------------------------------*
* FLTP Type 값을 CHAR Type 값으로 변경
*&---------------------------------------------------------------------*
FORM CONV_FLTP_TO_CHAR USING P_IN_FLTP
CHANGING P_OU_VAL.
DATA: L_OU_CHAR(22).
CLEAR P_OU_VAL.
CALL FUNCTION 'FLTP_CHAR_CONVERSION'
EXPORTING
* DECIM = 15
* EXPON = 0
INPUT = P_IN_FLTP
IVALU = 'X'
* MASKN = ' '
IMPORTING
FLSTR = L_OU_CHAR.
P_OU_VAL = L_OU_CHAR.
ENDFORM. " CONV_FLTP_TO_CHAR
*&---------------------------------------------------------------------*
*& Form CONV_TO_LOC_CURR
*&---------------------------------------------------------------------*
FORM CONV_TO_LOC_CURR USING P_DATE "기준일자
P_TYPE "M, BS, PL 등 (기말1001, 평균1002)
P_IN_AMT "입력받은 금액
P_IN_CURR "입력받은 통화
P_OU_CURR "변환할 통화
CHANGING P_OU_AMT . "변환된 금액
DATA: L_RATE LIKE TCURR-UKURS,
L_OU_AMT TYPE HSLXX12.
CLEAR: P_OU_AMT.
IF P_IN_CURR = P_OU_CURR.
P_OU_AMT = P_IN_AMT.
EXIT.
ENDIF.
CALL FUNCTION 'CONVERT_TO_LOCAL_CURRENCY'
EXPORTING
* CLIENT = SY-MANDT
DATE = P_DATE
FOREIGN_AMOUNT = P_IN_AMT
FOREIGN_CURRENCY = P_IN_CURR
LOCAL_CURRENCY = P_OU_CURR
* RATE = 0
TYPE_OF_RATE = P_TYPE "'M'
* READ_TCURR = 'X'
IMPORTING
EXCHANGE_RATE = L_RATE
* FOREIGN_FACTOR =
LOCAL_AMOUNT = L_OU_AMT
* LOCAL_FACTOR =
* EXCHANGE_RATEX =
* FIXED_RATE =
* DERIVED_RATE_TYPE =
EXCEPTIONS
NO_RATE_FOUND = 1
OVERFLOW = 2
NO_FACTORS_FOUND = 3
NO_SPREAD_FOUND = 4
DERIVED_2_TIMES = 5
OTHERS = 6.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
P_OU_AMT = L_OU_AMT.
ENDFORM. " CONV_TO_LOC_CURR
*&---------------------------------------------------------------------*
*& Form CONV_TO_FOR_CURR
*&---------------------------------------------------------------------*
FORM CONV_TO_FOR_CURR USING P_DATE "기준일자
P_TYPE "M, BS, PL 등 (기말1001, 평균1002)
P_IN_AMT "입력받은 금액
P_IN_CURR "입력받은 통화
P_OU_CURR "변환할 통화
CHANGING P_OU_AMT . "변환된 금액
DATA: L_RATE LIKE TCURR-UKURS,
L_OU_AMT TYPE HSLXX12.
CLEAR: P_OU_AMT.
IF P_IN_CURR = P_OU_CURR.
P_OU_AMT = P_IN_AMT.
EXIT.
ENDIF.
CALL FUNCTION 'CONVERT_TO_FOREIGN_CURRENCY'
EXPORTING
* CLIENT = SY-MANDT
DATE = P_DATE
FOREIGN_CURRENCY = P_OU_CURR
LOCAL_AMOUNT = P_IN_AMT
LOCAL_CURRENCY = P_IN_CURR
* RATE = 0
TYPE_OF_RATE = P_TYPE "'M'
* READ_TCURR = 'X'
IMPORTING
EXCHANGE_RATE = L_RATE
FOREIGN_AMOUNT = L_OU_AMT
* FOREIGN_FACTOR =
* LOCAL_FACTOR =
* EXCHANGE_RATEX =
* DERIVED_RATE_TYPE =
* FIXED_RATE =
EXCEPTIONS
NO_RATE_FOUND = 1
OVERFLOW = 2
NO_FACTORS_FOUND = 3
NO_SPREAD_FOUND = 4
DERIVED_2_TIMES = 5
OTHERS = 6.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
P_OU_AMT = L_OU_AMT.
ENDFORM. " CONV_TO_FOR_CURR
*&---------------------------------------------------------------------*
*& Form CURR_AMT_IDOC_TO_SAP
*&---------------------------------------------------------------------*
* 통화별로 표시된 금액을 SAP Table 입력금액 형식으로 변경
*----------------------------------------------------------------------*
FORM CURR_AMT_IDOC_TO_SAP USING P_WAERS P_IN_AMT_C
CHANGING P_OU_AMT.
DATA: L_AMT_C TYPE STRING,
L_NUM.
CLEAR: P_OU_AMT.
L_AMT_C = P_IN_AMT_C.
PERFORM STRING_REPLACE USING ',' ''
CHANGING L_AMT_C. " 변경할 문자열
PERFORM NUMERIC_CHECK USING L_AMT_C
CHANGING L_NUM.
IF L_NUM <> 'X'. EXIT. ENDIF.
CALL FUNCTION 'CURRENCY_AMOUNT_IDOC_TO_SAP'
EXPORTING
CURRENCY = P_WAERS
IDOC_AMOUNT = L_AMT_C
IMPORTING
SAP_AMOUNT = P_OU_AMT.
ENDFORM. " CURR_AMT_IDOC_TO_SAP
*&---------------------------------------------------------------------*
*& Form CURR_AMT_SAP_TO_IDOC
*&---------------------------------------------------------------------*
* SAP 금액을 통화별로 표시된 금액으로 변경
*----------------------------------------------------------------------*
FORM CURR_AMT_SAP_TO_IDOC USING P_WAERS
P_IN_AMT_C
CHANGING P_OU_AMT.
DATA: L_AMT_C TYPE STRING.
CALL FUNCTION 'CURRENCY_AMOUNT_SAP_TO_IDOC'
EXPORTING
CURRENCY = P_WAERS
SAP_AMOUNT = P_IN_AMT_C
IMPORTING
IDOC_AMOUNT = L_AMT_C.
CONDENSE L_AMT_C NO-GAPS.
P_OU_AMT = L_AMT_C.
ENDFORM. " CURR_AMT_SAP_TO_IDOC
*&---------------------------------------------------------------------*
*& Form CURR_CONV_FACTOR
*&---------------------------------------------------------------------*
* 통화의 Factor 를 Return
*----------------------------------------------------------------------*
FORM CURR_CONV_FACTOR USING P_WAERS "통화
CHANGING P_FACTOR. "Factor
DATA: L_FACTOR TYPE P DECIMALS 3.
IF P_WAERS IS INITIAL. EXIT. ENDIF.
CLEAR P_FACTOR.
CALL FUNCTION 'CURRENCY_CONVERTING_FACTOR'
EXPORTING
CURRENCY = P_WAERS
IMPORTING
FACTOR = L_FACTOR
EXCEPTIONS
TOO_MANY_DECIMALS = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
P_FACTOR = L_FACTOR.
ENDFORM. " CURR_CONV_FACTOR
*&---------------------------------------------------------------------*
*& Form DATE_CHECK_PLAUSIBILITY
*&---------------------------------------------------------------------*
* 날짜인지 여부 체크
*----------------------------------------------------------------------*
FORM DATE_CHECK_PLAUSIBILITY USING P_DATE
CHANGING P_SUBRC.
DATA: L_DATE TYPE D.
L_DATE = P_DATE.
CALL FUNCTION 'DATE_CHECK_PLAUSIBILITY'
EXPORTING
DATE = L_DATE
EXCEPTIONS
PLAUSIBILITY_CHECK_FAILED = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
P_SUBRC = SY-SUBRC.
EXIT.
ENDIF.
ENDFORM. " DATE_CHECK_PLAUSIBILITY
*&---------------------------------------------------------------------*
*& Form DDIF_FIELDINFO_GET
*&---------------------------------------------------------------------*
* DD: 테이블필드에서 정보를 읽기 위한 인터페이스
* 연관 FORM : SMAN_IF_CONVERT_TO
*----------------------------------------------------------------------*
FORM DDIF_FIELDINFO_GET USING P_FIELD
CHANGING PS_DFIES STRUCTURE DFIES.
DATA: L_TAB TYPE DDOBJNAME,
L_FIELD TYPE DFIES-LFIELDNAME.
CLEAR PS_DFIES.
CASE P_FIELD.
WHEN 'ASACC'. L_TAB = 'T811S'.
WHEN OTHERS. L_TAB = 'CCSS'.
ENDCASE.
L_FIELD = P_FIELD.
CALL FUNCTION 'DDIF_FIELDINFO_GET'
EXPORTING
TABNAME = L_TAB
* FIELDNAME = ' '
* LANGU = SY-LANGU
LFIELDNAME = L_FIELD "' '
* ALL_TYPES = ' '
* GROUP_NAMES = ' '
* UCLEN =
IMPORTING
* X030L_WA =
* DDOBJTYPE =
DFIES_WA = PS_DFIES
* LINES_DESCR =
* TABLES
* DFIES_TAB =
* FIXED_VALUES =
EXCEPTIONS
NOT_FOUND = 1
INTERNAL_ERROR = 2
OTHERS = 3 .
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. " DDIF_FIELDINFO_GET
*&---------------------------------------------------------------------*
*& Form DYNAMIC_COMPO_FLD
*&---------------------------------------------------------------------*
* FIELDCAT -> COMPONENT 로 바꿔준다.
*&---------------------------------------------------------------------*
FORM DYNAMIC_COMPO_FLD TABLES PT_COMPO TYPE ABAP_COMPONENT_TAB
USING P_REF
P_FNAME.
DATA: L_TYPE TYPE REF TO CL_ABAP_TYPEDESCR.
IF P_REF IS INITIAL.
CALL METHOD CL_ABAP_TYPEDESCR=>DESCRIBE_BY_DATA
EXPORTING
P_DATA = P_REF
RECEIVING
P_DESCR_REF = L_TYPE.
ELSE.
CALL METHOD CL_ABAP_DATADESCR=>DESCRIBE_BY_NAME
EXPORTING
P_NAME = P_REF
RECEIVING
P_DESCR_REF = L_TYPE.
ENDIF.
CLEAR PT_COMPO.
PT_COMPO-TYPE ?= L_TYPE.
PT_COMPO-NAME = P_FNAME.
APPEND PT_COMPO.
ENDFORM. " DYNAMIC_COMPO_FLD
*&---------------------------------------------------------------------*
*& Form DYNAMIC_COMPO_IT
*&---------------------------------------------------------------------*
* 동적 IT <GT_M> 생성을 위한 COMPONENT IT 구성
*----------------------------------------------------------------------*
FORM DYNAMIC_COMPO_IT TABLES PT_FCAT TYPE LVC_T_FCAT
PT_COMPO TYPE ABAP_COMPONENT_TAB
USING P_EDIT
P_COLOR.
DATA: LT_CELLTAB TYPE LVC_T_STYL, "EDIT를 위해
LT_CELLCOL TYPE LVC_T_SCOL, "COLOR를 위해
L_STRING TYPE STRING.
CLEAR: PT_COMPO, PT_COMPO[].
LOOP AT PT_FCAT.
CLEAR L_STRING.
IF PT_FCAT-REF_TABLE IS NOT INITIAL AND
PT_FCAT-REF_FIELD IS NOT INITIAL.
CONCATENATE PT_FCAT-REF_TABLE PT_FCAT-REF_FIELD
INTO L_STRING SEPARATED BY '-'.
PERFORM DYNAMIC_COMPO_FLD TABLES PT_COMPO
USING L_STRING
PT_FCAT-FIELDNAME.
ELSE.
PERFORM DYNAMIC_COMPO_FLD TABLES PT_COMPO
USING L_STRING
PT_FCAT-FIELDNAME.
ENDIF.
ENDLOOP.
* 수정 CELLTAB 사용시
IF P_EDIT = 'X'.
PERFORM DYNAMIC_COMPO_FLD TABLES PT_COMPO
USING LT_CELLTAB
'CELLTAB'.
ENDIF.
* 색깔 CELLCOL 사용시
IF P_COLOR = 'X'.
PERFORM DYNAMIC_COMPO_FLD TABLES PT_COMPO
USING LT_CELLCOL
'CELLCOL'.
ENDIF.
ENDFORM. " DYNAMIC_COMPO_IT
*&---------------------------------------------------------------------*
*& Form DYNAMIC_DATA_CREATE
*&---------------------------------------------------------------------*
* 동적 IT <GT_M> 생성을 위한 Structure & Table Type 생성
*----------------------------------------------------------------------*
FORM DYNAMIC_DATA_CREATE TABLES PT_FCAT TYPE LVC_T_FCAT
USING P_EDIT
P_COLOR
CHANGING PT_DATA TYPE REF TO DATA
PS_DATA TYPE REF TO DATA
PT_TEMP TYPE REF TO DATA
PS_TEMP TYPE REF TO DATA.
CLEAR: PT_DATA, PS_DATA,
PT_TEMP, PS_TEMP.
* FIELDCAT를 COMPONENT_TAB 으로 변경
DATA: LT_COMPO TYPE ABAP_COMPONENT_TAB WITH HEADER LINE.
PERFORM DYNAMIC_COMPO_IT TABLES PT_FCAT
LT_COMPO
USING P_EDIT
P_COLOR.
* Structure & Table Type 생성
DATA: LO_STRU_DESC TYPE REF TO CL_ABAP_STRUCTDESCR,
LO_TABL_DESC TYPE REF TO CL_ABAP_TABLEDESCR.
CALL METHOD CL_ABAP_STRUCTDESCR=>CREATE
EXPORTING
P_COMPONENTS = LT_COMPO[]
P_STRICT = CL_ABAP_STRUCTDESCR=>FALSE
RECEIVING
P_RESULT = LO_STRU_DESC.
CALL METHOD CL_ABAP_TABLEDESCR=>CREATE
EXPORTING
P_LINE_TYPE = LO_STRU_DESC
P_TABLE_KIND = CL_ABAP_TABLEDESCR=>TABLEKIND_STD
RECEIVING
P_RESULT = LO_TABL_DESC.
* 동적 DATA 생성
CREATE DATA PT_DATA TYPE HANDLE LO_TABL_DESC.
CREATE DATA PS_DATA TYPE HANDLE LO_STRU_DESC.
* 동적 DATA 생성
CREATE DATA PT_TEMP TYPE HANDLE LO_TABL_DESC.
CREATE DATA PS_TEMP TYPE HANDLE LO_STRU_DESC.
ENDFORM. " DYNAMIC_DATA_CREATE
*&---------------------------------------------------------------------*
*& Form DYNP_VALUES_READ
*&---------------------------------------------------------------------*
* 화면 필드의 값을 읽음
*----------------------------------------------------------------------*
FORM DYNP_VALUES_READ USING P_FIELD_NAME
CHANGING P_FIELD.
DATA: T_DYNPREAD LIKE DYNPREAD OCCURS 0 WITH HEADER LINE,
L_LINE TYPE I.
GET CURSOR LINE L_LINE.
* Read Screen Field
T_DYNPREAD-FIELDNAME = P_FIELD_NAME.
T_DYNPREAD-STEPL = L_LINE.
APPEND T_DYNPREAD.
* Read Screen Info.
CALL FUNCTION 'DYNP_VALUES_READ'
EXPORTING
DYNAME = SY-CPROG
DYNUMB = SY-DYNNR
TABLES
DYNPFIELDS = T_DYNPREAD
EXCEPTIONS
INVALID_ABAPWORKAREA = 01
INVALID_DYNPROFIELD = 02
INVALID_DYNPRONAME = 03
INVALID_DYNPRONUMMER = 04
INVALID_REQUEST = 05
NO_FIELDDESCRIPTION = 06
UNDEFIND_ERROR = 07.
CHECK SY-SUBRC = 0.
* Read Field Value
READ TABLE T_DYNPREAD WITH KEY FIELDNAME = P_FIELD_NAME.
* Upper Case
TRANSLATE T_DYNPREAD-FIELDVALUE TO UPPER CASE.
P_FIELD = T_DYNPREAD-FIELDVALUE.
ENDFORM. " DYNP_VALUES_READ
*&---------------------------------------------------------------------*
*& Form DYNP_VALUES_UPD
*&---------------------------------------------------------------------*
* 화면필드(문자형이어야함)의 값을 Refresh 하여 표시 : 단일
*----------------------------------------------------------------------*
FORM DYNP_VALUES_UPD USING P_FNAME P_VALUE P_LINE.
* 화면 필드 선언 -> 선택된 값을 화면 필드에 뿌려줄때 사용.
DATA: LT_DYNPREAD LIKE DYNPREAD OCCURS 0 WITH HEADER LINE.
* DESC을 바로 보여주기 위한 부분.
LT_DYNPREAD-FIELDNAME = P_FNAME. "반드시 대문자.
LT_DYNPREAD-FIELDVALUE = P_VALUE.
LT_DYNPREAD-STEPL = P_LINE.
APPEND LT_DYNPREAD.
CALL FUNCTION 'DYNP_VALUES_UPDATE'
EXPORTING
DYNAME = SY-CPROG
DYNUMB = SY-DYNNR
TABLES
DYNPFIELDS = LT_DYNPREAD "SCR_FIELDS
EXCEPTIONS
INVALID_ABAPWORKAREA = 1
INVALID_DYNPROFIELD = 2
INVALID_DYNPRONAME = 3
INVALID_DYNPRONUMMER = 4
INVALID_REQUEST = 5
NO_FIELDDESCRIPTION = 6
UNDEFIND_ERROR = 7
OTHERS = 8.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. " DYNP_VALUES_UPD
*&---------------------------------------------------------------------*
*& Form DYNP_VALUES_UPD_M
*&---------------------------------------------------------------------*
* 화면필드(문자형이어야함)의 값을 Refresh 하여 표시 : 여러건
*----------------------------------------------------------------------*
FORM DYNP_VALUES_UPD_M TABLES PT_DYNPREAD STRUCTURE DYNPREAD
USING P_START P_END
P_FNAME P_VALUE. "P_LINE.
* 화면 필드 선언 -> 선택된 값을 화면 필드에 뿌려줄때 사용.
* DATA: LT_DYNPREAD LIKE DYNPREAD OCCURS 0 WITH HEADER LINE.
IF P_START = 'X'.
CLEAR: PT_DYNPREAD, PT_DYNPREAD[].
ENDIF.
* DESC을 바로 보여주기 위한 부분.
CLEAR PT_DYNPREAD.
PT_DYNPREAD-FIELDNAME = P_FNAME. "반드시 대문자.
PT_DYNPREAD-FIELDVALUE = P_VALUE.
* PT_DYNPREAD-STEPL = P_LINE.
APPEND PT_DYNPREAD.
IF P_END = ''. EXIT. ENDIF.
CALL FUNCTION 'DYNP_VALUES_UPDATE'
EXPORTING
DYNAME = SY-CPROG
DYNUMB = SY-DYNNR
TABLES
DYNPFIELDS = PT_DYNPREAD "SCR_FIELDS
EXCEPTIONS
INVALID_ABAPWORKAREA = 1
INVALID_DYNPROFIELD = 2
INVALID_DYNPRONAME = 3
INVALID_DYNPRONUMMER = 4
INVALID_REQUEST = 5
NO_FIELDDESCRIPTION = 6
UNDEFIND_ERROR = 7
OTHERS = 8.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. " DYNP_VALUES_UPDATE
*&---------------------------------------------------------------------*
*& Form FILE_EXIST
*&---------------------------------------------------------------------*
* 로컬PC에 파일이 존재하는지 체크한다.
*----------------------------------------------------------------------*
FORM FILE_EXIST USING P_FULLPATH "전체경로
CHANGING P_EXIST.
CLEAR P_EXIST.
DATA: L_FULLPATH TYPE STRING,
L_RESULT TYPE ABAP_BOOL.
L_FULLPATH = P_FULLPATH.
CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_EXIST
EXPORTING
FILE = L_FULLPATH
RECEIVING
RESULT = L_RESULT
EXCEPTIONS
CNTL_ERROR = 1
ERROR_NO_GUI = 2
WRONG_PARAMETER = 3
NOT_SUPPORTED_BY_GUI = 4
OTHERS = 5.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE 'I' NUMBER SY-MSGNO DISPLAY LIKE SY-MSGTY
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
P_EXIST = L_RESULT.
ENDFORM. " FILE_EXIST
*&---------------------------------------------------------------------*
*& Form GET_DOMAIN_TAB
*&---------------------------------------------------------------------*
FORM GET_DOMAIN_TAB TABLES ET_DD07V STRUCTURE DD07V
USING P_DOMNAME.
CLEAR: ET_DD07V, ET_DD07V[].
IF P_DOMNAME IS INITIAL. EXIT. ENDIF.
SELECT DOMVALUE_L
DDTEXT
INTO CORRESPONDING FIELDS OF TABLE ET_DD07V
FROM DD07V
WHERE DOMNAME = P_DOMNAME "도메인 이름
AND DDLANGUAGE = SY-LANGU.
SORT ET_DD07V BY DOMVALUE_L.
ENDFORM. " GET_DOMAIN_TAB
*&---------------------------------------------------------------------*
*& Form GET_DOMAIN_TEXT
*&---------------------------------------------------------------------*
FORM GET_DOMAIN_TEXT USING P_DOMNAME P_DOMVALUE
CHANGING P_DDTEXT.
DATA: L_TEXT LIKE DD07T-DDTEXT.
CLEAR P_DDTEXT.
CALL FUNCTION 'STF4_GET_DOMAIN_VALUE_TEXT'
EXPORTING
IV_DOMNAME = P_DOMNAME
IV_VALUE = P_DOMVALUE
IMPORTING
EV_VALUE_TEXT = L_TEXT "P_DDTEXT
EXCEPTIONS
VALUE_NOT_FOUND = 1
OTHERS = 2.
P_DDTEXT = L_TEXT.
* DATA: L_LANGU LIKE SY-LANGU.
*
* IF SY-LANGU = '3'.
* L_LANGU = '3'.
* ELSE.
* L_LANGU = 'E'.
* ENDIF.
*
* SELECT SINGLE DDTEXT FROM DD07V INTO P_DDTEXT
* WHERE DOMNAME = P_DOMNAME "도메인 이름
* AND DOMVALUE_L = P_DOMVALUE "코드값
* AND DDLANGUAGE = L_LANGU.
ENDFORM. " GET_DOMAIN_TEXT
*&---------------------------------------------------------------------*
*& Form GET_FIELD_DESC
*&---------------------------------------------------------------------*
* 필드의 언어별 내역을 읽음
*----------------------------------------------------------------------*
FORM GET_FIELD_DESC USING I_TBL_NAME "공백이면 Data-Element
I_FLD_NAME "FIELD 혹은 Data-Element
I_SML "짧은,중간,긴, DEFAULT 'M'
CHANGING E_DESC.
CLEAR E_DESC.
DATA: L_ROLLNAME TYPE DD03L-ROLLNAME.
IF I_TBL_NAME IS INITIAL.
L_ROLLNAME = I_FLD_NAME.
ELSE.
SELECT SINGLE ROLLNAME
INTO L_ROLLNAME
FROM DD03L
WHERE TABNAME = I_TBL_NAME
AND FIELDNAME = I_FLD_NAME.
IF L_ROLLNAME IS INITIAL.
SELECT SINGLE DDTEXT
INTO E_DESC
FROM DD03T
WHERE TABNAME = I_TBL_NAME
AND DDLANGUAGE = SY-LANGU
AND FIELDNAME = I_FLD_NAME.
IF SY-SUBRC <> 0.
SELECT SINGLE DDTEXT
INTO E_DESC
FROM DD03T
WHERE TABNAME = I_TBL_NAME
AND FIELDNAME = I_FLD_NAME.
ENDIF.
EXIT.
ENDIF.
ENDIF.
* DATA-ELEM 로 내역 찾기
DATA: LS_DD04T TYPE DD04T.
SELECT SINGLE *
INTO CORRESPONDING FIELDS OF LS_DD04T
FROM DD04T
WHERE ROLLNAME = L_ROLLNAME
AND DDLANGUAGE = SY-LANGU.
IF SY-SUBRC <> 0.
SELECT SINGLE *
INTO CORRESPONDING FIELDS OF LS_DD04T
FROM DD04T
WHERE ROLLNAME = L_ROLLNAME.
ENDIF.
CASE I_SML.
WHEN 'S'. E_DESC = LS_DD04T-SCRTEXT_S.
WHEN 'M'. E_DESC = LS_DD04T-SCRTEXT_M.
WHEN 'L'. E_DESC = LS_DD04T-SCRTEXT_L.
WHEN OTHERS. E_DESC = LS_DD04T-SCRTEXT_M.
ENDCASE.
IF E_DESC IS INITIAL.
E_DESC = LS_DD04T-DDTEXT.
ENDIF.
ENDFORM. " GET_FIELD_DESC
*&---------------------------------------------------------------------*
*& Form GET_FILE_NAME
*&---------------------------------------------------------------------*
* 파일명 읽는 팝업 띄움
*----------------------------------------------------------------------*
FORM GET_FILE_NAME USING P_GB "'S'(Save), 그외(Open)
P_EXTENSION
CHANGING P_FULLPATH.
DATA: LT_FILETABLE TYPE FILETABLE WITH HEADER LINE,
L_RC TYPE I,
L_FILENAME TYPE STRING,
L_PATH TYPE STRING,
L_FULLPATH TYPE STRING,
L_DFT_FNAME TYPE STRING.
CLEAR: P_FULLPATH.
L_DFT_FNAME = SY-TITLE.
CASE P_GB.
WHEN 'S'. "save dialog
CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG
EXPORTING
* WINDOW_TITLE =
DEFAULT_EXTENSION = P_EXTENSION " 'TXT' , 'XLS'
DEFAULT_FILE_NAME = L_DFT_FNAME
* WITH_ENCODING =
* FILE_FILTER =
* INITIAL_DIRECTORY =
* PROMPT_ON_OVERWRITE = 'X'
CHANGING
FILENAME = L_FILENAME
PATH = L_PATH
FULLPATH = L_FULLPATH
* USER_ACTION =
* FILE_ENCODING =
EXCEPTIONS
CNTL_ERROR = 1
ERROR_NO_GUI = 2
NOT_SUPPORTED_BY_GUI = 3
OTHERS = 4.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
WHEN OTHERS. "Open dialog
CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG
EXPORTING
* WINDOW_TITLE =
DEFAULT_EXTENSION = P_EXTENSION " 'TXT' , 'XLS'
* DEFAULT_FILENAME =
* FILE_FILTER = CL_GUI_FRONTEND_SERVICES=>FILETYPE_EXCEL
* WITH_ENCODING =
* INITIAL_DIRECTORY =
* MULTISELECTION =
CHANGING
FILE_TABLE = LT_FILETABLE[]
RC = L_RC
* USER_ACTION =
* FILE_ENCODING =
EXCEPTIONS
FILE_OPEN_DIALOG_FAILED = 1
CNTL_ERROR = 2
ERROR_NO_GUI = 3
NOT_SUPPORTED_BY_GUI = 4
OTHERS = 5.
IF SY-SUBRC <> 0 OR L_RC = -1.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ELSE.
CLEAR LT_FILETABLE.
READ TABLE LT_FILETABLE INDEX 1.
L_FULLPATH = LT_FILETABLE-FILENAME.
ENDIF.
ENDCASE.
P_FULLPATH = L_FULLPATH.
ENDFORM. " GET_FILE_NAME
*&---------------------------------------------------------------------*
*& Form GET_FILE_NAME_MULTI
*&---------------------------------------------------------------------*
* 여러 파일 선택 가능한 팝업 띄움
*----------------------------------------------------------------------*
FORM GET_FILE_NAME_MULTI TABLES PT_FILE_TABLE TYPE FILETABLE.
DATA: L_RC TYPE I.
CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG
EXPORTING
* WINDOW_TITLE =
* DEFAULT_EXTENSION =
* DEFAULT_FILENAME =
* FILE_FILTER =
* WITH_ENCODING =
* INITIAL_DIRECTORY =
MULTISELECTION = 'X'
CHANGING
FILE_TABLE = PT_FILE_TABLE[]
RC = L_RC
* USER_ACTION =
* FILE_ENCODING =
EXCEPTIONS
FILE_OPEN_DIALOG_FAILED = 1
CNTL_ERROR = 2
ERROR_NO_GUI = 3
NOT_SUPPORTED_BY_GUI = 4
OTHERS = 5.
IF SY-SUBRC <> 0 OR L_RC = -1.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. " GET_FILE_NAME_MULTI
*&---------------------------------------------------------------------*
*& Form GET_FILE_NAME_SPLIT
*&---------------------------------------------------------------------*
* 전체 File Name 을 경로, 파일명, 확장자로 나눔
*----------------------------------------------------------------------*
FORM GET_FILE_NAME_SPLIT USING P_FULLNAME
CHANGING P_FILENAME
P_EXTENTION.
DATA : L_FULLFNAME TYPE DSVASDOCID,
L_DIRECTORY TYPE DSVASDOCID,
L_FILENAME TYPE DSVASDOCID,
L_EXTENTION TYPE DSVASDOCID.
CLEAR: P_FILENAME, P_EXTENTION.
L_FULLFNAME = P_FULLNAME.
CALL FUNCTION 'DSVAS_DOC_FILENAME_SPLIT'
EXPORTING
PF_DOCID = L_FULLFNAME
IMPORTING
PF_DIRECTORY = L_DIRECTORY
PF_FILENAME = L_FILENAME
PF_EXTENSION = L_EXTENTION.
P_FILENAME = L_FILENAME.
P_EXTENTION = L_EXTENTION.
TRANSLATE P_EXTENTION TO UPPER CASE.
ENDFORM. " GET_FILE_NAME_SPLIT
*&---------------------------------------------------------------------*
*& Form GET_FILE_NAME_SPLIT_2
*&---------------------------------------------------------------------*
* 전체 File Name 을 경로, 파일명(확장자없는), 확장자로 나눔
*----------------------------------------------------------------------*
FORM GET_FILE_NAME_SPLIT_2 USING P_FULLNAME
CHANGING P_FILENAME
P_EXTENTION.
CLEAR: P_FILENAME, P_EXTENTION.
DATA: L_FULLNAME TYPE DSVASDOCHEAD-DOCID,
L_FILENAME TYPE DSVASDOCHEAD-DOCID,
L_DIRLEN TYPE I,
L_FILELEN TYPE I.
L_FULLNAME = P_FULLNAME.
* Dateiname suchen
WHILE L_FULLNAME CA ':\/'.
ADD 1 TO SY-FDPOS.
ADD SY-FDPOS TO L_DIRLEN.
SHIFT L_FULLNAME LEFT BY SY-FDPOS PLACES.
ENDWHILE.
L_FILENAME = P_FILENAME = L_FULLNAME.
* Extension bestimmen
WHILE L_FILENAME CS'.'.
ADD 1 TO SY-FDPOS.
ADD SY-FDPOS TO L_FILELEN.
SHIFT L_FILENAME LEFT BY SY-FDPOS PLACES.
ENDWHILE.
IF SY-SUBRC = 0.
P_EXTENTION = L_FILENAME. "확장자
ENDIF.
L_FILELEN = L_FILELEN - 1.
IF L_FILELEN > 0.
P_FILENAME = P_FILENAME(L_FILELEN). "확장자 없는 파일명
ENDIF.
TRANSLATE P_EXTENTION TO UPPER CASE.
ENDFORM. " GET_FILE_NAME_SPLIT_2
*&---------------------------------------------------------------------*
*& Form GET_LAST_DAY_OF_MONTH
*&---------------------------------------------------------------------*
* 해당일자의 말일을 읽어 옴
*----------------------------------------------------------------------*
FORM GET_LAST_DAY_OF_MONTH USING P_IN_DATE
CHANGING P_LAST_DATE.
CALL FUNCTION 'SLS_MISC_GET_LAST_DAY_OF_MONTH'
EXPORTING
DAY_IN = P_IN_DATE
IMPORTING
LAST_DAY_OF_MONTH = P_LAST_DATE
EXCEPTIONS
DAY_IN_NOT_VALID = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. " GET_LAST_DAY_OF_MONT
*&---------------------------------------------------------------------*
*& Form GET_ORDER_STATUS
*&---------------------------------------------------------------------*
FORM GET_ORDER_STATUS USING P_AUFNR
CHANGING P_STTXT.
DATA: L_OBJNR LIKE CAUFV-OBJNR.
CLEAR P_STTXT.
IF P_AUFNR IS INITIAL. EXIT. ENDIF.
SELECT SINGLE OBJNR
INTO L_OBJNR
FROM CAUFV
WHERE AUFNR = P_AUFNR.
CALL FUNCTION 'STATUS_TEXT_EDIT'
EXPORTING
* CLIENT = SY-MANDT
FLG_USER_STAT = 'X' "' '
OBJNR = L_OBJNR
* ONLY_ACTIVE = 'X'
SPRAS = SY-LANGU
* BYPASS_BUFFER = ' '
IMPORTING
* ANW_STAT_EXISTING =
* E_STSMA =
LINE = P_STTXT
* USER_LINE =
* STONR =
EXCEPTIONS
OBJECT_NOT_FOUND = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. " GET_ORDER_STAT
*&---------------------------------------------------------------------*
*& Form GET_UD_CODE
*&---------------------------------------------------------------------*
* 사용결정코드 구한다. 검사로트번호로
*----------------------------------------------------------------------*
FORM GET_UD_CODE USING P_PRUEFLOS
CHANGING P_VCODE
P_KURZTEXT.
DATA: LS_QAVE LIKE QAVE.
CLEAR: P_VCODE, P_KURZTEXT.
SELECT SINGLE *
INTO CORRESPONDING FIELDS OF LS_QAVE
FROM QAVE
WHERE PRUEFLOS = P_PRUEFLOS.
IF SY-SUBRC <> 0. EXIT. ENDIF.
P_VCODE = LS_QAVE-VCODE.
SELECT SINGLE KURZTEXT
INTO P_KURZTEXT
FROM QPCT "QPCD
WHERE KATALOGART = LS_QAVE-VKATART
AND CODEGRUPPE = LS_QAVE-VCODEGRP
AND CODE = LS_QAVE-VCODE
AND SPRACHE = SY-LANGU
AND VERSION = LS_QAVE-VERSIONAM.
ENDFORM. " GET_UD_CODE
*&---------------------------------------------------------------------*
*& Form GET_SAP_USER_NAME
*&---------------------------------------------------------------------*
* SAP User ID로 이름을 읽어옴
*----------------------------------------------------------------------*
FORM GET_SAP_USER_NAME USING P_BNAME
CHANGING P_USER_NAME.
DATA: LT_RTN LIKE BAPIRET2 OCCURS 0 WITH HEADER LINE,
LS_ADDR LIKE BAPIADDR3.
CLEAR: P_USER_NAME.
IF P_BNAME IS INITIAL. EXIT. ENDIF.
CALL FUNCTION 'BAPI_USER_GET_DETAIL'
EXPORTING
USERNAME = P_BNAME "SY-UNAME
IMPORTING
ADDRESS = LS_ADDR
TABLES
RETURN = LT_RTN.
CONCATENATE LS_ADDR-LASTNAME LS_ADDR-FIRSTNAME
INTO P_USER_NAME SEPARATED BY ''.
* 다른 방법
*FORM F_NAME_SELECT USING P_L_UNAME LIKE SY-UNAME
* CHANGING P_L_NAMET LIKE ADRP-NAME_TEXT.
*
* DATA : LV_FIRST LIKE ADRP-NAME_FIRST,
* LV_LAST LIKE ADRP-NAME_LAST.
*
* SELECT SINGLE
* ADRP~NAME_FIRST
* ADRP~NAME_LAST
* INTO (LV_FIRST,
* LV_LAST)
* FROM USR21
* INNER JOIN ADRP
* ON ADRP~PERSNUMBER EQ USR21~PERSNUMBER
* WHERE USR21~BNAME EQ P_L_UNAME.
*
* IF SY-DBCNT NE 0.
* CONCATENATE LV_LAST LV_FIRST INTO P_L_NAMET.
* ENDIF.
ENDFORM. " GET_SAP_USER_NAME
*&---------------------------------------------------------------------*
*& Form GUI_DOWNLOAD
*&---------------------------------------------------------------------*
* GUI_DOWNLOAD 를 수행한다.
*----------------------------------------------------------------------*
FORM GUI_DOWNLOAD TABLES PT_FLD TYPE STANDARD TABLE
PT_TAB TYPE STANDARD TABLE
USING P_FILETYPE
CHANGING P_FULLPATH.
DATA: L_FULLPATH TYPE STRING,
L_FILETYPE(10).
CLEAR P_FULLPATH.
PERFORM GET_FILE_NAME USING 'S' "'S'(Save), 그외(Open)
'XLS'
CHANGING L_FULLPATH.
IF L_FULLPATH IS INITIAL. EXIT. ENDIF.
P_FULLPATH = L_FULLPATH.
IF P_FILETYPE IS INITIAL.
L_FILETYPE = 'DAT'.
ELSE.
L_FILETYPE = P_FILETYPE.
ENDIF.
CALL METHOD CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD
EXPORTING
* BIN_FILESIZE =
FILENAME = L_FULLPATH
FILETYPE = L_FILETYPE "'DAT'
* APPEND = SPACE
* WRITE_FIELD_SEPARATOR = SPACE
* HEADER = '00'
* TRUNC_TRAILING_BLANKS = SPACE
* WRITE_LF = 'X'
* COL_SELECT = SPACE
* COL_SELECT_MASK = SPACE
* DAT_MODE = SPACE
* CONFIRM_OVERWRITE = SPACE
* NO_AUTH_CHECK = SPACE
* CODEPAGE = SPACE
* IGNORE_CERR = ABAP_TRUE
* REPLACEMENT = '#'
* WRITE_BOM = SPACE
* TRUNC_TRAILING_BLANKS_EOL = 'X'
* WK1_N_FORMAT = SPACE
* WK1_N_SIZE = SPACE
* WK1_T_FORMAT = SPACE
* WK1_T_SIZE = SPACE
* SHOW_TRANSFER_STATUS = 'X'
FIELDNAMES = PT_FLD[]
* WRITE_LF_AFTER_LAST_LINE = 'X'
* IMPORTING
* FILELENGTH =
CHANGING
DATA_TAB = PT_TAB[]
EXCEPTIONS
FILE_WRITE_ERROR = 1
NO_BATCH = 2
GUI_REFUSE_FILETRANSFER = 3
INVALID_TYPE = 4
NO_AUTHORITY = 5
UNKNOWN_ERROR = 6
HEADER_NOT_ALLOWED = 7
SEPARATOR_NOT_ALLOWED = 8
FILESIZE_NOT_ALLOWED = 9
HEADER_TOO_LONG = 10
DP_ERROR_CREATE = 11
DP_ERROR_SEND = 12
DP_ERROR_WRITE = 13
UNKNOWN_DP_ERROR = 14
ACCESS_DENIED = 15
DP_OUT_OF_MEMORY = 16
DISK_FULL = 17
DP_TIMEOUT = 18
FILE_NOT_FOUND = 19
DATAPROVIDER_EXCEPTION = 20
CONTROL_FLUSH_ERROR = 21
NOT_SUPPORTED_BY_GUI = 22
ERROR_NO_GUI = 23
OTHERS = 24 .
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. " GUI_DOWNLOAD
*&---------------------------------------------------------------------*
*& Form GUI_DOWNLOAD_SMW0
*&---------------------------------------------------------------------*
* SMW0에 등록된 양식파일을 GUI_DOWNLOAD 수행한다.
*----------------------------------------------------------------------*
FORM GUI_DOWNLOAD_SMW0 USING P_OBJID "SMW0에 등록된 OBJ ID
P_EXTENSION. "확장자
DATA: LT_DOC_DATA TYPE TABLE OF W3MIME,
LT_FLD TYPE TABLE OF CHAR10,
L_FULLPATH TYPE STRING,
L_DOC_SIZE TYPE I.
CALL FUNCTION 'SAP_OI_LOAD_MIME_DATA'
EXPORTING
OBJECT_ID = P_OBJID "SMW0에 등록된 OBJ ID
IMPORTING
DATA_SIZE = L_DOC_SIZE
TABLES
DATA_TABLE = LT_DOC_DATA
EXCEPTIONS
OBJECT_NOT_FOUND = 1
INTERNAL_ERROR = 2
OTHERS = 3.
PERFORM GET_FILE_NAME USING 'S' "'S'(Save), 그외(Open)
P_EXTENSION "'XLS'
CHANGING L_FULLPATH.
IF L_FULLPATH IS INITIAL. EXIT. ENDIF.
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
BIN_FILESIZE = L_DOC_SIZE
FILENAME = L_FULLPATH
FILETYPE = 'BIN'
TABLES
DATA_TAB = LT_DOC_DATA.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE 'I' NUMBER SY-MSGNO DISPLAY LIKE SY-MSGTY
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
EXIT.
ENDIF.
PERFORM EXECUTE_FILE USING L_FULLPATH. "전체경로
ENDFORM. " GUI_DOWNLOAD_SMW0
*&---------------------------------------------------------------------*
*& Form HOLIDAY_GET
*&---------------------------------------------------------------------*
* 휴일인지 여부 체크 및 다음(이전) 영업일 찾는다
*&---------------------------------------------------------------------*
FORM HOLIDAY_GET USING P_GB " ''(휴일인지 체크), '1'(다음 영업일), '-1'(이전 영업일)
P_SDATE "기준일
CHANGING P_NEXT_WDATE. "다음영업일 or 이전영업일
DATA: LT_HOLIDAY TYPE ISCAL_DAY OCCURS 0 WITH HEADER LINE,
L_FR_DATE TYPE D,
L_TO_DATE TYPE D.
CASE P_GB.
WHEN ''. "영업일 여부 체크, 영업일이면 P_NEXT_WDATE = '00000000'
L_FR_DATE = P_SDATE.
L_TO_DATE = P_SDATE.
WHEN '1'. "다음 영업일 구함
L_FR_DATE = P_SDATE.
L_TO_DATE = P_SDATE + 31.
WHEN '-1'. "이전 영업일 구함
L_FR_DATE = P_SDATE - 31.
L_TO_DATE = P_SDATE.
ENDCASE.
CALL FUNCTION 'HOLIDAY_GET'
EXPORTING
* HOLIDAY_CALENDAR = ' '
FACTORY_CALENDAR = 'KR' "' '
DATE_FROM = L_FR_DATE
DATE_TO = L_TO_DATE
* IMPORTING
* YEAR_OF_VALID_FROM =
* YEAR_OF_VALID_TO =
* RETURNCODE =
TABLES
HOLIDAYS = LT_HOLIDAY
EXCEPTIONS
FACTORY_CALENDAR_NOT_FOUND = 1
HOLIDAY_CALENDAR_NOT_FOUND = 2
DATE_HAS_INVALID_FORMAT = 3
DATE_INCONSISTENCY = 4
OTHERS = 5 .
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE 'I' NUMBER SY-MSGNO DISPLAY LIKE SY-MSGTY
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
SORT LT_HOLIDAY.
* 구분에 따른 처리
CASE P_GB.
WHEN ''.
READ TABLE LT_HOLIDAY WITH KEY DATE = P_SDATE BINARY SEARCH.
IF SY-SUBRC = 0.
P_NEXT_WDATE = P_SDATE.
IF LT_HOLIDAY-TXT_SHORT IS NOT INITIAL.
MESSAGE S000(FB) WITH P_SDATE '은' LT_HOLIDAY-TXT_SHORT '입니다.'.
ELSE.
MESSAGE S000(FB) WITH P_SDATE '은 휴일입니다.'.
ENDIF.
EXIT.
ENDIF.
CLEAR P_NEXT_WDATE.
WHEN '1'.
DO 31 TIMES.
P_NEXT_WDATE = L_FR_DATE + SY-INDEX. "1.
READ TABLE LT_HOLIDAY WITH KEY DATE = P_NEXT_WDATE BINARY SEARCH.
IF SY-SUBRC <> 0. EXIT. ENDIF.
ENDDO.
WHEN '-1'.
DO 31 TIMES.
P_NEXT_WDATE = L_TO_DATE - SY-INDEX. "1.
READ TABLE LT_HOLIDAY WITH KEY DATE = P_NEXT_WDATE BINARY SEARCH.
IF SY-SUBRC <> 0. EXIT. ENDIF.
ENDDO.
ENDCASE.
ENDFORM. " HOLIDAY_GET
*&---------------------------------------------------------------------*
*& Form JOB_CLOSE
*&---------------------------------------------------------------------*
* 백그라운드 JOB을 CLOSE(실행)한다.
*----------------------------------------------------------------------*
FORM JOB_CLOSE USING P_JOBNAME
P_JOBCOUNT
P_STRTIMMED. "즉시 실행 여부
CALL FUNCTION 'JOB_CLOSE'
EXPORTING
* AT_OPMODE = ' '
* AT_OPMODE_PERIODIC = ' '
* CALENDAR_ID = ' '
* EVENT_ID = ' '
* EVENT_PARAM = ' '
* EVENT_PERIODIC = ' '
JOBCOUNT = P_JOBCOUNT
JOBNAME = P_JOBNAME
* LASTSTRTDT = NO_DATE
* LASTSTRTTM = NO_TIME
* PRDDAYS = 0
* PRDHOURS = 0
* PRDMINS = 0
* PRDMONTHS = 0
* PRDWEEKS = 0
* PREDJOB_CHECKSTAT = ' '
* PRED_JOBCOUNT = ' '
* PRED_JOBNAME = ' '
* SDLSTRTDT = NO_DATE
* SDLSTRTTM = NO_TIME
* STARTDATE_RESTRICTION = BTC_PROCESS_ALWAYS
STRTIMMED = P_STRTIMMED "즉시 실행의 경우 'X' "' '
* TARGETSYSTEM = ' '
* START_ON_WORKDAY_NOT_BEFORE = SY-DATUM
* START_ON_WORKDAY_NR = 0
* WORKDAY_COUNT_DIRECTION = 0
* RECIPIENT_OBJ =
* TARGETSERVER = ' '
* DONT_RELEASE = ' '
* TARGETGROUP = ' '
* DIRECT_START =
* IMPORTING
* JOB_WAS_RELEASED =
* CHANGING
* RET =
EXCEPTIONS
CANT_START_IMMEDIATE = 1
INVALID_STARTDATE = 2
JOBNAME_MISSING = 3
JOB_CLOSE_FAILED = 4
JOB_NOSTEPS = 5
JOB_NOTEX = 6
LOCK_FAILED = 7
INVALID_TARGET = 8
OTHERS = 9 .
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE 'I' NUMBER SY-MSGNO DISPLAY LIKE SY-MSGTY
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. " JOB_CLOSE
*&---------------------------------------------------------------------*
*& Form JOB_OPEN
*&---------------------------------------------------------------------*
* 백그라운드 JOB을 생성한다.
*----------------------------------------------------------------------*
FORM JOB_OPEN USING P_JOBNAME
CHANGING P_JOBCOUNT.
CLEAR P_JOBCOUNT.
CALL FUNCTION 'JOB_OPEN'
EXPORTING
* DELANFREP = ' '
* JOBGROUP = ' '
JOBNAME = P_JOBNAME
* SDLSTRTDT = NO_DATE
* SDLSTRTTM = NO_TIME
* JOBCLASS =
IMPORTING
JOBCOUNT = P_JOBCOUNT
* CHANGING
* RET =
EXCEPTIONS
CANT_CREATE_JOB = 1
INVALID_JOB_DATA = 2
JOBNAME_MISSING = 3
OTHERS = 4 .
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE 'I' NUMBER SY-MSGNO DISPLAY LIKE SY-MSGTY
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. " JOB_OPENUSH
*&---------------------------------------------------------------------*
*& Form K_HIERARCHY_TABLES_READ
*&---------------------------------------------------------------------*
* 코스트센타그룹(0101),원가요소그룹(0102) 등에 대한 노드,값 등을 구한다
*----------------------------------------------------------------------*
FORM K_HIERARCHY_TABLES_READ TABLES ET_NODES STRUCTURE GRPOBJECTS
ET_VALUES STRUCTURE GRPVALUES
ET_MASTER STRUCTURE GRPMDLINE
USING P_CLASS "0101, 0102 등등
P_KOKRS
P_SETID. "CLASS,KOKRS 합하지 않은 값
CLEAR: ET_NODES, ET_NODES[],
ET_VALUES, ET_VALUES[],
ET_MASTER, ET_MASTER[].
DATA: LS_MASTER LIKE GRPHP1,
L_SETID LIKE SETHIER-SETID,
L_INFO LIKE GRPHINFO,
L_OVERWRITE LIKE SY-DATAR.
CONCATENATE P_CLASS P_KOKRS P_SETID INTO L_SETID.
LS_MASTER-MDCHECK = 'X'.
LS_MASTER-BREAKINT = 'X'.
LS_MASTER-SHOWTXT = 'X'.
CALL FUNCTION 'K_HIERARCHY_TABLES_READ'
EXPORTING
E_CLASS = P_CLASS
E_SETID = L_SETID "P_SETID
E_KOKRS = P_KOKRS
* E_MANDT =
E_MASTER_DATA = LS_MASTER
* E_STRUCTURE =
* E_REPLACE_CLASS =
* E_REPLACE_UNIT =
* E_REPLACE_TABLE = ' '
* E_REPLACE_FIELD = ' '
* E_SUFFIX =
* E_OLD_LINE_LEVEL = 0
* IMPORTING
* I_DOUBLE_CHECK =
* I_MASTER_DATA =
TABLES
T_NODES = ET_NODES
T_VALUES = ET_VALUES
T_MASTER_DATA = ET_MASTER
* T_FORMULA =
* T_FIELD_INFO =
* T_NODE_LIST_OVERWRITE =
CHANGING
C_INFO = L_INFO
C_OVERWRITE = L_OVERWRITE
EXCEPTIONS
NO_CONTROLLING_AREA = 1
NO_CHART_OF_ACCOUNT = 2
DIFFERENT_CONTROLLING_AREAS = 3
DIFFERENT_CHART_OF_ACCOUNTS = 4
SET_NOT_FOUND = 5
ILLEGAL_FIELD_REPLACEMENT = 6
ILLEGAL_TABLE_REPLACEMENT = 7
FM_RAISE = 8
CONVERT_ERROR = 9
NO_OVERWRITE_STANDARD_HIER = 10
NO_BUKRS_FOR_KOKRS = 11
OTHERS = 12 .
IF SY-SUBRC <> 0.
* Implement suitable error handling here
ENDIF.
ENDFORM. " K_HIERARCHY_TABLES_READ
*&---------------------------------------------------------------------*
*& Form KOSTL_OBJECT_KEY_GET
*&---------------------------------------------------------------------*
* 코스트센터에 대한 오브젝트번호 제공
*----------------------------------------------------------------------*
FORM KOSTL_OBJECT_KEY_GET USING P_KOKRS
P_KOSTL
CHANGING P_OBJNR.
CLEAR P_OBJNR.
CALL FUNCTION 'K_KOSTL_OBJECT_KEY_GET'
EXPORTING
KOKRS = P_KOKRS
KOSTL = P_KOSTL
IMPORTING
OBJNR = P_OBJNR.
ENDFORM. " KOSTL_OBJECT_KEY_GET
*&---------------------------------------------------------------------*
*& Form MESSAGE_APPEND_IT
*&---------------------------------------------------------------------*
* Message를 IT에 추가한다
*----------------------------------------------------------------------*
FORM MESSAGE_APPEND_IT TABLES PT_MSG STRUCTURE FIMSG
USING P_MSGTY P_MSGV1 P_MSGV2 P_MSGV3 P_MSGV4.
CLEAR PT_MSG.
PT_MSG-MSGID = 'FB'.
PT_MSG-MSGTY = P_MSGTY. "'E'.
PT_MSG-MSGNO = '000'.
PT_MSG-MSGV1 = P_MSGV1.
PT_MSG-MSGV2 = P_MSGV2.
PT_MSG-MSGV3 = P_MSGV3.
PT_MSG-MSGV4 = P_MSGV4.
APPEND PT_MSG.
ENDFORM. " MESSAGE_APPEND_IT
*&---------------------------------------------------------------------*
*& Form MSG_BUILD_BAPI
*&---------------------------------------------------------------------*
* BAPI 수행 후 Message를 한 문장으로 만들어준다
*----------------------------------------------------------------------*
FORM MSG_BUILD_BAPI USING IS_RET STRUCTURE BAPIRET2
CHANGING E_MSG.
CLEAR E_MSG.
CALL FUNCTION 'SX_MESSAGE_TEXT_BUILD'
EXPORTING
MSGID = IS_RET-ID
MSGNR = IS_RET-NUMBER
MSGV1 = IS_RET-MESSAGE_V1
MSGV2 = IS_RET-MESSAGE_V2
MSGV3 = IS_RET-MESSAGE_V3
MSGV4 = IS_RET-MESSAGE_V4
IMPORTING
MESSAGE_TEXT_OUTPUT = E_MSG.
* MESSAGE ID IS_RET-ID TYPE 'S' NUMBER IS_RET-NUMBER
* WITH IS_RET-MESSAGE_V1
* IS_RET-MESSAGE_V2
* IS_RET-MESSAGE_V3
* IS_RET-MESSAGE_V4
* INTO E_MSG.
ENDFORM. " MSG_BUILD_BAPI
*&---------------------------------------------------------------------*
*& Form MESSAGE_BUILD_BDC
*&---------------------------------------------------------------------*
* BDC 수행 후 Message를 한 문장으로 만들어준다
*----------------------------------------------------------------------*
FORM MESSAGE_BUILD_BDC USING PS_STR STRUCTURE BDCMSGCOLL
CHANGING P_MSG.
CLEAR P_MSG.
CALL FUNCTION 'SX_MESSAGE_TEXT_BUILD'
EXPORTING
MSGID = PS_STR-MSGID
MSGNR = PS_STR-MSGNR
MSGV1 = PS_STR-MSGV1
MSGV2 = PS_STR-MSGV2
MSGV3 = PS_STR-MSGV3
MSGV4 = PS_STR-MSGV4
IMPORTING
MESSAGE_TEXT_OUTPUT = P_MSG.
ENDFORM. " MESSAGE_BUILD_BDC
*&---------------------------------------------------------------------*
*& Form MESSAGE_TEXT_BUILD
*&---------------------------------------------------------------------*
* Message를 한 문장으로 만들어준다
*----------------------------------------------------------------------*
FORM MESSAGE_TEXT_BUILD USING SYST STRUCTURE SYST
CHANGING P_MSG.
CLEAR P_MSG.
CALL FUNCTION 'SX_MESSAGE_TEXT_BUILD'
EXPORTING
MSGID = SYST-MSGID
MSGNR = SYST-MSGNO
MSGV1 = SYST-MSGV1
MSGV2 = SYST-MSGV2
MSGV3 = SYST-MSGV3
MSGV4 = SYST-MSGV4
IMPORTING
MESSAGE_TEXT_OUTPUT = P_MSG.
ENDFORM. " MESSAGE_TEXT_BUILD
*&---------------------------------------------------------------------*
*& Form MSG_POP_BAPI
*&---------------------------------------------------------------------*
* Message IT를 팝업으로 띄운다 : BAPI 구조체
*----------------------------------------------------------------------*
FORM MSG_POP_BAPI TABLES PT_RET STRUCTURE BAPIRET2.
DATA: BEGIN OF LT_MSG OCCURS 0,
ARBGB LIKE SMESG-ARBGB, "Message ID
MSGTY LIKE SMESG-MSGTY, "Message Type
TXTNR LIKE SMESG-TXTNR, "Message Number
MSGV1 LIKE SMESG-MSGV1, "Message Parameter
MSGV2 LIKE SMESG-MSGV2, "Message Parameter
MSGV3 LIKE SMESG-MSGV3, "Message Parameter
MSGV4 LIKE SMESG-MSGV4, "Message Parameter
END OF LT_MSG.
LOOP AT PT_RET.
CLEAR LT_MSG.
LT_MSG-ARBGB = PT_RET-ID. "Message ID
LT_MSG-MSGTY = PT_RET-TYPE. "Message Type
LT_MSG-TXTNR = PT_RET-NUMBER. "Message Number
LT_MSG-MSGV1 = PT_RET-MESSAGE_V1. "Message Parameter
LT_MSG-MSGV2 = PT_RET-MESSAGE_V2. "Message Parameter
LT_MSG-MSGV3 = PT_RET-MESSAGE_V3. "Message Parameter
LT_MSG-MSGV4 = PT_RET-MESSAGE_V4. "Message Parameter
APPEND LT_MSG.
ENDLOOP.
* Message 출력 초기화
CALL FUNCTION 'MESSAGES_INITIALIZE'.
* Message Store
LOOP AT LT_MSG.
CALL FUNCTION 'MESSAGE_STORE'
EXPORTING
ARBGB = LT_MSG-ARBGB
MSGTY = LT_MSG-MSGTY
MSGV1 = LT_MSG-MSGV1
MSGV2 = LT_MSG-MSGV2
MSGV3 = LT_MSG-MSGV3
MSGV4 = LT_MSG-MSGV4
TXTNR = LT_MSG-TXTNR.
ENDLOOP.
* Message Show
CALL FUNCTION 'MESSAGES_SHOW'
EXPORTING
* CORRECTIONS_OPTION = ' '
* CORRECTIONS_FUNC_TEXT = ' '
* LINE_FROM = ' '
* LINE_TO = ' '
* OBJECT = ' '
* SEND_IF_ONE = ' '
* BATCH_LIST_TYPE = 'J'
SHOW_LINNO = ' ' "'X'
* SHOW_LINNO_TEXT = ' '
* SHOW_LINNO_TEXT_LEN = '3'
* I_USE_GRID = ' '
* I_AMODAL_WINDOW = ' '
* MSG_SELECT_FUNC = ' '
* MSG_SELECT_FUNC_TEXT = ' '
* IMPORTING
* CORRECTIONS_WANTED =
* E_EXIT_COMMAND =
* MSG_SELECTED =
EXCEPTIONS
INCONSISTENT_RANGE = 1
NO_MESSAGES = 2
OTHERS = 3 .
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. " MSG_POP_BAPI
*&---------------------------------------------------------------------*
*& Form MSG_POP_BDC
*&---------------------------------------------------------------------*
* Message IT를 팝업으로 띄운다 : BDC 구조체
*----------------------------------------------------------------------*
FORM MSG_POP_BDC TABLES PT_MSG STRUCTURE BDCMSGCOLL.
DATA: BEGIN OF LT_MSG OCCURS 0,
ARBGB LIKE SMESG-ARBGB, "Message ID
MSGTY LIKE SMESG-MSGTY, "Message Type
TXTNR LIKE SMESG-TXTNR, "Message Number
MSGV1 LIKE SMESG-MSGV1, "Message Parameter
MSGV2 LIKE SMESG-MSGV2, "Message Parameter
MSGV3 LIKE SMESG-MSGV3, "Message Parameter
MSGV4 LIKE SMESG-MSGV4, "Message Parameter
END OF LT_MSG.
LOOP AT PT_MSG.
LT_MSG-ARBGB = PT_MSG-MSGID. "Message ID
LT_MSG-MSGTY = PT_MSG-MSGTYP. "Message Type
LT_MSG-TXTNR = PT_MSG-MSGNR. "Message Number
LT_MSG-MSGV1 = PT_MSG-MSGV1. "Message Parameter
LT_MSG-MSGV2 = PT_MSG-MSGV2. "Message Parameter
LT_MSG-MSGV3 = PT_MSG-MSGV3. "Message Parameter
LT_MSG-MSGV4 = PT_MSG-MSGV4. "Message Parameter
APPEND LT_MSG.
ENDLOOP.
* Message 출력 초기화
CALL FUNCTION 'MESSAGES_INITIALIZE'.
* Message Store
LOOP AT LT_MSG.
CALL FUNCTION 'MESSAGE_STORE'
EXPORTING
ARBGB = LT_MSG-ARBGB
MSGTY = LT_MSG-MSGTY
MSGV1 = LT_MSG-MSGV1
MSGV2 = LT_MSG-MSGV2
MSGV3 = LT_MSG-MSGV3
MSGV4 = LT_MSG-MSGV4
TXTNR = LT_MSG-TXTNR.
ENDLOOP.
* Message Show
CALL FUNCTION 'MESSAGES_SHOW'
EXPORTING
SHOW_LINNO = ' '.
ENDFORM. " MSG_POP_BDC
*&---------------------------------------------------------------------*
*& Form MSG_POP_FI
*&---------------------------------------------------------------------*
* Message IT를 팝업으로 띄운다 : FI 구조체
*----------------------------------------------------------------------*
FORM MSG_POP_FI TABLES PT_MSG STRUCTURE FIMSG.
DATA: BEGIN OF LT_MSG OCCURS 0,
ARBGB LIKE SMESG-ARBGB, "Message ID
MSGTY LIKE SMESG-MSGTY, "Message Type
TXTNR LIKE SMESG-TXTNR, "Message Number
MSGV1 LIKE SMESG-MSGV1, "Message Parameter
MSGV2 LIKE SMESG-MSGV2, "Message Parameter
MSGV3 LIKE SMESG-MSGV3, "Message Parameter
MSGV4 LIKE SMESG-MSGV4, "Message Parameter
END OF LT_MSG.
IF PT_MSG[] IS INITIAL. EXIT. ENDIF.
LOOP AT PT_MSG.
LT_MSG-ARBGB = PT_MSG-MSGID. "Message ID
LT_MSG-MSGTY = PT_MSG-MSGTY. "Message Type
LT_MSG-TXTNR = PT_MSG-MSGNO. "Message Number
LT_MSG-MSGV1 = PT_MSG-MSGV1. "Message Parameter
LT_MSG-MSGV2 = PT_MSG-MSGV2. "Message Parameter
LT_MSG-MSGV3 = PT_MSG-MSGV3. "Message Parameter
LT_MSG-MSGV4 = PT_MSG-MSGV4. "Message Parameter
APPEND LT_MSG.
ENDLOOP.
* Message 출력 초기화
CALL FUNCTION 'MESSAGES_INITIALIZE'.
* Message Store
LOOP AT LT_MSG.
CALL FUNCTION 'MESSAGE_STORE'
EXPORTING
ARBGB = LT_MSG-ARBGB
MSGTY = LT_MSG-MSGTY
MSGV1 = LT_MSG-MSGV1
MSGV2 = LT_MSG-MSGV2
MSGV3 = LT_MSG-MSGV3
MSGV4 = LT_MSG-MSGV4
TXTNR = LT_MSG-TXTNR.
ENDLOOP.
* Message Show
CALL FUNCTION 'MESSAGES_SHOW'
EXPORTING
SHOW_LINNO = ' '.
ENDFORM. " MSG_POP_FI
*&---------------------------------------------------------------------*
*& Form MSG_SYST_TO_BAPI
*&---------------------------------------------------------------------*
* SYST의 메시지 정보를 BAPI 메시지 정보로 변경
*&---------------------------------------------------------------------*
FORM MSG_SYST_TO_BAPI USING IS_SYST STRUCTURE SYST
I_MSGTY
CHANGING ES_BAPI STRUCTURE BAPIRET2.
ES_BAPI-ID = IS_SYST-MSGID.
ES_BAPI-TYPE = I_MSGTY. "IS_SYST-MSGTY.
ES_BAPI-NUMBER = IS_SYST-MSGNO.
ES_BAPI-MESSAGE_V1 = IS_SYST-MSGV1.
ES_BAPI-MESSAGE_V2 = IS_SYST-MSGV2.
ES_BAPI-MESSAGE_V3 = IS_SYST-MSGV3.
ES_BAPI-MESSAGE_V4 = IS_SYST-MSGV4.
MESSAGE ID ES_BAPI-ID TYPE ES_BAPI-TYPE NUMBER ES_BAPI-NUMBER
WITH ES_BAPI-MESSAGE_V1
ES_BAPI-MESSAGE_V2
ES_BAPI-MESSAGE_V3
ES_BAPI-MESSAGE_V4
INTO ES_BAPI-MESSAGE.
ENDFORM. " MSG_SYST_TO_BAPI
*&---------------------------------------------------------------------*
*& Form NUMBER_GET_NEXT
*&---------------------------------------------------------------------*
* NUMBER RANGE 생성 : SNRO 참조
*&---------------------------------------------------------------------*
FORM NUMBER_GET_NEXT USING P_NR_RANGE_NR
P_OBJECT
CHANGING P_NO.
CLEAR P_NO.
CALL FUNCTION 'NUMBER_GET_NEXT'
EXPORTING
NR_RANGE_NR = P_NR_RANGE_NR "'01'
OBJECT = P_OBJECT "'ZCONO7'
* QUANTITY = '1'
* SUBOBJECT = ' '
* TOYEAR = '0000'
* IGNORE_BUFFER = ' '
IMPORTING
NUMBER = P_NO
* QUANTITY =
* RETURNCODE =
EXCEPTIONS
INTERVAL_NOT_FOUND = 1
NUMBER_RANGE_NOT_INTERN = 2
OBJECT_NOT_FOUND = 3
QUANTITY_IS_0 = 4
QUANTITY_IS_NOT_1 = 5
INTERVAL_OVERFLOW = 6
BUFFER_OVERFLOW = 7
OTHERS = 8.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. " NUMBER_GET_NEXT
*&---------------------------------------------------------------------*
*& Form NUMERIC_CHECK
*&---------------------------------------------------------------------*
* Input값이 숫자값만으로 구성되었는지 체크
*&---------------------------------------------------------------------*
FORM NUMERIC_CHECK USING P_IN_STR
CHANGING P_NUM.
DATA: L_HTYPE LIKE DD01V-DATATYPE,
L_STR(200).
CLEAR P_NUM.
L_STR = P_IN_STR.
PERFORM STRING_REPLACE USING '-' ''
CHANGING L_STR.
PERFORM STRING_REPLACE USING '.' '/'
CHANGING L_STR.
PERFORM STRING_REPLACE USING '/' ''
CHANGING L_STR.
CONDENSE L_STR NO-GAPS.
CALL FUNCTION 'NUMERIC_CHECK'
EXPORTING
STRING_IN = L_STR
IMPORTING
* STRING_OUT =
HTYPE = L_HTYPE.
IF L_HTYPE = 'NUMC'.
P_NUM = 'X'.
ENDIF.
ENDFORM. " NUMERIC_CHECK
*&---------------------------------------------------------------------*
*& Form POPUP_CONF
*&---------------------------------------------------------------------*
* 저장여부 등 팝업 질문창을 띄운다. '1' = YES
*----------------------------------------------------------------------*
FORM POPUP_CONF USING P_TEXT
CHANGING P_ANSWER.
CLEAR P_ANSWER.
CALL FUNCTION 'POPUP_TO_CONFIRM'
EXPORTING
TITLEBAR = 'Confirm' "' '
* DIAGNOSE_OBJECT = ' '
TEXT_QUESTION = P_TEXT
* TEXT_BUTTON_1 = 'Ja'(001)
* ICON_BUTTON_1 = ' '
* TEXT_BUTTON_2 = 'Nein'(002)
* ICON_BUTTON_2 = ' '
* DEFAULT_BUTTON = '1'
* DISPLAY_CANCEL_BUTTON = 'X'
* USERDEFINED_F1_HELP = ' '
* START_COLUMN = 25
* START_ROW = 6
* POPUP_TYPE =
* IV_QUICKINFO_BUTTON_1 = ' '
* IV_QUICKINFO_BUTTON_2 = ' '
IMPORTING
ANSWER = P_ANSWER
* TABLES
* PARAMETER =
EXCEPTIONS
TEXT_NOT_FOUND = 1
OTHERS = 2 .
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. " POPUP_CONF
*&---------------------------------------------------------------------*
*& Form POPUP_CONF2
*&---------------------------------------------------------------------*
* 팝업 질문창 : 버튼 이름을 지정할 수 있다
*----------------------------------------------------------------------*
FORM POPUP_CONF2 USING P_TEXT
P_BTN1
P_BTN2
P_CANCEL
CHANGING P_ANSWER.
CLEAR P_ANSWER.
CALL FUNCTION 'POPUP_TO_CONFIRM'
EXPORTING
TITLEBAR = 'Confirm' "' '
* DIAGNOSE_OBJECT = ' '
TEXT_QUESTION = P_TEXT
TEXT_BUTTON_1 = P_BTN1
* ICON_BUTTON_1 = ' '
TEXT_BUTTON_2 = P_BTN2
* ICON_BUTTON_2 = ' '
* DEFAULT_BUTTON = '1'
DISPLAY_CANCEL_BUTTON = P_CANCEL
* USERDEFINED_F1_HELP = ' '
* START_COLUMN = 25
* START_ROW = 6
* POPUP_TYPE =
* IV_QUICKINFO_BUTTON_1 = ' '
* IV_QUICKINFO_BUTTON_2 = ' '
IMPORTING
ANSWER = P_ANSWER
* TABLES
* PARAMETER =
EXCEPTIONS
TEXT_NOT_FOUND = 1
OTHERS = 2 .
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. " POPUP_CONF2
*&---------------------------------------------------------------------*
*& Form POPUP_CONF3
*&---------------------------------------------------------------------*
* 팝업 질문창 : 버튼 이름과 아이콘을 지정할 수 있다
*----------------------------------------------------------------------*
FORM POPUP_CONF3 USING P_TEXT
P_BTN1 P_ICON1
P_BTN2 P_ICON2
P_CANCEL
CHANGING P_ANSWER.
CLEAR P_ANSWER.
CALL FUNCTION 'POPUP_TO_CONFIRM'
EXPORTING
TITLEBAR = 'Confirm' "' '
* DIAGNOSE_OBJECT = ' '
TEXT_QUESTION = P_TEXT
TEXT_BUTTON_1 = P_BTN1
ICON_BUTTON_1 = P_ICON1
TEXT_BUTTON_2 = P_BTN2
ICON_BUTTON_2 = P_ICON2
* DEFAULT_BUTTON = '1'
DISPLAY_CANCEL_BUTTON = P_CANCEL
* USERDEFINED_F1_HELP = ' '
* START_COLUMN = 25
* START_ROW = 6
* POPUP_TYPE =
* IV_QUICKINFO_BUTTON_1 = ' '
* IV_QUICKINFO_BUTTON_2 = ' '
IMPORTING
ANSWER = P_ANSWER
* TABLES
* PARAMETER =
EXCEPTIONS
TEXT_NOT_FOUND = 1
OTHERS = 2 .
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. " POPUP_CONF3
*&---------------------------------------------------------------------*
*& Form PROGRESS_DISPLAY
*&---------------------------------------------------------------------*
* 진행 Message 표시
*----------------------------------------------------------------------*
FORM PROGRESS_DISPLAY USING P_TEXT.
CHECK P_TEXT <> ''.
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
* PERCENTAGE = 1
TEXT = P_TEXT.
ENDFORM. " PROGRESS_DISPLAY
*&---------------------------------------------------------------------*
*& Form PUT_SIGN_IN_FRONT
*&---------------------------------------------------------------------*
* '-' 부호를 앞으로 보낸다
*----------------------------------------------------------------------*
FORM PUT_SIGN_IN_FRONT CHANGING P_VALUE.
DATA: TEXT1(1) TYPE C.
SEARCH P_VALUE FOR '-'.
IF SY-SUBRC = 0 AND SY-FDPOS <> 0.
SPLIT P_VALUE AT '-' INTO P_VALUE TEXT1.
CONDENSE P_VALUE.
CONCATENATE '-' P_VALUE INTO P_VALUE.
ELSE.
CONDENSE P_VALUE.
ENDIF.
ENDFORM. " PUT_SIGN_IN_FRONT
*&---------------------------------------------------------------------*
*& Form READ_EXCHANGE_RATE
*&---------------------------------------------------------------------*
* 환율을 Return 한다
*----------------------------------------------------------------------*
FORM READ_EXCHANGE_RATE USING P_DATE "기준일자
P_IN_CURR "입력받은 통화
P_OU_CURR "변환할 통화
P_TYPE "M, BS, PL 등 (기말1001, 평균1002)
CHANGING P_EX_RATE. "환율
DATA: L_FFACT LIKE TCURR-FFACT,
L_LFACT LIKE TCURR-TFACT.
CALL FUNCTION 'READ_EXCHANGE_RATE'
EXPORTING
* CLIENT = SY-MANDT
DATE = P_DATE
FOREIGN_CURRENCY = P_IN_CURR
LOCAL_CURRENCY = P_OU_CURR
TYPE_OF_RATE = P_TYPE
* EXACT_DATE = ' '
IMPORTING
EXCHANGE_RATE = P_EX_RATE
FOREIGN_FACTOR = L_FFACT
LOCAL_FACTOR = L_LFACT
* VALID_FROM_DATE =
* DERIVED_RATE_TYPE =
* FIXED_RATE =
* OLDEST_RATE_FROM =
EXCEPTIONS
NO_RATE_FOUND = 1
NO_FACTORS_FOUND = 2
NO_SPREAD_FOUND = 3
DERIVED_2_TIMES = 4
OVERFLOW = 5
ZERO_RATE = 6
OTHERS = 7.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. " READ_EXCHANGE_RATE
*&---------------------------------------------------------------------*
*& Form READ_TEXT
*&---------------------------------------------------------------------*
FORM READ_TEXT TABLES ET_TLINE STRUCTURE TLINE
USING P_TDOBJECT
P_TDNAME
P_TDID.
CLEAR: ET_TLINE, ET_TLINE[].
CALL FUNCTION 'READ_TEXT'
EXPORTING
* CLIENT = SY-MANDT
ID = P_TDID "C_TDID
LANGUAGE = SY-LANGU
NAME = P_TDNAME
OBJECT = P_TDOBJECT "C_TDOBJECT
* ARCHIVE_HANDLE = 0
* LOCAL_CAT = ' '
* IMPORTING
* HEADER =
TABLES
LINES = ET_TLINE
EXCEPTIONS
ID = 1
LANGUAGE = 2
NAME = 3
NOT_FOUND = 4
OBJECT = 5
REFERENCE_CHECK = 6
WRONG_ACCESS_TO_ARCHIVE = 7
OTHERS = 8 .
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. " READ_TEXT
*&---------------------------------------------------------------------*
*& Form READ_TEXT
*&---------------------------------------------------------------------*
FORM SAVE_TEXT TABLES ET_TLINE STRUCTURE TLINE
USING P_HEADER STRUCTURE THEAD.
IF P_HEADER-TDSPRAS IS INITIAL.
P_HEADER-TDSPRAS = SY-LANGU.
ENDIF.
IF P_HEADER-TDFDATE IS INITIAL.
P_HEADER-TDFDATE = SY-DATUM.
ENDIF.
IF P_HEADER-TDFUSER IS INITIAL.
P_HEADER-TDFUSER = SY-UNAME.
ENDIF.
IF P_HEADER-TDFTIME IS INITIAL.
P_HEADER-TDFTIME = SY-UZEIT.
ENDIF.
CHECK ET_TLINE[] IS NOT INITIAL.
CALL FUNCTION 'SAVE_TEXT'
EXPORTING
CLIENT = SY-MANDT
HEADER = P_HEADER
* INSERT = ' '
* SAVEMODE_DIRECT = ' '
* OWNER_SPECIFIED = ' '
* LOCAL_CAT = ' '
* IMPORTING
* FUNCTION =
* NEWHEADER =
TABLES
LINES = ET_TLINE
EXCEPTIONS
ID = 1
LANGUAGE = 2
NAME = 3
OBJECT = 4
OTHERS = 5
.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ELSE.
MESSAGE S398(00) WITH '텍스트 정보를 저장 하였습니다.'.
ENDIF.
ENDFORM. "SAVE_TEXT
*&---------------------------------------------------------------------*
*& Form READ_TEXT
*&---------------------------------------------------------------------*
FORM DELETE_TEXT USING P_OBJ P_TDNAME P_TDID P_SPRAS P_DIRECT.
DATA : L_TDNAME LIKE THEAD-TDNAME.
L_TDNAME = P_TDNAME.
CALL FUNCTION 'DELETE_TEXT'
EXPORTING
ID = P_TDID
LANGUAGE = P_SPRAS
NAME = L_TDNAME
OBJECT = P_OBJ
SAVEMODE_DIRECT = P_DIRECT
EXCEPTIONS
NOT_FOUND = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
* 00_fm ps_return 'E' '' '' p_m1 p_m2 p_m3 p_m4.
ENDIF.
ENDFORM. "DELETE_TEXT
*&---------------------------------------------------------------------*
*& Form ROUND
*&---------------------------------------------------------------------*
* 반올림, 올림, 내림 함수
*&---------------------------------------------------------------------*
FORM ROUND USING P_INPUT "입력값
P_DECIMALS " 2 (소수점3자리를 처리), -2 (십단위를 처리)
P_SIGN " 'X' (반올림), '+'(올림), '-'(내림)
CHANGING P_OUTPUT.
DATA: L_SIGN.
IF P_SIGN IS INITIAL.
L_SIGN = 'X'.
ELSE.
L_SIGN = P_SIGN.
ENDIF.
CALL FUNCTION 'ROUND'
EXPORTING
DECIMALS = P_DECIMALS "2, -2
INPUT = P_INPUT
SIGN = L_SIGN "'X', '-', '+'
IMPORTING
OUTPUT = P_OUTPUT
EXCEPTIONS
INPUT_INVALID = 1
OVERFLOW = 2
TYPE_INVALID = 3
OTHERS = 4.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. " ROUND
*&---------------------------------------------------------------------*
*& Form RS_GET_MAINPROGRAMS
*&---------------------------------------------------------------------*
* INCLUDE프로그램을 던지면 MAIN프로그램을 RETURN한다.
*&---------------------------------------------------------------------*
FORM RS_GET_MAINPROGRAMS TABLES ET_MAIN_PGM TYPE PROGRAMTAB
USING P_INCLUDE
CHANGING P_MAIN_PGM.
CLEAR: P_MAIN_PGM,
ET_MAIN_PGM, ET_MAIN_PGM[].
DATA: L_CNT TYPE I.
CALL FUNCTION 'RS_GET_MAINPROGRAMS'
EXPORTING
NAME = P_INCLUDE
IMPORTING
NUMBER_OF_MAINPROGRAMS = L_CNT
TABLES
MAINPROGRAMS = ET_MAIN_PGM
EXCEPTIONS
CANCELLED = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE 'I' NUMBER SY-MSGNO DISPLAY LIKE SY-MSGTY
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
DELETE ET_MAIN_PGM WHERE PROGRAM(1) = '!'.
IF ET_MAIN_PGM[] IS INITIAL. EXIT. ENDIF.
READ TABLE ET_MAIN_PGM INDEX 1.
IF SY-SUBRC = 0.
P_MAIN_PGM = ET_MAIN_PGM-PROGRAM.
EXIT.
ENDIF.
ENDFORM. " RS_GET_MAINPROGRAMS
*&---------------------------------------------------------------------*
*& Form RS_TOOL_ACCESS
*&---------------------------------------------------------------------*
* 오브젝트(프로그램 or FUNCTION 등) 를 조회한다.
*&---------------------------------------------------------------------*
FORM RS_TOOL_ACCESS USING P_OBJECT_NAME
P_OBJECT_TYPE
P_ENCLOSING_OBJ
P_POSITION.
CALL FUNCTION 'RS_TOOL_ACCESS'
EXPORTING
OPERATION = 'SHOW'
OBJECT_NAME = P_OBJECT_NAME
OBJECT_TYPE = P_OBJECT_TYPE
ENCLOSING_OBJECT = P_ENCLOSING_OBJ
POSITION = P_POSITION "' '
* DEVCLASS =
* INCLUDE =
* VERSION = ' '
* MONITOR_ACTIVATION = 'X'
* WB_MANAGER =
* IN_NEW_WINDOW =
* WITH_OBJECTLIST = ' '
* WITH_WORKLIST = ' '
* IMPORTING
* NEW_NAME =
* WB_TODO_REQUEST =
* TABLES
* OBJLIST =
* CHANGING
* P_REQUEST = ' '
EXCEPTIONS
NOT_EXECUTED = 1
INVALID_OBJECT_TYPE = 2
OTHERS = 3 .
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE 'I' NUMBER SY-MSGNO DISPLAY LIKE SY-MSGTY
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. " RS_TOOL_ACCESS
*&---------------------------------------------------------------------*
*& Form SEL_CSKB_KATYP
*&---------------------------------------------------------------------*
* 원가요소 (관리회계 영역의 데이타 종속)
*----------------------------------------------------------------------*
FORM SEL_CSKB_KATYP USING P_KOKRS
P_KSTAR
CHANGING P_KATYP.
CLEAR P_KATYP.
SELECT SINGLE KATYP "원가요소범주
INTO P_KATYP
FROM CSKB
WHERE KOKRS = P_KOKRS
AND KSTAR = P_KSTAR
AND DATBI >= SY-DATUM.
ENDFORM. " SEL_CSKB_KATYP
*&---------------------------------------------------------------------*
*& Form SEL_LFA1
*&---------------------------------------------------------------------*
* 공급업체 정보를 구한다
*----------------------------------------------------------------------*
FORM SEL_LFA1 USING P_LIFNR
CHANGING PS_LFA1 STRUCTURE LFA1.
CLEAR PS_LFA1.
IF P_LIFNR IS INITIAL. EXIT. ENDIF.
SELECT SINGLE *
INTO CORRESPONDING FIELDS OF PS_LFA1
FROM LFA1
WHERE LIFNR = P_LIFNR.
IF SY-SUBRC <> 0.
MESSAGE S163(F2) WITH P_LIFNR.
ENDIF.
ENDFORM. " SEL_LFA1
*&---------------------------------------------------------------------*
*& Form SEL_MARD
*&---------------------------------------------------------------------*
* 자재에 대한 저장위치데이타 재고 구함
*&---------------------------------------------------------------------*
FORM SEL_MARD USING P_WERKS
P_MATNR
P_LGORT
CHANGING P_LABST.
CLEAR P_LABST.
SELECT SINGLE LABST
INTO P_LABST
FROM MARD
WHERE WERKS = P_WERKS
AND MATNR = P_MATNR
AND LGORT = P_LGORT.
ENDFORM. " SEL_MARD
*&---------------------------------------------------------------------*
*& Form SEL_PA0001_SNAME
*&---------------------------------------------------------------------*
* 사번으로 이름 조회
*----------------------------------------------------------------------*
FORM SEL_PA0001_SNAME USING P_PERNR
CHANGING P_SNAME.
CLEAR P_SNAME.
IF P_PERNR IS INITIAL. EXIT. ENDIF.
SELECT SINGLE SNAME
INTO P_SNAME
FROM PA0001
WHERE PERNR = P_PERNR
AND ENDDA >= SY-DATUM
AND BEGDA <= SY-DATUM.
ENDFORM. " SEL_PA0001_SNAME
*&---------------------------------------------------------------------*
*& Form SEL_PRPS_OBJNR
*&---------------------------------------------------------------------*
* WBS (작업분할구조) 요소 마스터 데이타에서 오브젝트 번호 구함
*----------------------------------------------------------------------*
FORM SEL_PRPS_OBJNR USING P_PSPNR
CHANGING P_OBJNR.
CLEAR P_OBJNR.
SELECT SINGLE OBJNR
INTO P_OBJNR
FROM PRPS
WHERE PSPNR = P_PSPNR.
ENDFORM. " SEL_PRPS_OBJNR
*&---------------------------------------------------------------------*
*& Form SEL_T001_WAERS
*&---------------------------------------------------------------------*
* 회사코드로 통화 구함
*&---------------------------------------------------------------------*
FORM SEL_T001_WAERS USING P_BUKRS
CHANGING P_WAERS.
CLEAR P_WAERS.
IF P_BUKRS IS INITIAL. EXIT. ENDIF.
SELECT SINGLE WAERS
INTO P_WAERS
FROM T001
WHERE BUKRS = P_BUKRS.
ENDFORM. " SEL_T001_WAERS
*&---------------------------------------------------------------------*
*& Form SEL_T001L
*&---------------------------------------------------------------------*
* 저장위치내역으로 저장위치 구함
*&---------------------------------------------------------------------*
FORM SEL_T001L USING P_WERKS
P_LGOBE
CHANGING P_LGORT.
CLEAR P_LGORT.
SELECT SINGLE LGORT
INTO P_LGORT
FROM T001L
WHERE WERKS = P_WERKS
AND LGOBE = P_LGOBE.
ENDFORM. " SEL_T001L
*&---------------------------------------------------------------------*
*& Form SEL_TJ02T
*&---------------------------------------------------------------------*
* 시스템 상태 4자리 코드로 시스템 상태 코드 구함
*&---------------------------------------------------------------------*
FORM SEL_TJ02T USING P_TXT04
CHANGING P_ISTAT.
CLEAR P_ISTAT.
SELECT SINGLE TJ02T~ISTAT
INTO P_ISTAT
FROM TJ02 JOIN TJ02T ON TJ02T~ISTAT = TJ02~ISTAT
WHERE TJ02T~TXT04 = P_TXT04
AND TJ02T~SPRAS = SY-LANGU
AND TJ02~NODIS = ''.
IF SY-SUBRC <> 0.
SELECT SINGLE TJ02T~ISTAT
INTO P_ISTAT
FROM TJ02 JOIN TJ02T ON TJ02T~ISTAT = TJ02~ISTAT
WHERE TJ02T~TXT04 = P_TXT04
AND TJ02~NODIS = ''.
ENDIF.
ENDFORM. " SEL_TJ02T
*&---------------------------------------------------------------------*
*& Form SEL_TKA01_ERKRS
*&---------------------------------------------------------------------*
* 관리회계영역 -> 경영 단위 구함
*----------------------------------------------------------------------*
FORM SEL_TKA01_ERKRS USING P_KOKRS
CHANGING P_ERKRS.
CLEAR P_ERKRS.
IF P_KOKRS IS INITIAL. EXIT. ENDIF.
SELECT SINGLE ERKRS
INTO P_ERKRS
FROM TKA01
WHERE KOKRS = P_KOKRS.
ENDFORM. " SEL_TKA01_ERKRS
*&---------------------------------------------------------------------*
*& Form SEL_TKA03_MSEHI
*&---------------------------------------------------------------------*
* 통계 주요 지표 단위 구함
*----------------------------------------------------------------------*
FORM SEL_TKA03_MSEHI USING P_KOKRS
P_STAGR
CHANGING P_MSEHI.
CLEAR P_MSEHI.
IF P_STAGR IS INITIAL. EXIT. ENDIF.
SELECT SINGLE MSEHI
INTO P_MSEHI
FROM TKA03
WHERE KOKRS = P_KOKRS
AND STAGR = P_STAGR.
ENDFORM. " SEL_TKA03_MSEHI
*&---------------------------------------------------------------------*
*& Form SELECT_OPTIONS_RESTRICT
*&---------------------------------------------------------------------*
FORM SELECT_OPTIONS_RESTRICT USING PS_RESTRICT TYPE SSCR_RESTRICT.
CALL FUNCTION 'SELECT_OPTIONS_RESTRICT'
EXPORTING
* PROGRAM =
RESTRICTION = PS_RESTRICT
* DB = ' '
EXCEPTIONS
TOO_LATE = 1
REPEATED = 2
SELOPT_WITHOUT_OPTIONS = 3
SELOPT_WITHOUT_SIGNS = 4
INVALID_SIGN = 5
EMPTY_OPTION_LIST = 6
INVALID_KIND = 7
REPEATED_KIND_A = 8
OTHERS = 9.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
* INITIALIZATION 이벤트에 아래 소스 입력하면 됨
* TYPE-POOLS: SSCR.
*
** Define the object to be passed to the RESTRICTION parameter
* DATA: LS_RESTRICT TYPE SSCR_RESTRICT.
*
** Auxiliary objects for filling RESTRICT
* DATA: LS_OPTLIST TYPE SSCR_OPT_LIST,
* LS_ASS TYPE SSCR_ASS.
*
** Restricting the MATNR selection to only EQ and 'BT'.
* LS_OPTLIST-NAME = 'OBJECTKEY1'.
* LS_OPTLIST-OPTIONS-EQ = 'X'.
* "LS_OPTLIST-options-bt = 'X'.
* APPEND LS_OPTLIST TO LS_RESTRICT-OPT_LIST_TAB.
*
* LS_ASS-KIND = 'S'.
* LS_ASS-NAME = 'SO_KOSTL'.
* LS_ASS-SG_MAIN = 'I'.
* LS_ASS-SG_ADDY = SPACE.
* LS_ASS-OP_MAIN = 'OBJECTKEY1'.
* APPEND LS_ASS TO LS_RESTRICT-ASS_TAB.
*
** Restricting the WERKS selection to CP, GE, LT, NE.
* LS_OPTLIST-NAME = 'OBJECTKEY2'.
* LS_OPTLIST-OPTIONS-CP = 'X'.
* LS_OPTLIST-OPTIONS-GE = 'X'.
* LS_OPTLIST-OPTIONS-LT = 'X'.
* LS_OPTLIST-OPTIONS-NE = 'X'.
* APPEND LS_OPTLIST TO LS_RESTRICT-OPT_LIST_TAB.
*
* LS_ASS-KIND = 'S'.
* LS_ASS-NAME = 'SO_KSTAR'.
* LS_ASS-SG_MAIN = 'I'.
* LS_ASS-SG_ADDY = SPACE.
* LS_ASS-OP_MAIN = 'OBJECTKEY2'.
* APPEND LS_ASS TO LS_RESTRICT-ASS_TAB.
*
* PERFORM SELECT_OPTIONS_RESTRICT USING LS_RESTRICT.
ENDFORM. " SELECT_OPTIONS_RESTRICT
*&---------------------------------------------------------------------*
*& Form SET_DB_LOG
*&---------------------------------------------------------------------*
* DB Log를 기록한다. Insert / Update
*----------------------------------------------------------------------*
FORM SET_DB_LOG USING P_ONLY_AE
CHANGING PS_STR.
FIELD-SYMBOLS: <ERDAT>,
<ERZET>,
<ERNAM>,
<AEDAT>,
<AEZET>,
<AENAM>.
IF P_ONLY_AE = ''.
ASSIGN COMPONENT 'ERDAT' OF STRUCTURE PS_STR TO <ERDAT>.
IF SY-SUBRC = 0. <ERDAT> = SY-DATUM. ENDIF.
ASSIGN COMPONENT 'ERZET' OF STRUCTURE PS_STR TO <ERZET>.
IF SY-SUBRC = 0. <ERZET> = SY-UZEIT. ENDIF.
ASSIGN COMPONENT 'ERNAM' OF STRUCTURE PS_STR TO <ERNAM>.
IF SY-SUBRC = 0. <ERNAM> = SY-UNAME. ENDIF.
ENDIF.
ASSIGN COMPONENT 'AEDAT' OF STRUCTURE PS_STR TO <AEDAT>.
IF SY-SUBRC = 0. <AEDAT> = SY-DATUM. ENDIF.
ASSIGN COMPONENT 'AEZET' OF STRUCTURE PS_STR TO <AEZET>.
IF SY-SUBRC = 0. <AEZET> = SY-UZEIT. ENDIF.
ASSIGN COMPONENT 'AENAM' OF STRUCTURE PS_STR TO <AENAM>.
IF SY-SUBRC = 0. <AENAM> = SY-UNAME. ENDIF.
ENDFORM. " SET_DB_LOG
*&---------------------------------------------------------------------*
*& Form SET_DB_LOG_I
*&---------------------------------------------------------------------*
* DB Log를 기록한다. Insert
*----------------------------------------------------------------------*
FORM SET_DB_LOG_I CHANGING P_AEDAT P_AEZET P_AENAM
P_ERDAT P_ERZET P_ERNAM.
P_AEDAT = P_ERDAT = SY-DATUM.
P_AEZET = P_ERZET = SY-UZEIT.
P_AENAM = P_ERNAM = SY-UNAME.
ENDFORM. " SET_DB_LOG_I
*&---------------------------------------------------------------------*
*& Form SET_DB_LOG_U
*&---------------------------------------------------------------------*
* DB Log를 기록한다. Update
*----------------------------------------------------------------------*
FORM SET_DB_LOG_U CHANGING P_AEDAT P_AEZET P_AENAM.
P_AEDAT = SY-DATUM.
P_AEZET = SY-UZEIT.
P_AENAM = SY-UNAME.
ENDFORM. " SET_DB_LOG_U
*&---------------------------------------------------------------------*
*& Form SMAN_IF_CONVERT_TO
*&---------------------------------------------------------------------*
* 테이블필드정보로 CONVERSION 수행
* 연관 FORM : DDIF_FIELDINFO_GET
*----------------------------------------------------------------------*
FORM SMAN_IF_CONVERT_TO USING PS_DFIES STRUCTURE DFIES
P_IN_VAL
P_INT_EXT
CHANGING P_OU_VAL.
CASE P_INT_EXT.
WHEN 'I'.
CALL FUNCTION 'SMAN_IF_CONVERT_TO_INTERN'
EXPORTING
LS_STRUC = PS_DFIES
LD_INPUT_VALUE = P_IN_VAL
IMPORTING
LD_OUTPUT_VALUE = P_OU_VAL.
WHEN 'E'.
CALL FUNCTION 'SMAN_IF_CONVERT_TO_EXTERN'
EXPORTING
LS_STRUC = PS_DFIES
LD_INPUT_VALUE = P_IN_VAL
IMPORTING
LD_OUTPUT_VALUE = P_OU_VAL.
ENDCASE.
ENDFORM. " SMAN_IF_CONVERT_TO
*&---------------------------------------------------------------------*
*& Form SSF_FUNCTION_MODULE_NAME
*&---------------------------------------------------------------------*
* SMARTFORM 이름으로 FUNCTION MODULE 이름을 구한다.
*----------------------------------------------------------------------*
FORM SSF_FUNCTION_MODULE_NAME USING P_FORMNAME
CHANGING P_FM_NAME.
CLEAR P_FM_NAME.
DATA: L_FORMNAME TYPE TDSFNAME,
L_FM_NAME TYPE RS38L_FNAM.
L_FORMNAME = P_FORMNAME.
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
EXPORTING
FORMNAME = L_FORMNAME
* VARIANT = ' '
* DIRECT_CALL = ' '
IMPORTING
FM_NAME = L_FM_NAME
EXCEPTIONS
NO_FORM = 1
NO_FUNCTION_MODULE = 2
OTHERS = 3.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE 'I' NUMBER SY-MSGNO DISPLAY LIKE SY-MSGTY
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
P_FM_NAME = L_FM_NAME.
ENDFORM. " SSF_FUNCTION_MODULE_NAME
*&---------------------------------------------------------------------*
*& Form STRING_LENGTH
*&---------------------------------------------------------------------*
* 문자열의 길이를 구한다 (한글 2BITE)
*----------------------------------------------------------------------*
FORM STRING_LENGTH USING P_STR
CHANGING P_LEN.
DATA: L_LEN TYPE I.
CALL METHOD CL_ABAP_LIST_UTILITIES=>DYNAMIC_OUTPUT_LENGTH
EXPORTING
FIELD = P_STR "문자열
RECEIVING
LEN = L_LEN. "길이(한글2자)
P_LEN = L_LEN.
ENDFORM. " STRING_LENGTH
*&---------------------------------------------------------------------*
*& Form STRING_REPLACE
*&---------------------------------------------------------------------*
* '.' 은 작동하지 않는다. '/' 등 다른걸로 변경한후 작업
*&---------------------------------------------------------------------*
FORM STRING_REPLACE USING P_FR " ',' or '-' or '/' 등등
P_TO " ''
CHANGING P_TEXT. " 변경할 문자열
DATA: L_TEXT(250).
IF P_TEXT IS INITIAL. EXIT. ENDIF.
L_TEXT = P_TEXT.
CALL FUNCTION 'STRING_REPLACE'
EXPORTING
PATTERN = P_FR
SUBSTITUTE = P_TO
* MAX_REPLACES = 0
* IMPORTING
* NUMBER_OF_REPLACES =
CHANGING
TEXT = L_TEXT
EXCEPTIONS
WRONG_STRING_LENGTH = 1
OTHERS = 2 .
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
P_TEXT = L_TEXT.
ENDFORM. " STRING_REPLACE
*&---------------------------------------------------------------------*
*& Form STRING_REPLACE_DATE
*&---------------------------------------------------------------------*
* '.' 은 작동하지 않는다. '/' 등 다른걸로 변경한후 작업
*&---------------------------------------------------------------------*
FORM STRING_REPLACE_DATE CHANGING P_DATE_CHAR. " 변경할 문자열
PERFORM STRING_REPLACE USING '.' '/'
CHANGING P_DATE_CHAR. " 변경할 문자열
PERFORM STRING_REPLACE USING '/' ' '
CHANGING P_DATE_CHAR. " 변경할 문자열
PERFORM STRING_REPLACE USING '-' ' '
CHANGING P_DATE_CHAR. " 변경할 문자열
ENDFORM. " STRING_REPLACE_DATE
*&---------------------------------------------------------------------*
*& Form TR_OBJECT_JUMP_TO_TOOL
*&---------------------------------------------------------------------*
* 오브젝트의 소스로 이동한다. (TADIR 테이블 참조)
*&---------------------------------------------------------------------*
FORM TR_OBJECT_JUMP_TO_TOOL USING P_PGMID "'LIMU'
P_OBJECT "'REPS' ...
P_OBJ_NAME. "프로그램명 ...
DATA: L_PGMID LIKE E071-PGMID,
L_OBJECT LIKE E071-OBJECT,
L_OBJ_NAME LIKE E071-OBJ_NAME.
L_PGMID = P_PGMID.
L_OBJECT = P_OBJECT.
L_OBJ_NAME = P_OBJ_NAME.
CALL FUNCTION 'TR_OBJECT_JUMP_TO_TOOL'
EXPORTING
IV_PGMID = L_PGMID
IV_OBJECT = L_OBJECT
IV_OBJ_NAME = L_OBJ_NAME
* IV_ACTION = 'SHOW'
EXCEPTIONS
JUMP_NOT_POSSIBLE = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE 'I' NUMBER SY-MSGNO DISPLAY LIKE SY-MSGTY
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. " TR_OBJECT_JUMP_TO_TOOL
*&---------------------------------------------------------------------*
*& Form TXT_AGR_NAME
*&---------------------------------------------------------------------*
* ROLE 에 대한 TEXT 를 읽는다.
*----------------------------------------------------------------------*
FORM TXT_AGR_NAME USING I_AGR_NAME
CHANGING E_TEXT.
CLEAR E_TEXT.
DATA: L_TEXT LIKE AGR_TEXTS-TEXT.
SELECT SINGLE TEXT INTO L_TEXT FROM AGR_TEXTS
WHERE AGR_NAME = I_AGR_NAME
AND SPRAS = SY-LANGU
AND LINE = '0'.
IF SY-SUBRC <> 0.
SELECT SINGLE TEXT INTO L_TEXT FROM AGR_TEXTS
WHERE AGR_NAME = I_AGR_NAME
AND LINE = '0'.
ENDIF.
E_TEXT = L_TEXT.
ENDFORM. " TXT_AGR_NAME
*&---------------------------------------------------------------------*
*& Form TXT_ATNAM
*&---------------------------------------------------------------------*
* Characteristic description
*----------------------------------------------------------------------*
FORM TXT_ATNAM USING P_ATNAM
CHANGING P_ATBEZ.
CLEAR P_ATBEZ.
IF P_ATNAM IS INITIAL. EXIT. ENDIF.
DATA: L_ATINN LIKE CABNT-ATINN.
CALL FUNCTION 'CONVERSION_EXIT_ATINN_INPUT'
EXPORTING
INPUT = P_ATNAM
IMPORTING
OUTPUT = L_ATINN.
SELECT SINGLE ATBEZ
INTO P_ATBEZ
FROM CABNT
WHERE ATINN = L_ATINN
AND SPRAS = SY-LANGU.
ENDFORM. " TXT_ATNAM
*&---------------------------------------------------------------------*
*& Form TXT_AUART_PP
*&---------------------------------------------------------------------*
* PP Order Type Descriptions
*----------------------------------------------------------------------*
FORM TXT_AUART_PP USING P_AUART TYPE AUFK-AUART
CHANGING E_TXT.
CLEAR E_TXT.
IF P_AUART IS INITIAL. EXIT. ENDIF.
SELECT SINGLE TXT
INTO E_TXT
FROM T003P
WHERE SPRAS = SY-LANGU
AND AUART = P_AUART.
ENDFORM. " TXT_AUART_PP
*&---------------------------------------------------------------------*
*& Form TXT_AUART_SD
*&---------------------------------------------------------------------*
* SD Order Type TEXT
*----------------------------------------------------------------------*
FORM TXT_AUART_SD USING P_AUART TYPE VBAK-AUART
CHANGING P_BEZEI.
CLEAR P_BEZEI.
IF P_AUART IS INITIAL. EXIT. ENDIF.
SELECT SINGLE BEZEI
INTO P_BEZEI
FROM TVAKT
WHERE SPRAS = SY-LANGU
AND AUART = P_AUART.
ENDFORM. " TXT_AUART_SD
*&---------------------------------------------------------------------*
*& Form TXT_AUFNR
*&---------------------------------------------------------------------*
* Order Number Text
*----------------------------------------------------------------------*
FORM TXT_AUFNR USING P_AUFNR
CHANGING E_KTEXT.
CLEAR E_KTEXT.
SELECT SINGLE KTEXT
INTO E_KTEXT
FROM AUFK
WHERE AUFNR = P_AUFNR.
ENDFORM. " TXT_AUFNR
*&---------------------------------------------------------------------*
*& Form TXT_AUGRU
*&---------------------------------------------------------------------*
* Sales Documents: Order Reasons: Texts
*----------------------------------------------------------------------*
FORM TXT_AUGRU USING P_AUGRU TYPE VBAK-AUGRU
CHANGING P_BEZEI.
CLEAR P_BEZEI.
IF P_AUGRU IS INITIAL. EXIT. ENDIF.
SELECT SINGLE BEZEI
INTO P_BEZEI
FROM TVAUT
WHERE SPRAS = SY-LANGU
AND AUGRU = P_AUGRU.
ENDFORM. " TXT_AUGRU
*&---------------------------------------------------------------------*
*& Form TXT_BKLAS
*&---------------------------------------------------------------------*
* 평가클래스내역
*----------------------------------------------------------------------*
FORM TXT_BKLAS USING P_BKLAS TYPE MBEW-BKLAS
CHANGING P_BKBEZ.
CLEAR P_BKBEZ.
IF P_BKLAS IS INITIAL. EXIT. ENDIF.
SELECT SINGLE BKBEZ INTO P_BKBEZ
FROM T025T
WHERE BKLAS = P_BKLAS
AND SPRAS = SY-LANGU.
ENDFORM. " TXT_BKLAS
*&---------------------------------------------------------------------*
*& Form TXT_BLART
*&---------------------------------------------------------------------*
* 전표유형텍스트
*&---------------------------------------------------------------------*
FORM TXT_BLART USING P_BLART TYPE BKPF-BLART
CHANGING E_LTEXT.
CLEAR E_LTEXT.
IF P_BLART IS INITIAL. EXIT. ENDIF.
SELECT SINGLE LTEXT INTO E_LTEXT
FROM T003T "Document Type Texts
WHERE SPRAS = SY-LANGU
AND BLART = P_BLART.
ENDFORM. " TXT_BLART
*&---------------------------------------------------------------------*
*& Form TXT_BUKRS
*&---------------------------------------------------------------------*
* 회사 코드명
*----------------------------------------------------------------------*
FORM TXT_BUKRS USING P_BUKRS
CHANGING P_BUTXT.
CLEAR P_BUTXT.
SELECT SINGLE BUTXT INTO P_BUTXT
FROM T001
WHERE BUKRS = P_BUKRS.
ENDFORM. " TXT_BUKRS
*&---------------------------------------------------------------------*
*& Form TXT_BUPLA
*&---------------------------------------------------------------------*
* 사업장명
*----------------------------------------------------------------------*
FORM TXT_BUPLA USING P_BUKRS
P_BUPLA
CHANGING P_NAME.
CLEAR P_NAME.
SELECT SINGLE NAME
INTO P_NAME
FROM J_1BBRANCH
WHERE BUKRS = P_BUKRS
AND BRANCH = P_BUPLA.
ENDFORM. " TXT_BUPLA
*&---------------------------------------------------------------------*
*& Form TXT_BWART
*&---------------------------------------------------------------------*
* 이동유형명
*----------------------------------------------------------------------*
FORM TXT_BWART USING P_BWART TYPE MSEG-BWART
CHANGING E_BTEXT.
CLEAR E_BTEXT.
SELECT SINGLE BTEXT
INTO E_BTEXT
FROM T156HT
WHERE SPRAS = SY-LANGU
AND BWART = P_BWART.
ENDFORM. " TXT_BWART
*&---------------------------------------------------------------------*
*& Form TXT_DOKNR
*&---------------------------------------------------------------------*
* DMS 문서 텍스트를 읽는다.
*----------------------------------------------------------------------*
FORM TXT_DOKNR USING P_DOKAR TYPE DRAW-DOKAR
P_DOKNR TYPE DRAW-DOKNR
P_DOKVR TYPE DRAW-DOKVR
CHANGING P_DKTXT.
DATA: L_DOKVR LIKE DRAT-DOKVR,
L_DKTXT LIKE DRAT-DKTXT.
CLEAR P_DKTXT.
IF P_DOKAR IS INITIAL OR
P_DOKNR IS INITIAL.
EXIT.
ENDIF.
IF P_DOKVR IS INITIAL.
L_DOKVR = '00'.
ELSE.
L_DOKVR = P_DOKVR.
ENDIF.
SELECT SINGLE DKTXT INTO L_DKTXT FROM DRAT
WHERE DOKAR = P_DOKAR
AND DOKNR = P_DOKNR
AND DOKVR = L_DOKVR
AND DOKTL = '000'
AND LANGU = SY-LANGU.
P_DKTXT = L_DKTXT.
ENDFORM. " TXT_DOKNR
*&---------------------------------------------------------------------*
*& Form TXT_EXTWG
*&---------------------------------------------------------------------*
* 외부자재그룹에 대한 내역
*----------------------------------------------------------------------*
FORM TXT_EXTWG USING P_EXTWG TYPE MARA-EXTWG
CHANGING P_EWBEZ.
CLEAR P_EWBEZ.
IF P_EXTWG IS INITIAL. EXIT. ENDIF.
SELECT SINGLE EWBEZ
INTO P_EWBEZ
FROM TWEWT
WHERE SPRAS = SY-LANGU
AND EXTWG = P_EXTWG.
ENDFORM. " TXT_EXTWG
*&---------------------------------------------------------------------*
*& Form TXT_FICTR
*&---------------------------------------------------------------------*
* 예산관리센터 텍스트
*&---------------------------------------------------------------------*
FORM TXT_FICTR USING P_FIKRS
P_FICTR
CHANGING P_BEZEICH.
IF P_FICTR IS INITIAL. EXIT. ENDIF.
CLEAR: P_BEZEICH.
SELECT SINGLE BEZEICH INTO P_BEZEICH
FROM FMFCTRT
WHERE SPRAS = SY-LANGU
AND FIKRS = P_FIKRS
AND FICTR = P_FICTR
AND DATBIS >= SY-DATUM.
ENDFORM. " TXT_FICTR
*&---------------------------------------------------------------------*
*& Form TXT_FUNCNAME
*&---------------------------------------------------------------------*
* Function 내역
*----------------------------------------------------------------------*
FORM TXT_FUNCNAME USING I_FUNCNAME
CHANGING E_STEXT.
IF I_FUNCNAME IS INITIAL. EXIT. ENDIF.
CLEAR E_STEXT.
SELECT SINGLE STEXT
INTO E_STEXT
FROM TFTIT
WHERE SPRAS = SY-LANGU
AND FUNCNAME = I_FUNCNAME.
IF SY-SUBRC <> 0.
SELECT SINGLE STEXT
INTO E_STEXT
FROM TFTIT
WHERE FUNCNAME = I_FUNCNAME.
ENDIF.
ENDFORM. " TXT_FUNCNAME
*&---------------------------------------------------------------------*
*& Form TXT_GRUND
*&---------------------------------------------------------------------*
* 이동사유명
*----------------------------------------------------------------------*
FORM TXT_GRUND USING P_BWART TYPE MSEG-BWART
P_GRUND TYPE MSEG-GRUND
CHANGING E_GRTXT.
CLEAR E_GRTXT.
SELECT SINGLE GRTXT
INTO E_GRTXT
FROM T157E
WHERE SPRAS = SY-LANGU
AND BWART = P_BWART
AND GRUND = P_GRUND.
ENDFORM. " TXT_GRUND
*&---------------------------------------------------------------------*
*& Form TXT_GSBER
*&---------------------------------------------------------------------*
* 사업영역명
*----------------------------------------------------------------------*
FORM TXT_GSBER USING P_GSBER TYPE BSEG-GSBER
CHANGING P_GTEXT.
CLEAR P_GTEXT.
SELECT SINGLE GTEXT
INTO P_GTEXT
FROM TGSBT
WHERE SPRAS = SY-LANGU
AND GSBER = P_GSBER.
ENDFORM. " TXT_GSBER
*&---------------------------------------------------------------------*
*& Form TXT_HERKUNFT
*&---------------------------------------------------------------------*
* Inspection Lot Origin명
*----------------------------------------------------------------------*
FORM TXT_HERKUNFT USING P_HERKUNFT TYPE QALS-HERKUNFT
CHANGING E_HERKTXT.
CLEAR E_HERKTXT.
SELECT SINGLE HERKTXT
INTO E_HERKTXT
FROM TQ31T
WHERE SPRACHE = SY-LANGU
AND HERKUNFT = P_HERKUNFT.
ENDFORM. " TXT_HERKUNFT
*&---------------------------------------------------------------------*
*& Form TXT_ILART
*&---------------------------------------------------------------------*
* Maintenance activity type description
*----------------------------------------------------------------------*
FORM TXT_ILART USING P_ILART TYPE AFIH-ILART
CHANGING E_ILATX.
CLEAR E_ILATX.
SELECT SINGLE ILATX
INTO E_ILATX
FROM T353I_T
WHERE SPRAS = SY-LANGU
AND ILART = P_ILART.
ENDFORM. " TXT_ILART
*&---------------------------------------------------------------------*
*& Form TXT_KDGRP
*&---------------------------------------------------------------------*
* 고객그룹 TEXT
*----------------------------------------------------------------------*
FORM TXT_KDGRP USING P_KDGRP
CHANGING P_KTEXT.
CLEAR P_KTEXT.
SELECT SINGLE KTEXT INTO P_KTEXT
FROM T151T
WHERE SPRAS = SY-LANGU
AND KDGRP = P_KDGRP.
ENDFORM. " TXT_KDGRP
*&---------------------------------------------------------------------*
*& Form TXT_KOKRS
*&---------------------------------------------------------------------*
* 관리회계영역명
*----------------------------------------------------------------------*
FORM TXT_KOKRS USING P_KOKRS
CHANGING P_BEZEI.
CLEAR P_BEZEI.
SELECT SINGLE BEZEI
INTO P_BEZEI
FROM TKA01
WHERE KOKRS = P_KOKRS.
ENDFORM. " TXT_KOKRS
*&---------------------------------------------------------------------*
*& Form TXT_KOSTL
*&---------------------------------------------------------------------*
* 코스트센타 이름 조회
*----------------------------------------------------------------------*
FORM TXT_KOSTL USING P_KOKRS
P_KOSTL
CHANGING P_LTEXT.
DATA: L_KOKRS LIKE CSKT-KOKRS,
L_KOSTL LIKE CSKS-KOSTL,
L_LTEXT LIKE CSKT-LTEXT.
CLEAR P_LTEXT.
IF P_KOKRS IS INITIAL.
GET PARAMETER ID 'CAC' FIELD L_KOKRS.
ELSE.
L_KOKRS = P_KOKRS.
ENDIF.
IF L_KOKRS IS INITIAL OR
P_KOSTL IS INITIAL.
EXIT.
ENDIF.
L_KOSTL = P_KOSTL.
SELECT SINGLE LTEXT
INTO L_LTEXT
FROM CSKT
WHERE SPRAS = SY-LANGU
AND KOKRS = L_KOKRS
AND KOSTL = L_KOSTL
AND DATBI >= SY-DATUM.
P_LTEXT = L_LTEXT.
ENDFORM. " TXT_KOSTL
*&---------------------------------------------------------------------*
*& Form TXT_KSTAR
*&---------------------------------------------------------------------*
* 원가요소텍스트
*----------------------------------------------------------------------*
FORM TXT_KSTAR USING P_KTOPL
P_KSTAR
CHANGING P_LTEXT.
CLEAR P_LTEXT.
SELECT SINGLE LTEXT
INTO P_LTEXT
FROM CSKU
WHERE SPRAS = SY-LANGU
AND KTOPL = P_KTOPL
AND KSTAR = P_KSTAR.
ENDFORM. " TXT_KSTAR
*&---------------------------------------------------------------------*
*& Form TXT_KUNNR
*&---------------------------------------------------------------------*
* 고객명
*----------------------------------------------------------------------*
FORM TXT_KUNNR USING P_KUNNR
CHANGING P_NAME1.
CLEAR P_NAME1.
SELECT SINGLE NAME1
INTO P_NAME1
FROM KNA1
WHERE KUNNR = P_KUNNR.
ENDFORM. " TXT_KUNNR
*&---------------------------------------------------------------------*
*& Form TXT_LIFNR
*&---------------------------------------------------------------------*
* 공급업체명
*----------------------------------------------------------------------*
FORM TXT_LIFNR USING P_LIFNR
CHANGING P_NAME1.
CLEAR P_NAME1.
SELECT SINGLE NAME1
INTO P_NAME1
FROM LFA1
WHERE LIFNR = P_LIFNR.
ENDFORM. " TXT_LIFNR
*&---------------------------------------------------------------------*
*& Form TXT_LQPOS
*&---------------------------------------------------------------------*
* 유동성항목 - 텍스트
*&---------------------------------------------------------------------*
FORM TXT_LQPOS USING P_LQPOS
CHANGING P_S_TEXT. "L_TEXT
CLEAR P_S_TEXT.
SELECT SINGLE S_TEXT "L_TEXT
INTO P_S_TEXT
FROM FLQLPOST
WHERE SPRAS = SY-LANGU
AND LQPOS = P_LQPOS.
ENDFORM. " TXT_LQPOS
*&---------------------------------------------------------------------*
*& Form TXT_MAGRV
*&---------------------------------------------------------------------*
* 자재그룹: 포장자재: 지정
*----------------------------------------------------------------------*
FORM TXT_MAGRV USING P_MAGRV
CHANGING P_BEZEI.
CLEAR P_BEZEI.
SELECT SINGLE BEZEI
INTO P_BEZEI
FROM TVEGRT
WHERE SPRAS = SY-LANGU
AND MAGRV = P_MAGRV.
ENDFORM. " TXT_MAGRV
*&---------------------------------------------------------------------*
*& Form TXT_MATKL
*&---------------------------------------------------------------------*
* 자재그룹내역
*&---------------------------------------------------------------------*
FORM TXT_MATKL USING P_MATKL
CHANGING P_WGBEZ.
CLEAR P_WGBEZ.
IF P_MATKL IS INITIAL. EXIT. ENDIF.
SELECT SINGLE WGBEZ
INTO P_WGBEZ
FROM T023T
WHERE SPRAS = SY-LANGU
AND MATKL = P_MATKL.
ENDFORM. " TXT_MATKL
*&---------------------------------------------------------------------*
*& Form TXT_MATNR
*&---------------------------------------------------------------------*
* 자재 내역
*----------------------------------------------------------------------*
FORM TXT_MATNR USING P_MATNR
CHANGING P_MAKTX.
CLEAR P_MAKTX.
SELECT SINGLE MAKTX
INTO P_MAKTX
FROM MAKT
WHERE MATNR = P_MATNR
AND SPRAS = SY-LANGU.
ENDFORM. " TXT_MATNR
*&---------------------------------------------------------------------*
*& Form TXT_MTART
*&---------------------------------------------------------------------*
* 자재유형내역
*&---------------------------------------------------------------------*
FORM TXT_MTART USING P_MTART TYPE MARA-MTART
CHANGING P_MTBEZ.
CLEAR P_MTBEZ.
IF P_MTART IS INITIAL. EXIT. ENDIF.
DATA: L_MTBEZ LIKE T134T-MTBEZ.
SELECT SINGLE MTBEZ
INTO L_MTBEZ
FROM T134T
WHERE SPRAS = SY-LANGU
AND MTART = P_MTART.
P_MTBEZ = L_MTBEZ.
ENDFORM. " TXT_MTART
*&---------------------------------------------------------------------*
*& Form TXT_ORD4X
*&---------------------------------------------------------------------*
* 평가그룹명
*----------------------------------------------------------------------*
FORM TXT_ORD4X USING P_ORDNR
P_ORD4X
CHANGING E_ORDTX.
CLEAR E_ORDTX.
SELECT SINGLE ORDTX INTO E_ORDTX
FROM T087T
WHERE SPRAS = SY-LANGU
AND ORDNR = P_ORDNR
AND ORD4X = P_ORD4X.
ENDFORM. " TXT_ORD4X
*&---------------------------------------------------------------------*
*& Form TXT_ORGEH
*&---------------------------------------------------------------------*
* 조직 단위명
*----------------------------------------------------------------------*
FORM TXT_ORGEH USING P_ORGEH
P_ENDDA
CHANGING P_ORGTX.
CLEAR P_ORGTX.
SELECT SINGLE ORGTX INTO P_ORGTX
FROM T527X
WHERE SPRSL = SY-LANGU
AND ORGEH = P_ORGEH
AND ENDDA >= SY-DATUM.
ENDFORM. " TXT_ORGEH
*&---------------------------------------------------------------------*
*& Form TXT_PERSG
*&---------------------------------------------------------------------*
* 사원그룹이름
*----------------------------------------------------------------------*
FORM TXT_PERSG USING P_PERSG
CHANGING P_PTEXT.
CLEAR P_PTEXT.
SELECT SINGLE PTEXT INTO P_PTEXT
FROM T501T
WHERE SPRSL = SY-LANGU
AND PERSG = P_PERSG.
ENDFORM. " TXT_PERSG
*&---------------------------------------------------------------------*
*& Form TXT_PERSK
*&---------------------------------------------------------------------*
* 사원하위그룹이름
*----------------------------------------------------------------------*
FORM TXT_PERSK USING P_PERSK
CHANGING P_PTEXT.
CLEAR P_PTEXT.
SELECT SINGLE PTEXT INTO P_PTEXT
FROM T503T
WHERE SPRSL = SY-LANGU
AND PERSK = P_PERSK.
ENDFORM. " TXT_PERSK
*&---------------------------------------------------------------------*
*& Form TXT_PRCTR
*&---------------------------------------------------------------------*
* 손익센터명
*----------------------------------------------------------------------*
FORM TXT_PRCTR USING P_KOKRS
P_PRCTR
CHANGING P_KTEXT.
CLEAR P_KTEXT.
SELECT SINGLE KTEXT INTO P_KTEXT
FROM CEPCT
WHERE SPRAS = SY-LANGU
AND PRCTR = P_PRCTR
AND DATBI >= SY-DATUM
AND KOKRS = P_KOKRS.
ENDFORM. " TXT_PRCTR
*&---------------------------------------------------------------------*
*& Form TXT_PRODH
*&---------------------------------------------------------------------*
* 자재 : 생산계층 : 텍스트
*----------------------------------------------------------------------*
FORM TXT_PRODH USING P_PRODH TYPE MARA-PRDHA
CHANGING P_VTEXT.
CLEAR P_VTEXT.
SELECT SINGLE VTEXT
INTO P_VTEXT
FROM T179T
WHERE SPRAS = SY-LANGU
AND PRODH = P_PRODH.
ENDFORM. " TXT_PRODH
*&---------------------------------------------------------------------*
*& Form TXT_PROGNAME
*&---------------------------------------------------------------------*
* 프로그램 내역
*----------------------------------------------------------------------*
FORM TXT_PROGNAME USING I_PROGNAME TYPE REPOSRC-PROGNAME
CHANGING E_PROGTEXT.
CLEAR E_PROGTEXT.
DATA: L_NAME TYPE TRDIRT-NAME,
L_TEXT TYPE TRDIRT-TEXT.
L_NAME = I_PROGNAME.
SELECT SINGLE TEXT
INTO L_TEXT
FROM TRDIRT
WHERE NAME = L_NAME
AND SPRSL = SY-LANGU. "'E'.
IF SY-SUBRC <> 0.
SELECT SINGLE TEXT
INTO L_TEXT
FROM TRDIRT
WHERE NAME = L_NAME.
ENDIF.
E_PROGTEXT = L_TEXT.
ENDFORM. " TXT_PROGNAME
*&---------------------------------------------------------------------*
*& Form TXT_PTYP
*&---------------------------------------------------------------------*
* 프로세스범주 (설명)
*----------------------------------------------------------------------*
FORM TXT_PTYP USING P_PTYP
CHANGING P_KTEXT.
CLEAR P_KTEXT.
SELECT SINGLE KTEXT INTO P_KTEXT
FROM CKMLMV009T
WHERE SPRAS = SY-LANGU
AND PTYP = P_PTYP.
ENDFORM. " TXT_PTYP
*&---------------------------------------------------------------------*
*& Form TXT_QCODE
*&---------------------------------------------------------------------*
* 검사 카탈로그 코드 텍스트
*----------------------------------------------------------------------*
FORM TXT_QCODE USING P_KATALOGART
P_CODEGRUPPE
P_CODE
CHANGING E_KURZTEXT.
CLEAR E_KURZTEXT.
DATA: LS_QPCD TYPE QPCD.
SELECT SINGLE COUNT(*)
INTO CORRESPONDING FIELDS OF LS_QPCD
FROM QPCD JOIN QPGR ON QPGR~KATALOGART = QPCD~KATALOGART AND
QPGR~CODEGRUPPE = QPCD~CODEGRUPPE
WHERE QPCD~KATALOGART = P_KATALOGART
AND QPCD~CODEGRUPPE = P_CODEGRUPPE
AND QPCD~CODE = P_CODE.
IF SY-SUBRC <> 0. EXIT. ENDIF.
SELECT SINGLE KURZTEXT
INTO E_KURZTEXT
FROM QPCT
WHERE KATALOGART = P_KATALOGART
AND CODEGRUPPE = P_CODEGRUPPE
AND CODE = P_CODE
AND SPRACHE = SY-LANGU.
ENDFORM. " TXT_QCODE
*&---------------------------------------------------------------------*
*& Form TXT_QCODEGRP
*&---------------------------------------------------------------------*
* 검사 카탈로그 코드 그룹 텍스트
*----------------------------------------------------------------------*
FORM TXT_QCODEGRP USING P_KATALOGART
P_CODEGRUPPE
CHANGING E_KURZTEXT.
CLEAR E_KURZTEXT.
SELECT SINGLE KURZTEXT
INTO E_KURZTEXT
FROM QPGT
WHERE KATALOGART = P_KATALOGART
AND CODEGRUPPE = P_CODEGRUPPE.
ENDFORM. " TXT_QCODEGRP
*&---------------------------------------------------------------------*
*& Form TXT_RCOMP
*&---------------------------------------------------------------------*
FORM TXT_RCOMP USING P_RCOMP
CHANGING P_NAME1.
CLEAR: P_NAME1.
SELECT SINGLE NAME1
INTO P_NAME1
FROM T880
WHERE RCOMP = P_RCOMP.
ENDFORM. " TXT_RCOMP
*&---------------------------------------------------------------------*
*& Form TXT_SAKNR
*&---------------------------------------------------------------------*
* 계정명
*----------------------------------------------------------------------*
FORM TXT_SAKNR USING P_KTOPL
P_SAKNR
CHANGING P_TXT20
P_TXT50.
CLEAR: P_TXT20, P_TXT50.
SELECT SINGLE TXT20 TXT50
INTO (P_TXT20, P_TXT50)
FROM SKAT
WHERE SPRAS = SY-LANGU
AND KTOPL = P_KTOPL
AND SAKNR = P_SAKNR.
ENDFORM. " TXT_SAKNR
*&---------------------------------------------------------------------*
*& Form TXT_SECCODE
*&---------------------------------------------------------------------*
* 섹션코드명
*----------------------------------------------------------------------*
FORM TXT_SECCODE USING P_BUKRS
P_SECCODE
CHANGING P_NAME.
CLEAR P_NAME.
SELECT SINGLE NAME
INTO P_NAME
FROM SECCODET
WHERE SPRAS = SY-LANGU
AND BUKRS = P_BUKRS
AND SECCODE = P_SECCODE.
ENDFORM. " TXT_SECCODE
*&---------------------------------------------------------------------*
*& Form TXT_SETCLASS
*&---------------------------------------------------------------------*
* 세트클래스 설명 (SETCLS)
*&---------------------------------------------------------------------*
FORM TXT_SETCLASS USING P_SETCLASS TYPE SETHEADER-SETCLASS
CHANGING P_DESCRIPT. "세트클래스에 대한 정렬내역
DATA: L_DESCRIPT LIKE SETCLST-DESCRIPT.
CLEAR P_DESCRIPT.
SELECT SINGLE DESCRIPT
INTO L_DESCRIPT
FROM SETCLST
WHERE LANGU = SY-LANGU
AND SETCLASS = P_SETCLASS.
P_DESCRIPT = L_DESCRIPT.
ENDFORM. " TXT_SETCLASS
*&---------------------------------------------------------------------*
*& Form TXT_SETNAME
*&---------------------------------------------------------------------*
* 세트의 짧은내역 (SETLEAF, SETHEADERT)
*&---------------------------------------------------------------------*
FORM TXT_SETNAME USING P_SETCLASS
P_SUBCLASS
P_SETNAME
CHANGING P_DESCRIPT. "세트의 내역
DATA: L_DESCRIPT LIKE SETHEADERT-DESCRIPT.
CLEAR P_DESCRIPT.
SELECT SINGLE DESCRIPT
INTO L_DESCRIPT
FROM SETHEADERT
WHERE SETCLASS = P_SETCLASS
AND SUBCLASS = P_SUBCLASS
AND SETNAME = P_SETNAME
AND LANGU = SY-LANGU.
P_DESCRIPT = L_DESCRIPT.
ENDFORM. " TXT_SETNAME
*&---------------------------------------------------------------------*
*& Form TXT_SFHAART
*&---------------------------------------------------------------------*
FORM TXT_SFHAART USING P_SGSART
P_SFHAART
CHANGING E_XTEXT.
CLEAR E_XTEXT.
DATA: L_SGSART LIKE AT10T-SGSART,
L_SFHAART LIKE AT10T-SFHAART,
L_XTEXT LIKE AT10T-XTEXT.
L_SGSART = P_SGSART.
L_SFHAART = P_SFHAART.
SELECT SINGLE XTEXT
INTO L_XTEXT
FROM AT10T
WHERE SPRAS = SY-LANGU
AND SGSART = L_SGSART
AND SFHAART = L_SFHAART.
E_XTEXT = L_XTEXT.
ENDFORM. " TXT_SFHAART
*&---------------------------------------------------------------------*
*& Form TXT_SPART
*&---------------------------------------------------------------------*
* 조직단위: 판매제품군: 텍스트
*&---------------------------------------------------------------------*
FORM TXT_SPART USING P_SPART TYPE VBAK-SPART
CHANGING P_VTEXT.
DATA: L_VTEXT LIKE TSPAT-VTEXT.
CLEAR P_VTEXT.
SELECT SINGLE VTEXT
INTO L_VTEXT
FROM TSPAT
WHERE SPRAS = SY-LANGU
AND SPART = P_SPART.
P_VTEXT = L_VTEXT.
ENDFORM. " TXT_SPART
*&---------------------------------------------------------------------*
*& Form TXT_STAGR
*&---------------------------------------------------------------------*
* 통계주요지표 텍스트 구함
*----------------------------------------------------------------------*
FORM TXT_STAGR USING P_KOKRS
P_STAGR
CHANGING P_BEZEI.
DATA: L_KOKRS LIKE CSKT-KOKRS.
CLEAR P_BEZEI.
IF P_KOKRS IS INITIAL.
GET PARAMETER ID 'CAC' FIELD L_KOKRS.
ELSE.
L_KOKRS = P_KOKRS.
ENDIF.
IF L_KOKRS IS INITIAL OR
P_STAGR IS INITIAL.
EXIT.
ENDIF.
SELECT SINGLE BEZEI
INTO P_BEZEI
FROM TKT03
WHERE SPRAS = SY-LANGU
AND KOKRS = L_KOKRS
AND STAGR = P_STAGR.
ENDFORM. " TXT_STAGR
*&---------------------------------------------------------------------*
*& Form TXT_TABNAME
*&---------------------------------------------------------------------*
* Table 내역
*----------------------------------------------------------------------*
FORM TXT_TABNAME USING P_TABNAME TYPE DD03L-TABNAME
CHANGING P_DDTEXT.
CLEAR P_DDTEXT.
IF P_TABNAME IS INITIAL. EXIT. ENDIF.
SELECT SINGLE DDTEXT
INTO P_DDTEXT
FROM DD02T
WHERE TABNAME = P_TABNAME
AND DDLANGUAGE = SY-LANGU
AND AS4LOCAL = 'A'.
IF SY-SUBRC <> 0.
SELECT SINGLE DDTEXT
INTO P_DDTEXT
FROM DD02T
WHERE TABNAME = P_TABNAME
AND AS4LOCAL = 'A'.
ENDIF.
ENDFORM. " TXT_TABNAME
*&---------------------------------------------------------------------*
*& Form TXT_TCODE
*&---------------------------------------------------------------------*
* T-CODE 내역
*----------------------------------------------------------------------*
FORM TXT_TCODE USING I_TCODE
CHANGING E_TCODE_T.
CLEAR E_TCODE_T.
DATA: L_TCODE TYPE TSTCT-TCODE,
L_TTEXT TYPE TSTCT-TTEXT.
L_TCODE = I_TCODE.
SELECT SINGLE TTEXT INTO L_TTEXT FROM TSTCT
WHERE TCODE = L_TCODE
AND SPRSL = SY-LANGU. "'EN'.
IF SY-SUBRC <> 0.
SELECT SINGLE TTEXT INTO L_TTEXT FROM TSTCT
WHERE TCODE = L_TCODE.
ENDIF.
E_TCODE_T = L_TTEXT.
ENDFORM. " TXT_TCODE
*&---------------------------------------------------------------------*
*& Form TXT_TRKORR
*&---------------------------------------------------------------------*
* Request/Task 내역
*----------------------------------------------------------------------*
FORM TXT_TRKORR USING P_TRKORR TYPE E070-TRKORR
CHANGING P_AS4TEXT.
CLEAR P_AS4TEXT.
SELECT SINGLE AS4TEXT INTO P_AS4TEXT FROM E07T
WHERE TRKORR = P_TRKORR
AND LANGU = SY-LANGU.
IF SY-SUBRC <> 0.
SELECT SINGLE AS4TEXT INTO P_AS4TEXT FROM E07T
WHERE TRKORR = P_TRKORR
AND AS4TEXT <> ''.
ENDIF.
ENDFORM. " TXT_TRKORR
*&---------------------------------------------------------------------*
*& Form TXT_UZAWE
*&---------------------------------------------------------------------*
* 지급 방법 보충 에 대한 텍스트
*----------------------------------------------------------------------*
FORM TXT_UZAWE USING P_UZAWE TYPE BSEG-UZAWE
CHANGING E_TXT30.
CLEAR E_TXT30.
DATA: L_UZAWE LIKE T042H-UZAWE,
L_TXT30 LIKE T042H-TXT30.
L_UZAWE = P_UZAWE.
SELECT SINGLE TXT30 INTO L_TXT30
FROM T042H
WHERE SPRAS = SY-LANGU
AND UZAWE = L_UZAWE.
E_TXT30 = L_TXT30.
ENDFORM. " TXT_UZAWE
*&---------------------------------------------------------------------*
*& Form TXT_VERSN
*&---------------------------------------------------------------------*
* CO 버젼텍스트
*----------------------------------------------------------------------*
FORM TXT_VERSN USING P_VERSN
CHANGING P_VTEXT.
CLEAR P_VTEXT.
IF P_VERSN IS INITIAL. EXIT. ENDIF.
SELECT SINGLE VTEXT INTO P_VTEXT
FROM TKVST
WHERE SPRAS = SY-LANGU
AND VERSI = P_VERSN.
ENDFORM. " TXT_VERSI
*&---------------------------------------------------------------------*
* TXT_VKORG
*----------------------------------------------------------------------*
* 판매조직명
*----------------------------------------------------------------------*
FORM TXT_VKORG USING P_VKORG TYPE VBAK-VKORG
CHANGING P_VTEXT.
CLEAR P_VTEXT.
SELECT SINGLE VTEXT
INTO P_VTEXT
FROM TVKOT
WHERE SPRAS = SY-LANGU
AND VKORG = P_VKORG.
ENDFORM. " TXT_VKORG
*&---------------------------------------------------------------------*
*& Form TXT_VTWEG
*&---------------------------------------------------------------------*
* 유통경로 TEXT
*----------------------------------------------------------------------*
FORM TXT_VTWEG USING P_VTWEG TYPE VBAK-VTWEG
CHANGING P_VTEXT.
CLEAR P_VTEXT.
SELECT SINGLE VTEXT
INTO P_VTEXT
FROM TVTWT
WHERE SPRAS = SY-LANGU
AND VTWEG = P_VTWEG.
ENDFORM. " TXT_VTWEG
*&---------------------------------------------------------------------*
*& Form TXT_WERKS
*&---------------------------------------------------------------------*
* 플랜트명
*----------------------------------------------------------------------*
FORM TXT_WERKS USING P_WERKS
CHANGING P_NAME1.
CLEAR P_NAME1.
IF P_WERKS IS INITIAL. EXIT. ENDIF.
SELECT SINGLE NAME1 INTO P_NAME1
FROM T001W
WHERE WERKS = P_WERKS.
ENDFORM. " TXT_WERKS
*&---------------------------------------------------------------------*
*& Form TXT_WWDIV
*&---------------------------------------------------------------------*
* SOI Group 명
*----------------------------------------------------------------------*
FORM TXT_WWDIV USING P_WWDIV "WW003
CHANGING E_BEZEK.
CLEAR E_BEZEK.
IF P_WWDIV IS INITIAL. EXIT. ENDIF.
SELECT SINGLE BEZEK INTO E_BEZEK
FROM T25A8
WHERE SPRAS = SY-LANGU
AND WWDIV = P_WWDIV. "P_WW003.
ENDFORM. " TXT_WWDIV
*&---------------------------------------------------------------------*
*& Form WORKSTATION_READ
*&---------------------------------------------------------------------*
* 작업장 & 작업장 내역 구함
*&---------------------------------------------------------------------*
FORM WORKSTATION_READ USING P_AUFNR "AFKO-AUFNR
CHANGING P_ARBPL "CRHD-ARBPL
P_ARBTX. "IOOPER-ARBTX
DATA: LT_AFVC LIKE AFVC OCCURS 0 WITH HEADER LINE,
L_ARBID LIKE AFVC-ARBID,
L_ARBPL LIKE CRHD-ARBPL,
L_ARBTX LIKE IOOPER-ARBTX.
CLEAR: P_ARBPL, P_ARBTX.
IF P_AUFNR IS INITIAL. EXIT. ENDIF.
SELECT SINGLE ARBID
INTO L_ARBID
FROM AFKO JOIN AFVC ON AFVC~AUFPL = AFKO~AUFPL
WHERE AFKO~AUFNR = P_AUFNR
AND AFVC~APLZL = ( SELECT MAX( APLZL )
FROM AFVC
WHERE AUFPL = AFKO~AUFPL ).
IF L_ARBID IS INITIAL. EXIT. ENDIF.
* SORT LT_AFVC BY APLZL DESCENDING.
*
* READ TABLE LT_AFVC INDEX 1.
* IF SY-SUBRC <> 0. EXIT. ENDIF.
CALL FUNCTION 'CR_WORKSTATION_READ'
EXPORTING
ID = L_ARBID
* MSGTY = 'E'
IMPORTING
ARBPL = L_ARBPL
* ECRHD =
KTEXT = L_ARBTX
* WERKS =
EXCEPTIONS
NOT_FOUND = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
P_ARBPL = L_ARBPL.
P_ARBTX = L_ARBTX.
ENDFORM. " WORKSTATION_READ
*&---------------------------------------------------------------------*
*& Form DYNPRO
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM DYNPRO USING DYNBEGIN NAME VALUE.
* IF DYNBEGIN = 'X'.
* CLEAR GT_BDCDATA.
* MOVE: NAME TO GT_BDCDATA-PROGRAM,
* VALUE TO GT_BDCDATA-DYNPRO,
* 'X' TO GT_BDCDATA-DYNBEGIN.
* APPEND GT_BDCDATA.
* ELSE.
* CLEAR GT_BDCDATA.
* MOVE: NAME TO GT_BDCDATA-FNAM,
* VALUE TO GT_BDCDATA-FVAL.
* APPEND GT_BDCDATA.
* ENDIF.
ENDFORM. "DYNPR.
*&---------------------------------------------------------------------*
*& Form PRINT_SMARTFORMS
*&---------------------------------------------------------------------*
* text 스마트폼 다중 출력.
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM PRINT_SMARTFORMS .
* DATA: LT_ITEM TYPE TABLE OF GT_OUTTAB,
* LS_ITEM LIKE LINE OF LT_ITEM,
* LS_HD TYPE ZMMS6050.
*
* CLEAR: LT_ITEM,LS_ITEM, LS_HD.
*
* CLEAR : GS_OUTPUT_OPTION,
* GS_PRINT_OPTION,
* GS_JOB_OUTPUT_INFO,
* GS_FM_NAME.
*
* GS_OUTPUT_OPTION-TDCOPIES = 1 . "출력 페이지수.
** GS_OUTPUT_OPTION-TDDEST = "프린터 지정.
* GS_PRINT_OPTION-NO_DIALOG = 'X'. "팝업창. X = 안뜨는것.
* GS_PRINT_OPTION-PREVIEW = 'X'. "미리보기. ' ' = 미리보기 안보기.
* GS_PRINT_OPTION-NO_OPEN = 'X'. "SSF_OPEN 호출시.
* GS_PRINT_OPTION-NO_CLOSE = 'X'. "SSF_CLOSE
*
*
* "송장 출력.
* CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
* EXPORTING
* FORMNAME = 'ZMMSF_INST'
* IMPORTING
* FM_NAME = GS_FM_NAME
* EXCEPTIONS
* NO_FORM = 1
* NO_FUNCTION_MODULE = 2
* OTHERS = 3.
* IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
* ENDIF.
*.
* "스마트폼 다중 출력.
* CALL FUNCTION 'SSF_OPEN'
* EXPORTING
* CONTROL_PARAMETERS = GS_PRINT_OPTION
* EXCEPTIONS
* FORMATTING_ERROR = 1
* INTERNAL_ERROR = 2
* SEND_ERROR = 3
* USER_CANCELED = 4
* OTHERS = 5.
*
* LOOP AT GT_DISP_100 INTO GS_DISP_100 WHERE CHECK EQ CO_X.
*
** CLEAR: GS_FM_NAME.
* CLEAR: LT_ITEM, LS_HD, LS_ITEM.
*
*
*
*
*
* "Smartform data.
* LOOP AT GT_DISP_200 INTO GS_DISP_200 WHERE BELNR EQ GS_DISP_100-BELNR.
* MOVE-CORRESPONDING GS_DISP_200 TO LS_ITEM.
*
* APPEND LS_ITEM TO LT_ITEM.
* ENDLOOP.
*
* MOVE-CORRESPONDING GS_DISP_100 TO LS_HD.
*
* "Call Smartforms
* CALL FUNCTION GS_FM_NAME
* EXPORTING
* CONTROL_PARAMETERS = GS_PRINT_OPTION
* OUTPUT_OPTIONS = GS_OUTPUT_OPTION
* HD = LS_HD
* IMPORTING
* JOB_OUTPUT_INFO = GS_JOB_OUTPUT_INFO
* TABLES
* TB = LT_ITEM
* EXCEPTIONS
* FORMATTING_ERROR = 1
* INTERNAL_ERROR = 2
* SEND_ERROR = 3
* USER_CANCELED = 4
* OTHERS = 5.
*
* "FI 전표 출력.
* PERFORM GET_FI_DATA.
*
* ENDLOOP.
*
* CALL FUNCTION 'SSF_CLOSE'
* IMPORTING
* JOB_OUTPUT_INFO = GS_JOB_OUTPUT_INFO
* EXCEPTIONS
* FORMATTING_ERROR = 1
* INTERNAL_ERROR = 2
* SEND_ERROR = 3
* OTHERS = 4.
* IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
* ENDIF.
ENDFORM. " EXECUTE_PRINT
*&---------------------------------------------------------------------*
*& Form DOWN_OLE_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM DOWN_OLE_DATA .
FIELD-SYMBOLS : <LFS_VALUE>.
FIELD-SYMBOLS : <LFS_VALUE_E>.
DATA: LV_VALUE TYPE STRING.
DATA: LV_FIELDNAME(50).
DATA: LV_INDEX(5).
LOOP AT GT_OUTTAB.
DO.
UNASSIGN <LFS_VALUE>.
ASSIGN COMPONENT SY-INDEX OF STRUCTURE GT_OUTTAB TO <LFS_VALUE>.
IF <LFS_VALUE> IS NOT ASSIGNED.
EXIT.
ENDIF.
UNASSIGN <LFS_VALUE_E>.
CLEAR: LV_FIELDNAME, LV_INDEX.
LV_INDEX = SY-INDEX.
CONCATENATE 'GT_OLE_DATA-F' LV_INDEX INTO LV_FIELDNAME.
CONDENSE LV_FIELDNAME NO-GAPS.
ASSIGN (LV_FIELDNAME) TO <LFS_VALUE_E>.
IF <LFS_VALUE_E> IS NOT ASSIGNED.
EXIT.
ENDIF.
LV_VALUE = <LFS_VALUE>.
<LFS_VALUE_E> = LV_VALUE.
ENDDO.
APPEND GT_OLE_DATA.
ENDLOOP.
*-- Shows a File Save Dialog
CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG
* EXPORTING
* DEFAULT_EXTENSION = LV_DEFAULT_EXTENSION
CHANGING
FILENAME = GV_FILENAME
PATH = GV_PATH
FULLPATH = GV_FULLPATH.
* DELETE TEMPLATE FILE
PERFORM CLOSE_FILE USING GV_FULLPATH.
PERFORM CREATE_FILE USING GV_FILENAME GV_FULLPATH.
PERFORM OLE_FILE_OPEN.
CHECK GV_CHECK NE 'X'.
* PERFORM OLE_DDIF_INFOR_INSERT. "Cell value지정.
PERFORM OLE_DDIF_INFOR_INSERT_ALL.
PERFORM OLE_FILE_SAVE.
ENDFORM. " DOWN_OLE_DATA
*&---------------------------------------------------------------------*
*& Form CLOSE_FILE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_GV_FULLPATH text
*----------------------------------------------------------------------*
FORM CLOSE_FILE USING P_FILENAME.
DATA: LV_FILE_NAME TYPE RLGRAP-FILENAME.
LV_FILE_NAME = P_FILENAME.
CALL FUNCTION 'GUI_DELETE_FILE'
EXPORTING
FILE_NAME = LV_FILE_NAME
EXCEPTIONS
FAILED = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
ENDIF.
ENDFORM. " CLOSE_FILE
*&---------------------------------------------------------------------*
*& Form CREATE_FILE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_GV_FILENAME text
* -->P_GV_FULLPATH text
*----------------------------------------------------------------------*
FORM CREATE_FILE USING P_FILENAME
P_FILENAME1.
DATA: LT_DOC_TABLE LIKE W3MIME OCCURS 0,
L_DOC_SIZE TYPE I.
* L_DOC_TYPE(80) VALUE SOI_DOCTYPE_EXCEL_SHEET,
* L_DOC_FORMAT(80) TYPE C.
CALL FUNCTION 'SAP_OI_LOAD_MIME_DATA'
EXPORTING
OBJECT_ID = CO_TEMP
IMPORTING
DATA_SIZE = L_DOC_SIZE
* DOCUMENT_FORMAT = L_DOC_FORMAT
* DOCUMENT_TYPE = L_DOC_TYPE
TABLES
DATA_TABLE = LT_DOC_TABLE
EXCEPTIONS
OBJECT_NOT_FOUND = 1
INTERNAL_ERROR = 2
OTHERS = 3.
IF SY-SUBRC <> 0.
* Implement suitable error handling here
ENDIF.
PERFORM DOWNLOAD TABLES LT_DOC_TABLE
USING L_DOC_SIZE.
ENDFORM. " CREATE_FILE
*&---------------------------------------------------------------------*
*& Form DOWNLOAD
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_LT_DOC_TABLE text
* -->P_P_FILENAME1 text
* -->P_L_DOC_SIZE text
*----------------------------------------------------------------------*
FORM DOWNLOAD TABLES P_LT_DOC_TABLE STRUCTURE W3MIME
USING P_L_DOC_SIZE.
* MOVE P_P_FILENAME1 TO G_FILENAME.
DATA: LV_FILENAME TYPE STRING.
CONCATENATE GV_FULLPATH '.xlsx' INTO LV_FILENAME.
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
BIN_FILESIZE = P_L_DOC_SIZE
FILENAME = LV_FILENAME
FILETYPE = 'BIN'
* IMPORTING
* FILELENGTH = G_FILE_LENGTH
TABLES
DATA_TAB = P_LT_DOC_TABLE
EXCEPTIONS
FILE_WRITE_ERROR = 1
NO_BATCH = 2
GUI_REFUSE_FILETRANSFER = 3
INVALID_TYPE = 4
NO_AUTHORITY = 5
UNKNOWN_ERROR = 6
HEADER_NOT_ALLOWED = 7
SEPARATOR_NOT_ALLOWED = 8
FILESIZE_NOT_ALLOWED = 9
HEADER_TOO_LONG = 10
DP_ERROR_CREATE = 11
DP_ERROR_SEND = 12
DP_ERROR_WRITE = 13
UNKNOWN_DP_ERROR = 14
ACCESS_DENIED = 15
DP_OUT_OF_MEMORY = 16
DISK_FULL = 17
DP_TIMEOUT = 18
FILE_NOT_FOUND = 19
DATAPROVIDER_EXCEPTION = 20
CONTROL_FLUSH_ERROR = 21
OTHERS = 22.
IF SY-SUBRC <> 0.
* Implement suitable error handling here
ENDIF.
ENDFORM. " DOWNLOAD
*&---------------------------------------------------------------------*
*& Form OLE_FILE_OPEN
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM OLE_FILE_OPEN .
CREATE OBJECT GV_OLE_EXCEL 'EXCEL.APPLICATION'.
PERFORM ERROR.
CHECK GV_CHECK NE 'X'.
SET PROPERTY OF GV_OLE_EXCEL 'VISIBLE' = 1.
PERFORM ERROR.
CHECK GV_CHECK NE 'X'.
CALL METHOD OF GV_OLE_EXCEL 'Workbooks' = GV_OLE_BOOKS.
PERFORM ERROR.
CHECK GV_CHECK NE 'X'.
CALL METHOD OF GV_OLE_BOOKS 'Application' = GV_OLE_FILE.
PERFORM ERROR.
CHECK GV_CHECK NE 'X'.
CALL METHOD OF GV_OLE_BOOKS 'Open' = GV_OLE_FILE
EXPORTING #1 = GV_FULLPATH.
PERFORM ERROR.
CHECK GV_CHECK NE 'X'.
CLEAR : GV_CPAGE.
* sheet1
GV_CPAGE = GV_CPAGE + 1.
CALL METHOD OF GV_OLE_EXCEL 'Worksheets' = GV_OLE_SHEET
EXPORTING #1 = GV_CPAGE.
CALL METHOD OF
GV_OLE_SHEET
'Activate'.
CALL FUNCTION 'FLUSH'
EXCEPTIONS
OTHERS = 0.
ENDFORM. " OLE_FILE_OPEN
*&---------------------------------------------------------------------*
*& Form ERROR
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM ERROR .
IF SY-SUBRC <> 0.
FORMAT COLOR COL_NEGATIVE INTENSIFIED OFF.
WRITE: / 'EXCEL ERROR'
, SY-SUBRC.
FORMAT RESET.
GV_CHECK = 'X'..
ENDIF.
ENDFORM. " ERROR
*&---------------------------------------------------------------------*
*& Form OLE_DDIF_INFOR_INSERT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM OLE_DDIF_INFOR_INSERT .
FIELD-SYMBOLS : <LFS_VALUE>.
DATA: LV_CNTA LIKE GV_CNTA,
LV_CNTB LIKE GV_CNTB.
LV_CNTA = GV_CNTA.
LV_CNTB = GV_CNTB.
LOOP AT GT_OUTTAB.
DO.
UNASSIGN <LFS_VALUE>.
ASSIGN COMPONENT SY-INDEX OF STRUCTURE GT_OUTTAB TO <LFS_VALUE>.
IF <LFS_VALUE> IS NOT ASSIGNED.
EXIT.
ENDIF.
PERFORM OLE_INSERT_DATA USING LV_CNTA LV_CNTB 0 10 0 15 <LFS_VALUE>.
LV_CNTB = LV_CNTB + 1.
ENDDO.
LV_CNTB = 1.
LV_CNTA = LV_CNTA + 1.
ENDLOOP.
ENDFORM. "OLE_DDIF_INFOR_INSERT
*&---------------------------------------------------------------------*
*& Form OLE_DDIF_INFOR_INSERT_all
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM OLE_DDIF_INFOR_INSERT_ALL.
DATA : OLE_RANGE TYPE OLE2_OBJECT,
* OLE_FONT TYPE OLE2_OBJECT, " Font Object
* OLE_BORDER TYPE OLE2_OBJECT, " Border Object
OLE_COLUMN TYPE OLE2_OBJECT, " Column Object
* OLE_CELL TYPE OLE2_OBJECT, " Cell Object
* CHAR_TAB TYPE ABAP_CHAR1
* VALUE CL_ABAP_CHAR_UTILITIES=>HORIZONTAL_TAB,
* EXCEL_RC TYPE I,
EXCEL_TAB(4096) TYPE C OCCURS 0,
EXCEL_LINE LIKE LINE OF EXCEL_TAB.
* EXCEL_LINE2 LIKE LINE OF EXCEL_TAB.
DATA : LV_ROW_CNT TYPE I, " Data Row Count
LV_COL_CNT TYPE I, " Data Row Count
LV_END_ROW TYPE I,
LV_END_COL TYPE I.
* LV_COL TYPE I,
* LV_LEN TYPE I, " Excel Cell Width
* LV_LEN_OLD TYPE I, " Excel Cell Width
* LV_WIDTH TYPE I,
* LT_WIDTH TYPE TABLE OF I WITH HEADER LINE,
* LV_STR TYPE STRING.
DATA : TABLE_DESC TYPE REF TO CL_ABAP_TABLEDESCR,
LINE_DESC TYPE REF TO CL_ABAP_STRUCTDESCR.
* COL_DESC TYPE ABAP_COMPDESCR.
CLEAR : TABLE_DESC, LINE_DESC. "COL_DESC.
IF GT_OUTTAB[] IS NOT INITIAL.
*--- get fields info
TABLE_DESC ?= CL_ABAP_TYPEDESCR=>DESCRIBE_BY_DATA( GT_OUTTAB[] ).
LINE_DESC ?= TABLE_DESC->GET_TABLE_LINE_TYPE( ).
*--- get row count
DESCRIBE TABLE GT_OUTTAB LINES LV_ROW_CNT.
DESCRIBE TABLE LINE_DESC->COMPONENTS LINES LV_COL_CNT.
LV_END_ROW = GV_CNTA + LV_ROW_CNT - 1.
IF LV_END_COL IS INITIAL.
LV_END_COL = GV_CNTB + LV_COL_CNT - 1.
ENDIF.
ENDIF.
*--- Clear Range
CLEAR : OLE_RANGE,OLE_COLUMN.
PERFORM SET_EXCEL_RANGE USING GV_CNTA GV_CNTB LV_END_ROW LV_END_COL GV_OLE_SHEET
CHANGING OLE_RANGE.
*--- Set Range property 'number' -> 'text'
SET PROPERTY OF OLE_RANGE 'NumberFormat' = '@'.
CALL METHOD OF
OLE_RANGE
'SELECT'.
CALL FUNCTION 'SAP_CONVERT_TO_TEX_FORMAT'
EXPORTING
I_FIELD_SEPERATOR = CL_ABAP_CHAR_UTILITIES=>HORIZONTAL_TAB
TABLES
I_TAB_SAP_DATA = GT_OLE_DATA
CHANGING
I_TAB_CONVERTED_DATA = EXCEL_TAB[].
**--- SET FONT
* CALL METHOD OF ole_range 'AutoFilter'.
PERFORM EXCEL_PASTE USING EXCEL_TAB[] GV_OLE_SHEET .
*--- Set Width
GET PROPERTY OF OLE_RANGE 'Columns' = OLE_COLUMN.
* CALL METHOD OF ole_column 'AutoFit'.
*--- Clear Range
CLEAR : OLE_RANGE,OLE_COLUMN.
ENDFORM. "OLE_DDIF_INFOR_INSERT_all
*&---------------------------------------------------------------------*
*& Form set_Excel_range
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM SET_EXCEL_RANGE USING P_ROW_FR P_COL_FR
P_ROW_TO P_COL_TO
P_SHEET
CHANGING P_RANGE.
DATA : OLE_CELL_FR TYPE OLE2_OBJECT,
OLE_CELL_TO TYPE OLE2_OBJECT.
*--- set range
CALL METHOD OF
P_SHEET
'Cells' = OLE_CELL_FR
EXPORTING
#1 = P_ROW_FR
#2 = P_COL_FR.
CALL METHOD OF
P_SHEET
'Cells' = OLE_CELL_TO
EXPORTING
#1 = P_ROW_TO
#2 = P_COL_TO.
CALL METHOD OF
P_SHEET
'RANGE' = P_RANGE
EXPORTING
#1 = OLE_CELL_FR
#2 = OLE_CELL_TO.
ENDFORM. " SET_EXCEL_RANGE
*&---------------------------------------------------------------------*
*& Form EXCEL_PASTE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM EXCEL_PASTE USING PT_EXCEL TYPE STANDARD TABLE
P_SHEET.
DATA: LV_RETURN TYPE I.
CALL METHOD CL_GUI_FRONTEND_SERVICES=>CLIPBOARD_EXPORT
IMPORTING
DATA = PT_EXCEL
CHANGING
RC = LV_RETURN
EXCEPTIONS
CNTL_ERROR = 1
ERROR_NO_GUI = 2
NOT_SUPPORTED_BY_GUI = 3
NO_AUTHORITY = 4
OTHERS = 5.
*--- paste data
CALL METHOD OF
P_SHEET
'PASTE'.
ENDFORM. "EXCEL_PASTE
*&---------------------------------------------------------------------*
*& Form OLE_INSERT_HEAD
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM OLE_INSERT_DATA USING A B BOLD SIZE FCOL ICOL TEXT.
CALL METHOD OF GV_OLE_EXCEL 'Cells' = GV_OLE_CELL
EXPORTING
#1 = A
#2 = B.
PERFORM ERROR.
CHECK GV_CHECK NE 'X'.
SET PROPERTY OF GV_OLE_CELL 'Value' = TEXT .
PERFORM ERROR.
CHECK GV_CHECK NE 'X'.
GET PROPERTY OF GV_OLE_CELL 'Font' = GV_OLE_FONT.
PERFORM ERROR.
CHECK GV_CHECK NE 'X'.
SET PROPERTY OF GV_OLE_FONT 'Bold' = BOLD .
PERFORM ERROR.
CHECK GV_CHECK NE 'X'.
SET PROPERTY OF GV_OLE_FONT 'Size' = SIZE .
PERFORM ERROR.
CHECK GV_CHECK NE 'X'.
SET PROPERTY OF GV_OLE_FONT 'ColorIndex' = FCOL .
PERFORM ERROR.
CHECK GV_CHECK NE 'X'.
ENDFORM. " OLE_INSERT_HEAD
*&---------------------------------------------------------------------*
*& Form OLE_FILE_SAVE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM OLE_FILE_SAVE .
CALL METHOD OF GV_OLE_EXCEL 'ActiveWorkbook' = GV_OLE_BOOKS.
PERFORM ERROR.
CHECK GV_CHECK NE 'X'.
CONCATENATE GV_FULLPATH '.xlsx' INTO GV_FULLPATH.
* SET PROPERTY OF GV_OLE_BOOKS 'SAVED' = 1.
* CALL METHOD OF GV_OLE_BOOKS 'SaveAs'
* EXPORTING
* #1 = GV_FULLPATH.
CALL METHOD OF GV_OLE_BOOKS 'Save'.
* EXPORTING
* #1 = GV_FULLPATH.
PERFORM ERROR.
CHECK GV_CHECK NE 'X'.
CALL METHOD OF GV_OLE_BOOKS 'Close'.
PERFORM ERROR.
CHECK GV_CHECK NE 'X'.
CALL METHOD OF GV_OLE_EXCEL 'QUIT'.
PERFORM ERROR.
CHECK GV_CHECK NE 'X'.
FREE OBJECT GV_OLE_EXCEL.
PERFORM ERROR.
CHECK GV_CHECK NE 'X'.
*
* IF SY-SUBRC = 0.
* MESSAGE '정상적으로 처리 되었습니다.' TYPE 'S'.
* ENDIF.
ENDFORM. " OLE_FILE_SAVE
*&---------------------------------------------------------------------*
*& Form ALV_CELL_EDIT
*&---------------------------------------------------------------------*
* CELL의 수정/조회 모드를 지정한다
*----------------------------------------------------------------------*
FORM ALV_CELL_EDIT USING I_FNAME
I_EN_DI_GB
CHANGING ET_CELLTAB TYPE LVC_T_STYL.
DATA: LS_CELLTAB TYPE LVC_S_STYL.
LS_CELLTAB-FIELDNAME = I_FNAME.
CASE I_EN_DI_GB.
WHEN 'E'. LS_CELLTAB-STYLE = CL_GUI_ALV_GRID=>MC_STYLE_ENABLED.
WHEN 'D'. LS_CELLTAB-STYLE = CL_GUI_ALV_GRID=>MC_STYLE_DISABLED.
ENDCASE.
INSERT LS_CELLTAB INTO TABLE ET_CELLTAB[].
ENDFORM. " ALV_CELL_EDIT
*&---------------------------------------------------------------------*
*& Form DELETE_SYMBOM
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->I_VALUE text
* -->I_TYPE text
* -->E_VALUE text
*----------------------------------------------------------------------*
FORM DELETE_SYMBOM USING I_VALUE I_TYPE
CHANGING E_VALUE.
"A 는 수자만,
"B 는 소수점이 들어가 수자,
"C 는 수자 + 문자 ABCD....
"D 는 수자 + 문자 ABCD.... + 소수점
DATA: LV_FIELD TYPE STRING.
DATA: LV_I TYPE I.
DATA: LV_TIMES TYPE I.
DATA: LV_C TYPE STRING VALUE
'1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ',
LV_CD TYPE STRING VALUE
'1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ.'.
DATA: LV_N TYPE STRING VALUE '1234567890',
LV_ND TYPE STRING VALUE '.1234567890'.
DATA: LV_T TYPE STRING.
DATA: LV_ETEXT TYPE STRING.
DEFINE _S_RE.
LV_I = &2 + 1.
CONCATENATE &1+0(&2) &1+LV_I INTO &1.
END-OF-DEFINITION.
DEFINE _S_CN.
CLEAR: LV_T, LV_TIMES.
LV_T = &1.
LV_TIMES = STRLEN( LV_T ).
DO LV_TIMES TIMES.
IF LV_T CN &2.
_S_RE LV_T SY-FDPOS.
ELSE.
EXIT.
ENDIF.
ENDDO.
&3 = LV_T.
END-OF-DEFINITION.
CASE I_TYPE.
WHEN 'A'.
_S_CN I_VALUE LV_N E_VALUE.
WHEN 'B'.
_S_CN I_VALUE LV_ND E_VALUE.
WHEN 'C'.
_S_CN I_VALUE LV_C E_VALUE.
WHEN 'D'.
_S_CN I_VALUE LV_CD E_VALUE.
ENDCASE.
ENDFORM. "DELETE_SYMBOM
*&---------------------------------------------------------------------*
*& Form F4_VARIANT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_PA_VARI text
*----------------------------------------------------------------------*
FORM F4_VARIANT USING PV_VARI.
DATA : LS_VARIANT TYPE DISVARIANT.
LS_VARIANT-REPORT = SY-REPID.
LS_VARIANT-USERNAME = SY-UNAME.
CALL FUNCTION 'REUSE_ALV_VARIANT_F4'
EXPORTING
IS_VARIANT = LS_VARIANT
I_SAVE = 'A'
IMPORTING
ES_VARIANT = LS_VARIANT
EXCEPTIONS
NOT_FOUNT = 1
PROGRAM_ERROR = 2
OTHERS = 3.
PV_VARI = LS_VARIANT-VARIANT.
ENDFORM. " F4_VARIANT
*&---------------------------------------------------------------------*
*& Form F4_HELP
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->LT_DATA text
* -->P_FIELDNAME text
* -->P_PARA text
*----------------------------------------------------------------------*
FORM F4_HELP_TABLE TABLES PT_DATA
USING P_FIELDNAME P_PARA.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
RETFIELD = P_FIELDNAME
DYNPPROG = SY-CPROG
DYNPNR = SY-DYNNR
DYNPROFIELD = P_PARA
VALUE_ORG = 'S'
* IMPORTING
* USER_RESET =
TABLES
VALUE_TAB = PT_DATA
* FIELD_TAB = LT_GUBUN
* RETURN_TAB = LT_RETURN
* DYNPFLD_MAPPING =
EXCEPTIONS
PARAMETER_ERROR = 1
NO_VALUES_FOUND = 2
OTHERS = 3.
IF SY-SUBRC <> 0.
* Implement suitable error handling here
ENDIF.
ENDFORM. "F4_HELP
*&---------------------------------------------------------------------*
*& Form GET_CLASSIFICATION
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->PT_CLASS text
* -->SCLASS text
* -->PT_OBJECT text
* -->OBJDAT text
* -->PV_TYPE text
* -->PV_OBJECT text
* -->PV_TABLE text
*----------------------------------------------------------------------*
FORM GET_CLASSIFICATION TABLES PT_CLASS TYPE STANDARD TABLE SCLASS
PT_OBJECT TYPE STANDARD TABLE OBJDAT
USING PV_TYPE PV_OBJECT PV_TABLE.
CALL FUNCTION 'CLAF_CLASSIFICATION_OF_OBJECTS'
EXPORTING
CLASSTEXT = 'X'
CLASSTYPE = PV_TYPE "-> class type
OBJECT = PV_OBJECT "-> object
OBJECTTABLE = PV_TABLE "-> object table
TABLES
T_CLASS = PT_CLASS
T_OBJECTDATA = PT_OBJECT
EXCEPTIONS
NO_CLASSIFICATION = 1
NO_CLASSTYPES = 2
INVALID_CLASS_TYPE = 3
OTHERS = 4.
ENDFORM. "GET_CLASSIFICATION
*&---------------------------------------------------------------------*
*& Form BATCH_CHECK
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM BATCH_CHECK USING P_PROGRAM TYPE SY-REPID.
DATA : LT_JOBLIST LIKE TBTCJOB OCCURS 0 WITH HEADER LINE.
DATA : LV_CNT TYPE I.
IF SY-BATCH = 'X'. "배치 처리시만 처리한다.
* 현재 진행중에 있는 Schedule Job Check.
CLEAR : LV_CNT, LT_JOBLIST, LT_JOBLIST[].
CALL FUNCTION 'BP_FIND_JOBS_WITH_PROGRAM'
EXPORTING
ABAP_PROGRAM_NAME = P_PROGRAM
STATUS = 'R' " 진행중인 작업
TABLES
JOBLIST = LT_JOBLIST
EXCEPTIONS
NO_JOBS_FOUND = 1
PROGRAM_SPECIFICATION_MISSING = 2
INVALID_DIALOG_TYPE = 3
JOB_FIND_CANCELED = 4
OTHERS = 5.
DESCRIBE TABLE LT_JOBLIST LINES LV_CNT.
IF LV_CNT > 1.
MESSAGE S001 WITH '실행중인 Schedule Job 이 있습니다.'.
ELSE.
ENDIF.
EXIT.
ENDIF.
ENDFORM. "BATCH_CHECK
*&---------------------------------------------------------------------*
*& Form ENTER
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM ENTER .
CALL FUNCTION 'SAPGUI_SET_FUNCTIONCODE'
EXPORTING
FUNCTIONCODE = 'ENTER'
EXCEPTIONS
FUNCTION_NOT_SUPPORTED = 1
OTHERS = 2.
ENDFORM. " ENTER
*&---------------------------------------------------------------------*
*& Form GET_LABST
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_WERKS text
* -->P_LGORT text
* -->P_MATNR text
* -->P_LABST text
*----------------------------------------------------------------------*
FORM GET_LABST USING P_WERKS
P_LGORT
P_MATNR
CHANGING P_LABST.
DATA : LV_LABST TYPE LABST.
DATA : LT_MARDH TYPE TABLE OF MARDH WITH HEADER LINE.
DATA : LV_LFGJA(4).
DATA : LV_LFMON(2).
DATA: BEGIN OF LT_MARD_SUM OCCURS 0,
MATNR LIKE MARD-MATNR,
WERKS LIKE MARD-WERKS,
LGORT LIKE MARD-LGORT,
LABST LIKE MARD-LABST,
MONTH TYPE WAHD_ALV_PERIO,
END OF LT_MARD_SUM.
LV_LFGJA = SY-DATUM(4).
LV_LFMON = SY-DATUM+4(2).
CLEAR : LT_MARDH, LT_MARDH.
CLEAR : LT_MARD_SUM[], LT_MARD_SUM.
CLEAR : LT_MARDH.
SELECT *
INTO CORRESPONDING FIELDS OF TABLE LT_MARDH
FROM MARD
WHERE WERKS EQ P_WERKS
AND MATNR EQ P_MATNR
AND LGORT EQ P_LGORT
AND ( LFGJA < LV_LFGJA
OR ( LFGJA EQ LV_LFGJA
AND LFMON <= LV_LFMON ) ).
SELECT *
FROM MARDH
APPENDING CORRESPONDING FIELDS OF TABLE LT_MARDH
WHERE WERKS EQ P_WERKS
AND MATNR EQ P_MATNR
AND LGORT EQ P_LGORT
AND LFGJA EQ LV_LFGJA
AND LFMON EQ ( SELECT MIN( LFMON ) AS LFMON
FROM MARDH
WHERE WERKS EQ P_WERKS
AND MATNR EQ P_MATNR
AND LGORT EQ P_LGORT
AND LFGJA EQ LV_LFGJA
AND ( LFGJA > LV_LFGJA
OR ( LFGJA EQ LV_LFGJA
AND LFMON >= LV_LFMON ) )
GROUP BY WERKS MATNR LGORT LFGJA ).
DELETE LT_MARDH WHERE LABST EQ 0
AND INSME EQ 0
AND SPEME EQ 0.
LOOP AT LT_MARDH.
CLEAR LV_LABST.
LT_MARD_SUM-WERKS = LT_MARDH-WERKS.
LT_MARD_SUM-MATNR = LT_MARDH-MATNR.
CONCATENATE LT_MARDH-LFGJA LT_MARDH-LFMON
INTO LT_MARD_SUM-MONTH.
LV_LABST = LT_MARDH-LABST + LT_MARDH-INSME + LT_MARDH-SPEME.
LT_MARD_SUM-LABST = LV_LABST.
COLLECT LT_MARD_SUM. CLEAR LT_MARD_SUM.
ENDLOOP.
READ TABLE LT_MARD_SUM INDEX 1.
P_LABST = LT_MARD_SUM-LABST.
ENDFORM. " GET_LABST
*&---------------------------------------------------------------------*
*& Form GET_LABST_2
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_MATNR text
* -->P_WERKS text
*----------------------------------------------------------------------*
FORM GET_LABST_2 TABLES T_PSPNR STRUCTURE /CWM/R_PSPNR
USING IV_MATNR TYPE MATNR
IV_WERKS TYPE WERKS_D
IV_XLGPF TYPE CHAR1 "플랜트
IV_LGORT TYPE LGORT_D
IV_XCHPF TYPE XCHPF "저장위치 레
IV_CHARG TYPE CHARG_D
EV_LABST TYPE LABST "가용재고
EV_LABST_M TYPE LABST "평가재고
EV_EDEN TYPE BDMNG "예약 미출
EV_MEINS TYPE MEINS.
*"----------------------------------------------------------------------
*"*"Local interface:
*" IMPORTING
*" VALUE(IV_MATNR) TYPE MATNR
*" VALUE(IV_WERKS) TYPE WERKS_D
*" VALUE(IV_XLGPF) TYPE ZD_XLGPF DEFAULT 'X'
*" VALUE(IV_LGORT) TYPE LGORT_D OPTIONAL
*" VALUE(IV_XCHPF) TYPE XCHPF DEFAULT SPACE
*" VALUE(IV_CHARG) TYPE CHARG_D OPTIONAL
*" EXPORTING
*" VALUE(EV_LABST) TYPE LABST
*" VALUE(EV_LABST_M) TYPE LABST
*" VALUE(EV_EDEN) TYPE BDMNG
*" VALUE(EV_MEINS) TYPE MEINS
*" TABLES
*" T_PSPNR STRUCTURE /CWM/R_PSPNR OPTIONAL
*" EXCEPTIONS
*" MATNR_NOT_EXIST
*"----------------------------------------------------------------------
* Function Name : ZMM001_GET_LABST
* SAP Module : MM
* Created by : MM04
*
* 자재에 대한 현재고, 가용재고, 예약 미출고를 구한다.
* 저장위치, 배치를 선택옵션으로해서 미 입력시 상위 레벨의 기초를 구한다.
* 예) 자재코드 + 플랜트만 입력시 = 플랜트 레벨의 기초재고
* 자재코드 + 플랜트 + 저장위치 = 저장위치 레벨의 기초재고
* 자재코드 + 플랜트 + 저장위치 + 배치번호 = 배치번호 레벨의 기초재고
IF IV_XLGPF IS INITIAL.
IV_XLGPF = 'X'.
ENDIF.
TABLES : MARD,
RESB,
RKPF.
TYPES : BEGIN OF T_RESB,
RSNUM TYPE RSNUM,
RSPOS TYPE RSPOS,
RSART TYPE RSART,
MATNR TYPE MATNR,
WERKS TYPE WERKS_D, "출고 플랜트
LGORT TYPE LGORT_D, "출고 저장위치
CHARG TYPE CHARG_D,
BDMNG TYPE BDMNG,
ENMNG TYPE ENMNG,
MEINS TYPE MEINS, "기본단위
SHKZG TYPE SHKZG, "차/대변 지시자
UMWRK TYPE UMWRK, "입고 플랜트
UMLGO TYPE UMLGO, "입고저장위치
END OF T_RESB.
DATA : EV_LABST01 LIKE MARD-LABST VALUE 0.
DATA : EV_LABST02 LIKE MARD-LABST VALUE 0.
DATA : EV_LABST03 LIKE MARD-LABST VALUE 0.
* 플랜트-저장위치 Internal Table
DATA : GT_T001L TYPE TABLE OF T001L,
GS_T001L LIKE LINE OF GT_T001L.
DATA : GT_RESB TYPE TABLE OF T_RESB,
GS_RESB LIKE LINE OF GT_RESB.
DATA : LV_PRLAB TYPE MSPR-PRLAB.
CLEAR : EV_LABST, "가용재고
EV_LABST_M, "평가된 사용 가능 재고
EV_EDEN, "예약 미출고
EV_MEINS,
EV_LABST01,
EV_LABST02,
EV_LABST03.
*************************************************************
* 자재의 기본 단위
*************************************************************
SELECT
SINGLE
MEINS
INTO (EV_MEINS)
FROM MARA
WHERE
MATNR = IV_MATNR
.
IF SY-SUBRC EQ 0.
IF IV_XLGPF IS INITIAL AND IV_XCHPF IS INITIAL. "플랜트 레벨
SELECT
SINGLE
LBKUM
INTO (EV_LABST_M) "평가된 사용 가능 재고
FROM MBEW
WHERE
MATNR = IV_MATNR
AND BWKEY = IV_WERKS.
CLEAR : EV_LABST01,
EV_LABST02,
EV_LABST03.
SELECT
A~RSNUM
A~RSPOS
A~RSART
A~MATNR
A~WERKS
A~LGORT
A~CHARG
A~BDMNG
A~ENMNG
A~MEINS
A~SHKZG
A~UMWRK
A~UMLGO
INTO CORRESPONDING FIELDS OF TABLE GT_RESB
FROM RESB AS A INNER JOIN RKPF AS B
ON A~RSNUM = B~RSNUM
WHERE
A~MATNR = IV_MATNR
AND A~WERKS = IV_WERKS
AND A~PSPEL IN T_PSPNR " 20130619 MODIFY AB01
AND A~BWART <> '216'
AND ( A~XLOEK NE 'X' AND A~KZEAR NE 'X' ).
IF SY-SUBRC EQ 0.
LOOP AT GT_RESB INTO GS_RESB.
EV_LABST03 = GS_RESB-BDMNG - GS_RESB-ENMNG.
IF GS_RESB-SHKZG EQ 'H'.
EV_LABST03 = EV_LABST03 * -1.
ENDIF.
IF GS_RESB-WERKS NE GS_RESB-UMWRK.
EV_EDEN = EV_EDEN + EV_LABST03. "예약 미출고
ENDIF.
ENDLOOP.
ENDIF.
ELSEIF IV_XLGPF IS NOT INITIAL AND IV_XCHPF IS INITIAL. "플랜트/저장위치 레벨
IF T_PSPNR IS INITIAL.
SELECT
SINGLE
A~LABST INTO EV_LABST_M "평가된 사용 가능 재고
FROM MARD AS A
WHERE
A~MATNR = IV_MATNR
AND A~WERKS = IV_WERKS
AND A~LGORT = IV_LGORT.
ELSE.
CLEAR LV_PRLAB.
SELECT SINGLE SUM( PRLAB )
INTO LV_PRLAB
FROM MSPR
WHERE MATNR = IV_MATNR
AND WERKS = IV_WERKS
AND LGORT = IV_LGORT
AND PSPNR IN T_PSPNR.
EV_LABST_M = LV_PRLAB.
ENDIF.
CLEAR : EV_LABST01,
EV_LABST02,
EV_LABST03.
SELECT
A~RSNUM
A~RSPOS
A~RSART
A~MATNR
A~WERKS
A~LGORT
A~CHARG
A~BDMNG
A~ENMNG
A~MEINS
A~SHKZG
A~UMWRK
A~UMLGO
INTO CORRESPONDING FIELDS OF TABLE GT_RESB
FROM RESB AS A INNER JOIN RKPF AS B
ON A~RSNUM = B~RSNUM
WHERE
A~MATNR = IV_MATNR
AND A~WERKS = IV_WERKS
AND A~LGORT = IV_LGORT
AND A~PSPEL IN T_PSPNR " 20130619 MODIFY AB01
AND A~BWART <> '261'
AND ( A~XLOEK NE 'X' AND A~KZEAR NE 'X' ).
IF SY-SUBRC EQ 0.
LOOP AT GT_RESB INTO GS_RESB.
EV_LABST03 = GS_RESB-BDMNG - GS_RESB-ENMNG.
IF GS_RESB-SHKZG EQ 'H'.
EV_LABST03 = EV_LABST03 * -1.
ENDIF.
IF GS_RESB-WERKS NE GS_RESB-UMWRK OR GS_RESB-LGORT NE GS_RESB-UMLGO.
EV_EDEN = EV_EDEN + EV_LABST03. "예약 미출고
ENDIF.
ENDLOOP.
ENDIF.
ELSEIF IV_XLGPF IS INITIAL AND IV_XCHPF IS NOT INITIAL. "플랜트/배치 레벨
SELECT
SUM( A~CLABS ) "평가된 사용 가능 재고
SUM( A~CSPEM ) "보류 재고
INTO (EV_LABST01, EV_LABST02) "평가된 사용 가능 재고
FROM MCHB AS A
WHERE
A~MATNR = IV_MATNR
AND A~WERKS = IV_WERKS
AND A~CHARG = IV_CHARG.
EV_LABST_M = EV_LABST01 + EV_LABST02.
CLEAR : EV_LABST01,
EV_LABST02,
EV_LABST03.
SELECT
A~RSNUM
A~RSPOS
A~RSART
A~MATNR
A~WERKS
A~LGORT
A~CHARG
A~BDMNG
A~ENMNG
A~MEINS
A~SHKZG
A~UMWRK
A~UMLGO
INTO CORRESPONDING FIELDS OF TABLE GT_RESB
FROM RESB AS A INNER JOIN RKPF AS B
ON A~RSNUM = B~RSNUM
WHERE
A~MATNR = IV_MATNR
AND A~WERKS = IV_WERKS
AND A~CHARG = IV_CHARG
AND A~PSPEL IN T_PSPNR " 20130619 MODIFY AB01
AND A~BWART <> '261'
AND ( A~XLOEK NE 'X' AND A~KZEAR NE 'X' ).
IF SY-SUBRC EQ 0.
LOOP AT GT_RESB INTO GS_RESB.
EV_LABST03 = GS_RESB-BDMNG - GS_RESB-ENMNG.
IF GS_RESB-SHKZG EQ 'H'.
EV_LABST03 = EV_LABST03 * -1.
ENDIF.
IF GS_RESB-WERKS NE GS_RESB-UMWRK.
EV_EDEN = EV_EDEN + EV_LABST03. "예약 미출고
ENDIF.
ENDLOOP.
ENDIF.
ELSEIF IV_XLGPF IS NOT INITIAL AND IV_XCHPF IS NOT INITIAL. "플랜트/저장위치/배치 레벨
SELECT
SINGLE
A~CLABS "평가된 사용 가능 재고
A~CSPEM "보류 재고
INTO (EV_LABST01, EV_LABST02) "평가된 사용 가능 재고
FROM MCHB AS A
WHERE
A~MATNR = IV_MATNR
AND A~WERKS = IV_WERKS
AND A~LGORT = IV_LGORT
AND A~CHARG = IV_CHARG.
.
EV_LABST_M = EV_LABST01 + EV_LABST02.
CLEAR : EV_LABST01,
EV_LABST02,
EV_LABST03.
SELECT
A~RSNUM
A~RSPOS
A~RSART
A~MATNR
A~WERKS
A~LGORT
A~CHARG
A~BDMNG
A~ENMNG
A~MEINS
A~SHKZG
A~UMWRK
A~UMLGO
INTO CORRESPONDING FIELDS OF TABLE GT_RESB
FROM RESB AS A INNER JOIN RKPF AS B
ON A~RSNUM = B~RSNUM
WHERE
A~MATNR = IV_MATNR
AND A~WERKS = IV_WERKS
AND A~LGORT = IV_LGORT
AND A~CHARG = IV_CHARG
AND A~PSPEL IN T_PSPNR " 20130619 MODIFY AB01
AND A~BWART <> '261'
AND ( A~XLOEK NE 'X' AND A~KZEAR NE 'X' ).
IF SY-SUBRC EQ 0.
LOOP AT GT_RESB INTO GS_RESB.
EV_LABST03 = GS_RESB-BDMNG - GS_RESB-ENMNG.
IF GS_RESB-SHKZG EQ 'H'.
EV_LABST03 = EV_LABST03 * -1.
ENDIF.
IF GS_RESB-WERKS NE GS_RESB-UMWRK OR GS_RESB-LGORT NE GS_RESB-UMLGO.
EV_EDEN = EV_EDEN + EV_LABST03. "예약 미출고
ENDIF.
ENDLOOP.
ENDIF.
ENDIF.
EV_LABST = EV_LABST_M + EV_EDEN. "가용재고 = 평가재고 - 예약 미출고
ELSE.
RAISE MATNR_NOT_EXIST.
ENDIF.
ENDFORM. "GET_LABST_2
*&---------------------------------------------------------------------*
*& Form GET_LABST_3
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->IT_MATNR text
* -->ET_NEW text
* -->I_WERKS text
* -->I_BUDAT text
* -->I_BUDAT_T text
* -->I_LGORT text
* -->I_CHECK text
*----------------------------------------------------------------------*
FORM GET_LABST_3 TABLES IT_MATNR TYPE STANDARD TABLE
ET_NEW LIKE GT_STOCK_INVENTORY_S
USING I_WERKS TYPE WERKS_D
I_BUDAT TYPE SY-DATUM
I_BUDAT_T TYPE SY-DATUM
I_LGORT TYPE LGORT_D
I_CHECK TYPE CHAR1.
* FUNCTION ZMM_GET_MB5B_FINAL_QTY.
*"----------------------------------------------------------------------
*"*"Local interface:
*" IMPORTING
*" REFERENCE(I_WERKS) TYPE WERKS_D OPTIONAL
*" REFERENCE(I_BUDAT) TYPE SY-DATUM OPTIONAL
*" REFERENCE(I_BUDAT_T) TYPE SY-DATUM OPTIONAL
*" REFERENCE(I_LGORT) TYPE LGORT_D OPTIONAL
*" REFERENCE(I_CHECK) TYPE CHAR1 OPTIONAL
*" TABLES
*" IT_MATNR
*" ET_NEW STRUCTURE STOCK_INVENTORY_S
*"----------------------------------------------------------------------
IF IT_MATNR[] IS INITIAL.
EXIT.
ENDIF.
RANGES : RA_DATUM FOR SY-DATUM,
RA_MATNR FOR MSEG-MATNR.
CLEAR : RA_MATNR, RA_MATNR[].
LOOP AT IT_MATNR.
RA_MATNR-SIGN = 'I'.
RA_MATNR-OPTION = 'EQ'.
RA_MATNR-LOW = IT_MATNR.
APPEND RA_MATNR.
ENDLOOP.
CLEAR : RA_DATUM, RA_DATUM[].
RA_MATNR-SIGN = 'I'.
RA_MATNR-OPTION = 'BT'.
RA_DATUM-LOW = I_BUDAT.
RA_DATUM-HIGH = I_BUDAT_T.
APPEND RA_DATUM.
IF I_CHECK EQ '1'.
SUBMIT RM07MLBD WITH P_AUT EQ 'N'
WITH MATNR IN IT_MATNR
WITH WERKS EQ I_WERKS
WITH LGORT EQ I_LGORT
WITH DATUM IN RA_DATUM
WITH PA_SUMFL EQ 'X'
WITH LGBST EQ 'X'
WITH SBBST EQ ' '
AND RETURN.
ELSEIF I_CHECK EQ '3'.
SUBMIT RM07MLBD WITH P_AUT EQ 'N'
WITH MATNR IN IT_MATNR
WITH WERKS EQ I_WERKS
WITH LGORT EQ I_LGORT
WITH DATUM IN RA_DATUM
WITH PA_SUMFL EQ 'X'
WITH LGBST EQ ' '
WITH SBBST EQ 'X'
WITH SOBKZ EQ 'E'
AND RETURN.
ENDIF.
CLEAR : ET_NEW, ET_NEW[].
* IMPORT LT_BESTAND TO ET_NEW[]
* FROM MEMORY ID CL_MM_IM_AUT_MASTER=>GC_MEMORY_ID_RM07MLBD.
* FREE MEMORY ID CL_MM_IM_AUT_MASTER=>GC_MEMORY_ID_RM07MLBD.
*
* SORT ET_NEW.
*ENDFUNCTION.
ENDFORM. "GET_LABST_3
*&---------------------------------------------------------------------*
*& Form excel_to_itab
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->I_FNAME text
* -->I_BEG_COL text
* -->I_BEG_ROW text
* -->I_END_COL text
* -->I_END_ROW text
* -->I_SHEET_NAME text
*----------------------------------------------------------------------*
FORM EXCEL_TO_ITAB TABLES ET_RESULT
USING I_FNAME TYPE C
I_BEG_COL TYPE I
I_BEG_ROW TYPE I
I_END_COL TYPE I
I_END_ROW TYPE I
I_SHEET_NAME TYPE TXT50
ES_RET TYPE BAPIRET2.
* Makro f#r Fehlerbehandlung der Methods
DEFINE M_MESSAGE.
CASE SY-SUBRC.
WHEN 0.
WHEN 1.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
WHEN OTHERS. RAISE UPLOAD_OLE.
ENDCASE.
END-OF-DEFINITION.
* 시작 ROW/COL, 끝 ROW/COL
IF I_BEG_ROW IS INITIAL. I_BEG_ROW = 2. ENDIF.
IF I_BEG_COL IS INITIAL. I_BEG_COL = 1. ENDIF.
IF I_END_ROW IS INITIAL. I_END_ROW = 65000. ENDIF. "99999. ENDIF.
IF I_END_COL IS INITIAL. I_END_COL = '99'. ENDIF.
* check parameters
IF I_BEG_ROW > I_END_ROW. RAISE INCONSISTENT_PARAMETERS. ENDIF.
IF I_BEG_COL > I_END_COL. RAISE INCONSISTENT_PARAMETERS. ENDIF.
* File Name
DATA: L_FNAME TYPE STRING.
IF I_FNAME IS NOT INITIAL.
L_FNAME = I_FNAME.
ELSE.
PERFORM GET_FILE_NAME USING '' 'XLS'
CHANGING L_FNAME.
ENDIF.
IF L_FNAME IS INITIAL.
ES_RET-TYPE = 'E'.
MESSAGE S187(25) INTO ES_RET-MESSAGE. "파일이름을 입력하십시오
MESSAGE S187(25). "파일이름을 입력하십시오
EXIT.
ENDIF.
*----------------------------------------------------------------------*
* 함수 ALSM_EXCEL_TO_INTERNAL_TABLE 참조
*----------------------------------------------------------------------*
DATA: EXCEL_TAB TYPE TY_T_SENDER,
INTERN LIKE GS_LJW OCCURS 0 WITH HEADER LINE. "TYPE ALSMEX_TABLINE OCCURS 0 WITH HEADER LINE.
DATA: LD_SEPARATOR TYPE C.
DATA: APPLICATION TYPE OLE2_OBJECT,
WORKBOOK TYPE OLE2_OBJECT,
RANGE TYPE OLE2_OBJECT,
WORKSHEET TYPE OLE2_OBJECT.
DATA: H_CELL TYPE OLE2_OBJECT,
H_CELL1 TYPE OLE2_OBJECT.
DATA: LD_RC TYPE I.
* Get TAB-sign for separation of fields
CLASS CL_ABAP_CHAR_UTILITIES DEFINITION LOAD.
LD_SEPARATOR = CL_ABAP_CHAR_UTILITIES=>HORIZONTAL_TAB.
* open file in Excel
IF APPLICATION-HEADER = SPACE OR APPLICATION-HANDLE = -1.
CREATE OBJECT APPLICATION 'Excel.Application'.
M_MESSAGE.
ENDIF.
CALL METHOD OF APPLICATION 'Workbooks' = WORKBOOK.
M_MESSAGE.
CALL METHOD OF WORKBOOK 'Open' EXPORTING #1 = L_FNAME. "FILENAME.
M_MESSAGE.
* set property of application 'Visible' = 1.
* m_message.
* 특정 SHEET 읽을 경우
IF I_SHEET_NAME IS NOT INITIAL.
CALL METHOD OF APPLICATION 'Worksheets' = WORKSHEET
EXPORTING
#1 = I_SHEET_NAME. "Sheet명으로 넘겨라
CALL METHOD OF WORKSHEET 'Activate'.
ENDIF.
GET PROPERTY OF APPLICATION 'ACTIVESHEET' = WORKSHEET.
M_MESSAGE.
* mark whole spread sheet
CALL METHOD OF WORKSHEET 'Cells' = H_CELL
EXPORTING
#1 = I_BEG_ROW
#2 = I_BEG_COL.
M_MESSAGE.
CALL METHOD OF WORKSHEET 'Cells' = H_CELL1
EXPORTING
#1 = I_END_ROW
#2 = I_END_COL.
M_MESSAGE.
CALL METHOD OF WORKSHEET 'RANGE' = RANGE
EXPORTING
#1 = H_CELL
#2 = H_CELL1.
M_MESSAGE.
CALL METHOD OF RANGE 'SELECT'.
M_MESSAGE.
* copy marked area (whole spread sheet) into Clippboard
CALL METHOD OF RANGE 'COPY'.
M_MESSAGE.
* read clipboard into ABAP
CALL METHOD CL_GUI_FRONTEND_SERVICES=>CLIPBOARD_IMPORT
IMPORTING
DATA = EXCEL_TAB
EXCEPTIONS
CNTL_ERROR = 1
* ERROR_NO_GUI = 2
* NOT_SUPPORTED_BY_GUI = 3
OTHERS = 4.
IF SY-SUBRC <> 0.
MESSAGE A037(ALSMEX).
ENDIF.
PERFORM SEPARATED_TO_INTERN_CONVERT TABLES EXCEL_TAB INTERN
USING LD_SEPARATOR.
* clear clipboard
REFRESH EXCEL_TAB.
CALL METHOD CL_GUI_FRONTEND_SERVICES=>CLIPBOARD_EXPORT
IMPORTING
DATA = EXCEL_TAB
CHANGING
RC = LD_RC
EXCEPTIONS
CNTL_ERROR = 1
* ERROR_NO_GUI = 2
* NOT_SUPPORTED_BY_GUI = 3
OTHERS = 4.
* quit Excel and free ABAP Object - unfortunately, this does not kill
* the Excel process
CALL METHOD OF APPLICATION 'QUIT'.
M_MESSAGE.
* >>>>> Begin of change note 575877
* to kill the Excel process it's necessary to free all used objects
FREE OBJECT H_CELL. M_MESSAGE.
FREE OBJECT H_CELL1. M_MESSAGE.
FREE OBJECT RANGE. M_MESSAGE.
FREE OBJECT WORKSHEET. M_MESSAGE.
FREE OBJECT WORKBOOK. M_MESSAGE.
FREE OBJECT APPLICATION. M_MESSAGE.
* <<<<< End of change note 575877
* EXCEL IT 구조를 리턴 IT 구조로 변환
DATA: L_TYPE.
FIELD-SYMBOLS: <VAL>.
LOOP AT INTERN.
ASSIGN COMPONENT INTERN-COL OF STRUCTURE ET_RESULT TO <VAL>.
CLEAR L_TYPE.
DESCRIBE FIELD <VAL> TYPE L_TYPE.
CASE L_TYPE.
WHEN 'P' OR 'I'.
REPLACE ALL OCCURRENCES OF ',' IN INTERN-VALUE WITH ''.
WHEN 'D'.
REPLACE ALL OCCURRENCES OF '-' IN INTERN-VALUE WITH ''.
REPLACE ALL OCCURRENCES OF '.' IN INTERN-VALUE WITH ''.
WHEN 'T'.
REPLACE ALL OCCURRENCES OF ':' IN INTERN-VALUE WITH ''.
ENDCASE.
<VAL> = INTERN-VALUE.
AT END OF ROW.
APPEND ET_RESULT.
CLEAR ET_RESULT.
ENDAT.
ENDLOOP.
ENDFORM. "excel_to_itab
*&---------------------------------------------------------------------*
*& Form SEPARATED_TO_INTERN_CONVERT
*&---------------------------------------------------------------------*
FORM SEPARATED_TO_INTERN_CONVERT TABLES I_TAB TYPE TY_T_SENDER
I_INTERN STRUCTURE GS_LJW "TYPE TY_T_ITAB
USING I_SEPARATOR TYPE C.
DATA: L_SIC_TABIX LIKE SY-TABIX,
L_SIC_COL TYPE KCD_EX_COL.
DATA: L_FDPOS LIKE SY-FDPOS.
REFRESH I_INTERN.
LOOP AT I_TAB.
L_SIC_TABIX = SY-TABIX.
L_SIC_COL = 0.
WHILE I_TAB CA I_SEPARATOR.
L_FDPOS = SY-FDPOS.
L_SIC_COL = L_SIC_COL + 1.
PERFORM LINE_TO_CELL_SEPARAT TABLES I_INTERN
USING I_TAB L_SIC_TABIX L_SIC_COL
I_SEPARATOR L_FDPOS.
ENDWHILE.
IF I_TAB <> SPACE.
CLEAR I_INTERN.
I_INTERN-ROW = L_SIC_TABIX.
I_INTERN-COL = L_SIC_COL + 1.
I_INTERN-VALUE = I_TAB.
APPEND I_INTERN.
ENDIF.
ENDLOOP.
ENDFORM. " SEPARATED_TO_INTERN_CONVERT
*&---------------------------------------------------------------------*
*& Form LINE_TO_CELL_SEPARAT
*&---------------------------------------------------------------------*
FORM LINE_TO_CELL_SEPARAT TABLES I_INTERN TYPE TY_T_ITAB
USING I_LINE
I_ROW LIKE SY-TABIX
CH_CELL_COL TYPE KCD_EX_COL
I_SEPARATOR TYPE C
I_FDPOS LIKE SY-FDPOS.
DATA: L_STRING TYPE TY_S_SENDERLINE.
DATA L_SIC_INT TYPE I.
CLEAR I_INTERN.
L_SIC_INT = I_FDPOS.
I_INTERN-ROW = I_ROW.
L_STRING = I_LINE.
I_INTERN-COL = CH_CELL_COL.
* csv Dateien mit separator in Zelle: --> ;"abc;cd";
IF ( I_SEPARATOR = ';' OR I_SEPARATOR = ',' ) AND
L_STRING(1) = GC_ESC.
PERFORM LINE_TO_CELL_ESC_SEP USING L_STRING
L_SIC_INT
I_SEPARATOR
I_INTERN-VALUE.
ELSE.
IF L_SIC_INT > 0.
I_INTERN-VALUE = I_LINE(L_SIC_INT).
ENDIF.
ENDIF.
IF L_SIC_INT > 0.
APPEND I_INTERN.
ENDIF.
L_SIC_INT = L_SIC_INT + 1.
I_LINE = I_LINE+L_SIC_INT.
ENDFORM. "LINE_TO_CELL_SEPARAT
*&---------------------------------------------------------------------*
*& Form LINE_TO_CELL_ESC_SEP
*&---------------------------------------------------------------------*
FORM LINE_TO_CELL_ESC_SEP USING I_STRING
I_SIC_INT TYPE I
I_SEPARATOR TYPE C
I_INTERN_VALUE TYPE TY_D_ITABVALUE.
DATA: L_INT TYPE I,
L_CELL_END(2).
FIELD-SYMBOLS: <L_CELL>.
L_CELL_END = GC_ESC.
L_CELL_END+1 = I_SEPARATOR .
IF I_STRING CS GC_ESC.
I_STRING = I_STRING+1.
IF I_STRING CS L_CELL_END.
L_INT = SY-FDPOS.
ASSIGN I_STRING(L_INT) TO <L_CELL>.
I_INTERN_VALUE = <L_CELL>.
L_INT = L_INT + 2.
I_SIC_INT = L_INT.
I_STRING = I_STRING+L_INT.
ELSEIF I_STRING CS GC_ESC.
* letzte Celle
L_INT = SY-FDPOS.
ASSIGN I_STRING(L_INT) TO <L_CELL>.
I_INTERN_VALUE = <L_CELL>.
L_INT = L_INT + 1.
I_SIC_INT = L_INT.
I_STRING = I_STRING+L_INT.
L_INT = STRLEN( I_STRING ).
IF L_INT > 0 . MESSAGE X001(KX) . ENDIF.
ELSE.
MESSAGE X001(KX) . "was ist mit csv-Format
ENDIF.
ENDIF.
ENDFORM. "LINE_TO_CELL_ESC_SEP
----------------------------------------------------------------------------------
Extracted by Mass Download version 1.4.6 - E.G.Mellodew. 1998-2015. Sap Release 701
Abap