67
1.Table Create 2. Maintenance Table Create 3. WRITE(REPORT) Create 4. ALV(ABAP LIST VIEWER) Create 5. DIALOG PROGRAM Create 6. BDC PROGRAM(Batch Data Communication) Create 7.목목목목목 8. 목목목 목목목목 목목 9.Class 목 목목목 ALV 목목목목목목 10. BDC 목목 11. Function SE-38-ABAP Editor DEMO_LIST* 목목목목 목목목 목목 1. 목목 목목목목 ALV 목목목 목목 =============================================================== REPORT ZTIM0001_GRID . * * Data to be displayed DATA: GT_SFLIGHT TYPE TABLE OF ZTIM0001. * Selection

sap-abap.tistory.comsap-abap.tistory.com/attachment/cfile30.uf@17686B444D54... · Web view목 차 Table Create Maintenance Table Create WRITE(REPORT) Create ALV(ABAP LIST VIEW ER)

  • Upload
    phamnhu

  • View
    295

  • Download
    12

Embed Size (px)

Citation preview

Page 1: sap-abap.tistory.comsap-abap.tistory.com/attachment/cfile30.uf@17686B444D54... · Web view목 차 Table Create Maintenance Table Create WRITE(REPORT) Create ALV(ABAP LIST VIEW ER)

목 차1. Table Create 2. Maintenance Table Create 3. WRITE(REPORT) Create 4. ALV(ABAP LIST VIEWER) Create 5. DIALOG PROGRAM Create 6. BDC PROGRAM(Batch Data Communication) Create 7. 기타기능들 8. 모듈풀 프로그램 개발 9. Class 를 이용한 ALV 입력프로그램 10. BDC 처리 11. Function

SE-38-ABAP Editor 의 DEMO_LIST* 프로그램 소스를 참조

1. 가장 기본적인 ALV 리스트 코딩===============================================================REPORT ZTIM0001_GRID . ** Data to be displayedDATA: GT_SFLIGHT TYPE TABLE OF ZTIM0001.

* Selection SELECT * FROM ZTIM0001 INTO TABLE GT_SFLIGHT.

* Call ABAP List Viewer (ALV) CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING

Page 2: sap-abap.tistory.comsap-abap.tistory.com/attachment/cfile30.uf@17686B444D54... · Web view목 차 Table Create Maintenance Table Create WRITE(REPORT) Create ALV(ABAP LIST VIEW ER)

I_STRUCTURE_NAME = 'ZTIM0001' TABLES T_OUTTAB = GT_SFLIGHT.===============================================================

1. Table Create 1) 트랜잭션 코드 입력 하여 테이블 생성 화면 GO : SE112) 생성할 테이블명 입력 : ZTIM0029

Page 3: sap-abap.tistory.comsap-abap.tistory.com/attachment/cfile30.uf@17686B444D54... · Web view목 차 Table Create Maintenance Table Create WRITE(REPORT) Create ALV(ABAP LIST VIEW ER)

3) 생성버튼 클릭 후 내역을 입력하고 Delivery Class, Data Browser 선택- Delivery Class : ‘A’ (Application Table)- Data Browser : ‘X’ (표준테이블 유지보툴을 통한 유지보수를 허용했습니다)

4) Fields 탭 선택 후 컬럼 정의

5) 저장버튼 클릭- 로컬오브젝트 선택 하여 로컬로 저장한다.

Page 4: sap-abap.tistory.comsap-abap.tistory.com/attachment/cfile30.uf@17686B444D54... · Web view목 차 Table Create Maintenance Table Create WRITE(REPORT) Create ALV(ABAP LIST VIEW ER)

6) 기술적셋팅 클릭 후 아래컬럼 입력 후 저장- 데이터클래스 : USER 또는 USER1 입력- 크기범주 : 적당한 테이블 사이즈 입력

7) 도메인 설정시 해당 컬럼 Data element 더블클릭 한다.(정의 탭 선택)- Elementary Type 을 Domain 선택 후 타입 및 Length 입력- 필드라벨 탭에서 코드 및 데이터 입력

Page 5: sap-abap.tistory.comsap-abap.tistory.com/attachment/cfile30.uf@17686B444D54... · Web view목 차 Table Create Maintenance Table Create WRITE(REPORT) Create ALV(ABAP LIST VIEW ER)

2. Maintenance Table Create 1) 트랜잭션 코드 SE11 입력 - Maintenance 할 테이블 명 입력 2) 메뉴 - 유틸리티 – 테이블유지보수생성기 선택

Page 6: sap-abap.tistory.comsap-abap.tistory.com/attachment/cfile30.uf@17686B444D54... · Web view목 차 Table Create Maintenance Table Create WRITE(REPORT) Create ALV(ABAP LIST VIEW ER)

3) 권한그룹 – 권한그룹제외 선택4) Function 그룹 : 개발클래스 명 입력5) 유지보수 유형 한단계 – 마스터성

두단계 – 그리드와 입력폼 두개로 존재6) 화면유지보수 : 상단 “화면번호찾기” 클릭하면 자동으로 번호가셋팅 된다7) 상단 “생성” 버튼 클릭8) 트랜잭션코드 SE93 입력 후 엔터

- 내역입력 후 오브젝트 “Transaction with parameters” 선택

Page 7: sap-abap.tistory.comsap-abap.tistory.com/attachment/cfile30.uf@17686B444D54... · Web view목 차 Table Create Maintenance Table Create WRITE(REPORT) Create ALV(ABAP LIST VIEW ER)

9) 트랜잭션텍스트 입력 , 트랜잭션 “SM30” 입력

화면필드 : VIEWNAME, UPDATE 선택값 : ZTIM0010(테이블명), ‘X’ 입력

Page 8: sap-abap.tistory.comsap-abap.tistory.com/attachment/cfile30.uf@17686B444D54... · Web view목 차 Table Create Maintenance Table Create WRITE(REPORT) Create ALV(ABAP LIST VIEW ER)

3. WRITE(REPORT) Program Create 1) 프로그램생성

Page 9: sap-abap.tistory.comsap-abap.tistory.com/attachment/cfile30.uf@17686B444D54... · Web view목 차 Table Create Maintenance Table Create WRITE(REPORT) Create ALV(ABAP LIST VIEW ER)

2) 프로그램 명칭 입력-With TOP INCL 체크를 해제 한후 생성한다. (체크할 시 INCLUDE_TOP 이 자동생성된다)

3) 유형 : 실행가능 프로그램으로 선택한후 저장

Page 10: sap-abap.tistory.comsap-abap.tistory.com/attachment/cfile30.uf@17686B444D54... · Web view목 차 Table Create Maintenance Table Create WRITE(REPORT) Create ALV(ABAP LIST VIEW ER)

4) 다른프로그램으로부터 GUI 상태의 STATUS 를 COPY 하여 현 프로그램에 복사한다.5) 트랜잭션을 생성한다 (CREATE-트랜잭션)

6) 프로그램 상세정보 입력한 후 저장한다.

Page 11: sap-abap.tistory.comsap-abap.tistory.com/attachment/cfile30.uf@17686B444D54... · Web view목 차 Table Create Maintenance Table Create WRITE(REPORT) Create ALV(ABAP LIST VIEW ER)

7) 최초 아래와 같이 코딩해준다.

1) ZTEST005_TOP : 테이블 정의2) ZTEST005_SCR : 조건 정의3) ZTEST005_EVT : EVENT 타이틀 정의4) ZTEST005_F01 : 실제 이벤트 정의

*&---------------------------------------------------------------------**& Include ZTEST005_TOP*& 1) 테이블 정의

Page 12: sap-abap.tistory.comsap-abap.tistory.com/attachment/cfile30.uf@17686B444D54... · Web view목 차 Table Create Maintenance Table Create WRITE(REPORT) Create ALV(ABAP LIST VIEW ER)

*& 2) Include 정의*& 3) Internal 테이블 컬럼정의*&---------------------------------------------------------------------*

**************************************************** 1. 테이블 및 INCLUDE 정의***************************************************TABLES: ztim0020t. "선적예정정보 Header

TYPE-POOLS : slis , sydes, vrm .INCLUDE <icon>.INCLUDE <color>.

**************************************************** 2. Internal 테이블 DATA 정의***************************************************DATA: BEGIN OF gt_data OCCURS 0, mark , signl(04) , "신호등 @08@,@09@,@0A@(G,Y,R) filno LIKE ztim0020-filno , "무역의뢰 No. cntno LIKE ztim0020t-cntno, "차수 vdtxt LIKE ztim0020t-vdtxt, "업체 CONTACT 현황 ekorg LIKE ztim0020-ekorg , "구매조직 fgidt LIKE ztim0020t-fgidt, "공장출고일 fshdt LIKE ztim0020t-fshdt, "예상선적일 rshdt LIKE ztim0020t-rshdt, "실선적일 shdrs LIKE ztim0020t-shdrs, "선적시연사유 imrdt LIKE ztim0020t-imrdt, "입항일 shprt LIKE ztim0020t-shprt, "선적항 rcprt LIKE ztim0020t-rcprt, "도착항 prsty LIKE ztim0020t-prsty, "대표스타일 totqt LIKE ztim0020t-totqt, "총수량 tctcn LIKE ztim0020t-tctcn, "총 C/T 수 cmbqt LIKE ztim0020t-cmbqt, "CBM extra LIKE ztim0020t-extra, "비고 trcdt LIKE ztim0020t-trcdt, "업로드일 trctm LIKE ztim0020t-trctm, "업로드시간

END OF gt_data.

*&---------------------------------------------------------------------**& Include ZTEST005_SCR*& 1) 조건컬럼정의*&---------------------------------------------------------------------*

*블럭지정(b01 START)

Page 13: sap-abap.tistory.comsap-abap.tistory.com/attachment/cfile30.uf@17686B444D54... · Web view목 차 Table Create Maintenance Table Create WRITE(REPORT) Create ALV(ABAP LIST VIEW ER)

SELECTION-SCREEN BEGIN OF BLOCK b01 WITH FRAME TITLE text-b01.

* 파일번호(Parameter 단일값 지정)PARAMETERS: so_filno LIKE ztim0020t-filno "파일번호 OBLIGATORY.

SELECT-OPTIONS:* 실선적일(Parameter 복수값 지정) so_rshdt FOR ztim0020t-rshdt.

