ABAP BDC模板详解编程语言

0、前提

CALL TRANSACTION tcode 
        USING bdcdata 
        MODE  p_mode 
        UPDATE c_update 
        MESSAGES INTO messtab. 
 
MODE类别: 
 
"A" 
显示所有输入屏幕,如果在 bdc_tab 中包含该屏幕的功能码,则会出现小窗口显示这个功能码。它也是默认值,如果指定不是下面的值,则都认为是 A。 
 
"E" 
只有在出现错误时才显示屏幕,用户可以修正数据,修正后程序可以继续处理。 
 
"N" 
不显示屏幕的静默模式。如果到达被调用事务的断点,则系统处理终止,并设置一些系统字段。sy-subrc 为 1001,sy-msgty 为 "S"、sy-msgid 为 "00"、sy-msgno 为 "344"、sy-msgv1 为 "SAPMSSY3"、sy-msgv2 为 "0131"。 
 
"P" 
不显示屏幕的调试模式。如果到达被调用事务的断点,则系统自动转到 ABAP 调试器,这种方式主要用于调试过程。 
 
UPDATE类别: 
 
"A" 
异步更新。被调用程序的更新按照没有指定 COMMIT WORK 语句和 AND WAIT 附加的方式执行。也就是说,数据更新被放到更新队列里,由另一个专门的更新进程执行,主程序一旦提交数据就继续执行,而不管提交的更新是否执行完成。这种方式比较适合于用一个事务码大量更新指定数据,比如维护主数据等。 
 
"S" 
同步更新。被调用程序的更新按照指定了 COMMIT WORK 语句和 AND WAIT 附加的方式执行。也就是说,数据更新被放到更新队列里,由专门的更新进程执行,但是主程序会等到数据提交完成,返回结果信息后才继续执行。这种方式比较适合于数据一致性要求比较高,多个不同事务码的连续处理。 
 
"L" 
本地更新。被调用程序的更新按照执行 SET UPDATE TASK LOCAL 语句的方式执行。也就是说,数据更新在主程序所在的进程中完成,主程序必定等到被调用事务完成才继续执行。

1.SHDB进行录屏

除了要输入的东西,不要进行其他操作

2.屏幕参数录入

DATA:   bdcdata LIKE bdcdata    OCCURS 0 WITH HEADER LINE. 
DATA:   messtab LIKE bdcmsgcoll OCCURS 0 WITH HEADER LINE. 
 
* bdcdata-program:程序名 
* bdcdata-dynpro:屏幕号 
FORM bdc_dynpro USING program dynpro. 
  CLEAR bdcdata. 
  bdcdata-program  = program. 
  bdcdata-dynpro   = dynpro. 
  bdcdata-dynbegin = 'X'. 
  APPEND bdcdata. 
ENDFORM. 
 
* bdcdata-fnam:字段名 
* bdcdata-fval:字段值 
FORM bdc_field USING fnam fval. 
  CLEAR bdcdata. 
  bdcdata-fnam = fnam. 
  bdcdata-fval = fval. 
  APPEND bdcdata. 
ENDFORM.

3.执行BDC

PERFORM bdc_transaction USING 'ME11'. 
 
FORM bdc_transaction USING tcode . 
  DATA: l_mstring(480). 
  DATA: l_subrc LIKE sy-subrc. 
  DATA: lx_auth_check TYPE REF TO cx_root. 
  DATA: l_auth_check_text TYPE string. 
* batch input session 
  REFRESH messtab. 
  TRY. 
      CALL TRANSACTION tcode WITH AUTHORITY-CHECK USING bdcdata 
                       MODE   'N' 
                       UPDATE 'A' 
                       MESSAGES INTO messtab. 
    CATCH cx_sy_authorization_error INTO lx_auth_check. 
*     Authorization missing for user when executing transaction 
      l_auth_check_text = lx_auth_check->get_text( ). 
      sy-subrc = 99. 
  ENDTRY. 
  l_subrc = sy-subrc. 
 
*  WRITE: / 'CALL_TRANSACTION', 
*           tcode, 
*           'returncode:'(i05), 
*           l_subrc, 
*           'RECORD:', 
*           sy-index. 
  COMMIT WORK AND WAIT . 
*  WAIT UP TO 2 SECONDS. 
 
  DELETE  messtab WHERE msgid = '06' AND msgnr = '657'. 
 
  LOOP AT messtab WHERE msgtyp = 'S'. 
 
    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 = gs_result-msg. 
    . 
 
    IF messtab-msgnr = '310' 
      OR messtab-msgnr = '312' 
      OR messtab-msgnr = '331' 
      OR messtab-msgnr = '335' 
      OR messtab-msgnr = '336' 
      OR messtab-msgnr = '718' 
       . 
 
      gs_result-infnr = messtab-msgv1. 
    ENDIF. 
 
    gs_result-iconid = icon_green_light. 
  ENDLOOP. 
  IF sy-subrc NE 0. 
    LOOP AT messtab WHERE msgtyp = 'E' . 
 
      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 = gs_result-msg. 
      . 
      IF messtab-msgnr = '310' 
        OR messtab-msgnr = '312' 
        OR messtab-msgnr = '331' 
        OR messtab-msgnr = '335' 
        OR messtab-msgnr = '336' 
        OR messtab-msgnr = '718' 
         . 
 
        gs_result-infnr = messtab-msgv1. 
      ENDIF. 
 
      gs_result-iconid = icon_red_light. 
    ENDLOOP. 
  ENDIF. 
 
  REFRESH bdcdata. 
ENDFORM.

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/18004.html

(0)
上一篇 2021年7月19日
下一篇 2021年7月19日

相关推荐

发表回复

登录后才能评论