data: bdcdata type table of bdcdata with header line.
data: messtab type table of bdcmsgcoll with header line.
refresh bdcdata.
perform bdc_dynpro using 'SAPLSUU5' '0050'.
perform bdc_field using 'BDC_CURSOR' 'USR02-BNAME'.
perform bdc_field using 'BDC_OKCODE' '=CREA'.
perform bdc_field using 'USR02-BNAME' bname.
perform call_transaction_form using p_tcode.
*&---------------------------------------------------------------------*
*& Form bdc_dynpro
*&---------------------------------------------------------------------*
form bdc_dynpro using program dynpro.
clear bdcdata.
bdcdata-program = program.
bdcdata-dynpro = dynpro.
bdcdata-dynbegin = 'X'.
append bdcdata.
endform. "BDC_DYNPRO
*&---------------------------------------------------------------------*
*& Form bdc_field
*&---------------------------------------------------------------------*
form bdc_field using fnam fval.
clear bdcdata.
bdcdata-fnam = fnam.
bdcdata-fval = fval.
append bdcdata.
endform. "BDC_FIELD
* 说明:
call transaction 'MMSC' using it_bdcdata
mode 'N'
update 'S'
messages into it_bdcmsg.
参数mode与update:
1.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 调试器,这种方式主要用于调试过程。
2.update 确定批输入的更新模式,有下面几个可选值:
'A'异步更新。被调用程序的更新按照没有指定 commit work 语句和 and wait 附加的方式执行。也就是说,数据更新被放到更新队列里,由另一个专门的更新进程执行,主程序一旦提交数据就继续执行,而不管提交的更新是否执行完成。
这种方式比较适合于用一个事务码大量更新指定数据,比如维护主数据等。
'S'同步更新。被调用程序的更新按照指定了 commit work 语句和 and wait 附加的方式执行。也就是说,数据更新被放到更新队列里,由专门的更新进程执行,但是主程序会等到数据提交完成,返回结果信息后才继续执行。
这种方式比较适合于数据一致性要求比较高,多个不同事务码的连续处理。
'L'本地更新。被调用程序的更新按照执行 set update task local 语句的方式执行。也就是说,数据更新在主程序所在的进程中完成,主程序必定等到被调用事务完成才继续执行。
评论