SAPBDC技术

BDC技术
杜恒岩
BDC(Batch Data Conversion):在SAP系统里,由于某种原因,可能需要重复输入数据,(数据不同,但是操作是相同的,典型的情形就是切换系统的时候,旧系统的数据需要导入SAP),大致过程不外乎是这样:输入一个t-code,
进入一个某个屏幕,然后输入一个值(有时还要加上一些附加的checkbox选项等),点执行或者确定按钮,
进入另一个屏幕,在某些字段输入值(也可能是标注checkbox选中或者不选中)或者修改这些字段里的值。
然后按“Eneter”……
最后按“SAVE”……,
一条记录完成了,继续下一条,如此循环。
上面所述的情形,如果让一个“人”来做的话,可能是真是受不了的。但是对于计算机来说,就很简单了。
SAP通过一个特殊的程序(T-code:S HDB)把用户的一次业务操作的所有过程记录下来。
从用户输入transaction code(事务代码),点下“Start Recording”开始,对于用户的来说是一次普通的业务操作,但是SAP却在记录:
1.光标放到哪个字段,(在程序中不用改变)
2.填入了什么值,(变量,循环中的Internal Table 某个字段)
3.点击了什么按钮(在程序中不用改变)
本次操作的作为一个“代表”,是一个“模板”,告诉SAP系统以怎样的方式来执行程序,也就是用计算机的语言来描述如果手工操作的话应该是怎样的一个过程。
用BDC技术编程时,有以下几个步骤:
1.把外部的数据源(Txt,Excel等)用读进internal table或者用do enddo循环。
2.在循环里,把用SHDB记录的步骤重复执行N次,(N = Dialog屏幕数量)这时实际上并没行完成数据的入,系统只是在“填表”,填一个叫做“BDCData”的Internal Table。
填完bdcdata以后,用call transaction …XXXX‟ using bdc……这个命令来真正的commit动作或者call function 'BDC_Insert'在建立一个session。并把执行的结果返回给messtab这个Internal T able
现在假想一种情境,来做一个演示的BDC程序。
由于业务上的需要,某公司打算将某些物料的描述都在后面加上指定的文本Group X,所以需要修改已经存在的物料数据,用T-code:MM02,
外部数据是TXT文本,记录有N条,如下:
Material NO. Description
6000-00001 XXXXXXX(Group A)
2098-00001 fdfladsfladfl(Group B )
2059-00009 dfdsfreddfalfasfa(Group A)
2003-00003 iadfdafdf,adfasf(Group D)
……
……
下面是“录”操作的过程,在命令栏里输入T-code :SHDB,进入如下屏幕:
点New Recodring,出现如下屏幕:
其中Recording 的名字是任意给的。MM02是需要录的事务代码。
按下“Start Recording”,就会进入“Change Material”,这时,以下的操作对于用户来说是一次普通
修改物料描述操作,尽管系统在记录所有的操作。
输入一个物料后,点击“Select View(s)”
假设我们只选“Basic Data 1”和“Basic Data 1”
然后点击绿的小勾“Enter”
我们在该物料后面添加一个“Group A”,描述改为:
……
海因里希
然后点“SAVE”,保存这次修改。
现在SAP回到了S HDB,
先点“SAVE”,保存Recording :Ztest,然后点”Back”,返回S HDB的第一屏。
选中“Ztest”,然后点击“Program”,由SAP自动生成一个程序。
在上面的对话框中输入程序的名字(注意S AP的命名规范,Y或者Z开头),确认输入再输入一些程序的属性信息如下:
点击“Source Code”,指定“Develop Class”等后,就可以进入A BAP Editor,产生如下代码:report ZBDCTEST
no standard page heading line-size 255.
include bdcrecx1.
parameters: dataset(132) lower case.
*** DO NOT CHANGE - the generated data section - DO NOT CHANGE ***
*
* If it is nessesary to change the data section use the rules:
* 1.) Each definition of a field exists of two lines
* 2.) The first line shows exactly the comment
* '* data element: ' followed with the data element
* which describes the field.
* If you don't have a data element use the
* comment without a data element name
* 3.) The second line shows the fieldname of the
* structure, the fieldname must consist of
* a fieldname and optional the character '_' and
* three numbers and the field length in brackets
* 4.) Each field must be type C.
*
*** Generated data section with specific formatting - DO NOT CHA NGE ***
data: begin of record,
* data element: MATNR
MATNR_001(018),
* data element: XFELD
KZSEL_01_002(001),
* data element: XFELD
KZSEL_02_003(001),
* data element: MAKTX
MAKTX_004(040),
* data element: MEINS
MEINS_005(003),
* data element: MTPOS_MARA
MTPOS_MA RA_006(004),
* data element: GEW EI
GEW EI_007(003),
end of record.
*** End generated data section ***
start-of-selection.
perform open_dataset using dataset.
perform open_group.
do.
read dataset dataset into record.
if sy-subrc <> 0. exit. endif.
perform bdc_dynpro using 'SAPLMGMM' '0060'.
perform bdc_field using 'BDC_CURSOR'
'RMMG1-MATNR'.
perform bdc_field using 'BDC_OKCODE'
'=AUSW'.
perform
寻BDC OKCODE的方法- [SAP]睡眠日记
版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
zhouwubin.blogbus/logs/11983551.html
BDC OKCODE的含义取决于所在的transaction
所以同一个名字的OKCODE在不同地方可能有不同的含义
1。SHDB - Batch Input Transaction Recorder
这个通常来说可以得到你每一步的操作的机器的表示,当然包括你用到的OKCODE
2。从GUI status获得
参考:sap.ittoolbox/groups/technical-functional/sap-dev/bdc-ok-code-183443?cv=expande d
比如,在tcode是VA03的最初界面上
选择菜单System->Status
在弹出来的对话框里,到SAP data的一组,有个GUI status,这里显示是A02
双击A02,转到了Display Status A02 界面,跟自己set status的界面差不多
选择菜单Goto->Object Lists->Function Lists
这里就看到了程序里的Function Code,当然包括了OKCDOE
这里显示了OKCODE的含义
比如,Search按钮对应的OKCODE是SUCH
在SHDB里看到某个OKCODE是SUCH,就可以来这里查它的含义
bdcdata-program  = 'SAPMM06B'.  屏幕
bdcdata-dynpro  = '0106'.  屏幕编号
bdcdata-dynbegin = 'X'.    选中
你说的一些功能代码。。你自己在SHDB中录制的时候会自动带出来的。。。。
彩虹原则
BDC_OKCODE项的值就是结束输入时所要按下的键盘控制码。
FNAM处输入…BDC_OKCODE‟,
FVAL处输入BDC_OKCODE的具体值。
常用的BDC_OKCODE :心理健康教育模式
BDC_OKCODE功能描述
/nn          Function Key nn
/00          Enter
/8          F8,Continue or Execute
/11          F11,Post
%EX        Exit
BACK      F3,Back Previous Screen
表面活性剂论文
DLT        Delete
PICK        Double Click
SA VE        F11,Save
OKCODE就是在屏幕编程中所谓的功能码,用来触发用户与系统之间的交互。
具体内容,看以下演示代码:
MODULE USER_COMMAND_2110 INPUT.
CLEAR SAVE_OK.
SAVE_OK = OK_CODE.
CLEAR OK_CODE.
CASE SAVE_OK.
WHEN 'ENTER'.
PERFORM FRM_ENTER_2110.
WHEN 'BACK'.
LEAVE TO SCREEN 0.
WHEN 'SAVE'.
CHECK W_2110 IS NOT INITIAL.
REFRESH T_2111.
REFRESH T_AMOUNT.
REFRESH T_AMOUNT1.
CLEAR W_2111-AMOUNT.
PERFORM FRM_SAVE_2110.
CALL SCREEN 2111.
WHEN 'CLEA'.
PERFORM FRM_CLEAR_SCREEN USING '2110'.
WHEN OTHERS.
ENDCASE.
ENDMODULE.                " USER_COMMAND_2110  INPUT
我们在录屏的时候,会把系统标准程序的功能代码录下来,以模仿交互。例如‘BU’一般是指回车事件。
功能码对应前台就是一个按钮或者键盘操作,具体请查看屏幕编程。

本文发布于:2024-09-22 09:28:55,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/371147.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:系统   程序   输入
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议