SD 销售价格查询报表
来源:互联网 发布:如何查看淘宝订单评价 编辑:程序博客网 时间:2024/04/28 09:51
涉及的事务码 t_code : vb21 创建定价条件,v/ld 查询定价
text symbol
B01 带删除标志的 12 12
B02 带冻结标志的 12 12
B03 只显示最新价格 14 14
B04 显示阶梯报价 12 15
B05 只显示阶梯报价 14 15
B06 不显示阶梯报价 14 15
B07 客户组+物料 11 15
B08 客户+物料 9 15
B09 物料 4 15
T01 查询类别 8 12
T02 主查询条件 10 12
T03 辅助筛选条件 12 12
selection text
P_CGM 客户组+物料
P_CM 客户+物料
P_DATAB 有效起始日期
P_DEL 带删除标识
P_DQXSJ 只显示当前价格
P_JTBJ1 显示阶梯报价
P_JTBJ2 只显示阶梯报价
P_JTBJ3 不显示阶梯报价
P_KDGRP 客户组
P_KFRST 显示冻结的
P_KSCHL 条件类型
P_KUNNR 客户
P_MATKL 物料组
P_MATNR 物料
P_MM 物料
P_VKORG 销售组织
P_VTWEG 分销渠道
P_ZXXSJ 只显示最新价格
source code
________ ______________________________
*&---------------------------------------------------------------------*
*& Report YSDR0040
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT ysdr0040 MESSAGE-ID 1000.
INCLUDE y_alv_func.
INCLUDE zabap_public.
INCLUDE <icon>.
TABLES: a903,mara,a304,a305,konp,kona.
**IT_SHOW显示内标
**销售组织/分销渠道/客户组/物料
**客户/物料
**物料
DATA:BEGIN OF it_show OCCURS 0,
khlx TYPE string ,"客户类型 pr01 国内 pro3 海外
kschl LIKE a903-kschl,"条件类型
vtext LIKE t685t-vtext,"条件类型描述
vkorg LIKE a903-vkorg,"销售组织
vtweg LIKE a903-vtweg,"分销渠道
kdgrp LIKE a903-kdgrp,"客户组
ktext LIKE t151t-ktext,"客户组描述
kunnr LIKE a305-kunnr,"客户
name1 LIKE kna1-name1,"客户描述
matnr LIKE a903-matnr,"物料号
maktx LIKE makt-maktx,"物料描述
datab LIKE a903-datab,"出厂有效起始日
datbi LIKE a903-datbi,"出厂有效截止日期
knumh LIKE a903-knumh,"出厂记录号
kfrst LIKE a903-kfrst,"出产批准状态
kbetr LIKE konp-kbetr,"出厂价格
konwa LIKE konp-konwa,"货币单位
kpein LIKE konp-kpein,"价格单位
kmein LIKE konp-kmein,"价格计量单位
kbetr1 LIKE konp-kbetr,"折扣比例
kbetr2 LIKE konp-kbetr,"销售价格
loevm_ko LIKE konp-loevm_ko,"删除标记
datab1 LIKE a903-datab,"折扣有效起始日
datbi1 LIKE a903-datbi,"折扣有效截止日期
knumh1 LIKE a903-knumh,"折扣记录号
kfrst1 LIKE a903-kfrst,"折扣批准状态
kschl1 LIKE a903-kschl,"折扣类型
loevm_ko1 LIKE konp-loevm_ko,"删除标记
datab2 LIKE a903-datab,"销售价格有效起始日
datbi2 LIKE a903-datbi,"销售价格截止日期
kfrst2 LIKE a903-kfrst,"销售价格批准状态
loevm_ko2 LIKE konp-loevm_ko,"删除标记
matkl LIKE mara-matkl,"物料组
knuma_ag LIKE konp-knuma_ag,"审批编号
knuma_ag1 LIKE konp-knuma_ag,"审批编号
klfn1 LIKE konm-klfn1,"阶梯报价
kstbm LIKE konm-kstbm,"阶梯数
kbetr3 LIKE konm-kbetr,"阶梯报价
jtbz(4) TYPE c,"阶梯报价标志
* zxxsj TYPE c,"最新销售价
* kbstat LIKE a903-kbstat,"定价的处理状态
zxzk TYPE c,"最新折扣
dqjg TYPE c,"当前价格
END OF it_show.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-t01.
SELECTION-SCREEN BEGIN OF LINE.
*客户组+物料
PARAMETERS:p_cgm TYPE c RADIOBUTTON GROUP g1 USER-COMMAND g2 .
SELECTION-SCREEN COMMENT 3(15) text-b07 FOR FIELD p_jtbj1.
SELECTION-SCREEN POSITION 20.
*客户+物料
PARAMETERS:p_cm TYPE c RADIOBUTTON GROUP g1 .
SELECTION-SCREEN COMMENT 23(15) text-b08 FOR FIELD p_jtbj2.
SELECTION-SCREEN POSITION 40.
*物料
PARAMETERS:p_mm TYPE c RADIOBUTTON GROUP g1 .
SELECTION-SCREEN COMMENT 43(20) text-b09 FOR FIELD p_jtbj3.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK b1.
SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text-t02 .
PARAMETERS: p_datab LIKE a903-datab OBLIGATORY DEFAULT sy-datum."sy-datum.
SELECT-OPTIONS: p_kfrst1 FOR kona-kfrst NO-DISPLAY."审核状态
SELECT-OPTIONS: p_vkorg FOR a903-vkorg MODIF ID g2,"销售组织
p_vtweg FOR a903-vtweg MODIF ID g2,"分销渠道
p_kdgrp FOR a903-kdgrp MODIF ID g3 DEFAULT '01',"客户组 .
p_kunnr FOR a305-kunnr MODIF ID g4,"客户号
p_matkl FOR mara-matkl MODIF ID g2,"物料组
p_matnr FOR mara-matnr MODIF ID g2,"物料号
p_matnr1 FOR mara-matnr MODIF ID g2 NO-DISPLAY,"物料号
p_del1 FOR konp-loevm_ko NO-DISPLAY,"删除
p_kschl FOR a903-kschl MODIF ID g2."条件类型
SELECTION-SCREEN END OF BLOCK b2.
SELECTION-SCREEN BEGIN OF BLOCK b3 WITH FRAME TITLE text-t03 .
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS:p_del TYPE c AS CHECKBOX ."删除标记 DEFAULT 'X'
SELECTION-SCREEN COMMENT 3(15) text-b01 FOR FIELD p_del.
SELECTION-SCREEN POSITION 20.
PARAMETERS: p_kfrst TYPE c AS CHECKBOX."审批状态
SELECTION-SCREEN COMMENT 23(15) text-b02 FOR FIELD p_kfrst.
SELECTION-SCREEN POSITION 40.
PARAMETERS: p_zxxsj TYPE c AS CHECKBOX DEFAULT ''."最新销售价格
SELECTION-SCREEN COMMENT 43(20) text-b03 FOR FIELD p_zxxsj.
SELECTION-SCREEN END OF LINE.
PARAMETERS: p_dqxsj TYPE c AS CHECKBOX DEFAULT 'X' ."当前价格
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS:p_jtbj1 TYPE c RADIOBUTTON GROUP g2. "显示阶梯报价
SELECTION-SCREEN COMMENT 3(15) text-b04 FOR FIELD p_jtbj1.
SELECTION-SCREEN POSITION 20.
PARAMETERS:p_jtbj2 TYPE c RADIOBUTTON GROUP g2. "只显示阶梯报价
SELECTION-SCREEN COMMENT 23(15) text-b05 FOR FIELD p_jtbj2.
SELECTION-SCREEN POSITION 40.
PARAMETERS:p_jtbj3 TYPE c RADIOBUTTON GROUP g2. "不显示阶梯报价
SELECTION-SCREEN COMMENT 43(20) text-b06 FOR FIELD p_jtbj3.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK b3.
SELECT-OPTIONS: p_dd FOR sy-datum NO-DISPLAY."
*selection-screen end of block b3.
INITIALIZATION.
p_cgm = 'X'.
p_jtbj3 = 'X'.
AT SELECTION-SCREEN OUTPUT.
ucomm = sy-ucomm .
LOOP AT SCREEN.
CASE screen-group1.
WHEN 'G3'.
IF p_cgm = 'X' .
screen-active = '1'.
ELSE.
screen-active = '0'.
ENDIF.
WHEN 'G4'.
IF p_cm = 'X' .
screen-active = '1'.
ELSE.
screen-active = '0'.
ENDIF.
WHEN 'G5'.
IF p_mm = 'X' .
screen-active = '1'.
ELSE.
screen-active = '0'.
ENDIF.
ENDCASE.
MODIFY SCREEN.
ENDLOOP.
START-OF-SELECTION.
IF p_cgm = 'X'.
IF p_kdgrp IS INITIAL.
my_exit '必须输入客户组查询条件' ''.
ENDIF.
PERFORM get_data_903.
* PERFORM show_data.
ENDIF.
IF p_cm = 'X'.
my_exit '此功能尚未开发' 'I'.
IF p_kunnr IS INITIAL.
my_exit '必须输入客户查询条件' ''.
ENDIF.
* PERFORM get_data_305.
* PERFORM show_data.
ENDIF.
IF p_mm = 'X'.
my_exit '此功能尚未开发' 'I'.
* PERFORM get_data_304.
ENDIF.
PERFORM show_data.
*&---------------------------------------------------------------------*
*& Form GET_DATA_903
*&---------------------------------------------------------------------*
* text 按客户组+物料查询数据
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM get_data_903 .
CLEAR: it_show[],p_del1[],p_matnr1[], p_kfrst1[].
DATA:it_903 LIKE TABLE OF a903 WITH HEADER LINE."出厂价内表
DATA:it_903zk LIKE TABLE OF a903 WITH HEADER LINE."当前出厂价格区间内的折扣
DATA:it_903zk1 LIKE TABLE OF a903 WITH HEADER LINE."所有折扣内表
DATA:it_903zk2 LIKE TABLE OF a903 WITH HEADER LINE."当前出厂价格区间内的折扣
DATA:wa_903 LIKE a903.
DATA::BEGIN OF t_konp .
INCLUDE STRUCTURE konp.
DATA:kfrst1 LIKE kona-kfrst.
DATA:: END OF t_konp.
DATA:it_konp LIKE HASHED TABLE OF t_konp WITH UNIQUE KEY knumh kopos.
DATA:wa_konp LIKE t_konp.
DATA:tabidx TYPE i,datdiff TYPE i,line TYPE i.
** 根据物料组查询物料
IF p_matnr IS INITIAL AND p_matkl IS NOT INITIAL.
SELECT matnr FROM mara
INTO p_matnr-low
WHERE matkl IN p_matkl AND lvorm <> 'X'.
p_matnr-option = 'EQ'.
p_matnr-sign = 'I'.
APPEND p_matnr.
ENDSELECT.
ENDIF.
**当选择了删除或者冻结标记的时候不到物料级查询
IF p_del IS INITIAL .
p_del1-low = 'X'.
p_del1-sign = 'I'.
p_del1-option = 'NE'.
APPEND p_del1.
ENDIF.
IF p_kfrst IS INITIAL .
p_kfrst1-low = 'A'.
p_kfrst1-sign = 'I'.
p_kfrst1-option = 'NE'.
APPEND p_kfrst1.
ENDIF.
** 查询客户组PR01和PR03的出厂价knuma_ag
SELECT
* mandt
kappl
kschl
vkorg
vtweg
kdgrp
matnr
kfrst
datbi
datab
kbstat
knumh
FROM a903
* INNER JOIN konh
* ON knumh = konh~knumh
INTO CORRESPONDING FIELDS OF TABLE it_903
WHERE vkorg IN p_vkorg AND vtweg IN p_vtweg
AND matnr IN p_matnr
AND kdgrp IN p_kdgrp AND kappl = 'V'
AND datbi >= p_datab "起始日期小于等于条件日期
AND kschl IN ('PR01','PR03')
AND kschl IN p_kschl"条件类型
AND EXISTS (
SELECT knumh FROM konp
WHERE a903~knumh = konp~knumh
AND
(
EXISTS (
SELECT knuma FROM kona WHERE konp~knuma_ag = kona~knuma AND
konp~loevm_ko IN p_del1 AND kona~kfrst IN p_kfrst1
)
OR konp~knuma_ag = ''
)
)
* AND kfrst IN p_kfrst"审批状态
* AND datab >= p_datab. "起始日期小于等于条件日期
.
** 排除客户组中已维护的物料
CLEAR p_matnr1[].
p_matnr1-low = '999999999999999999'.
p_matnr1-sign = 'I'.
p_matnr1-option = 'EQ'.
APPEND p_matnr1.
LOOP AT it_903 WHERE kschl NE 'PR03'.
p_matnr1-low = it_903-matnr.
p_matnr1-sign = 'I'.
p_matnr1-option = 'EQ'.
APPEND p_matnr1.
ENDLOOP.
** 查询海外ZK05,ZK06和国内ZK01,ZK02的折扣
SELECT
* mandt
kappl
kschl
vkorg
vtweg
kdgrp
matnr
kfrst
datbi
datab
kbstat
knumh
FROM a903
* INNER JOIN konh
* ON knumh = konh~knumh
INTO CORRESPONDING FIELDS OF TABLE it_903zk1
WHERE vkorg IN p_vkorg AND vtweg IN p_vtweg
AND matnr IN p_matnr
AND kdgrp IN p_kdgrp AND kappl = 'V' AND kschl IN ('ZK01','ZK05')
AND datbi >= p_datab "起始日期小于等于条件日期
AND EXISTS (
SELECT knumh FROM konp
WHERE a903~knumh = konp~knumh
AND
(
EXISTS (
SELECT knuma FROM kona WHERE konp~knuma_ag = kona~knuma AND
konp~loevm_ko IN p_del1 AND kona~kfrst IN p_kfrst1
)
OR konp~knuma_ag = ''
)
)
* AND a903~datab >= p_datab. "起始日期小于等于条件日期
* AND kschl IN p_kschl
* AND kfrst IN p_kfrst
.
** 查询物料级PR01和R03的出厂价
SELECT
mandt
kappl
kschl
vkorg
vtweg
* kunnr
matnr
kfrst
datbi
datab
kbstat
knumh
FROM a304
APPENDING CORRESPONDING FIELDS OF TABLE it_903
WHERE matnr IN ( SELECT matnr FROM a903
WHERE vkorg IN p_vkorg AND vtweg IN p_vtweg
AND matnr IN p_matnr
AND kdgrp IN p_kdgrp AND kappl = 'V' AND kschl IN ('ZK01','ZK05')
AND datbi >= p_datab "起始日期小于等于条件日期
AND EXISTS (
SELECT knumh FROM konp
WHERE a903~knumh = konp~knumh
AND
(
EXISTS (
SELECT knuma FROM kona WHERE konp~knuma_ag = kona~knuma AND
konp~loevm_ko IN p_del1 AND kona~kfrst IN p_kfrst1
)
OR konp~knuma_ag = ''
)
)
* AND a903~datab >= p_datab. "起始日期小于等于条件日期
)
AND matnr NOT IN p_matnr1
AND kschl IN ('PR01','PR03')
AND vkorg IN p_vkorg AND vtweg IN p_vtweg
AND datbi >= p_datab
AND kschl IN p_kschl."条件类型.
IF it_903[] IS INITIAL .
my_exit '没有出厂价数据' ''.
ENDIF.
* IF sy-subrc <> 0 .
* my_exit '没有折扣数据' ''.
* ENDIF.
IF it_903[] IS NOT INITIAL.
* 查询定价条件
SELECT konp~knumh
konp~kopos
konp~kbetr
konp~konwa
konp~kpein
konp~kmein
konp~loevm_ko
kona~kfrst AS kfrst1
konp~kschl
konp~knuma_ag
FROM konp
LEFT JOIN kona ON konp~knuma_ag = kona~knuma
INTO CORRESPONDING FIELDS OF TABLE it_konp
FOR ALL ENTRIES IN it_903
WHERE knumh = it_903-knumh
AND kopos = '01'
* AND kona~kfrst IN p_kfrst
.
IF sy-subrc <> 0 .
my_exit '出厂价没有定价条件数据' ''.
ENDIF.
ENDIF.
* 查询定价条件
IF it_903zk1[] IS NOT INITIAL.
SELECT konp~knumh
konp~kopos
konp~kbetr
konp~konwa
konp~kpein
konp~kmein
konp~loevm_ko
kona~kfrst AS kfrst1
konp~kschl
konp~knuma_ag
FROM konp
LEFT JOIN kona ON konp~knuma_ag = kona~knuma
APPENDING corresponding fields of table it_konp
FOR ALL ENTRIES IN it_903zk1
WHERE knumh = it_903zk1-knumh
AND kopos = '01'
* AND kona~kfrst IN p_kfrst
.
IF sy-subrc <> 0 .
my_exit '折扣没有定价条件数据' ''.
ENDIF.
ENDIF.
* DELETE it_konp WHERE loevm_ko = 'X' and kschl = 'ZK01' OR KSCHL = 'ZK01' .
** 存放最新定价的变量
DATA:knumh LIKE a903-knumh,knumh1 LIKE a903-knumh,datab LIKE a903-datab.
** 是否有折扣的变量
DATA:zkcount TYPE i .
LOOP AT it_903.
CLEAR:datab,knumh,zkcount,it_show,it_903zk[],it_903zk2[],it_903zk,it_903zk1,it_903zk2.
knumh = it_903-knumh .
MOVE-CORRESPONDING it_903 TO it_show.
IF it_show-kschl = 'PR01'.
it_show-khlx = '国内'.
ELSE.
it_show-khlx = '海外'.
ENDIF.
** 读取出厂定价条件
READ TABLE it_konp INTO wa_konp WITH TABLE KEY knumh = knumh kopos = '01'.
IF sy-subrc <> 0 .
CONCATENATE '信息记录:' knumh '读取条件时出现错误' INTO msg.
my_exit msg 'I'.
ENDIF.
it_show-loevm_ko = wa_konp-loevm_ko."删除标记
IF p_del IS INITIAL AND it_show-loevm_ko = 'X' .
CONTINUE.
ENDIF.
it_show-knuma_ag = wa_konp-knuma_ag."条件
* it_show-kschl = wa_konp-kschl."条件类型
it_show-kfrst = wa_konp-kfrst1 ."批准状态
IF p_kfrst IS INITIAL AND it_show-kfrst = 'A' .
CONTINUE.
ENDIF.
it_show-kbetr = wa_konp-kbetr."出厂价格
it_show-konwa = wa_konp-konwa."货币单位
it_show-kpein = wa_konp-kpein."价格单位
it_show-kmein = wa_konp-kmein."价格计量单位
** 将有效数据灌入表it_903zk1内
LOOP AT it_903zk1 WHERE
vkorg = it_show-vkorg
AND vtweg = it_show-vtweg
* AND kdgrp = it_show-kdgrp
AND matnr = it_show-matnr
AND ( kschl = 'ZK01' OR kschl = 'ZK05' )
AND (
* 中间
(
datab >= it_show-datab
AND datbi <= it_show-datbi
)
OR
** 结尾
(
datab <= it_show-datbi
AND datbi >= it_show-datbi
)
OR
** 开头
(
datab <= it_show-datab
AND datbi >= it_show-datab
)
)
.
IF it_show-kschl = 'PR01'.
IF it_903zk1-kschl <> 'ZK01'.
CONTINUE.
ENDIF.
ELSE.
IF it_903zk1-kschl <> 'ZK05'.
CONTINUE.
ENDIF.
ENDIF.
** 处理客户组问题
CLEAR it_903zk2.
IF it_903-kdgrp IS NOT INITIAL AND it_903zk1-kdgrp IS NOT INITIAL.
IF it_903-kdgrp <> it_903zk1-kdgrp .
CONTINUE.
ENDIF.
ELSEIF it_903-kdgrp IS INITIAL.
it_show-kdgrp = it_903zk1-kdgrp .
ENDIF.
** 读取折扣定价条件
READ TABLE it_konp INTO wa_konp WITH TABLE KEY knumh = it_903zk1-knumh kopos = '01'.
IF sy-subrc <> 0 .
CONCATENATE '信息记录:' it_903zk1-knumh '读取条件时出现错误' INTO msg.
my_exit msg 'I'.
ENDIF.
IF p_del IS INITIAL AND wa_konp-loevm_ko = 'X' .
CONTINUE.
ENDIF.
IF p_kfrst IS INITIAL AND wa_konp-kfrst1 = 'A' .
CONTINUE.
ENDIF.
** 折扣日期此时起用作为出厂价日期的临时变量
** 如果开始日期大于折扣开始日期价格开始日期为出厂价日期
IF it_show-datab >= it_903zk1-datab.
it_903zk1-datab = it_show-datab.
ENDIF.
** 如果结束日期小于折扣结束日期价格结束日期为出厂价日期
IF it_show-datbi <= it_903zk1-datbi.
it_903zk1-datbi = it_show-datbi.
ENDIF.
APPEND it_903zk1 TO it_903zk .
APPEND it_903zk1 TO it_903zk2 .
ENDLOOP.
** 按起始日期排序
SORT it_903zk2 BY datbi datab .
line = LINES( it_903zk2 ).
CLEAR tabidx.
**处理头和尾的日期。
LOOP AT it_903zk2 INTO it_903zk .
CLEAR wa_903.
tabidx = sy-tabix + 1 .
IF sy-tabix = 1.
datdiff = it_show-datab - it_903zk-datab .
IF datdiff < 0 .
wa_903-datab = it_show-datab .
wa_903-datbi = it_903zk-datab - 1 .
INSERT wa_903 INTO it_903zk INDEX 1.
ENDIF.
ENDIF.
* IF tabidx > 2 .
* READ TABLE it_903zk2 INTO it_903zk1 INDEX tabidx .
* IF sy-subrc = 0.
* datdiff = it_903zk1-datab - it_903zk-datbi .
* IF datdiff > 0 .
* wa_903-datab = it_903zk-datbi + 1.
* wa_903-datbi = it_903zk1-datab - 1 .
* APPEND wa_903 TO it_903zk .
* ENDIF.
* ENDIF.
* ENDIF.
IF tabidx > line.
datdiff = it_show-datbi - it_903zk-datbi .
IF datdiff > 0 .
wa_903-datab = it_903zk-datbi + 1.
wa_903-datbi = it_show-datbi .
APPEND wa_903 TO it_903zk .
ENDIF.
EXIT.
ENDIF.
ENDLOOP.
** 客户组描述
SELECT SINGLE ktext FROM t151t
INTO it_show-ktext
WHERE spras = '1' AND
kdgrp = it_show-kdgrp.
** 物料描述
SELECT SINGLE maktx FROM makt
INTO it_show-maktx
WHERE spras = '1' AND
matnr = it_show-matnr.
** 物料描述
SELECT SINGLE matkl FROM mara
INTO it_show-matkl
WHERE matnr = it_show-matnr
AND lvorm <> 'X'.
IF sy-subrc <> 0.
CONTINUE.
ENDIF.
** 分段切割日期数据
LOOP AT it_903zk .
** 添加没有折扣的出厂价时间段
it_show-datab2 = it_903zk-datab.
it_show-datbi2 = it_903zk-datbi.
IF it_903zk-knumh IS INITIAL.
zkcount = zkcount + 1.
it_show-kbetr2 = it_show-kbetr.
APPEND it_show.
CONTINUE.
ENDIF.
** 读回折扣日期字段
READ TABLE it_903zk1 WITH KEY knumh = it_903zk-knumh.
IF sy-subrc = 0 .
it_show-datab1 = it_903zk1-datab."折扣有效起始日
it_show-datbi1 = it_903zk1-datbi."折扣有效截止日期
ELSE.
it_show-datab1 = it_903zk-datab."折扣有效起始日
it_show-datbi1 = it_903zk-datbi."折扣有效截止日期
ENDIF.
** 读取折扣定价条件
READ TABLE it_konp INTO wa_konp WITH TABLE KEY knumh = it_903zk-knumh kopos = '01'.
IF sy-subrc <> 0 .
CONCATENATE '信息记录:' it_903zk-knumh '读取条件时出现错误' INTO msg.
my_exit msg 'I'.
ENDIF.
it_show-loevm_ko1 = wa_konp-loevm_ko."删除标记
IF p_del IS INITIAL AND it_show-loevm_ko1 = 'X' .
CONTINUE.
ENDIF.
it_show-knuma_ag1 = wa_konp-knuma_ag."条件
it_show-kfrst1 = wa_konp-kfrst1 ."批准状态
IF p_kfrst IS INITIAL AND it_show-kfrst1 = 'A' .
CONTINUE.
ENDIF.
** 数据库中此数扩大了10倍,程序中除回来
it_show-kbetr1 = wa_konp-kbetr / 10 ."折扣比例
zkcount = zkcount + 1.
* IF datab < it_903zk-datab .
* datab = it_903zk-datab.
* knumh1 = it_903zk-knumh .
* ENDIF.
** 折扣描述
SELECT SINGLE vtext FROM t685t
INTO it_show-vtext
WHERE spras = '1' AND
kvewe = 'A' AND
kappl = 'V' AND
kschl = it_903zk-kschl.
** 销售价格 = 出产价格 * ( 1 - 销售折扣)
it_show-kbetr2 = it_show-kbetr * ( 1 + it_show-kbetr1 / 100 ) ."销售价格
it_show-knumh1 = it_903zk-knumh."折扣记录号
* it_show-kfrst1 = it_903zk-kfrst."折扣批准状态
it_show-kschl1 = it_903zk-kschl."折扣类型
IF it_show-loevm_ko1 = 'X' OR it_show-loevm_ko = 'X'.
it_show-loevm_ko2 = 'X'."删除标记
ENDIF.
APPEND it_show.
ENDLOOP.
** 有折扣维护的
IF zkcount > 0.
* it_show-zxzk = 'X'.
* MODIFY it_show TRANSPORTING zxzk WHERE knumh = knumh AND knumh1 = knumh1 AND datab1 = datab.
ELSE."没有折扣的显示出厂价
* it_show-zxzk = 'X'.
it_show-kbetr2 = it_show-kbetr.
it_show-datab2 = it_show-datab.
it_show-datbi2 = it_show-datbi.
APPEND it_show.
ENDIF.
ENDLOOP.
*排除客户组为空的
DELETE it_show WHERE kdgrp IS INITIAL.
**最新价格
DATA: vkorg LIKE a903-vkorg,"销售组织
vtweg LIKE a903-vtweg,"分销渠道
kdgrp LIKE a903-kdgrp,"客户组
kschl LIKE a903-kschl ,
matnr LIKE a903-matnr.
DATA:wa_show LIKE it_show.
SORT it_show BY vkorg vtweg kdgrp matnr kschl datbi2 DESCENDING datab2 DESCENDING.
DATA: i TYPE i, datab2 LIKE it_show-datab2.
LOOP AT it_show .
i = sy-tabix.
IF vkorg = it_show-vkorg AND"销售组织
vtweg = it_show-vtweg AND"分销渠道
kdgrp = it_show-kdgrp AND"客户组
kschl = it_show-kschl AND"
matnr = it_show-matnr.
CONTINUE.
ELSE.
vkorg = it_show-vkorg."销售组织
vtweg = it_show-vtweg."分销渠道
kdgrp = it_show-kdgrp."客户组
kschl = it_show-kschl."客户组
matnr = it_show-matnr.
it_show-zxzk = 'X'.
MODIFY it_show.
ENDIF.
ENDLOOP.
** 只显示最新折扣
IF p_zxxsj IS NOT INITIAL.
DELETE it_show WHERE zxzk IS INITIAL.
ENDIF.
**处理阶梯报价
* KLFN1 like konm-KLFN1,"阶梯报价
* KSTBM like konm-KSTBM,"阶梯数
* KBETR3 like konm-KBETR,"阶梯报价
* jtbz(4) type c,"阶梯报价标志
DATA:it_konm LIKE TABLE OF konm WITH HEADER LINE.
* DATA:wa_show LIKE it_show.
LOOP AT it_show WHERE jtbz <> icon_graduate.
CLEAR: wa_show,it_konm[].
* SHIFT it_show-matnr UP TO '0' LEFT CIRCULAR.
SHIFT it_show-knuma_ag LEFT DELETING LEADING '0'.
SHIFT it_show-knuma_ag1 LEFT DELETING LEADING '0'.
SHIFT it_show-matnr LEFT DELETING LEADING '0'.
MODIFY it_show.
IF p_jtbj3 = 'X'."不显示阶梯报价
CONTINUE.
ENDIF.
SELECT mandt
knumh
kopos
klfn1
kstbm
kbetr
FROM konm
INTO CORRESPONDING FIELDS OF TABLE it_konm
WHERE knumh = it_show-knumh.
IF sy-subrc = 0 .
LOOP AT it_konm.
it_show-jtbz = icon_graduate .
it_show-klfn1 = it_konm-klfn1.
it_show-kstbm = it_konm-kstbm.
it_show-kbetr3 = it_konm-kbetr.
MOVE-CORRESPONDING it_show TO wa_show.
DELETE it_show.
** 销售价格 = 出产价格 * ( 1 - 销售折扣)
it_show-kbetr2 = it_show-kbetr3 * ( 1 + it_show-kbetr1 / 100 ) ."销售价格
APPEND wa_show TO it_show.
ENDLOOP.
ENDIF.
ENDLOOP.
IF p_jtbj2 = 'X'."只显示阶梯报价
DELETE it_show WHERE jtbz IS INITIAL.
ENDIF.
ENDFORM. " GET_DATA_903
*
*&---------------------------------------------------------------------*
*& Form SHOW_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM show_data .
LOOP AT it_show.
CLEAR p_dd[].
p_dd-sign = 'I'.
p_dd-option = 'BT'.
p_dd-low = it_show-datab2.
p_dd-high = it_show-datbi2.
APPEND p_dd.
IF sy-datum IN p_dd.
it_show-dqjg = 'X'.
ENDIF.
MODIFY it_show.
ENDLOOP.
IF p_dqxsj IS NOT INITIAL.
DELETE it_show WHERE dqjg IS INITIAL.
ENDIF.
alv_clear_data.
alv_add_data 'IT_SHOW' '' '' '' '' 'CHAR' 'DATAB' '出厂价起始日'.
alv_add_data 'IT_SHOW' '' '' '' '' 'CHAR' 'DATBI' '出厂价截止日'.
alv_add_data 'IT_SHOW' '' '' '' '' 'CHAR' 'VKORG' '销售组织'.
alv_add_data 'IT_SHOW' '' '' '' '' 'CHAR' 'VTWEG' '分销渠道'.
* alv_add_data 'IT_SHOW' '' '' '' '' 'CHAR' 'KHLX' '客户类型'.
IF p_cgm = 'X'.
alv_add_data 'IT_SHOW' '' '' '' '' 'CHAR' 'KDGRP' '客户组'.
alv_add_data 'IT_SHOW' '' '' '' '' 'CHAR' 'KTEXT' '客户组描述'.
ENDIF.
IF p_cm = 'X'.
alv_add_data 'IT_SHOW' '' '' '' '' 'CHAR' 'KUNNR' '客户'.
alv_add_data 'IT_SHOW' '' '' '' '' 'CHAR' 'NAME1' '客户描述'.
ENDIF.
alv_add_data 'IT_SHOW' '' '' '' '' 'CHAR' 'MATKL' '物料组'.
alv_add_data 'IT_SHOW' '' '' '' '' 'CHAR' 'MATNR' '物料号'.
alv_add_data 'IT_SHOW' '' '' '' '' 'CHAR' 'MAKTX' '物料描述'.
alv_add_data 'IT_SHOW' '' '' '' '' 'CHAR' 'KSCHL' '出厂价类型'.
alv_add_data 'IT_SHOW' '' '' '' '' 'CHAR' 'KFRST' '出厂价状态'.
alv_add_data 'IT_SHOW' '' '' '' '' 'CHAR' 'KNUMA_AG' '出厂价审批号'.
alv_add_data 'IT_SHOW' '' '' '' '' 'CHAR' 'KBETR' '出厂价格'.
alv_add_data 'IT_SHOW' '' '' '' '' 'CHAR' 'KONWA' '单位'.
alv_add_data 'IT_SHOW' '' '' '' '' 'CHAR' 'KPEIN' '价格单位'.
alv_add_data 'IT_SHOW' '' '' '' '' 'CHAR' 'KMEIN' '计量单位'.
alv_add_data 'IT_SHOW' '' '' '' '' 'CHAR' 'LOEVM_KO' '出厂价删除标记'.
alv_add_data 'IT_SHOW' '' '' '' '' 'CHAR' 'JTBZ' '阶梯标志'.
alv_add_data 'IT_SHOW' '' '' '' '' 'CHAR' 'KSTBM' '阶梯数'.
alv_add_data 'IT_SHOW' '' '' '' '' 'CHAR' 'KBETR3' '阶梯价格'.
alv_add_data 'IT_SHOW' '' '' '' '' 'CHAR' 'DATAB1' '折扣起始日'.
alv_add_data 'IT_SHOW' '' '' '' '' 'CHAR' 'DATBI1' '折扣截止日'.
alv_add_data 'IT_SHOW' '' '' '' '' 'CHAR' 'KSCHL1' '折扣类型'.
alv_add_data 'IT_SHOW' '' '' '' '' 'CHAR' 'KFRST1' '折扣价状态'.
alv_add_data 'IT_SHOW' '' '' '' '' 'CHAR' 'KNUMA_AG1' '折扣审批号'.
alv_add_data 'IT_SHOW' '' '' '' '' 'CHAR' 'VTEXT' '类型描述'.
alv_add_data 'IT_SHOW' '' '' '' '' 'CHAR' 'KBETR1' '折扣比例'.
alv_add_data 'IT_SHOW' '' '' '' '' 'CHAR' 'LOEVM_KO1' '折扣删除标记'.
alv_add_data 'IT_SHOW' '' '' '' '' 'CHAR' 'ZXZK' '最新价格'.
alv_add_data 'IT_SHOW' '' '' '' '' 'CHAR' 'DQJG' '当前价格'.
alv_add_data 'IT_SHOW' '' '' '' '' 'CHAR' 'KBETR2' '销售实价'.
alv_add_data 'IT_SHOW' '' '' '' '' 'CHAR' 'DATAB2' '销售价起始日'.
alv_add_data 'IT_SHOW' '' '' '' '' 'CHAR' 'DATBI2' '销售价截止日'.
alv_add_data 'IT_SHOW' '' '' '' '' 'CHAR' 'KNUMH' '出厂记录号'.
alv_add_data 'IT_SHOW' '' '' '' '' 'CHAR' 'KNUMH1' '折扣记录号'.
alv_show_data it_show.
ENDFORM. " SHOW_DATA
*&---------------------------------------------------------------------*
*& Form user_command
*&---------------------------------------------------------------------*
* text 处理双击事件
*----------------------------------------------------------------------*
* -->R_UCOMM text
* -->RS_SELFIELD text
*----------------------------------------------------------------------*
FORM user_command USING r_ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfield.
CASE r_ucomm.
WHEN '&IC1'.
* CASE rs_selfield-sel_tab_field.
* WHEN 'ITAB-VBELN'.
* SET PARAMETER ID 'AUN' FIELD rs_selfield-value.
* CALL TRANSACTION 'VA03' AND SKIP FIRST SCREEN.
* WHEN 'ITAB2-VBELN'.
* SET PARAMETER ID 'AUN' FIELD rs_selfield-value.
* CALL TRANSACTION 'VA03' AND SKIP FIRST SCREEN.
* ENDCASE.
* WHEN OTHERS.
ENDCASE.
ENDFORM. "user_command
- SD 销售价格查询报表
- abap-SD销售价格控制的增强
- sql语句分段分析(销售价格段分析报表)(第一部份)
- Magento查询历史完成订单的产品销售价格
- SD 送货清单报表
- 销售价格管理
- Magento根据sku查询在历史订单中的销售价格的SQL
- SD客户主数据、销售订单、销售价格、销售条件相关、交货单、销售凭证流、凭证状态常用表
- 用户无法保存SD报表ALV布局
- 报表查询条件
- hibernate报表查询语句
- 报表数据查询SQL
- SAP中的报表查询
- Hibernate报表查询
- 动态列报表查询
- 企业财务报表查询方式
- 错过了最好的销售价格
- 润乾报表发布参数报表和查询报表方式
- .net读取DLL产品版本号
- 查询字符串数组中是否存在指定的Val
- 面试必知的SQL语法
- 学习资料系列总结
- “天河一号”算一小时13亿人算340年
- SD 销售价格查询报表
- php的错误与异常处理(四)
- (C70)第九夜:血色终结 Blood -over- 汉化补丁
- Dspace之中文检索
- 字符设备驱动编写步骤
- 360推出第三代杀毒引擎——360QVM人工智能引擎
- Chrome右键/地址栏搜索自动跳转到google.com.hk解决办法
- [译文]GBAGuy的GBA ASM教材 目录
- jQuery 定时局部刷新