*블럭지정(b01 END)SELECTION-SCREEN END OF BLOCK b01.

*블럭지정(b02 START)SELECTION-SCREEN BEGIN OF BLOCK b02 WITH FRAME TITLE text-b02.

* 문서유형을 개인별로 저장해서 오픈할 수 있도록 지원되는 기능 PARAMETERS: pa_vari LIKE disvariant-variant. "Layout

*블럭지정(b02 END)SELECTION-SCREEN END OF BLOCK b02.

조건절의 텍스트를 변경하고자 할 때

Page 14: sap-abap.tistory.comsap-abap.tistory.com/attachment/cfile30.uf@17686B444D54... · Web view목 차 Table Create Maintenance Table Create WRITE(REPORT) Create ALV(ABAP LIST VIEW ER)

선택텍스트 탭 선택 후 컬럼명을 변경한 후 저장한다.

프로그램의 이름을 변경하고자 할 때 : 이동-속성 에서 제목 변경 후 저장

*&---------------------------------------------------------------------**& Include ZTEST005_EVT*& 1) INITIALIZTION 코딩

Page 15: sap-abap.tistory.comsap-abap.tistory.com/attachment/cfile30.uf@17686B444D54... · Web view목 차 Table Create Maintenance Table Create WRITE(REPORT) Create ALV(ABAP LIST VIEW ER)

*& 2) 조건입력 시 EVENT*& 3) 조건에 맞는 데이타를 Select 해와 Write 하여 결과를 보여준다*&*&---------------------------------------------------------------------******************INITIALIZATION.***************** PERFORM set_init. "조건의 Default 값을 셋팅한다.

*********************START-OF-SELECTION.********************* PERFORM read_data. "조건에 맞는 데이타를 Select 해온다.

*******************TOP-OF-PAGE.******************* PERFORM header_data."헤더를 출력한다

*******************END-OF-SELECTION.******************* PERFORM write_data. "데이타를 출력한다.

*******************END-OF-PAGE.******************* PERFORM footer_data. "Footer 를 출력한다.

*&---------------------------------------------------------------------**& Include ZTEST005_F01*& 설명: 프로그램의 모든 이벤트를 기술한다.*&---------------------------------------------------------------------**&---------------------------------------------------------------------*

Page 16: sap-abap.tistory.comsap-abap.tistory.com/attachment/cfile30.uf@17686B444D54... · Web view목 차 Table Create Maintenance Table Create WRITE(REPORT) Create ALV(ABAP LIST VIEW ER)

*& 1.Form set_init*& 설명 : 초기화할 변수나 Default 값을 셋팅한다.*&---------------------------------------------------------------------*

form set_init .*조건의 초기값을 셋팅한다. so_filno = 'M07EJG003'.endform. " set_init

*&---------------------------------------------------------------------**& 2. FROM READ_DATA*& - 조건을 받아 리스트를 Select 한다.*&---------------------------------------------------------------------*FORM read_data .

DATA: lt_init LIKE TABLE OF gt_data WITH HEADER LINE. DATA: l_tabix LIKE sy-tabix. CLEAR: gt_data, gt_data[].

SELECT filno "무역의뢰 No. cntno "차수 vdtxt "업체 CONTACT 현황 fgidt "공장출고일 fshdt "예상선적일 rshdt "실선적일 shdrs "선적시연사유 imrdt "입항일 shprt "선적항 rcprt "도착항 prsty "대표스타일 totqt "총수량 tctcn "총 C/T 수 cmbqt "CBM extra "비고 trcdt "업로드일 trctm "업로드시간 INTO CORRESPONDING FIELDS OF TABLE lt_init FROM ztim0020t WHERE filno = so_filno AND "File No. rshdt IN so_rshdt "선적일

ORDER BY filno.

* Data Modification move: lt_init[] to gt_data[].ENDFORM. " read_data_with_parameters

*&---------------------------------------------------------------------**& 3. FROM WRITE_DATA*& - Select 한 데이타를 실제 Write 한다.*&---------------------------------------------------------------------*form write_data . LOOP AT gt_data.

Page 17: sap-abap.tistory.comsap-abap.tistory.com/attachment/cfile30.uf@17686B444D54... · Web view목 차 Table Create Maintenance Table Create WRITE(REPORT) Create ALV(ABAP LIST VIEW ER)

WRITE: / '|' NO-GAP, AT (10) gt_data-filno NO-GAP, '|', AT (5) gt_data-cntno NO-GAP, '|', AT (20) gt_data-vdtxt NO-GAP, '|', AT (10) gt_data-fgidt NO-GAP, '|', AT (10) gt_data-fshdt NO-GAP, '|', AT (10) gt_data-rshdt NO-GAP, '|', AT (15) gt_data-shdrs NO-GAP, '|', AT (10) gt_data-imrdt NO-GAP, '|', AT (10) gt_data-shprt NO-GAP, '|', AT (10) gt_data-rcprt NO-GAP. ENDLOOP. CLEAR gt_data.endform. " write_data

*&---------------------------------------------------------------------**& 4. FROM HEADER_DATA*& - 레포트의 헤더를 출력한다.*&---------------------------------------------------------------------*form header_data .

*헤더에 색깔을 입힌다. FORMAT COLOR 1 INTENSIFIED ON.

WRITE: / '|' NO-GAP, AT (10) '파일번호' NO-GAP, '|' , AT (5) '차수' NO-GAP, '|' , AT (20) '업체 CONTACT 현황' NO-GAP, '|' , AT (10) '공장출고일' NO-GAP, '|' , AT (10) '예상선적일' NO-GAP, '|' , AT (10) '실선적일' NO-GAP, '|' , AT (15) '선적지연사유' NO-GAP, '|' , AT (10) '입항일' NO-GAP, '|' , AT (10) '선적항' NO-GAP, '|' , AT (10) '도착항' NO-GAP.*헤더위에 라인을 긋는다. WRITE: / '|' NO-GAP, AT (160) SY-ULINE CENTERED NO-GAP.

endform. " header_data*&---------------------------------------------------------------------**& 5. FROM FOOTER_DATA*& - 레포트의 마지막을 출력한다.*&---------------------------------------------------------------------*form footer_data . WRITE: / 'Report End'.endform. " footer_data

WRITE Program 의 문법

1) HIDE 화면상에 데이터를 출력하면서 그 데이터를 가상의 Area 에 저장해 놓는 명령어 – 따라서 더블클릭한 필드의 필드명이나 Line 의 Index 를 구하기 위하여 노력할

필요가 없다 (더블클릭시 해당 데이터의 세부내용을 조회할 때 사용)

Page 18: sap-abap.tistory.comsap-abap.tistory.com/attachment/cfile30.uf@17686B444D54... · Web view목 차 Table Create Maintenance Table Create WRITE(REPORT) Create ALV(ABAP LIST VIEW ER)

Ex) WRITE 문 하단에 아래와 같이 기술

HIDE: gt_data-filno. >>> filno 컬럼을 더블클릭할 시 바로가기 실행 메인에 아래 구문 기술 (AT LINE-SELECTION)AT LINE-SELECTION.SET PARAMETER ID 'FILNO' FIELD gt_data-filno.CALL TRANSACTION 'ZIMR0031' AND SKIP FIRST SCREEN -> 호출

트랜잭션 코드

2) WRITE 될 데이터의 위치와 길이 표시 02(8) gt_data-filno, => 2 번째 위치부터 8 째자리까지 데이터 출력

10(1) ‘|’ , => 10 번째 위치부터 1 자리까지 ‘|’ 출력

3) WRITE 문의 다양한 옵션들 NO-ZERO : 필드겂이 0 이라면 Blank 로 출력된다. NO GROUPING : 천단위 구분기호 “,”를 출력하지 않는다.

4. ALV(ABAP LIST VIEWER) Program Create 1) INCLUDE 문 정의

* 프로그램 선언REPORT ZTEST004.* _TOP 선언INCLUDE ZTEST004_TOP.* _ALV 선언INCLUDE ZTEST004_ALV.* _SCR 선언INCLUDE ZTEST004_SCR.* _EVT 선언INCLUDE ZTEST004_EVT.* _F01 선언INCLUDE ZTEST004_F01.

Page 19: sap-abap.tistory.comsap-abap.tistory.com/attachment/cfile30.uf@17686B444D54... · Web view목 차 Table Create Maintenance Table Create WRITE(REPORT) Create ALV(ABAP LIST VIEW ER)

1) ZTEST001_TOP 코딩*&---------------------------------------------------------------------**& Include ZTEST0001_TOP*& 1) 테이블 정의*& 2) Include 정의*& 3) Internal 테이블 컬럼정의*&---------------------------------------------------------------------*

**************************************************** 1. 테이블 및 INCLUDE 정의***************************************************TABLES: ztim0020t. "선적예정정보 Header

TYPE-POOLS : slis , sydes, vrm .INCLUDE <icon>.INCLUDE <color>.

**************************************************** 2. Internal 테이블 DATA 정의***************************************************DATA: BEGIN OF gt_data OCCURS 0, mark , signl(04) , "신호등 @08@,@09@,@0A@(G,Y,R) filno LIKE ztim0020-filno , "무역의뢰 No. cntno LIKE ztim0020t-cntno, "차수 vdtxt LIKE ztim0020t-vdtxt, "업체 CONTACT 현황 ekorg LIKE ztim0020-ekorg , "구매조직 fgidt LIKE ztim0020t-fgidt, "공장출고일 fshdt LIKE ztim0020t-fshdt, "예상선적일 rshdt LIKE ztim0020t-rshdt, "실선적일 shdrs LIKE ztim0020t-shdrs, "선적시연사유 imrdt LIKE ztim0020t-imrdt, "입항일 shprt LIKE ztim0020t-shprt, "선적항 rcprt LIKE ztim0020t-rcprt, "도착항 prsty LIKE ztim0020t-prsty, "대표스타일 totqt LIKE ztim0020t-totqt, "총수량 tctcn LIKE ztim0020t-tctcn, "총 C/T 수 cmbqt LIKE ztim0020t-cmbqt, "CBM extra LIKE ztim0020t-extra, "비고 trcdt LIKE ztim0020t-trcdt, "업로드일 trctm LIKE ztim0020t-trctm, "업로드시간

