zoukankan      html  css  js  c++  java
  • SAP 出库单新版


    *&---------------------------------------------------------------------*
    *& Report  ZSDR045
    *&
    *&---------------------------------------------------------------------*
    *&程序名称:新成品出库单
    *&事物代码:
    *&导入模板:
    *&作者:
    *&时间:
    *&--------------------------------------------------------------------

    REPORT zsdr045.
    INCLUDE zsdr045_inc.
    *INCLUDE zsdr007_inc.

    TYPE-POOLS: slis.
    TABLES:likp, kna1, lips ,mkpf ,mseg ,vttp,vbak.


    TYPESBEGIN OF ty_all,

             vbelv      LIKE  vbfa-vbelv ,  "销售订单号
             tknum      LIKE  vttp-tknum"装运单号
             auart      LIKE  vbak-auart"销售订单类型
             auart_txt  LIKE  tvakt-bezei"销售订单类型描述
             vkorg      LIKE  vbak-vkorg"销售组织
             vtweg      LIKE  vbak-vtweg"分销渠道
             lfart      LIKE  likp-lfart"交货类型
             vstel      LIKE  likp-vstel"装运点
             vstel_txt  LIKE  tvstt-vtext"装运点描述
             lfart_txt  LIKE  tvlkt-vtext"交货类型描述
             vbeln_im   LIKE  lips-vbeln "交货单号
             mblnr      LIKE  mseg-mblnr"物料凭证
             shkzg      LIKE  mseg-shkzg"借贷标识
             zeile      LIKE  mseg-zeile"凭证项目
             smbln      LIKE  mseg-smbln"参考物料凭证
             smblp      LIKE  mseg-smblp"参考物料项目
             bwart      LIKE  mseg-bwart"移动类型
             kunag      LIKE  likp-kunag "客户
             kunag_txt  LIKE  kna1-name1"客户名称
             kunnr      LIKE  likp-kunnr "送达方
             kunnr_txt  LIKE  kna1-name1"送达方名称
             stras      LIKE  kna1-stras "客户地址
             budat_mkpf LIKE  mseg-budat_mkpf "出库日期
             cputm_mkpf LIKE  mseg-cputm_mkpf "输入时间
             telf1      LIKE  kna1-telf1 "电话
             usnam_mkpf LIKE  mseg-usnam_mkpf "经办人
             name_last  LIKE  adrp-name_last"创建者姓
             name_first LIKE  adrp-name_first"创建者名
             matnr      LIKE  lips-matnr "物料编码
             arktx      LIKE  lips-arktx "物料描述
             werks      LIKE  mseg-werks"工厂
             lgort      LIKE  mseg-lgort "库存地点
             lgort_txt  LIKE t001l-lgobe "库存地点描述
             menge      LIKE  mseg-menge "数量
             vrkme      LIKE  lips-vrkme "单位
             charg      LIKE  mseg-charg "批次
             vbelp_im   LIKE  mseg-vbelp_im "物料项目
             pstyv      LIKE  lips-pstyv"行项目类别
             uecha      LIKE  lips-uecha"上层项目号
             bolnr      LIKE  likp-bolnr "物流单号
             brgew      LIKE  lips-brgew"单项目毛重
             gewei      LIKE  lips-gewei"单项目毛重单位
             "printed    TYPE c,"是否已打印
             count_prt  TYPE i"记录此交货单打印次数
             beizhu(20TYPE "备注
           END OF ty_all.

    TYPES:BEGIN OF ty_header,
            vbelv       LIKE  vbfa-vbelv ,  "销售订单号
            "tknum      LIKE  vttp-tknum, "装运单号
            auart       LIKE  vbak-auart"销售订单类型
            auart_txt   LIKE  tvakt-bezei"销售订单类型描述
            vkorg       LIKE  vbak-vkorg"销售组织
            vtweg       LIKE  vbak-vtweg"分销渠道
            lfart       LIKE  likp-lfart"交货类型
            vstel       LIKE  likp-vstel"装运点
            vstel_txt   LIKE  tvstt-vtext"装运点描述
            lfart_txt   LIKE  tvlkt-vtext"交货类型描述
            vbeln_im    LIKE  mseg-vbeln_im "交货单号
            mblnr       LIKE  mseg-mblnr"物料凭证
            shkzg       LIKE  mseg-shkzg"借贷标识
            budat_mkpf  LIKE  mseg-budat_mkpf "出库日期
            cputm_mkpf  LIKE  mseg-cputm_mkpf "输入时间
            kunag       LIKE  likp-kunag "客户
            kunag_txt   LIKE  kna1-name1"客户名称
            kunnr       LIKE  likp-kunnr "送达方
            kunnr_txt   LIKE  kna1-name1"送达方名称
            lgort       LIKE  mseg-lgort "库存地点
            lgort_txt   LIKE t001l-lgobe "库存地点描述
            werks       LIKE  mseg-werks"工厂
            stras       LIKE  kna1-stras "客户地址
            telf1       LIKE  kna1-telf1 "电话
            usnam_mkpf  LIKE  mseg-usnam_mkpf "经办人
            name_last   LIKE  adrp-name_last"创建者姓
            name_first  LIKE  adrp-name_first"创建者名
            total_brgew LIKE lips-brgew"项目总毛重
            bolnr       LIKE likp-bolnr"物流单号

            count_prt   TYPE i"记录此交货单打印次数
            beizhu(60)  TYPE "备注
          END OF ty_header.

    TYPES:BEGIN OF ty_items,
            vbelv      LIKE  vbfa-vbelv ,  "销售订单号
            vbeln_im   LIKE  mseg-vbeln_im "交货单号
            lfart      LIKE  likp-lfart"交货类型
            shkzg      LIKE  mseg-shkzg"借贷标识
            budat_mkpf LIKE  mseg-budat_mkpf "出库日期
            cputm_mkpf LIKE  mseg-cputm_mkpf "输入时间
            mblnr      LIKE  mseg-mblnr"物料凭证
            matnr      LIKE  mseg-matnr "物料编码
            arktx      LIKE  lips-arktx "物料描述
            lgort      LIKE  mseg-lgort "库存地点
            menge      LIKE  mseg-menge "数量
            vrkme      LIKE  lips-vrkme "单位
            charg      LIKE  mseg-charg "批次
            vbelp_im   LIKE  mseg-vbelp_im "项目
            pstyv      LIKE  lips-pstyv"行项目类别
            uecha      LIKE  lips-uecha"上层项目号
            pstyv_txt  LIKE  tvapt-vtext"类别描述
            brgew      LIKE  lips-brgew"单项目毛重
            gewei      LIKE  lips-gewei"单项目毛重单位
            bolnr      LIKE  likp-bolnr "物流单号
            beizhu(45TYPE "备注
          END OF ty_items.

    TYPES:BEGIN OF ty_items_n,
            vbelv      LIKE  vbfa-vbelv ,  "销售订单号
            vbeln_im   LIKE  mseg-vbeln_im "交货单号
            "vbelp_im   LIKE  mseg-vbeln_im , "交货单号
            matnr      LIKE  mseg-matnr "物料编码
            arktx      LIKE  lips-arktx "物料描述
            menge1     LIKE  mseg-menge "本品数量
            menge2     LIKE  mseg-menge "赠品数量
            menge3     LIKE  mseg-menge "总计数量
            vrkme      LIKE  lips-vrkme "单位
            "lgort      LIKE  lips-lgort , "库存地点
            "vbelp_im   LIKE  mseg-vbelp_im , "项目
            "pstyv      LIKE  lips-pstyv, "行项目类别
            "uecha      LIKE  lips-uecha, "上层项目号
            "pstyv_txt  LIKE  tvapt-vtext, "类别描述
            "brgew      LIKE  lips-brgew, "单项目毛重
            "gewei      LIKE  lips-gewei, "单项目毛重单位
            "bolnr      LIKE  likp-bolnr , "物流单号
            beizhu(45TYPE "备注
          END OF ty_items_n.

    *DATA:hs_items_n TYPE HASHED TABLE OF ty_items_n
    *                WITH UNIQUE KEY vbelv vbeln_im matnr arktx vrkme beizhu
    *                WITH HEADER LINE.
    DATA:hs_items_n TYPE TABLE OF ty_items_n WITH HEADER LINE.

    DATA:gt_items_n TYPE ty_items_n OCCURS 0.
    DATA:gt_items_n_show TYPE ty_items_n OCCURS 0.
    DATA:gt_items_n_temp TYPE ty_items_n OCCURS 0.
    DATA:wa_items_n TYPE ty_items_n.

    DATA:wa_all     TYPE ty_all,      gt_all     
    TYPE ty_all OCCURS 0,      gt_all_tmp 
    TYPE ty_all OCCURS 0.

    DATA:wa_header TYPE ty_header,      gt_header 
    TYPE ty_header OCCURS 0.

    DATA:wa_items TYPE ty_items,      gt_items 
    TYPE ty_items OCCURS 0.

    DATA:gt_dc TYPE STANDARD  TABLE OF ztbjdyzt.
    DATA:wa_dc TYPE ztbjdyzt.
    DATA:forms TYPE i."在FORM print里循环
    *定义传入到smartforms的变量开始
    DATA:fm_name TYPE rs38l_fnam.
    DATA:itemsname(32TYPE c.
    DATA:headername(32TYPE c.
    *定义传入到smartforms的变量结束

    DATA job_output_info    TYPE ssfcrescl.
    DATA job_output_options TYPE ssfcresop.
    DATA BEGIN OF pdf OCCURS 10.         
    INCLUDE STRUCTURE tline.
    DATA END OF pdf.
    DATA len TYPE i.  "PDF文件大小


    *定义存储ALV向smartforms传入数据的内表开始
    DATA:gt_header_temp TYPE ty_header OCCURS 0.
    DATA:gt_items_temp TYPE ty_items OCCURS 0.
    DATA:gt_all_temp TYPE ty_all OCCURS 0.
    *定义存储ALV向smartforms传入数据的内表结束

    *ALV显示头数据开始
    DATA:gt_header_show TYPE ty_header OCCURS 0.
    DATA:gt_items_show TYPE ty_items OCCURS 0.
    *ALV显示头数据结束


    "控制smartforms参数声明开始
    DATA :control_parameters TYPE ssfctrlop,       lw_output_opt      
    TYPE ssfcompop"Smart Forms: 智能写作器 (传输) 选项
    DATA: lw_ssfcrescl TYPE ssfcrescl.
    "控制smartforms参数声明结束


    DATA: gs_fcat TYPE lvc_s_fcat,       gt_fcat 
    TYPE lvc_t_fcat,       gs_layo 
    TYPE lvc_s_layo,       gs_grid 
    TYPE lvc_s_glay.
    DATA: gt_event      TYPE slis_t_event WITH HEADER LINE,       gt_event_exit 
    TYPE slis_t_event_exit WITH HEADER LINE.

    DATA:  ref_grid TYPE REF TO cl_gui_alv_grid .

    *PARAMETERS filename TYPE rlgrap-filename.
    *
    *AT SELECTION-SCREEN ON VALUE-REQUEST FOR filename.
    *  PERFORM f4_file_save CHANGING filename.


    START-OF-SELECTION.   
    SELECT-OPTIONS:                   p_vbeln    
    FOR likp-vbeln  "交货单号                   p_werks    
    FOR lips-werks  "工厂 ,                   p_lgort    
    FOR lips-lgort   ,"库存地点                   p_budat    
    FOR mkpf-budat ,"过账日期                   p_usnam    
    FOR vttp-ernam,"创建者                   p_vkorg    

    FOR vbak-vkorg ,"销售组织                   p_lfart    
    FOR likp-lfart,                   p_tknum    
    FOR vttp-tknum NO INTERVALS NO-EXTENSION ."装运单号.   
    "P_TPLST   FOR VTTK-TPLST ,   
    "P_ERNAM   FOR VTTK-ERNAM ,   
    "P_ROUTE   FOR VTTK-ROUTE .   
    PERFORM frm_get_data.   
    PERFORM display_data .

    END-OF-SELECTION.   

    "当屏幕失去焦点时,自动刷新声明类开始
    CLASS lcl_event_receiver DEFINITION.   
    PUBLIC SECTION.     
    METHODS handle_modify                   
    FOR EVENT data_changed_finished OF cl_gui_alv_grid       
    IMPORTING e_modified et_good_cells.
    ENDCLASS.

    CLASS lcl_event_receiver IMPLEMENTATION.   
    METHOD handle_modify.
    *    PERFORM refresh.     

    DATA stbl TYPE lvc_s_stbl.     stbl

    -row 'X'." 基于行的稳定刷新     stbl
    -col 'X'." 基于列稳定刷新     
    CALL METHOD ref_grid->refresh_table_display       
    EXPORTING         is_stable 
    = stbl.   
    ENDMETHOD.                    "HANDLE_MODIFY
    ENDCLASS.                    "LCL_EVENT_RECEIVER IMPLEMENTATION
    DATA gt_event_receiver TYPE REF TO lcl_event_receiver .
    "当屏幕失去焦点时,自动刷新声明类结束

    FORM frm_get_data ."lp~kunag lp~kunnr   
    SELECT     vbfa
    ~vbelv ,lips~vbeln AS vbeln_im , likp~kunag ,likp~kunnr ,likp~lfart,likp~vstel, kna1~stras, mseg~budat_mkpf, mseg~zeile,  mseg~shkzg,          kna1
    ~telf1 , mseg~usnam_mkpf, lips~matnr  , lips~arktx ,lips~lgort , lips~lfimg AS menge,lips~werks,lips~uecha,          lips
    ~vrkme , mseg~charg ,lips~posnr AS vbelp_im , likp~bolnr, lips~brgew ,lips~gewei, lips~pstyv , mseg~mblnr, mseg~bwart, mseg~cputm_mkpf ,adrp~name_last,           adrp
    ~name_first ,mseg~smbln, mseg~smblp, vbak~auart,vbak~vkorg, vbak~vtweg,           vttp
    ~tknum      
    INTO CORRESPONDING FIELDS OF TABLE @gt_all
    *  FROM   mseg AS m
    *
    *  INNER JOIN mkpf AS mf
    *  ON m~mblnr = mf~mblnr AND mf~mjahr = m~mjahr wAND mf~vgart = 'WL'
    *  INNER JOIN  lips AS ls
    *  ON m~vbeln_im = ls~vbeln AND m~vbelp_im = ls~posnr   
    FROM likp   INNER 
    JOIN lips   
    ON likp~vbeln  = lips~vbeln   INNER 
    JOIN mseg   
    ON  mseg~vbeln_im = lips~vbeln AND mseg~vbelp_im = lips~posnr   
    LEFT  JOIN mkpf   
    ON  mseg~mblnr = mkpf~mblnr AND mkpf~mjahr = mseg~mjahr AND mkpf~vgart 'WL'   INNER 
    JOIN kna1   
    ON kna1~kunnr = likp~kunnr   
    LEFT JOIN vbfa   
    ON vbfa~vbeln = lips~vbeln AND vbfa~posnn = lips~posnr   

    LEFT JOIN vbak   
    ON vbak~vbeln = vbfa~vbelv   INNER 
    JOIN usr21     
    ON usr21~bname = mkpf~usnam     
    LEFT JOIN adrp     
    ON adrp~persnumber = usr21~persnumber     
    LEFT  JOIN vttp     
    ON vttp~vbeln = likp~vbeln   
    WHERE lips~vbeln IN  @p_vbeln   AND         lips
    ~werks    IN  @p_werks     AND         lips
    ~lgort    IN   @p_lgort AND         mkpf
    ~budat   IN  @p_budat    AND         mkpf
    ~usnam   IN  @p_usnam  AND         vbak
    ~vkorg   IN  @p_vkorg  AND         likp
    ~lfart   IN  @p_lfart AND " AND         vttp
    ~tknum  IN  @p_tknum .   
    SORT gt_all ASCENDING BY vbelv  vbeln_im mblnr budat_mkpf cputm_mkpf vbelp_im."BUDAT_MKPF CPUTM_MKPF.   
    DELETE ADJACENT DUPLICATES FROM gt_all.   
    CLEAR wa_all.     
    LOOP AT gt_all INTO wa_all.


    *    AUTHORITY-CHECK OBJECT 'V_VBAK_VKO'
    *                  ID 'VKORG' FIELD wa_all-vkorg
    *                  ID 'VTWEG' DUMMY "wa_all-vtweg
    *                  ID 'SPART' DUMMY "gwa_vbap-spart2 "行项目
    *                  ID 'ACTVT' FIELD '03'.
    *    IF sy-subrc <> 0.
    *      DELETE TABLE gt_all FROM wa_all.
    *      CONTINUE.
    *    ENDIF.     

    SELECT SINGLE lgobe INTO wa_all-lgort_txt       
    FROM t001l       
    WHERE lgort EQ wa_all-lgort.

    *  SELECT  lgobe AS lgort_txt INTO CORRESPONDING FIELDS OF TABLE gt_all_tmp
    *    FROM t001l
    *    FOR ALL ENTRIES IN gt_all
    *    WHERE lgort = gt_all-lgort.     

    SELECT SINGLE vtext INTO wa_all-vstel_txt       
    FROM tvstt       
    WHERE vstel EQ wa_all-vstel.

    *  SELECT  vtext AS vstel_txt INTO CORRESPONDING FIELDS OF TABLE gt_all_tmp
    *    FROM tvstt
    *    FOR ALL ENTRIES IN gt_all
    *    WHERE vstel = gt_all-vstel.     

    SELECT SINGLE vtext INTO wa_all-lfart_txt       
    FROM tvlkt       
    WHERE lfart EQ wa_all-lfart.
    *
    *  SELECT vtext AS lfart_txt INTO CORRESPONDING FIELDS OF TABLE gt_all_tmp
    *    FROM tvlkt
    *    FOR ALL ENTRIES IN gt_all
    *    WHERE lfart = gt_all-lfart.     

    SELECT SINGLE bezei INTO wa_all-auart_txt       
    FROM tvakt       
    WHERE auart EQ wa_all-auart.

    *  SELECT bezei AS auart_txt INTO CORRESPONDING FIELDS OF TABLE gt_all_tmp
    *    FROM tvakt
    *    FOR ALL ENTRIES IN gt_all
    *    WHERE auart = gt_all-auart.     

    SELECT SINGLE name1 INTO wa_all-kunnr_txt       
    FROM kna1 WHERE kunnr EQ wa_all-kunnr.

    *  SELECT name1 AS kunnr_txt INTO CORRESPONDING FIELDS OF TABLE gt_all_tmp
    *    FROM kna1
    *    FOR ALL ENTRIES IN gt_all
    *    WHERE kunnr = gt_all-kunnr.     

    SELECT SINGLE name1 INTO wa_all-kunag_txt     
    FROM kna1 WHERE kunnr EQ wa_all-kunag.

    *  SELECT name1 AS kunag_txt INTO CORRESPONDING FIELDS OF TABLE gt_all_tmp
    *   FROM kna1
    *   FOR ALL ENTRIES IN gt_all
    *   WHERE kunnr = gt_all-kunag.

    *     SELECT * INTO CORRESPONDING FIELDS OF TABLE gt_dc
    *       FROM ztbjdyzt
    *       FOR ALL ENTRIES IN gt_all
    *       WHERE key1 eq gt_all-vbeln_im AND type eq '005'.
    *  CLEAR gt_all.
    *  gt_all[] = gt_all_tmp[].
    *  CLEAR gt_all_tmp.
    *  LOOP AT gt_all INTO wa_all.     

    CONCATENATE wa_all-name_last wa_all-name_first INTO wa_all-name_last.     

    SELECT * INTO CORRESPONDING FIELDS OF TABLE gt_dc       
    FROM ztbjdyzt WHERE key1 EQ wa_all-vbeln_im AND type EQ '005'.     

    DESCRIBE TABLE gt_dc LINES wa_all-count_prt.     

    MODIFY gt_all FROM wa_all.   
    ENDLOOP.   

    LOOP AT gt_all INTO wa_all WHERE smbln IS NOT INITIAL AND smblp IS NOT  INITIAL .     
    DELETE  gt_all  WHERE mblnr = wa_all-smbln AND zeile = wa_all-smblp.     
    DELETE  TABLE gt_all FROM wa_all.   
    ENDLOOP.   

    LOOP AT gt_all INTO wa_all WHERE shkzg 'S'.     
    IF  wa_all-pstyv EQ  'REN' OR wa_all-pstyv EQ  'REN1' OR         wa_all
    -pstyv EQ  'REN2' OR wa_all-pstyv EQ 'REN3' OR         wa_all
    -pstyv EQ 'REQ' OR wa_all-pstyv EQ  'REHP'.       
    CONTINUE.     
    ELSE.       
    DELETE  TABLE gt_all FROM wa_all.     
    ENDIF.   


    ENDLOOP.   
    MOVE-CORRESPONDING gt_all TO gt_header_show.   
    MOVE-CORRESPONDING gt_all TO gt_items_show.   

    DATA: luecha      LIKE lips-uecha"上层项目批   
    DATA: lpstyv      LIKE lips-pstyv"上层行项目类型
    *  DATA: lwa_items   TYPE ty_items.
    *  DATA: l_items   TYPE ty_items.   
    LOOP AT gt_items_show INTO wa_items WHERE  lfart  NE 'ZLF9' AND  ( pstyv EQ 'TBN' OR pstyv EQ 'ZTNN'                                        
    OR pstyv EQ'ZMN' OR pstyv EQ 'TBN1' ).     
    IF wa_items-pstyv EQ 'ZMN' .
    *      SELECT SINGLE uecha INTO luecha
    *        FROM lips
    *        WHERE vbeln EQ wa_items-vbeln_im AND posnr EQ wa_items-vbelp_im.       

    SELECT SINGLE pstyv INTO lpstyv         
    FROM lips         
    WHERE vbeln EQ wa_items-vbeln_im AND posnr EQ wa_items-uecha.       

    IF lpstyv EQ 'TBN' .         wa_items
    -pstyv_txt '赠'.       
    ENDIF.       

    PERFORM frm_read_txt_po USING wa_items-vbeln_im luecha                             
    CHANGING wa_items-beizhu.     
    ELSE.       wa_items
    -pstyv_txt '赠'.       
    PERFORM frm_read_txt_po USING wa_items-vbeln_im wa_items-vbelp_im                             
    CHANGING wa_items-beizhu.     
    ENDIF.

    *    PERFORM frm_read_txt_po USING wa_items-vbeln_im wa_items-vbelp_im
    *                            CHANGING wa_items-beizhu.     
    MODIFY gt_items_show FROM wa_items.   
    ENDLOOP.   

    DATA:lt_items_tmp TYPE  ty_items OCCURS .   
    DATA:wa_items_tmp TYPE  ty_items  .   

    DATA:ls_items  TYPE ty_items.   
    LOOP AT gt_items_show INTO wa_items WHERE uecha IS NOT INITIAL.     ls_items 
    = wa_items.     ls_items
    -vbelp_im = wa_items-uecha.     

    SELECT SINGLE pstyv INTO ls_items-pstyv         
    FROM lips         
    WHERE vbeln EQ ls_items-vbeln_im AND posnr EQ ls_items-vbelp_im.     
    CLEAR ls_items-uecha.
    *    LOOP AT lt_items_tmp INTO wa_items_tmp WHERE vbelv = ls_items-vbelv
    *                             AND vbeln_im = ls_items-vbeln_im
    *                            AND vbelp_im = ls_items-vbelp_im .
    *
    *    ENDLOOP.     
    READ TABLE lt_items_tmp INTO wa_items_tmp WITH KEY vbelv = ls_items-vbelv                                      vbeln_im 
    = ls_items-vbeln_im                                      vbelp_im 
    = ls_items-vbelp_im.     
    IF sy-subrc EQ 0.       wa_items_tmp
    -menge = wa_items_tmp-menge + ls_items-menge.       wa_items_tmp
    -brgew = wa_items_tmp-brgew + ls_items-brgew.       
    MODIFY lt_items_tmp FROM wa_items_tmp INDEX sy-tabix.     
    ELSE.       
    APPEND ls_items TO lt_items_tmp.     
    ENDIF.     

    DELETE  gt_items_show WHERE vbelv = wa_items-vbelv AND vbeln_im = wa_items-vbeln_im                              
    AND vbelp_im = wa_items-vbelp_im .   
    ENDLOOP.   
    APPEND LINES OF lt_items_tmp TO gt_items_show.   
    CLEAR: lt_items_tmp,wa_items_tmp,ls_items.   
    SORT gt_items_show BY vbelv vbeln_im vbelp_im.   
    DELETE ADJACENT DUPLICATES FROM gt_header_show.   

    DATA count LIKE lips-brgew VALUE 0.   
    LOOP AT gt_header_show INTO wa_header.     
    LOOP AT gt_items_show INTO wa_items         
    WHERE vbeln_im EQ wa_header-vbeln_im             
    AND mblnr EQ wa_header-mblnr             
    AND vbelv EQ wa_header-vbelv             
    AND shkzg EQ wa_header-shkzg             
    AND budat_mkpf EQ wa_header-budat_mkpf             
    AND lgort EQ wa_header-lgort .       

    IF wa_items-gewei NE 'KG'.         
    CALL FUNCTION 'UNIT_CONVERSION_SIMPLE'           
    EXPORTING             
    input                = wa_items-brgew             round_sign           
    'X'             unit_in              
    = wa_items-gewei             unit_out             
    'KG'           
    IMPORTING             
    output               = wa_items-brgew           
    EXCEPTIONS             conversion_not_found 
    01             division_by_zero     
    02             input_invalid        
    03.       
    ENDIF.       

    count = wa_items-brgew + count."放入到要往smartforms传入的内表行项目       
    " ENDIF.     
    ENDLOOP.     

    CALL FUNCTION 'UNIT_CONVERSION_SIMPLE'       
    EXPORTING         
    input                count         round_sign           
    'X'         unit_in              
    'KG'         unit_out             
    'TO'       
    IMPORTING         
    output               count       
    EXCEPTIONS         conversion_not_found 
    01         division_by_zero     
    02         input_invalid        
    03.     wa_header
    -total_brgew count.     
    MODIFY TABLE gt_header_show FROM wa_header.     
    CLEAR wa_items.     
    CLEAR wa_header.     
    CLEAR count.   

    ENDLOOP.   

    SORT gt_items_show BY vbelv vbeln_im vbelp_im.   
    DATA:l_tabix TYPE sy-tabix.   
    DATA:lwa_items TYPE ty_items.   
    LOOP AT gt_items_show INTO wa_items.     l_tabix 
    = sy-tabix + 1.     
    MOVE-CORRESPONDING wa_items TO hs_items_n.     


    IF wa_items-pstyv EQ 'TBN'.       hs_items_n
    -menge1 0.       hs_items_n
    -menge2 = wa_items-menge.       hs_items_n
    -menge3 = hs_items_n-menge1 + hs_items_n-menge2.
    *      PERFORM frm_read_txt_po USING wa_items-vbeln_im wa_items-vbelp_im
    *                              CHANGING hs_items_n-beizhu.     
    ELSE.       
    READ TABLE gt_items_show INTO lwa_items INDEX l_tabix.       
    IF lwa_items-pstyv EQ 'TBN' AND lwa_items-matnr EQ wa_items-matnr.         hs_items_n
    -menge1 = wa_items-menge.         hs_items_n
    -menge2 = lwa_items-menge.         hs_items_n
    -menge3 = hs_items_n-menge1 + hs_items_n-menge2.         

    DELETE TABLE gt_items_show FROM lwa_items.
    *        PERFORM frm_read_txt_po USING wa_items-vbeln_im wa_items-vbelp_im
    *                              CHANGING hs_items_n-beizhu.       

    ELSEIF lwa_items-pstyv EQ 'TBN' AND lwa_items-matnr NE wa_items-matnr.         hs_items_n
    -menge1 = wa_items-menge.         hs_items_n
    -menge2 0.         hs_items_n
    -menge3 = hs_items_n-menge1 + hs_items_n-menge2.
    *        PERFORM frm_read_txt_po USING wa_items-vbeln_im wa_items-vbelp_im
    *                              CHANGING hs_items_n-beizhu.       
    ELSE.         hs_items_n
    -menge1 = wa_items-menge.         hs_items_n
    -menge2 0.         hs_items_n
    -menge3 = hs_items_n-menge1 + hs_items_n-menge2.
    *        PERFORM frm_read_txt_po USING wa_items-vbeln_im wa_items-vbelp_im
    *                              CHANGING hs_items_n-beizhu.       
    ENDIF.     
    ENDIF.

    *    IF wa_items-pstyv EQ 'TBN'."当行项目为标准类型赋值menge1
    *      hs_items_n-menge2 = wa_items-menge.
    *      hs_items_n-menge1 = 0.
    *    ELSE.                      "当行项目为赠品类型赋值menge2
    *      hs_items_n-menge1 = wa_items-menge.
    *      hs_items_n-menge2 = 0.
    *    ENDIF.
    *    hs_items_n-menge3 = wa_items-menge.
    *    COLLECT hs_items_n.     

    PERFORM frm_read_txt_po USING wa_items-vbeln_im wa_items-vbelp_im                                   
    CHANGING hs_items_n-beizhu.     
    APPEND hs_items_n.   
    ENDLOOP.   gt_items_n_show[] 
    = hs_items_n[].
    ENDFORM.


    FORM display_data .   

    IF gt_header_show[] IS INITIAL.     
    MESSAGE '没有数据显示!' TYPE 'I'.     
    RETURN.   
    ENDIF.   
    PERFORM set_fcat.   
    PERFORM set_layout.   

    PERFORM show_alv  TABLES gt_fcat  gt_header_show[]                      
    USING  gs_layo.
    ENDFORM.                    " DISPLAY_DATA

    *&---------------------------------------------------------------------*
    FORM set_fcat .   
    PERFORM csalv_set_fcat USING:

    " 'Field' 'Text' 'Edit' 'Zero' 'Type' 'Qfieldname' 'Key' 'Hostspot' 'Emphasize' 'Checkbox'             
    "'TKNUM'  '装运编号' '' 'X'  ''  ''  ''   ''  ''  '' '' '' '',             
    'VBELV'  '销售订单号' '' 'X'  ''  ''  ''   ''  ''  '' '' '' '',             
    'AUART'  '销售订单类型' '' 'X'  ''  ''  ''   ''  ''  '' '' '' '',             
    'AUART_TXT'  '销售订单类型描述' '' 'X'  ''  ''  ''   ''  ''  '' '' '' '',             
    'VKORG'  '销售组织' '' 'X'  ''  ''  ''   ''  ''  '' '' '' '',             
    'VBELN_IM' '交货单号'   ''  'X'  ''  ''  ''  ''  ''  '' ''  '' '',             
    'LFART' '交货类型'   ''  'X'  ''  ''  ''  ''  ''  '' ''  '' '',             
    'LFART_TXT' '交货类型描述'   ''  'X'  ''  ''  ''  ''  ''  '' ''  '' '',             
    'MBLNR' '物料凭证'   ''  ''  ''  ''  ''  ''  ''  '' ''  '' '',             
    "'SHKZG' '借贷标识'  ''  ''  ''  ''  ''  ''  ''  '' ''  '' '',             
    'BUDAT_MKPF' '凭证日期'   ''  ''  ''  ''  ''  ''  ''  '' ''  '' '',             
    'CPUTM_MKPF' '凭证时间'   ''  ''  ''  ''  ''  ''  ''  '' ''  '' '',             
    "'ZEILE' '凭证项目'    '' ''  ''  ''  ''  ''  ''  '' ''   '' '',             
    "'BWART' '移动类型'   ''  ''  ''  ''  ''  ''  ''  '' ''  '' '',             
    'KUNAG_TXT' '客户'       ''  ''  ''  ''  ''  ''  ''  '' ''  '' '',             
    'KUNNR_TXT' '送达方'     ''  ''  ''  ''  ''  ''  ''  '' ''  '' '',             

    "'MATNR'  '产品编码'  ''  ''  ''  ''  ''  ''  ''  '' ''  '' '' ,             
    "'ARKTX'  '产品'  ''  ''  ''  ''  ''  ''  ''  '' ''  '' '',             
    "'MENGE'   '数量'     ''  ''  ''  ''  ''  ''  ''  '' ''  '0' '',             
    "'VRKME'  '单位'      ''  ''  ''  ''  ''  ''  ''  '' ''  '' '',             
    "'BRGEW'     '毛重'     ''  ''  ''  ''  ''  ''  ''  '' ''  '0' '',             
    'WERKS'     '工厂' ''  ''  ''  ''  ''  ''  ''  '' ''  '' '',             
    'LGORT_TXT'   '库存地点' ''  ''  ''  ''  ''  ''  ''  '' ''  '' '',             
    'NAME_LAST'  '经办人'    ''  ''  ''  ''  ''  ''  ''  '' ''  '' '',             
    "'NAME_FIRST'  '名'    ''  ''  ''  ''  ''  ''  ''  '' ''  '' '',             

    'COUNT_PRT'  '已打印次数'     ''  ''  ''  ''  ''  ''  ''  '' '' '' '',             
    'BEIZHU'  '备注'     'X'  ''  ''  ''  ''  ''  ''  '' '' '' 'X'.   


    "'zsel'   '是否打印 ' '' ''  ''  ''  ''  ''  ''  'X' ''.

    ENDFORM.                    " SET_FCAT
    *&---------------------------------------------------------------------*
    FORM set_layout .   gs_layo
    -zebra             'X'.
    *  gs_layout-stylefname     = 'FIELD_STYLE'.   gs_layo
    -cwidth_opt        'X'.
    ENDFORM.                    " SET_LAYOUT
    *&---------------------------------------------------------------------*
    FORM csalv_set_fcat USING       p_name       p_text       p_edit       p_zero       p_type       p_qfieldname       p_key       p_hotspot       p_emphasize       p_checkbox       p_do_sum       p_decimals_out       p_no_out












    .   gs_fcat
    -fieldname   =  p_name.
    *  gs_fcat-reptext_l   =
    *  gs_fcat-selddictxt   =   gs_fcat
    -reptext     =  p_text.   gs_fcat
    -edit        =  p_edit.   gs_fcat
    -no_zero     =  p_zero.   gs_fcat
    -datatype    =  p_type.   gs_fcat
    -qfieldname  =  p_qfieldname.   gs_fcat
    -key         =  p_key.   gs_fcat
    -hotspot     =  p_hotspot.   gs_fcat
    -emphasize   =  p_emphasize.   gs_fcat
    -checkbox    =   p_checkbox.   gs_fcat
    -do_sum      =  p_do_sum.   gs_fcat
    -decimals_o  =  p_decimals_out.   gs_fcat
    -no_out     =  p_no_out.   
    APPEND gs_fcat TO  gt_fcat.
    ENDFORM.                    "csalv_set_fcat

    *&---------------------------------------------------------------------*

    FORM show_alv TABLES  pt_fcat                       pt_tab               

    USING   ps_layout.   gs_grid


    -edt_cll_cb 'X'."当屏幕失去焦点时,自动刷新   gt_event

    -name 'CALLER_EXIT'.   "slis_ev_caller_exit_at_start事件   gt_event
    -form 'FM_BUTTON'.   
    APPEND gt_event .   

    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'     
    EXPORTING       i_callback_program       
    = sy-repid       i_callback_user_command  
    'USER_COMMAND'       i_grid_settings          
    = gs_grid       i_callback_pf_status_set 
    'SET_PF_STATUS'       is_layout_lvc            
    = gs_layo       it_fieldcat_lvc          
    = pt_fcat[]       it_events                
    = gt_event[]       i_save                   
    'X'
    *     it_event_exit            = gt_event_exit[]     
    TABLES       t_outtab                 
    = pt_tab     
    EXCEPTIONS       program_error            
    1       
    OTHERS                   2.
    ENDFORM.                    "csalv_set_fcat




    FORM print.   

    DATA:ptr_count(10TYPE c.   
    DATAlines TYPE i."获取往smartforms传入的要打印的行数目   
    DATA: insertrows TYPE i."需要再插入多少空行   
    DATArows TYPE VALUE 15."一页要打印的行数   

    CLEAR gt_all_temp.   
    CLEAR gt_header.   
    CLEAR gt_items_n.   
    CLEAR gt_header_temp.   
    CLEAR gt_items_n_temp.   

    DATA count LIKE lips-brgew VALUE 0.   
    DATA:ls_row  TYPE lvc_s_row,        lt_rows 
    TYPE lvc_t_row.   
    "CLEAR GT_HEADER.   
    "CLEAR GT_ITEMS.   
    CALL METHOD ref_grid->get_selected_rows     
    IMPORTING       et_index_rows 
    = lt_rows
    *     et_row_no     =     
    .   



    LOOP AT lt_rows INTO ls_row.     
    READ TABLE gt_header_show INTO wa_header INDEX ls_row-index.     
    APPEND wa_header TO gt_header.     
    LOOP AT gt_items_n_show INTO wa_items_n               
    WHERE vbeln_im EQ wa_header-vbeln_im                 
    AND vbelv EQ wa_header-vbelv .       

    APPEND wa_items_n TO gt_items_n.     

    ENDLOOP.   

    ENDLOOP.   

    CLEAR: control_parameters.   control_parameters
    -preview   'X'.   control_parameters
    -no_open   'X'.   control_parameters
    -no_close  'X'.
    *  control_parameters-getotf    = 'X'.
    *  control_parameters-no_dialog = 'X'.   lw_output_opt
    -tdiexit 'X'.   

    CALL FUNCTION 'SSF_OPEN'     
    EXPORTING       control_parameters 
    = control_parameters       output_options     
    = lw_output_opt
    *    IMPORTING
    *     job_output_info    = job_output_info     
    EXCEPTIONS       formatting_error   
    1       internal_error     
    2       send_error         
    3       user_canceled      
    4       
    OTHERS             5.   
    IF sy-subrc <> 0.     
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno     
    WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.     
    EXIT.   
    ENDIF.   


    LOOP AT gt_header INTO wa_header.     

    SELECT * INTO CORRESPONDING FIELDS OF TABLE gt_dc       
    FROM ztbjdyzt WHERE key1 EQ wa_header-vbeln_im AND type EQ '005'.     

    DESCRIBE TABLE gt_dc LINES wa_header-count_prt.     wa_header
    -count_prt = wa_header-count_prt + 1.     

    PERFORM frm_read_txt USING wa_header-vbeln_im  CHANGING wa_header-beizhu.     
    APPEND wa_header TO gt_header_temp."放入到要往smartforms传入的表头内表     

    LOOP AT gt_items_n INTO wa_items_n             
    WHERE vbeln_im EQ wa_header-vbeln_im                 
    AND vbelv EQ wa_header-vbelv.       

    APPEND wa_items_n TO gt_items_n_temp.     

    ENDLOOP.     
    CLEAR wa_items_n.     
    CLEAR wa_header.     
    IF gt_items_n_temp IS INITIAL.       
    MESSAGE i000(0kWITH  '请选中要打印的内容!'.       
    EXIT .     
    ENDIF.     

    CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'       
    EXPORTING         formname           
    'ZSDSF007_2'       
    IMPORTING         fm_name            
    = fm_name       
    EXCEPTIONS         no_form            
    1         no_function_module 
    2         
    OTHERS             3.     
    "SET HANDLER   gt_event_receiver->handle_modify FOR ref_grid.     
    DESCRIBE TABLE gt_items_n_temp LINES lines.     insertrows 
    =   lines MOD rows .     
    IF insertrows NE 0.       insertrows 
    rows - insertrows.     
    ELSE.       insertrows 
    0.     
    ENDIF.     


    DO insertrows TIMES.       
    APPEND wa_items_n TO gt_items_n_temp."放入到要往smartforms传入的行项目内表     
    ENDDO.     

    PERFORM frm_print_data."每一个表头数据向smartforms传入数据   


    ENDLOOP.   

    CALL FUNCTION 'SSF_CLOSE'     
    IMPORTING       job_output_info  
    = job_output_info     
    EXCEPTIONS       formatting_error 
    1       internal_error   
    2       send_error       
    3       
    OTHERS           4.   

    IF sy-subrc <> 0.     
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno     
    WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.   
    ENDIF.   


    IF job_output_info-outputdone 'X'.     
    CLEAR wa_dc.     

    LOOP AT gt_header INTO wa_header.       wa_dc
    -mandt   = sy-mandt.       wa_dc
    -to_date = sy-datum.       wa_dc
    -to_time = sy-uzeit.       wa_dc
    -type    '005'.       wa_dc
    -tab_no  = sy-tabix.       wa_dc
    -name    = sy-uname.       wa_dc
    -key1    = wa_header-vbeln_im.       wa_dc
    -to_go   'X'.       
    APPEND wa_dc TO gt_dc.       wa_header
    -count_prt =  wa_header-count_prt + 1.       
    MODIFY TABLE gt_header_show  FROM wa_header.     

    ENDLOOP.     
    MODIFY ztbjdyzt FROM TABLE gt_dc.     
    COMMIT WORK.     

    DATA stbl TYPE lvc_s_stbl.     stbl

    -row 'X'." 基于行的稳定刷新     stbl
    -col 'X'." 基于列稳定刷新     
    CALL METHOD ref_grid->refresh_table_display       
    EXPORTING         is_stable 
    = stbl.   
    ENDIF.   
    CLEAR gt_dc[].   
    CLEAR job_output_info.



    ENDFORM.
    FORM frm_print_data.   forms 

    = forms + 1.   
    DATA: ls_compop  TYPE ssfcompop.   
    DATA: ls_job_output_info    TYPE ssfcrescl.   
    DATA :lt_itcoo TYPE itcoo OCCURS 0"Smart Forms: OTF 结构   itemsname 
    = sy-uname && forms && '1' && sy-datum && sy-uzeit.   headername 
    = sy-uname && forms && '2' && sy-datum && sy-uzeit.   savebuffer gt_items_n_temp itemsname


    .   savebuffer gt_header_temp headername
    .
    *  PTR_COUNT =  GV_COUNT .
    *调用 smartForms   ls_compop
    -tddest 'DEFAULT'.   ls_compop
    -tdnoprev 'X'.   ls_compop
    -tdiexit 'X'.   
    CALL FUNCTION fm_name     
    EXPORTING       control_parameters 
    = control_parameters       output_options     
    = ls_compop       user_settings      
    'X'       ptr_items          
    = itemsname       ptr_header         
    = headername
    *    IMPORTING
    *     job_output_info    = job_output_info
    *     PTR_TOTAL          = GV_COUNT     
    EXCEPTIONS       formatting_error   
    1       internal_error     
    2       send_error         
    3       user_canceled      
    4.   


    "MOVE: job_output_info-otfdata[] TO lt_itcoo. "智能表: OTF表   

    "将OTF表转换成PDF格式   
    "PERFORM covert_pdf TABLES lt_itcoo.   clearbuffer itemsname
    .   clearbuffer headername
    .   
    CLEAR gt_header_temp.   
    CLEAR gt_items_n_temp.   

    "PERFORM  frm_smartforms_to_pdf.
    ENDFORM.



    *&---------------------------------------------------------------------*
    *&      Form  user_command
    *&---------------------------------------------------------------------*
    *       text
    *----------------------------------------------------------------------*
    *      -->P_UCOMM      text
    *      -->PS_SELFIELD  text
    *----------------------------------------------------------------------*

    FORM user_command USING r_ucomm LIKE sy-ucomm       rs_selfield 
    TYPE slis_selfield.   
    "  rs_selfield-refresh = 'X'.   

    CASE r_ucomm.     
    WHEN '&DATA_SAVE'.     
    WHEN '&PRINT' OR '&PRT'.       
    PERFORM print.     
    WHEN '&BACK'.       

    LEAVE TO SCREEN 0.   
    ENDCASE.

    ENDFORM.                    "user_command
    *&---------------------------------------------------------------------*
    *&      Form  SET_PF_STATUS
    *&---------------------------------------------------------------------*
    *       text
    *----------------------------------------------------------------------*
    *      -->RT_EXTAB   text
    *----------------------------------------------------------------------*
    FORM set_pf_status USING rt_extab TYPE slis_t_extab.   
    DATA: lv_lines TYPE i.   

    DESCRIBE TABLE gt_header_show LINES lv_lines.   
    SET PF-STATUS 'STANDARD'.   
    SET TITLEBAR 'TITLE1'  WITH '条目数:' lv_lines.
    ENDFORM.                    "SET_PF_STATUS
    *&---------------------------------------------------------------------*
    *&      Form  fm_button
    *&---------------------------------------------------------------------*
    *       text
    *----------------------------------------------------------------------*
    *      -->E_GRID     text
    *----------------------------------------------------------------------*
    FORM fm_button USING e_grid TYPE slis_data_caller_exit.   

    CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
    *   EXPORTING
    *     IR_SALV_FULLSCREEN_ADAPTER       =     
    IMPORTING
    *     ET_EXCLUDING                     =
    *     E_REPID                          =
    *     E_CALLBACK_PROGRAM               =
    *     E_CALLBACK_ROUTINE               =       e_grid 
    = ref_grid
    *     ET_FIELDCAT_LVC                  =
    *     ER_TRACE                         =
    *     E_FLG_NO_HTML                    =
    *     ES_LAYOUT_KKBLO                  =
    *     ES_SEL_HIDE                      =
    *     ET_EVENT_EXIT                    =
    *     ER_FORM_TOL                      =
    *     ER_FORM_EOL                      =     
    .

    *   CALL METHOD ref_grid->check_changed_data.
    * 设置enter事件   
    CALL METHOD ref_grid->register_edit_event     
    EXPORTING       i_event_id 
    = cl_gui_alv_grid=>mc_evt_enter     
    EXCEPTIONS       error      
    1       
    OTHERS     2.   


    CREATE OBJECT gt_event_receiver.   
    SET HANDLER   gt_event_receiver->handle_modify FOR ref_grid.
    ENDFORM.                    "FM_BUTTON

    FORM covert_pdf TABLES otf_data STRUCTURE itcoo.   
    DATA: lt_lines   TYPE STANDARD TABLE OF tline"SAPscript: 文字行         lt_docs    
    TYPE STANDARD TABLE OF docs"存储文档         l_bin_size 
    TYPE i"   

    "将OTF转换PDF格式   
    CALL FUNCTION 'CONVERT_OTF_2_PDF'     
    IMPORTING       bin_filesize           
    = l_bin_size     
    TABLES       otf                    
    = otf_data "otf 表       doctab_archive         
    = lt_docs       
    lines                  = lt_lines "文本行     
    EXCEPTIONS       err_conv_not_possible  
    1       err_otf_mc_noendmarker 
    2       
    OTHERS                 3.   
    IF sy-subrc <> 0.     
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno     
    WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.   
    ENDIF.

    * PERFORM send_mail TABLES gt_lines.   
    "保存到计算机本地PDF文件   
    PERFORM download_pdf TABLES lt_lines.
    ENDFORM"covert_pdf

    *&---------------------------------------------------------------------*
    *& Form download_pdf
    *&---------------------------------------------------------------------*
    * 保存到本地PDF文件
    *----------------------------------------------------------------------*
    * -->FU_TAB 文件内容
    *----------------------------------------------------------------------*
    FORM download_pdf TABLES fu_tab.   
    CALL FUNCTION 'GUI_DOWNLOAD'     
    EXPORTING
    *     BIN_FILESIZE            =       filename                
    'C: est.pdf' "文件路径       filetype                
    'BIN' "文件类型       codepage                
    '8400' "代码页     
    TABLES       data_tab                
    = fu_tab "文件内容表     
    EXCEPTIONS       file_write_error        
    1       no_batch                
    2       gui_refuse_filetransfer 
    3       invalid_type            
    4       no_authority            
    5       unknown_error           
    6       header_not_allowed      
    7       separator_not_allowed   
    8       filesize_not_allowed    
    9       header_too_long         
    10       dp_error_create         
    11       dp_error_send           
    12       dp_error_write          
    13       unknown_dp_error        
    14       access_denied           
    15       dp_out_of_memory        
    16       disk_full               
    17       dp_timeout              
    18       file_not_found          
    19       dataprovider_exception  
    20       control_flush_error     
    21       
    OTHERS                  22.   
    IF sy-subrc <> 0.     
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno     
    WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.   
    ENDIF.
    ENDFORM"DOWNLOAD_PDF

    FORM frm_read_txt USING vbeln LIKE likp-vbeln                   
    CHANGING txt .   

    DATA :lc_name   TYPE thead-tdname,         lit_lines 
    TYPE TABLE OF tline,         lwa_lines 
    TYPE tline.   
    CLEAR: lit_lines ,          lc_name
    ,          lwa_lines
    .   lc_name 
    = vbeln .   
    CALL FUNCTION 'READ_TEXT'     
    EXPORTING
    *     CLIENT                  = SY-MANDT       
    id                      '0001'       
    language                = sy-langu       name                    
    = lc_name       object                  
    'VBBK'
    *     ARCHIVE_HANDLE          = 0
    *     LOCAL_CAT               = ' '
    *     IMPORTING
    *     HEADER                  =     
    TABLES       
    lines                   = lit_lines     
    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 4.     
    CALL FUNCTION 'READ_TEXT'       
    EXPORTING
    *       CLIENT                  = SY-MANDT         
    id                      '0001'         
    language                = sy-langu         name                    
    = lc_name         object                  
    'VBBK'
    *       ARCHIVE_HANDLE          = 0
    *       LOCAL_CAT               = ' '
    *     IMPORTING
    *       HEADER                  =       
    TABLES         
    lines                   = lit_lines       
    EXCEPTIONS         
    id                      1         
    language                2         name                    
    3         not_found               
    4         object                  
    5         reference_check         
    6         wrong_access_to_archive 
    7         
    OTHERS                  8.   
    ENDIF.   

    LOOP AT lit_lines INTO lwa_lines.
    *      GWA_OUTPUT-RISE_TEXT = LWA_LINES-TDLINE .     
    CONCATENATE txt lwa_lines-tdline INTO txt.   
    ENDLOOP.

    ENDFORM.


    FORM frm_read_txt_po USING vbeln LIKE likp-vbeln  posnr LIKE lips-posnr                   
    CHANGING txt .   

    DATA :lc_name   TYPE thead-tdname,         lit_lines 
    TYPE TABLE OF tline,         lwa_lines 
    TYPE tline.   
    CLEAR: lit_lines ,          lc_name
    ,          lwa_lines
    .   lc_name 
    = vbeln && posnr.   
    CALL FUNCTION 'READ_TEXT'     
    EXPORTING
    *     CLIENT                  = SY-MANDT       
    id                      '0001'       
    language                = sy-langu       name                    
    = lc_name       object                  
    'VBBP'
    *     ARCHIVE_HANDLE          = 0
    *     LOCAL_CAT               = ' '
    *     IMPORTING
    *     HEADER                  =     
    TABLES       
    lines                   = lit_lines     
    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 4.     
    CALL FUNCTION 'READ_TEXT'       
    EXPORTING
    *       CLIENT                  = SY-MANDT         
    id                      '0001'         
    language                = sy-langu         name                    
    = lc_name         object                  
    'VBBP'
    *       ARCHIVE_HANDLE          = 0
    *       LOCAL_CAT               = ' '
    *     IMPORTING
    *       HEADER                  =       
    TABLES         
    lines                   = lit_lines       
    EXCEPTIONS         
    id                      1         
    language                2         name                    
    3         not_found               
    4         object                  
    5         reference_check         
    6         wrong_access_to_archive 
    7         
    OTHERS                  8.   
    ENDIF.   

    LOOP AT lit_lines INTO lwa_lines.
    *      GWA_OUTPUT-RISE_TEXT = LWA_LINES-TDLINE .     
    CONCATENATE txt lwa_lines-tdline INTO txt.   
    ENDLOOP.

    ENDFORM.

  • 相关阅读:
    行为型模式续(中介者模式 + 解释器模式)
    行为型模式下<迭代器模式、访问者模式、备忘录模式>
    行为型模式中<职责链模式、状态模式、观察者模式>
    下载vuejs,Hello Vue(vscode)
    node.js运行配置(vs code非控制台输出)
    node.js环境配置(windows系统)
    玩转visual studio系列之类设计图
    xml基础之二(XML结构【2】)DTD文档模版
    xml基础之二(XML结构【1】)
    XML的基础之一(概念和语法)
  • 原文地址:https://www.cnblogs.com/eagle-dtq/p/5528011.html
Copyright © 2011-2022 走看看