ZBCC0003-BDC reuse form routine-SE38(I類型)

*&---------------------------------------------------------------------*
*&  INCLUDE           ZBCC0003 BDC reuse form routine
*&---------------------------------------------------------------------*
  DATA: %ctumode LIKE ctu_params-dismode VALUE 'N'.
  "A: show all dynpros
  "E: show dynpro on error only
  "N: do not display dynpro

  DATA: %cupdate LIKE ctu_params-updmode VALUE 'L'.
  "S: synchronously
  "A: asynchronously
  "L: local

  DATA: %racommit LIKE ctu_params-racommit.

  DATA: %nobinpt LIKE ctu_params-nobinpt.


*----------------------------------------------------------------------*
*   data definition
*----------------------------------------------------------------------*
*       Batchinputdata of single transaction
  DATA:   bdcdata LIKE bdcdata    OCCURS 0 WITH HEADER LINE.
*       messages of call transaction
  DATA:   messtab LIKE bdcmsgcoll OCCURS 0 WITH HEADER LINE.
*       error session opened (' ' or 'X')
  DATA:   e_group_opened.
*       message texts
  TABLES: t100.

*----------------------------------------------------------------------*
*        Start new screen                                              *
*----------------------------------------------------------------------*
  FORM bdc_dynpro USING program dynpro.
    CLEAR bdcdata.
    bdcdata-program  = program.
    bdcdata-dynpro   = dynpro.
    bdcdata-dynbegin = 'X'.
    APPEND bdcdata.
  ENDFORM.                    "BDC_DYNPRO

*----------------------------------------------------------------------*
*        Insert field                                                  *
*----------------------------------------------------------------------*
  FORM bdc_field USING fnam fval.
*  IF FVAL <> NODATA.
    CLEAR bdcdata.
    bdcdata-fnam = fnam.
    bdcdata-fval = fval.
    APPEND bdcdata.
*  ENDIF.
  ENDFORM.                    "BDC_FIELD
*&---------------------------------------------------------------------*
*&      Form  BDC_TRANSACTION
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
  FORM bdc_transaction USING tcode
            f_type   " message type
            f_msg.
    DATA: l_mstring(480).
    DATA: l_ctu_params TYPE ctu_params .
* call transaction using
    REFRESH messtab.

*    CALL TRANSACTION tcode USING bdcdata
*                     MODE   %ctumode
*                     UPDATE %cupdate
*                     MESSAGES INTO messtab.
    l_ctu_params-dismode = %ctumode.
    l_ctu_params-updmode = %cupdate.
    l_ctu_params-defsize = 'X'.

    l_ctu_params-racommit = %racommit.
    l_ctu_params-nobinpt = %nobinpt.

    CALL TRANSACTION tcode USING bdcdata
                     OPTIONS FROM l_ctu_params
                     MESSAGES INTO messtab.

    IF sy-subrc <> 0.
      f_type = 'E'.

*      f_msg = tcode && ` BDC Error`.
      LOOP AT messtab.
        MESSAGE ID     messtab-msgid
                TYPE   messtab-msgtyp
                NUMBER messtab-msgnr
                INTO l_mstring
                WITH messtab-msgv1
                     messtab-msgv2
                     messtab-msgv3
                     messtab-msgv4.
        IF f_msg IS INITIAL.
          f_msg = l_mstring.
        ELSE.
          f_msg = f_msg && '/' && l_mstring.
        ENDIF.
      ENDLOOP.

    ELSE.
      f_type = 'S'.
    ENDIF.

  ENDFORM.                    "BDC_TRANSACTION

*&---------------------------------------------------------------------*
*&      Form  bdc_transaction_create
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
  FORM bdc_transaction_create USING tcode
          f_type   " message type
          f_msg  " error message
          f_mess LIKE messtab. " success message

    DATA: l_mstring(480).
    DATA: l_ctu_params TYPE ctu_params .
    DATA: l_lines TYPE i.
************
    CLEAR: f_type, f_msg, f_mess.
* call transaction using
    REFRESH messtab.

*    CALL TRANSACTION tcode USING bdcdata
*                     MODE   %ctumode
*                     UPDATE %cupdate
*                     MESSAGES INTO messtab.
    l_ctu_params-dismode = %ctumode.
    l_ctu_params-updmode = %cupdate.
    l_ctu_params-defsize = 'X'.

    CALL TRANSACTION tcode USING bdcdata
                     OPTIONS FROM l_ctu_params
                     MESSAGES INTO messtab.
    IF sy-subrc <> 0.
      f_type = 'E'.

      f_msg = tcode && ` BDC Error`.
      LOOP AT messtab.
        MESSAGE ID     messtab-msgid
                TYPE   messtab-msgtyp
                NUMBER messtab-msgnr
                INTO l_mstring
                WITH messtab-msgv1
                     messtab-msgv2
                     messtab-msgv3
                     messtab-msgv4.
        f_msg = f_msg && '/' && l_mstring.
      ENDLOOP.


*      READ TABLE messtab WITH KEY msgtyp = 'E'.
*      IF sy-subrc = 0.
*        SELECT SINGLE * FROM t100 WHERE sprsl = messtab-msgspra
*                                  AND   arbgb = messtab-msgid
*                                  AND   msgnr = messtab-msgnr.
*        IF sy-subrc = 0.
*          l_mstring = t100-text.
*          IF l_mstring CS '&1'.
*            REPLACE '&1' WITH messtab-msgv1 INTO l_mstring.
*            REPLACE '&2' WITH messtab-msgv2 INTO l_mstring.
*            REPLACE '&3' WITH messtab-msgv3 INTO l_mstring.
*            REPLACE '&4' WITH messtab-msgv4 INTO l_mstring.
*          ELSE.
*            REPLACE '&' WITH messtab-msgv1 INTO l_mstring.
*            REPLACE '&' WITH messtab-msgv2 INTO l_mstring.
*            REPLACE '&' WITH messtab-msgv3 INTO l_mstring.
*            REPLACE '&' WITH messtab-msgv4 INTO l_mstring.
*          ENDIF.
*          CONDENSE l_mstring.
*          f_msg = l_mstring.
*        ELSE.
*          CONCATENATE tcode ' BDC error!'(005) INTO f_msg.
*        ENDIF.
*      ELSE.
*        CONCATENATE tcode ' BDC error!'(005) INTO f_msg.
*      ENDIF.
    ELSE.
***      read last message
      f_type = 'S'.
      l_lines = lines( messtab ).
      READ TABLE messtab INTO f_mess
        INDEX l_lines.
    ENDIF.

  ENDFORM.                    "bdc_transaction_create
*&---------------------------------------------------------------------*
*&      Form  BDC_MODE_SWITCH
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
  FORM bdc_mode_switch .

    CASE sy-ucomm.
      WHEN 'BDCA'.
        %ctumode = 'A'.
        MESSAGE 'BDC change to Display all mode' TYPE 'S'.

      WHEN 'BDCN'.
        %ctumode = 'N'.
        MESSAGE 'BDC change to Background mode' TYPE 'S'.

      WHEN 'BDCE'.
        %ctumode = 'E'.
        MESSAGE 'BDC change to Error mode' TYPE 'S'.


    ENDCASE.

  ENDFORM.

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值