END OF gt_data.

Page 20: sap-abap.tistory.comsap-abap.tistory.com/attachment/cfile30.uf@17686B444D54... · Web view목 차 Table Create Maintenance Table Create WRITE(REPORT) Create ALV(ABAP LIST VIEW ER)

2) ZTEST001_ALV 코딩*&---------------------------------------------------------------------**& Include ZIMR0030_ALV*&---------------------------------------------------------------------*

*----------------------------------------------------------------------** GLOBAL VARIABLE Definition for ALV GRID* 설명 : ALV 구현시 반드시 기술*----------------------------------------------------------------------*DATA: gt_listheader TYPE slis_t_listheader , gt_fieldcat TYPE slis_t_fieldcat_alv , gt_events TYPE slis_t_event , gs_layout TYPE slis_layout_alv , gt_fieldgroups TYPE slis_t_sp_group_alv , gt_sortfields TYPE slis_t_sortinfo_alv , gt_filtered_entries TYPE slis_t_filtered_entries, gt_filter TYPE slis_t_filter_alv , gt_extab TYPE slis_t_extab .

DATA: gt_color TYPE lvc_t_scol WITH HEADER LINE. "ALV color

DATA: g_a VALUE 'A', g_s VALUE 'S', g_x VALUE 'X'.

DATA gv_repid LIKE sy-repid.DATA gv_form_set_pf_stat TYPE slis_formname VALUE 'STATUS'.DATA gv_form_user_command TYPE slis_formname VALUE 'USER_COMMAND'.DATA gv_pos TYPE i .DATA gv_from_clause TYPE string .DATA gs_variant LIKE disvariant.

3) ZTEST001_SCR 코딩*&---------------------------------------------------------------------**& Include ZTEST0001_SCR*&---------------------------------------------------------------------**SELECTION-SCREEN FUNCTION KEY: 1.SELECTION-SCREEN BEGIN OF BLOCK b01 WITH FRAME TITLE text-b01.

* 의뢰서번호(FILNO)PARAMETERS: so_filno LIKE ztim0020t-filno "파일번호 OBLIGATORY.SELECT-OPTIONS:* 선적일 so_rshdt FOR ztim0020t-rshdt.

Page 21: sap-abap.tistory.comsap-abap.tistory.com/attachment/cfile30.uf@17686B444D54... · Web view목 차 Table Create Maintenance Table Create WRITE(REPORT) Create ALV(ABAP LIST VIEW ER)

*SELECTION-SCREEN END OF BLOCK b01.

SELECTION-SCREEN BEGIN OF BLOCK b02 WITH FRAME TITLE text-b02.

PARAMETERS: pa_vari LIKE disvariant-variant. "Layout

SELECTION-SCREEN END OF BLOCK b02.

4) ZTEST001_EVT 코딩*&---------------------------------------------------------------------**& Include ZTEST0001_EVT*&---------------------------------------------------------------------*

*****************INITIALIZATION.***************** PERFORM set_init_parameters. "Default 값 셋팅

***********************AT SELECTION-SCREEN ON VALUE-REQUEST FOR pa_vari.*********************** PERFORM f4_alv_variant. "사용자 문서유형 지정 기능

*********************START-OF-SELECTION.********************* PERFORM read_data_with_parameters. "데이타 Select

*******************END-OF-SELECTION.*******************

PERFORM run_alv_process. "데이타 Write 및 Event

*&---------------------------------------------------------------------**& Include ZTEST0001_F01*&---------------------------------------------------------------------**&---------------------------------------------------------------------**& 1. FORM SET_INIT_PRARMETERS*& - 초기값 (Default 값)을 조건에 줄때 사용한다.*&---------------------------------------------------------------------*FORM set_init_parameters .

ENDFORM. " set_init_parameters

*&---------------------------------------------------------------------**& 2. FROM READ_DATA_WITH_PARAMETERS*& - 조건을 받아 리스트를 Select 한다.*&---------------------------------------------------------------------*

FORM read_data_with_parameters .

Page 22: sap-abap.tistory.comsap-abap.tistory.com/attachment/cfile30.uf@17686B444D54... · Web view목 차 Table Create Maintenance Table Create WRITE(REPORT) Create ALV(ABAP LIST VIEW ER)

DATA: lt_init LIKE TABLE OF gt_data WITH HEADER LINE. DATA: l_tabix LIKE sy-tabix. CLEAR: gt_data, gt_data[].

SELECT filno "무역의뢰 No. cntno "차수 vdtxt "업체 CONTACT 현황 fgidt "공장출고일 fshdt "예상선적일 rshdt "실선적일 shdrs "선적시연사유 imrdt "입항일 shprt "선적항 rcprt "도착항 prsty "대표스타일 totqt "총수량 tctcn "총 C/T 수 cmbqt "CBM extra "비고 trcdt "업로드일 trctm "업로드시간

INTO CORRESPONDING FIELDS OF TABLE lt_init FROM ztim0020t WHERE filno = so_filno AND "File No. rshdt IN so_rshdt "선적일

ORDER BY filno.

* Data Modification move: lt_init[] to gt_data[].

ENDFORM. " read_data_with_parameters

*&---------------------------------------------------------------------**& 3. Form run_alv_process*& - ALV 개발시 필수 구문이다.*&---------------------------------------------------------------------*

FORM run_alv_process . CLEAR gt_fieldcat. REFRESH gt_fieldcat.

gv_repid = sy-repid.

*****pf-status 를 사용자가 만들어 사용할때******************************* set pf_status CLEAR: gt_extab, gt_extab[]. PERFORM status USING gt_extab[].************************************************************************* 리스트의 각 필드의 DISPLAY 속성 정의 PERFORM build_fieldcat .

Page 23: sap-abap.tistory.comsap-abap.tistory.com/attachment/cfile30.uf@17686B444D54... · Web view목 차 Table Create Maintenance Table Create WRITE(REPORT) Create ALV(ABAP LIST VIEW ER)

* Sorting PERFORM sort_fields CHANGING gt_sortfields[].

* 리스트 화면 레이아웃 PERFORM build_layout CHANGING gs_layout.

* 리스트의 헤더 내역 CLEAR: gt_listheader, gt_listheader[]. PERFORM build_comment CHANGING gt_listheader[].

* 사용자 정의에 의한 status 를 추가하기 위한 Event Setting PERFORM build_alv_event CHANGING gt_events.

* ALV GRID 펑션을 CALL PERFORM alv_grid_display USING gt_fieldcat[] gt_data[].

ENDFORM. " run_alv_process

*&---------------------------------------------------------------------**& Form build_fieldcat*& 실제 데이터를 출력한다.*&---------------------------------------------------------------------*FORM build_fieldcat .

* Solution 2. PERFORM field_catalog USING: 'X' '' 'FILNO' '무역의뢰 No.' '' ' ' '' '' '10' '', 'X' '' 'CNTNO' '차수' '' ' ' '' '' '10' '', ' ' '' 'VDTXT' '업체 Contact 현황' '' ' ' '' '' '10' '', ' ' '' 'FGIDT' '공장출고일' '' ' ' '' '' '20' '', ' ' '' 'FSHDT' '예상선적일' '' ' ' '' '' '10' '', ' ' '' 'RSHDT' '실선적일' '' ' ' '' '' '10' '', ' ' '' 'SHDRS' '선적지연사유' '' ' ' '' '' '10' '', ' ' '' 'IMRDT' '입항일' '' ' ' '' '' '10' '', ' ' '' 'SHPRT' '선적항(ANC)' '' ' ' '' '' '05' '', ' ' '' 'RCPRT' '도착항(ANC)' '' ' ' '' '' '05' '', ' ' '' 'PRSTY' '대표스타일' '' ' ' '' '' '10' '', ' ' '' 'TOTQT' '총수량' '' ' ' '' '' '10' '', ' ' '' 'TCTCN' '총 C/T 수' '' ' ' '' '' '10' '', ' ' '' 'PURBU' '구매 BU' '' ' ' '' '' '05' '', ' ' '' 'CMBQT' 'CBM' '' ' ' '' '' '10' '', ' ' '' 'EXTRA' '비고' '' ' ' '' '' '10' '',

Page 24: sap-abap.tistory.comsap-abap.tistory.com/attachment/cfile30.uf@17686B444D54... · Web view목 차 Table Create Maintenance Table Create WRITE(REPORT) Create ALV(ABAP LIST VIEW ER)

' ' '' 'TRCDT' 'Trac.UP DT' '' ' ' '' '' '10' '', ' ' '' 'TRCTM' 'Trac.UP TM' '' ' ' '' '' '08' ''.ENDFORM. " build_fieldcat

*&---------------------------------------------------------------------**& 6. Form alv_grid_display*&---------------------------------------------------------------------*

FORM alv_grid_display USING pt_fieldcat TYPE slis_t_fieldcat_alv pt_object TYPE table. gv_repid = sy-repid.

DATA: lv_exit_caused_by_caller TYPE c, lv_exit_caused_by_user TYPE slis_exit_by_user.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING i_callback_program = gv_repid i_bypassing_buffer = 'X' i_callback_pf_status_set = gv_form_set_pf_stat i_callback_user_command = gv_form_user_command is_layout = gs_layout it_fieldcat = pt_fieldcat[] it_special_groups = gt_fieldgroups[] it_sort = gt_sortfields[] i_save = g_x is_variant = gs_variant it_events = gt_events[] IMPORTING e_exit_caused_by_caller = lv_exit_caused_by_caller es_exit_caused_by_user = lv_exit_caused_by_user TABLES t_outtab = pt_object EXCEPTIONS program_error = 1 OTHERS = 2.

IF NOT lv_exit_caused_by_caller IS INITIAL OR NOT lv_exit_caused_by_user-back IS INITIAL.* 뒤로 (f3) SET USER-COMMAND 'BACK'. ELSEIF NOT lv_exit_caused_by_user-exit IS INITIAL.* 종료 (f15) SET USER-COMMAND '%EX'. ELSEIF NOT lv_exit_caused_by_user-cancel IS INITIAL.* 취소 (f12) SET USER-COMMAND 'RW'. ENDIF.

ENDFORM. " ALV_GRID_DISPLAY

