SEPCERP试点阶段技术书FICOZFIE0001 按利润中心开关账期V1.docx
- 文档编号:9712464
- 上传时间:2023-05-20
- 格式:DOCX
- 页数:17
- 大小:182.57KB
SEPCERP试点阶段技术书FICOZFIE0001 按利润中心开关账期V1.docx
《SEPCERP试点阶段技术书FICOZFIE0001 按利润中心开关账期V1.docx》由会员分享,可在线阅读,更多相关《SEPCERP试点阶段技术书FICOZFIE0001 按利润中心开关账期V1.docx(17页珍藏版)》请在冰点文库上搜索。
SEPCERP试点阶段技术书FICOZFIE0001按利润中心开关账期V1
四川省电力公司
企业资源管理(ERP)系统实施项目
技术设计说明书
第一部分:
基本信息
(生成新的版本后,以下内容要相应改动)
开发类型
增强接口单据报表
技术工具
EnhancementUserExitBAdI
DialogInteractivelist
ABAPOOFunctiongroup
RFCBAPIfunctionExecutiveProgram
BDCTableContentsModification
ServerfileLocalfile
SAPScriptSmartformsOutput-onlyList
模块
FICO
开发机及集团
D19
(1)/client110
事务代码
ZFIE0001
程序ID
ZFIE0001
程序名称
按利润中心开关账期
功能设计者
李勇
技术设计者
路晓青
ABAP程序员
路晓青
第二部分:
设计书维护记录
更新日期
更新人员
简要说明
2009-08-17
路晓青
初版创建
第三部分:
技术方案描述
3.1业务需求描述
SAP标准程序S_PEN_05000130不能按利润中心多用户同时维护开关账期。
新增一程序,显示有户有权限的利润中心对应的行记录,用户维护完该记录后保存。
此程序支持并发处理。
3.2技术解决方案
通过Dialog实现事务:
S_PEN_05000130界面显示,通过权限控制和自建‘E’类型的锁
实现并发处理。
3.3系统简单架构图
其他用户在修改
无其他用户修改
第四部分:
程序逻辑描述—将主要代码功能描述清楚,
1.输入TCODE:
ZFIE0001,出现如下屏幕
数据库表T001B_PS_PER:
2.选择要修改的行项目如第一条,修改后点保存。
数据库表T001B_PS_PER:
3.此时保持第一条记录为修改状态,再打开一个进程,并选择修改第一条记录。
4.点确定,回到选择修改之前的状态。
5.选择第一条记录之外的记录修改。
6.此条记录为可修改状态,已实现并发处理。
第五部分:
源程序----复杂性功能实现可贴主要功能代码部分
*&---------------------------------------------------------------------*
*& Module pool :
ZFIE0001
*& 程序描述:
按利润中心开关账期
*& 开发人员:
路晓青
*& 创建日期:
2009/08/11
*& 程序用途:
根据SAP标准程序S_PEN_05000130的新增程序,显示有户有权限的
*& 利润中心对应的行记录,用户维护完该记录后保存。
此程序支持
*& 并发处理。
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
PROGRAM ZFIE0001.
INCLUDE ZFIE0001_DATACLEAR.
INCLUDE ZFIE0001_1001PBO.
INCLUDE ZFIE0001_1001PAI.
INCLUDE ZFIE0001_FORM.
ZFIE0001_1001PBO
*&---------------------------------------------------------------------*
*& 包括 ZFIE0001_1001PBO
*&---------------------------------------------------------------------*
*&SPWIZARD:
OUTPUT MODULE FOR TC 'TC1'. DO NOT CHANGE THIS LINE!
*&SPWIZARD:
UPDATE LINES FOR EQUIVALENT SCROLLBAR
MODULE TC1_CHANGE_TC_ATTR OUTPUT.
DESCRIBE TABLE IT_TAB LINES TC1-lines.
ENDMODULE.
*&SPWIZARD:
OUTPUT MODULE FOR TC 'TC1'. DO NOT CHANGE THIS LINE!
*&SPWIZARD:
GET LINES OF TABLECONTROL
MODULE TC1_GET_LINES OUTPUT.
READ TABLE IT_TAB INTO WA_TAB INDEX TC1-CURRENT_LINE.
* 点修改按钮可编辑状态.
IF FLAG_EDIT = 'X'.
IF WA_TAB-SELBOX = 'X'.
IF FLAG_BACK = 'X'.
LOOP AT TC1-COLS INTO IT_COLUMN1.
IF IT_COLUMN1-SCREEN-GROUP1 = '100'.
IT_COLUMN1-SCREEN-INPUT = '0'.
MODIFY TC1-COLS FROM IT_COLUMN1 INDEX SY-TABIX.
ENDIF.
ENDLOOP.
EXIT.
ELSE.
LOOP AT SCREEN.
IF SCREEN-GROUP1 = '100'.
SCREEN-INPUT = '1'.
MODIFY SCREEN.
WA_INDEX-INDEX = TC1-CURRENT_LINE.
APPEND WA_INDEX TO IT_INDEX.
ENDIF.
ENDLOOP.
* 若屏幕状态为可写,则锁表。
* READ TABLE IT_INDEX INTO WA_INDEX WITH KEY INDEX = TC1-CURRENT_LINE.
* IF WA_INDEX-LOCK = ''.
CALL FUNCTION 'ENQUEUE_EZT001B_PS_PER'
EXPORTING
MODE_T001B_PS_PER = 'E'
BUKRS = ZBUKRS
FIELD = ZFIELD
BKONT = WA_TAB-BKONT
EXCEPTIONS
FOREIGN_LOCK = 1
SYSTEM_FAILURE = 2
OTHERS = 3 .
IF SY-SUBRC = 0.
ELSE.
* 消息画面
CALL SCREEN 0020 STARTING AT 50 10 ENDING AT 90 20.
ENDIF.
ENDIF.
ELSE.
IF FLAG_SAVE = 'X'
OR SY-UCOMM = ''.
LOOP AT SCREEN.
IF SCREEN-GROUP1 = '100'.
READ TABLE IT_INDEX INTO WA_INDEX WITH KEY INDEX = TC1-CURRENT_LINE.
IF SY-SUBRC = 0.
SCREEN-INPUT = '1'.
MODIFY SCREEN.
ENDIF.
ENDIF.
ENDLOOP.
ENDIF.
ENDIF.
ELSE.
* 解除锁定
CALL FUNCTION 'DEQUEUE_EZT001B_PS_PER'
EXPORTING
MODE_T001B_PS_PER = 'E'
BUKRS = ZBUKRS
FIELD = ZFIELD
BKONT = WA_TAB-BKONT
.
COMMIT WORK.
IF WA_TAB-SELBOX = 'X'.
LOOP AT SCREEN.
IF SCREEN-GROUP1 = '100'.
SCREEN-INPUT = '0'.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ELSE.
ENDIF.
ENDIF.
* G_TC1_LINES = SY-LOOPC.
ENDMODULE.
*&---------------------------------------------------------------------*
*& Module STATUS_1001 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE STATUS_1001 OUTPUT.
SET PF-STATUS 'STATUS_1001'. "状态栏
SET TITLEBAR 'TITLE_1001'. "标题栏
ENDMODULE. " STATUS_1001 OUTPUT
*&---------------------------------------------------------------------*
*& Module TC1_INIT OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE TC1_INIT OUTPUT.
DATA:
LI_TAB TYPE STANDARD TABLE OF TY_TAB,
WA_T001B LIKE T001B_PS_PER.
REFRESH:
LI_TAB.
* 设屏幕初始值
IF ZBUKRS IS INITIAL "记帐期间变式
AND ZFIELD IS INITIAL. "总分类帐字段名称
ZBUKRS = '1900'.
ZFIELD = 'PRCTR'.
ENDIF.
* 自动带出记帐期间变式文本
IF ZBUKRS IS NOT INITIAL.
SELECT SINGLE OPVTX
INTO ZTEXT
FROM T010P
WHERE SPRAS = SY-LANGU
AND OPVAR = ZBUKRS.
ENDIF.
* 根据屏幕输入值,选取数据
IF W_BUKRS <> ZBUKRS "记帐期间变式
OR W_FIELD <> ZFIELD. "总分类帐字段名称
SELECT *
FROM T001B_PS_PER
INTO CORRESPONDING FIELDS OF TABLE IT_TAB
WHERE BUKRS = ZBUKRS "记帐期间变式
AND FIELD = ZFIELD."总分类帐字段名称
* 权限检查
LOOP AT IT_TAB INTO WA_TAB.
AUTHORITY-CHECK OBJECT 'Z_PRCTR'
ID 'PRCTR' FIELD WA_TAB-BKONT
ID 'ZACTVT' FIELD '03'.
IF SY-SUBRC <> 0.
APPEND WA_TAB TO LI_TAB.
ENDIF.
ENDLOOP.
* 删除无权限操作数据
LOOP AT LI_TAB INTO WA_TAB.
DELETE IT_TAB WHERE BKONT = WA_TAB-BKONT
AND VKONT = WA_TAB-VKONT
AND FRPE1 = WA_TAB-FRPE1
AND BRGRU = WA_TAB-BRGRU.
ENDLOOP.
REFRESH CONTROL 'TC1' FROM SCREEN '0010'.
ENDIF.
* 屏幕初始状态设为只读
IF W_BUKRS IS INITIAL
AND W_FIELD IS INITIAL.
LOOP AT TC1-COLS INTO IT_COLUMN1.
IF IT_COLUMN1-SCREEN-GROUP1 = '100'.
IT_COLUMN1-SCREEN-INPUT = '0'.
MODIFY TC1-COLS FROM IT_COLUMN1 INDEX SY-TABIX.
ENDIF.
ENDLOOP.
ENDIF.
* 重新查询则设为只读
IF FLAG_ON = 'X'
AND ( W_BUKRS <> ZBUKRS "记帐期间变式
OR W_FIELD <> ZFIELD ). "总分类帐字段名称.
LOOP AT TC1-COLS INTO IT_COLUMN1.
IF IT_COLUMN1-SCREEN-GROUP1 = '100'.
IT_COLUMN1-SCREEN-INPUT = '0'.
MODIFY TC1-COLS FROM IT_COLUMN1 INDEX SY-TABIX.
ENDIF.
ENDLOOP.
ENDIF.
W_BUKRS = ZBUKRS.
W_FIELD = ZFIELD.
ENDMODULE. " TC1_INIT OUTPUT
*&---------------------------------------------------------------------*
*& Module STATUS_0020 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE STATUS_0020 OUTPUT.
SET PF-STATUS 'STATUS_0020'.
* SET TITLEBAR 'xxx'.
ENDMODULE. " STATUS_0020 OUTPUT
ZFIE0001_1001PAI
*&---------------------------------------------------------------------*
*& 包括 ZFIE0001_1001PAI
*&---------------------------------------------------------------------*
*&SPWIZARD:
INPUT MODULE FOR TC 'TC1'. DO NOT CHANGE THIS LINE!
*&SPWIZARD:
PROCESS USER COMMAND
MODULE TC1_USER_COMMAND INPUT.
OK_CODE = SY-UCOMM.
PERFORM USER_OK_TC USING 'TC1'
'IT_TAB'
' '
CHANGING OK_CODE.
SY-UCOMM = OK_CODE.
ENDMODULE.
*&---------------------------------------------------------------------*
*& Module D0010_ZBUKRS_HELP_VAL INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE D0010_ZBUKRS_HELP_VAL INPUT.
REFRESH:
IT_T010P,
IT_BUKRS.
* 抽取记帐期间变式
SELECT DISTINCT BUKRS
FROM T001B_PS_PER
INTO TABLE IT_BUKRS.
* 抽取记帐期间变式名
IF IT_BUKRS IS NOT INITIAL.
SELECT OPVAR
OPVTX
FROM T010P
INTO TABLE IT_T010P
FOR ALL ENTRIES IN IT_BUKRS
WHERE OPVAR = IT_BUKRS-BUKRS
AND SPRAS = SY-LANGU.
SORT IT_T010P BY OPVAR.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
RETFIELD = 'OPVAR'
VALUE_ORG = 'S'
DYNPPROG = SY-REPID
DYNPNR = SY-DYNNR
DYNPROFIELD = 'ZBUKRS'
TABLES
VALUE_TAB = IT_T010P
RETURN_TAB = SELECTED_TABLE
EXCEPTIONS
PARAMETER_ERROR = 1
NO_VALUES_FOUND = 2
OTHERS = 3.
IF SY-SUBRC = 0.
READ TABLE SELECTED_TABLE INDEX 1.
ZBUKRS = SELECTED_TABLE-FIELDVAL.
ENDIF.
ENDIF.
ENDMODULE. " D0010_ZBUKRS_HELP_VAL INPUT
*&---------------------------------------------------------------------*
*& Module D0010_FIELD_HELP_VAL INPUT
*&---------------------------------------------------------------------*
* 总分类帐字段名称输入帮助
*----------------------------------------------------------------------*
MODULE D0010_FIELD_HELP_VAL INPUT.
* 总分类帐字段名称输入帮助
PERFORM V_D0100_FIELD_HELP_VAL
CHANGING ZFIELD.
ENDMODUL
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- SEPCERP试点阶段技术书FICOZFIE0001 按利润中心开关账期V1 SEPCERP 试点 阶段 技术 FICOZFIE0001 利润 中心 开关 V1
![提示](https://static.bingdoc.com/images/bang_tan.gif)