SAP集中研发部
设计组
功能规格说明书规范V1.0
中电装备ERP项目
FICO模块
发票校验时修改统驭科目
第一部分:文档信息
记录号 | FICO-035 |
日期 | 2011-8-17 |
开发类型 | Report Form Interface Enhancement Conversion Others |
使用单位 | 所有单位 |
模块 | FICO |
编号 | FICO-035 |
名称 | 发票校验时修改统驭科目 |
事务代码 | |
业务负责人 | 陈磊 |
功能设计者 | 陈磊、张鹏飞 |
报表开发者 / 程序员 | 张鹏飞 |
第二部分:维护记录
请求提出者 | 时间 | 修改内容 | 审批人 |
张鹏飞 | 2011-8-20 | 添加了概要设计内容 | |
设计顾问签名
姓名:…………………………………
日期:
驭第三部分:业务流程
3.1业务流程图
3.2功能分解
第四部分: 功能设计
4.1必须填写部分
SAP透明表格以及字段:
相关的取数及处理逻辑:
4.2增强填写部分
业务逻辑描述
如图所示是事物代码MIRO的界面,在此界面需要增加一个字段“总账科目” 如红圈所示。用户在此字段输入
数据时弹出一个选择框,从选择框可以选择以下数据:
2202010000 | 应付账款-应付物资款 |
2202020000 | 应付账款-应付商品款 |
2202050000 | 应付账款-应付委托运行维护费 |
2202060000 | 应付账款-应付工程款 |
2202070000 | 应付账款-应付质保金 |
2202080000 | 应付账款-应付劳务款 |
2202980000 | 应付账款-其他 |
2241980000 | 其他应付款-其他 |
然后做一个替代步骤,当事物代码为MIRO,并且总账科目不为空时,用输入的科目替换原来科目。
第五部分:概要设计
5.1增强填写部分
增强类型
1.发票校验屏幕增强的BADI为BADI_FDCB_SUBBAS04;科目替代采用FI替代校验的行项目替代
2.BADI用到的事务代码SE19、SE18、SE80;FI替代用到的事务代码SE38、GGB1、GCX2、OBBH;
增强逻辑:
步骤一:增强标准表字段
采用附加结构的方式新增字段ZZ69FHKONT(参照数据元素Z69EHKONT,域Z69DHKONT)到结构INVFO和ACMM_VENDOR_COMP、表VBKP、视图VBKP_V。
步骤二:创建增强屏幕
复制BADI_EXAMPLE_FDCB_BAS到自开发函数组ZFI69_FDCB。
绘制0100屏幕,添加INVFO-ZZ69FHKONT字段到屏幕中。
更改逻辑流以及INCLUDE程序代码
逻辑流:
PROCESS BEFORE OUTPUT.
MODULE STATUS_0100.
MODULE receive_data.
*
PROCESS AFTER INPUT.
* get again actual data from main screen
MODULE receive_actual_data.
*
* implement from here on customer coding
* enumerate ALL fields on the screen because of field transportation
* with or within a module
FIELD:
invfo-zz69fhkont.
* send data back to main screen
MODULE USER_COMMAND_0100.
程序LZFI69_FDCBTOP
FUNCTION-POOL ZFI69_FDCB. "MESSAGE-ID ..
tables: invfo.
data: o_badi_fdcb_subbas04 type ref to if_ex_badi_fdcb_subbas04.
constants:
exit_name_fdcb_subbas04 type exit_def
value 'BADI_FDCB_SUBBAS04'.
程序LZFI69_FDCBO01
*----------------------------------------------------------------------*
***INCLUDE LBADI_EXAMPLE_FDCB_BASO01 .
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Module receive_data OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE receive_data OUTPUT.
IF o_badi_fdcb_subbas04 IS INITIAL.
CALL METHOD cl_exithandler=>get_instance_for_subscreens
CHANGING
instance = o_badi_fdcb_subbas04
EXCEPTIONS
no_reference = 1
no_interface_reference = 2
no_exit_interface = 3
data_incons_in_exit_managem = 4
class_not_implement_interface = 5
OTHERS = 6.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDIF.
* object created ?
CHECK NOT o_badi_fdcb_subbas04 IS INITIAL.
* get data from main screen
CALL METHOD o_badi_fdcb_subbas04->get_data_from_screen_object
IMPORTING
ex_invfo = invfo.
ENDMODULE. " receive_data OUTPUT
*&---------------------------------------------------------------------*
*& Module STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE STATUS_0100 OUTPUT.
* SET PF-STATUS 'xxxxxxxx'.
* SET TITLEBAR 'xxx'.
perform screen_modify.
ENDMODULE. " STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
*& Form SCREEN_MODIFY
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM SCREEN_MODIFY .
LOOP AT SCREEN.
if screen-name = 'INVFO-ZZ69FHKONT' AND SY-TCODE = 'MIR4'.
* field should not be changed!
screen-input = 0.
endif.
MODIFY SCREEN.
ENDLOOP.
ENDFORM. " SCREEN_MODIFY
程序LZFI69_FDCBI01
*----------------------------------------------------------------------*
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论