*&---------------------------------------------------------------------**& 7.Form build_alv_event*&---------------------------------------------------------------------*FORM build_alv_event CHANGING pt_event TYPE slis_t_event. DATA : la_event TYPE slis_alv_event.

Page 25: sap-abap.tistory.comsap-abap.tistory.com/attachment/cfile30.uf@17686B444D54... · Web view목 차 Table Create Maintenance Table Create WRITE(REPORT) Create ALV(ABAP LIST VIEW ER)

la_event-name = 'TOP_OF_PAGE'. la_event-form = 'LIST_HEADER'. APPEND la_event TO pt_event.

ENDFORM. " BUILD_ALV_EVENT

*&---------------------------------------------------------------------**& Form build_layout*&---------------------------------------------------------------------** text*----------------------------------------------------------------------** <--P_GS_LAYOUT text*----------------------------------------------------------------------*FORM build_layout CHANGING ps_layout TYPE slis_layout_alv. ps_layout-box_fieldname = 'MARK'. ps_layout-box_tabname = 'GT_DATA'. ps_layout-colwidth_optimize = 'X'. ps_layout-zebra = 'X'. ps_layout-detail_popup = 'X'. ps_layout-totals_text = '합계'.* PS_LAYOUT-numc_sum = 'X'.* PS_LAYOUT-MIN_LINESIZE = '255'.ENDFORM. " BUILD_LAYOUT*&---------------------------------------------------------------------**& Form build_comment*&---------------------------------------------------------------------** text*----------------------------------------------------------------------** <--P_GT_LISTHEADER[] text*----------------------------------------------------------------------*FORM build_comment CHANGING pt_listheader TYPE slis_t_listheader . DATA: la_listheader TYPE slis_listheader, lv_text_low TYPE string, "내역 lv_text_high TYPE string, "내역 lv_to(1).** la_listheader-typ = 'H'. " selection la_listheader-info = sy-title. APPEND la_listheader TO pt_listheader.** la_listheader-typ = 'S'. DESCRIBE TABLE gt_data LINES lv_text_low. CONCATENATE '총 레코드 수 : ' lv_text_low INTO la_listheader-info. APPEND la_listheader TO pt_listheader.**

ENDFORM. " BUILD_COMMENT

FORM list_header. CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE' EXPORTING it_list_commentary = gt_listheader.* i_logo = 'TRVPICTURE01'.

ENDFORM. " LIST_HEADER

*&---------------------------------------------------------------------*

Page 26: sap-abap.tistory.comsap-abap.tistory.com/attachment/cfile30.uf@17686B444D54... · Web view목 차 Table Create Maintenance Table Create WRITE(REPORT) Create ALV(ABAP LIST VIEW ER)

*& Form field_catalog*&---------------------------------------------------------------------*FORM field_catalog USING p_key p_no_out p_fieldname p_reptext_ddic p_do_sum p_just p_qfieldname p_cfieldname p_outputlen p_no_zero . DATA : ls_fieldcat TYPE slis_fieldcat_alv.

gv_pos = gv_pos + 1. ls_fieldcat-col_pos = gv_pos.ls_fieldcat-key = p_key. ls_fieldcat-no_out = p_no_out. ls_fieldcat-fieldname = p_fieldname. ls_fieldcat-do_sum = p_do_sum. ls_fieldcat-outputlen = p_outputlen. "텍스트참조필드 ls_fieldcat-reptext_ddic = p_reptext_ddic. "텍스트

ls_fieldcat-just = p_just. ls_fieldcat-qfieldname = p_qfieldname. ls_fieldcat-cfieldname = p_cfieldname. ls_fieldcat-no_zero = p_no_zero.

APPEND ls_fieldcat TO gt_fieldcat.ENDFORM. " field_catalog

*&---------------------------------------------------------------------**& Form sort_fields*&---------------------------------------------------------------------*FORM sort_fields CHANGING pt_sortfields TYPE slis_t_sortinfo_alv. DATA: ls_sortfields TYPE slis_sortinfo_alv.

ENDFORM. " sort_fields

*&---------------------------------------------------------------------**& Form status*&---------------------------------------------------------------------*

FORM status USING rt_extab TYPE slis_t_extab.

SET PF-STATUS 'STATUS' EXCLUDING rt_extab.

ENDFORM.

*&---------------------------------------------------------------------**& Form user_command*&---------------------------------------------------------------------*FORM user_command USING p_ucomm LIKE sy-ucomm p_selfield TYPE slis_selfield. DATA: l_count TYPE i.

CASE p_ucomm.* 1. Double Click WHEN '&IC1'.

Page 27: sap-abap.tistory.comsap-abap.tistory.com/attachment/cfile30.uf@17686B444D54... · Web view목 차 Table Create Maintenance Table Create WRITE(REPORT) Create ALV(ABAP LIST VIEW ER)

READ TABLE gt_data INDEX p_selfield-tabindex. CASE p_selfield-sel_tab_field.* 1-1. Trade Request Search WHEN '1-FILNO'. PERFORM submit_zimr0031_for_dis USING p_selfield-value. ENDCASE. ENDCASE.ENDFORM.

*&---------------------------------------------------------------------**& Form submit_zimr0031_for_dis*&---------------------------------------------------------------------*FORM submit_zimr0031_for_dis USING p_filno. DATA: seltab TYPE TABLE OF rsparams, seltab_wa LIKE LINE OF seltab .

SUBMIT zimr0031 WITH pa_filno EQ p_filno WITH rb_dis EQ 'X' WITH SELECTION-TABLE seltab AND RETURN.

ENDFORM. " submit_zimr0031_for_dis*&---------------------------------------------------------------------**& Form f4_alv_variant*&---------------------------------------------------------------------*FORM f4_alv_variant . gs_variant-report = sy-repid.

CALL FUNCTION 'REUSE_ALV_VARIANT_F4' EXPORTING is_variant = gs_variant i_save = 'A' IMPORTING es_variant = gs_variant EXCEPTIONS not_found = 2.

IF sy-subrc = 2. MESSAGE ID sy-msgid TYPE 'S' NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. ELSE. pa_vari = gs_variant-variant. ENDIF.

ENDFORM. " f4_alv_variant

Page 28: sap-abap.tistory.comsap-abap.tistory.com/attachment/cfile30.uf@17686B444D54... · Web view목 차 Table Create Maintenance Table Create WRITE(REPORT) Create ALV(ABAP LIST VIEW ER)

5. DIALOG Program Create - Dialog Program 은 Module Pool 로 생성해야 한다.- Module Pool 프로그램은 프로그램실행시 Screen 에서 시작하고 Report

프로그램은 프로그램 실행시 Event 에서 시작한다.* 개발순서1) 프로그램 생성- 반드시 유형을 “M 모듈 풀” 로 선택해야 한다.

2)Screen 생성 : 임의의 화면번호입력 후 확인 (화면번호는 100 번 단위로 입력)

3)Screen 상세정보 입력 후 저장 : Short description 만 입력한 후 저장한다.

Page 29: sap-abap.tistory.comsap-abap.tistory.com/attachment/cfile30.uf@17686B444D54... · Web view목 차 Table Create Maintenance Table Create WRITE(REPORT) Create ALV(ABAP LIST VIEW ER)

4)Screen 저장후 다음과 같이 프로그램 메뉴리스트에 Screen 이 생성된다

5)화면 폴더의 0100 (Screen) 을 더블클릭한다.- 더블클릭하면 두개의 프로세스가 보인다- 1) PBO 2) PBI

5)각 프로세스 PBO, PBI 안에 있는 모듈 주석을 푼뒤 더블클릭하여각 모듈을 생성해준다. - PBO 모듈은 INCLUDE 선택안에 ZTEST006_O01 로 변경한다

Page 30: sap-abap.tistory.comsap-abap.tistory.com/attachment/cfile30.uf@17686B444D54... · Web view목 차 Table Create Maintenance Table Create WRITE(REPORT) Create ALV(ABAP LIST VIEW ER)

- PBI 모듈은 INCLUDE 선택안에 ZTEST006_I01 로 변경한다

생성 후 아래와 같이 폴더상에 PBO, PBI 폴더가 생성되어 있다.

6)ZTEST002_TOP 문을 기술한다. 기술후 아래와같이 폴더가 생성된다.

6. ㅇㅇㅇ

7. 기타기능들

1) MESSAGE형식 : MESSAGE Tnnn

– T (타입) / nnn(메시지번호)– T(타입)의 종류 : E(Error), W(Warning), I(Information),

S(Status)– 메시지는 table T100 에 저장되어 있다.

Page 31: sap-abap.tistory.comsap-abap.tistory.com/attachment/cfile30.uf@17686B444D54... · Web view목 차 Table Create Maintenance Table Create WRITE(REPORT) Create ALV(ABAP LIST VIEW ER)

8. BDC(Batch Data Communication)

9. Class 를 이용한 ALV 입력프로그램

1) 실행가능 프로그램으로 프로그램을 Create 한다.

2) 기본적으로 아래와 같이 코딩한다.

INCLUDE ztest7788_top. INCLUDE ztest7788_scr.INCLUDE ztest7788_alv.INCLUDE ztest7788_pbo.INCLUDE ztest7788_pai.INCLUDE ztest7788_ent.INCLUDE ztest7788_f01.

3) 각 Include 문을 더블클릭하여 Object 를 생성한다.4) ZTEST7788_TOP 코딩5) ZTEST7788_SCR 코딩6) 스크린 Create

Screen 에 ‘사용자제어’ 컨트롤을 클릭하여 컨트롤박스를 추가한 후 이름을 입력한다 -> CONTAINER_0100 으로 명칭 함

Page 32: sap-abap.tistory.comsap-abap.tistory.com/attachment/cfile30.uf@17686B444D54... · Web view목 차 Table Create Maintenance Table Create WRITE(REPORT) Create ALV(ABAP LIST VIEW ER)

7) ZTEST7788_ENT 코딩*---------------------------------------------------------* INITIALIZATION*---------------------------------------------------------INITIALIZATION. PERFORM init. “초기셋팅을 한다.*-------------------------------------------------------- *START-OF-SELECTION*--------------------------------------------------------START-OF-SELECTION. PERFORM read_data_from_tables. “테이블로부터 데이터를 조회한다

----------------------------------------------------------* END-OF-SELECTION*---------------------------------------------------------END-OF-SELECTION.CALL SCREEN '0100'. “스크린을 호출한다.

