솔직히 BDC의 개념이 어렵습니다.
BDC의 개념과 WRITE해서 데이터를 옮기는 개념과 아리송 합니다.
일단. 저의 질문은
FUNCTION ZIT0015_TRFER.
*"----------------------------------------------------------------------
*"*"Local interface:
*" IMPORTING
*" VALUE(PERNR) LIKE PA0015-PERNR
*" VALUE(BEGDA) LIKE PA0015-BEGDA
*" VALUE(LGART) LIKE PA0015-LGART OPTIONAL
*" VALUE(BETRG) LIKE PA0008-FALGK OPTIONAL
*" VALUE(ANZHL) LIKE PA0015-SUBTY OPTIONAL
*" EXPORTING
*" REFERENCE(MSGTY) LIKE SY-MSGTY
*" REFERENCE(MSGTXT)
*"----------------------------------------------------------------------
CLEAR : gt_bdc,gt_bdc[].
PERFORM make_bdc_data USING :
'X' 'SAPMP50A' '1000',
' ' 'BDC_OKCODE' '=INS',
' ' 'RP50G-PERNR' PERNR,
' ' 'RP50G-TIMR6' 'X',
' ' 'RP50G-CHOIC' '0015',
' ' 'RP50G-SUBTY' LGART,
'X' 'MP001500' '2000',
' ' 'BDC_OKCODE' '=UPD',
' ' 'P0015-LGART' LGART,
' ' 'Q0015-BETRG' BETRG,
' ' 'P0015-ANZHL' ANZHL,
' ' 'P0015-BEGDA' BEGDA.
CALL TRANSACTION 'PA30' USING gt_bdc
MODE g_bmode
UPDATE 'S'
MESSAGES INTO gt_mes.
IF sy-subrc <> 0.
msgty = 'E'.
CALL FUNCTION 'MESSAGE_TEXT_BUILD'
EXPORTING
msgid = sy-msgid
msgnr = sy-msgno
msgv1 = sy-msgv1
msgv2 = sy-msgv2
msgv3 = sy-msgv3
msgv4 = sy-msgv4
IMPORTING
message_text_output = MSGTXT.
ELSE.
msgty = sy-msgty.
ENDIF.
ENDFUNCTION.
RECORDING한 데이터를 INSERT하는 FUNCTION입니다. 저의 임무는
이놈을 삭제하는 FUNCTION으로 바꾸라고 합니다. 간단하게
빨간색 글만 손대면 된다고 하시는데 배우는 입장이라..잘 모르겠습니다.
그리고 이 소스에 대해 주석을 좀 달아 주시면 감사하겠습니다.
누구의 도움없이 혼자 배우기는 어려운 LANGUAGE입니다.
댓글 10
-
bd
2008.05.27 21:39
-
SD2
2008.05.27 22:17
bd님 감사합니다. 이해가 쏙쏙!!
bdc_okcode에 ins라고 들어가면 insert인가여? bdc_okcode의 역할을 알고 싶습니다.
그러면 =ins를 어떻게 바꾸면 삭제하는 프로그램이 되는건가여???
-
좋아
2008.05.27 22:34
빨간색 부분이 bdc를 딴거 같은데요(데이터를 INSERT하는 bdc요)
bdc insert따는 거처럼 delete도 따면 저런부분이 나옴니다.. 티코드는 (shdb) 이거구요..^^
-
SD2
2008.05.27 22:45
저두 잘 모르겠지만은요!!
저빨간색부분은 bdc를 딴게 아니라 insert하는 function이라고 들었습니다.. 아닌가요?
그러면 delete하는 부분은 shdb에서 어떻게 만드나요?
이해가 좀 잘 안가서요
-
모모
2008.05.27 22:56
HR 컨설턴트에게 해당 인포타입(15번) delete 하는 BDC recording 떠달라고 하셔서 작업하세요.
실제 recoding된 코드를 기존 코드와 비교해보시면, 금방 이해가 되실 겁니다.
-
페리
2008.05.27 23:16
PERFORM make_bdc_data USING :
'X' 'SAPMP50A' '1000',
' ' 'BDC_OKCODE' '=INS', <--- 이부분을 '=DELE' 로 바꿔보세요.
' ' 'RP50G-PERNR' PERNR,
' ' 'RP50G-TIMR6' 'X',
' ' 'RP50G-CHOIC' '0015',
' ' 'RP50G-SUBTY' LGART,
=INS 라면 먼지는 모르지만 생성한다는 뜻인데요,
삭제 하실려면 =DELE 로 하시면 될듯하네요.
레코드 뜨실때 삭제버튼이 어떻게 나오는지 모르겠지만요 ㅎㅎ
-
bd
2008.05.27 23:18
관련 프로그램 TCODE를 코맨드 창에 입력하신후에
/H <- 입력후에
삭제 버튼을 누르신 후 디버깅 창에서 SY-UCOMM <- 입력해보시면
DEL 관련 TCODE를 볼수 있을듯 하내용 ^^
-
SD2
2008.05.27 23:24
레코딩 뜨는 법을 배워서 후에 작업을 하였습니다.
답변 감사합니다.
-
mean
2008.05.27 23:50
해결하셨네요.
레코딩 부분에서 SAPMP50A 부분은 PA30의 메인화면의 프로그램명이구요
그옆에 1000은 스크린번호 이름입니다.
bdc_okcode는 '=INS'이면 INSERT의 약자이구요. '=DEL'이면 DELETE입니다.
MP001500은 인포타입 0015의 스탠다드프로그램명이구요.
'=UPD'는 저장입니다.
보아하니 PA30에서 인포타입 0015번에 데이터 업로드하는 BDC시군요.
레코딩뜨셔서 해결하셨네요.
도움이 될까 조금 더 적어보았습니다.
-
SD2
2008.05.28 20:46
정말 감사합니다.
bdc프로그램이 헷갈렸었어요!!
답변주신 분들 고맙습니다. ^^
완벽하게 모르는 터라 흐름정도만 주석 달아 볼께요 ^^
'X' 'SAPMP50A' '1000', TCODE가 실행되었을때 화면번호
' ' 'BDC_OKCODE' '=INS', =INS 라는 OK_CODE값 (클릭시 동작)
' ' 'RP50G-PERNR' PERNR, 필드 또는 CHECK
' ' 'RP50G-TIMR6' 'X', 필드 또는 CHECK
' ' 'RP50G-CHOIC' '0015', 필드 또는 CHECK
' ' 'RP50G-SUBTY' LGART, 필드 또는 CHECK
'X' 'MP001500' '2000',
' ' 'BDC_OKCODE' '=UPD',
' ' 'P0015-LGART' LGART,
' ' 'Q0015-BETRG' BETRG,
' ' 'P0015-ANZHL' ANZHL,
' ' 'P0015-BEGDA' BEGDA.
빠른 배치를 이용해서 코딩한것 같은대요.
코맨드 입력 창에 SAPMP50A 라는 TCODE 를 실행시켜 보시면
관련된 화면이 나오지 않을까 하는 생각이 드네요
메뉴 )시스템 -> 서비스 -> 빠른배치입력 -> 리코더
로 가보신후 관련 TCODE 실행 해보셔서 연습하면서 찾아보세요 ^^
추측 하건데
'X' 'SAPMP50A' '1000', TCODE가 실행되었을때 화면번호
' ' 'BDC_OKCODE' '=INS', =INS 라는 OK_CODE값 (클릭시 동작)
' ' 'RP50G-PERNR' PERNR, 필드 또는 CHECK
' ' 'RP50G-TIMR6' 'X', 필드 또는 CHECK
' ' 'RP50G-CHOIC' '0015', 필드 또는 CHECK
' ' 'RP50G-SUBTY' LGART, 필드 또는 CHECK
은 PERNR , TIMR6 , CHOIC , SUBTY 라는 필드 또는 CHECK 박스에
값을 넣은후 INSERT(=INS) 하는 코딩 같내요 ^^
혼란이 오지 않을까 걱정되내요 ^^ 화이링.