SD--关于定价过程中的存储顺序的参考结构和参考字段的使用代码跟踪
在sap的定價(jià)配置中,我們常常會(huì)使用到參考結(jié)構(gòu)和參考字段(條件表和存儲(chǔ)順序),這些字段是如何使用的呢,我?guī)е@個(gè)好奇閱讀了sap的源碼(函數(shù)SD_COND_ACCESS),并將我的理解記錄下來(lái)供大家參考。
Step 1 調(diào)用t682z_select子過(guò)程從T682Z讀取存儲(chǔ)順序存儲(chǔ)到t682z_tab
PERFORM t682z_select TABLES t682z_tab
USING t682i_i
CHANGING subrc.
并根據(jù)參考結(jié)構(gòu)和參考字段拼接存放到內(nèi)表的字段kommfield中
CONCATENATE t682z_buf-qustr '-' t682z_buf-qufna
INTO t682z_buf-kommfield.
Step 2 在子例程sel_kondtab中根據(jù)存儲(chǔ)順序里的參考結(jié)構(gòu)和字段名提取參考結(jié)構(gòu)的對(duì)應(yīng)字段值
ASSIGN TABLE FIELD (proto_fld_tab-kommfield) TO <f>.
proto_fld_tab-wert = <f>.
注:proto_fld_tab-kommfield的值,如:KOMP-PRODH1
Step 3 在子例程sel_kondtab中拼接查詢(xún)條件(放在coding_tab內(nèi)表中)
* 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 <t682z>-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中根據(jù)拼接(放在coding_tab內(nèi)表中)出查詢(xún)條件取讀取條件記錄。
SELECT * FROM (t681-kotab) APPENDING TABLE <cond_tab>
UP TO 1 ROWS
WHERE kappl = se_kappl
AND kschl = se_kschl
AND (coding_tab).
注:t681-kotab為條件表名稱(chēng)如:A802 ;coding_tab內(nèi)容參見(jiàn)下圖
有了這些,我們對(duì)參考字段和參考結(jié)構(gòu)的使用的理解就應(yīng)該很容易了。
總結(jié)
以上是生活随笔為你收集整理的SD--关于定价过程中的存储顺序的参考结构和参考字段的使用代码跟踪的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: SD--订单最小量限制的增强
- 下一篇: PC上虚拟机中安装NW 7.02 ABA