.//------------------------------------------------------------------------------------//// ZTEST7788_F01 의 read_data_from_tables.//-------------------------------------------------------------------------------------//form read_data_from_tables . CLEAR: gs_data[],gt_data[].

SELECT imexs brand ekorg

Page 33: sap-abap.tistory.comsap-abap.tistory.com/attachment/cfile30.uf@17686B444D54... · Web view목 차 Table Create Maintenance Table Create WRITE(REPORT) Create ALV(ABAP LIST VIEW ER)

tdpsn phone email INTO CORRESPONDING FIELDS OF TABLE gt_data FROM ztim0002 WHERE brand IN so_brand.

MOVE: gt_data[] TO gs_data[].

endform. " read_data_from_tables

8) ZTEST7788_ALV 코딩 ALV 그리드에 원하는 데이터가 조회되기위한 최소한의 코딩------------------------------------------------------------ Include MZPPM1020ALV

------------------------------------------------------------CLASS: lcl_alv_grid DEFINITION DEFERRED,

lcl_event_receiver DEFINITION DEFERRED.

DATA: gt_grid TYPE REF TO lcl_alv_grid, gt_scroll TYPE lvc_s_stbl, gt_layout TYPE lvc_s_layo, gt_variant TYPE disvariant, gt_fieldcat TYPE lvc_s_fcat, gs_fieldcat TYPE lvc_t_fcat, gc_container TYPE scrfname VALUE 'CONTAINER_0100', gt_container TYPE REF TO cl_gui_custom_container, gt_event_receiver TYPE REF TO lcl_event_receiver.

*--------------------------------------------------------------* CLASS LCL_ALV_GRID DEFINITION*--------------------------------------------------------------

CLASS lcl_alv_grid DEFINITION INHERITING FROM cl_gui_alv_grid. PUBLIC SECTION. METHODS: set_optimize_all_cols, set_cursor IMPORTING row TYPE i col TYPE i, set_fixed_column, set_row_resize.ENDCLASS. "LCL_ALV_GRID DEFINITION*--------------------------------------------------------------* CLASS LCL_ALV_GRID IMPLEMENTATION*--------------------------------------------------------------CLASS lcl_alv_grid IMPLEMENTATION.

Page 34: sap-abap.tistory.comsap-abap.tistory.com/attachment/cfile30.uf@17686B444D54... · Web view목 차 Table Create Maintenance Table Create WRITE(REPORT) Create ALV(ABAP LIST VIEW ER)

METHOD set_optimize_all_cols. CALL METHOD me->optimize_all_cols EXPORTING include_header = 1. ENDMETHOD. " SET_OPTIMIZE_ALL_COLS* METHOD set_cursor. CALL METHOD me->set_current_cell_base EXPORTING row = row col = col. ENDMETHOD. " SET_CURSOR* METHOD set_fixed_column. CALL METHOD me->set_fixed_cols EXPORTING cols = 3. ENDMETHOD. " SET_FIXED_COLUMN* METHOD set_row_resize. CALL METHOD me->set_resize_rows EXPORTING enable = 1. ENDMETHOD. " SET_ROW_RESIZEENDCLASS. " LCL_ALV_GRID IMPLEMENTATION

*--------------------------------------------------------------* CLASS lcl_event_receiver DEFINITION*--------------------------------------------------------------CLASS lcl_event_receiver DEFINITION. PUBLIC SECTION. METHODS:* 툴바를 추가한다. handle_toolbar FOR EVENT toolbar OF cl_gui_alv_grid IMPORTING e_object e_interactive.ENDCLASS. "lcl_event_receiver DEFINITION

*--------------------------------------------------------------* CLASS lcl_event_receiver IMPLEMENTATION*--------------------------------------------------------------CLASS lcl_event_receiver IMPLEMENTATION.

METHOD handle_toolbar. DATA: ls_toolbar TYPE stb_button.

Page 35: sap-abap.tistory.comsap-abap.tistory.com/attachment/cfile30.uf@17686B444D54... · Web view목 차 Table Create Maintenance Table Create WRITE(REPORT) Create ALV(ABAP LIST VIEW ER)

IF gt_data[] IS NOT INITIAL. CLEAR: ls_toolbar. ls_toolbar-butn_type = '3'. APPEND ls_toolbar TO e_object->mt_toolbar.

CLEAR: ls_toolbar. ls_toolbar-function = 'DELROW'. ls_toolbar-icon = icon_delete_row. ls_toolbar-text = text-201. APPEND ls_toolbar TO e_object->mt_toolbar. ENDIF.ENDMETHOD. " check_changed_fieldENDCLASS. "lcl_event_receiver IMPLEMENTATION

9) ZTEST7788_PBO/ZTEST7788_PAI 기본 코딩화면의 0100 스크린을 더블클릭하여 아래와 같이 코딩 한다.

화면의 0100 을 더블클릭

PROCESS BEFORE OUTPUT. MODULE STATUS_0100. “GUI상태를 CREATE 한 이름

MODULE initial_container_of_alv. “CLASS 의 그리드를 초기화

PROCESS AFTER INPUT.MODULE exit_0100 AT EXIT-COMMAND. “EXIT 버튼을 구현

module user_command_100. “”상단메뉴바의 버튼 기능을 구현

상단 메뉴바의 버튼의 로직을 부여하기 위해서 반드시 아래처럼 OK_CODE 를입력해야한다 (스크린의 요소리스트에 추가)

Page 36: sap-abap.tistory.comsap-abap.tistory.com/attachment/cfile30.uf@17686B444D54... · Web view목 차 Table Create Maintenance Table Create WRITE(REPORT) Create ALV(ABAP LIST VIEW ER)

.//------------------------------------------------------------------------------------//// ZTEST7788_PBO 의 STATUS_0100//-------------------------------------------------------------------------------------//module STATUS_0100 output. SET PF-STATUS 'MENU_0100'. SET TITLEBAR 'TITLE0100'.endmodule. " STATUS_0100 OUTPUT

.//------------------------------------------------------------------------------------//// ZTEST7788_PBO 의 initial_container_of_alv//-------------------------------------------------------------------------------------//

module initial_container_of_alv output. PERFORM create_and_init_alv.

endmodule. " initial_container_of_alv OUTPUT

.//------------------------------------------------------------------------------------//// ZTEST7788_PAI 의 EXIT_0100//-------------------------------------------------------------------------------------//module exit_0100 input. CASE sy-ucomm. WHEN 'EXIT' OR 'BACK'. LEAVE TO SCREEN 0. ENDCASE.

endmodule. " exit_0100 INPUT

.//------------------------------------------------------------------------------------//// ZTEST7788_PAI 의 EXIT_0100//-------------------------------------------------------------------------------------//

MODULE user_command_100 INPUT. CASE ok_code. WHEN 'BACK'. LEAVE PROGRAM. WHEN ENDCASE.ENDMODULE. " user_command_100 INPUT

.//------------------------------------------------------------------------------------//// ZTEST7788_F01 create_and_init_alv//-------------------------------------------------------------------------------------//

FORM create_and_init_alv .

Page 37: sap-abap.tistory.comsap-abap.tistory.com/attachment/cfile30.uf@17686B444D54... · Web view목 차 Table Create Maintenance Table Create WRITE(REPORT) Create ALV(ABAP LIST VIEW ER)

DATA: lt_sort TYPE lvc_t_sort, lt_exclude TYPE ui_functions.* CLEAR: gs_fieldcat[], lt_exclude[], lt_sort[].* CREATE OBJECT gt_container EXPORTING container_name = gc_container.* CREATE OBJECT gt_grid EXPORTING i_parent = gt_container.

PERFORM build_fieldcat. “그리드의 데이터를 Output 한다.PERFORM exclude_tb_functions CHANGING lt_exclude.

“그리드의 각종 버튼을 제어한다.(Visible 을 제어)

CALL METHOD gt_grid->set_table_for_first_display EXPORTING is_layout = gt_layout it_toolbar_excluding = lt_exclude is_variant = gt_variant i_save = 'A' CHANGING it_fieldcatalog = gs_fieldcat it_sort = lt_sort it_outtab = gt_data[].

ENDFORM. " create_and_init_alv

.//------------------------------------------------------------------------------------//// ZTEST7788_F01 build_fieldcat//-------------------------------------------------------------------------------------//FORM build_fieldcat . DATA: ls_fcat TYPE slis_fieldcat_alv, lt_fcat TYPE slis_t_fieldcat_alv.

CLEAR: lt_fcat[], gs_fieldcat[].

CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE' EXPORTING i_program_name = gv_repid i_internal_tabname = 'GT_DATA' i_inclname = gv_repid CHANGING

Page 38: sap-abap.tistory.comsap-abap.tistory.com/attachment/cfile30.uf@17686B444D54... · Web view목 차 Table Create Maintenance Table Create WRITE(REPORT) Create ALV(ABAP LIST VIEW ER)

ct_fieldcat = lt_fcat EXCEPTIONS inconsistent_interface = 1 program_error = 2 OTHERS = 3.

LOOP AT lt_fcat INTO ls_fcat. CLEAR: gt_fieldcat. MOVE-CORRESPONDING ls_fcat TO gt_fieldcat.

CASE gt_fieldcat-fieldname. WHEN 'IMEXS'. gt_fieldcat-key = 'X'. gt_fieldcat-fix_column = 'X'. gt_fieldcat-coltext = '구분'. WHEN 'BRAND'. gt_fieldcat-key = 'X'. gt_fieldcat-fix_column = 'X'. gt_fieldcat-coltext = '브랜드'. WHEN 'EKORG'. gt_fieldcat-key = 'X'. gt_fieldcat-fix_column = 'X'. gt_fieldcat-coltext = '구매조직'. WHEN 'TDPSN'. gt_fieldcat-key = 'X'. gt_fieldcat-fix_column = 'X'. gt_fieldcat-coltext = '담당자'. WHEN 'PHONE'. gt_fieldcat-coltext = '연락처'. WHEN 'EMAIL'. gt_fieldcat-edit = 'X'. ls_fcat-seltext_l = 'EMAIL'.

ENDCASE.

gt_fieldcat-scrtext_l = ls_fcat-seltext_l. gt_fieldcat-colddictxt = 'L'.

