BDC 레코드 및 활용 소스





녹음하고 싶은 위치로 달려갔다가 돌아오세요.


위와 같이 녹음이 완료됩니다.

위 데이터셋을 기반으로 소스코드를 작성합니다.

  DATA : bdcdata    TYPE TABLE OF bdcdata,
       gs_bdcdata TYPE bdcdata,
       messtab    TYPE TABLE OF bdcmsgcoll,
       gs_messtab TYPE bdcmsgcoll.

DATA: g_bdcopt       LIKE ctu_params,
      g_message(100).
  REFRESH:  bdcdata,  messtab.
  CLEAR  :  bdcdata,  messtab, gs_bdcdata, gs_messtab.

  PERFORM bdc_dynpro  USING   'SAPMV45A'        '0101' .
  PERFORM bdc_field   USING:  'BDC_OKCODE'      '=COPY' ,
                              'VBAK-AUART'   'ZRJ',
                              'VBAK-VKORG'   '',
                              'VBAK-VTWEG'   '',
                              'VBAK-SPART'   '',
                              'VBAK-VKBUR'   '',
                              'VBAK-VKGRP'   ''
  .

  PERFORM bdc_dynpro  USING   'SAPLV45C'        '0100' .
  PERFORM bdc_field   USING:  'BDC_OKCODE'      '=RFAK' .

  PERFORM bdc_dynpro  USING   'SAPLV45C'        '0100' .
  PERFORM bdc_field   USING:  'BDC_OKCODE'      '=UEBR' ,
                              'VBRK-VBELN'   lv_vbeln .

  PERFORM bdc_dynpro  USING   'SAPMV45A'        '4001' .
  PERFORM bdc_field   USING:  'BDC_OKCODE'      '=SICH' .


  PERFORM bdc_dynpro  USING   'SAPMV45A'        '0101' .
  PERFORM bdc_field   USING:  'BDC_OKCODE'      '=SICH' .


* TRANSACTION CALL
  PERFORM transaction_call  USING 'VA01'.

*    BREAK-POINT.
*-- 실패 메세지를 읽는다.
  READ TABLE messtab INTO gs_messtab WITH KEY msgtyp  = 'E'.
  IF sy-subrc NE 0.
    READ TABLE messtab INTO gs_messtab WITH KEY msgtyp  = 'W'.
    IF sy-subrc NE 0.
      READ TABLE messtab INTO gs_messtab INDEX 1.
    ENDIF.
  ENDIF.

  IF gs_messtab-msgtyp NE 'S'.

*-- BDC실행 결과 메세지를 만든다.
    CALL FUNCTION 'MESSAGE_TEXT_BUILD'
      EXPORTING
        msgid               = gs_messtab-msgid
        msgnr               = gs_messtab-msgnr
        msgv1               = gs_messtab-msgv1
        msgv2               = gs_messtab-msgv2
        msgv3               = gs_messtab-msgv3
        msgv4               = gs_messtab-msgv4
      IMPORTING
        message_text_output = gv_mess.
    gs_vbeln-message = gv_mess.
*-- 성공 메세지를 읽는다.
  ELSE.
    gs_vbeln-message="주문생성을 성공하였습니다.".
  ENDIF.

위의 VA01 레코드와 관련 없는 소스 및 참조 소스.

*&---------------------------------------------------------------------*
*&      Form  BDC_DYNPRO
*&---------------------------------------------------------------------*
FORM bdc_dynpro USING    program dynpro.
  CLEAR gs_bdcdata.
  gs_bdcdata-program  = program.
  gs_bdcdata-dynpro   = dynpro.
  gs_bdcdata-dynbegin = 'X'.
  APPEND gs_bdcdata TO bdcdata.
ENDFORM.                    " BDC_DYNPRO
*&---------------------------------------------------------------------*
*&      form  bdc_field
*&---------------------------------------------------------------------*
FORM bdc_field USING fnam fval.
  CLEAR gs_bdcdata.
  gs_bdcdata-fnam = fnam.
  gs_bdcdata-fval = fval.
  APPEND gs_bdcdata TO bdcdata.
ENDFORM.                    "bdc_field

*&---------------------------------------------------------------------*
*&      Form  TRANSACTION_CALL
*&---------------------------------------------------------------------*
FORM transaction_call  USING    p_tcode.

  g_bdcopt-dismode="N"."'A'."'N'.
  g_bdcopt-defsize="X".
  g_bdcopt-nobinpt="X".
  g_bdcopt-updmode="S".
  g_bdcopt-racommit="X".

  CALL  TRANSACTION p_tcode  USING      bdcdata
                             OPTIONS    FROM    g_bdcopt
                             MESSAGES   INTO    messtab .
ENDFORM.                    " TRANSACTION_CALL