SD--关于定价过程中的存储顺序的参考结构和参考字段的使用代码跟踪

阅读更多

在sap的定价配置中,我们常常会使用到参考结构和参考字段(条件表和存储顺序),这些字段是如何使用的呢,我带着这个好奇阅读了sap的源码(函数SD_COND_ACCESS),并将我的理解记录下来供大家参考。

Step 1 调用t682z_select子过程从T682Z读取存储顺序存储到t682z_tab
PERFORM t682z_select TABLES t682z_tab
USING t682i_i
CHANGING subrc.
并根据参考结构和参考字段拼接存放到内表的字段kommfield中
CONCATENATE t682z_buf-qustr '-' t682z_buf-qufna
INTO t682z_buf-kommfield.

Step 2 在子例程sel_kondtab中根据存储顺序里的参考结构和字段名提取参考结构的对应字段值
ASSIGN TABLE FIELD (proto_fld_tab-kommfield) TO .
proto_fld_tab-wert = .

注:proto_fld_tab-kommfield的值,如:KOMP-PRODH1

Step 3 在子例程sel_kondtab中拼接查询条件(放在coding_tab内表中)
* buffered with wrong value -> replace value
coding_template-value = proto_fld_tab-wert.
REPLACE ALL OCCURRENCES OF '''' IN proto_fld_tab-wert
WITH '''''' IN CHARACTER MODE.
CONCATENATE '''' proto_fld_tab-wert '''' INTO h_value.
CONCATENATE -zifna '=' h_value
INTO coding_template-line
SEPARATED BY ' '.
MODIFY coding_template INDEX sy-tabix TRANSPORTING value line.
IF first = yes.
first = no.
coding_tab = coding_template-line.
ELSE.
CONCATENATE 'AND' coding_template-line INTO coding_tab
SEPARATED BY ' '.
ENDIF.
ENDIF.
APPEND coding_tab.


Step 4 在子例程sel_kondtab中根据拼接(放在coding_tab内表中)出查询条件取读取条件记录。
SELECT * FROM (t681-kotab) APPENDING TABLE
UP TO 1 ROWS
WHERE kappl = se_kappl
AND kschl = se_kschl
AND (coding_tab).

注:t681-kotab为条件表名称如:A802 ;coding_tab内容参见下图

SD--关于定价过程中的存储顺序的参考结构和参考字段的使用代码跟踪_第1张图片

有了这些,我们对参考字段和参考结构的使用的理解就应该很容易了。

你可能感兴趣的:(Access,UP,F#)