资源预览内容
第1页 / 共11页
第2页 / 共11页
第3页 / 共11页
第4页 / 共11页
第5页 / 共11页
第6页 / 共11页
第7页 / 共11页
第8页 / 共11页
第9页 / 共11页
第10页 / 共11页
亲,该文档总共11页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
以下根据系统实例做的 最终效果:1、 SE11 建立数据表,主要是用于存放附加的数据;MANDTMANDTCLNT30客户端 MBLNRMBLNRCHAR100物料凭证编号 MJAHRMJAHRNUMC40物料凭证年度 ZEILE MBLPONUMC40物料凭证中的项目 BADI_ERFMGERFMGQUAN133以输入单位计的数量 BADI_ERFMEERFMEUNIT30条目单位2、 建立结构,在屏幕数据交换时使用3、 建立表类型设置关键字段:4、 SE80 建立函数组创建屏幕 1000,设计格式,插入附加字段创建 function: ZJIM_BADI_EXAMPLE_GET_DATA *“-*“*“Local interface:*“ EXPORTING*“ REFERENCE(ES_MIGO_BADI_SCREEN_FIELDS) TYPE*“ ZJIM_BADI_EXAMPLE_SCREEN_FIELD*“-* Get all data from fields of external screen* First move all customer-fieldsMOVE-CORRESPONDING zjim_badi_exampl TO es_migo_badi_screen_fields.* Second move all GOITEM-fields (displayed on external screen)function: ZJIM_BADI_EXAMPLE_PUT_DATA *“-*“*“Local interface:*“ IMPORTING*“ REFERENCE(IS_MIGO_BADI_SCREEN_FIELDS) TYPE*“ ZJIM_BADI_EXAMPLE_SCREEN_FIELD*“-* Put all data from fields to external screen* First fill all customer-fieldsMOVE-CORRESPONDING is_migo_badi_screen_fields TO ZJIM_badi_exampl.* second fill all GOITEM-fields (displayed on external screen)function: ZJIM_BADI_EXAMPLE_UPDATE_DATA *“-*“*“Update function module:*“*“*“Local interface:*“ TABLES*“ IT_MIGO_BADI_EXAMPLE STRUCTURE ZJIM_BADI_EXAMPL*“-* Databse update:INSERT zjim_BADI_EXAMPL FROM TABLE IT_MIGO_BADI_EXAMPLE.IF sy-subrc 0.* External subscreen:* The content of global field G_NO_INPUT (set in method MODE_SET) will* influence the number of external subsreen:if g_no_input is initial.e_cprog = SAPLZJIM_BADI001(006). “程序名为定义的函数组的名称前加“SAPL“。e_dynnr = 1000. “External fields: Inpute_heading = ZJIM(004). “显示标签的名称endif.* Set G_LINE_ID (= line_id of item displayed on detail-tabstrip)g_line_id = i_line_id.* Read dataREAD TABLE gt_extdata INTO ls_extdataWITH TABLE KEY line_id = i_line_id.* Export data to function group (for display on subscreen)CALL FUNCTION ZJIM_BADI_EXAMPLE_PUT_DATAEXPORTINGis_migo_badi_screen_fields = ls_extdata.ENDMETHOD. “IF_EX_MB_MIGO_BADIPBO_DETAILMETHOD IF_EX_MB_MIGO_BADIPAI_DETAIL .*-* Changing parameter E_FORCE_CHANGE can be set to X. In this case* method LINE_MODIFY is called.* ATTENTION:* DO NOT SET parameter E_FORCE_CHANGE = . In this case you might* overwrite parameter E_FORCE_CHANGE of another BAdI implementation.*-DATA: ls_extdata_new TYPE zjim_badi_example_screen_field,ls_extdata_old TYPE zjim_badi_example_screen_field.* Only if a line existsCHECK i_line_id ls_extdata_new.* If there were any changes, its obligatory to force MIGO to trigger* method LINE_MODIFY.e_force_change = X.ENDIF.ENDMETHOD. “IF_EX_MB_MIGO_BADIPAI_DETAILMETHOD IF_EX_MB_MIGO_BADILINE_MODIFY .DATA: ls_extdata_old TYPE zjim_badi_example_screen_field,ls_extdata_new TYPE zjim_badi_example_screen_field,ls_migo_badi_exampl TYPE zjim_badi_exampl,l_subrc TYPE sy-subrc.* Get external data from internal table:READ TABLE gt_extdata INTO ls_extdata_oldWITH TABLE KEY line_id = i_line_id.l_subrc = sy-subrc.* Update data in internal table:IF l_subrc ls_extdata_old-sgtxt.* Field was changed on external screen* cs_goitem-sgtxt = ls_extdata_new-sgtxt.* else.* Take data from GOITEM* ls_extdata_new-sgtxt = cs_goitem-sgtxt.* endif.MODIFY TABLE gt_extdata FROM ls_extdata_new.ENDIF.ENDMETHOD. “IF_EX_MB_MIGO_BADILINE_MODIFYMETHOD IF_EX_MB_MIGO_BADILINE_DELETE .DELETE TABLE gt_extdata WITH TABLE KEY line_id = i_line_id.ENDMETHOD. “IF_EX_MB_MIGO_BADILINE_DELETEMETHOD IF_EX_MB_MIGO_BADIPOST_DOCUMENT .DATA: ls_migo_badi_example TYPE ZJIM_badi_exampl,lt_migo_badi_example TYPE TABLE OF zjim_badi_exampl,ls_extdata TYPE zjim_badi_example_screen_field,ls_xmseg TYPE mseg.FIELD-SYMBOLS: TYPE migo_badi_example_screen_field.* Transaction MIGO will now post a material document.* Any errors here MUST be issued as A-message (better: X-message)* Copy data from material document into internal tableLOOP AT gt_extdata INTO ls_extdata.IF g_cancel IS INITIAL.READ TABLE it_mseg INTO ls_xmsegWITH KEY line_id = ls_extdata-line_id.ELSE.READ TABLE it_mseg INTO ls_xmsegWITH KEY smbln = ls_extdata-mblnrsmblp = ls_extdata-zeilesjahr = ls_extdata-mjahr.ENDIF.IF sy-subrc IS INITIAL.MOVE-CORRESPONDING ls_extdata TO ls_migo_badi_example.MOVE-CORRESPONDING ls_xmseg TO ls_migo_badi_example.APPEND ls_migo_badi_example TO lt_migo_badi_example.ENDIF.ENDLOOP.* The data from external detail screen can be saved now:CHECK gt_extdata IS NOT INITIAL.
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号