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