请教:field-symbols

[复制链接]
查看11 | 回复2 | 2008-10-24 13:20:44 | 显示全部楼层 |阅读模式
请先看下面程序!问题跟在程序后面
*&----------------------------------------------------------------------
*& STRUCTURE
*&----------------------------------------------------------------------
TYPES: BEGIN OF ST_KANJYOU,
ERGSL TYPE ERGSL,
BUKRS TYPE BUKRS,
SKANR TYPE SAKNR,
RYEAR TYPE GJAHR,
DRCRK TYPE SHKZG,
HSLVT TYPE HSLVT,
HSL01 TYPE HSLXX,
HSL02 TYPE HSLXX,
HSL03 TYPE HSLXX,
HSL04 TYPE HSLXX,
HSL05 TYPE HSLXX,
HSL06 TYPE HSLXX,
HSL07 TYPE HSLXX,
HSL08 TYPE HSLXX,
HSL09 TYPE HSLXX,
HSL10 TYPE HSLXX,
HSL11 TYPE HSLXX,
HSL12 TYPE HSLXX,
HSL13 TYPE HSLXX,
HSL14 TYPE HSLXX,
HSL15 TYPE HSLXX,
HSL16 TYPE HSLXX,
IDTYPE SEU_ID,
END OF ST_KANJYOU.
*&----------------------------------------------------------------------
*& INNER TABLE
*&----------------------------------------------------------------------
* 这两个表结构都是一样的。只是用途和名字不一样
DATA: IT_OKANJYOU TYPE STANDARD TABLE OF ST_KANJYOU

INITIAL SIZE 1000,

IT_CKANJYOU TYPE STANDARD TABLE OF ST_KANJYOU

INITIAL SIZE 1000.
*&----------------------------------------------------------------------
*& WORK AREAR
*&----------------------------------------------------------------------
* 工作领域

DATA: HE_OKANJYOU TYPE ST_KANJYOU,
HE_CKANJYOU TYPE ST_KANJYOU.

*&---------------------------------------------------------------------*
*&FormMONEY_SET_OSUM
*&---------------------------------------------------------------------*
* TEXT
*----------------------------------------------------------------------*
FORM MONEY_SET_OSUM.
LOOP AT IT_OKANJYOU INTO HE_OKANJYOU.
........
ENDLOOP.
ENDFORM
*&---------------------------------------------------------------------*
*&FormMONEY_SET_CSUM
*&---------------------------------------------------------------------*
* TEXT
*----------------------------------------------------------------------*
FORM MONEY_SET_CSUM.
LOOP AT IT_CKANJYOU INTO HE_CKANJYOU.
.........
ENDLOOP.
ENDFORM

我想把以上
FORM MONEY_SET_OSUM.
FORM MONEY_SET_CSUM.
两个函数合并成为一个函数通过传递一个标志位来判断程序但前处理的是表IT_OKANJYOU还是IT_CKANJYOU。
但是:以上两个函数有LOOP ATXXXXX INTO XXXXX.
所以请问我如何用FIELD-SYMBOLS来实现呢。
请给一段代码的例子,不胜感激!!!
回复

使用道具 举报

千问 | 2008-10-24 13:20:44 | 显示全部楼层
直接用FORM 参数TABLES,因为结构一样,处理的时候放入相同的workarea就可以了,当然带表头更好的。我觉得这样做就是减少了一些代码而已,对于实际项目没有多大好处,降低了代码的清晰程度,提高了代码的维护难度。就这个程序而言,根据期间计算本位币金额的时候可以用用FIELD-SYMBOLS,直接 连接字符'HSL' 'xx' 到一个字符串变量(01,02....16),然后把字符串变量到,合计就好做了。
回复

使用道具 举报

千问 | 2008-10-24 13:20:44 | 显示全部楼层
嗯。在做合计的时候。我是用的别名的方式。
CONCATENATE CNS_FLD_PNTO
"HE_OKANJYOU-HSL

WK_TMP
"自動月指針用(文字)

INTO WK_POINTER.
WRITE (WK_POINTER) TO WK_SUM_C.
"フィールド指針の値を取得
REPLACE ALL OCCURRENCES OF CNS_TXT_COMA"','

IN WK_SUM_C
"値中にのコマを削除

WITH SPACE.
WK_ADD = WK_SUM_C.
"金額加算値
WK_ALL = WK_ALL + WK_ADD.
"金額

在这个程序里面。因为这两个表结构一样。
两个函数里面(FORM MONEY_SET_OSUM.和FORM MONEY_SET_CSUM.)做的运算都是一样的。
所以我打算合并为一个函数。
在 LOOP AT 内表 INTO 工作区.
其中内表的名字动态的给与:IT_OKANJYOU 或者 IT_CKANJYOU.
这个地方我就想使用FIELD-SYMBOLS来实现,但是不知道具体这个地方代码如何写。
请指教,给几句代码看看!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行