[SeSAC] BDC 프로그램: 대량 데이터 업로드

j_wisdom_h·2026년 2월 27일

포트폴리오

목록 보기
5/6

1. Excel 업로드 파일 선택

파일선택 클릭시 > file open dialog

2. Excel Upload 내역확인

엑셀업로드 내역확인

실제 엑셀파일의 데이터

3. 고객등록 (BDC)

3-1. BDC 실행 스닛핏

 
  PERFORM set_bdc_options.
  
  PERFORM bdc_data USING: 'X' 'SAPMZSP1020' '0100',
                          '' 'BDC_CURSOR' 'ZSSP1020-CUSTID_L',
                          '' 'BDC_OKCODE' '=INSERT'.

  LOOP AT gt_data INTO gs_data.
    PERFORM bdc_data USING: 'X' 'SAPMZSP1020' '0200',
                            '' 'ZSSP1021-CNAME' gs_data-cname,
                            '' 'ZSSP1021-PHONE' gs_data-phone,
                            '' 'ZSSP1021-EMAIL' gs_data-email,
                            '' 'ZSSP1021-POSTCD' gs_data-postcd,
                            '' 'ZSSP1021-ADDRS' gs_data-addrs,
                            '' 'BDC_OKCODE' '=ADD'.
    CLEAR gs_data.
  ENDLOOP.
 CALL TRANSACTION 'ZSP1020' **USING gt_bdc** **OPTIONS FROM gs_opt MESSAGES INTO gt_bdcmsg.**
FORM set_bdc_options .
  gs_opt-dismode  = 'N'.
  gs_opt-updmode  = 'S'.
  **gs_opt-racommit = 'X'.**
ENDFORM.
  • racommit 속성을 사용해 insert에서 commit work를 만났을때 transaction이 종료되는 문제. (해결) racommit = ‘X’이면 commit work를 만나도 transaction이 종료되지 않음.
  • gt_bdcmsg을 사용하여 에러메세지 처리
        PERFORM get_msg_text USING ls_msg-msgid ls_msg-msgnr
                             ls_msg-msgv1 ls_msg-msgv2 ls_msg-msgv3 ls_msg-msgv4
                       CHANGING lv_msg_text. 
        ... 
        
        IF ls_msg-msgtyp EQ 'A' OR ls_msg-msgtyp EQ 'E'.
          gs_data-light = 1.
          gs_data-msg = |[실패] { lv_msg_text }|.
        ELSE.
          IF ls_msg-msgid EQ 'ZSPMSG' AND ls_msg-msgnr EQ '035'.
            gs_data-light = 3.
          ELSE.
            gs_data-light = 1.
            gs_data-msg = |[실패] { lv_msg_text }|.
          ENDIF.
        ENDIF.

3-2. BDC 실행결과

BDC 실행결과 - 상태 및 에러메세지

실행 실패시, 에러메시지 표출됩니다.

BDC 실행결과 레코드가 신규 등록되는것 확인할 수 있습니다.

profile
안녕하세요! j_wisdom_h의 개발기록 블로그입니다.

0개의 댓글