ITPub博客

首页 > Linux操作系统 > Linux操作系统 > My own program(BDC)

My own program(BDC)

原创 Linux操作系统 作者:fang0909 时间:2008-07-02 16:57:27 0 删除 编辑

tables: BDCMSGCOLL, T100.

DATA T_MSG LIKE T100-TEXT OCCURS 0.
DATA t_bdcdata LIKE BDCDATA OCCURS 0 WITH HEADER LINE.  "定义BDC内表
DATA t_bdcmsg LIKE BDCMSGCOLL OCCURS 0 WITH HEADERINE.       "定义消息内表
DATA L_MSTRIN(480).                                                                             "消息字符串

CONSTANTS C_MASK(2) TYPE C VALUE ',.'.

************************************************************************

SELECTION-SCREEN BEGIN OF BLOCK B01 WITH FRAME. TITLE TEXT-B01.
PARAMETERS P_FILE LIKE RLGRAP-FILENAME OBLIGATORY.
PARAMETERS P_ERRLOG LIKE RLGRAP-FILENAME.
SELECTION-SCREEN END OF BLOCK B01.
SELECTION-SCREEN BEGIN OF BLOCK P WITH FRAME. TITLE txt2.
PARAMETERS P_R1 radiobutton group radi.
PARAMETERS P_R2 radiobutton group radi DEFAULT 'X'.
PARAMETERS P_R3 radiobutton group radi .
SELECTION-SCREEN end of BLOCK P.
PARAMETERS P_MODE(1) DEFAULT 'N'.
************************************************************************
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.
* call file selector to get a file name for read-only.
  PERFORM. CALL_FILE_SELECTOR USING C_MASK
                                   'O'
                                   'Open File'(001)
                                   P_FILE.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_ERRLOG.
* call file selector to get a file name for over-write.
  PERFORM. CALL_FILE_SELECTOR USING C_MASK
                                   'S'
                                   'New File'(002)
                                   P_ERRLOG.

  CALL FUNCTION 'WS_UPLOAD'
    EXPORTING
      filename                = p_file
      filetype                = 'DAT'
    TABLES
      data_tab                = t_fields
    EXCEPTIONS
      conversion_error        = 1
      file_open_error         = 2
      file_read_error         = 3
      invalid_type            = 4
      no_batch                = 5
      unknown_error           = 6
      invalid_table_width     = 7
      gui_refuse_filetransfer = 8
      customer_error          = 9
      no_authority            = 10
      OTHERS                  = 11.
  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.
PERFORM. BDC_DYNPRO USING 'SAPDM06Q' '0200'.
PERFORM. BDC_FIELD  USING 'BDC_CURSOR' 'EQUK-WERKS'

      REFRESH T_BDCMSG.
      CALL TRANSACTION 'MEQ1' USING T_BDCDATA MODE P_MODE UPDATE 'S'
          MESSAGES INTO T_BDCMSG.
      IF SY-SUBRC <> 0.
        DESCRIBE TABLE T_BDCMSG.
        READ TABLE T_BDCMSG INTO BDCMSGCOLL INDEX SY-TFILL.
        IF SY-SUBRC = 0.
          PERFORM. GET_MESSAGE. "USING T100-TEXT BDCMSGCOLL-MSGID
        ENDIF.
      ENDIF.

      REFRESH bdcdata.   "Notice don't forget

FORM. BDC_DYNPRO  USING    VALUE(program)
                          VALUE(dynpro).

  CLEAR t_bdcdata.
  t_bdcdata-program = program.
  t_bdcdata-dynpro = dynpro.
  t_bdcdata-dynbegin = 'X'.
  APPEND t_bdcdata.

ENDFORM.                    " BDC_DYNPRO
FORM. BDC_FIELD  USING    VALUE(fnam)
                         VALUE(fval).
  CLEAR t_bdcdata.
  t_bdcdata-fnam = fnam.
  t_bdcdata-fval = fval.
  APPEND t_bdcdata.

ENDFORM.                    " BDC_FIELD
FORM. GET_MESSAGE  .
  WRITE : / '消息类型', 20 '消息内容'.
  LOOP AT T_BDCMSG.
    SELECT SINGLE * FROM T100 WHERE SPRSL = T_BDCMSG-MSGSPRA
    AND ARBGB = T_BDCMSG-MSGID
    AND MSGNR = T_BDCMSG-MSGNR.
    IF SY-SUBRC = 0.
      L_MSTRING = T100-TEXT.
      IF L_MSTRING CS '&1'.
        REPLACE '&1' WITH T_BDCMSG-MSGV1 INTO L_MSTRING.
        REPLACE '&2' WITH T_BDCMSG-MSGV2 INTO L_MSTRING.
        REPLACE '&3' WITH T_BDCMSG-MSGV3 INTO L_MSTRING.
        REPLACE '&4' WITH T_BDCMSG-MSGV4 INTO L_MSTRING.
      ELSE.
        REPLACE '&' WITH T_BDCMSG-MSGV1 INTO L_MSTRING.
        REPLACE '&' WITH T_BDCMSG-MSGV2 INTO L_MSTRING.
        REPLACE '&' WITH T_BDCMSG-MSGV3 INTO L_MSTRING.
        REPLACE '&' WITH T_BDCMSG-MSGV4 INTO L_MSTRING.
      ENDIF.
      CONDENSE L_MSTRING.
      WRITE: / T_BDCMSG-MSGTYP, 20 L_MSTRING.
    ELSE.
      WRITE: / T_BDCMSG.
    ENDIF.
  ENDLOOP.
FORM. CALL_FILE_SELECTOR  USING    P_C_MASK type C
                                  Value(P_MODE)
                                  Value(P_TITLE)
                                  P_FILE.

  CALL FUNCTION 'WS_FILENAME_GET'
   EXPORTING
*      DEF_FILENAME           = ' '
*      DEF_PATH               = ' '
     MASK                   = P_C_MASK
     MODE                   = P_MODE
     TITLE                  = P_TITLE
   IMPORTING
     FILENAME               = P_FILE
*      RC                     =
   EXCEPTIONS
     INV_WINSYS             = 1
     NO_BATCH               = 2
     SELECTION_CANCEL       = 3
     SELECTION_ERROR        = 4
     OTHERS                 = 5
            .
  IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/11216390/viewspace-368920/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: Modify Query
请登录后发表评论 登录
全部评论

注册时间:2008-06-02

  • 博文量
    13
  • 访问量
    14612