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

REPORT zsdr045.
INCLUDE zsdr045_inc.
*INCLUDE zsdr007_inc.

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

TYPES: BEGIN 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(20) TYPE c , "备注
       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 c , "备注
      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(45) TYPE c , "备注
      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(45) TYPE c , "备注
      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(32) TYPE c.

DATA:headername(32) TYPE 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 0 .
  
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(10) TYPE c.
  
DATA: lines TYPE i."获取往smartforms传入的要打印的行数目
  
DATA: insertrows TYPE i."需要再插入多少空行
  
DATA: rows TYPE i 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(0k) WITH  '请选中要打印的内容!'.
      
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:\test.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.

SAP 出库单新版的更多相关文章

  1. SAP打印出库单 新需求

    *&---------------------------------------------------------------------* *& Report  Z_SD_CKD ...

  2. SAP打印出库单需求

    *&---------------------------------------------------------------------* *& Report  Z_SD_CKD ...

  3. U811.1接口EAI系列之二--生成销售出库单调用U8的EAI通用处理方法--PowerBuilder语言

    1.销售系统销售出库,更新U811.1材料库存的EAI的XML生成. 2.主要根据U8配置会生成出库单和同时是否更新库存量,还是更新现存量等等. 3.具体参考代码如下: 作者:王春天 2013-11- ...

  4. SD--怎样增强是同一类出库单使用不同号码段

    在现实的业务中,一个公司有多个销售组织,它们使用同一个出库类型,业务往往希望它们创建的出库单的号码採用不同号码范围.但在sap里出库单号码范围是在出库单类型里设置,也就是使用同样的出库单类型,也就使用 ...

  5. PHP实现打印出库单,有没有实现过?

    https://mp.weixin.qq.com/s/X3JldplICRq7KR0HNFcpuw 背景 有时候你在实现一个出库订单之类的功能模块,这里也有可能要你的站点也实现相应的打印出库单预览,今 ...

  6. WMS出库单重复

    发货通知单?WMS备货单选项勾选 不自动复制?新增?

  7. 基于VUE实现的h5网页Web出库单入库单打印设计

    经过将近一个月的研发,初步实现了打印单据的自定义设计,样子还有点丑陋,但是功能基本都实现了,实现了以下功能: 1.表头表尾支持动态添加行.添加列.合并单元格(可多行多列合并). 2.表头表尾分别布局, ...

  8. ERP出库审核业务(四十四)

    结束表单流程的代码: protected void btnSubmit_Click(object sender, EventArgs e) { if(this.txtreceiveDate.Text! ...

  9. U811.1接口EAI系列之五--材料出库--VB语言

    主要业务有:09其他出库单 11:材料出库单 32:销售出库单 主要业务代码: '材料出库生成XML Public Function xml_storeout(ds_head As MSHFlexGr ...

随机推荐

  1. iOS事件传递->处理->响应

    前言: 按照时间顺序,事件的生命周期是这样的: 事件的产生和传递(事件如何从父控件传递到子控件并寻找到最合适的view.寻找最合适的view的底层实现.拦截事件的处理)->找到最合适的view后 ...

  2. 配置本机IIS服务器

    1.控制面板---程序---(程序和功能) 安装完成之后就可以访问本地的localhost 2.进入防火墙界面--高级设置 至此开放端口完成

  3. Ubuntu常用命令之update-alternatives

    maintain symbolic links determining default commands update-alternatives creates, removes, maintains ...

  4. CTP程序化系统开发(C++ && PHP)

    2016-12-13 11:03:52 借助CTP的DEMO(上海期货交易公司提供的), 需要自己在 http://www.simnow.com.cn  上注册账号, 再者,需要下载[博易大师]软件, ...

  5. centos7下使用yum安装mysql

    CentOS7的yum源中默认好像是没有mysql的.为了解决这个问题,我们要先下载mysql的repo源. 1. 下载mysql的repo源 wget http://repo.mysql.com/m ...

  6. pdo in 查询

    $ids1 = implode(",",$upload_ids);if(!empty($upload_ids)){ $ids_db= pdo_fetchall('select id ...

  7. Nike Zoom Winflo 2 Kvinder Sko Når jeg set elementet

    De fleste af os elskede denne Nike Pegasus 34 foruden var ved at blive begejstret for at få dine ben ...

  8. QT下调试基于ros的catkin项目

    1.首先告诉qt ros的搜索路径,通过修改qt creator 桌面启动程序来实现 sudo    gedit ~/.local/share/applications/DigiaQtOpenSour ...

  9. 使用vlc进行二次开发做自己的播放器

    可参考: 使用vlc播放器做rtsp服务器 使用vlc播放器播放rtsp视频 web网页中使用vlc插件播放相机rtsp流视频 使用 https://github.com/ZeBobo5/Vlc.Do ...

  10. 《你不常用的c#之XX》

    你不常用的c#之一>:略谈unsafe http://blog.csdn.net/robingaoxb/article/details/6199508 <你不常用的c#之二>:略谈G ...