函数:G_VSR_SUBSTITUTION_CALL
SAP FI里面有个叫替代(Substitution)的配置,事务码GGB1。主要的作用就是设置一些先决条件,如果先决条件满足,则在生成凭证的时候使用某个值去替换掉对应字段的值。
那么在ABAP写代码的时候如何根据先决条件去获取对应的值呢。
可以使用函数G_VSR_SUBSTITUTION_CALL。

函数下有很多的导入和导出参数。
这里需要的是:
Import:
CALLUP_POINT
SUBSTITUTION
TAB_DATA1
VALUSER
Export:
RESULT
SUB_DATA1
Tables:
TABNAMES
下面解释一下各个参数需要传的值。
Import里面的传值
CALLUP_POINT
SUBSTITUTION
VALUSER
打开GGB1,找到对应application下面的subsititution。然后你就能看到红色框框里面对应字段的信息。
Callup Point的值传给CALLUP_POINT
Subsititution的值传给SUBSTITUTION
Application Area的值传给VALUSER
这三个值传的是常量就行

TAB_DATA1
这个传的是一条数据,具体传那些值要看你在Prerequisite里面配置的条件需要哪些字段。

但是TAB_DATA1在函数里面没参考任何结构,但是我们传输数据是需要参考一个结构的,这个结构可以在Prerequisite里面找到,或者在创建step的时候你也可以看到。

最后一个需要传的参数是
Tables:
TABNAMES
这个就是传入前面说的PCASUB就可以。
以上就是所有的传入参数的传值。
所以调用函数的时候代码就像下面这样。
cpp
CALL FUNCTION 'G_VSR_SUBSTITUTION_CALL'
EXPORTING
callup_point = Callup Point
substitution = Subsititution
tab_data1 = PCASUB input
valuser = Application Area
IMPORTING
result = result
sub_data1 = PCASUB output
TABLES
tabnames = internal table include table name
EXCEPTIONS
not_found = 1
OTHERS = 2.
sub_data1 = PCASUB output 里面包含了返回的数据,也就是包含的Subsititution的值。
提前祝大家新年快乐!