*&---------------------------------------------------------------------*
*& Report Z_TEST_ZHANG
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT Z_TEST_ZHANG NO STANDARD PAGE HEADING
LINE-SIZE 300
LINE-COUNT 300.
TABLES:ZBUSB_T5010.
*契約形態のダウンリストの定義
TYPE-POOLS: VRM .
DATA: NAME TYPE VRM_ID ,
LIST TYPE VRM_VALUES ,
VALUE LIKE LINE OF LIST .
DATA: t_answer, "ポップアップの戻り値
cond(72) TYPE C,
ITAB_ERR LIKE TABLE OF cond,"エラーメッセージ
where(72) TYPE C,
itab_where LIKE TABLE OF where.
*レポート用項目構造
TYPES:
BEGIN OF strt_obj_data,
jc_dp_no TYPE ZBUSB_T5010-jc_dp_no, "受注伝票番号
od_no TYPE ZBUSB_T5010-od_no, "オーダNO
sod_hk_dt TYPE ZBUSB_T5010-sod_hk_dt, "主オーダ発行年月日
ke_no TYPE ZBUSB_T5010-ke_no, "契約NO
ss_kky_cd TYPE ZBUSB_T5010-ss_kky_cd, "最終顧客コード
hb_kei_cd TYPE ZBUSB_T5010-hb_kei_cd, "販売形態
ke_kei_cd TYPE ZBUSB_T5010-ke_kei_cd, "契約形態コード
ps_no TYPE ZBUSB_T5020-ps_no, "POSNO
km_cd TYPE ZBUSB_T5020-km_cd, "型名
hin_sj TYPE ZBUSB_T5020-hin_sj, "品名
ps_oi_no TYPE ZBUSB_T5030-ps_oi_no, "POS追番
jc_sr TYPE ZBUSB_T5030-jc_sr, "受注数量
ke_gk TYPE ZBUSB_T5030-ke_gk, "契約合価
nk_frm_dt TYPE ZBUSB_T5030-nk_frm_dt, "納期From
nk_to_dt TYPE ZBUSB_T5030-nk_to_dt, "納期to
END OF strt_obj_data.
*一時比較用変数
DATA:
jcp_no_temp TYPE ZBUSB_T5010-jc_dp_no, "受注伝票番号
od_no_temp TYPE ZBUSB_T5010-od_no, "オーダNO
sod_hk_dt_temp TYPE ZBUSB_T5010-sod_hk_dt, "主オーダ発行年月日
ke_no_temp TYPE ZBUSB_T5010-ke_no, "契約NO
ps_no_temp TYPE ZBUSB_T5020-ps_no, "POSNO
ps_oi_no_temp TYPE ZBUSB_T5030-ps_oi_no. "
*ZBUSB_T5030のデータ構造
TYPES:
BEGIN OF strt_obj_data1,
jc_dp_no TYPE ZBUSB_T5030-jc_dp_no, "受注伝票番号
ps_oi_no TYPE ZBUSB_T5030-ps_oi_no, "POS追番
jc_sr TYPE ZBUSB_T5030-jc_sr, "受注数量
ke_gk TYPE ZBUSB_T5030-ke_gk, "契約合価
nk_frm_dt TYPE ZBUSB_T5030-nk_frm_dt, "納期From
nk_to_dt TYPE ZBUSB_T5030-nk_to_dt, "納期to
END OF strt_obj_data1.
DATA: obj_data type table of strt_obj_data."ZBUSB_T5010とZBUSB_T5020のデータ
DATA: sy_data type table of strt_obj_data."最終のデータ
data: ita_data1 type strt_obj_data."ZBUSB_T5010とZBUSB_T5020のデータ
data: ita_data2 type strt_obj_data1."ZBUSB_T5030のデータ
SELECTION-SCREEN BEGIN OF BLOCK BLOK1 WITH FRAME TITLE title.
SELECTION-SCREEN: BEGIN OF LINE.
SELECTION-SCREEN POSITION 8.
PARAMETERS: p1 RADIOBUTTON GROUP rad1.
SELECTION-SCREEN POSITION 2.
SELECTION-SCREEN COMMENT 12(8) TEXT-001.
SELECTION-SCREEN: END OF LINE.
SELECTION-SCREEN: BEGIN OF LINE.
SELECTION-SCREEN POSITION 8.
PARAMETERS: p2 RADIOBUTTON GROUP rad1.
SELECTION-SCREEN POSITION 2.
SELECTION-SCREEN COMMENT 12(12) TEXT-002.
SELECTION-SCREEN: END OF LINE.
SELECTION-SCREEN SKIP.
SELECTION-SCREEN COMMENT /3(13) TEXT-003.
SELECTION-SCREEN: BEGIN OF LINE.
SELECTION-SCREEN POSITION 1.
SELECTION-SCREEN COMMENT 3(16) TEXT-004.
SELECTION-SCREEN POSITION 28.
PARAMETERS: p_dp_no TYPE char128.
SELECTION-SCREEN: END OF LINE.
SELECTION-SCREEN SKIP.
SELECTION-SCREEN COMMENT /3(17) TEXT-005.
SELECTION-SCREEN: BEGIN OF LINE.
SELECTION-SCREEN POSITION 1.
SELECTION-SCREEN COMMENT 3(22) TEXT-006.
SELECTION-SCREEN POSITION 33.
SELECT-OPTIONS s_tr_dt FOR ZBUSB_T5010-TR_DT.
SELECTION-SCREEN: END OF LINE.
SELECTION-SCREEN: BEGIN OF LINE.
SELECTION-SCREEN POSITION 1.
SELECTION-SCREEN COMMENT 3(29) TEXT-007.
SELECTION-SCREEN POSITION 33.
SELECT-OPTIONS s_ko_tm FOR ZBUSB_T5010-OL_KO_TM.
SELECTION-SCREEN: END OF LINE.
SELECTION-SCREEN: BEGIN OF LINE.
SELECTION-SCREEN POSITION 1.
SELECTION-SCREEN COMMENT 3(29) TEXT-008.
SELECTION-SCREEN POSITION 36.
PARAMETERS: p_od_no TYPE char16.
SELECTION-SCREEN: END OF LINE.
SELECTION-SCREEN: BEGIN OF LINE.
SELECTION-SCREEN POSITION 1.
SELECTION-SCREEN COMMENT 3(29) TEXT-009.
SELECTION-SCREEN POSITION 33.
SELECT-OPTIONS s_hk_dt FOR ZBUSB_T5010-SOD_HK_DT.
SELECTION-SCREEN: END OF LINE.
SELECTION-SCREEN: BEGIN OF LINE.
SELECTION-SCREEN POSITION 1.
SELECTION-SCREEN COMMENT 3(29) TEXT-010.
SELECTION-SCREEN POSITION 36.
PARAMETERS: P_LIST(20) TYPE C AS LISTBOX
VISIBLE LENGTH 25.
SELECTION-SCREEN: END OF LINE.
SELECTION-SCREEN END OF BLOCK BLOK1.
INITIALIZATION.
title = '検索条件'.
AT SELECTION-SCREEN OUTPUT .
REFRESH LIST .
VALUE-KEY = 'D' .
VALUE-TEXT = '買取/一括払い' .
APPEND VALUE TO LIST .
VALUE-KEY = 'A' .
VALUE-TEXT = '月額払い/自社通常レンタル' .
APPEND VALUE TO LIST .
VALUE-KEY = 'B' .
VALUE-TEXT = '自社3年定期レンタル' .
APPEND VALUE TO LIST .
VALUE-KEY = 'C' .
VALUE-TEXT = '自社4年定期レンタル' .
APPEND VALUE TO LIST .
VALUE-KEY = 'H' .
VALUE-TEXT = '第三者通常レンタル' .
APPEND VALUE TO LIST .
VALUE-KEY = 'J' .
VALUE-TEXT = '第三者3年定期レンタル' .
APPEND VALUE TO LIST .
VALUE-KEY = 'K' .
VALUE-TEXT = '第三者4年定期レンタル' .
APPEND VALUE TO LIST .
VALUE-KEY = 'G' .
VALUE-TEXT = '全償却リース' .
APPEND VALUE TO LIST .
VALUE-KEY = 'E' .
VALUE-TEXT = 'PL' .
APPEND VALUE TO LIST .
VALUE-KEY = 'Q' .
VALUE-TEXT = '無償' .
APPEND VALUE TO LIST .
CALL FUNCTION 'VRM_SET_VALUES'
EXPORTING
ID = 'P_LIST'
VALUES = LIST.
START-OF-SELECTION.
IF p1 = 'X' .
IF p_dp_no IS INITIAL.
MESSAGE TEXT-011 TYPE 'I'.
ELSE.
PERFORM fm_selcect_tab.
ENDIF.
ENDIF.
IF p2 = 'X' .
IF s_tr_dt IS INITIAL AND s_ko_tm IS INITIAL AND p_od_no IS INITIAL AND
s_hk_dt IS INITIAL AND P_LIST IS INITIAL.
CALL FUNCTION 'POPUP_TO_CONFIRM_STEP'
EXPORTING
TITEL = '確認'
TEXTLINE1 = '全件表示されますが'
TEXTLINE2 = 'よろしいですか?'
CANCEL_DISPLAY = SPACE
IMPORTING
ANSWER = t_answer.
IF t_answer <> 'J'.
STOP.
ENDIF.
P_LIST = '%'.
ENDIF.
PERFORM fm_selcect_like.
IF t_answer = 'J'.
CLEAR P_LIST .
ENDIF.
CLEAR t_answer.
ENDIF.
REFRESH sy_data.
LOOP AT obj_data INTO ita_data1.
PERFORM fm_selcect_tab2.
ENDLOOP.
IF LINES( sy_data ) > 0.
PERFORM fm_print.
ENDIF.
IF LINES( ITAB_ERR ) > 0.
SKIP.
WRITE:/ 'エラー情報:'.
LOOP AT ITAB_ERR INTO cond.
WRITE:/ cond.
ENDLOOP.
ENDIF.
TOP-OF-PAGE.
PRINT-CONTROL SIZE 15.
WRITE 50'受注伝票一覧' HOTSPOT COLOR 5 INVERSE ON.
END-OF-SELECTION.
*&---------------------------------------------------------------------*
*& Form fm_selcect_tab
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM fm_selcect_tab.
SELECT
A~jc_dp_no
B~od_no B~sod_hk_dt A~ke_no
A~ss_kky_cd A~hb_kei_cd A~ke_kei_cd B~ps_no B~km_cd B~hin_sj
FROM ZBUSB_T5010 AS A
LEFT OUTER JOIN ZBUSB_T5020 AS B ON A~JC_DP_NO = B~JC_DP_NO
AND A~OD_NO = B~OD_NO
AND A~SOD_HK_DT = B~SOD_HK_DT
INTO ita_data1
WHERE A~JC_DP_NO = p_dp_no.
IF ita_data1-od_no IS INITIAL AND ita_data1-SOD_HK_DT IS INITIAL.
concatenate '受注伝票番号:' p_dp_no 'に副明細が存在しない。' into cond.
APPEND cond TO ITAB_ERR.
ELSE.
* write: / ita_data1-OD_NO,ita_data1-SOD_HK_DT,ita_data1-PS_NO.
APPEND ita_data1 TO obj_data.
CLEAR ita_data1.
ENDIF.
ENDSELECT.
IF sy-subrc <> 0.
MESSAGE TEXT-012 TYPE 'I'.
STOP.
ENDIF.
ENDFORM. "fm_selcect_tab
FORM fm_selcect_like.
concatenate '%' p_od_no '%' into p_od_no.
SELECT
A~jc_dp_no
B~od_no B~sod_hk_dt A~ke_no
A~ss_kky_cd A~hb_kei_cd A~ke_kei_cd B~ps_no B~km_cd B~hin_sj
FROM ZBUSB_T5010 AS A
LEFT OUTER JOIN ZBUSB_T5020 AS B ON A~JC_DP_NO = B~JC_DP_NO
AND A~OD_NO = B~OD_NO
AND A~SOD_HK_DT = B~SOD_HK_DT
INTO ita_data1
WHERE A~TR_DT IN s_tr_dt
AND A~ol_ko_tm IN s_ko_tm
AND A~sod_hk_dt IN s_hk_dt
AND A~od_no LIKE p_od_no
AND A~ke_kei_cd LIKE P_LIST.
IF ita_data1-od_no IS INITIAL AND ita_data1-SOD_HK_DT IS INITIAL.
concatenate '受注伝票番号:' ita_data1-jc_dp_no 'に副明細が存在しない。' into cond.
APPEND cond TO ITAB_ERR.
ELSE.
* write: / 'k',ita_data1-jc_dp_no.
write: / ita_data1-OD_NO,ita_data1-SOD_HK_DT,ita_data1-PS_NO.
APPEND ita_data1 TO obj_data.
CLEAR ita_data1.
ENDIF.
ENDSELECT.
IF sy-subrc <> 0.
MESSAGE TEXT-012 TYPE 'I'.
STOP.
ENDIF.
ENDFORM. "fm_selcect_tab
*&---------------------------------------------------------------------*
*& Form fm_selcect_tab2
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM fm_selcect_tab2.
SELECT
C~jc_dp_no
C~ps_oi_no C~jc_sr C~ke_gk C~nk_frm_dt C~nk_to_dt
FROM ZBUSB_T5020 AS B
LEFT OUTER JOIN ZBUSB_T5030 AS C ON B~JC_DP_NO = C~JC_DP_NO
AND B~OD_NO = C~OD_NO
AND B~SOD_HK_DT = C~SOD_HK_DT
AND B~PS_NO = C~PS_NO
INTO ita_data2
WHERE B~OD_NO = ita_data1-OD_NO AND B~SOD_HK_DT = ita_data1-SOD_HK_DT
AND B~PS_NO = ita_data1-PS_NO.
ita_data1-ps_oi_no = ita_data2-ps_oi_no.
ita_data1-jc_sr = ita_data2-jc_sr.
ita_data1-ke_gk = ita_data2-ke_gk.
ita_data1-nk_frm_dt = ita_data2-nk_frm_dt.
ita_data1-nk_to_dt = ita_data2-nk_to_dt.
IF ita_data1-ps_oi_no IS INITIAL OR ita_data2-jc_dp_no <> ita_data1-jc_dp_no.
concatenate '受注伝票番号:' ita_data1-jc_dp_no 'POSNO:' ita_data1-PS_NO 'にBUNデータが存在しない。' into cond.
APPEND cond TO ITAB_ERR.
ELSE.
APPEND ita_data1 TO sy_data.
WRITE:/'WOCAO:',ita_data1-OD_NO,ita_data1-ps_oi_no,ita_data1-PS_NO,ita_data1-sod_hk_dt.
* CLEAR ita_data1.
ENDIF.
* ENDIF.
ENDSELECT.
ENDFORM. "fm_selcect_tab2
FORM fm_print.
ULINE AT /(290).
FORMAT COLOR COL_NEGATIVE.
WRITE:/01 SY-VLINE,
02 '受注伝票番号',
26 'オーダNO',
57 '主オーダ発行年月日',
180 '契約NO',
214 '最終顧客コード',
239 '販売形態',
266 '契約形態コード',
290 SY-VLINE.
FORMAT COLOR COL_TOTAL.
WRITE:/01 SY-VLINE,
15 'POSNO',
41 '型名',
76 '品名',
290 SY-VLINE.
FORMAT COLOR COL_HEADING.
WRITE:/01 SY-VLINE,
57 '主オーダ発行年月日',
57 'POS追番',
201 '受注数量',
229 '契約合価',
254 '納期From',
280 '納期To',
290 SY-VLINE.
FORMAT COLOR COL_BACKGROUND.
LOOP AT sy_data INTO ita_data1.
IF ita_data1-jc_dp_no <> jcp_no_temp OR ita_data1-sod_hk_dt <> sod_hk_dt_temp
OR ita_data1-od_no <> od_no_temp.
jcp_no_temp = ita_data1-jc_dp_no.
sod_hk_dt_temp = ita_data1-sod_hk_dt.
od_no_temp = ita_data1-od_no.
WRITE:/01 SY-VLINE,
02 ita_data1-jc_dp_no,
26 ita_data1-od_no,
57 ita_data1-sod_hk_dt,
180 ita_data1-ke_no,
214 ita_data1-ss_kky_cd,
239 ita_data1-hb_kei_cd,
266 ita_data1-ke_kei_cd,
290 SY-VLINE.
ENDIF.
IF ita_data1-jc_dp_no = jcp_no_temp AND ita_data1-sod_hk_dt = sod_hk_dt_temp AND
ita_data1-od_no = od_no_temp AND
( ita_data1-ps_no <> ps_no_temp ).
ps_no_temp = ita_data1-ps_no.
CLEAR ps_oi_no_temp.
WRITE:/01 SY-VLINE,
15 ita_data1-ps_no,
41 ita_data1-km_cd,
76 ita_data1-hin_sj,
290 SY-VLINE.
ENDIF.
IF ( ita_data1-ps_no = ps_no_temp AND ita_data1-od_no = od_no_temp ) AND ita_data1-ps_oi_no <> ps_oi_no_temp.
ps_oi_no_temp = ita_data1-ps_oi_no.
WRITE:/01 SY-VLINE,
57 ita_data1-ps_oi_no,
201 ita_data1-jc_sr,
229 ita_data1-ke_gk,
254 ita_data1-nk_frm_dt,
280 ita_data1-nk_to_dt,
290 SY-VLINE.
ENDIF.
CLEAR ita_data1.
ENDLOOP.
ULINE AT /(290).
ENDFORM.