APPEND gt_fieldcat TO gs_fieldcat.

ENDLOOP.ENDFORM. " build_fieldcat

.//------------------------------------------------------------------------------------//// ZTEST7788_F01 exclude_tb_functions// 툴바의 각종 버튼의 Visible 을 제어 함 – 주석처리시 버튼 안보임//-------------------------------------------------------------------------------------//form exclude_tb_functions changing pt_exclude TYPE ui_functions. DATA: ls_exclude TYPE ui_func.

ls_exclude = cl_gui_alv_grid=>mc_fc_detail.

Page 39: sap-abap.tistory.comsap-abap.tistory.com/attachment/cfile30.uf@17686B444D54... · Web view목 차 Table Create Maintenance Table Create WRITE(REPORT) Create ALV(ABAP LIST VIEW ER)

APPEND ls_exclude TO pt_exclude.

ls_exclude = cl_gui_alv_grid=>mc_fc_find. APPEND ls_exclude TO pt_exclude.

ls_exclude = cl_gui_alv_grid=>mc_fc_check. APPEND ls_exclude TO pt_exclude.

ls_exclude = cl_gui_alv_grid=>mc_fc_loc_insert_row. APPEND ls_exclude TO pt_exclude.

ls_exclude = cl_gui_alv_grid=>mc_fc_loc_undo. APPEND ls_exclude TO pt_exclude.

ls_exclude = cl_gui_alv_grid=>mc_fc_loc_delete_row. APPEND ls_exclude TO pt_exclude.

ls_exclude = cl_gui_alv_grid=>mc_fc_loc_append_row. APPEND ls_exclude TO pt_exclude.

ls_exclude = cl_gui_alv_grid=>mc_fc_loc_copy_row. APPEND ls_exclude TO pt_exclude.

ls_exclude = cl_gui_alv_grid=>mc_fc_refresh. APPEND ls_exclude TO pt_exclude.

ls_exclude = cl_gui_alv_grid=>mc_fc_sort_asc. APPEND ls_exclude TO pt_exclude. ls_exclude = cl_gui_alv_grid=>mc_fc_sort_dsc.APPEND ls_exclude TO pt_exclude.

ls_exclude = cl_gui_alv_grid=>mc_fc_print. APPEND ls_exclude TO pt_exclude.

ls_exclude = cl_gui_alv_grid=>mc_fc_graph. APPEND ls_exclude TO pt_exclude.

ls_exclude = cl_gui_alv_grid=>mc_fc_views. APPEND ls_exclude TO pt_exclude.

ls_exclude = cl_gui_alv_grid=>mc_fc_subtot. APPEND ls_exclude TO pt_exclude.

ls_exclude = cl_gui_alv_grid=>mc_mb_sum. APPEND ls_exclude TO pt_exclude.

ls_exclude = cl_gui_alv_grid=>mc_mb_export. APPEND ls_exclude TO pt_exclude.

ls_exclude = cl_gui_alv_grid=>mc_mb_filter. APPEND ls_exclude TO pt_exclude. ls_exclude = cl_gui_alv_grid=>mc_fc_loc_cut. APPEND ls_exclude TO pt_exclude.

Page 40: sap-abap.tistory.comsap-abap.tistory.com/attachment/cfile30.uf@17686B444D54... · Web view목 차 Table Create Maintenance Table Create WRITE(REPORT) Create ALV(ABAP LIST VIEW ER)

ls_exclude = cl_gui_alv_grid=>mc_fc_loc_copy. APPEND ls_exclude TO pt_exclude.

ls_exclude = cl_gui_alv_grid=>mc_fc_loc_paste. APPEND ls_exclude TO pt_exclude.

ls_exclude = cl_gui_alv_grid=>mc_fc_loc_paste_new_row. APPEND ls_exclude TO pt_exclude.

ls_exclude = cl_gui_alv_grid=>mc_fc_info. APPEND ls_exclude TO pt_exclude.*endform. " exclude_tb_functions

BDC 처리

1. 리코딩. 1-1. 트랜잭션 ‘ SHDB’ 를 실행한다 .

Page 41: sap-abap.tistory.comsap-abap.tistory.com/attachment/cfile30.uf@17686B444D54... · Web view목 차 Table Create Maintenance Table Create WRITE(REPORT) Create ALV(ABAP LIST VIEW ER)

또는 메뉴패스 ‘시스템->서비스->빠른 입력->리코더’를 이용한다.

1-2. ‘New recording’ 버튼을 클릭한다 .

1-3. 입력사항을 입력한다 . 리코딩 명을 입력한다.

실행할 트랜잭션 코드를 입력한다. Default size 를 선택한다.(어느 해상도에서도 관계없이 같은 크기의 입력화면이 된다.) ☞ 미선택시 해상도가 높으면 더 많은 라인을 입력할 수 있고 , 해상도가 낮으면 더 적은 라인을 입력할 수 있어 BDC 가 제대로 작동하지 않을 수 있다 .

Page 42: sap-abap.tistory.comsap-abap.tistory.com/attachment/cfile30.uf@17686B444D54... · Web view목 차 Table Create Maintenance Table Create WRITE(REPORT) Create ALV(ABAP LIST VIEW ER)

1-4. 생산오더 생성 (CO01) 을 실행한다 .

1-5. 일반탭의 내역을 입력한다 .

Page 43: sap-abap.tistory.comsap-abap.tistory.com/attachment/cfile30.uf@17686B444D54... · Web view목 차 Table Create Maintenance Table Create WRITE(REPORT) Create ALV(ABAP LIST VIEW ER)

1-6. 입고탭의 내역을 입력한다 .

1-7. 지정탭의 내역을 입력한다 .

Page 44: sap-abap.tistory.comsap-abap.tistory.com/attachment/cfile30.uf@17686B444D54... · Web view목 차 Table Create Maintenance Table Create WRITE(REPORT) Create ALV(ABAP LIST VIEW ER)

1-8. 추가정보탭의 내역을 입력 후 저장을 누르면 리코딩이 종료된다 .

1-9. 생성된 리코딩을 저장하면 1-3 그림의 ①에 입력한 리코딩명 (CO01_TEST) 로 저장된다 . 저장버튼을 누르지 않으면 리코딩한 내역이 없어진다 .

Page 45: sap-abap.tistory.comsap-abap.tistory.com/attachment/cfile30.uf@17686B444D54... · Web view목 차 Table Create Maintenance Table Create WRITE(REPORT) Create ALV(ABAP LIST VIEW ER)

※ 개발서버(FDV)에서 리코딩을 했으면 다음 과정(1-A)이 필요 없고, 테스트 서버(FQA)에서 리코딩을 했으면 Exporting 기능을 이용하여 PC 에 TEXT 파일로 다운로드 후 Importing 기능을 이용하여

개발서버(FDV)로 업로드 하여 프로그램을 생성할 수 있다.

1-A. 테스트서버(FQA)에 생성된 리코딩을 Exporting 기능을 이용하여 PC 로 다운로드하고, 개발

서버(FDV)에 업로드 한다.

Page 46: sap-abap.tistory.comsap-abap.tistory.com/attachment/cfile30.uf@17686B444D54... · Web view목 차 Table Create Maintenance Table Create WRITE(REPORT) Create ALV(ABAP LIST VIEW ER)

- 리코딩 파일이 생성된 것을 확인할 수 있다.

- 개발서버(FDV)에서 리코딩 이름을 ‘CO01_IMPORT’로 하고 생성한다.

- 리코딩을 취소하고 나오면 위의 화면으로 이동하는데, 여기서 Importing 기능으로 PC 의 있는 리코딩 파일을 업로드 한다.

Page 47: sap-abap.tistory.comsap-abap.tistory.com/attachment/cfile30.uf@17686B444D54... · Web view목 차 Table Create Maintenance Table Create WRITE(REPORT) Create ALV(ABAP LIST VIEW ER)

- 업로드할 리코딩 파일을 선택한다.

- 테스트서버(FQA)의 리코딩(CO01_TEST)의 내용이 개발서버(FDV)의 리코딩(CO01_IMPORT) 에 업로드된 것을 확인할 수 있다.2. 생성된 리코딩을 가지고 프로그램을 생성한다. 2-1. 자동 BDC 프로그램 생성기능을 이용하여 BDC 프로그램을 생성한다 .

Page 48: sap-abap.tistory.comsap-abap.tistory.com/attachment/cfile30.uf@17686B444D54... · Web view목 차 Table Create Maintenance Table Create WRITE(REPORT) Create ALV(ABAP LIST VIEW ER)

- 프로그램 버튼을 이용하여 프로그램을 생성한다.

- BDC 프로그램명을 입력하고 ‘Transfer from recording’ 옵션으로 생성한다.

- 개발클래스는 로컬오브젝트 버튼이나 개발클래스에 ‘$TMP’를 입력한다. CTS 가 불필요할 경우 로컬오브젝트를 선택한다.2-2. 생성된 소스 프로그램은 다음과 같다 .(SE38 에서 확인가능 ) REPORT z_bdc_pp_co01_01 NO STANDARD PAGE HEADING LINE-SIZE 255.

INCLUDE bdcrecx1.

PERFORM open_group.

PERFORM bdc_dynpro USING 'SAPLCOKO1' '0100'. “ 화면 0100

Page 49: sap-abap.tistory.comsap-abap.tistory.com/attachment/cfile30.uf@17686B444D54... · Web view목 차 Table Create Maintenance Table Create WRITE(REPORT) Create ALV(ABAP LIST VIEW ER)

PERFORM bdc_field USING 'BDC_CURSOR' “ 화면의 커서위치 'CAUFVD-AUFNR'. “ 생산오더번호PERFORM bdc_field USING 'BDC_OKCODE' “ 펑션코드 '/00'. “ 엔터PERFORM bdc_field USING 'CAUFVD-MATNR' “ 스타일 'HIBR83510300000'.PERFORM bdc_field USING 'CAUFVD-WERKS' “ 생산플랜트 '1017'.PERFORM bdc_field USING 'AUFPAR-PP_AUFART' “ 오더유형 'ZP01'.PERFORM bdc_field USING 'CAUFVD-AUFNR' “ 생산오더번호 'HIBR83510301'.

