天天看點

SAP 錄屏 BDC

事物代碼:SHDB

SAP 錄屏 BDC
SAP 錄屏 BDC

點選開始記錄,開始進行錄屏操作。

SAP 錄屏 BDC
SAP 錄屏 BDC

選中該條記錄,生成程式。

SAP 錄屏 BDC

根據生成的代碼,進行整理的時候,可以調用系統封裝過的函數,也可以自己進行歸納,抽離代碼。

*&---BDC錄屏傳回消息
DATA i_messtab LIKE bdcmsgcoll OCCURS 0 WITH HEADER LINE.

DATA:bdcdata LIKE bdcdata    OCCURS 0 WITH HEADER LINE.


LOOP AT gt_burks INTO gw_burks.

*&===BOM BDC處理
*&---打開BDC
    CALL FUNCTION 'BDC_OPEN_GROUP'
      EXPORTING
        client = sy-mandt
        group  = gv_group
        user   = sy-uname.
    IF sy-subrc <> 0.
    ENDIF.

    CLEAR:bdcdata[].

    REFRESH i_messtab.

    PERFORM bdc_dynpro      USING 'SAPMM03Y' '0100'.
    PERFORM bdc_field       USING 'BDC_CURSOR'            "記錄光标的位置
                                  'MARV-BUKRS'.
    PERFORM bdc_field       USING 'BDC_OKCODE'            "記錄動作
                                  '/00'.
    PERFORM bdc_field       USING 'MARV-BUKRS'            "記錄螢幕輸入的字段
                                  gw_burks-bukrs_001.
    PERFORM bdc_dynpro      USING 'SAPMM03Y' '0110'.
    PERFORM bdc_field       USING 'BDC_CURSOR'
                                  'MARV-XRUEM'.
    PERFORM bdc_field       USING 'BDC_OKCODE'
                                  '=BU'.
    PERFORM bdc_field       USING 'MARV-XRUEM'
                                  gw_burks-xruem_002.

*&---調用BDC事務
    CALL TRANSACTION 'MMRV' USING bdcdata
                     MODE   'N'
                     UPDATE 'S'
                     MESSAGES INTO i_messtab.

*&---錯誤消息處理
    DATA:e_mess(50).
    CLEAR:e_mess.
*    LOOP AT i_messtab WHERE msgtyp = 'E' OR msgtyp = 'A'.
    LOOP AT i_messtab .
      CALL FUNCTION 'MESSAGE_TEXT_BUILD'
        EXPORTING
          msgid               = i_messtab-msgid
          msgnr               = i_messtab-msgnr
          msgv1               = i_messtab-msgv1
          msgv2               = i_messtab-msgv2
          msgv3               = i_messtab-msgv3
          msgv4               = i_messtab-msgv4
        IMPORTING
          message_text_output = e_mess.
      MESSAGE e_mess TYPE 'S'.

      gw_burks-bz = e_mess.

    ENDLOOP.
*關閉BDC
    CALL FUNCTION 'BDC_CLOSE_GROUP'.
    IF sy-subrc <> 0.
    ENDIF.

    MODIFY gt_burks FROM gw_burks.

  ENDLOOP.




*用到的兩個系統的BDC函數
*----------------------------------------------------------------------*
*        Start new screen                                              *
*----------------------------------------------------------------------*
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.
  CLEAR bdcdata.
  bdcdata-fnam = fnam.
  bdcdata-fval = fval.
  APPEND bdcdata.
ENDFORM.