问题汇总
如何解决一个系统报错消息——审核程序WMGAUEXP出错——错误N°26?
管理模块
该解决方案适用于下列版本:Sage X3 V5、V6
详细说明
当你进入功能:参数设置→财务→会计接口→自动凭证(GESGAU功能)时,在EXP自动凭证上,你收到以下报错消息:
“程序审核出错WMGAUEXP
错误第26
(行59,列9)
未知的指示:内部错误”
解决方法
要解决这种类型的错误,你必须参阅下面的行为:
首先,在WMGAUEXP程序中检查第59行的源代码:
Local
Call () From
它是空的。
然后在另一个账套(例如DEMO账套)中检查这个程序,查看缺少的内容:
你应该有:
$EVAL1
Case EXPR
When "AMT"
ZONE = [F:TB0]AMTATI
When "AMTL"
Local Integer STAT
Local Decimal AMTDES
Call AMTFORCE(2,[F:TB0]AMTATI,[L]AMTDES,STAT) From SUBEXG
ZONE = [L]AMTDES
所以,“$ EVAL1”是一个标签。
该标签是通过关于自动日志“SUBGAU”的标准流程编写的。
在SUBGAU中:
Wrseq: Means to write in the process WMGAUEXP to build the label $EVAL1.
Wrseq "$EVAL"+num$([F:GAD]LINNUM)
Wrseq "Case EXPR"
Raz FLGCCE
For [GAG]GAG0 Where COD=[F:GAD]COD & LINNUM=[F:GAD]LINNUM
If [F:GAG]FORCLC<>"" or (left$([F:GAG]FLD,3)="CCE" and [F:GAD]CCEDEF<>"")
Wrseq ' When "'+[F:GAG]FLD+'"'
If [F:GAG]FORCLC<>""
Gosub ANALYSE_FORMULE
Else
Wrseq ' ZONE = ""'
Endif
If (left$([F:GAG]FLD,3)="CCE" and [F:GAD]CCEDEF<>"")
FLGCCE(val(right$([F:GAG]FLD,4))) = 1
If TYPECR<>2
Wrseq ' If ZONE="" : Call INISEC(ZONE,"'+[F:GAD]CCEDEF+'","'+right$([F:GAG]FLD,4)
& +'") From SUBCDE : Endif'
Else
Wrseq ' If ZONE="" : Call INISEC(ZONE,"'+[F:GAD]CCEDEF+'",'+right$([F:GAG]FLD,4)
& +',[F YH]BPRTYP) From PAYDIV : Endif'
Endif
Endif
Endif
…
前往子程序ANALYSE_FORMULE:
$ANALYSE_FORMULE
FORMULE = vireblc(format$("KT:255X",[F:GAG]FORCLC),2)
Call CHARGE_VARIABLE(FORMULE,TVARIA,NBVAR,MESSA,STAT) From TRTVARPAR
For VARIA = 1 To NBVAR
Gosub LIRE_PARAM
# Appel au sous-programme évaluant chaque variable de l'expression
Wrseq " Local Integer STAT"
If !find(TVARIA(VARIA),TVARIA(1..VARIA-1)) : # Possible si une variable est référencée 2 fois...
Wrseq " Local"-TYPVARIA-CODVARIA+DIMVAR
Wrseq " Call"-SUB_PROG+"("+CHAINE_PARAM+") From"-TRAITEMENT
Endif
IND = instr(1,FORMULE,"V_"+TVARIA(VARIA))
FORMULE = left$(FORMULE,IND-1)+"[L]"+CODVARIA+right$(FORMULE,IND+len("V_"+TVARIA(VARIA)))
Next VARIA
Wrseq ' ZONE = ';FORMULE
Return
这个子程序调用一个程序来加载变量:
这是自动凭证变量:
Subprog CHARGE_VARIABLE(FORMULE,TVARIA,NBVAR,MESSA,STAT)
Value Char FORMULE : # Formule de l'expression
Variable Char TVARIA()(1..) : # Tableau des variables définies dans l'expression
Variable Integer NBVAR : # Nombre de variables que contient l'expression
Variable Char MESSA : # Message d'erreur
Variable Integer STAT : # Statut de retour
If clalev([F:GVG])=0
Local File GVARGAU [GVG] : # Variables pièces auto
Endif
Local Char EXPR(250), CHAINE(250)
Local Char VARIA(50)
Local Integer CAR, INDCAR, I, T
Local Integer OK, IND
Local Integer NBCAR
EXPR=format$("KT:250X",FORMULE)
EXPR=vireblc(EXPR,1)
If EXPR="" : mkstat=1 : End : Endif
NBVAR = 0 : STAT = 0
NBCAR = len(EXPR)
CHAINE = EXPR
Raz TVARIA
I = 1 : INDCAR = instr(CAR,CHAINE,"V_")
If INDCAR
For CAR = INDCAR To NBCAR
I = instr(CAR,EXPR,"V_")
If I
T = I+len("V_")
INDCAR = T
CHAINE = mid$(EXPR,T,NBCAR)
Raz VARIA
For T=1 To NBCAR
If (mid$(CHAINE,T,1)=toupper(mid$(CHAINE,T,1)) & ascii(mid$(CHAINE,T,1))>64
& & ascii(mid$(CHAINE,T,1))<91)
& | find(ascii(mid$(CHAINE,T,1)),48,49,50,51,52,53,54,55,56,57)
VARIA += mid$(CHAINE,T,1)
INDCAR += 1
Elsif VARIA<>""
NBVAR += 1 : TVARIA(NBVAR) = VARIA
Look [GVG]GVG0 = TVARIA(NBVAR)
If fstat
MESSA = TVARIA(NBVAR)-":"-"Variable inexistante"
STAT = 1 : Break 2
#Elsif find(TVARIA(NBVAR),TVARIA(1..NBVAR-1))
# Variable définie 2 fois dans la formule...
# Raz VARIA
Else
CAR = INDCAR : Break
Endif
Endif
Next
Endif
Next
Endif
End
这个子程序使用GVG表中的字段= GVARGAU – 自动凭证变量:
自动凭证变量是在以下路径设置的:
参数设置→财务→会计接口→自动凭证变量(GESGVG功能):
有一个程序SUBEXG和一个初始化变量的子程序。
这里的有些变量可以用于自动凭证“EXP”:
参数设置→财务→会计接口→自动凭证(GESGAU功能) |