BDC

本文档提供了一个使用 ABAP 进行编程的具体示例,包括如何通过 BDC(Business Data Cooperation)技术来实现对 SE11 事物代码的操作流程。示例详细介绍了设置参数、调用事务代码及字段输入的过程,并展示了如何处理返回的消息。

DATA: BEGIN OF itab OCCURS 0 ,
        app_obj LIKE tse05-app_obj ,
        keyword LIKE tse05-keyword ,
        position LIKE tse05-position ,
        line  LIKE tse05-line ,
      END OF itab.
DATA: BEGIN OF messtab OCCURS 0.
        INCLUDE STRUCTURE bdcmsgcoll.
DATA: END OF messtab.
DATA: BEGIN OF itab_log OCCURS 0,
        message(132) TYPE c,
      END OF itab_log.
DATA:   bdcdata LIKE bdcdata    OCCURS 0 WITH HEADER LINE.
DATA: flag .

PARAMETERS :ctumode LIKE ctu_params-dismode DEFAULT 'A' MODIF ID abc .

INITIALIZATION.
*  EXPORT '' TO MEMORY ID 'F1'.
*AT SELECTION-SCREEN OUTPUT.
*  IMPORT flag FROM MEMORY ID 'F1'.
*  LOOP AT SCREEN.
*    CASE screen-group1.
*      WHEN 'ABC'.
*        IF flag = 1 .
*          screen-input = '1'.
*        ELSE.
*          screen-input = '0'.
*          MODIFY SCREEN.
*        ENDIF.
*    ENDCASE.
*  ENDLOOP.

START-OF-SELECTION.
  flag = 1 .
  EXPORT flag TO MEMORY ID 'F1'.
  WRITE 'AA'.
  PERFORM gettext.
  PERFORM runbdc.

*&---------------------------------------------------------------------*
*&      Form  gettext
*&---------------------------------------------------------------------*
FORM gettext .
ENDFORM.                    " gettext

*&---------------------------------------------------------------------*
*&      Form  runbdc
*&---------------------------------------------------------------------*
FORM runbdc .
*  LOOP AT itab .
  REFRESH bdcdata .
  CLEAR bdcdata .
  PERFORM bdc_dynpro  USING 'SAPMSRD0'   '0102'.
  PERFORM bdc_field   USING 'BDC_OKCODE' '=SHOW'.
  PERFORM bdc_field   USING 'RSRD1-TBMA' 'X'.
  PERFORM bdc_field   USING 'RSRD1-TBMA_VAL' 'TSE05'.
  PERFORM bdc_dynpro  USING 'SAPLSD41'   '2200'.
  PERFORM bdc_field   USING 'BDC_OKCODE' '=TDED'.
  PERFORM bdc_dynpro  USING '/1BCDWB/DBTSE05'   '0111'.
  PERFORM bdc_field   USING 'BDC_OKCODE' '=SAVE'.
  PERFORM bdc_field   USING 'TSE05-APP_OBJ' 'ABAP'.
  PERFORM bdc_field   USING 'TSE05-KEYWORD' 'ZTEST005'.
  PERFORM bdc_field   USING 'TSE05-POSITION' '2'.
  PERFORM bdc_field   USING 'TSE05-LINE' '*****'.
  PERFORM bdc_dynpro  USING '/1BCDWB/DBTSE05'   '0111'.
  PERFORM bdc_field   USING 'BDC_OKCODE' '/EBACK'.
  PERFORM bdc_dynpro  USING 'SAPLSD41'   '2200'.
  PERFORM bdc_field   USING 'BDC_OKCODE' '=WB_BACK'.
  PERFORM bdc_dynpro  USING 'SAPMSRD0'   '0102'.
  PERFORM bdc_field   USING 'BDC_OKCODE' '=BACK'.


*    PERFORM bdc_field   USING '' ''.
*    PERFORM bdc_field   USING '' ''.

  CALL TRANSACTION 'SE11' USING bdcdata MODE ctumode UPDATE 'S'
                                        MESSAGES INTO messtab.
*  ENDLOOP.

  LOOP AT messtab.
    CALL FUNCTION 'MESSAGE_TEXT_BUILD'
      EXPORTING
        msgid               = messtab-msgid
        msgnr               = messtab-msgnr
        msgv1               = messtab-msgv1
        msgv2               = messtab-msgv2
        msgv3               = messtab-msgv3
        msgv4               = messtab-msgv4
      IMPORTING
        message_text_output = itab_log-message.
    APPEND itab_log.
    CLEAR itab_log.
  ENDLOOP.

  CALL FUNCTION 'G_DISPLAY_SELECTION_DYNPRO'
    EXPORTING
      dynp_title     = 'Title'
      show_also_1    = 'X'  "只有一条记录也显示
      sel_title1     = 'skdfjsdfj'
      start_column   = 5
    TABLES
      sel_table      = itab_log
    EXCEPTIONS
      no_lines       = 1
      no_line_picked = 2
      OTHERS         = 3.
ENDFORM.                    " runbdc


*----------------------------------------------------------------------*
*        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.
  CLEAR bdcdata.
  bdcdata-fnam = fnam.
  bdcdata-fval = fval.
  CONDENSE bdcdata-fval.
  APPEND bdcdata.
ENDFORM.                    "BDC_FIELD 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值