CT04创建特征后对于值得选项SAP支持四种方式。其中功能模块可以调用ABAP函数对值进行检查校验这就对特征值的选择和输入提供了很大的拓展可能。CT04-值-功能模块输入需要用到的函数以上图为例ZPP_TEST1需要为开发设置的函数名称及SE37能直接编辑的函数。所有输入的值会调用输入的函数进行值校验所以ZPP_TEST1这个函数是对输入值进行校验的函数入参和出参如下入参出参其中CHARACT_NO和CHARACT是特征的特性具体可以参照表CABN这里不做过多阐述。入参的VALUE为用户的输入值出参的VALUE_EX为函数的返回值及调用的这个函数可以对输入值进行一系列逻辑处理后返回一个值。为便于理解我们举一个最简单的例子公司默认宽是2该特征是面积要求用户输长。那么ZPP_TEST1就可以写成FUNCTION ZPP_TEST1. *---------------------------------------------------------------------- **本地接口 * IMPORTING * REFERENCE(CHARACT_NO) LIKE CABN-ATINN * REFERENCE(CHARACT) LIKE CABN-ATNAM * REFERENCE(VALUE) LIKE CAWN-ATWRT * EXPORTING * REFERENCE(VALUE_EX) TYPE CAWN-ATWRT * EXCEPTIONS * NOT_FOUND *---------------------------------------------------------------------- value_ex value*2. ENDFUNCTION.其中VALUE为输入的长VALUE_EX为返回的面积函数里写逻辑 面积 长*宽。OK这是校验函数。同时SAP在代码层面还写死了输入的函数_F4为搜索帮助函数输入的函数_DC为值描述函数。在本例中另外写一个函数ZPP_TEST1_F4作为搜索帮助的函数能够显示可以选择的函数。入参和出参就不贴图了直接附上代码FUNCTION zpp_test1_f4. *---------------------------------------------------------------------- **本地接口 * IMPORTING * REFERENCE(CHARACT_NO) TYPE CABN-ATINN * REFERENCE(CHARACT) TYPE CABN-ATNAM * VALUE(DISPLAY) DEFAULT X * REFERENCE(ADDITIONAL_VALUES) TYPE CABN-ATSON * REFERENCE(MULTIPLE_VALUES) TYPE RCTMV-ATLIS * REFERENCE(LANGUAGE) TYPE SY-LANGU * REFERENCE(DISPLAY_WITH_LANGUAGE) * EXPORTING * REFERENCE(VALUE_EX) TYPE CAWN-ATWRT * TABLES * VALUES STRUCTURE RCTVALUES再写一个函数ZPP_TEST1_DC作为值描述的函数能够根据输入的值返回值的描述。FUNCTION zpp_test1_dc . *---------------------------------------------------------------------- **本地接口 * IMPORTING * REFERENCE(CHARACT_NO) TYPE CABN-ATINN * REFERENCE(CHARACT) TYPE CABN-ATNAM * REFERENCE(VALUE) TYPE CAWN-ATWRT * REFERENCE(LANGUAGE) TYPE SY-LANGU * EXPORTING * REFERENCE(DESCRIPTION) TYPE CAWNT-ATWTB * EXCEPTIONS * NOT_FOUND *----------------------------------------------------------------------以上两个为SAP在代码层面直接写死的情况需按规则描述感兴趣的小伙伴可以DEBUG查一下。对ZPP_TEST1_F4函数需要注意因为搜索帮助的显示通常是一个表结构双击后返回值是读表的第一个值所以需要清空表保留需要的值或者插入把选择值写到表的第一行这是开发层面需要考虑的问题。参考链接Entering a Function Module - SAP Documentation