BDC 代码参考

*  BDC 定义
   DATA: BEGIN OF bdcdata OCCURS 0.
      INCLUDE STRUCTURE bdcdata.
   DATA: END OF bdcdata.
   DATA: gv_string TYPE string.
   DATA: tt1(100).
   DATA: tt2(100).
   DATA: bdc_message LIKE bdcmsgcoll OCCURS 0 WITH HEADER LINE.
* BDC 调用
PERFORM frm_bdc_f-51 USING <fs_data> <fs_data>-msg  <fs_data>-msgst.   " 修改凭证抬头文本
* BDC 子程序
FORM frm_process_fb02 USING is_data LIKE gs_data .
***  修改凭证抬头文本
  PERFORM bdc_dynpro      USING 'SAPMF05L'                                '0100'.
  PERFORM bdc_field       USING 'BDC_CURSOR'                              'RF05L-BELNR'.
  PERFORM bdc_field       USING 'BDC_OKCODE'                              '/00'.
  PERFORM bdc_field       USING 'RF05L-BELNR'                              is_data-belnr.
  PERFORM bdc_field       USING 'RF05L-BUKRS'                              is_data-bukrs.
  PERFORM bdc_field       USING 'RF05L-GJAHR'                              is_data-bldat+0(4).
  PERFORM bdc_dynpro      USING 'SAPMF05L'                                '0700'.
  PERFORM bdc_field       USING 'BDC_CURSOR'                              'BKPF-BELNR'.
  PERFORM bdc_field       USING 'BDC_OKCODE'                              '=VK'.
  PERFORM bdc_dynpro      USING 'SAPMF05L'                                '1710'.
  PERFORM bdc_field       USING 'BDC_CURSOR'                              'BKPF-BKTXT'.
  PERFORM bdc_field       USING 'BDC_OKCODE'                              '=ENTR'.
  PERFORM bdc_field       USING 'BKPF-BKTXT'                              is_data-bktxt.
  PERFORM bdc_dynpro      USING 'SAPMF05L'                                '0700'.
  PERFORM bdc_field       USING 'BDC_CURSOR'                              'BKPF-BELNR'.
  PERFORM bdc_field       USING 'BDC_OKCODE'                              '=AE'.
ENDFORM.
FORM frm_bdc_f-51 USING et_data STRUCTURE gs_data
               CHANGING  ev_mes TYPE zfi_bank_info-msg
                         ev_msgst TYPE c.
  DATA : v_mode TYPE c VALUE 'E'.
  DATA: ls_bdcopt TYPE  ctu_params.
  REFRESH:bdc_message, bdcdata.
  PERFORM  frm_process_fb02  USING et_data.
  ls_bdcopt-dismode = 'N'.  " A 前台显示 E 出错显示 N 后台显示 P
  ls_bdcopt-updmode = 'S'.
  ls_bdcopt-racommit = 'X'.
  ls_bdcopt-nobiend = 'X'.
  CALL TRANSACTION 'FB02' USING bdcdata OPTIONS FROM ls_bdcopt MESSAGES INTO bdc_message   .
  IF sy-subrc <> 0.
    PERFORM generate_message.
    ev_mes = w_message.
    ev_msgst = 'E'.
  ELSE.
    ev_mes = TEXT-013.
    ev_msgst = 'S'.
  ENDIF.
ENDFORM.
 
FORM bdc_dynpro USING program dynpro.
  CLEAR bdcdata.
  bdcdata-program  = program.
  bdcdata-dynpro   = dynpro.
  bdcdata-dynbegin = 'X'.
  APPEND bdcdata.
ENDFORM.                    "BDC_DYNPRO
 
FORM bdc_field USING fnam fval.
  CLEAR bdcdata.
  bdcdata-fnam = fnam.
  bdcdata-fval = fval.
  APPEND bdcdata.
ENDFORM.
* BDC 消息
FORM generate_message .
  CLEAR w_message.
  READ TABLE it_errtab INDEX 1.
  IF sy-subrc = 0.
    CALL FUNCTION 'FORMAT_MESSAGE'
      EXPORTING
        id        = it_errtab-err-msgid
        lang      = sy-langu
        no        = it_errtab-err-msgnr
        v1        = it_errtab-err-msgv1
        v2        = it_errtab-err-msgv2
        v3        = it_errtab-err-msgv3
        v4        = it_errtab-err-msgv4
      IMPORTING
        msg       = w_message
      EXCEPTIONS
        not_found = 1
        OTHERS    = 2.
  ENDIF.
ENDFORM. " generate_message

posted @ 2021-11-23 10:43  清以致远  阅读(242)  评论(0)    收藏  举报