PERFORM bdc_dynpro USING 'SAPLCOKO1' '0115'. “ 화면 0115(일반탭)PERFORM bdc_field USING 'BDC_OKCODE' “ 펑션코드 '=KOAL'. “ 지정탭PERFORM bdc_field USING 'BDC_CURSOR' “ 화면의 커서위치 'CAUFVD-GLTRP'. “ 일자=>종료일PERFORM bdc_field USING 'CAUFVD-GAMNG' “ 오더수량 '1000'.PERFORM bdc_field USING 'CAUFVD-GMEIN' “ 단위 'PCS'.PERFORM bdc_field USING 'CAUFVD-GLTRP' “ 일자=>종료일 '20080919'.PERFORM bdc_field USING 'CAUFVD-TERKZ' “ 일정계획=>유형 '2'.

PERFORM bdc_dynpro USING 'SAPLCOKO1' '0115'. “ 화면 0115(지정탭)PERFORM bdc_field USING 'BDC_OKCODE' “ 펑션코드 '=KOWE'. “ 입고탭PERFORM bdc_field USING 'BDC_CURSOR' “ 화면의 커서위치 'CAUFVD-FEVOR'. “ 생산스케쥴러PERFORM bdc_field USING 'CAUFVD-DISPO' “ 재고계획자 '200'.PERFORM bdc_field USING 'CAUFVD-FEVOR' “ 생산스케쥴러 ''.PERFORM bdc_field USING 'CAUFVD-FUNC_AREA' “ 기능영역 '1000'. PERFORM bdc_field USING 'CAUFVD-PRCTR' “ 손익센터 'HI01'.

PERFORM bdc_dynpro USING 'SAPLCOKO1' '0115'. “ 화면 0115(입고탭)PERFORM bdc_field USING 'BDC_OKCODE' “ 펑션코드 '=+COI'. “ 추가정보탭PERFORM bdc_field USING 'BDC_CURSOR' “ 화면의 커서위치 'AFPOD-INSMK'. “ 재고유형PERFORM bdc_field USING 'AFPOD-UNTTO' “ 미달납품 '5.0'.PERFORM bdc_field USING 'AFPOD-UEBTO' “ 초과납품 '3.0'.

PERFORM bdc_dynpro USING 'SAPLCOKO1' '0115'. “ 화면 0115PERFORM bdc_field USING 'BDC_OKCODE' “ 펑션코드

Page 50: sap-abap.tistory.comsap-abap.tistory.com/attachment/cfile30.uf@17686B444D54... · Web view목 차 Table Create Maintenance Table Create WRITE(REPORT) Create ALV(ABAP LIST VIEW ER)

'=BU'. “ 저장PERFORM bdc_field USING 'BDC_CURSOR' “ 화면의 커서위치 'GS_AUFK-ZGAMNG'. “ 수정오더수량PERFORM bdc_field USING 'GS_AUFK-ZMATNR' “ 스타일 'HIBR83510300000'.PERFORM bdc_field USING 'GS_AUFK-BRAND_ID' “ 브랜드 'HI'.PERFORM bdc_field USING 'GS_AUFK-ZSEQNR' “ 생산차수 '01'.PERFORM bdc_field USING 'GS_AUFK-WHEL' “ 생산국가 'KR'.PERFORM bdc_field USING 'GS_AUFK-ZZITEM_H1' “ 아이템 'B4'.PERFORM bdc_field USING 'GS_AUFK-SAISJ' “ 연도 '2008'.PERFORM bdc_field USING 'GS_AUFK-SAISO' “ 시즌 '3'.PERFORM bdc_field USING 'GS_AUFK-SAITY' “ 판매월 '5'.PERFORM bdc_field USING 'GS_AUFK-ZWAERS' “ 통화 'KRW'.PERFORM bdc_field USING 'GS_AUFK-ZPRCEX' “ 예정판매가 ' 39900'.PERFORM bdc_field USING 'GS_AUFK-ZPRCFX' “ 결정판매가 ' 3900'.PERFORM bdc_field USING 'GS_AUFK-ZGAMNG' “ 수정오더수량 ' 1000'.

PERFORM bdc_transaction USING 'CO01'. “ 트랜잭션명 지정

PERFORM close_group.

*& 화면정보를 BDC 테이블에 추가한다.FORM BDC_DYNPRO USING PROGRAM DYNPRO. CLEAR BDCDATA. BDCDATA-PROGRAM = PROGRAM. BDCDATA-DYNPRO = DYNPRO. BDCDATA-DYNBEGIN = 'X'. APPEND BDCDATA.ENDFORM.

*& 필드값을 BDC 테이블에 추가한다.FORM BDC_FIELD USING FNAM FVAL. IF FVAL <> NODATA. CLEAR BDCDATA. BDCDATA-FNAM = FNAM. BDCDATA-FVAL = FVAL. APPEND BDCDATA. ENDIF.ENDFORM.

※ BDC 프로그램 주의사항 -. BDC 에서 모든 필드는 문자필드로 인식한다. 즉, 모든 값을 문자로 변환해서 값을 입력해야 된다.

Page 51: sap-abap.tistory.comsap-abap.tistory.com/attachment/cfile30.uf@17686B444D54... · Web view목 차 Table Create Maintenance Table Create WRITE(REPORT) Create ALV(ABAP LIST VIEW ER)

1. 문자, 일자, 시간, 단위, 통화 등은 값을 그대로 입력해도 된다. 2. 숫자(수량, 정수, 금액) 등은 문자로 변환해서 입력해야 된다. 이때 자릿수 콤마는 없앤다.(NO-GROUPING 옵션이용) 3. 화면의 숫자필드의 자릿수를 넘지 않게 문자필드를 선언한다. 화면의 전체 자릿수가 17 자리이면 17 자리 이하의 문자필드로 선언한다.

-. 문자필드 중 앞에 ‘0’을 포함하는 경우 ‘CONVERSION_EXIT_ALPHA_INPUT’ 펑션을 이용하여

앞에 ‘0’을 추가한 후 입력한다. 단, 화면에 이미 Conversion Exit 이 설정되어 있으면 별도의 변경과정이 필요치 않다.

-. BDC 처리 옵션(구조체 : ctu_params) 지정시 주의사항 1. DISMODE : 디버깅 없이 일괄 실행시는 ‘N’ 모드로, 오류가 있을 경우 디버깅 모드로

실행시 는 ‘E’ 모드로, 무조건 디버깅 모드로 실행시는 ‘A’ 모드로 한다. 2. DEFSIZE : 항상 선택을 한다. 컴퓨터의 해상도에 관계없이 같은 라인을 화면에 조회한다. 만약 선택을 하지 않을 경우 해상도에 따라서 화면에 조회되는 라인수가 달라 BDC 프로그램이 제대로 작동하지 않는다. 3. NOBINPT : 특정 Standard 프로그램에는 Background 인 경우 DB 에 반영하는

로직을 실행 하지 못하도록 코딩이 되어 있는 경우가 있기 때문에, 선택하지 않고 실행시 DB 에 반영되지 않을 경우 선택하여 테스트를 해본다.

2-3. 소요량 관리 (SAPMZPPM1070) 에서 생산오더를 생성하는 실제프로그램 . *&---------------------------------------------------------------------**& Form bdc_create_prodord*&---------------------------------------------------------------------**& 생산오더를 생성한다.*&---------------------------------------------------------------------*FORM bdc_create_prodord. DATA: lv_mssg1 TYPE char80, lv_mssg2 TYPE char80, lv_gltrp TYPE sy-datum, lv_gamng TYPE char17, lv_zgamng TYPE char17, lv_zprcrr TYPE char21, lv_zprcex TYPE char21.

CLEAR: gt_bdcdata[], gt_messtab[], lv_mssg1, lv_mssg2, lv_gltrp.

Page 52: sap-abap.tistory.comsap-abap.tistory.com/attachment/cfile30.uf@17686B444D54... · Web view목 차 Table Create Maintenance Table Create WRITE(REPORT) Create ALV(ABAP LIST VIEW ER)

*& 입고요청일이 과거일자면 생산오더 종료일자를 현재일자로 IF gs_head-zreqdat < sy-datum. lv_gltrp = sy-datum. ELSE. lv_gltrp = gs_head-zreqdat. ENDIF.

WRITE: gs_head-zplnqty TO lv_gamng NO-GROUPING, " 기획수량 gs_head-zgamng TO lv_zgamng NO-GROUPING, " 수정오더수량 gs_head-zprcrr TO lv_zprcrr NO-GROUPING " 사사전원가 CURRENCY gs_head-zwaers, gs_head-zprcex TO lv_zprcex NO-GROUPING " 예판가 CURRENCY gs_head-zwaers.

PERFORM bdc_dynpro USING 'SAPLCOKO1' '0100'. PERFORM bdc_field USING: 'CAUFVD-MATNR' gs_head-matnr, 'CAUFVD-WERKS' gs_head-werks.

*& 생산플랜트와 입고플랜트가 틀리면... IF sy-mandt <> '300'. IF gs_0001t-werks <> gs_0001t-werksgr. PERFORM bdc_field USING: 'AFPOD-PWERK' gs_0001t-werksgr. ENDIF. ENDIF.

PERFORM bdc_field USING: 'AUFPAR-PP_AUFART' gc_auart_zp01, 'CAUFVD-AUFNR' gs_head-zaufnr, 'BDC_OKCODE' '/00'.

PERFORM bdc_dynpro USING 'SAPLCOKO1' '0115'. “ 일반탭 PERFORM bdc_field USING: 'CAUFVD-GAMNG' lv_gamng, 'CAUFVD-GLTRP' " 계획종료일 lv_gltrp, 'BDC_OKCODE' “ 지정탭 '=KOAL'.

PERFORM bdc_dynpro USING 'SAPLCOKO1' '0115'. “ 지정탭 PERFORM bdc_field USING: 'CAUFVD-DISPO' gs_head-dispo, 'BDC_OKCODE' '=KOWE'. “ 입고탭

PERFORM bdc_dynpro USING 'SAPLCOKO1' '0115'. “ 입고탭 PERFORM bdc_field USING: 'AFPOD-LGORT' " 창고 gs_head-lgort, 'BDC_OKCODE' '=+COI'. “ 추가정보 탭

