修正1

来源:互联网 发布:为知笔记皮肤 编辑:程序博客网 时间:2024/04/30 01:51

*&---------------------------------------------------------------------*
*& 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. 

原创粉丝点击