Professional Documents
Culture Documents
BDC Programming Bywono77
BDC Programming Bywono77
정리 by wono77. 2005.09.02금요일
우리가 만들고자 하는 화면 :
1단계
Transaction Recording
2단계
BDC Source 생성
3단계
Input File Layout 정의 BDC Source 수정
원시DATA작성 (Excel)
Text File로 변환
4단계
BDC 실행
DBMS
2. 단계별 설명
*&------------------------------------------------------------
*& Report ZBDC_AGAIN_WONO77 *
*& *
*&-----------------------------------------------------------*
REPORT zbdc_again_wono77 .
*-----------------------------------------------------------*
* GLOBAL VALIABLE
*------------------------------------------------------------*
***
DATA: BEGIN OF it_record OCCURS 0,
* data element: LIF16
lifnr(016),
* data element: KTOKK
ktokk(004),
* data element: NAME1_GP
name1(035),
* data element: SORTL
sortl(010),
* data element: LAND1_GP
land1(003),
END OF it_record.
***
*두번째
PERFORM bdc_dynpro USING 'SAPMF02K' '0110'.
PERFORM bdc_field USING 'BDC_CURSOR'
'LFA1-LAND1'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=UPDA'.
PERFORM bdc_field USING 'LFA1-NAME1'
it_record-name1.
PERFORM bdc_field USING 'LFA1-SORTL'
it_record-sortl.
PERFORM bdc_field USING 'LFA1-LAND1'
it_record-land1.
*------------------------------------------------------------*
* Selection-Screen
*------------------------------------------------------------*
*------------------------------------------------------------*
* at Selection-Screen output
*------------------------------------------------------------*
AT SELECTION-SCREEN OUTPUT.
LOOP AT SCREEN.
IF screen-name = 'PA_ERFIL'. "패쓰_에러파일
screen-input = 0.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
*------------------------------------------------------------*
* at Selection-Screen Value-Request
*------------------------------------------------------------*
INCLUDE zbdc_again_wono77_fun.
*&-----------------------------------------------------------*
*& Form get_file_f4_help
*&-----------------------------------------------------------*
FORM get_file_f4_help USING pa_infile
gv_value1
pa_bmode.
***************************************************************
*
* 함수 : Function 'WS_FILENAME_GET'
* 설명 : Call File Selector
** 예제 : CALL FUNCTION 'WS_FILENAME_GET'
* EXPORTING
* DEF_FILENAME = EFN
* DEF_PATH = '/'
* MASK = ',*.*,*.*.'
* MODE = 'O'
* TITLE = 'Get filename'
* IMPORTING
* FILENAME = EFN
** rc =
* EXCEPTIONS
* INV_WINSYS = 01
* NO_BATCH = 02
* SELECTION_CANCEL = 03
* SELECTION_ERROR = 04.
*
***************************************************************
IF pa_bmode = 'O'.
pa_infil = lv_pa.
ELSEIF pa_bmode = 'S'.
pa_erfil = lv_pa.
ENDIF.
gv_fullname = lv_pa.
* EXCEPTIONS
* X_ERROR =1
* OTHERS =2
ENDIF.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
*&-----------------------------------------------------------*
*& Form bdc_dynpro
*&-----------------------------------------------------------*
* Start New Screen
*------------------------------------------------------------*
* -->P_0035 text
* -->P_0036 text
*------------------------------------------------------------*
FORM bdc_dynpro USING program dynpro.
CLEAR bdc_tab.
bdc_tab-program = program.
bdc_tab-dynpro = dynpro.
bdc_tab-dynbegin = 'X'.
APPEND bdc_tab.
*&-----------------------------------------------------------*
*& Form bdc_field
*&-----------------------------------------------------------*
* text
*------------------------------------------------------------*
* -->FNAM FIELD NAME
* -->FVAL FIELD VALUE
*------------------------------------------------------------*
FORM bdc_field USING fnam
fval.
report ZBDC2_WONO77
no standard page heading line-size 255.
include bdcrecx1.
start-of-selection.
do.
enddo.
perform close_group.
perform close_dataset using dataset.
*두번째 화면
PERFORM bdc_dynpro USING 'SAPMF02K' '0110'.
PERFORM bdc_field USING 'BDC_CURSOR'
'LFA1-LAND1'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=UPDA'.
PERFORM bdc_field USING 'LFA1-NAME1'
it_record-name1.
PERFORM bdc_field USING 'LFA1-SORTL'
it_record-sortl.
PERFORM bdc_field USING 'LFA1-LAND1'
it_record-land1.
CLEAR bdc_tab.
bdc_tab-program = program.
bdc_tab-dynpro = dynpro.
bdc_tab-dynbegin = 'X'.
APPEND bdc_tab.
*&-----------------------------------------------------------*
*& Form bdc_field
*&-----------------------------------------------------------*
* text
*------------------------------------------------------------*
* -->FNAM : FIELD NAME
* -->FVAL : FIELD VALUE
*------------------------------------------------------------*
FORM bdc_field USING fnam
fval.
*------------------------------------------------------------*
*GLOBALVALIABLE
*------------------------------------------------------------*
*------------------------------------------------------------*
* Selection-Screen
*------------------------------------------------------------*
Pa_bmode는 bdc ,mode로 CALL Transaction을 사용하는 BDC의 속성을 나타낸다. BDC에
는 Batch Input Session을 사용하는 방법과 CALL Transaction을 사용하는 2가지 방법이 있
다. (성안당 책 P266)
6) 화면에서 에러시 저장하는 필드를 잠그고, 파일열기, 에러파일 저장시에 해당하는 함수를 호
출한다.
*------------------------------------------------------------*
* at Selection-Screen output
*------------------------------------------------------------*
AT SELECTION-SCREEN OUTPUT.
LOOP AT SCREEN.
IF screen-name = 'PA_ERFIL'. "패쓰_에러파일
screen-input = 0.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
*------------------------------------------------------------*
* at Selection-Screen Value-Request
*------------------------------------------------------------*
INCLUDE zbdc_again_wono77_fun.
*&-----------------------------------------------------------*
*& Form get_file_f4_help
*&-----------------------------------------------------------*
* text
*-----------------------------------------------------------*
* -->P_GV_FILE text
* -->P_GV_VALUE1 text
* -->P_PA_BMODE text
*------------------------------------------------------------*
FORM get_file_f4_help USING pa_infile
gv_value1
pa_bmode.
***************************************************************
*
* 함수 : Function 'WS_FILENAME_GET'
* 설명 : Call File Selector
** 예제 : CALL FUNCTION 'WS_FILENAME_GET'
* EXPORTING
* DEF_FILENAME = EFN
* DEF_PATH = '/'
* MASK = ',*.*,*.*.'
* MODE = 'O'
* TITLE = 'Get filename'
* IMPORTING
* FILENAME = EFN
** rc =
* EXCEPTIONS
* INV_WINSYS = 01
* NO_BATCH = 02
* SELECTION_CANCEL = 03
* SELECTION_ERROR = 04.
*
***************************************************************
IF pa_bmode = 'O'.
pa_infil = lv_pa.
ELSEIF pa_bmode = 'S'.
pa_erfil = lv_pa.
ENDIF.
gv_fullname = lv_pa.
* EXCEPTIONS
* X_ERROR =1
* OTHERS =2
ENDIF.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.