*----------------------------------------------------------------------*
* Print of a delivery note by SAPscript SMART FORMS *
*----------------------------------------------------------------------*
REPORT zrle_delnote_local8.
TABLES:likp,lips.
TYPE-POOLS: slis.
*<<创建结构
DATA gt_header LIKE ZRLE_DELNOTE_LOCAL8 OCCURS 0 WITH HEADER LINE.
*>>
**<< 创建子项目数据的存储内表
*DATA: sel_item LIKE gt_item OCCURS 0 WITH HEADER LINE .
**>>
* declaration of data
INCLUDE zrle_delnote_data_declare.
* definition of forms
INCLUDE zrle_delnote_local_forms8.
INCLUDE zrle_print_forms.
*---------------------------------------------------------------------*
* FORM ENTRY
*---------------------------------------------------------------------*
FORM entry USING return_code us_screen.
DATA: lf_retcode TYPE sy-subrc.
xscreen = us_screen.
PERFORM processing USING us_screen
CHANGING lf_retcode.
IF lf_retcode NE 0.
return_code = 1.
ELSE.
return_code = 0.
ENDIF.
ENDFORM. "ENTRY
*---------------------------------------------------------------------*
* FORM PROCESSING *
*---------------------------------------------------------------------*
FORM processing USING proc_screen
CHANGING cf_retcode.
DATA: ls_job_output_info TYPE ssfcrescl .
DATA: ls_print_data_to_read TYPE ledlv_print_data_to_read.
DATA: ls_dlv_delnote TYPE ledlv_delnote.
DATA: lf_fm_name TYPE rs38l_fnam.
DATA: ls_control_param TYPE ssfctrlop.
DATA: ls_composer_param TYPE ssfcompop.
DATA: ls_recipient TYPE swotobjid.
DATA: ls_sender TYPE swotobjid.
DATA: lf_formname TYPE tdsfname.
DATA: ls_addr_key LIKE addr_key.
* SmartForm from customizing table TNAPR
lf_formname = tnapr-sform.
* determine print data
PERFORM set_print_data_to_read USING lf_formname
CHANGING ls_print_data_to_read
cf_retcode.
IF cf_retcode = 0.
* select print data
PERFORM get_data USING ls_print_data_to_read
CHANGING ls_addr_key
ls_dlv_delnote
cf_retcode.
ENDIF.
IF cf_retcode = 0.
PERFORM set_print_param USING ls_addr_key
CHANGING ls_control_param
ls_composer_param
ls_recipient
ls_sender
cf_retcode.
ENDIF.
IF cf_retcode = 0.
* determine smartform function module for delivery note
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
EXPORTING formname = lf_formname
* variant = ' '
* direct_call = ' '
IMPORTING fm_name = lf_fm_name
EXCEPTIONS no_form = 1
no_function_module = 2
OTHERS = 3.
IF sy-subrc <> 0.
* error handling
cf_retcode = sy-subrc.
PERFORM protocol_update.
ENDIF.
ENDIF.
IF cf_retcode = 0.
* 取交货单相关数据
PERFORM get_delivery_info USING nast-objky .
*************************************************
* call smartform delivery note
CALL FUNCTION lf_fm_name
EXPORTING
archive_index = toa_dara
archive_parameters = arc_params
control_parameters = ls_control_param
* mail_appl_obj =
mail_recipient = ls_recipient
mail_sender = ls_sender
output_options = ls_composer_param
user_settings = ' '
is_dlv_delnote = ls_dlv_delnote
is_nast = nast
IMPORTING
job_output_info = ls_job_output_info
TABLES
" gt_item = gt_item
gt_header = gt_header
" sel_item = sel_item
EXCEPTIONS formatting_error = 1
internal_error = 2
send_error = 3
user_canceled = 4
OTHERS = 5.
IF sy-subrc <> 0.
* error handling
cf_retcode = sy-subrc.
PERFORM protocol_update.
* get SmartForm protocoll and store it in the NAST protocoll
PERFORM add_smfrm_prot. "INS_HP_335958
ELSE.
*{ 记录打印日志 - IBM TR: R3DK900524
IF ls_job_output_info-outputdone = 'X' OR sy-ucomm = 'PRNT'.
CALL FUNCTION 'ZDN_PRINT_LOG'
EXPORTING
deliv_numb = ls_dlv_delnote-hd_gen-deliv_numb.
ENDIF.
CLEAR ls_job_output_info .
*}
ENDIF.
ENDIF.
* get SmartForm protocoll and store it in the NAST protocoll
* PERFORM ADD_SMFRM_PROT. DEL_HP_335958
ENDFORM. "PROCESSING
*----------------------------------------------------------------------*
***INCLUDE RLE_DELNOTE_FORMS .
*----------------------------------------------------------------------*
*---------------------------------------------------------------------*
* FORM GET_DATA *
*---------------------------------------------------------------------*
* General provision of data for the form *
*---------------------------------------------------------------------*
FORM get_data
USING is_print_data_to_read TYPE ledlv_print_data_to_read
CHANGING cs_addr_key LIKE addr_key
cs_dlv_delnote TYPE ledlv_delnote
cf_retcode.
DATA: ls_delivery_key TYPE leshp_delivery_key.
ls_delivery_key-vbeln = nast-objky.
CALL FUNCTION 'LE_SHP_DLV_OUTP_READ_PRTDATA'
EXPORTING
is_delivery_key = ls_delivery_key
is_print_data_to_read = is_print_data_to_read
if_parvw = nast-parvw
if_parnr = nast-parnr
if_language = nast-spras
IMPORTING
es_dlv_delnote = cs_dlv_delnote
EXCEPTIONS
records_not_found = 1
records_not_requested = 2
OTHERS = 3.
IF sy-subrc <> 0.
* error handling
cf_retcode = sy-subrc.
PERFORM protocol_update.
ENDIF.
* get nast partner adress for communication strategy
PERFORM get_addr_key USING cs_dlv_delnote-hd_adr
CHANGING cs_addr_key.
ENDFORM. "GET_DATA
*---------------------------------------------------------------------*
* FORM SET_PRINT_DATA_TO_READ *
*---------------------------------------------------------------------*
* General provision of data for the form *
*---------------------------------------------------------------------*
FORM set_print_data_to_read
USING if_formname LIKE tnapr-sform
CHANGING cs_print_data_to_read TYPE ledlv_print_data_to_read
cf_retcode.
FIELD-SYMBOLS: <fs_print_data_to_read> TYPE xfeld.
DATA: lt_fieldlist TYPE tsffields.
DATA: ls_fieldlist TYPE LINE OF tsffields.
DATA: lf_field1 TYPE LINE OF tsffields.
DATA: lf_field2 TYPE LINE OF tsffields.
DATA: lf_field3 TYPE LINE OF tsffields.
CALL FUNCTION 'SSF_FIELD_LIST'
EXPORTING
formname = if_formname
* VARIANT = ' '
IMPORTING
fieldlist = lt_fieldlist
EXCEPTIONS
no_form = 1
no_function_module = 2
OTHERS = 3.
IF sy-subrc <> 0.
* error handling
cf_retcode = sy-subrc.
PERFORM protocol_update.
CLEAR lt_fieldlist.
ELSE.
* set print data requirements
LOOP AT lt_fieldlist INTO ls_fieldlist.
SPLIT ls_fieldlist AT '-' INTO lf_field1 lf_field2 lf_field3.
* <<<< START_OF_INSERTION_HP_350342 >>>>
IF lf_field1 = 'IS_DLV_DELNOTE' AND lf_field2 = 'IT_SERNR'.
lf_field2 = 'IT_SERNO'.
ENDIF.
* <<<< END_OF_INSERTION_HP_350342 >>>>
ASSIGN COMPONENT lf_field2 OF STRUCTURE
cs_print_data_to_read TO <fs_print_data_to_read>.
IF sy-subrc = 0.
<fs_print_data_to_read> = 'X'.
ENDIF.
ENDLOOP.
* header data is always required
cs_print_data_to_read-hd_gen = 'X'.
* adress is always required for print param
cs_print_data_to_read-hd_adr = 'X'.
* organisational data is always required for include texts
cs_print_data_to_read-hd_org = 'X'.
*organisational data address is always required "n_520906
cs_print_data_to_read-hd_org_adr = 'X'. "n_520906
ENDIF.
ENDFORM. "SET_PRINT_DATA_TO_READ
*&---------------------------------------------------------------------*
*& Form get_addr_key
*&---------------------------------------------------------------------*
FORM get_addr_key USING it_hd_adr TYPE ledlv_delnote-hd_adr
CHANGING cs_addr_key LIKE addr_key.
FIELD-SYMBOLS <fs_hd_adr> TYPE LINE OF ledlv_delnote-hd_adr.
READ TABLE it_hd_adr ASSIGNING <fs_hd_adr>
WITH KEY deliv_numb = nast-objky
partn_role = nast-parvw.
IF sy-subrc = 0.
cs_addr_key-addrnumber = <fs_hd_adr>-addr_no.
cs_addr_key-persnumber = <fs_hd_adr>-person_numb.
cs_addr_key-addr_type = <fs_hd_adr>-address_type.
ENDIF.
ENDFORM. "get_addr_key
" get_addr_key
*&---------------------------------------------------------------------*
*& Form GET_DELIVERY_INFO
*&---------------------------------------------------------------------*
* 根据交货单取相关数据
*----------------------------------------------------------------------*
* -->P_NAST_OBJKY 交货号
*----------------------------------------------------------------------*
FORM get_delivery_info USING p_nast_objky.
DATA ls_delivery LIKE likp-vbeln .
MOVE p_nast_objky TO ls_delivery . "交货单
MOVE ls_delivery TO gt_header-vbeln.
DATA t_likp LIKE TABLE OF likp WITH HEADER LINE .
DATA t_TVKO LIKE TABLE OF TVKO WITH HEADER LINE.
DATA t_adrc LIKE TABLE OF adrc WITH HEADER LINE .
DATA t_t001w LIKE TABLE OF t001w WITH HEADER LINE.
DATA t_vbpa LIKE TABLE OF vbpa WITH HEADER LINE.
DATA t_lips LIKE TABLE OF lips WITH HEADER LINE .
DATA t_vbak LIKE TABLE OF vbak WITH HEADER LINE.
DATA t_adr2 LIKE TABLE OF adr2 WITH HEADER LINE.
SELECT * FROM likp INTO TABLE t_likp WHERE vbeln = ls_delivery .
READ TABLE t_likp WITH KEY vbeln = ls_delivery .
IF sy-subrc EQ 0.
"VKORG 销售组织
SELECT * from TVKO INTO TABLE t_TVKO WHERE VKORG = t_likp-VKORG .
READ TABLE t_TVKO WITH KEY VKORG = t_likp-VKORG .
IF sy-subrc EQ 0.
SELECT * from adrc INTO TABLE t_adrc WHERE ADDRNUMBER = t_TVKO-ADRNR.
READ TABLE t_adrc WITH KEY ADDRNUMBER = t_TVKO-ADRNR.
IF sy-subrc EQ 0.
MOVE t_adrc-name1 to gt_header-name1 . " 单位名称
ENDIF.
ENDIF.
SELECT * from t001w INTO TABLE t_t001w WHERE WERKS = t_likp-VSTEL .
READ TABLE t_t001w WITH KEY WERKS = t_likp-VSTEL .
IF sy-subrc EQ 0.
SELECT * from adrc INTO TABLE t_adrc WHERE ADDRNUMBER = t_t001w-ADRNR .
READ TABLE t_adrc WITH KEY ADDRNUMBER = t_t001w-ADRNR .
IF sy-subrc EQ 0.
MOVE t_adrc-STREET to gt_header-STREET . "寄件地址
ENDIF.
SELECT * from adr2 INTO TABLE t_adr2 WHERE ADDRNUMBER = t_vbpa-ADRNR .
LOOP at t_adr2 WHERE ADDRNUMBER = t_vbpa-ADRNR .
IF t_adr2-R3_USER = '1' .
MOVE t_adr2-TEL_NUMBER to gt_header-TEL_NUMBER . "固定电话
ELSE.
MOVE t_adr2-TEL_NUMBER to gt_header-TEL_NUMBER_Y . "移动电话
ENDIF.
ENDLOOP.
ENDIF.
"固定电话(寄件)
SELECT * from vbpa INTO TABLE t_vbpa WHERE vbeln = t_likp-vbeln AND parvw EQ 'WE' .
READ TABLE t_vbpa WITH KEY vbeln = t_likp-vbeln parvw = 'WE' .
IF sy-subrc EQ 0.
SELECT * from adrc INTO TABLE t_adrc WHERE ADDRNUMBER = t_vbpa-ADRNR .
READ TABLE t_adrc WITH KEY ADDRNUMBER = t_vbpa-ADRNR .
IF sy-subrc EQ 0.
MOVE t_adrc-Name1 to gt_header-NAME1_S . "收件人姓名
ENDIF.
ENDIF.
SELECT * from lips INTO TABLE t_lips WHERE vbeln = t_likp-vbeln .
READ TABLE t_lips WITH KEY vbeln = t_likp-vbeln .
IF sy-subrc EQ 0.
SELECT * FROM vbak INTO TABLE t_vbak
WHERE vbeln EQ t_lips-vgbel .
READ TABLE t_vbak WITH KEY vbeln = t_lips-vgbel .
IF sy-subrc EQ 0.
SELECT * from vbpa INTO TABLE t_vbpa WHERE vbeln = t_vbak-vbeln AND parvw EQ 'WE' .
READ TABLE t_vbpa WITH KEY vbeln = t_vbak-vbeln parvw = 'WE' .
IF sy-subrc EQ 0.
SELECT * from adrc INTO TABLE t_adrc WHERE ADDRNUMBER = t_vbpa-ADRNR .
READ TABLE t_adrc WITH KEY ADDRNUMBER = t_vbpa-ADRNR .
IF sy-subrc EQ 0.
MOVE t_adrc-LOCATION to gt_header-LOCATION . "收件地址
ENDIF.
SELECT * from adr2 INTO TABLE t_adr2 WHERE ADDRNUMBER = t_vbpa-ADRNR .
LOOP at t_adr2 WHERE ADDRNUMBER = t_vbpa-ADRNR .
IF t_adr2-R3_USER = '1' .
MOVE t_adr2-TEL_NUMBER to gt_header-TEL_NUMBER_S . "联系手机(收)
ELSE.
MOVE t_adr2-TEL_NUMBER to gt_header-TEL_NUMBER_SY . "移动电话(收)
ENDIF.
ENDLOOP.
ENDIF.
ENDIF.
ENDIF.
endif.
* SELECT * from TVSTT INTO t_tvstt WHERE VSTEL = t_likp-VSTEL AND SPRAS = '1'.
* READ TABLE t_tvstt WITH KEY VSTEL = t_likp-VSTEL SPRAS = '1' .
* IF sy-subrc EQ 0.
** MOVE t_tvstt-VTEXT to gt_header-Street . "装运点 文本
* ENDIF.
* DATA h_likp LIKE TABLE OF likp WITH HEADER LINE .
* DATA h_knvk LIKE TABLE OF knvk WITH HEADER LINE .
* DATA h_adrp LIKE TABLE OF adrp WITH HEADER LINE .
* DATA h_t001w LIKE TABLE OF t001w WITH HEADER LINE .
* DATA h_t001l LIKE TABLE OF t001l WITH HEADER LINE .
* DATA h_vbak LIKE TABLE OF vbak WITH HEADER LINE .
* DATA h_lips LIKE TABLE OF lips WITH HEADER LINE .
* DATA h_mard LIKE TABLE OF mard WITH HEADER LINE .
* DATA h_vbap LIKE TABLE OF vbap WITH HEADER LINE .
* DATA h_tvtwt LIKE TABLE OF tvtwt WITH HEADER LINE .
* DATA h_m_debia LIKE TABLE OF m_debia WITH HEADER LINE .
* DATA h_tvkbt LIKE TABLE OF tvkbt WITH HEADER LINE .
* DATA h_vbkd LIKE TABLE OF vbkd WITH HEADER LINE .
* DATA h_kna11 LIKE TABLE OF kna1 WITH HEADER LINE .
*
* DATA h_kna13 LIKE TABLE OF kna1 WITH HEADER LINE .
*
* DATA h_adr2 LIKE TABLE OF adr2 WITH HEADER LINE .
* DATA h_adrc1 LIKE TABLE OF adrc WITH HEADER LINE .
* DATA h_adrc2 LIKE TABLE OF adrc WITH HEADER LINE .
*
* DATA h_makt LIKE TABLE OF makt WITH HEADER LINE .
* DATA h_marm LIKE TABLE OF marm WITH HEADER LINE .
* DATA h_konv LIKE TABLE OF konv WITH HEADER LINE .
* DATA h_konp LIKE TABLE OF konp WITH HEADER LINE .
* DATA h_vbpa1 LIKE TABLE OF vbpa WITH HEADER LINE .
* DATA h_vbpa2 LIKE TABLE OF vbpa WITH HEADER LINE .
* DATA h_vbpa3 LIKE TABLE OF vbpa WITH HEADER LINE .
* DATA h_mara LIKE TABLE OF mara WITH HEADER LINE.
* DATA h_vbfa LIKE TABLE OF vbfa WITH HEADER LINE.
*
* DATA gt_item1 LIKE zrle_delnote_local_item OCCURS 0 WITH HEADER LINE .
* DATA: ls_index TYPE i .
* DATA: ns_index TYPE i .
* DATA h_mvke LIKE TABLE OF mvke WITH HEADER LINE.
* DATA umref_hs TYPE f.
* DATA tel_number LIKE adr2-tel_number .
* DATA tel_extens LIKE adr2-tel_extens.
">>>>>>>>>>>>>>>>>>>>>表头取数
"发货单号OK LIKP-VBELN
" 收货方OK LIKP -KUNNR
* DATA: ls_name LIKE thead-tdname.
* DATA: lt_lines LIKE tline OCCURS 0 WITH HEADER LINE .
* SELECT vbeln ernam FROM likp INTO CORRESPONDING FIELDS OF TABLE gt_header WHERE vbeln EQ ls_delivery.
*
* SELECT * FROM likp INTO TABLE h_likp "发货单号 收货方 收货人(KNVK)
* WHERE vbeln EQ ls_delivery.
*
* IF h_likp[] IS NOT INITIAL.
*
* SELECT * FROM knvk INTO TABLE h_knvk "收货人(ADRP)
* FOR ALL ENTRIES IN h_likp
* WHERE kunnr EQ h_likp-kunnr.
*
* IF h_knvk[] IS NOT INITIAL.
* SELECT * FROM adrp INTO TABLE h_adrp "收货人 (ADRP- NAME_TEXT)
* FOR ALL ENTRIES IN h_knvk
* WHERE persnumber EQ h_knvk-prsnr.
* ENDIF.
*
* SELECT * FROM vbpa INTO TABLE h_vbpa2
* FOR ALL ENTRIES IN h_likp
* WHERE vbeln = h_likp-vbeln AND parvw EQ 'WE' .
* IF h_vbpa2[] is not INITIAL.
** SELECT * FROM kna1 INTO TABLE h_kna12
** FOR ALL ENTRIES IN h_vbpa2
** WHERE kunnr = h_vbpa2-kunnr. "客户电话
*
* "送货地址
* SELECT * FROM adrc INTO TABLE h_adrc2 "客户地址 ADRC-STREET
* FOR ALL ENTRIES IN h_vbpa2
* WHERE addrnumber = h_vbpa2-adrnr .
* ENDIF.
*
*
* "取收货方 文本 MCOD1
* SELECT * FROM m_debia INTO TABLE h_m_debia
* FOR ALL ENTRIES IN h_likp
* WHERE kunnr EQ h_likp-kunnr.
*
* "发货仓库() LIPS-WERKS ,物料编码 LIPS-MATNR 物料描述 LIPS-ARKTX
* "批次 LIPS-CHARG 数量 LIPS-LGMNG 单位:LIPS-MEINS 库存地点:LIPS-LGORT 体积LIPS-VOLUM
*
* SELECT vbeln posnr FROM lips INTO TABLE gt_item1
* FOR ALL ENTRIES IN h_likp
* WHERE vbeln EQ h_likp-vbeln.
*
*
* SELECT * FROM makt
* INTO CORRESPONDING FIELDS OF TABLE h_makt
* FOR ALL ENTRIES IN h_lips
* WHERE spras EQ '1' AND matnr EQ h_lips-matnr .
*
* SELECT * FROM lips INTO TABLE h_lips
* WHERE vbeln = ls_delivery .
*
* IF h_lips[] IS NOT INITIAL.
* SELECT * FROM t001w INTO TABLE h_t001w "发货仓库 ( T001W-NAME1)
* FOR ALL ENTRIES IN h_lips
* WHERE werks EQ h_lips-werks.
*
* "取物料描述文本
* SELECT * FROM marm
* INTO CORRESPONDING FIELDS OF TABLE h_marm
* FOR ALL ENTRIES IN h_lips
* WHERE matnr EQ h_lips-matnr . "AND meinh EQ 'KAR'
*
*
*
* SELECT * FROM vbfa INTO TABLE h_vbfa
* FOR ALL ENTRIES IN h_lips
* WHERE vbeln = h_lips-vbeln AND posnn = h_lips-posnr .
*
*
* SELECT * FROM t001l INTO TABLE h_t001l "库存地点 (t001l-LGOBE)
* FOR ALL ENTRIES IN h_lips
* WHERE lgort EQ h_lips-lgort.
*
* " 订单有效日期 VBAK-AUDAT 销售订单 VBAK-VBELN
* "分销渠道VBAK-VTWEG 订单截至日期 VBAK-VDATU 销售部门 VBAK-VKBUR 客户编码 VBAK-KUNNR 销售类型 VBAK-AUART
* SELECT * FROM vbak INTO TABLE h_vbak
* FOR ALL ENTRIES IN h_lips
* WHERE vbeln EQ h_lips-vgbel .
*
* IF h_vbak[] is not INITIAL.
* SELECT * FROM vbpa INTO TABLE h_vbpa3
* FOR ALL ENTRIES IN h_vbak
* WHERE parvw EQ 'AF' AND vbeln EQ h_vbak-vbeln .
* IF h_vbpa3[] is not INITIAL.
* SELECT * FROM kna1 INTO TABLE h_kna13
* FOR ALL ENTRIES IN h_vbpa3
* WHERE kunnr = h_vbpa3-kunnr. "客户电话
*
** "送货地址
** SELECT * FROM adrc INTO TABLE h_adrc3 "客户地址 ADRC-STREET
** FOR ALL ENTRIES IN h_vbpa3
** WHERE addrnumber = h_vbpa3-adrnr .
* ENDIF.
*
* SELECT * FROM vbpa INTO TABLE h_vbpa1
* FOR ALL ENTRIES IN h_vbak
* WHERE parvw EQ 'SP' AND vbeln EQ h_vbak-vbeln .
* IF h_vbpa1[] is not INITIAL.
* SELECT * FROM kna1 INTO TABLE h_kna11
* FOR ALL ENTRIES IN h_vbpa1
* WHERE kunnr = h_vbpa1-kunnr. "客户电话
*
** "送货地址
** SELECT * FROM adrc INTO TABLE h_adrc1 "客户地址 ADRC-STREET
** FOR ALL ENTRIES IN h_vbpa1
** WHERE addrnumber = h_vbpa1-adrnr .
* ENDIF.
*
* ENDIF.
*
* SELECT * FROM mara INTO TABLE h_mara
* FOR ALL ENTRIES IN h_lips
* WHERE matnr EQ h_lips-matnr.
*
* SELECT * FROM mvke INTO TABLE h_mvke
* FOR ALL ENTRIES IN h_lips
* WHERE matnr = h_lips-matnr ."AND VKORG = h_lips-VKORG AND VTWEG = h_lips-VTWEG.
*
* "取销售部门的文本 (TVKBT-BEZEI)
* IF h_vbak[] IS NOT INITIAL .
* SELECT * FROM tvkbt INTO TABLE h_tvkbt
* FOR ALL ENTRIES IN h_vbak
* WHERE vkbur EQ h_vbak-vkbur AND spras EQ sy-langu.
*
*
* "取分销渠道的文本 TVTWT-VTEXT
* SELECT * FROM tvtwt INTO TABLE h_tvtwt
* FOR ALL ENTRIES IN h_vbak
* WHERE vtweg EQ h_vbak-vtweg.
*
*
*" SELECT * FROM adr2 INTO TABLE h_adr2. "客户电话 TEL_NUMBER (区号 + 号码) + TEL_EXTENS (分机号)
** FOR ALL ENTRIES IN h_kna1
** WHERE addrnumber = h_kna1-adrnr .
*
*
* "客户订单号 VBKD-BSTKD
* SELECT * FROM vbkd INTO TABLE h_vbkd
* FOR ALL ENTRIES IN h_vbak
* WHERE vbeln EQ h_vbak-vbeln.
*
* ENDIF.
*
* "销售类型 文本
* SELECT * FROM vbap INTO TABLE h_vbap
* FOR ALL ENTRIES IN h_lips
* WHERE vbeln EQ h_lips-vgbel AND posnr EQ h_lips-vgpos .
*
* "销售类型
* SELECT * FROM konv INTO TABLE h_konv
* FOR ALL ENTRIES IN h_vbak
* WHERE knumv = h_vbak-knumv .
*
*
* IF h_konv[] IS NOT INITIAL. .
* SELECT * FROM konp INTO TABLE h_konp
* FOR ALL ENTRIES IN h_konv
* WHERE kopos = h_konv-kopos AND knumh = h_konv-knumh .
* ENDIF.
* ENDIF.
*
* "取表头 [承运商] 未取出?
* LOOP AT gt_header.
* ls_index = sy-tabix .
* READ TABLE h_likp WITH KEY vbeln = gt_header-vbeln.
* IF sy-subrc EQ 0.
*
* IF h_likp-lfart = 'ZLR1' .
* gt_header-title = '齐心文具退货收货单' .
* gt_header-fhdh = '退货单号:'.
* gt_header-fhck = '收货仓库:' .
* gt_header-shr = '退 货 人:'.
* gt_header-shf = '退 货 方:'.
* gt_header-shdz = '退货地址:'.
* gt_header-fhr = '收 货 人:'.
*
* ELSEIF h_likp-lfart = 'LR'.
*
* gt_header-fhdh = '退货单号:'.
* gt_header-fhck = '收货仓库:' .
* gt_header-shr = '退 货 人:'.
* gt_header-shf = '退 货 方:'.
* gt_header-shdz = '退货地址:'.
* gt_header-fhr = '收 货 人:'.
* gt_header-title = '齐心文具退损收货单' .
* ELSE.
* gt_header-fhdh = '发货单号:'.
* gt_header-fhck = '发货仓库:'.
* gt_header-shr = '收 货 人:'.
* gt_header-shf = '收 货 方:'.
* gt_header-shdz = '送货地址:'.
* gt_header-fhr = '发 货 人:'.
* gt_header-title = '齐心文具发货单 ' .
* ENDIF.
*
* READ TABLE h_knvk WITH KEY kunnr = h_likp-kunnr abtnr = '0004'.
* IF sy-subrc EQ 0.
* MOVE h_knvk-name1 TO gt_header-h_name_text . "收货人
*
* READ TABLE h_adrp WITH KEY persnumber = h_knvk-prsnr.
* IF sy-subrc EQ 0.
* MOVE h_adrp-name_last TO gt_header-h_name_text . "收货人
* ENDIF.
* ENDIF.
*
* READ TABLE h_m_debia WITH KEY kunnr = h_likp-kunnr.
* IF sy-subrc EQ 0.
* MOVE h_m_debia-mcod1 TO gt_header-h_mcod1. "收货方
* ENDIF.
*
* READ TABLE h_vbkd WITH KEY vbeln = h_likp-vbeln.
* IF sy-subrc EQ 0.
* MOVE h_vbkd-bstkd TO gt_header-h_bstkd. "客户单号
* ENDIF.
* LOOP AT h_lips WHERE vbeln = h_likp-vbeln.
* MOVE h_lips-uecha TO gt_item1-uecha.
* READ TABLE h_t001w WITH KEY werks = h_lips-werks.
* IF sy-subrc EQ 0.
* MOVE h_t001w-name1 TO gt_header-h_name1. "发货仓库
* ENDIF.
*
* READ TABLE h_vbak WITH KEY vbeln = h_lips-vgbel .
* IF sy-subrc EQ 0.
* MOVE h_vbak-audat TO gt_header-h_audat."订单有效日期
* MOVE h_vbak-vbeln TO gt_header-h_xs_vbeln."销售订单
* MOVE h_vbak-vdatu TO gt_header-h_vdatu ."订单截至日期
* MOVE h_vbak-kunnr TO gt_header-h_kunnr. "客户编码
* MOVE h_vbak-vtweg TO gt_header-vtweg . "渠道
* READ TABLE h_tvtwt WITH KEY vtweg = h_vbak-vtweg.
* IF sy-subrc EQ 0.
* MOVE h_tvtwt-vtext TO gt_header-h_vtext. "分销渠道
* ENDIF.
* READ TABLE h_tvkbt WITH KEY vkbur = h_vbak-vkbur .
* IF sy-subrc EQ 0.
* MOVE h_tvkbt-bezei TO gt_header-h_bezei. "销售部门
* ENDIF.
*
* loop at h_vbpa3 where vbeln EQ h_vbak-vbeln AND parvw EQ 'AF'.
* READ TABLE h_kna13 WITH KEY kunnr = h_vbpa3-kunnr.
* IF sy-subrc EQ 0.
* MOVE h_kna13-name1 TO gt_header-parvw.
* "业务员手机
*
* SELECT SINGLE TEL_NUMBER tel_extens INTO (h_adr2-TEL_NUMBER , h_adr2-tel_extens ) FROM adr2 WHERE addrnumber = h_kna13-adrnr .
** READ TABLE h_adr2 WITH KEY addrnumber = h_kna1-adrnr.
** IF sy-subrc EQ 0.
* " MOVE h_adr2-TEL_NUMBER TO gt_header-telnr_long_ywy. "需要加分机号
* CONCATENATE h_adr2-TEL_NUMBER ' #' h_adr2-tel_extens INTO gt_header-telnr_long_ywy .
* REPLACE ALL OCCURRENCES OF '#' IN gt_header-telnr_long_ywy WITH '' .
** ENDIF.
* ENDIF.
* EXIT.
* endloop.
*
* READ TABLE h_vbpa2 WITH KEY vbeln = gt_header-vbeln parvw = 'WE' .
* IF sy-subrc EQ 0.
* SELECT SINGLE TEL_NUMBER tel_extens INTO (gt_header-h_tel_number , gt_header-H_TEL_EXTENS ) FROM adr2
* WHERE ADDRNUMBER = h_vbpa2-ADRNR AND R3_USER = 1.
** READ TABLE h_adr2 WITH KEY ADDRNUMBER = h_vbpa-ADRNR R3_USER = 1.
** IF sy-subrc EQ 0.
** MOVE h_adr2-tel_number to gt_header-h_tel_number.
** MOVE h_adr2-TEL_EXTENS to gt_header-H_TEL_EXTENS.
** " move h_adr2-LOCATION to gt_header-H_STREET.
** ENDIF.
* READ TABLE h_adrc2 WITH KEY ADDRNUMBER = h_vbpa2-ADRNR .
* IF sy-subrc EQ 0.
* move h_adrc2-LOCATION to gt_header-H_STREET.
* ENDIF.
*
* ENDIF.
*
* loop at h_vbpa1 where vbeln EQ h_vbak-vbeln AND parvw EQ 'SP'. "承运商
* READ TABLE h_kna11 WITH KEY kunnr = h_vbpa1-kunnr.
* IF sy-subrc EQ 0.
* MOVE h_kna11-name1 TO gt_header-CYS_name1.
* ENDIF.
* EXIT.
* endloop.
*
* READ TABLE h_vbkd WITH KEY vbeln = h_vbak-vbeln.
* IF sy-subrc EQ 0.
* MOVE h_vbkd-bstkd TO gt_header-h_bstkd.
* ENDIF.
*
* ENDIF.
* EXIT.
* ENDLOOP.
* ENDIF.
*
* "备注
* DATA: l_name LIKE thead-tdname.
*
* DATA: l_lines LIKE tline OCCURS 0 WITH HEADER LINE .
* MOVE gt_header-vbeln TO l_name .
*
* CALL FUNCTION 'READ_TEXT'
* EXPORTING
* id = '0001'
* language = sy-langu "'1' "1表示 ZH, E表示 EN
* name = l_name
* object = 'VBBK'
* TABLES
* lines = l_lines
* EXCEPTIONS
* id = 1
* language = 2
* name = 3
* not_found = 4
* object = 5
* reference_check = 6
* wrong_access_to_archive = 7
* OTHERS = 8.
* LOOP AT l_lines .
* CONCATENATE gt_header-tdline l_lines-tdline INTO gt_header-tdline .
* ENDLOOP .
*
* MODIFY gt_header INDEX ls_index .
* ENDLOOP.
*
* " SORT gt_item1 BY VBELN .
* LOOP AT gt_item1 .
* ls_index = sy-tabix .
* LOOP AT h_lips WHERE vbeln EQ gt_item1-vbeln AND posnr EQ gt_item1-posnr.
* DATA str(10) TYPE c.
* str = gt_item1-posnr.
* SHIFT str LEFT DELETING LEADING ''.
* MOVE str TO gt_item1-posnr .
* MOVE h_lips-matnr TO gt_item1-matnr. "物料编码
* MOVE h_lips-arktx TO gt_item1-arktx. "
* MOVE h_lips-charg TO gt_item1-charg . "批次
* gt_item1-uecha = h_lips-uecha.
* MOVE h_lips-meins TO gt_item1-meins . "单位
** MOVE h_lips-volum TO gt_item1-volum. "体积
** MOVE h_lips-voleh TO gt_item1-voleh. "体积单位
*
* READ TABLE h_vbfa WITH KEY vbeln = h_lips-vbeln posnn = h_lips-posnr .
* IF sy-subrc EQ 0.
* MOVE h_vbfa-posnv TO gt_item1-v_posnr .
* ENDIF.
*
* "销售类型
* MOVE '正常' TO gt_item1-h_xslx.
* READ TABLE h_vbak WITH KEY vbeln = h_lips-vgbel .
* IF sy-subrc EQ 0 and h_vbak-NOPRO <> 'N' .
* READ TABLE h_konv WITH KEY knumv = h_vbak-knumv kschl = 'ZTS1' kposn = gt_item1-v_posnr .
* IF sy-subrc EQ 0 .
* MOVE '促销' TO gt_item1-h_xslx.
* ELSE.
* MOVE '正常' TO gt_item1-h_xslx.
* ENDIF.
* ENDIF.
*
* IF gt_header-vtweg <> '20'.
* MOVE 'Y' TO gt_item1-h_fl .
* READ TABLE h_likp WITH KEY vbeln = h_lips-vbeln.
* IF sy-subrc EQ 0.
*
* "查看 附加起息日
* READ TABLE h_vbak WITH KEY vbeln = h_lips-vgbel .
* IF sy-subrc EQ 0.
* READ TABLE h_konv WITH KEY knumv = h_vbak-knumv kschl = 'ZTS1' kposn = gt_item1-v_posnr .
* IF sy-subrc EQ 0.
* FREE ls_name .
* FREE lt_lines .
* CONCATENATE h_konv-KNUMH h_konv-KOPOS INTO ls_name .
* FREE lt_lines.
* CALL FUNCTION 'READ_TEXT'
* EXPORTING
* id = '0001'
* language = sy-langu "'1' "1表示 ZH, E表示 EN
* name = ls_name
* object = 'KONP'
* TABLES
* lines = lt_lines
* EXCEPTIONS
* id = 1
* language = 2
* name = 3
* not_found = 4
* object = 5
* reference_check = 6
* wrong_access_to_archive = 7
* OTHERS = 8.
* FREE ls_name .
* LOOP AT lt_lines .
* CONCATENATE ls_name lt_lines-tdline INTO ls_name .
* ENDLOOP .
* IF ls_name <> '' .
* MOVE 'N' to gt_item1-H_FL.
* ENDIF.
** READ TABLE h_konp WITH KEY knumh = h_konv-knumh kschl = 'ZTS1'.
** IF sy-subrc EQ 0.
** IF h_konp-valtg = 1 .
** MOVE 'N' TO gt_item1-h_fl.
** ENDIF.
** ENDIF.
* ENDIF.
* ENDIF.
*
* ENDIF.
*
* ENDIF.
* READ TABLE h_t001l WITH KEY lgort = h_lips-lgort.
* IF sy-subrc EQ 0.
* MOVE h_t001l-lgobe TO gt_item1-lgobe. "库存地点
* ENDIF.
* READ TABLE h_makt WITH KEY matnr = h_lips-matnr .
* IF sy-subrc EQ 0.
* MOVE h_makt-maktx TO gt_item1-maktx. "物料描述
* ENDIF.
*
* "换算成基本数量单位
* READ TABLE h_marm WITH KEY matnr = h_lips-matnr meinh = h_lips-vrkme .
* IF sy-subrc EQ 0.
* IF h_marm-umren <> 0.
* gt_item1-lgmng = h_lips-lgmng ."* h_marm-umren / h_marm-umrez . "换算成基本单位数量。
* ENDIF.
* ENDIF.
*
** READ TABLE h_mara WITH KEY matnr = h_lips-matnr .
** IF sy-subrc EQ 0.
** gt_item1-jtj = h_mara-volum * h_marm-umrez / h_marm-umren . "件体积
** ENDIF.
*
* READ TABLE h_marm WITH KEY matnr = h_lips-matnr meinh = 'KAR'.
* IF sy-subrc EQ 0.
* MOVE h_marm-umrez TO gt_item1-h_umrez. "基本计量单位转换分子
* MOVE h_marm-umren TO gt_item1-h_umren. "转换为基本计量单位的分母
* ENDIF.
*
* "换算率
* DATA hsl LIKE gt_item1-h_hsl.
* hsl = gt_item1-h_umrez / gt_item1-h_umren.
* MOVE hsl TO gt_item1-h_hsl.
*
* DATA hsdj LIKE gt_item1-hsdj.
* DATA jshj LIKE gt_item1-jshj.
*
* "件数
* DATA js LIKE gt_item1-h_js.
* IF gt_item1-h_hsl <> 0.
* js = gt_item1-lgmng / gt_item1-h_hsl . "* h_lips-umvkz / h_lips-umvkn .
* MOVE js TO gt_item1-h_js.
* ENDIF.
*
* READ TABLE h_mara WITH KEY matnr = gt_item1-matnr .
* IF sy-subrc EQ 0.
* MOVE h_mara-zeinr TO gt_item1-zeinr. "旧物料号
* IF h_lips-voleh <> ''.
* CALL FUNCTION 'MC_UNIT_CONVERSION'
* EXPORTING
** MATNR = ' '
* nach_meins = 'M3'
* von_meins = h_lips-voleh "当前单位
* IMPORTING
* umref = umref_hs . "当前单位换算率
* gt_item1-jtj = h_mara-volum * gt_item1-h_hsl * umref_hs . "件体积
* "体积
* gt_item1-h_ztj = gt_item1-jtj * gt_item1-h_js ."总体积
* ELSE.
* gt_item1-jtj = 0. "件体积
* "体积
* gt_item1-h_ztj = 0 ."总体积
* ENDIF.
* ENDIF.
*
* "含税单价
* LOOP AT h_vbap WHERE vbeln EQ h_lips-vgbel AND posnr EQ h_lips-vgpos .
* hsdj = h_vbap-netwr * '1.17' / h_vbap-kwmeng ."/ gt_item1-LGMNG .
* jshj = gt_item1-lgmng * hsdj .
* MOVE jshj TO gt_item1-jshj.
* MOVE hsdj TO gt_item1-hsdj.
* EXIT.
* ENDLOOP.
* EXIT.
* ENDLOOP.
* MODIFY gt_item1 INDEX ls_index .
* ENDLOOP.
* FREE gt_item .
* LOOP AT gt_item1 WHERE vbeln = gt_header-vbeln AND uecha = '000000'.
* APPEND gt_item1 TO gt_item.
* ENDLOOP .
*
*
* data : s_index type i.
* SORT gt_item by vbeln posnr ASCENDING.
* LOOP AT gt_item.
* ls_index = sy-tabix + 1 .
* s_index = 1 .
* LOOP AT gt_item1 WHERE vbeln = gt_header-vbeln AND uecha <> '000000' AND uecha = gt_item-posnr.
* ns_index = sy-tabix .
* MOVE gt_item-h_xslx to gt_item1-h_xslx.
* MOVE gt_item-h_FL TO gt_item1-h_FL.
*
*
* MOVE gt_item-hsdj to gt_item1-hsdj. " 含税单价
* gt_item1-jshj = gt_item1-hsdj * gt_item1-LGMNG .
* MODIFY gt_item1 INDEX ns_index .
*
* INSERT gt_item1 INTO gt_item INDEX ls_index .
* IF s_index = 1.
* ls_index = ls_index - 1 .
* delete gt_item index ls_index .
* s_index = 0 .
* ENDIF.
*
* ENDLOOP.
* ENDLOOP.
* ENDIF.
* FREE gt_item1 .
ENDFORM. " GET_DELIVERY_INFO
*----------------------------------------------------------------------*
* INCLUDE RLE_PRINT_FORMS *
*----------------------------------------------------------------------*
*---------------------------------------------------------------------*
* FORM PROTOCOL_UPDATE *
*---------------------------------------------------------------------*
* The messages are collected for the processing protocol. *
*---------------------------------------------------------------------*
FORM PROTOCOL_UPDATE.
CHECK XSCREEN = SPACE.
CALL FUNCTION 'NAST_PROTOCOL_UPDATE'
EXPORTING
MSG_ARBGB = SYST-MSGID
MSG_NR = SYST-MSGNO
MSG_TY = SYST-MSGTY
MSG_V1 = SYST-MSGV1
MSG_V2 = SYST-MSGV2
MSG_V3 = SYST-MSGV3
MSG_V4 = SYST-MSGV4
EXCEPTIONS
OTHERS = 1.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form ADD_SMFRM_PROT
*&---------------------------------------------------------------------*
FORM ADD_SMFRM_PROT.
DATA: LT_ERRORTAB TYPE TSFERROR.
* DATA: LF_MSGNR TYPE SY-MSGNO. "DEL_HP_335958
FIELD-SYMBOLS: <FS_ERRORTAB> TYPE LINE OF TSFERROR.
* get smart form protocoll
CALL FUNCTION 'SSF_READ_ERRORS'
IMPORTING
ERRORTAB = LT_ERRORTAB.
* add smartform protocoll to nast protocoll
LOOP AT LT_ERRORTAB ASSIGNING <FS_ERRORTAB>.
* CLEAR LF_MSGNR. "DEL_HP_335958
* LF_MSGNR = <FS_ERRORTAB>-ERRNUMBER. "DEL_HP_335958
CALL FUNCTION 'NAST_PROTOCOL_UPDATE'
EXPORTING
MSG_ARBGB = <FS_ERRORTAB>-MSGID
* MSG_NR = LF_MSGNR "DEL_HP_335958
MSG_NR = <FS_ERRORTAB>-MSGNO "INS_HP_335958
MSG_TY = <FS_ERRORTAB>-MSGTY
MSG_V1 = <FS_ERRORTAB>-MSGV1
MSG_V2 = <FS_ERRORTAB>-MSGV2
MSG_V3 = <FS_ERRORTAB>-MSGV3
MSG_V4 = <FS_ERRORTAB>-MSGV4
EXCEPTIONS
OTHERS = 1.
ENDLOOP.
ENDFORM. " ADD_SMFRM_PROT
*&---------------------------------------------------------------------*
*& Form SET_PRINT_PARAM
*&---------------------------------------------------------------------*
FORM SET_PRINT_PARAM USING IS_ADDR_KEY LIKE ADDR_KEY
CHANGING CS_CONTROL_PARAM TYPE SSFCTRLOP
CS_COMPOSER_PARAM TYPE SSFCOMPOP
CS_RECIPIENT TYPE SWOTOBJID
CS_SENDER TYPE SWOTOBJID
CF_RETCODE TYPE SY-SUBRC.
DATA: LS_ITCPO TYPE ITCPO.
DATA: LF_REPID TYPE SY-REPID.
DATA: LF_DEVICE TYPE TDDEVICE.
DATA: LS_RECIPIENT TYPE SWOTOBJID.
DATA: LS_SENDER TYPE SWOTOBJID.
LF_REPID = SY-REPID.
CALL FUNCTION 'WFMC_PREPARE_SMART_FORM'
EXPORTING
PI_NAST = NAST
PI_ADDR_KEY = IS_ADDR_KEY
PI_REPID = LF_REPID
IMPORTING
PE_RETURNCODE = CF_RETCODE
PE_ITCPO = LS_ITCPO
PE_DEVICE = LF_DEVICE
PE_RECIPIENT = CS_RECIPIENT
PE_SENDER = CS_SENDER.
IF CF_RETCODE = 0.
MOVE-CORRESPONDING LS_ITCPO TO CS_COMPOSER_PARAM.
* CS_CONTROL_PARAM-NO_OPEN
* CS_CONTROL_PARAM-NO_CLOSE
CS_CONTROL_PARAM-DEVICE = LF_DEVICE.
CS_CONTROL_PARAM-NO_DIALOG = 'X'.
CS_CONTROL_PARAM-PREVIEW = XSCREEN.
CS_CONTROL_PARAM-GETOTF = LS_ITCPO-TDGETOTF.
CS_CONTROL_PARAM-LANGU = NAST-SPRAS.
* CS_CONTROL_PARAM-REPLANGU1
* CS_CONTROL_PARAM-REPLANGU2
* CS_CONTROL_PARAM-REPLANGU3
* CS_CONTROL_PARAM-STARTPAGE
ENDIF.
ENDFORM. " SET_PRINT_PARAM
*----------------------------------------------------------------------*
* INCLUDE RLE_DELNOTE_DATA_DECLARE *
*----------------------------------------------------------------------*
INCLUDE RVADTABL.
DATA: XSCREEN(1) TYPE C. "Output on printer or screen
* current language for read buffered.
DATA: GF_LANGUAGE LIKE SY-LANGU.
***INCLUDE RVADTABL .
TABLES: NAST, "Messages
*NAST, "Messages
TNAPR, "Programs & Forms
ITCPO, "Communicationarea for Spool
ARC_PARAMS, "Archive parameters
TOA_DARA, "Archive parameters
ADDR_KEY. "Adressnumber for ADDRESS
TYPE-POOLS SZADR.