BDC的小例子

DATA:t_intern TYPE STANDARD TABLE OF ALSMEX_TABLINE.
DATA:w_intern TYPE ALSMEX_TABLINE.
DATA:BDCDATA LIKE BDCDATA    OCCURS WITH HEADER LINe.
DATA:MESSTAB LIKE BDCMSGCOLL OCCURS WITH HEADER LINE.

PARAMETERS:p_path TYPE string."定义一个接收文件的路径变量

AT SELECTION-SCREEN on VALUE-REQUEST FOR p_path.
  PERFORM f_get_path.

  START-OF-SELECTION.

  PERFORM f_upload_data.
  PERFORM f_bdc.
*&---------------------------------------------------------------------*
*&      Form  F_GET_PATH
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
  FORM F_GET_PATH .
                 CALL FUNCTION 'WS_FILENAME_GET'"获取稳健路径到一个比变量中
                  EXPORTING
*                    DEF_FILENAME           = ' '
                    DEF_PATH               '' "'D:\课程\课件\10'"对话框初始路径
*                    MASK                   = ' '
                    MODE                   'O' "对话框模式是打开文件
                    TITLE                  '打开路径'"对话框的标题,获得稳健路径放于改变量中
                  IMPORTING
                    FILENAME               p_path
*                    RC                     =
                  EXCEPTIONS
                    INV_WINSYS             1
                    NO_BATCH               2
                    SELECTION_CANCEL       3
                    SELECTION_ERROR        4
                    OTHERS                 5
                           .
                 IF SY-SUBRC <> 0.
* Implement suitable error handling here
                 ENDIF.


ENDFORM.                    " F_GET_PATH
*&---------------------------------------------------------------------*
*&      Form  F_UPLOAD_DATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM F_UPLOAD_DATA .
  DATA:lw_filename LIKE rlgrap-filename.
  lw_filename p_path.

  CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
    EXPORTING
      FILENAME                      lw_filename "获得稳健路径
      I_BEGIN_COL                   '1'         "定义内表起始列
      I_BEGIN_ROW                   '1'        "定义内标起始行
      I_END_COL                     '100'     "定义内表中之列
      I_END_ROW                     '100'"定义内表终止行
    TABLES
      INTERN                        t_intern
   EXCEPTIONS
     INCONSISTENT_PARAMETERS       1
     UPLOAD_OLE                    2
     OTHERS                        3
            .
  IF SY-SUBRC <> 0.
* Implement suitable error handling here
  ENDIF.


ENDFORM.                    " F_UPLOAD_DATA
*&---------------------------------------------------------------------*
*&      Form  F_BDC
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM F_BDC .

  LOOP AT t_intern into w_intern.
    IF w_intern-row '1'."去除第一行列标题数据
      CONTINUE.
    ENDIF.

    CASE w_intern-col.
    when '1'.
perform bdc_dynpro      using 'SAPMM60X' '0100'.
*  perform bdc_field       using 'BDC_CURSOR'
*                            'RM60X-ENTLU'.
perform bdc_field       using 'BDC_OKCODE'
                              '/00'.
perform bdc_field       using 'AM60X-MATAW'
                              'X'."             record-MATAW_001'.
perform bdc_field       using 'AM60X-MATNR'
                              w_intern-value.
when '2'.
perform bdc_field       using 'AM60X-WERKS'
                              w_intern-value.      "  record-WERKS_003.
when '3'.
perform bdc_field       using 'RM60X-VERSB'
                              '00'.
perform bdc_field       using 'RM60X-DATVE'
                              w_intern-value.
when '4'.
perform bdc_field       using 'RM60X-DATBE'
                              w_intern-value.
when  '5'.
perform bdc_field       using 'RM60X-ENTLU'
                              w_intern-value.
when OTHERS.
perform bdc_dynpro      using 'SAPLM60E' '0200'.
perform bdc_field       using 'BDC_OKCODE'
                              '=S+'.
*perform bdc_field       using 'BDC_CURSOR'
*                              'RM60X-PLN01(01)'.
perform bdc_field       using 'RM60X-PLN01(01)'
                             w_intern-value." record-PLN01_01_008.

*perform bdc_dynpro      using 'SAPLM60E' '0200'.
*perform bdc_field       using 'BDC_OKCODE'
*                              '=S+'.
*perform bdc_field       using 'BDC_CURSOR'
*                              'RM60X-PLN01(01)'.
*perform bdc_field       using 'RM60X-PLN01(01)'
*                              record-PLN01_01_009.
*perform bdc_dynpro      using 'SAPLM60E' '0200'.
*perform bdc_field       using 'BDC_OKCODE'
*                              '=S+'.
*perform bdc_field       using 'BDC_CURSOR'
*                              'RM60X-PLN01(01)'.
*perform bdc_field       using 'RM60X-PLN01(01)'
*                              record-PLN01_01_010.

at END OF row.
  perform bdc_dynpro      using 'SAPLM60E' '0200'.
perform bdc_field       using 'BDC_OKCODE'
                              '=SICH'.

  CALL TRANSACTION 'MD61' using bdcdata
        mode 'A'
        update 'S'
        messages into messtab.


  CLEAR bdcdata[].
  endat.
*perform bdc_field       using 'BDC_CURSOR'
*                              'PBPT-MATNR(01)'.
*perform bdc_transaction using 'MD61'.
ENDCASE.

  ENDLOOP.

ENDFORM.                    " F_BDC

FORM BDC_DYNPRO USING PROGRAM DYNPRO.
  CLEAR BDCDATA.
  BDCDATA-PROGRAM  PROGRAM.
  BDCDATA-DYNPRO   DYNPRO.
  BDCDATA-DYNBEGIN 'X'.
  APPEND BDCDATA.
ENDFORM.

*----------------------------------------------------------------------*
*        Insert field                                                  *
*----------------------------------------------------------------------*
FORM BDC_FIELD USING FNAM FVAL.
*  IF FVAL <> NODATA.
    CLEAR BDCDATA.
    BDCDATA-FNAM FNAM.
    BDCDATA-FVAL FVAL.
    APPEND BDCDATA.
*  ENDIF.
ENDFORM.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值