zoukankan      html  css  js  c++  java
  • ZSDR017

    *----------------------------------------------------------------------
    *ZSDR017-客户订货价格和库存
    *----------------------------------------------------------------------
    
    REPORT ZSDR017 NO STANDARD PAGE HEADING
    MESSAGE-ID ZSD
    LINE-SIZE 132
    LINE-COUNT 65.
    
     
    
    *----------------------------------------------------------------------
    * TYPE-POOLS
    *----------------------------------------------------------------------
    TYPE-POOLS: SLIS, "ALV
    TRUXS.
    
    *----------------------------------------------------------------------
    * TABLES/Structure
    *----------------------------------------------------------------------
    TABLES: MARA,
    MARM,
    T179,
    KONP,
    MARD,
    KNA1,
    VBAK,
    TWVK,
    RV130.
    " zstatu ZSD008 ZSD13
    
    *----------------------------------------------------------------------
    * DAGTA /Internal table
    *----------------------------------------------------------------------
    *&(contain all)
    DATA: BEGIN OF IT_DATA OCCURS 0,
    MATNR LIKE MARA-MATNR,"kunnr ->model(s) ->matnr(s)
    PRDHA LIKE MARA-PRDHA,"产品层次
    ZMDNM LIKE MARA-ZMDNM,"型号
    UMREZ LIKE MARM-UMREZ,"单位
    MATKL LIKE MARA-MATKL,"品牌
    UMREZ1(10) TYPE C, "单位
    ZONGL(200) TYPE C, "总类别
    FENEL(200) TYPE C, "分类别
    STATU(50) TYPE C, "料状态
    XHTXT(100) TYPE C, "型号描述
    XHTXT1(100) TYPE C, "Internal comment
    KBETR LIKE KONP-KBETR,"价格:
    KCNGE LIKE MARD-LABST,"现库存
    DINSH LIKE MARD-LABST,"default 0,供用户输入
    LAST1 LIKE MARD-LABST,"最近一次订单数
    LAST2 LIKE MARD-LABST,"倒数第二次订单数
    LAST3 LIKE MARD-LABST,"倒数第三次订单数
    KONWA LIKE KONP-KONWA,
    
    END OF IT_DATA.
    DATA: WA_DATA LIKE IT_DATA.
    
    *&PDF:
    DATA: BEGIN OF IT_DATAP OCCURS 0,
    KUNNR LIKE KNA1-KUNNR,"kunnr
    ZMDNM LIKE MARA-ZMDNM,"型号 "Model to get matkl to decide log.
    MATKL LIKE MARA-MATKL,"brand
    
    ZONGL(200) TYPE C, "总类别 Main Category
    FENEL(200) TYPE C, "分类别 Sub Category
    STATU(50) TYPE C, "料状态 Status
    UMREZ1(10) TYPE C, "单位 MC Qty
    XHTXT(50) TYPE C, "型号描述 Item text
    XHTXT1(100) TYPE C, "Internal comment Prod Subhead
    *&CHAGNE ON 20140214.
    KBETR TYPE STRING,
    * KBETR LIKE KONP-KBETR,"价格:US$
    KCNGE LIKE MARD-LABST,"现库存 Current Availabile fixed value
    KCSHU(50) TYPE C, "库存 district
    END OF IT_DATAP.
    
    *&CSV:
    DATA: BEGIN OF IT_DATAC OCCURS 0,
    STATU(50) TYPE C, "料状态
    ZONGL(200) TYPE C, "总类别 Main Category
    FENEL(200) TYPE C, "分类别 Sub Category
    UMREZ1(10) TYPE C, "单位 MC Qty
    
    ZMDNM LIKE MARA-ZMDNM,"型号 Model Name
    KCNGE LIKE MARD-LABST,"现库存 Current Available
    KCSHU(50) TYPE C, "库存
    DINSH LIKE MARD-LABST,"default 0,供用户输入 Ordered Qty
    LAST1 LIKE MARD-LABST,"最近一次订单数 Last-1 Ordered Qty
    LAST2 LIKE MARD-LABST,"倒数第二次订单数 Last-1 Ordered Qty
    LAST3 LIKE MARD-LABST,"倒数第三次订单数 Last-1 Ordered Qty
    END OF IT_DATAC.
    
    DATA:ITAB1 TYPE TRUXS_T_TEXT_DATA,
    WA_ITAB1 LIKE LINE OF ITAB1.
    
    *----------------------------------------------------------------------
    * Data parameters for alv report use
    *----------------------------------------------------------------------
    DATA: G_PROGRAM TYPE SY-REPID,
    GW_LAYOUT TYPE SLIS_LAYOUT_ALV,
    GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
    WA_FIELDCAT TYPE SLIS_FIELDCAT_ALV,
    GT_EVENT TYPE SLIS_T_EVENT,
    WA_EVENT TYPE SLIS_ALV_EVENT,
    TOP_OF_PAGE TYPE SLIS_T_LISTHEADER.
    
    DATA: G_GRID TYPE REF TO CL_GUI_ALV_GRID.
    DATA L_LEN TYPE I.
    
    CONSTANTS:ER_FORMNAME_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE 'TOP_OF_PAGE'.
    DATA:G_FILE LIKE RLGRAP-FILENAME.
    DATA:S_FILE LIKE RLGRAP-FILENAME.
    DATA:LINE(1000) TYPE C.
    
    *======================================================================
    * SELECTION-SCREEN
    *======================================================================
    SELECTION-SCREEN BEGIN OF BLOCK BLK1 WITH FRAME TITLE TEXT-001.
    
    PARAMETERS: P_KUNNR LIKE KNA1-KUNNR OBLIGATORY,
    P_KSCHL LIKE TWVK-KSCHL DEFAULT 'ZP01'.
    
    *S_KUNNR FOR KNA1-KUNNR,
    SELECT-OPTIONS: S_MATNR FOR MARA-MATNR. "NO-DISPLAY.
    SELECT-OPTIONS: S_VKORG FOR VBAK-VKORG DEFAULT '1100',
    S_VTWEG FOR VBAK-VTWEG DEFAULT '10'.
    
    PARAMETERS: P_ERDAT LIKE MARA-ERSDA DEFAULT SY-DATUM.
    
    SELECTION-SCREEN SKIP 1.
    
    PARAMETERS:P_SEFILE LIKE RLGRAP-FILENAME DEFAULT '/mnt/ReceiveFromMG/Report/'.
    
    SELECTION-SCREEN SKIP 1.
    
    SELECTION-SCREEN BEGIN OF BLOCK BLK2 WITH FRAME TITLE TEXT-002.
    PARAMETERS: RB_PDF RADIOBUTTON GROUP R1 DEFAULT 'X',
    RB_CSV RADIOBUTTON GROUP R1,
    RB_ALV RADIOBUTTON GROUP R1.
    
    SELECTION-SCREEN END OF BLOCK BLK2.
    
     
    
    SELECTION-SCREEN END OF BLOCK BLK1.
    
    
    *----------------------------------------------------------------------
    * INITIALIZATION
    *----------------------------------------------------------------------
    INITIALIZATION.
    
    * 初始化数据
    PERFORM FRM_INITIAL.
    
     
    
    *----------------------------------------------------------------------
    * AT SELECTION-SCREEN
    *----------------------------------------------------------------------
    AT SELECTION-SCREEN.
    
    * 权限检查部分
    PERFORM FRM_CHECK_AUTHOR.
    
     
    
    *======================================================================
    * MAIN PROGRAM
    *======================================================================
    * START-OF-SELECTION
    *----------------------------------------------------------------------
    START-OF-SELECTION.
    *&获取数据
    
    PERFORM FRM_GET_DATA.
    
    CASE 'X'.
    
    WHEN RB_PDF.
    CHECK IT_DATAP[] IS NOT INITIAL.
    PERFORM FRM_PDF_OUT.
    
    WHEN RB_CSV. 
    CHECK IT_DATAC[] IS NOT INITIAL. 
    PERFORM FRM_CSV_OUT.
    
    WHEN RB_ALV. 
    *&ALV展示输出 
    CHECK IT_DATA[] IS NOT INITIAL. 
    PERFORM FRM_ALV_OUTPUT.
    
    WHEN OTHERS.
    
    ENDCASE.
    
    *---------------------------------------------------------------------- 
    * END-OF-SELECTION 
    *----------------------------------------------------------------------
    
    
    *&---------------------------------------------------------------------* 
    *& Form FRM_INITIAL 
    *&---------------------------------------------------------------------* 
    * text 
    *----------------------------------------------------------------------* 
    * --> p1 text 
    * <-- p2 text 
    *----------------------------------------------------------------------* 
    FORM FRM_INITIAL.
    
    ENDFORM. " FRM_INITIAL
    
    
    *&---------------------------------------------------------------------* 
    *& Form FRM_CHECK_AUTHOR 
    *&---------------------------------------------------------------------* 
    * text 
    *----------------------------------------------------------------------* 
    * --> p1 text 
    * <-- p2 text 
    *----------------------------------------------------------------------* 
    FORM FRM_CHECK_AUTHOR.
    
    ENDFORM. " FRM_CHECK_AUTHOR
    
    *&---------------------------------------------------------------------* 
    *& Form frm_get_data 
    *&---------------------------------------------------------------------* 
    * text 
    *----------------------------------------------------------------------* 
    * --> p1 text 
    * <-- p2 text 
    *----------------------------------------------------------------------* 
    FORM FRM_GET_DATA .
    
    DATA:BEGIN OF LT_ZSTATU OCCURS 0, ZMDNM 
    LIKE ZT0001-ZMDNM, STATU
    (50) TYPE C, "料状态 
    END OF LT_ZSTATU. 
    DATA:BEGIN OF LT_KEHU OCCURS 0, KUNNR 
    LIKE KNA1-KUNNR, MATNR 
    LIKE MARA-MATNR, MATN1 
    LIKE MARA-MATNR, ZMDNM 
    LIKE MARA-ZMDNM, 
    END OF LT_KEHU. 
    DATA:BEGIN OF LT_BANB OCCURS 0, KUNNR 
    LIKE KNVV-KUNNR, KVGR1 
    LIKE ZSD008-MATVD, KVGR2 
    LIKE ZSD008-MATVD, KVGR3 
    LIKE ZSD008-MATVD, KVGR4 
    LIKE ZSD008-MATVD, KVGR5 
    LIKE ZSD008-MATVD, 
    END OF LT_BANB. 
    DATA:BEGIN OF LT_KOTG OCCURS 0, KSCHL 
    LIKE KOTG001-KSCHL, KUNNR 
    LIKE KOTG001-KUNNR, MATNR 
    LIKE KOTG001-MATNR, 
    END OF LT_KOTG. 
    DATA:G_TABIX TYPE SY-TABIX.
    
    DATA:BEGIN OF LT_ZSD008 OCCURS 0, MATVN 
    LIKE ZSD008-MATVN, MATVD 
    LIKE ZSD008-MATVD, 
    END OF LT_ZSD008.
    
    DATA:BEGIN OF LT_MARD OCCURS 0, MATNR 
    LIKE MARD-MATNR, LABST 
    LIKE MARD-LABST, 
    END OF LT_MARD. 
    DATA:BEGIN OF LT_MARD3 OCCURS 0, MATNR 
    LIKE MARD-MATNR, LABST 
    LIKE MARD-LABST,"未交 qty 
    END OF LT_MARD3.
    
    DATA: BEGIN OF LT_A004 OCCURS 0, KSCHL 
    LIKE A004-KSCHL, MWSKZ 
    LIKE A003-MWSKZ, MATNR 
    LIKE A004-MATNR, KBETR 
    LIKE KONP-KBETR, 
    END OF LT_A004. 
    DATA: BEGIN OF LT_A005 OCCURS 0, MATNR 
    LIKE A005-MATNR, KNUMH 
    LIKE A005-KNUMH, KBETR 
    LIKE KONP-KBETR, KMEIN 
    LIKE KONP-KMEIN, KONWA 
    LIKE KONP-KONWA, 
    END OF LT_A005. 
    DATA:BEGIN OF LT_KONP OCCURS 0, KNUMH 
    LIKE KONP-KNUMH, KBETR 
    LIKE KONP-KBETR, KMEIN 
    LIKE KONP-KMEIN, KONWA 
    LIKE KONP-KONWA, 
    END OF LT_KONP.
    
    DATA: LV_NAME LIKE THEAD-TDNAME, LT_LINE 
    LIKE STANDARD TABLE OF TLINE, LWA_LINE 
    LIKE LINE OF LT_LINE, LV_TEXT 
    TYPE STRING.
    
    DATA: BEGIN OF LT_ZSD13 OCCURS 0, VBELN 
    LIKE ZSD13-VBELN, POSNR 
    LIKE ZSD13-POSNR, MATNR 
    LIKE ZSD13-MATNR, KWMENG 
    LIKE ZSD13-KWMENG, "订单数量 RFMNGM 
    LIKE ZSD13-RFMNGM, "确认的数量 
    *BMENG LIKE ZSD13-BMENG, "确认的数量 ERDAT 
    LIKE ZSD13-ERDAT, 
    END OF LT_ZSD13.
    
    DATA: BEGIN OF LT_ZSD131 OCCURS 0, MATNR 
    LIKE VBAP-MATNR, WJENG 
    LIKE VBAP-KWMENG,"未交 qty 
    END OF LT_ZSD131.
    
    DATA: BEGIN OF LT_VBAK OCCURS 0, MATNR 
    LIKE VBAP-MATNR, VBELN 
    LIKE VBAK-VBELN, ERDAT 
    LIKE VBAK-ERDAT, ERZET 
    LIKE VBAK-ERZET, VBTYP 
    LIKE VBAK-VBTYP, KUNNR 
    LIKE VBAK-KUNNR, 
    END OF LT_VBAK, WA_VBAK 
    LIKE LT_VBAK.
    
    DATA: BEGIN OF LT_VBAK1 OCCURS 0, MATNR 
    LIKE VBAP-MATNR, VBELN 
    LIKE VBAK-VBELN, VBTYP 
    LIKE VBAK-VBTYP, KUNNR 
    LIKE VBAK-KUNNR, KWMENG 
    LIKE VBAP-KWMENG, 
    INDEX TYPE SY-TABIX, 
    END OF LT_VBAK1. 
    DATA:L_KBETR TYPE STRING, L_KONWA 
    TYPE STRING.
    
    *&G1.1.kunnr get matnr 
    SELECT A~KUNAG AS KUNNR B
    ~MATNR 
    INTO TABLE LT_KEHU 
    FROM KOTG951 AS A 
    JOIN MVKE AS B 
    ON A~ZZMVGR2 EQ B~MVGR2 
    WHERE A~KUNAG EQ P_KUNNR 
    AND A~DATBI GE P_ERDAT 
    AND A~DATAB LE P_ERDAT 
    AND B~VKORG IN S_VKORG 
    AND B~VTWEG IN S_VTWEG 
    *&->CHANGE 
    AND B~MATNR IN S_MATNR.
    
    *&-> use for test D300 
    IF SY-MANDT NE '300'. 
    IF SY-SUBRC NE 0. 
    MESSAGE S001 DISPLAY LIKE 'W'. 
    EXIT. 
    ENDIF. 
    ENDIF. 
    DELETE ADJACENT DUPLICATES FROM LT_KEHU COMPARING ALL FIELDS.
    
     
    
    *&G1.2.kunnr get kvgr1 ->kvgr5(versions) delete 
    SELECT KUNNR KVGR1 KVGR2 KVGR3 KVGR4 KVGR5 
    INTO TABLE LT_BANB 
    FROM KNVV 
    WHERE KUNNR EQ P_KUNNR 
    AND VKORG IN S_VKORG 
    AND VTWEG IN S_VTWEG.
    
    *&G1.3 get delete condition(version code) matnr+8(2) compare 
    SELECT MATVN MATVD
    
    INTO TABLE LT_ZSD008 
    FROM ZSD008 
    FOR ALL ENTRIES IN LT_BANB 
    WHERE MATVD EQ LT_BANB-KVGR1 
    OR MATVD EQ LT_BANB-KVGR2 
    OR MATVD EQ LT_BANB-KVGR3 
    OR MATVD EQ LT_BANB-KVGR4 
    OR MATVD EQ LT_BANB-KVGR5. 
    **&G1.4.delete by version: 
    * LOOP AT LT_KEHU. 
    * G_TABIX = SY-TABIX. 
    * LT_KEHU-MATN1 = LT_KEHU-MATNR+7(2). 
    * READ TABLE LT_ZSD008 WITH KEY MATVN = LT_KEHU-MATN1. 
    * IF SY-SUBRC NE 0. 
    * DELETE LT_KEHU INDEX G_TABIX. 
    * CLEAR LT_KEHU. 
    * ELSE. 
    * MODIFY LT_KEHU TRANSPORTING MATN1. 
    * CLEAR LT_KEHU. 
    * ENDIF. 
    **MODIFY LT_KEHU TRANSPORTING MATN1. 
    **SELECT SINGLE ZMDNM 
    * ENDLOOP.
    
    *&->CHANGE BY VN0037 ON 20130214. 
    *&G1.7.delete matnr 
    LOOP AT LT_KEHU. G_TABIX 
    = SY-TABIX. 
    *&2.delete not end with '10'. 
    IF LT_KEHU-MATNR+13(2) NE '10'. 
    DELETE LT_KEHU INDEX G_TABIX. 
    CLEAR:LT_KEHU. 
    CONTINUE. 
    ENDIF. 
    *&1.delete by version: LT_KEHU
    -MATN1 = LT_KEHU-MATNR+7(2). 
    READ TABLE LT_ZSD008 WITH KEY MATVN = LT_KEHU-MATN1. 
    IF SY-SUBRC NE 0. 
    DELETE LT_KEHU INDEX G_TABIX. 
    CLEAR LT_KEHU. 
    CONTINUE. 
    ENDIF. 
    MODIFY LT_KEHU TRANSPORTING MATN1. 
    CLEAR LT_KEHU.
    
    ENDLOOP.
    
    *&G1.5. kunnr 'ZDIV' get useful matnr 
    SELECT KSCHL KUNNR MATNR
    
    
    INTO TABLE LT_KOTG 
    FROM KOTG001 
    WHERE KSCHL IN ('ZDIV','B001') 
    AND KUNNR EQ P_KUNNR 
    AND DATAB LE P_ERDAT 
    AND DATBI GE P_ERDAT.
    
    *&G1.6.add'ZDIV' type, delete‘B001’type->Last kunnr matnr. 
    LOOP AT LT_KOTG." WHERE KSCHL EQ 'ZDIV'. 
    *& +'ZDIV'. 
    IF LT_KOTG-KSCHL EQ 'ZDIV'. LT_KEHU
    -KUNNR = LT_KOTG-KUNNR. LT_KEHU
    -MATNR = LT_KOTG-MATNR. 
    APPEND LT_KEHU. 
    ELSE. 
    *& - 'B001'. 
    DELETE LT_KEHU WHERE MATNR EQ LT_KOTG-MATNR. 
    ENDIF. 
    ENDLOOP.
    
    **&G1.7.delete matnr 
    * LOOP AT LT_KEHU. 
    * G_TABIX = SY-TABIX. 
    **&2.delete not end with '10'. 
    * IF LT_KEHU-MATNR+13(2) NE '10'. 
    * DELETE LT_KEHU INDEX G_TABIX. 
    * CLEAR:LT_KEHU. 
    * CONTINUE. 
    * ENDIF. 
    **&1.delete by version: 
    * LT_KEHU-MATN1 = LT_KEHU-MATNR+7(2). 
    * READ TABLE LT_ZSD008 WITH KEY MATVN = LT_KEHU-MATN1. 
    * IF SY-SUBRC NE 0. 
    * DELETE LT_KEHU INDEX G_TABIX. 
    * CLEAR LT_KEHU. 
    * CONTINUE. 
    * ENDIF. 
    * MODIFY LT_KEHU TRANSPORTING MATN1. 
    * CLEAR LT_KEHU. 
    * 
    * ENDLOOP.
    
    *&G2.1 Matnr geted to find mara + MODLE 
    *&->test for D300. 
    IF LT_KEHU[] IS NOT INITIAL.
    
    SELECT A~MATNR A
    ~PRDHA A
    ~ZMDNM B
    ~UMREZ A
    ~MATKL 
    INTO TABLE IT_DATA 
    FROM MARA AS A 
    JOIN MARM AS B 
    ON A~MATNR EQ B~MATNR 
    FOR ALL ENTRIES IN LT_KEHU 
    WHERE A~MATNR EQ LT_KEHU-MATNR 
    AND B~MEINH EQ 'KAR'. 
    ELSE.
    
    SELECT A~MATNR A
    ~PRDHA A
    ~ZMDNM B
    ~UMREZ 
    INTO CORRESPONDING FIELDS OF TABLE IT_DATA 
    FROM MARA AS A 
    JOIN MARM AS B 
    ON A~MATNR EQ B~MATNR 
    WHERE A~MATNR IN S_MATNR 
    AND B~MEINH EQ 'KAR'. "
    
    ENDIF.
    
    DESCRIBE TABLE IT_DATA LINES L_LEN. 
    IF L_LEN EQ 0. 
    MESSAGE S001 WITH 'No data!' DISPLAY LIKE 'W'. 
    EXIT. 
    ENDIF.
    
    SORT IT_DATA BY MATNR.
    
    *&G2.2.Get model statu 
    SELECT ZMDNM "STATU 
    INTO TABLE LT_ZSTATU 
    FROM ZT0001 
    FOR ALL ENTRIES IN IT_DATA 
    *&->change 
    *WHERE ZMDNM EQ IT_DATA-ZMDNM 
    WHERE ZMDNM EQ IT_DATA-ZMDNM 
    AND ZDATE GE P_ERDAT.
    
    * SELECT ZMDNM "STATU 
    * INTO TABLE LT_ZSTATU 
    * FROM ZSTATU 
    * SELECT A~MATNR 
    * B~KBETR 
    * INTO TABLE LT_A004 
    * FROM A004 AS A 
    * JOIN KONP AS B 
    * ON A~KNUMH EQ B~KNUMH 
    * AND A~KSCHL EQ B~KSCHL 
    * WHERE A~KSCHL EQ p_KSCHL 
    * AND A~VKORG IN S_VKORG 
    * AND A~VTWEG IN S_VTWEG 
    * AND A~DATAB LE P_ERDAT 
    *& A006.
    
    IF IT_DATA[] IS NOT INITIAL. 
    *&G2.3 KUNNR MATNR GET KUNMH :得条件记录号 
    SELECT MATNR KNUMH 
    INTO TABLE LT_A005 
    FROM A005 
    FOR ALL ENTRIES IN IT_DATA 
    WHERE KAPPL EQ 'V' 
    AND KSCHL EQ P_KSCHL 
    AND VKORG IN S_VKORG 
    AND VTWEG IN S_VTWEG 
    AND KUNNR EQ P_KUNNR 
    AND MATNR EQ IT_DATA-MATNR 
    AND DATBI GE P_ERDAT 
    AND DATAB LE P_ERDAT.
    
    
    DATA:LV_KONDA LIKE KNVV-KONDA. 
    CLEAR LV_KONDA. 
    SELECT SINGLE KONDA 
    INTO LV_KONDA 
    FROM KNVV 
    WHERE KUNNR EQ P_KUNNR.
    
    SELECT MATNR KNUMH 
    APPENDING TABLE LT_A005 
    FROM A032 
    FOR ALL ENTRIES IN IT_DATA 
    WHERE KAPPL EQ 'V' 
    AND KSCHL EQ P_KSCHL 
    AND VKORG IN S_VKORG 
    AND VTWEG IN S_VTWEG 
    AND KONDA EQ LV_KONDA 
    AND MATNR EQ IT_DATA-MATNR 
    AND DATBI GE P_ERDAT 
    AND DATAB LE P_ERDAT.
    
     
    
    ENDIF.
    
    IF SY-SUBRC EQ 0. 
    *&G2.4 matnr get kbetr. 
    SELECT KNUMH KBETR KMEIN 
    *&CHAGNE ON 20140214. KONWA
    
    INTO TABLE LT_KONP 
    FROM KONP 
    FOR ALL ENTRIES IN LT_A005 
    WHERE KNUMH EQ LT_A005-KNUMH 
    AND KSCHL EQ P_KSCHL 
    AND KOPOS EQ '1'. 
    SORT LT_KONP BY KNUMH. 
    ENDIF.
    
    *&G2.5 get matnr kbetr. 
    LOOP AT LT_A005. 
    READ TABLE LT_KONP WITH KEY KNUMH = LT_A005-KNUMH BINARY SEARCH. 
    IF SY-SUBRC EQ 0. LT_A005
    -KBETR = LT_KONP-KBETR. LT_A005
    -KMEIN = LT_KONP-KMEIN. LT_A005
    -KONWA = LT_KONP-KONWA.
    
    ENDIF. 
    MODIFY LT_A005. 
    ENDLOOP.
    
    SORT LT_A005 BY MATNR.
    
    *&G3.1 Get kucun 
    *& 是否存在负库存,? 
    SELECT MATNR LABST
    
    INTO TABLE LT_MARD 
    FROM MARD 
    FOR ALL ENTRIES IN IT_DATA 
    WHERE MATNR EQ IT_DATA-MATNR 
    AND ( WERKS EQ '1100' AND LGORT EQ '1100' OR LGORT EQ '1181' 
    OR ( WERKS EQ '3300' AND LGORT EQ '3351' OR LGORT EQ '3352' OR LGORT EQ '3353' ) ).
    
    *&G3.2. get matnr labst 
    LOOP AT LT_MARD. 
    MOVE-CORRESPONDING LT_MARD TO LT_MARD3. 
    COLLECT LT_MARD3. 
    ENDLOOP.
    
    SORT LT_MARD3 BY MATNR.
    
     
    
    *&G3.3 zsd13 open so-aty (根据matnr 已做好 car 和pc 转换) order-qty quren-qyr 
    SELECT A~VBELN A
    ~POSNR A
    ~MATNR A
    ~KWMENG"订单数量 A
    ~RFMNGM"确认数量 A
    ~ERDAT "创建日期 
    INTO TABLE LT_ZSD13 
    FROM ZSD13 AS A 
    JOIN VBAK AS B 
    ON A~VBELN EQ B~VBELN 
    FOR ALL ENTRIES IN IT_DATA 
    WHERE A~MATNR EQ IT_DATA-MATNR 
    *&->change 
    * AND A~KUNNR EQ P_KUNNR 
    AND B~VBTYP EQ 'C'.
    
    *&G3.4. get open-qty 
    LOOP AT LT_ZSD13. LT_ZSD131
    -MATNR = LT_ZSD13-MATNR. LT_ZSD131
    -WJENG = LT_ZSD13-KWMENG - LT_ZSD13-RFMNGM. 
    COLLECT LT_ZSD131. 
    ENDLOOP. 
    SORT LT_ZSD131 BY MATNR.
    
    *&G4.1 kunnr -> vbeln 
    SELECT B~MATNR A
    ~VBELN A
    ~ERDAT A
    ~ERZET A
    ~VBTYP"凭证类别 AUART "销售凭证类型 A
    ~KUNNR 
    INTO TABLE LT_VBAK 
    FROM VBAK AS A 
    JOIN VBAP AS B 
    ON A~VBELN EQ B~VBELN 
    FOR ALL ENTRIES IN IT_DATA
    
    WHERE A~KUNNR EQ P_KUNNR 
    AND A~VKORG IN S_VKORG 
    AND A~VTWEG IN S_VTWEG 
    AND A~VBTYP EQ 'C' "订单 -》‘H’退货 
    AND B~MATNR EQ IT_DATA-MATNR.
    
    SORT LT_VBAK BY MATNR VBELN DESCENDING.
    
    DATA: LV_CNT TYPE I, LV_MATNR 
    TYPE MARA-MATNR.
    
    LOOP AT LT_VBAK. 
    *&G4.2 get vbeln matnr kwmeng 
    * 得到订单数量是否要考虑 kunnr + matnr. 
    * MOVE LT_VBAK TO WA_VBAK. 
    IF LV_MATNR EQ ''. LV_MATNR 
    = LT_VBAK-MATNR. LV_CNT 
    = '1'. LT_VBAK1
    -INDEX = LV_CNT. LT_VBAK1
    -MATNR = LT_VBAK-MATNR. LT_VBAK1
    -VBELN = LT_VBAK-VBELN. LT_VBAK1
    -VBTYP = LT_VBAK-VBTYP. LT_VBAK1
    -KUNNR = LT_VBAK-KUNNR. 
    SELECT SINGLE SUM( KWMENG ) 
    INTO LT_VBAK1-KWMENG 
    FROM VBAP 
    WHERE VBELN EQ LT_VBAK-VBELN 
    AND MATNR EQ LT_VBAK-MATNR.
    
    ELSE.
    
    IF LV_MATNR = LT_VBAK-MATNR. LV_CNT 
    = LV_CNT + 1. LT_VBAK1
    -INDEX = LV_CNT. LT_VBAK1
    -MATNR = LT_VBAK-MATNR. LT_VBAK1
    -VBELN = LT_VBAK-VBELN. LT_VBAK1
    -VBTYP = LT_VBAK-VBTYP. LT_VBAK1
    -KUNNR = LT_VBAK-KUNNR. 
    SELECT SINGLE SUM( KWMENG ) 
    INTO LT_VBAK1-KWMENG 
    FROM VBAP 
    WHERE VBELN EQ LT_VBAK-VBELN 
    AND MATNR EQ LT_VBAK-MATNR.
    
    IF LV_CNT GT 3. 
    CONTINUE. 
    ENDIF.
    
    ELSE. LV_MATNR 
    = LT_VBAK-MATNR. LV_CNT 
    = 1. LT_VBAK1
    -INDEX = LV_CNT. LT_VBAK1
    -MATNR = LT_VBAK-MATNR. LT_VBAK1
    -VBELN = LT_VBAK-VBELN. LT_VBAK1
    -VBTYP = LT_VBAK-VBTYP. LT_VBAK1
    -KUNNR = LT_VBAK-KUNNR. 
    SELECT SINGLE SUM( KWMENG ) 
    INTO LT_VBAK1-KWMENG 
    FROM VBAP 
    WHERE VBELN EQ LT_VBAK-VBELN 
    AND MATNR EQ LT_VBAK-MATNR. 
    ENDIF.
    
    ENDIF.
    
    APPEND LT_VBAK1.
    
    ENDLOOP.
    
    SORT LT_VBAK1 BY MATNR INDEX.
    
    
    **&G5.Get us from knop. 
    LOOP AT IT_DATA. 
    *&L1.GET PRODH name. 
    SELECT SINGLE VTEXT 
    INTO IT_DATA-ZONGL 
    FROM T179T 
    WHERE SPRAS EQ SY-LANGU 
    AND PRODH EQ IT_DATA-PRDHA+0(4). 
    SELECT SINGLE VTEXT 
    INTO IT_DATA-FENEL 
    FROM T179T 
    WHERE SPRAS EQ SY-LANGU 
    AND PRODH EQ IT_DATA-PRDHA+0(10). LV_NAME
    
    = IT_DATA-MATNR. 
    *&L2.Get TXT for model descibe 
    CALL FUNCTION 'READ_TEXT' 
    EXPORTING 
    CLIENT = SY-MANDT 
    ID = 'GRUN' "P_TEXTID 
    LANGUAGE = SY-LANGU NAME 
    = LV_NAME OBJECT 
    = 'MATERIAL' 
    TABLES 
    LINES = LT_LINE 
    EXCEPTIONS 
    ID = 1 
    LANGUAGE = 2 NAME 
    = 3 NOT_FOUND 
    = 4 OBJECT 
    = 5 REFERENCE_CHECK 
    = 6 WRONG_ACCESS_TO_ARCHIVE 
    = 7 
    OTHERS = 8.
    
    IF SY-SUBRC EQ 0. 
    LOOP AT LT_LINE INTO LWA_LINE. 
    CONCATENATE LWA_LINE-TDLINE LV_TEXT INTO LV_TEXT. 
    ENDLOOP. IT_DATA
    -XHTXT = LV_TEXT. 
    REPLACE '<(>&<)>' IN IT_DATA-XHTXT WITH '&'. 
    CLEAR:LT_LINE[], LT_LINE, LV_TEXT. 
    ENDIF.
    
    *&L3.Get long txt. 
    CALL FUNCTION 'READ_TEXT' 
    EXPORTING 
    CLIENT = SY-MANDT 
    ID = 'IVER' "P_TEXTID 
    LANGUAGE = SY-LANGU NAME 
    = LV_NAME OBJECT 
    = 'MATERIAL' 
    TABLES 
    LINES = LT_LINE 
    EXCEPTIONS 
    ID = 1 
    LANGUAGE = 2 NAME 
    = 3 NOT_FOUND 
    = 4 OBJECT 
    = 5 REFERENCE_CHECK 
    = 6 WRONG_ACCESS_TO_ARCHIVE 
    = 7 
    OTHERS = 8.
    
    IF SY-SUBRC EQ 0. 
    LOOP AT LT_LINE INTO LWA_LINE. 
    CONCATENATE LWA_LINE-TDLINE LV_TEXT INTO LV_TEXT. 
    ENDLOOP. IT_DATA
    -XHTXT1 = LV_TEXT. 
    REPLACE '<(>&<)>' IN IT_DATA-XHTXT1 WITH '&'. 
    CLEAR:LT_LINE[], LT_LINE, LV_TEXT. 
    ENDIF.
    
    *ENDIF.
    
    *&L4.get dinsh: IT_DATA
    -DINSH = 0.
    
    *&L5.get umrez1 IT_DATA
    -UMREZ1 = IT_DATA-UMREZ. 
    CONDENSE IT_DATA-UMREZ1 NO-GAPS.
    
    CONCATENATE IT_DATA-UMREZ1 ' pc(s)' INTO IT_DATA-UMREZ1.
    
    *&L6.get statu: 
    READ TABLE LT_ZSTATU WITH KEY ZMDNM = IT_DATA-ZMDNM BINARY SEARCH. 
    IF SY-SUBRC EQ 0. IT_DATA
    -STATU = 'New'. 
    ENDIF. 
    *&L7.get us$ 
    READ TABLE LT_A005 WITH KEY MATNR = IT_DATA-MATNR BINARY SEARCH. 
    IF SY-SUBRC EQ 0. IT_DATA
    -KONWA = LT_A005-KONWA. 
    *& Convert units 
    CALL FUNCTION 'CONVERSION_EXIT_CUNIT_OUTPUT' 
    EXPORTING 
    INPUT = LT_A005-KMEIN 
    LANGUAGE = '1' 
    IMPORTING 
    * LONG_TEXT = 
    OUTPUT = LT_A005-KMEIN 
    * SHORT_TEXT = 
    EXCEPTIONS UNIT_NOT_FOUND 
    = 1 
    OTHERS = 2. 
    IF LT_A005-KMEIN EQ 'PC'. IT_DATA
    -KBETR = LT_A005-KBETR. 
    ELSE. IT_DATA
    -KBETR = LT_A005-KBETR / IT_DATA-UMREZ."转换单位 
    ENDIF. 
    ENDIF.
    
    *&L8.get labst 
    READ TABLE LT_MARD3 WITH KEY MATNR = IT_DATA-MATNR BINARY SEARCH. 
    IF SY-SUBRC EQ 0. IT_DATA
    -KCNGE = LT_MARD3-LABST. 
    ENDIF.
    
    READ TABLE LT_ZSD131 WITH KEY MATNR = IT_DATA-MATNR BINARY SEARCH. 
    IF SY-SUBRC EQ 0. IT_DATA
    -KCNGE = IT_DATA-KCNGE - LT_ZSD131-WJENG. 
    ENDIF.
    
    *&L9.get last3 order qty:--->这里的是以CAR 为单位的数量 
    READ TABLE LT_VBAK1 WITH KEY MATNR = IT_DATA-MATNR INDEX = 3. 
    IF SY-SUBRC EQ 0. IT_DATA
    -LAST3 = LT_VBAK1-KWMENG * IT_DATA-UMREZ.
    
    ENDIF.
    
    *&L10 get last2 order qty: 
    READ TABLE LT_VBAK1 WITH KEY MATNR = IT_DATA-MATNR INDEX = 2. 
    IF SY-SUBRC EQ 0. IT_DATA
    -LAST2 = LT_VBAK1-KWMENG * IT_DATA-UMREZ. 
    ENDIF.
    
    *&L11 get last1 order qty: 
    READ TABLE LT_VBAK1 WITH KEY MATNR = IT_DATA-MATNR INDEX = 1. 
    IF SY-SUBRC EQ 0. IT_DATA
    -LAST1 = LT_VBAK1-KWMENG * IT_DATA-UMREZ. 
    ENDIF.
    
     
    
    IF RB_PDF EQ 'X'. L_KBETR 
    = IT_DATA-KBETR. L_KONWA 
    = IT_DATA-KONWA. 
    MOVE-CORRESPONDING IT_DATA TO IT_DATAP. 
    CONCATENATE L_KBETR L_KONWA INTO IT_DATAP-KBETR SEPARATED BY SPACE. 
    COLLECT IT_DATAP. 
    DELETE IT_DATAP WHERE ZONGL IS INITIAL. 
    ELSE. 
    MOVE-CORRESPONDING IT_DATA TO IT_DATAC. 
    COLLECT IT_DATAC. 
    DELETE IT_DATAC WHERE ZONGL IS INITIAL. 
    ENDIF.
    
    MODIFY IT_DATA." INDEX SY-TABIX. 
    ENDLOOP.
    
    * DESCRIBE TABLE LT_data LINES L_LEN.
    
    ENDFORM. " frm_get_data
    
    
    *&---------------------------------------------------------------------* 
    *& Form frm_alv_output 
    *&---------------------------------------------------------------------* 
    * text 
    *----------------------------------------------------------------------* 
    * --> p1 text 
    * <-- p2 text 
    *----------------------------------------------------------------------* 
    FORM FRM_ALV_OUTPUT . 
    DATA: L_NN TYPE I. 
    DATA: LS_EVENT TYPE SLIS_ALV_EVENT.
    
    *&===>fieldcat 
    DEFINE ADD_FIELDCAT. 
    CLEAR WA_FIELDCAT. WA_FIELDCAT
    -FIELDNAME = &1. WA_FIELDCAT
    -SELTEXT_L = &2. WA_FIELDCAT
    -KEY = &3. WA_FIELDCAT
    -COL_POS = L_NN + 1. WA_FIELDCAT
    -JUST = &4. WA_FIELDCAT
    -OUTPUTLEN = &5. WA_FIELDCAT
    -FIX_COLUMN = &6. WA_FIELDCAT
    -NO_ZERO = &7. WA_FIELDCAT
    -EDIT = &8. 
    APPEND WA_FIELDCAT TO GT_FIELDCAT. 
    END-OF-DEFINITION.
    
    CLEAR GT_FIELDCAT. 
    REFRESH GT_FIELDCAT. ADD_FIELDCAT
    
    'MATNR' 'Material number' '' '' '18' '' '' ''."1 ADD_FIELDCAT 
    'STATU' 'Status' '' '' '' '' '' ''."1 ADD_FIELDCAT
    
    'ZONGL' 'Main Category' '' '' '' '' '' ''."2 ADD_FIELDCAT 
    'FENEL' 'Sub Category' '' '' '' '' '' ''."3 ADD_FIELDCAT 
    'ZMDNM' 'Model name' '' '' '' '' '' ''."5 ADD_FIELDCAT 
    'UMREZ' 'PC per MC' '' '' '' '' '' ''."4 ADD_FIELDCAT
    
    'XHTXT' 'Item text' '' '' '' '' '' ''."5 ADD_FIELDCAT 
    'XHTXT1' 'Prod Subhead' '' '' '' '' '' ''."5
    
    * ADD_FIELDCAT 'KBETR' 'US$' '' '' '' '' '' ''."7 
    ADD_FIELDCAT 
    'KBETR' 'Price' '' '' '' '' '' ''."7 ADD_FIELDCAT 
    'KONWA' 'Currency' '' '' '' '' '' ''."7 ADD_FIELDCAT 
    'KCNGE' 'Current Availabile' '' '' '' '' '' ''."7 ADD_FIELDCAT
    
    'DINSH' 'Ordered Qty' '' '' '' '' '' ''."8 ADD_FIELDCAT 
    'LAST1' 'Last-1 Ordered Qty' '' '' '' '' '' ''."9 ADD_FIELDCAT 
    'LAST2' 'Last-2 Ordered Qty' '' '' '' '' '' ''."10 ADD_FIELDCAT 
    'LAST3' 'Last-3 Ordered Qty' '' '' '' '' '' ''."11
    
    *&===>layout GW_LAYOUT
    -COLWIDTH_OPTIMIZE = 'X'. GW_LAYOUT
    -ZEBRA = 'X'. GW_LAYOUT
    -DETAIL_POPUP = 'X'.
    
    *&===>Way1: 
    *&use event to get frm_top_of_page. 
    *&===>event 
    CALL FUNCTION 'REUSE_ALV_EVENTS_GET' 
    EXPORTING I_LIST_TYPE 
    = 0 
    IMPORTING ET_EVENTS 
    = GT_EVENT 
    EXCEPTIONS LIST_TYPE_WRONG 
    = 1 
    OTHERS = 2. 
    READ TABLE GT_EVENT WITH KEY NAME = SLIS_EV_TOP_OF_PAGE INTO LS_EVENT. 
    IF SY-SUBRC EQ 0. 
    MOVE ER_FORMNAME_TOP_OF_PAGE TO LS_EVENT-FORM. 
    APPEND LS_EVENT TO GT_EVENT. 
    ENDIF.
    
    *&TOP OF PAGE. 
    PERFORM COMMENT_BUILD USING TOP_OF_PAGE[].
    
    *& 调用函数显示ALV列表 
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' 
    EXPORTING I_CALLBACK_PROGRAM 
    = SY-REPID I_SAVE 
    = 'A' IS_LAYOUT 
    = GW_LAYOUT IT_FIELDCAT 
    = GT_FIELDCAT IT_EVENTS 
    = GT_EVENT 
    TABLES T_OUTTAB 
    = IT_DATA 
    EXCEPTIONS PROGRAM_ERROR 
    = 1 
    OTHERS = 2.
    
    ENDFORM. " frm_alv_output
    
    *&---------------------------------------------------------------------* 
    *& Form comment_build 
    *&---------------------------------------------------------------------* 
    * text 
    *----------------------------------------------------------------------* 
    * -->U_ER_LIST_TOP_OF_PAGE text 
    *----------------------------------------------------------------------* 
    FORM COMMENT_BUILD USING U_ER_LIST_TOP_OF_PAGE TYPE SLIS_T_LISTHEADER.
    
    DATA: LS_LINE TYPE SLIS_LISTHEADER, LV_CUST 
    TYPE STRING, LV_STR 
    TYPE STRING.
    
    
    CLEAR: LS_LINE, LV_STR. LS_LINE
    -TYP = 'H'.
    
    SELECT SINGLE NAME1 
    INTO LV_CUST 
    FROM KNA1 
    WHERE KUNNR EQ P_KUNNR.
    
    CONCATENATE LV_CUST 'Sold-to Price list' INTO LV_STR. LS_LINE
    -INFO = LV_STR. 
    APPEND LS_LINE TO U_ER_LIST_TOP_OF_PAGE.
    
    CLEAR: LS_LINE, LV_STR. LS_LINE
    -TYP = 'S'. 
    CONCATENATE 'Valid as:' P_ERDAT+0(4) '-' P_ERDAT+4(2) '-' P_ERDAT+6(2) INTO LV_STR. 
    LS_LINE
    -KEY = LV_STR. 
    APPEND LS_LINE TO U_ER_LIST_TOP_OF_PAGE.
    
    ENDFORM. " COMMENT_BUILDS
    
    *---------------------------------------------------------------------* 
    * FORM top_of_page * 
    *---------------------------------------------------------------------* 
    FORM TOP_OF_PAGE.
    
    CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE' 
    EXPORTING I_LOGO 
    = 'ENJOYSAP_LOGO'"'ZMG_LOGO_NEW' IT_LIST_COMMENTARY 
    = TOP_OF_PAGE.
    
    ENDFORM. "TOP_OF_PAGE
    
    *&---------------------------------------------------------------------* 
    *& Form FRM_PDF_OUT 
    *&---------------------------------------------------------------------* 
    * text 
    *----------------------------------------------------------------------* 
    * --> p1 text 
    * <-- p2 text 
    *----------------------------------------------------------------------* 
    FORM FRM_PDF_OUT. 
    *& get print data: 
    *& one brad ,on pdf fiel, use a new logos 
    DATA:BEGIN OF LT_MATKL OCCURS 0, MATKL 
    LIKE MARA-MATKL, 
    END OF LT_MATKL. 
    DATA: LT_DATAP LIKE TABLE OF IT_DATAP WITH HEADER LINE. 
    *& smartform print: 
    DATA: FM_NAME TYPE RS38L_FNAM,"smartforms 函数 W_CTRLOP 
    TYPE SSFCTRLOP, "Smart Forms: 控制结构 "W_CONTROL W_COMPOP 
    TYPE SSFCOMPOP, "SAP Smart Forms: 智能写作器 (传输) 选项"W_OUTPUT. W_RETURN 
    TYPE SSFCRESCL. "Smart Forms: 表格打印结束时返回值 
    DATA: H_FILE TYPE STRING, "保存文件的名字 P_PATH 
    TYPE STRING. "保存路径 
    DATA: P_MATKL LIKE MARA-MATKL. 
    DATA: JOB_OUTPUT_INFO TYPE SSFCRESCL, JOB_OUTPUT_OPTIONS 
    TYPE SSFCRESOP, GT_TABLE 
    LIKE STANDARD TABLE OF SPFLI. 
    *&pdf打印需要用到的参数 
    DATA L_LINES TYPE TABLE OF TLINE WITH HEADER LINE. 
    DATA L_DOCS TYPE TABLE OF DOCS. 
    DATA LEN TYPE I. 
    DATA: G_PDF_XSTRING TYPE XSTRING.
    
    LOOP AT IT_DATAP. IT_DATAP
    -KUNNR = P_KUNNR. 
    SELECT SINGLE VALUE 
    INTO IT_DATAP-KCSHU 
    FROM ZT0002 
    WHERE FROMB LE IT_DATAP-KCNGE 
    AND FROME GE IT_DATAP-KCNGE. LT_MATKL
    
    -MATKL = IT_DATAP-MATKL. 
    COLLECT LT_MATKL. 
    MODIFY IT_DATAP TRANSPORTING KUNNR. "MATKL. 
    ENDLOOP. 
    SORT IT_DATAP BY MATKL. LT_DATAP[]
    
    = IT_DATAP[].
    
    REFRESH IT_DATAP[]. W_CTRLOP
    
    -GETOTF = 'X'."OTF 表的返回 W_CTRLOP
    -NO_DIALOG = 'X'."关闭打印对话框 W_CTRLOP
    -LANGU = SY-LANGU. W_COMPOP
    -TDDEST = 'LP01'. "LP01 W_COMPOP
    -TDPRINTER = 'CNSAPWIN'. "LP01 W_COMPOP
    -TDIMMED = 'X'. W_COMPOP
    -TDDELETE = ' '. W_COMPOP
    -TDTITLE = SY-TITLE.
    
    *&deal with brand 1 by 1. 
    LOOP AT LT_MATKL. 
    * READ TABLE LT_MATKL INDEX 1. IT_DATAP[] 
    = LT_DATAP[]. P_MATKL 
    = LT_MATKL-MATKL. 
    DELETE IT_DATAP[] WHERE MATKL NE LT_MATKL-MATKL.
    
    *&smartforms 函数名字转换 
    CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME' 
    EXPORTING FORMNAME 
    = 'ZOK_CUSTOMER6' 
    IMPORTING FM_NAME 
    = FM_NAME. 
    IF SY-SUBRC <> 0. 
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO 
    WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. 
    ENDIF.
    
    *&smartforms打印 ,将打印的值输入到W_RETURN-OTFDATA[]中 
    CALL FUNCTION FM_NAME 
    EXPORTING CONTROL_PARAMETERS 
    = W_CTRLOP OUTPUT_OPTIONS 
    = W_COMPOP USER_SETTINGS 
    = 'X'" USER_SETTINGS = 'X' 
    IMPORTING JOB_OUTPUT_INFO 
    = W_RETURN.
    
    * CALL FUNCTION FM_NAME 
    * EXPORTING 
    * CONTROL_PARAMETERS = W_CTRLOP 
    * IMPORTING 
    * JOB_OUTPUT_INFO = W_RETURN 
    * JOB_OUTPUT_OPTIONS = JOB_OUTPUT_OPTIONS 
    * TABLES 
    * IT_TABLE = GT_TABLE 
    * EXCEPTIONS 
    * FORMATTING_ERROR = 1 
    * INTERNAL_ERROR = 2 
    * SEND_ERROR = 3 
    * USER_CANCELED = 4 
    * OTHERS = 5.
    
     
    
    *&W3.call fc 'convert_otf' to get g_pdf_xstring up files. 
    CALL FUNCTION 'CONVERT_OTF' 
    EXPORTING 
    FORMAT = 'PDF' 
    * MAX_LINEWIDTH = 132 
    * ARCHIVE_INDEX = ' ' 
    * COPYNUMBER = 0 
    * ASCII_BIDI_VIS2LOG = ' ' 
    * PDF_DELETE_OTFTAB = ' ' 
    * PDF_USERNAME = ' ' 
    * PDF_PREVIEW = ' ' 
    * USE_CASCADING = ' ' 
    IMPORTING BIN_FILESIZE 
    = LEN BIN_FILE 
    = G_PDF_XSTRING 
    TABLES OTF 
    = W_RETURN-OTFDATA[] 
    LINES = L_LINES[] 
    EXCEPTIONS ERR_MAX_LINEWIDTH 
    = 1 ERR_FORMAT 
    = 2 ERR_CONV_NOT_POSSIBLE 
    = 3 ERR_BAD_OTF 
    = 4 
    OTHERS = 5.
    
    IF SY-SUBRC <> 0. 
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO 
    * INTO G_DUMMY 
    WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. 
    * PERFORM protocol_update. 
    * RETURN. 
    ENDIF. 
    CONCATENATE P_SEFILE P_KUNNR P_MATKL '_Price list.pdf' INTO S_FILE. "addrss 
    OPEN DATASET S_FILE FOR OUTPUT IN BINARY MODE." MESSAGE L_MESSAGE_DB. 
    IF SY-SUBRC EQ 0. 
    TRANSFER G_PDF_XSTRING TO S_FILE. 
    CLOSE DATASET S_FILE. 
    ELSE. 
    MESSAGE 'OPEN ERROR!!' TYPE 'E'. 
    STOP. 
    ENDIF.
    
    ENDLOOP.
    
    ENDFORM. " FRM_PDF_OUT
    
    *&---------------------------------------------------------------------* 
    *& Form FRM_CSV_OUT 
    *&---------------------------------------------------------------------* 
    * text 
    *----------------------------------------------------------------------* 
    * --> p1 text 
    * <-- p2 text 
    *----------------------------------------------------------------------* 
    FORM FRM_CSV_OUT . 
    DATA:UMREZ(20), DINSH
    (20), LAST1
    (20), LAST2
    (20), LAST3
    (20).
    
     
    
    LOOP AT IT_DATAC. 
    CONCATENATE '"' IT_DATAC-ZONGL '"' INTO IT_DATAC-ZONGL. 
    CONCATENATE '"' IT_DATAC-FENEL '"' INTO IT_DATAC-FENEL.
    
    SELECT SINGLE VALUE 
    INTO IT_DATAC-KCSHU 
    FROM ZT0002 
    WHERE FROMB LE IT_DATAC-KCNGE 
    AND FROME GE IT_DATAC-KCNGE. 
    MODIFY IT_DATAC TRANSPORTING ZONGL FENEL KCSHU. 
    ENDLOOP.
    
    SORT IT_DATAC BY ZONGL FENEL ZMDNM.
    
    CONCATENATE P_SEFILE P_KUNNR '_Order Form.csv' INTO S_FILE. "服务器保存的目录和文 
    件名 
    OPEN DATASET S_FILE FOR OUTPUT IN TEXT MODE ENCODING DEFAULT . "打开文件 
    IF SY-SUBRC = 0.
    
    CONCATENATE 'Status' 'Main Category' 'Sub Category' 'Model Name' 'PC per MC' 
    
    'Current Available' 'Ordered Qty' 'Last-1' 'Last-2' 'Last-3' 
    INTO LINE SEPARATED BY ','. 
    TRANSFER LINE TO S_FILE .
    
    LOOP AT IT_DATAC. DINSH 
    = IT_DATAC-DINSH. LAST1 
    = IT_DATAC-LAST1. LAST2 
    = IT_DATAC-LAST2. LAST3 
    = IT_DATAC-LAST3.
    
    CONCATENATE IT_DATAC-STATU IT_DATAC
    -ZONGL IT_DATAC
    -FENEL IT_DATAC
    -ZMDNM IT_DATAC
    -UMREZ1 IT_DATAC
    -KCSHU DINSH LAST1 LAST2 
    LAST3
    
     
    
    
    INTO LINE SEPARATED BY ','.
    
    TRANSFER LINE TO S_FILE . 
    IF SY-SUBRC NE 0 . 
    MESSAGE 'ERROR!!' TYPE 'E'. 
    STOP. 
    ENDIF. 
    CLEAR LINE . 
    ENDLOOP. 
    CLOSE DATASET S_FILE. 
    ELSE. 
    MESSAGE 'OPEN ERROR!!' TYPE 'E'. 
    STOP. 
    ENDIF.
    
    ENDFORM. " FRM_CSV_OUT
  • 相关阅读:
    构造函数
    Php基础知识测试题答案与解释
    bootstrap简介
    ajax删除数据(不跳转页面)
    ajax基础部分
    Jquery弹出窗口
    JSON
    Jquery之JSON的用法
    Jquery基本用法
    php购物车(练习)
  • 原文地址:https://www.cnblogs.com/rainysblog/p/10915867.html
Copyright © 2011-2022 走看看