안녕하세요.
ABAP 개발중에 질문사항이 있어서 글을 남깁니다.
CCA 대량전표업로드를 하는 ABAP개발 프로그램이있었습니다. (엑셀이용)
올리는 항목은 '이전 코스트센터', '신규 코스트센터', '계정번호', 'PA 세그먼트', '금액'이었습니다.
현업의 요청에 의해 적요(전표헤더)를 추가하여 올려달라고 하여, BDC구문에서 몇군데를 수정하였더니,
실행이 되었습니다. 하지만.. 시간이 지나자 에러가 발생하였는데 에러의 구문은
"화면에 커서필드 RK23F-SKOSTL.는(은) 없습니다." 입니다.
이럴 경우, 데이터는 올라가지만 해당항목의 적요란은 적용되지 않습니다.
원본 BDC를 가서 살펴보고 싶었지만 SHDB에는 해당 기록이 없는 것으로 판단되며, 현업에서는
ABAP개발 프로그램만 사용하여 스탠다드 메뉴(KB11N)을 사용할지 모른다고 합니다.
현재 올려야 할 항목은 '이전 코스트센터', '신규 코스트센터', '계정번호', 'PA 세그먼트', '금액','전표헤더(적요)'입니다.
실제로 제가 KB11N에 가서 실행하고 싶었지만.. 메뉴선택(화면변형, 입력유형등)을 어떤것을 해야할지 모르겠어서 답답한 마음에
CO고수님들의 도움을 받고자 합니다.
아래는 ABAP코드 중 BDC의 전문입니다.
-------------------------------------------------------관리회계 영역설정------------------------------------------------
FORM make_bdc_init_data .
*...
PERFORM dynpro USING : 'X' 'SAPLSPO4' '0300',
' ' 'SVALD-VALUE(01)' p_kokrs,
' ' 'BDC_OKCODE' '=FURT'.
ENDFORM. " MAKE_BDC_DATA
----------------------------------------------------------------------------------------------------------------------------------
----------------------------------------------------본문-----------------------------------------------------------------------
// okostl : 이전코스트센터, nkostl : 신규코스트센터, kstar : 원가계정, lv_amt: 금액, seg:pa세그먼트, sgtxt:적요(전표헤더)
//선언문
PERFORM make_bdc_body_data USING gt_run_bdc-okostl
gt_run_bdc-nkostl
gt_run_bdc-kstar
lv_amt
gt_run_bdc-seg
gt_run_bdc-sgtxt.
//실행문
PERFORM dynpro USING : 'X' 'SAPLK23F1' '1200',
' ' 'COHEADER-SEND_REC_REL' '01SAP',
' ' 'RK23F-STATUS' 'S',
' ' 'BDC_OKCODE' '/00'.
PERFORM dynpro USING : 'X' 'SAPLK23F1' '1200',
' ' 'COHEADER-SEND_REC_REL' '01SAP',
' ' 'RK23F-STATUS' 'S',
' ' 'COHEADER-BLDAT' p_date,
' ' 'COHEADER-BUDAT' p_date,
' ' 'RK23F-SKOSTL' p_okostl,
' ' 'RK23F-KSTAR' p_kstar,
' ' 'RK23F-EKOSTL' p_nkostl,
' ' 'RK23F-WTGBTR' p_amt,
' ' 'RK23F-SGTXT' p_sgtxt,
' ' 'BDC_CURSOR' 'RK23F-SKOSTL',
' ' 'BDC_OKCODE' '=SPAO'.
PERFORM dynpro USING : 'X' 'SAPLKEAK' '0300',
' ' 'RKEAK-FIELD(01)' p_seg,
' ' 'RKEAK-FIELD(07)' '1000',
' ' 'RKEAK-FIELD(07)' '1000',
' ' 'BDC_OKCODE' '=WEIT'.
PERFORM dynpro USING : 'X' 'SAPLK23F1' '1200',
' ' 'COHEADER-SEND_REC_REL' '01SAP',
' ' 'RK23F-STATUS' 'S',
' ' 'COHEADER-BLDAT' p_date,
' ' 'COHEADER-BUDAT' p_date,
' ' 'RK23F-SKOSTL' p_okostl,
' ' 'RK23F-KSTAR' p_kstar,
' ' 'RK23F-EKOSTL' p_nkostl,
' ' 'RK23F-WTGBTR' p_amt,
' ' 'RK23F-SGTXT' p_sgtxt,
' ' 'BDC_CURSOR' 'RK23F-KSTAR',
' ' 'BDC_OKCODE' '=PAOB'.
PERFORM dynpro USING : 'X' 'SAPLKEAK' '0300',
' ' 'RKEAK-FIELD(01)' p_seg,
' ' 'RKEAK-FIELD(07)' '1000',
' ' 'BDC_OKCODE' '=WEIT'.
PERFORM dynpro USING : 'X' 'SAPLK23F1' '1200',
' ' 'BDC_OKCODE' '/00'.
------------------------------------------------------------------------------------------------------------------------------------------------
//추가 BDC문
PERFORM dynpro USING : 'X' 'SAPLK23F1' '1200',
' ' 'BDC_OKCODE' '=POST'.
CALL TRANSACTION 'KB11N' USING it_bdc
MODE bdc_mode
UPDATE 'S'
MESSAGES INTO it_mess.
------------------------------------------------------------------------------------------------------------------------------------------
BDC 프로그램을 'A'mode로 실행해서
어디서 에러가 나는지 찾으면 되지 않나요?