事务代码:VA41,输入抬头信息:合同类型、销售组织、分销渠道、产品组、销售办事处、销售组。
输入售达方、客户参考、客户参考日期、描述、合同开始日期、合同结束日期、行项目号、物料、目标值和业务员。
输入附加数据B内的信息:
实际业务中需要导入大量的销售合同数据,因此需要使用BAPI批量导入功能位置。可使用BAPI:BAPI_CONTRACT_CREATEFROMDATA批量导入。
1、使用BAPI:BAPI_CONTRACT_CREATEFROMDATA时,可以通过extensionin参数给自定义的参数赋值。
2、在表vbak中找到需要增强的字段,同时添加需要增强的字段分别APPEND到这四个结构中:BAPE_VBAK、BAPE_VBAKX、VBAKKOZ、VBAKKOZX。
3、将需要增强的字段写入到extensionin中,代码参见技术实现。
BAPI参数声明
需要传入的数据数据:
抬头数据:
附加数据B的数据:
导入BAPI
通过事务代码VA43,通过生成的合同号查询导入信息。
REPORT zsdb_024.
TABLES:sscrfields.
*----------------------------------------------------------------------*
* 定义内表
*----------------------------------------------------------------------*
DATA:BEGIN OF gt_input OCCURS 0,
htnum(10) TYPE c, "手工合同编号
auart TYPE vbak-auart, "合同类型
vkorg TYPE vbak-vkorg, "销售组织
vtweg TYPE vbak-vtweg, "分销渠道
spart TYPE vbak-spart, "产品组
vkbur TYPE vbak-vkbur, "销售部门
vkgrp TYPE vbak-vkgrp, "销售组
kunnr TYPE vbak-kunnr, "客户编码
kname(70) TYPE c, "客户名称
bstkd TYPE vbkd-bstkd, "CD合同编号
bstdk TYPE string, "合同签署日期
* bstdk TYPE vbkd-bstdk, "合同签署日期
ktext TYPE vbak-ktext, "合同描述
guebg TYPE string, "合同开始日期
* guebg TYPE vbak-guebg, "合同开始日期
gueen TYPE string, "合同结束日期
* gueen TYPE vbak-gueen, "合同结束日期
zwert TYPE vbap-zwert, "合同金额(目标值)
zyfwtr TYPE vbak-zyfwtr, "预收款金额/元(1)
zyfpre TYPE vbak-zyfpre, "预收款占比(1)
zyfdat TYPE string, "预收款到期日(1)
* zyfdat TYPE vbak-zyfdat, "预收款到期日(1)
zyfyq TYPE vbak-zyfyq, "预收款已清(1)
zjdwtr TYPE vbak-zjdwtr, "进度款金额/元(2)
zjdpre TYPE vbak-zjdpre, "进度款占比(2)
zjddat TYPE string, "进度款到期日(2)
* zjddat TYPE vbak-zjddat, "进度款到期日(2)
zjdyq TYPE vbak-zjdyq, "进度款已清(2)
zfhwtr TYPE vbak-zfhwtr, "发货款金额/元(3)
zfhpre TYPE vbak-zfhpre, "发货款占比(3)
zfhdat TYPE string, "发货款到期日(3)
* zfhdat TYPE vbak-zfhdat, "发货款到期日(3)
zfhyq TYPE vbak-zfhyq, "发货款已清(3)
zdhwtr TYPE vbak-zdhwtr, "到货款金额/元(4)
zdhpre TYPE vbak-zdhpre, "到货款占比(4)
zdhdat TYPE string, "到货款到期日(4)
* zdhdat TYPE vbak-zdhdat, "到货款到期日(4)
zdhyq TYPE vbak-zdhyq, "到货款已清(4)
ztswtr TYPE vbak-ztswtr, "安装款金额/元(5)
ztspre TYPE vbak-ztspre, "安装款占比(5)
ztsdat TYPE string, "安装款到期日(5)
* ztsdat TYPE vbak-ztsdat, "安装款到期日(5)
ztsyq TYPE vbak-ztsyq, "安装款已清(5)
zzbwtr TYPE vbak-zzbwtr, "质保金金额(6)
zzbpre TYPE vbak-zzbpre, "质保金占比(6)
zzbdat TYPE string, "质保款到期日(6)
* zzbdat TYPE vbak-zzbdat, "质保款到期日(6)
zzbyq TYPE vbak-zzbyq, "质保款已清(6)
lifnr TYPE vbpa-lifnr, "业务员(工号)
yname(70) TYPE c, "业务员名称
posnr TYPE vbap-posnr, "行项目号
matnr TYPE vbap-matnr, "物料编码
arktx TYPE vbap-arktx, "物料描述
status(20) TYPE c, "导入是否成功状态
checkmeg(100) TYPE c, "检查结果
message(100) TYPE c, "处理信息
gv_pernr TYPE zppt001-pernr, "员工编号
znum TYPE vbap-zwert,
END OF gt_input.
"只有全为“S”的才能导入
TYPES: BEGIN OF ty_check,
flag TYPE c, "标记
END OF ty_check.
DATA: gt_check TYPE TABLE OF ty_check,
gw_check TYPE ty_check.
TYPES: BEGIN OF ty_pernr,
gv_pernr(10) TYPE c, "员工编号
END OF ty_pernr.
DATA: gt_pernr TYPE TABLE OF ty_pernr,
gw_pernr TYPE ty_pernr.
*----------------------------------------------------------------------*
* 定义alv数据对象
*----------------------------------------------------------------------*
DATA: t_fieldcat TYPE slis_t_fieldcat_alv,
w_fieldcat TYPE slis_fieldcat_alv,
w_layout TYPE slis_layout_alv.
*----------------------------------------------------------------------*
* 定义选择屏幕
*----------------------------------------------------------------------*
SELECTION-SCREEN: FUNCTION KEY 1.
SELECTION-SCREEN BEGIN OF BLOCK blk WITH FRAME TITLE text001.
PARAMETERS: p_file TYPE rlgrap-filename MODIF ID mg1 MEMORY ID zfpath. "文件路径
SELECTION-SCREEN END OF BLOCK blk.
INITIALIZATION.
PERFORM frm_screen_ini."初始化屏幕
AT SELECTION-SCREEN.
* 屏幕检查
PERFORM screen_check.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
PERFORM fm_file_help.
START-OF-SELECTION.
PERFORM frm_upload_data."上载数据
PERFORM frm_check_data."校验数据
PERFORM frm_display_alv."ALV显示
END-OF-SELECTION.
*&---------------------------------------------------------------------*
*& Form SCREEN_CHECK
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM screen_check .
CASE sscrfields-ucomm.
WHEN 'FC01'.
PERFORM fm_save_template.
CLEAR sscrfields-ucomm.
WHEN OTHERS.
IF p_file IS INITIAL.
MESSAGE e001(00) WITH '请输入文件路径'.
ENDIF.
ENDCASE.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FM_SAVE_TEMPLATE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM fm_save_template .
DATA: lv_filename TYPE string,
lv_path TYPE string,
lv_fullpath TYPE string.
DATA: lw_template TYPE wwwdatatab.
DATA: lv_des TYPE rlgrap-filename.
DATA: lv_rc TYPE sy-subrc.
DATA: application TYPE ole2_object,
workbook TYPE ole2_object,
sheet TYPE ole2_object.
"选择保存路径
CALL METHOD cl_gui_frontend_services=>file_save_dialog
EXPORTING
window_title = '请选择模板保存路径'
default_extension = 'xls'
default_file_name = '销售合同批量导入模板'
* with_encoding =
* prompt_on_overwrite = 'X'
CHANGING
filename = lv_filename
path = lv_path
fullpath = lv_fullpath
* user_action =
* file_encoding =
EXCEPTIONS
cntl_error = 1
error_no_gui = 2
not_supported_by_gui = 3
invalid_default_file_name = 4
OTHERS = 5.
IF lv_filename IS NOT INITIAL.
CLEAR lw_template.
SELECT SINGLE relid objid
INTO CORRESPONDING FIELDS OF lw_template
FROM wwwdata
WHERE relid = 'MI'
AND objid = 'ZSDB_024'
AND srtf2 = 0.
IF sy-subrc NE 0.
MESSAGE e001(00) WITH '模板文件ZSDB_024不存在'.
ENDIF.
"模板下载
lv_des = lv_fullpath.
CALL FUNCTION 'DOWNLOAD_WEB_OBJECT'
EXPORTING
key = lw_template
destination = lv_des
IMPORTING
rc = lv_rc.
IF lv_rc NE 0.
MESSAGE e001(00) WITH '模板文件:下载失败,请与相关人员联系'.
ENDIF.
"打开模板文件
CREATE OBJECT application 'EXCEL.APPLICATION'.
IF sy-subrc NE 0.
MESSAGE e001(00) WITH '不能创建EXCEL对象'.
ENDIF.
CALL METHOD OF application 'WORKBOOKS' = workbook.
CALL METHOD OF workbook 'OPEN'
EXPORTING
#1 = lv_des.
CALL METHOD OF application 'WORKSHEETS' = sheet
EXPORTING
#1 = 1.
GET PROPERTY OF application 'ACTIVESHEET' = sheet.
SET PROPERTY OF application 'VISIBLE' = 1.
FREE: sheet, workbook, application.
CALL METHOD OF workbook 'CLOSE'.
CALL METHOD OF application 'QUIT'.
ENDIF.
ENDFORM. " FM_SAVE_TEMPLATE
*&---------------------------------------------------------------------*
*& Form FM_FILE_HELP
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM fm_file_help .
CALL FUNCTION 'F4_FILENAME'
IMPORTING
file_name = p_file.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_SCREEN_INI
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM frm_screen_ini .
sscrfields-functxt_01 = '模板下载'. "模板下载
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_UPLOAD_DATA
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM frm_upload_data .
DATA:lv_filename TYPE rlgrap-filename.
DATA:lv_raw_data TYPE truxs_t_text_data.
DATA:lv_len TYPE i.
DATA:g_subrc TYPE sy-subrc.
DATA:indata TYPE zalsmex_tabline OCCURS 0 WITH HEADER LINE.
DATA:ls_i TYPE i.
FIELD-SYMBOLS <f>.
DATA: lv_column TYPE i.
DATA: l_oref TYPE REF TO cx_root.
CLEAR:lv_filename,g_subrc.
"如果文件路径超过128位,则报错提示:文件路径过长
lv_len = strlen( p_file ).
IF lv_len > 128.
g_subrc = 4.
MESSAGE TEXT-004 TYPE 'S' DISPLAY LIKE 'E'.
RETURN.
ENDIF.
lv_filename = p_file.
CALL FUNCTION 'ZALSM_EXCEL_TO_INTERNAL_TABLE'
EXPORTING
filename = lv_filename
i_begin_col = '1'
i_begin_row = '3'
i_end_col = '44'
i_end_row = '9999'
TABLES
intern = indata
EXCEPTIONS
inconsistent_parameters = 1
upload_ole = 2
OTHERS = 3.
IF sy-subrc <> 0.
g_subrc = 4.
MESSAGE 'Read File Error!' TYPE 'S' DISPLAY LIKE 'E'.
ELSE.
SORT indata BY row col.
LOOP AT indata.
ls_i = indata-col.
ASSIGN COMPONENT ls_i OF STRUCTURE gt_input TO <f>.
TRY.
<f> = indata-value.
CATCH cx_sy_conversion_no_number INTO l_oref.
TRANSLATE indata-value USING ', '.
CONDENSE indata-value NO-GAPS.
<f> = indata-value.
ENDTRY.
* <f> = indata-value.
AT END OF row.
APPEND gt_input.
CLEAR gt_input.
ENDAT.
ENDLOOP.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_CHECK_DATA
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM frm_check_data .
DATA: l_num1 TYPE vbap-zwert,
l_num2 TYPE vbak-zyfpre,
l_num3 TYPE vbap-zwert,
l_data1 TYPE sy-datum,
l_data2(6) TYPE c,
l_data3(6) TYPE c.
CLEAR: l_num1,l_num2,l_num3.
DATA: l_msg1(20) TYPE c,l_msg2(20) TYPE c,
l_msg3(20) TYPE c,l_msg4(20) TYPE c,
l_msg5(20) TYPE c,l_msg6(20) TYPE c,
l_msg7(20) TYPE c,l_msg8(20) TYPE c,
l_msg9(20) TYPE c,l_msg10(20) TYPE c,
l_msg11(20) TYPE c,l_msg12(20) TYPE c,
l_msg13(20) TYPE c,l_msg14(20) TYPE c,
l_msg15(20) TYPE c,l_msg16(20) TYPE c,
l_msg17(20) TYPE c,l_msg18(20) TYPE c,
l_msg19(20) TYPE c,l_msg20(20) TYPE c,
l_msg21(20) TYPE c.
"加前导0
LOOP AT gt_input.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = gt_input-kunnr
IMPORTING
output = gt_input-kunnr.
IF gt_input-lifnr IS NOT INITIAL.
CALL FUNCTION 'ZHR_GET_PERNR'
EXPORTING
i_old_pernr = gt_input-lifnr
IMPORTING
pernr = gt_input-gv_pernr.
ENDIF.
gw_pernr-gv_pernr = gt_input-gv_pernr.
APPEND gw_pernr TO gt_pernr.
MODIFY gt_input.
CLEAR: gt_input,gw_pernr.
ENDLOOP.
SELECT kunnr,name1,name2
FROM kna1
INTO TABLE @DATA(lt_kna1)
FOR ALL ENTRIES IN @gt_input
WHERE kunnr = @gt_input-kunnr.
SORT lt_kna1 BY kunnr.
SELECT lifnr,name1,name2
FROM lfa1
INTO TABLE @DATA(lt_lfa1)
FOR ALL ENTRIES IN @gt_pernr
WHERE lifnr = @gt_pernr-gv_pernr.
SORT lt_lfa1 BY lifnr.
SORT gt_input BY htnum.
LOOP AT gt_input.
l_num3 = l_num3 + gt_input-zwert.
AT END OF htnum.
* gt_input-znum = l_num3.
* MODIFY gt_input.
LOOP AT gt_input INTO DATA(lw_msg) WHERE htnum = gt_input-htnum.
lw_msg-znum = l_num3.
MODIFY gt_input FROM lw_msg.
ENDLOOP.
CLEAR l_num3.
ENDAT.
ENDLOOP.
LOOP AT gt_input.
READ TABLE lt_kna1 INTO DATA(lw_kna1) WITH KEY kunnr = gt_input-kunnr BINARY SEARCH.
IF sy-subrc = 0.
CONCATENATE lw_kna1-name1 lw_kna1-name2 INTO gt_input-kname.
ENDIF.
READ TABLE lt_lfa1 INTO DATA(lw_lfa1) WITH KEY lifnr = gt_input-lifnr BINARY SEARCH.
IF sy-subrc = 0.
CONCATENATE lw_lfa1-name1 lw_lfa1-name2 INTO gt_input-yname.
ENDIF.
"导入数据校验
IF gt_input-auart = 'ZWK2'.
l_num1 = gt_input-zyfwtr + gt_input-zjdwtr + gt_input-zfhwtr +
gt_input-zdhwtr + gt_input-ztswtr + gt_input-zzbwtr.
IF l_num1 <> gt_input-znum.
gt_input-status = icon_led_red.
gw_check-flag = 'E'.
gt_input-checkmeg = '金额加总必须等于合同金额!'.
ENDIF.
CLEAR l_num1.
l_num2 = gt_input-zyfpre + gt_input-zjdpre + gt_input-zfhpre +
gt_input-zdhpre + gt_input-ztspre + gt_input-zzbpre.
IF l_num2 <> 1.
gt_input-status = icon_led_red.
gw_check-flag = 'E'.
l_msg1 = '占比加总必须等于1!'.
CONCATENATE gt_input-checkmeg '/' l_msg1 INTO gt_input-checkmeg.
ENDIF.
CLEAR l_num2.
IF gt_input-zwert IS INITIAL.
gt_input-status = icon_led_red.
gw_check-flag = 'E'.
l_msg15 = '请输入合同金额(目标值)'.
CONCATENATE gt_input-checkmeg '/' l_msg15 INTO gt_input-checkmeg.
ENDIF.
IF gt_input-zyfwtr IS INITIAL.
gt_input-status = icon_led_red.
l_msg17 = '请输入预收款金额/元(1)'.
gw_check-flag = 'E'.
CONCATENATE gt_input-checkmeg '/' l_msg17 INTO gt_input-checkmeg.
ENDIF.
IF gt_input-zyfpre IS INITIAL.
gt_input-status = icon_led_red.
gw_check-flag = 'E'.
l_msg18 = '请输入预收款占比(1)'.
CONCATENATE gt_input-checkmeg '/' l_msg18 INTO gt_input-checkmeg.
ENDIF.
IF gt_input-zyfdat IS INITIAL.
gt_input-status = icon_led_red.
l_msg19 = '请输入预收款到期日(1)'.
gw_check-flag = 'E'.
CONCATENATE gt_input-checkmeg '/' l_msg19 INTO gt_input-checkmeg.
ENDIF.
ENDIF.
"必填输入校验
IF gt_input-htnum IS INITIAL.
gt_input-status = icon_led_red.
gw_check-flag = 'E'.
l_msg2 = '请输入手工合同编号'.
CONCATENATE gt_input-checkmeg '/' l_msg2 INTO gt_input-checkmeg.
ENDIF.
IF gt_input-auart IS INITIAL.
gt_input-status = icon_led_red.
gw_check-flag = 'E'.
l_msg3 = '请输入合同类型'.
CONCATENATE gt_input-checkmeg '/' l_msg3 INTO gt_input-checkmeg.
ENDIF.
IF gt_input-vkorg IS INITIAL.
gt_input-status = icon_led_red.
gw_check-flag = 'E'.
l_msg4 = '请输入销售组织'.
CONCATENATE gt_input-checkmeg '/' l_msg4 INTO gt_input-checkmeg.
ENDIF.
IF gt_input-vtweg IS INITIAL.
gt_input-status = icon_led_red.
gw_check-flag = 'E'.
l_msg5 = '请输入分销渠道'.
CONCATENATE gt_input-checkmeg '/' l_msg5 INTO gt_input-checkmeg.
ENDIF.
IF gt_input-spart IS INITIAL.
gt_input-status = icon_led_red.
gw_check-flag = 'E'.
l_msg6 = '请输入产品组'.
CONCATENATE gt_input-checkmeg '/' l_msg6 INTO gt_input-checkmeg.
ENDIF.
IF gt_input-vkgrp IS INITIAL.
gt_input-status = icon_led_red.
gw_check-flag = 'E'.
l_msg7 = '请输入销售部门'.
CONCATENATE gt_input-checkmeg '/' l_msg7 INTO gt_input-checkmeg.
ENDIF.
IF gt_input-vkbur IS INITIAL.
gt_input-status = icon_led_red.
gw_check-flag = 'E'.
l_msg8 = '请输入销售组'.
CONCATENATE gt_input-checkmeg '/' l_msg8 INTO gt_input-checkmeg.
ENDIF.
IF gt_input-kunnr IS INITIAL.
gt_input-status = icon_led_red.
gw_check-flag = 'E'.
l_msg9 = '请输入客户编码'.
CONCATENATE gt_input-checkmeg '/' l_msg9 INTO gt_input-checkmeg.
ENDIF.
IF gt_input-bstkd IS INITIAL.
gt_input-status = icon_led_red.
gw_check-flag = 'E'.
l_msg10 = '请输入CD合同编号'.
CONCATENATE gt_input-checkmeg '/' l_msg10 INTO gt_input-checkmeg.
ENDIF.
IF gt_input-bstdk IS INITIAL.
gt_input-status = icon_led_red.
gw_check-flag = 'E'.
l_msg11 = '请输入合同签署日期'.
CONCATENATE gt_input-checkmeg '/' l_msg11 INTO gt_input-checkmeg.
ENDIF.
IF gt_input-ktext IS INITIAL.
gt_input-status = icon_led_red.
gw_check-flag = 'E'.
l_msg12 = '请输入合同描述'.
CONCATENATE gt_input-checkmeg '/' l_msg12 INTO gt_input-checkmeg.
ENDIF.
IF gt_input-guebg IS INITIAL.
gt_input-status = icon_led_red.
gw_check-flag = 'E'.
l_msg13 = '请输入合同开始日期'.
CONCATENATE gt_input-checkmeg '/' l_msg13 INTO gt_input-checkmeg.
ENDIF.
IF gt_input-gueen IS INITIAL.
gt_input-status = icon_led_red.
gw_check-flag = 'E'.
l_msg14 = '请输入合同结束日期'.
CONCATENATE gt_input-checkmeg '/' l_msg14 INTO gt_input-checkmeg.
ENDIF.
* IF gt_input-zyfwtr IS INITIAL.
* gt_input-status = icon_led_red.
* gw_check-flag = 'E'.
* l_msg16 = '请输入预收款金额/元(1)'.
* CONCATENATE gt_input-checkmeg '/' l_msg16 INTO gt_input-checkmeg.
* ENDIF.
PERFORM frm_convert_date USING gt_input-gueen CHANGING l_data1.
l_data2 = l_data1+0(6).
l_data3 = sy-datum+0(6).
DATA(l_data4) = l_data3 + 1.
IF l_data2 <= l_data4.
gt_input-status = icon_led_red.
gw_check-flag = 'E'.
l_msg20 = '输入日期的月份不能小于下个月的月份'.
CONCATENATE gt_input-checkmeg '/' l_msg20 INTO gt_input-checkmeg.
ENDIF.
* IF gt_input-zyfyq IS INITIAL.
* gt_input-status = icon_led_red.
* gw_check-flag = 'E'.
* l_msg20 = '请输入预收款已清(1)'.
* CONCATENATE gt_input-checkmeg '/' l_msg20 INTO gt_input-checkmeg.
* ENDIF.
IF gw_check-flag <> 'E'.
gt_input-status = icon_led_green.
* gt_input-checkmeg = '数据正确!'.
ENDIF.
MODIFY gt_input.
APPEND gw_check TO gt_check.
CLEAR: gt_input,gw_check.
CLEAR: l_msg1,l_msg2,l_msg3,l_msg4,l_msg5,l_msg6,l_msg7,l_msg8,l_msg9,
l_msg10,l_msg11,l_msg12,l_msg13,l_msg14,l_msg15,l_msg16,l_msg17,
l_msg18,l_msg19,l_msg20,l_data1,l_data2,l_data3.
ENDLOOP.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_DISPLAY_ALV
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM frm_display_alv .
PERFORM frm_fill_fieldcat.
PERFORM frm_alv_layout.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_buffer_active = 'X'
i_callback_program = sy-repid
is_layout = w_layout
it_fieldcat = t_fieldcat
i_callback_pf_status_set = 'SET_PF_STATUS'
i_callback_user_command = 'USER_COMMAND'
TABLES
t_outtab = gt_input
EXCEPTIONS
program_error = 1
OTHERS = 2.
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.
*&---------------------------------------------------------------------*
*& Form FRM_FILL_FIELDCAT
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM frm_fill_fieldcat .
CLEAR w_fieldcat.
w_fieldcat-fieldname = 'STATUS'.
w_fieldcat-seltext_m = '指示灯'.
w_fieldcat-icon = 'X'.
APPEND w_fieldcat TO t_fieldcat.
CLEAR w_fieldcat.
w_fieldcat-fieldname = 'CHECKMEG'.
w_fieldcat-seltext_m = '检查结果'.
APPEND w_fieldcat TO t_fieldcat.
CLEAR w_fieldcat.
w_fieldcat-fieldname = 'MESSAGE'.
w_fieldcat-seltext_m = '处理信息'.
APPEND w_fieldcat TO t_fieldcat.
CLEAR w_fieldcat.
w_fieldcat-fieldname = 'HTNUM'.
w_fieldcat-seltext_m = '手工合同编号'.
APPEND w_fieldcat TO t_fieldcat.
CLEAR w_fieldcat.
w_fieldcat-fieldname = 'AUART'.
w_fieldcat-seltext_m = '合同类型'.
APPEND w_fieldcat TO t_fieldcat.
CLEAR w_fieldcat.
w_fieldcat-fieldname = 'VKORG'.
w_fieldcat-seltext_m = '销售组织'.
APPEND w_fieldcat TO t_fieldcat.
CLEAR w_fieldcat.
w_fieldcat-fieldname = 'VTWEG'.
w_fieldcat-seltext_m = '分销渠道'.
APPEND w_fieldcat TO t_fieldcat.
CLEAR w_fieldcat.
w_fieldcat-fieldname = 'SPART'.
w_fieldcat-seltext_m = '产品组'.
APPEND w_fieldcat TO t_fieldcat.
CLEAR w_fieldcat.
w_fieldcat-fieldname = 'VKGRP'.
w_fieldcat-seltext_m = '销售部门'.
APPEND w_fieldcat TO t_fieldcat.
CLEAR w_fieldcat.
w_fieldcat-fieldname = 'VKBUR'.
w_fieldcat-seltext_m = '销售组'.
APPEND w_fieldcat TO t_fieldcat.
CLEAR w_fieldcat.
w_fieldcat-fieldname = 'KUNNR'.
w_fieldcat-seltext_m = '客户编码'.
w_fieldcat-no_zero = 'X'.
APPEND w_fieldcat TO t_fieldcat.
CLEAR w_fieldcat.
w_fieldcat-fieldname = 'KNAME'.
w_fieldcat-seltext_m = '客户名称'.
APPEND w_fieldcat TO t_fieldcat.
CLEAR w_fieldcat.
w_fieldcat-fieldname = 'BSTKD'.
w_fieldcat-seltext_m = 'CD合同编号'.
APPEND w_fieldcat TO t_fieldcat.
CLEAR w_fieldcat.
w_fieldcat-fieldname = 'BSTDK'.
w_fieldcat-seltext_m = '合同签署日期'.
APPEND w_fieldcat TO t_fieldcat.
CLEAR w_fieldcat.
w_fieldcat-fieldname = 'KTEXT'.
w_fieldcat-seltext_m = '合同描述'.
APPEND w_fieldcat TO t_fieldcat.
CLEAR w_fieldcat.
w_fieldcat-fieldname = 'GUEBG'.
w_fieldcat-seltext_m = '合同开始日期'.
APPEND w_fieldcat TO t_fieldcat.
CLEAR w_fieldcat.
w_fieldcat-fieldname = 'GUEEN'.
w_fieldcat-seltext_m = '合同结束日期'.
APPEND w_fieldcat TO t_fieldcat.
CLEAR w_fieldcat.
w_fieldcat-fieldname = 'ZWERT'.
w_fieldcat-seltext_m = '合同金额(目标值)'.
APPEND w_fieldcat TO t_fieldcat.
CLEAR w_fieldcat.
w_fieldcat-fieldname = 'ZNUM'.
w_fieldcat-seltext_m = '金额基准值'.
APPEND w_fieldcat TO t_fieldcat.
CLEAR w_fieldcat.
w_fieldcat-fieldname = 'ZYFWTR'.
w_fieldcat-seltext_m = '预收款金额/元(1)'.
APPEND w_fieldcat TO t_fieldcat.
CLEAR w_fieldcat.
w_fieldcat-fieldname = 'ZYFPRE'.
w_fieldcat-seltext_m = '预收款占比(1)'.
APPEND w_fieldcat TO t_fieldcat.
CLEAR w_fieldcat.
w_fieldcat-fieldname = 'ZYFDAT'.
w_fieldcat-seltext_m = '预收款到期日(1)'.
APPEND w_fieldcat TO t_fieldcat.
CLEAR w_fieldcat.
w_fieldcat-fieldname = 'ZYFYQ'.
w_fieldcat-seltext_m = '预收款已清(1)'.
APPEND w_fieldcat TO t_fieldcat.
CLEAR w_fieldcat.
w_fieldcat-fieldname = 'ZJDWTR'.
w_fieldcat-seltext_m = '进度款金额/元(2)'.
APPEND w_fieldcat TO t_fieldcat.
CLEAR w_fieldcat.
w_fieldcat-fieldname = 'ZJDPRE'.
w_fieldcat-seltext_m = '进度款占比(2)'.
APPEND w_fieldcat TO t_fieldcat.
CLEAR w_fieldcat.
w_fieldcat-fieldname = 'ZJDDAT'.
w_fieldcat-seltext_m = '进度款到期日(2)'.
APPEND w_fieldcat TO t_fieldcat.
CLEAR w_fieldcat.
w_fieldcat-fieldname = 'ZJDYQ'.
w_fieldcat-seltext_m = '进度款已清(2)'.
APPEND w_fieldcat TO t_fieldcat.
CLEAR w_fieldcat.
w_fieldcat-fieldname = 'ZFHWTR'.
w_fieldcat-seltext_m = '发货款金额/元(3)'.
APPEND w_fieldcat TO t_fieldcat.
CLEAR w_fieldcat.
w_fieldcat-fieldname = 'ZFHPRE'.
w_fieldcat-seltext_m = '发货款占比(3)'.
APPEND w_fieldcat TO t_fieldcat.
CLEAR w_fieldcat.
w_fieldcat-fieldname = 'ZFHDAT'.
w_fieldcat-seltext_m = '发货款到期日(3)'.
APPEND w_fieldcat TO t_fieldcat.
CLEAR w_fieldcat.
w_fieldcat-fieldname = 'ZFHYQ'.
w_fieldcat-seltext_m = '发货款已清(3)'.
APPEND w_fieldcat TO t_fieldcat.
CLEAR w_fieldcat.
w_fieldcat-fieldname = 'ZDHWTR'.
w_fieldcat-seltext_m = '到货款金额/元(4)'.
APPEND w_fieldcat TO t_fieldcat.
CLEAR w_fieldcat.
w_fieldcat-fieldname = 'ZDHPRE'.
w_fieldcat-seltext_m = '到货款占比(4)'.
APPEND w_fieldcat TO t_fieldcat.
CLEAR w_fieldcat.
w_fieldcat-fieldname = 'ZDHDAT'.
w_fieldcat-seltext_m = '到货款到期日(4)'.
APPEND w_fieldcat TO t_fieldcat.
CLEAR w_fieldcat.
w_fieldcat-fieldname = 'ZDHYQ'.
w_fieldcat-seltext_m = '到货款已清(4)'.
APPEND w_fieldcat TO t_fieldcat.
CLEAR w_fieldcat.
w_fieldcat-fieldname = 'ZTSWTR'.
w_fieldcat-seltext_m = '安装款金额/元(5)'.
APPEND w_fieldcat TO t_fieldcat.
CLEAR w_fieldcat.
w_fieldcat-fieldname = 'ZTSPRE'.
w_fieldcat-seltext_m = '安装款占比(5)'.
APPEND w_fieldcat TO t_fieldcat.
CLEAR w_fieldcat.
w_fieldcat-fieldname = 'ZTSDAT'.
w_fieldcat-seltext_m = '安装款到期日(5)'.
APPEND w_fieldcat TO t_fieldcat.
CLEAR w_fieldcat.
w_fieldcat-fieldname = 'ZTSYQ'.
w_fieldcat-seltext_m = '安装款已清(5)'.
APPEND w_fieldcat TO t_fieldcat.
CLEAR w_fieldcat.
w_fieldcat-fieldname = 'ZZBWTR'.
w_fieldcat-seltext_m = '质保金金额(6)'.
APPEND w_fieldcat TO t_fieldcat.
CLEAR w_fieldcat.
w_fieldcat-fieldname = 'ZZBPRE'.
w_fieldcat-seltext_m = '质保金占比(6)'.
APPEND w_fieldcat TO t_fieldcat.
CLEAR w_fieldcat.
w_fieldcat-fieldname = 'ZZBDAT'.
w_fieldcat-seltext_m = '质保款到期日(6)'.
APPEND w_fieldcat TO t_fieldcat.
CLEAR w_fieldcat.
w_fieldcat-fieldname = 'ZZBYQ'.
w_fieldcat-seltext_m = '质保款已清(6)'.
APPEND w_fieldcat TO t_fieldcat.
CLEAR w_fieldcat.
w_fieldcat-fieldname = 'LIFNR'.
w_fieldcat-seltext_m = '业务员(工号)'.
w_fieldcat-no_zero = 'X'.
APPEND w_fieldcat TO t_fieldcat.
CLEAR w_fieldcat.
w_fieldcat-fieldname = 'YNAME'.
w_fieldcat-seltext_m = '业务员名称'.
APPEND w_fieldcat TO t_fieldcat.
CLEAR w_fieldcat.
w_fieldcat-fieldname = 'POSNR'.
w_fieldcat-seltext_m = '行项目号'.
APPEND w_fieldcat TO t_fieldcat.
CLEAR w_fieldcat.
w_fieldcat-fieldname = 'MATNR'.
w_fieldcat-seltext_m = '物料编码'.
w_fieldcat-no_zero = 'X'.
APPEND w_fieldcat TO t_fieldcat.
CLEAR w_fieldcat.
w_fieldcat-fieldname = 'ARKTX'.
w_fieldcat-seltext_m = '物料描述'.
APPEND w_fieldcat TO t_fieldcat.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_ALV_LAYOUT
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM frm_alv_layout .
w_layout-colwidth_optimize = 'X'.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form SET_STATUS
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM set_pf_status USING rt_extab TYPE slis_t_extab.
SET PF-STATUS 'STANDARD'.
ENDFORM.
FORM user_command USING r_ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfield.
DATA: lr_grid TYPE REF TO cl_gui_alv_grid.
DATA: l_werks TYPE t320-werks,
l_lgort TYPE t320-lgort.
DATA: l_text_question TYPE string,
l_answer TYPE char1.
CASE r_ucomm.
WHEN '&SAVE'.
PERFORM frm_call_bapi."调用BAPI
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
IMPORTING
e_grid = lr_grid.
CALL METHOD lr_grid->check_changed_data.
rs_selfield-refresh = 'X'.
rs_selfield-col_stable = 'X'.
rs_selfield-row_stable = 'X'.
ENDCASE.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_CALL_BAPI
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM frm_call_bapi .
DATA: l_line TYPE i.
DATA: header_in TYPE TABLE OF bapisdhd1 WITH HEADER LINE,
header_inx TYPE TABLE OF bapisdhd1x WITH HEADER LINE,
partners TYPE TABLE OF bapiparnr WITH HEADER LINE,
items_in TYPE TABLE OF bapisditm WITH HEADER LINE,
items_inx TYPE TABLE OF bapisditmx WITH HEADER LINE,
data_in TYPE TABLE OF bapictr WITH HEADER LINE,
data_inx TYPE TABLE OF bapictrx WITH HEADER LINE,
gt_bapiparex TYPE TABLE OF bapiparex,
gs_bapiparex TYPE bapiparex,
gt_bapiparexx TYPE TABLE OF bapiparex,
gs_bapiparexx TYPE bapiparex,
* extensionin TYPE TABLE OF bapiparex WITH HEADER LINE,
* extensionex TYPE TABLE OF bapiparex WITH HEADER LINE,
return TYPE TABLE OF bapiret2 WITH HEADER LINE.
DATA: gs_zbape_vbak TYPE bape_vbak,
gs_zbape_vbakx TYPE bape_vbakx.
"加前导0
LOOP AT gt_input.
* CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
* EXPORTING
* input = gt_input-kunnr
* IMPORTING
* output = gt_input-kunnr.
*
* CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
* EXPORTING
* input = gt_input-lifnr
* IMPORTING
* output = gt_input-lifnr.
CALL FUNCTION 'CONVERSION_EXIT_MATN1_OUTPUT'
EXPORTING
input = gt_input-matnr
IMPORTING
output = gt_input-matnr.
MODIFY gt_input.
CLEAR gt_input.
ENDLOOP.
"取客户名称、业务员名称、物料描述
IF gt_input[] IS NOT INITIAL.
SELECT matnr,maktx
FROM makt
INTO TABLE @DATA(lt_makt)
FOR ALL ENTRIES IN @gt_input
WHERE matnr = @gt_input-matnr.
SORT lt_makt BY matnr.
ENDIF.
"存在错误的数据不能导入
SORT gt_check BY flag.
DELETE ADJACENT DUPLICATES FROM gt_check COMPARING flag.
LOOP AT gt_check INTO DATA(lw_check) WHERE flag = 'E'.
MESSAGE '导入的数据存在错误,请检查数据!' TYPE 'S' DISPLAY LIKE 'E'.
RETURN.
ENDLOOP.
"导入数据
LOOP AT gt_input.
l_line = l_line + 1.
AT NEW htnum.
READ TABLE gt_input INDEX l_line.
"header_in
header_in-doc_type = gt_input-auart. "合同类型
header_in-sales_org = gt_input-vkorg. "销售组织
header_in-distr_chan = gt_input-vtweg. "分销渠道
header_in-division = gt_input-spart. "产品组
header_in-sales_grp = gt_input-vkgrp. "销售组
header_in-sales_off = gt_input-vkbur. "销售部门
PERFORM frm_convert_date USING gt_input-bstdk CHANGING header_in-purch_date."合同签署日期
* header_in-purch_date = gt_input-bstdk.
header_in-purch_no_c = gt_input-bstkd. "CD合同编号
header_in-pp_search = gt_input-ktext. "合同描述
APPEND header_in.
"header_inx
header_inx-doc_type = 'X'. "合同类型
header_inx-sales_org = 'X'. "销售组织
header_inx-distr_chan = 'X'. "分销渠道
header_inx-division = 'X'. "产品组
header_inx-sales_grp = 'X'. "销售组
header_inx-sales_off = 'X'. "销售部门
header_inx-purch_date = 'X'. "合同签署日期
header_inx-purch_no_c = 'X'. "CD合同编号
header_inx-pp_search = 'X'. "合同描述
APPEND header_inx.
"partners
partners-partn_role = 'AG'.
partners-partn_numb = |{ gt_input-kunnr ALPHA = IN }|."客户编码
APPEND partners.
"partners
partners-partn_role = 'Y1'.
* partners-partn_numb = gt_input-gv_pernr."业务员(工号)
partners-partn_numb = |{ gt_input-gv_pernr ALPHA = IN }|."业务员(工号)
* IF gt_input-lifnr IS NOT INITIAL.
* CALL FUNCTION 'ZHR_GET_PERNR'
* EXPORTING
* i_old_pernr = gt_input-lifnr
* IMPORTING
* pernr = partners-partn_numb.
* ENDIF.
APPEND partners.
"data_in
data_in-itm_number = ''.
PERFORM frm_convert_date USING gt_input-guebg CHANGING data_in-con_st_dat.
* data_in-con_st_dat = gt_input-guebg. "合同开始日期
PERFORM frm_convert_date USING gt_input-gueen CHANGING data_in-con_en_dat.
* data_in-con_en_dat = gt_input-gueen. "合同结束日期
APPEND data_in.
"data_inx
data_inx-itm_number = ''.
data_inx-con_st_dat = 'X'. "合同开始日期
data_inx-con_en_dat = 'X'. "合同结束日期
APPEND data_inx.
ENDAT.
"items_in
items_in-itm_number = gt_input-posnr. "行项目
items_in-target_val = gt_input-zwert. "合同金额(目标值)
* items_in-material_long = gt_input-matnr. "物料编码
CALL FUNCTION 'CONVERSION_EXIT_MATN1_OUTPUT'
EXPORTING
input = gt_input-matnr
IMPORTING
output = items_in-material_long.
IF gt_input-arktx IS NOT INITIAL.
items_in-short_text = gt_input-arktx. "物料描述
ELSE.
READ TABLE lt_makt INTO DATA(lw_makt) WITH KEY matnr = gt_input-matnr BINARY SEARCH.
IF sy-subrc = 0.
items_in-short_text = lw_makt-maktx. "物料描述
ENDIF.
ENDIF.
APPEND items_in.
"items_inx
items_inx-itm_number = gt_input-posnr. "行项目
items_inx-target_val = 'X'. "合同金额(目标值)
items_inx-material_long = 'X'. "物料编码
items_inx-short_text = 'X'. "物料描述
APPEND items_inx.
gs_zbape_vbak-zyfwtr = gt_input-zyfwtr.
gs_zbape_vbak-zyfpre = gt_input-zyfpre.
* gs_zbape_vbak-zyfdat = gt_input-zyfdat.
PERFORM frm_convert_date USING gt_input-zyfdat CHANGING gs_zbape_vbak-zyfdat.
gs_zbape_vbak-zjdwtr = gt_input-zjdwtr.
gs_zbape_vbak-zjdpre = gt_input-zjdpre.
* gs_zbape_vbak-zjddat = gt_input-zjddat.
PERFORM frm_convert_date USING gt_input-zjddat CHANGING gs_zbape_vbak-zjddat.
gs_zbape_vbak-zfhwtr = gt_input-zfhwtr.
gs_zbape_vbak-zfhpre = gt_input-zfhpre.
* gs_zbape_vbak-zfhdat = gt_input-zfhdat.
PERFORM frm_convert_date USING gt_input-zfhdat CHANGING gs_zbape_vbak-zfhdat.
gs_zbape_vbak-zdhwtr = gt_input-zdhwtr.
gs_zbape_vbak-zdhpre = gt_input-zdhpre.
* gs_zbape_vbak-zdhdat = gt_input-zdhdat.
PERFORM frm_convert_date USING gt_input-zdhdat CHANGING gs_zbape_vbak-zdhdat.
gs_zbape_vbak-ztswtr = gt_input-ztswtr.
gs_zbape_vbak-ztspre = gt_input-ztspre.
* gs_zbape_vbak-ztsdat = gt_input-ztsdat.
PERFORM frm_convert_date USING gt_input-ztsdat CHANGING gs_zbape_vbak-ztsdat.
gs_zbape_vbak-zzbwtr = gt_input-zzbwtr.
gs_zbape_vbak-zzbpre = gt_input-zzbpre.
* gs_zbape_vbak-zzbdat = gt_input-zzbdat.
PERFORM frm_convert_date USING gt_input-zzbdat CHANGING gs_zbape_vbak-zzbdat.
gs_zbape_vbak-zyfyq = gt_input-zyfyq.
gs_zbape_vbak-zjdyq = gt_input-zjdyq.
gs_zbape_vbak-zfhyq = gt_input-zfhyq.
gs_zbape_vbak-zdhyq = gt_input-zdhyq.
gs_zbape_vbak-ztsyq = gt_input-ztsyq.
gs_zbape_vbak-zzbyq = gt_input-zzbyq.
gs_bapiparex-structure = 'BAPE_VBAK'.
CALL METHOD cl_abap_container_utilities=>fill_container_c
EXPORTING
im_value = gs_zbape_vbak
IMPORTING
ex_container = gs_bapiparex-valuepart1.
* gs_bapiparex-valuepart1 = gs_zbape_vbak.
APPEND gs_bapiparex TO gt_bapiparex.
CLEAR: gs_zbape_vbak,gs_bapiparex.
gs_zbape_vbakx-zyfwtr = 'X'.
gs_zbape_vbakx-zyfpre = 'X'.
gs_zbape_vbakx-zyfdat = 'X'.
gs_zbape_vbakx-zjdwtr = 'X'.
gs_zbape_vbakx-zjdpre = 'X'.
gs_zbape_vbakx-zjddat = 'X'.
gs_zbape_vbakx-zfhwtr = 'X'.
gs_zbape_vbakx-zfhpre = 'X'.
gs_zbape_vbakx-zfhdat = 'X'.
gs_zbape_vbakx-zdhwtr = 'X'.
gs_zbape_vbakx-zdhpre = 'X'.
gs_zbape_vbakx-zdhdat = 'X'.
gs_zbape_vbakx-ztswtr = 'X'.
gs_zbape_vbakx-ztspre = 'X'.
gs_zbape_vbakx-ztsdat = 'X'.
gs_zbape_vbakx-zzbwtr = 'X'.
gs_zbape_vbakx-zzbpre = 'X'.
gs_zbape_vbakx-zzbdat = 'X'.
gs_zbape_vbakx-zyfyq = 'X'.
gs_zbape_vbakx-zjdyq = 'X'.
gs_zbape_vbakx-zfhyq = 'X'.
gs_zbape_vbakx-zdhyq = 'X'.
gs_zbape_vbakx-ztsyq = 'X'.
gs_zbape_vbakx-zzbyq = 'X'.
gs_bapiparexx-structure = 'BAPE_VBAKX'.
* CALL METHOD cl_abap_container_utilities=>fill_container_c
* EXPORTING
* im_value = gs_zbape_vbakx
* IMPORTING
* ex_container = gs_bapiparexx-valuepart1.
gs_bapiparexx-valuepart1 = gs_zbape_vbakx.
APPEND gs_bapiparexx TO gt_bapiparexx.
CLEAR: gs_zbape_vbakx,gs_bapiparexx.
AT END OF htnum.
READ TABLE gt_input INDEX l_line.
CALL FUNCTION 'BAPI_CONTRACT_CREATEFROMDATA'
EXPORTING
contract_header_in = header_in
contract_header_inx = header_inx
TABLES
return = return
contract_items_in = items_in
contract_items_inx = items_inx
contract_partners = partners
contract_data_in = data_in
contract_data_inx = data_inx
extensionin = gt_bapiparex
extensionex = gt_bapiparexx.
LOOP AT return.
IF return-type = 'E' OR return-type = 'A'.
gt_input-status = icon_led_red.
CONCATENATE gt_input-message return-message INTO gt_input-message SEPARATED BY '/'.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
ENDIF.
IF return-type = 'S'.
gt_input-status = icon_led_green.
gt_input-message = return-message.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' .
WAIT UP TO '0.1' SECONDS.
ENDIF.
ENDLOOP.
LOOP AT gt_input INTO DATA(lw_msg) WHERE htnum = gt_input-htnum.
lw_msg-status = gt_input-status.
lw_msg-message = gt_input-message.
MODIFY gt_input FROM lw_msg.
ENDLOOP.
CLEAR: gt_bapiparex,gt_bapiparexx.
REFRESH:header_in,header_inx,partners,data_in,data_inx,items_in,items_inx,return.
ENDAT.
ENDLOOP.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_CONVERT_DATE
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> GT_INPUT_BSTDK
*& <-- HEADER_IN_PURCH_DATE
*&---------------------------------------------------------------------*
FORM frm_convert_date USING p_char
CHANGING p_date.
SPLIT p_char AT '/' INTO:DATA(l_char1) DATA(l_char2) DATA(l_char3).
IF strlen( l_char2 ) = 1.
CONCATENATE '0' l_char2 INTO l_char2.
ENDIF.
IF strlen( l_char3 ) = 1.
CONCATENATE '0' l_char3 INTO l_char3.
ENDIF.
CONCATENATE l_char1 l_char2 l_char3 INTO p_date.
ENDFORM.