Page 53: sap-abap.tistory.comsap-abap.tistory.com/attachment/cfile30.uf@17686B444D54... · Web view목 차 Table Create Maintenance Table Create WRITE(REPORT) Create ALV(ABAP LIST VIEW ER)

PERFORM bdc_dynpro USING 'SAPLCOKO1' '0115'. “ 추가정보 탭 PERFORM bdc_field USING: 'GS_AUFK-ZMATNR' gs_head-matnr, 'GS_AUFK-BRAND_ID' " 브랜드 gs_head-zbrand, 'GS_AUFK-ZSEQNR' " 생산차수 gs_head-zseqnr, 'GS_AUFK-WHEL' " 국가 gs_head-whel, 'GS_AUFK-ZZITEM_H1' " 중분류 gs_head-zitems, 'GS_AUFK-ZZITEM_CD' " 소분류 gs_head-zitemc, 'GS_AUFK-SAISJ' " 년도 gs_head-saisj, 'GS_AUFK-SAISO' " 월 gs_head-saiso, 'GS_AUFK-ZPROD_STATUS' “ 오더상태 '10', 'GS_AUFK-ZPRCRR' " 사사전원가 lv_zprcrr, 'GS_AUFK-ZPRCEX' " 예상판매가 lv_zprcex, 'GS_AUFK-SAITY' " 계획월 gs_head-saity, 'GS_AUFK-ZGAMNG' lv_zgamng, 'GS_AUFK-ZWAERS' " 통화 gs_head-zwaers, 'BDC_OKCODE' '=BU'.

PERFORM bdc_transaction USING 'CO01'.

*& 처리결과를 읽는다. PERFORM edit_error_message USING lv_mssg1 lv_mssg2.

CLEAR: gs_result.

IF lv_mssg1 IS NOT INITIAL. gs_result-etype = 'E'. gs_result-jobnm = '생산오더'. gs_result-werks = gs_head-werks. gs_result-aufnr = gs_head-zaufnr. CONCATENATE lv_mssg1 lv_mssg2 INTO gs_result-message. APPEND gs_result TO gt_result.

gv_errflag = 'PRDERR'. gv_prderr = 'ERROR'. ELSE.*& 처리결과를 옮긴다.

Page 54: sap-abap.tistory.comsap-abap.tistory.com/attachment/cfile30.uf@17686B444D54... · Web view목 차 Table Create Maintenance Table Create WRITE(REPORT) Create ALV(ABAP LIST VIEW ER)

gs_result-etype = 'S'. gs_result-jobnm = '생산오더'. gs_result-werks = gs_head-werks. gs_result-aufnr = gs_head-zaufnr. gs_result-message = text-m03. APPEND gs_result TO gt_result.

gs_head-aufnr = gs_head-zaufnr. ENDIF.ENDFORM. " bdc_create_prodord

Function

※ 펑션은 Module pool 과 Report 와 같은 프로그램의 한 종류이다. - Function Pool 이라고 한다.

- Function Pool(프로그램)명은 ‘SAPL’ + 펑션그룹명으로 생선된다.(예: SAPLCO01)- 화면(Screen)과 트랜잭션을 생성할 수 있다.- 공통적으로 사용되는 프로세스를 프로그램 마다 코딩하지 않고 펑션모듈로 만들어서 호출하여

사용할 때 주로 사용된다.

Page 55: sap-abap.tistory.comsap-abap.tistory.com/attachment/cfile30.uf@17686B444D54... · Web view목 차 Table Create Maintenance Table Create WRITE(REPORT) Create ALV(ABAP LIST VIEW ER)

- 아래 예제 프로그램의 메인 프로그램을 보여준 것이다.- 프로그램명은 ‘SAPL’ + ‘ZTEST_FUNC_GROUP’(펑션그룹명)이다.

- SE37 트랜잭션을 실행한다.1. 펑션그룹 생성

1-1. 평션그룹을 생성한다.

Page 56: sap-abap.tistory.comsap-abap.tistory.com/attachment/cfile30.uf@17686B444D54... · Web view목 차 Table Create Maintenance Table Create WRITE(REPORT) Create ALV(ABAP LIST VIEW ER)

- SE37=>Goto=>Function Groups=>Create Group 를 이용하여 펑션그룹 생성한다.

- 저장하면 개발클래스 입력화면이 조회된다.

- 개발클래스에 ‘$TMP’를 입력 후 저장을 누르거나 ‘로컬오브젝트’ 버튼을 이용하여 Request 없이 펑션그룹을 생성한다.

2. 펑션모듈 생성

Page 57: sap-abap.tistory.comsap-abap.tistory.com/attachment/cfile30.uf@17686B444D54... · Web view목 차 Table Create Maintenance Table Create WRITE(REPORT) Create ALV(ABAP LIST VIEW ER)

- 생성할 펑션모듈명(즉, 프로그램)을 입력하고 생성버튼을 선택한다.

- 펑션그룹과 펑션모듈명을 입력하고 저장한다.

- 펑션에서 넘겨받을 변수 및 구조체를 지정한다.

- 펑션모듈 실행 후 넘겨줄 변수 및 구조체를 지정한다.

Page 58: sap-abap.tistory.comsap-abap.tistory.com/attachment/cfile30.uf@17686B444D54... · Web view목 차 Table Create Maintenance Table Create WRITE(REPORT) Create ALV(ABAP LIST VIEW ER)

- Table 등에서 자료를 읽거나 결과 데이터를 가공하는 로직을 코등한다. ABAP 프로그램 코딩과 동일하다.

- 전역변수를 선언한다.

Page 59: sap-abap.tistory.comsap-abap.tistory.com/attachment/cfile30.uf@17686B444D54... · Web view목 차 Table Create Maintenance Table Create WRITE(REPORT) Create ALV(ABAP LIST VIEW ER)

-펑션모듈에서 사용할 변수를 선언한다.

3. 펑션모듈에서 꼭 알아두어야 할 사항들3-1. Normal Function Module

- Processing Type 을 ‘Normal Function Module’로 지정하면, 동일 서버상에서 펑션을 사용할 경우 지정하면 된다.

Page 60: sap-abap.tistory.comsap-abap.tistory.com/attachment/cfile30.uf@17686B444D54... · Web view목 차 Table Create Maintenance Table Create WRITE(REPORT) Create ALV(ABAP LIST VIEW ER)

- 실행시 Target System 을 입력할 필요가 없다.

3-2. Remote Function Module

- 타기종 시스템이나 다른 SAP 서버에서 호출하여 사용가능 하도록 할 때 사용한다.

Page 61: sap-abap.tistory.comsap-abap.tistory.com/attachment/cfile30.uf@17686B444D54... · Web view목 차 Table Create Maintenance Table Create WRITE(REPORT) Create ALV(ABAP LIST VIEW ER)

- Target 시스템의 목적지(Destination)을 입력하여 타기종 시스템이나 다른 Sap 에서 호출 실행 가능하다.

- 같은 서버에서 실행할 경우 목적지에 ‘NONE’를 입력한다. 즉, Normal Function 과 같이 실행된다. - Target System 의 목적지는 트랜잭션 ‘SM59’에서 관리한다.(Table : RFCDES)

3-3. IMPORTING/EXPORTING Parameter 의 Global/Local 선언

- 전역 파라메터로 선언을 하게 되면 펑션모듈 밖의 Form 문에서도 사용이 가능하다. 전역 파라메터로 선언하면 같은 펑션그룹에서 같은 이름의 Import/Export 파라메터를 다시

선언이 불가능하다.- 지역 파라메터로 선언을 하게 되면 펑션모듈 안에서만 사용이가능 하다.- ‘Pass’여부를 체크하면 펑션모듈내에서 파라메터 값을 변경가능 하고, 체크하지 않으면 파라메터

값을 변경할 수 없다.

Page 62: sap-abap.tistory.comsap-abap.tistory.com/attachment/cfile30.uf@17686B444D54... · Web view목 차 Table Create Maintenance Table Create WRITE(REPORT) Create ALV(ABAP LIST VIEW ER)

4. 신규 생산 오더번호 채번 펑션 예제

FUNCTION ZPPTEST_FUNCTION_CREATE.*"----------------------------------------------------------------------*"*"Local interface:*" IMPORTING*" VALUE(I_MATNR) TYPE ZEPP_STYLE*" VALUE(I_ZSEQNR) TYPE ZEPP_DEGREE*" EXPORTING*" VALUE(E_AUFNR) TYPE AUFNR*" EXCEPTIONS*" NO_MATNR*" TOO_LONG_MATNR*" INVALID_ZSEQNR*"----------------------------------------------------------------------

*& 스타일이 입력되지 않았으면 IF i_matnr IS INITIAL. RAISE no_matnr. EXIT. ENDIF.

*& 생산차수가 입력되지 않았으면 IF i_zseqnr IS INITIAL. i_zseqnr = '00'. ENDIF.

*& 생산오더 번호를 가공한다. CLEAR: e_aufnr, gv_matnr, gv_posnr, gv_chr1, gv_chr2, gv_idx.

CALL FUNCTION 'CONVERSION_EXIT_STYLE_OUTPUT' EXPORTING input = i_matnr IMPORTING output = gv_matnr.

gv_leng = STRLEN( gv_matnr ).

IF gv_leng < 10. e_aufnr = gv_matnr.

gv_idx = 10 - gv_leng.

*& 10 자리 미만은 10 자리까지 '0'을 채운다. DO gv_idx TIMES. CONCATENATE e_aufnr '0' INTO e_aufnr. ENDDO.

CONCATENATE e_aufnr i_zseqnr INTO e_aufnr.

Page 63: sap-abap.tistory.comsap-abap.tistory.com/attachment/cfile30.uf@17686B444D54... · Web view목 차 Table Create Maintenance Table Create WRITE(REPORT) Create ALV(ABAP LIST VIEW ER)

ELSEIF gv_leng = 10. CONCATENATE gv_matnr i_zseqnr INTO e_aufnr. ELSEIF gv_leng = 11. IF i_zseqnr > 9. RAISE invalid_zseqnr. ELSE. gv_chr1 = gc_numeric+i_zseqnr(1).

CONCATENATE gv_matnr gv_chr1 INTO e_aufnr. ENDIF. ELSEIF gv_leng = 12. e_aufnr = gv_matnr. ELSE. RAISE too_long_matnr. ENDIF.ENDFUNCTION.