*&-----------------------------------------------------------*
*& 程序名: ZSDBI001
*& T-CODE:
*& 功能描述:订单导入
*& First Created:
*&-----------------------------------------------------------*
*& Date Userid Reason/Description of Change
*&
*&
*&-----------------------------------------------------------*
REPORT zsdbi001.
TYPE-POOLS slis.
*------------------------------------------------------------*
* 数据声明 - 开始
*------------------------------------------------------------*
*------------------------------------------------------------*
* DESC: 表/ 结构 / 视图的声明
*------------------------------------------------------------*
TYPES : BEGIN OF ty_vbap,
sernr TYPE gernr,
serail TYPE serail,
matnr TYPE matnr,
anzsn TYPE anzsn,
cuobj TYPE cuobj,
vbeln TYPE vbeln,
posnr TYPE posnr,
kunnr TYPE kunnr,
vbtyp TYPE vbtyp,
auart TYPE auart,
pstyv TYPE pstyv,
END OF ty_vbap.
*------------------------------------------------------------*
* DESC:定义所需要的内表
*------------------------------------------------------------*
* 文件表头/序列号
DATA : BEGIN OF lt_xls1 OCCURS 0,
bstkd TYPE vbeln,
auart TYPE auart,
vkorg TYPE vkorg,
vtweg TYPE vtweg,
spart TYPE spart,
kunnr TYPE kunnr,
kunwe TYPE kunwe,
augru TYPE augru,
posnr TYPE posnr,
matnr TYPE matnr,
kwmeng TYPE kwmeng,
werks TYPE werks_d,
lgort TYPE lgort_d,
* ihrez TYPE ihrez,
* remark TYPE tdline,
END OF lt_xls1,
wa_xls1 LIKE LINE OF lt_xls1,
BEGIN OF lt_xls2 OCCURS 0,
bstkd TYPE vbeln,
posnr TYPE posnr,
sernr TYPE gernr,
END OF lt_xls2.
* 转换数据 - 销售订单表头 , 销售订单项目 , 序列号
DATA : BEGIN OF lt_sales OCCURS 0,
bstkd TYPE vbeln,
auart TYPE auart,
vkorg TYPE vkorg,
vtweg TYPE vtweg,
spart TYPE spart,
kunnr TYPE kunnr,
kunwe TYPE kunwe,
augru TYPE augru,
zzflag TYPE c,
zzso TYPE vbeln_va,
zzdn TYPE vbeln_vl,
zzpgi TYPE mblnr,
zzmsg TYPE bapi_msg,
END OF lt_sales,
BEGIN OF lt_salesitem OCCURS 0,
bstkd TYPE vbeln,
posnr TYPE posnr,
matnr TYPE matnr,
kwmeng TYPE kwmeng,
werks TYPE werks_d,
lgort TYPE lgort_d,
END OF lt_salesitem,
BEGIN OF lt_material OCCURS 0,
bstkd TYPE bstkd,
posnr TYPE posnr,
werks TYPE werks_d,
lgort TYPE lgort_d,
matnr TYPE matnr,
sernr TYPE gernr,
END OF lt_material,
wa_material LIKE LINE OF lt_material.
DATA : wa_sales LIKE LINE OF lt_sales.
DATA : lt_vbap TYPE ty_vbap OCCURS 0 WITH HEADER LINE.
*------------------------------------------------------------*
* DESC: BAPI
*------------------------------------------------------------*
* CREATE SO DECLARE
DATA : lt_so_head TYPE bapisdhd1 ,
lt_so_item TYPE STANDARD TABLE OF bapisditm INITIAL SIZE 0 WITH HEADER LINE,
lt_so_sch TYPE STANDARD TABLE OF bapischdl INITIAL SIZE 0 WITH HEADER LINE,
lt_so_partners TYPE STANDARD TABLE OF bapiparnr INITIAL SIZE 0 WITH HEADER LINE,
lt_so_conditions TYPE STANDARD TABLE OF bapicond INITIAL SIZE 0 WITH HEADER LINE,
lt_so_text TYPE STANDARD TABLE OF bapisdtext INITIAL SIZE 0 WITH HEADER LINE.
* CREATE DN DECLARE
DATA : lt_dn_item TYPE STANDARD TABLE OF bapidlvreftosalesorder INITIAL SIZE 0 WITH HEADER LINE,
lt_sernr TYPE STANDARD TABLE OF bapidlvserialnumber INITIAL SIZE 0 WITH HEADER LINE,
lt_return TYPE STANDARD TABLE OF bapiret2 INITIAL SIZE 0 WITH HEADER LINE,
l_dnno TYPE bapishpdelivnumb-deliv_numb.
* PGI
DATA : wa_mvt TYPE vbkok,
lt_vbpok TYPE STANDARD TABLE OF vbpok INITIAL SIZE 0 WITH HEADER LINE,
lt_dn_sernr TYPE shp_sernr_update_t,
wa_dn_sernr TYPE shp_sernr_update_s,
lt_prot TYPE STANDARD TABLE OF prott INITIAL SIZE 0 WITH HEADER LINE.
DATA : l_sono TYPE vbeln_va,
doc_no TYPE vbeln_va,
l_dn_no TYPE vbeln_vl,
l_error TYPE c,
lv_msg TYPE bapi_msg.
* ALV
DATA: it_fieldcat TYPE slis_t_fieldcat_alv,
wa_fieldcat TYPE slis_fieldcat_alv,
wa_layout TYPE slis_layout_alv.
************************************************************************
* MICRO
************************************************************************
DEFINE de_alvflds.
clear wa_fieldcat.
wa_fieldcat-ddictxt = 'M'.
wa_fieldcat-fieldname = &1. "字段
wa_fieldcat-seltext_m = &2. "描述
append wa_fieldcat to it_fieldcat.
END-OF-DEFINITION.
DEFINE de_alpha.
call function 'CONVERSION_EXIT_ALPHA_INPUT'
exporting
input = &1
importing
output = &2.
END-OF-DEFINITION.
************************************************************************
* PARAMETERS
************************************************************************
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
PARAMETERS :p_sales LIKE rlgrap-filename DEFAULT 'C:\SALES.TXT',
p_serial LIKE rlgrap-filename DEFAULT 'C:\SERIAL.TXT',
p_pstdt LIKE likp-wadat_ist DEFAULT sy-datum OBLIGATORY.
SELECTION-SCREEN SKIP 1 .
PARAMETERS : p_dn TYPE c AS CHECKBOX DEFAULT 'X',
p_pgi TYPE c AS CHECKBOX DEFAULT 'X'.
SELECTION-SCREEN END OF BLOCK b1.
SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text-002.
SELECTION-SCREEN COMMENT 1(79) comm1.
SELECTION-SCREEN SKIP 1.
SELECTION-SCREEN COMMENT 1(79) comm2.
SELECTION-SCREEN END OF BLOCK b2.
INITIALIZATION.
comm1 = '销售订单:订单号,订单类型,销售组织,分销渠道,产品组,售达方,送达方,订单原因,项目,物料,数量,工厂,仓库'.
comm2 = '序列号 :订单号,项目,序列号'.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_sales.
PERFORM frm_req_file USING p_sales.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_serial.
PERFORM frm_req_file USING p_serial.
************************************************************************
*----------------------------------------------------------------------*
*
* MAIN PROGRAM
*
*----------------------------------------------------------------------*
************************************************************************
START-OF-SELECTION.
"文件上载
PERFORM frm_upload.
IF lt_xls1[] IS INITIAL OR lt_xls2[] IS INITIAL.
MESSAGE s001(00) WITH '文件数据为空'.
EXIT.
ENDIF.
"数据转换 及处理
PERFORM frm_process.
"日志显示
PERFORM frm_display.
*&---------------------------------------------------------------------*
*& Form FRM_CREATE_SALESORDER
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM frm_create_salesorder.
DATA : lv_itm_number TYPE posnr,
lv_sched_line TYPE etenr,
lv_anzsn TYPE anzsn,
lv_pstyv TYPE pstyv,
lv_serail TYPE serail,
lv_qty TYPE kwmeng.
CLEAR : lt_so_head,lt_so_item,lt_so_partners,lt_so_conditions,lt_so_text,l_error.
REFRESH:lt_so_item,lt_so_partners,lt_so_conditions,lt_so_text,lt_return,lt_so_sch,lt_vbap.
*----HEAD
lt_so_head-doc_type = wa_sales-auart. "销售凭证类型
lt_so_head-sales_org = wa_sales-vkorg.
lt_so_head-distr_chan = wa_sales-vtweg.
lt_so_head-division = wa_sales-spart.
lt_so_head-doc_date = sy-datum.
* lt_so_head-ref_1 = ''. "您的参考
* lt_so_head-purch_no_c = ''. "采购单编号补充
* lt_so_head-purch_date = ''. "客户采购订单日期
lt_so_head-ord_reason = wa_sales-augru. "订单原因
de_alpha wa_sales-kunnr wa_sales-kunnr.
lt_so_partners-partn_role = 'AG'.
lt_so_partners-partn_numb = wa_sales-kunnr.
APPEND lt_so_partners.
* lt_so_partners-partn_role = 'RE'.
* lt_so_partners-partn_numb = wa_sales-kunnr.
* APPEND lt_so_partners.
* lt_so_partners-partn_role = 'RG'.
* lt_so_partners-partn_numb = wa_sales-kunnr.
* APPEND lt_so_partners.
lt_so_partners-partn_role = 'WE'.
lt_so_partners-partn_numb = wa_sales-kunnr.
APPEND lt_so_partners.
CLEAR lt_so_partners.
* Sales item
LOOP AT lt_salesitem WHERE bstkd = wa_sales-bstkd.
"出货点
* SELECT SINGLE vstel INTO lt_so_item-ship_point
* FROM tvstz
SELECT SINGLE vstel INTO lt_so_item-ship_point FROM tvswz WHERE werks = lt_salesitem-werks.
IF sy-subrc <> 0 .
lt_so_item-ship_point = lt_salesitem-werks.
ENDIF.
"销售单位
SELECT SINGLE vrkme INTO lt_so_item-target_qu FROM mvke WHERE vkorg = wa_sales-vkorg AND vtweg = wa_sales-vtweg AND matnr = lt_salesitem-matnr.
lt_so_item-itm_number = lt_salesitem-posnr.
lt_so_item-material = lt_salesitem-matnr.
lt_so_item-target_qty = lt_salesitem-kwmeng.
* lt_so_item-target_qu = 'EA'.
lt_so_item-plant = lt_salesitem-werks.
lt_so_item-store_loc = lt_salesitem-lgort.
APPEND lt_so_item.
* SALES SCHLINE
lt_so_sch-itm_number = lt_salesitem-posnr.
lt_so_sch-sched_line = '0001'.
lt_so_sch-req_date = sy-datum.
lt_so_sch-date_type = '1'.
lt_so_sch-req_qty = lt_salesitem-kwmeng.
APPEND lt_so_sch.
"项目类别
SELECT SINGLE pstyv INTO lv_pstyv FROM t184 WHERE auart = wa_sales-auart.
"序列号参数文件
SELECT SINGLE serial INTO lv_serail FROM mara WHERE matnr = lt_salesitem-matnr.
lv_anzsn = lt_salesitem-kwmeng.
LOOP AT lt_material WHERE bstkd = lt_salesitem-bstkd AND posnr = lt_salesitem-posnr.
lt_vbap-sernr = lt_material-sernr.
lt_vbap-serail = 'ZK01' . "lv_serail.
lt_vbap-matnr = lt_material-matnr.
lt_vbap-anzsn = lv_anzsn.
lt_vbap-cuobj = ''.
lt_vbap-vbeln = ''.
lt_vbap-posnr = lt_salesitem-posnr.
lt_vbap-kunnr = wa_sales-kunnr.
lt_vbap-vbtyp = 'C'.
lt_vbap-auart = wa_sales-auart.
lt_vbap-pstyv = lv_pstyv.
APPEND lt_vbap.
CLEAR:lt_material,lt_vbap.
ENDLOOP.
ENDLOOP.
* Sales header text
* lt_so_text-doc_number = l_sono.
* lt_so_text-text_id = '0001'.
* lt_so_text-langu = sy-langu.
* lt_so_text-format_col = '*'.
* lt_so_text-text_line = wa_sales-remark.
* APPEND lt_so_text.
* Sales item conditions
* lt_so_conditions-itm_number = '000010'.
* lt_so_conditions-cond_type = 'ZCP0'.
* lt_so_conditions-cond_value = wa_sales-kbetr.
* lt_so_conditions-conbaseval = '1'.
* lt_so_conditions-cond_p_unt = '1'.
* lt_so_conditions-currency = wa_sales-waerk.
* APPEND lt_so_conditions.
* CLEAR lt_so_conditions.
* break hp_abap3.
CALL FUNCTION 'BAPI_SALESORDER_CREATEFROMDAT2'
EXPORTING
salesdocumentin = l_sono
order_header_in = lt_so_head
IMPORTING
salesdocument = doc_no
TABLES
return = lt_return
order_items_in = lt_so_item
order_partners = lt_so_partners
order_schedules_in = lt_so_sch
order_conditions_in = lt_so_conditions
order_text = lt_so_text.
IF doc_no IS INITIAL.
l_error = 'X'.
ENDIF.
IF l_error = 'X'.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
LOOP AT lt_return WHERE type = 'E' OR type = 'A'.
CLEAR lv_msg.
MESSAGE ID lt_return-id TYPE lt_return-type NUMBER lt_return-number
WITH lt_return-message_v1 lt_return-message_v2 lt_return-message_v3 lt_return-message_v4
INTO lv_msg.
CONCATENATE wa_sales-zzmsg lv_msg INTO wa_sales-zzmsg.
ENDLOOP.
ELSE.
lt_vbap-vbeln = doc_no.
MODIFY lt_vbap TRANSPORTING vbeln WHERE vbeln IS INITIAL.
CALL FUNCTION 'SERIAL_INTTAB_REFRESH'
EXPORTING
objects_status_refresh = 'E'.
PERFORM frm_set_serial.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'.
wa_sales-zzso = doc_no.
ENDIF.
ENDFORM. "FRM_CREATE_SALESORDER
*&---------------------------------------------------------------------*
*& Form FRM_CREATE_DELIVERY
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM frm_create_delivery.
REFRESH:lt_dn_item , lt_return.
CLEAR :lt_dn_item , lt_return , l_dn_no.
LOOP AT lt_so_item.
lt_dn_item-ref_doc = wa_sales-zzso.
lt_dn_item-ref_item = lt_so_item-itm_number.
lt_dn_item-dlv_qty = lt_so_item-target_qty.
lt_dn_item-sales_unit = 'EA'.
APPEND lt_dn_item.
LOOP AT lt_vbap WHERE vbeln = wa_sales-zzso AND posnr = lt_so_item-itm_number.
lt_sernr-ref_doc = wa_sales-zzso.
lt_sernr-ref_item = lt_so_item-itm_number.
lt_sernr-serialno = lt_vbap-sernr.
APPEND lt_sernr.
ENDLOOP.
ENDLOOP.
CALL FUNCTION 'BAPI_OUTB_DELIVERY_CREATE_SLS'
IMPORTING
delivery = l_dn_no
TABLES
sales_order_items = lt_dn_item
serial_numbers = lt_sernr
return = lt_return.
IF l_dn_no IS INITIAL.
l_error = 'X'.
ENDIF.
IF l_error = 'X'.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
LOOP AT lt_return WHERE type = 'E' OR type = 'A'.
CLEAR lv_msg.
MESSAGE ID lt_return-id TYPE lt_return-type NUMBER lt_return-number
WITH lt_return-message_v1 lt_return-message_v2 lt_return-message_v3 lt_return-message_v4
INTO lv_msg.
CONCATENATE wa_sales-zzmsg lv_msg INTO wa_sales-zzmsg.
ENDLOOP.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'.
wa_sales-zzdn = l_dn_no.
ENDIF.
ENDFORM. "FRM_CREATE_DELIVERY
*&---------------------------------------------------------------------*
*& Form FRM_DELIVERY_PGI
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM frm_delivery_pgi.
CLEAR :wa_mvt,lt_return,lt_dn_sernr.
REFRESH :lt_return , lt_vbpok , lt_prot , lt_dn_sernr.
wa_mvt-vbeln_vl = wa_sales-zzdn.
wa_mvt-vbtyp_vl = 'J'.
wa_mvt-vbeln = wa_sales-zzso.
wa_mvt-wabuc = 'X'.
wa_mvt-wadat_ist = p_pstdt. "实际货物移动日期 --待确认过帐日期
LOOP AT lt_so_item.
lt_vbpok-vbeln_vl = wa_sales-zzdn.
lt_vbpok-posnr_vl = lt_so_item-itm_number.
lt_vbpok-vbeln = wa_sales-zzso.
lt_vbpok-posnn = lt_so_item-itm_number.
lt_vbpok-matnr = lt_so_item-material.
lt_vbpok-werks = lt_so_item-plant.
lt_vbpok-kzlgo = 'X'.
lt_vbpok-pikmg = lt_so_item-target_qty.
APPEND lt_vbpok.
LOOP AT lt_sernr.
wa_dn_sernr-rfbel = wa_sales-zzdn.
wa_dn_sernr-rfpos = lt_sernr-ref_item.
wa_dn_sernr-sernr = lt_sernr-serialno.
APPEND wa_dn_sernr TO lt_dn_sernr.
ENDLOOP.
ENDLOOP.
CALL FUNCTION 'WS_DELIVERY_UPDATE'
EXPORTING
vbkok_wa = wa_mvt
synchron = 'X'
* commit = 'X'
delivery = wa_sales-zzdn
if_error_messages_send_0 = ''
it_sernr_update = lt_dn_sernr
* IMPORTING
* ef_error_any_0 = l_err01
* ef_error_in_item_deletion_0 = l_err02
* ef_error_in_pod_update_0 = l_err03
* ef_error_in_interface_0 = l_err04
* ef_error_in_goods_issue_0 = l_err05
* ef_error_in_final_check_0 = l_err06
* ef_error_partner_update = l_err07
* ef_error_sernr_update = l_err08
TABLES
vbpok_tab = lt_vbpok
prot = lt_prot.
* IF l_err01 = 'X' OR l_err02 = 'X' OR l_err03 = 'X' OR l_err04 = 'X' OR
* l_err05 = 'X' OR l_err06 = 'X' OR l_err07 = 'X' OR l_err08 = 'X'.
* l_error = 'X'.
* wa_sales-zzmsg = 'DN PGI error'.
* ENDIF.
LOOP AT lt_prot WHERE msgty = 'A' OR msgty = 'E'.
MESSAGE ID lt_prot-msgid TYPE lt_prot-msgty NUMBER lt_prot-msgno
WITH lt_prot-msgv1 lt_prot-msgv2 lt_prot-msgv3 lt_prot-msgv4
INTO lv_msg.
CONCATENATE wa_sales-zzmsg lv_msg INTO wa_sales-zzmsg.
l_error = 'X'.
ENDLOOP.
IF l_error = 'X'.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'.
SELECT SINGLE vbeln
INTO wa_sales-zzpgi
FROM vbfa
WHERE vbelv = wa_sales-zzdn
AND vbtyp_n = 'R'
AND vbtyp_v = 'J'.
ENDIF.
ENDFORM. "FRM_DELIVERY_PGI
*&---------------------------------------------------------------------*
*& Form FRM_SET_SERIAL
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->LS_VBAP text
*----------------------------------------------------------------------*
FORM frm_set_serial.
DATA ls_vbap TYPE ty_vbap.
LOOP AT lt_vbap INTO ls_vbap.
CALL FUNCTION 'SERNR_ADD_TO_AU'
EXPORTING
sernr = ls_vbap-sernr "'LVTDH12A3EB040976'
profile = ls_vbap-serail
material = ls_vbap-matnr
quantity = ls_vbap-anzsn
cuobj = ls_vbap-cuobj
document = ls_vbap-vbeln
item = ls_vbap-posnr
debitor = ls_vbap-kunnr
vbtyp = ls_vbap-vbtyp
sd_auart = ls_vbap-auart
sd_postyp = ls_vbap-pstyv
i_bapi = 'X'
* IMPORTING
* anzsn = ls_vbap-anzsn
* serial_commit = lv_dataloss
EXCEPTIONS
konfigurations_error = 1
serialnumber_errors = 2
serialnumber_warnings = 3
OTHERS = 4.
ENDLOOP.
CALL FUNCTION 'SERIAL_LISTE_POST_AU'.
* TABLES
* tab_cuobj = lt_dbcuobj.
ENDFORM. "FRM_SET_SERIAL
*&---------------------------------------------------------------------*
*& Form FRM_DISPLAY
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM frm_display.
de_alvflds :'BSTKD' '订单序号',
'AUART' '订单类型',
'KUNNR' '客户编号',
'ZZSO' '销售订单号',
'ZZDN' '交货单号',
'ZZPGI' '交货物料凭证',
'ZZMSG' '消息'.
wa_layout-zebra = 'X'.
wa_layout-colwidth_optimize = 'X'. "优化列宽选项是否设置
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy-cprog
* i_callback_user_command = 'SUB_USER_COMMAND'
i_default = 'X'
i_save = 'X'
is_layout = wa_layout
it_fieldcat = it_fieldcat[]
TABLES
t_outtab = lt_sales[]
EXCEPTIONS
program_error = 1
OTHERS = 2.
ENDFORM. "FRM_DISPLAY
*&---------------------------------------------------------------------*
*& Form FRM_UPLOAD
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM frm_upload .
IF p_sales IS NOT INITIAL.
CALL FUNCTION 'WS_UPLOAD'
EXPORTING
filename = p_sales
filetype = 'DAT'
TABLES
data_tab = lt_xls1
EXCEPTIONS
conversion_error = 1
file_open_error = 2
file_read_error = 3
invalid_type = 4
no_batch = 5
unknown_error = 6
invalid_table_width = 7
gui_refuse_filetransfer = 8
customer_error = 9
no_authority = 10
OTHERS = 11.
ENDIF.
IF p_serial IS NOT INITIAL.
CALL FUNCTION 'WS_UPLOAD'
EXPORTING
filename = p_serial
filetype = 'DAT'
TABLES
data_tab = lt_xls2
EXCEPTIONS
conversion_error = 1
file_open_error = 2
file_read_error = 3
invalid_type = 4
no_batch = 5
unknown_error = 6
invalid_table_width = 7
gui_refuse_filetransfer = 8
customer_error = 9
no_authority = 10
OTHERS = 11.
ENDIF.
ENDFORM. " FRM_UPLOAD
*&---------------------------------------------------------------------*
*& Form FRM_PROCESS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM frm_process .
DATA : lt_vin TYPE zsdvin OCCURS 0 WITH HEADER LINE.
DATA : lv_anzsn TYPE anzsn,
lv_qty TYPE kwmeng.
SORT lt_xls1 BY bstkd posnr.
SORT lt_xls2 BY bstkd posnr.
LOOP AT lt_xls1.
wa_xls1 = lt_xls1.
CLEAR : lv_qty , lv_anzsn.
LOOP AT lt_xls2 WHERE bstkd = wa_xls1-bstkd AND posnr = wa_xls1-posnr.
CLEAR :lt_vin,lt_vin[].
de_alpha lt_xls2-sernr lt_material-sernr.
CALL FUNCTION 'ZF_SD_GETVINBYDN'
EXPORTING
i_sernr = lt_material-sernr
TABLES
et_item = lt_vin.
READ TABLE lt_vin INDEX 1.
CHECK lt_vin-lbbsa = '01' AND lt_vin-sobkz = space.
ADD 1 TO lv_anzsn.
lt_material-bstkd = wa_xls1-bstkd.
de_alpha wa_xls1-posnr lt_material-posnr.
lt_material-matnr = wa_xls1-matnr.
lt_material-sernr = lt_vin-sernr.
lt_material-werks = lt_vin-werks.
lt_material-lgort = lt_vin-lgort.
APPEND lt_material.
CLEAR lt_material.
ENDLOOP.
lt_salesitem-bstkd = wa_xls1-bstkd.
de_alpha wa_xls1-posnr lt_salesitem-posnr.
lt_salesitem-matnr = wa_xls1-matnr.
lt_salesitem-kwmeng = wa_xls1-kwmeng.
lv_qty = lv_anzsn.
IF lt_salesitem-kwmeng NE lv_qty.
lt_sales-zzflag = 'X'.
lt_sales-zzmsg = '项目数量与可用序列号数量不一致'.
ENDIF.
lt_salesitem-werks = wa_xls1-werks.
lt_salesitem-lgort = wa_xls1-lgort.
APPEND lt_salesitem.
AT END OF bstkd.
lt_sales-bstkd = wa_xls1-bstkd.
lt_sales-auart = wa_xls1-auart.
lt_sales-vkorg = wa_xls1-vkorg.
de_alpha wa_xls1-vtweg lt_sales-vtweg .
lt_sales-spart = wa_xls1-spart.
de_alpha wa_xls1-kunnr lt_sales-kunnr .
de_alpha wa_xls1-kunwe lt_sales-kunwe .
lt_sales-augru = wa_xls1-augru.
APPEND lt_sales.
CLEAR lt_sales.
ENDAT.
CLEAR:wa_xls1,lt_salesitem.
ENDLOOP.
FREE:lt_xls1,lt_xls2.
LOOP AT lt_sales INTO wa_sales WHERE zzflag IS INITIAL.
PERFORM frm_create_salesorder.
IF p_dn = 'X' AND l_error IS INITIAL.
PERFORM frm_create_delivery.
ENDIF.
IF p_dn = 'X' AND p_pgi = 'X' AND l_error IS INITIAL.
PERFORM frm_delivery_pgi.
ENDIF.
MODIFY lt_sales FROM wa_sales.
CLEAR wa_sales.
ENDLOOP.
PERFORM frm_free.
ENDFORM. " FRM_PROCESS
*&---------------------------------------------------------------------*
*& Form FRM_FREE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM frm_free.
CLEAR : lt_so_head,lt_so_item,lt_so_partners,lt_so_conditions,lt_so_text,lt_so_sch.
REFRESH:lt_so_item,lt_so_partners,lt_so_conditions,lt_so_text,lt_return,lt_so_sch.
REFRESH:lt_dn_item , lt_return , lt_sernr.
CLEAR :lt_dn_item , lt_return , l_dn_no.
CLEAR :wa_mvt,lt_return,lt_dn_sernr.
REFRESH :lt_return , lt_vbpok , lt_prot , lt_dn_sernr.
REFRESH :lt_material , lt_vbap .
ENDFORM. "FRM_FREE
*&---------------------------------------------------------------------*
*& Form sub_req_file
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_FILE text
*----------------------------------------------------------------------*
FORM frm_req_file USING p_file.
CALL FUNCTION 'WS_FILENAME_GET'
EXPORTING
def_filename = 'Sales.txt'
def_path = 'C:\\'
mask = ',*.txt,*.txt,' "
mode = 'O'
title = '请选择要上载的文件'
IMPORTING
filename = p_file
EXCEPTIONS
inv_winsys = 1
no_batch = 2
selection_cancel = 3
selection_error = 4
OTHERS = 5.
ENDFORM. "sub_req_file
销售订单导入+序列号 VA01
最新推荐文章于 2024-07-01 10:02:01 发布