TEXT_CONVERT_XLS_TO_SAP函数(未用):
1、如果数量、金额小于1,则导入时被自动放大1000或100倍(如果数据为3位小数,则放大1000倍,如果数据为2位小数,则放大100倍)。例如:0.500 吨的数量 上载后被此函数自动转换为500吨,被放大了1000倍;0.98 CNY的金额,上载后被此函数自动转换为98 CNY,被放大了100倍。
处理:方法一
将上载数据EXCEL中的数量、金额,全部转换为文本(不是只将单元格设置为文本),必须转换为EXCEL单元中左上角为绿色小三角形的文本单元格。设置后再上载此数据,则解决此问题。
处理:方法二
修改程序,把上载后内表:数量、金额字段 全部设置为 字符型 ,上载后,使用 replace 命令去除千分位豆号(建议每个数据执行3-5次),然后将相同的数据 赋值 到另一个内表表(字段相同,只是:数量为数量型、金额为金额型).设置后再上载此数据,则解决此问题。
2、单元格文本不能超过256个字符。
ALSM_EXCEL_TO_INTERNAL_TABLE函数(未用):
单元格文本不能超过50个字符,一是每个CELL只能导入前50个字符,二是如果超过9999行。
ZALSM_EXCEL_TO_INTERNAL_TABLE函数(当前使用):
这个函数问题少,比较好用,可以按内部数据结构,自动填充内表。当然excel列的顺序要和内表字段顺序一样。
FUNCTION ZALSM_EXCEL_TO_INTERNAL_TABLE.
*"----------------------------------------------------------------------
*"*"本地接口:
*" IMPORTING
*" VALUE(FILENAME) LIKE RLGRAP-FILENAME
*" VALUE(I_BEGIN_COL) TYPE I
*" VALUE(I_BEGIN_ROW) TYPE I
*" VALUE(I_END_COL) TYPE I
*" VALUE(I_END_ROW) TYPE I
*" VALUE(SHEET_NAME) TYPE ALSMEX_TABLINE-VALUE OPTIONAL
*" TABLES
*" INTERN OPTIONAL
*" EXCEPTIONS
*" INCONSISTENT_PARAMETERS
*" UPLOAD_OLE
*"----------------------------------------------------------------------
*"james_lx 2021.8.30 copy
* value of excel-cell
* Global data declarations
TYPES: TY_D_ITABVALUE TYPE ALSMEX_TABLINE-VALUE,
* internal table containing the excel data
TY_T_ITAB TYPE ALSMEX_TABLINE OCCURS 0,
* line type of sender table
BEGIN OF TY_S_SENDERLINE,
LINE(4096) TYPE C,
END OF TY_S_SENDERLINE,
* sender table
TY_T_SENDER TYPE TY_S_SENDERLINE OCCURS 0.
DATA: EXCEL_TAB TYPE TY_T_SENDER.
DATA: LD_SEPARATOR TYPE C.
DATA: APPLICATION TYPE OLE2_OBJECT,
WORKBOOK TYPE OLE2_OBJECT,
RANGE TYPE OLE2_OBJECT,
WORKSHEET TYPE OLE2_OBJECT.
DATA: H_CELL TYPE OLE2_OBJECT,
H_CELL1 TYPE OLE2_OBJECT.
DATA:
LD_RC TYPE I.
* Rückgabewert der Methode "clipboard_export "
* Makro für Fehlerbehandlung der Methods
DEFINE M_MESSAGE.
case sy-subrc.
when 0.
when 1.
message id sy-msgid type sy-msgty number sy-msgno
with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
when others. raise upload_ole.
endcase.
END-OF-DEFINITION.
* check parameters
IF I_BEGIN_ROW > I_END_ROW. RAISE INCONSISTENT_PARAMETERS. ENDIF.
IF I_BEGIN_COL > I_END_COL. RAISE INCONSISTENT_PARAMETERS. ENDIF.
* Get TAB-sign for separation of fields
CLASS CL_ABAP_CHAR_UTILITIES DEFINITION LOAD.
LD_SEPARATOR = CL_ABAP_CHAR_UTILITIES=>HORIZONTAL_TAB.
* open file in Excel
IF APPLICATION-HEADER = SPACE OR APPLICATION-HANDLE = -1.
CREATE OBJECT APPLICATION 'Excel.Application'.
M_MESSAGE.
ENDIF.
CALL METHOD OF APPLICATION 'Workbooks' = WORKBOOK.
M_MESSAGE.
CALL METHOD OF WORKBOOK 'Open' EXPORTING #1 = FILENAME.
M_MESSAGE.
* set property of application 'Visible' = 1.
* m_message.
* GET PROPERTY OF APPLICATION 'ACTIVESHEET' = WORKSHEET.
* M_MESSAGE.
*----------------------------------------------------------------------*
* Add by XieSW 2015-3-17
IF SHEET_NAME = SPACE."用默认模式
GET PROPERTY OF APPLICATION 'ACTIVESHEET' = WORKSHEET.
M_MESSAGE.
ELSE.
*-->可以实现读取多个sheet
CALL METHOD OF APPLICATION 'WORKSHEETS' = WORKSHEET
EXPORTING
#1 = SHEET_NAME.
CALL METHOD OF WORKSHEET 'Activate'.
M_MESSAGE.
ENDIF.
*----------------------------------------------------------------------*
* mark whole spread sheet
CALL METHOD OF WORKSHEET 'Cells' = H_CELL
EXPORTING #1 = I_BEGIN_ROW #2 = I_BEGIN_COL.
M_MESSAGE.
CALL METHOD OF WORKSHEET 'Cells' = H_CELL1
EXPORTING #1 = I_END_ROW #2 = I_END_COL.
M_MESSAGE.
CALL METHOD OF WORKSHEET 'RANGE' = RANGE
EXPORTING #1 = H_CELL #2 = H_CELL1.
M_MESSAGE.
CALL METHOD OF RANGE 'SELECT'.
M_MESSAGE.
* copy marked area (whole spread sheet) into Clippboard
CALL METHOD OF RANGE 'COPY'.
M_MESSAGE.
* read clipboard into ABAP
CALL METHOD CL_GUI_FRONTEND_SERVICES=>CLIPBOARD_IMPORT
IMPORTING
DATA = EXCEL_TAB
EXCEPTIONS
CNTL_ERROR = 1
* ERROR_NO_GUI = 2
* NOT_SUPPORTED_BY_GUI = 3
OTHERS = 4.
IF SY-SUBRC <> 0.
MESSAGE A037(ALSMEX).
ENDIF.
"PERFORM separated_to_intern_convert TABLES excel_tab intern USING ld_separator. 注意:标准函数调用这个FORM转换内表数据,使用麻烦
************ BEGIN 修改为以下的代码:*********************
FIELD-SYMBOLS:<DYN_FIELD>.
DATA: F_WA LIKE LINE OF EXCEL_TAB,
IT_DATA TYPE STRING OCCURS 0 WITH HEADER LINE.
LOOP AT EXCEL_TAB INTO F_WA.
SPLIT F_WA AT LD_SEPARATOR INTO TABLE IT_DATA .
LOOP AT IT_DATA .
CONDENSE IT_DATA.
ASSIGN COMPONENT SY-TABIX OF STRUCTURE INTERN TO <DYN_FIELD>.
<DYN_FIELD> = IT_DATA.
ENDLOOP.
IF INTERN IS NOT INITIAL.
APPEND INTERN.
CLEAR INTERN.
ENDIF.
ENDLOOP.
************ END 修改为以下的代码:*********************
* clear clipboard
REFRESH EXCEL_TAB.
CALL METHOD CL_GUI_FRONTEND_SERVICES=>CLIPBOARD_EXPORT
IMPORTING
DATA = EXCEL_TAB
CHANGING
RC = LD_RC
EXCEPTIONS
CNTL_ERROR = 1
* ERROR_NO_GUI = 2
* NOT_SUPPORTED_BY_GUI = 3
OTHERS = 4.
* quit Excel and free ABAP Object - unfortunately, this does not kill
* the Excel process
CALL METHOD OF APPLICATION 'QUIT'.
M_MESSAGE.
* >>>>> Begin of change note 575877
* to kill the Excel process it's necessary to free all used objects
FREE OBJECT H_CELL. M_MESSAGE.
FREE OBJECT H_CELL1. M_MESSAGE.
FREE OBJECT RANGE. M_MESSAGE.
FREE OBJECT WORKSHEET. M_MESSAGE.
FREE OBJECT WORKBOOK. M_MESSAGE.
FREE OBJECT APPLICATION. M_MESSAGE.
* <<<<< End of change note 575877
ENDFUNCTION.
SE37图
使用ZALSM_EXCEL_TO_INTERNAL_TABLE的例子:
*&---------------------------------------------------------------------*
*& report zsde0006
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
report zsde0006.
tables ztsd0026.
data gs_ztsd0026 like ztsd0026.
data gt_ztsd0026 like table of ztsd0026.
"ecxel数据定义
types :
begin of gs_t_excel,
doc_type like ztsd0026-doc_type,
sales_org like ztsd0026-sales_org,
distr_chan like ztsd0026-distr_chan,
division like ztsd0026-division,
req_date_h like ztsd0026-req_date_h,
partn_numb like ztsd0026-partn_numb,
name like ztsd0026-name,
material like ztsd0026-material,
maktx like ztsd0026-maktx,
xmlx like ztsd0026-xmlx,
pmnttrms like ztsd0026-pmnttrms,
plant like ztsd0026-plant,
ship_point like ztsd0026-ship_point,
req_qty like ztsd0026-req_qty,
zmodel like ztsd0026-zmodel,
zcolor like ztsd0026-zcolor,
zinterior like ztsd0026-zinterior,
zoptpack like ztsd0026-zoptpack,
text like ztsd0026-text,
excelid like ztsd0026-excelid,
end of gs_t_excel.
data gs_excel type gs_t_excel.
data gs_excel_check type gs_t_excel.
data gs_excel_temp type gs_t_excel.
data gt_excel type table of gs_t_excel.
data gt_excel_check type table of gs_t_excel.
"备注文本text零时表定义
types :
begin of gs_t_bztxt,
text like ztsd0026-text,
posnr TYPE posnr,
end of gs_t_bztxt.
data gs_bztxt type gs_t_bztxt.
data gt_bztxt type table of gs_t_bztxt.
"检查用
types :
begin of gs_t_field6,
doc_type like ztsd0026-doc_type,
sales_org like ztsd0026-sales_org,
distr_chan like ztsd0026-distr_chan,
division like ztsd0026-division,
req_date_h like ztsd0026-req_date_h,
end of gs_t_field6.
data gs_field6 type gs_t_field6.
data gt_field6 type table of gs_t_field6.
"BAPI 数据定义
DATA gs_header TYPE bapisdhd1.
DATA gt_partner TYPE TABLE OF bapiparnr.
DATA gs_partner TYPE bapiparnr.
DATA gv_posnr TYPE posnr. " 订单Item号
DATA gv_charact_cfgid TYPE cux_cfg_id.
DATA gv_charact_insid TYPE cu_inst_id.
DATA gt_item TYPE TABLE OF bapisditm.
DATA gs_item TYPE bapisditm.
DATA gv_etenr TYPE etenr. " 订单Schedule Line号
DATA gt_sl TYPE TABLE OF bapischdl.
DATA gs_sl TYPE bapischdl.
DATA gt_cfgins TYPE TABLE OF bapicuins.
DATA gs_cfgins TYPE bapicuins.
DATA gt_cfgref TYPE TABLE OF bapicucfg.
DATA gs_cfgref TYPE bapicucfg.
DATA gv_class TYPE cuib_objkey.
DATA gt_cfgval TYPE TABLE OF bapicuval.
DATA gs_cfgval TYPE bapicuval.
DATA gs_cha TYPE char70.
DATA gt_cha TYPE TABLE OF char70.
DATA gv_char50 TYPE char50.
DATA gv_vbeln TYPE vbeln. " SO凭证号
DATA gt_rc TYPE TABLE OF bapiret2.
DATA gs_rc TYPE bapiret2.
DATA gv_err_flag TYPE xfeld.
DATA ls_header TYPE thead.
data gt_line type table of tline.
data wa_line like tline.
selection-screen begin of block bk with frame title text-b02.
parameter:p_path like rlgrap-filename modif id md1.
selection-screen end of block bk.
DATA: functxt TYPE smp_dyntxt.
TABLES: sscrfields.
SELECTION-SCREEN: FUNCTION KEY 1,FUNCTION KEY 2."download template.
initialization.
functxt-icon_id = icon_xxl.
functxt-icon_text = text-002.
sscrfields-functxt_01 = functxt.
functxt-icon_id = ICON_SPOOL_REQUEST.
functxt-icon_text = text-003.
sscrfields-functxt_02 = functxt.
AT SELECTION-SCREEN.
CASE sscrfields-ucomm.
WHEN 'FC01'.
PERFORM frm_template_down.
WHEN 'FC02'.
SUBMIT ZSDR0026 VIA SELECTION-SCREEN.
ENDCASE.
at selection-screen on value-request for p_path.
perform frm_sel_file changing p_path.
start-of-selection.
perform frm_excel_import.
FORM frm_template_down .
DATA: lv_filename TYPE string,
lv_path TYPE string,
lv_fullpath TYPE string,
lv_user_action TYPE i,
lv_destination TYPE rlgrap-filename,
ls_objdata TYPE wwwdatatab,
lv_objid TYPE wwwdatatab-objid,
lv_rc TYPE sy-subrc.
lv_filename = 'Template Download'.
CONCATENATE sy-datum '-' sy-uzeit '-' lv_filename INTO lv_filename.
IF lv_user_action <> 9.
SELECT SINGLE relid objid
FROM wwwdata
INTO CORRESPONDING FIELDS OF ls_objdata
WHERE srtf2 = 0
AND objid = 'ZSDE0006'
AND relid = 'MI'.
IF sy-subrc = 0.
CLEAR lv_rc.
CALL FUNCTION 'DOWNLOAD_WEB_OBJECT'
EXPORTING
key = ls_objdata
destination = lv_destination
IMPORTING
rc = lv_rc
* CHANGING
* TEMP =
.
IF lv_rc EQ 0 .
MESSAGE 'Template download sucessful.' TYPE 'S'.
ELSE.
MESSAGE 'The template is not exit.' TYPE 'S' DISPLAY LIKE 'E'.
ENDIF.
ELSE.
MESSAGE 'The template is not exit.' TYPE 'S' DISPLAY LIKE 'E'.
ENDIF.
ENDIF.
ENDFORM. " FRM_TEMPLATE_DOWN.
*&---------------------------------------------------------------------*
*& form frm_sel_file
*&---------------------------------------------------------------------*
* text 选择文件
*----------------------------------------------------------------------*
form frm_sel_file changing po_path.
data:
lt_filetable type filetable,
ls_filetable type file_table,
lv_rc type sy-subrc,
lv_filename type string,
lv_initial_path type string value 'c:\'.
clear lv_filename.
lv_filename = p_path.
call method cl_gui_frontend_services=>file_open_dialog
exporting
default_filename = lv_filename
initial_directory = lv_initial_path
changing
file_table = lt_filetable
rc = lv_rc
exceptions
file_open_dialog_failed = 1
cntl_error = 2
error_no_gui = 3
not_supported_by_gui = 4.
if sy-subrc ne 0 or lv_rc lt 0.
message '上传文件选择失败' TYPE 'I'."上传文件选择失败
else.
if lv_rc = 1.
read table lt_filetable into ls_filetable index 1.
po_path = ls_filetable-filename.
else.
exit.
endif.
endif.
endform.
*&---------------------------------------------------------------------*
*& form frm_excel_import
*&---------------------------------------------------------------------*
* text 读取excel文件
*----------------------------------------------------------------------*
form frm_excel_import.
data cl_ex type ref to cx_root.
check p_path is not initial.
try .
call function 'ZALSM_EXCEL_TO_INTERNAL_TABLE'
exporting
filename = p_path
i_begin_col = 1
i_begin_row = 3
i_end_col = 21
i_end_row = 5000
* sheet_name =
tables
intern = gt_excel
exceptions
inconsistent_parameters = 1
upload_ole = 2
others = 3.
catch cx_root into cl_ex.
message cl_ex->get_text( ) TYPE 'I' .
endtry.
*gs_excel-PARTN_NUMB. "客户编码
*gs_excel-MATERIAL. "物料
*gs_excel-ZMODEL. "基本车型
*gs_excel-ZCOLOR. "外饰
*gs_excel-ZINTERIOR. "内饰
*gs_excel-ZOPTPACK. "选装包
sort gt_excel by PARTN_NUMB .
DATA n type i VALUE 0.
"按表头字段检查,分类
gt_excel_check = gt_excel .
loop at gt_excel_check into gs_excel_check.
gs_field6-doc_type = gs_excel_check-doc_type. " 订单类型
gs_field6-sales_org = gs_excel_check-sales_org. " 销售组织
gs_field6-distr_chan = gs_excel_check-distr_chan. " 分销渠道
gs_field6-division = gs_excel_check-division. " 产品组
gs_field6-REQ_DATE_H = gs_excel_check-REQ_DATE_H. "请求交货日期
APPEND gs_field6 TO gt_field6.
AT END OF PARTN_NUMB.
DELETE ADJACENT DUPLICATES FROM gt_field6.
DESCRIBE TABLE gt_field6 LINES n.
IF n <> 1.
write :/ gs_excel_check-PARTN_NUMB && ' 多行表头数据必须相同!'.
RETURN.
ENDIF.
ENDAT.
endloop.
"行项目号初始化
gv_posnr = '000000'.
gv_etenr = '0000'.
gv_charact_cfgid = '000000'.
gv_charact_insid = '00000001'.
loop at gt_excel into gs_excel.
"so header
gs_header-doc_type = gs_excel-doc_type. " 订单类型
gs_header-sales_org = gs_excel-sales_org. " 销售组织
gs_header-distr_chan = gs_excel-distr_chan. " 分销渠道
gs_header-division = gs_excel-division. " 产品组
gs_header-REQ_DATE_H = gs_excel-REQ_DATE_H. "请求交货日期
"so partner
gs_partner-partn_numb = gs_excel-PARTN_NUMB.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = gs_partner-partn_numb
IMPORTING
OUTPUT = gs_partner-partn_numb. "'0011000001'.
gs_partner-partn_role = 'AG'.
APPEND gs_partner TO gt_partner.
"so item
gv_posnr = gv_posnr + 10.
gs_item-itm_number = gv_posnr.
gs_item-material = gs_excel-material . "物料
gs_item-plant = gs_excel-plant. "工厂
gs_item-ship_point = gs_excel-ship_point. "装运点、接收点
gs_item-pmnttrms = gs_excel-pmnttrms.
gs_item-po_itm_no = gv_posnr. "注意这个参数,有增强需要这个参数
append gs_item to gt_item.
"so Schedule Lines
gv_etenr = gv_etenr + 1.
gs_sl-itm_number = gv_posnr.
gs_sl-req_qty = gs_excel-REQ_QTY. "数量
gs_sl-sched_line = gv_etenr.
APPEND gs_sl TO gt_sl.
"bztxt 先存起来
gs_bztxt-text = gs_excel-text.
gs_bztxt-posnr = gv_posnr.
APPEND gs_bztxt TO gt_bztxt.
" Step2.2. Characteristic - Reference
* IF ls_ibp_prod-zmodel IS NOT INITIAL. " 如果是VC物料
gv_charact_cfgid = gv_charact_cfgid + 1.
gs_cfgref-posex = gv_posnr.
gs_cfgref-config_id = gv_charact_cfgid.
gs_cfgref-root_id = gv_charact_insid.
APPEND gs_cfgref TO gt_cfgref.
" Step2.3. Characteristic - Instance
gs_cfgins-config_id = gv_charact_cfgid.
gs_cfgins-inst_id = gv_charact_insid.
gs_cfgins-obj_type = 'MARA'.
gs_cfgins-class_type = '300'.
gs_cfgins-obj_key = gv_class.
APPEND gs_cfgins TO gt_cfgins.
gv_char50 = gs_excel-material.
" Step2.4. Characteristic - Values
PERFORM _frm_charact_values USING gs_excel-ZMODEL gv_charact_cfgid
gv_charact_insid gv_char50
'ZDP_0001_MODEL'
CHANGING gs_cfgval.
APPEND gs_cfgval TO gt_cfgval.
PERFORM _frm_charact_values USING gs_excel-ZCOLOR gv_charact_cfgid
gv_charact_insid gv_char50
'ZDP_0001_COLOR'
CHANGING gs_cfgval.
APPEND gs_cfgval TO gt_cfgval.
PERFORM _frm_charact_values USING gs_excel-ZINTERIOR gv_charact_cfgid
gv_charact_insid gv_char50
'ZDP_0001_INTERI'
CHANGING gs_cfgval.
APPEND gs_cfgval TO gt_cfgval.
SPLIT gs_excel-ZOPTPACK AT '_' INTO TABLE gt_cha.
LOOP AT gt_cha INTO gs_cha.
PERFORM _frm_charact_values USING gs_cha gv_charact_cfgid
gv_charact_insid gv_char50
'ZDP_0001_OPTPAC'
CHANGING gs_cfgval.
APPEND gs_cfgval TO gt_cfgval.
ENDLOOP.
gs_excel_temp = gs_excel. "后面AT END OF 会把工作区的字符变成*,这里要先缓存一下
AT END OF PARTN_NUMB. "如果后面的数据有变化了,现在执行这些行项目产生SO
CALL FUNCTION 'BAPI_SALESORDER_CREATEFROMDAT2'
EXPORTING
order_header_in = gs_header
IMPORTING
salesdocument = gv_vbeln
TABLES
return = gt_rc
order_items_in = gt_item
order_partners = gt_partner
order_schedules_in = gt_sl
order_cfgs_ref = gt_cfgref
order_cfgs_inst = gt_cfgins
order_cfgs_value = gt_cfgval.
LOOP AT gt_rc INTO gs_rc WHERE type CA 'EA'.
gv_err_flag = abap_on.
ENDLOOP.
IF gv_err_flag IS INITIAL. " Success
call function 'BAPI_TRANSACTION_COMMIT'
exporting
wait = 'X'.
commit work .
loop at gt_bztxt into gs_bztxt.
ls_header-tdobject = 'VBBP'.
ls_header-tdid = '0001'.
ls_header-tdspras = 'E'. "英语!
ls_header-tdname = gv_vbeln && gs_bztxt-posnr. "采购订单号加行项目号,应该是后台有配置
wa_line-tdline = gs_bztxt-TEXT.
wa_line-tdformat = '*'.
append wa_line to gt_line.
"先删除!
CALL FUNCTION 'DELETE_TEXT'
EXPORTING
id = ls_header-tdid
language = sy-langu
NAME = ls_header-tdname
OBJECT = ls_header-tdobject
EXCEPTIONS
NOT_FOUND = 1
OTHERS = 2.
CALL FUNCTION 'DELETE_TEXT'
EXPORTING
id = ls_header-tdid
language = 'E' "英语!
NAME = ls_header-tdname
OBJECT = ls_header-tdobject
EXCEPTIONS
NOT_FOUND = 1
OTHERS = 2.
"再save
CALL FUNCTION 'SAVE_TEXT'
EXPORTING
header = ls_header
savemode_direct = 'X'
TABLES
lines = gt_line
EXCEPTIONS
id = 1
language = 2
name = 3
object = 4
OTHERS = 5.
clear gt_line[].
endloop.
data ss like bapiret2-message.
data gv_long(200) type c.
loop at gt_rc into gs_rc.
call function 'MESSAGE_TEXT_BUILD'
exporting
msgid = gs_rc-id
msgnr = gs_rc-number
msgv1 = gs_rc-message_v1
msgv2 = gs_rc-message_v2
msgv3 = gs_rc-message_v3
msgv4 = gs_rc-message_v4
importing
message_text_output = ss.
gv_long = gv_long && '(' && sy-tabix && ')' && '[' && gs_rc-type && ']' && ss .
endloop.
write:/ gv_long.
"得到一个uuid为主键,保证每一条数据主键不同,可以从内表写入到透明表
gs_ztsd0026-uuid = cl_uuid_factory=>create_system_uuid( )->create_uuid_c32( ).
gs_ztsd0026-ADNAM = sy-uname. "用户名
gs_ztsd0026-ADDAT = sy-datum. "日期
gs_ztsd0026-ADTIM = sy-uzeit. "时间
gs_ztsd0026-excelid = gs_excel_temp-excelid.
gs_ztsd0026-DOC_TYPE = gs_excel_temp-DOC_TYPE.
gs_ztsd0026-SALES_ORG = gs_excel_temp-SALES_ORG.
gs_ztsd0026-DISTR_CHAN = gs_excel_temp-DISTR_CHAN.
gs_ztsd0026-DIVISION = gs_excel_temp-DIVISION.
gs_ztsd0026-REQ_DATE_H = gs_excel_temp-REQ_DATE_H.
gs_ztsd0026-PARTN_NUMB = gs_excel_temp-PARTN_NUMB.
gs_ztsd0026-NAME = gs_excel_temp-NAME.
gs_ztsd0026-MATERIAL = gs_excel_temp-MATERIAL.
gs_ztsd0026-MAKTX = gs_excel_temp-MAKTX.
gs_ztsd0026-XMLX = gs_excel_temp-XMLX.
gs_ztsd0026-PMNTTRMS = gs_excel_temp-PMNTTRMS.
gs_ztsd0026-PLANT = gs_excel_temp-PLANT.
gs_ztsd0026-SHIP_POINT = gs_excel_temp-SHIP_POINT.
gs_ztsd0026-REQ_QTY = gs_excel_temp-REQ_QTY.
gs_ztsd0026-ZMODEL = gs_excel_temp-ZMODEL.
gs_ztsd0026-ZCOLOR = gs_excel_temp-ZCOLOR.
gs_ztsd0026-ZINTERIOR = gs_excel_temp-ZINTERIOR.
gs_ztsd0026-ZOPTPACK = gs_excel_temp-ZOPTPACK.
gs_ztsd0026-TEXT = gs_excel_temp-TEXT.
gs_ztsd0026-VBELN = gv_vbeln.
gs_ztsd0026-STATUS = 'S'.
gs_ztsd0026-message = gv_long.
modify ztsd0026 from gs_ztsd0026.
CLEAR: gv_err_flag,gs_rc.
clear: gv_long,gs_excel,gs_ztsd0026, gs_header,gv_vbeln,gt_rc[],gt_item[],gt_partner[],gt_sl[],gt_cfgref[],gt_cfgins[],gt_cfgval[],gt_line[],
gt_bztxt[],gs_bztxt.
"行项目号初始化
gv_posnr = '000000'.
gv_etenr = '0000'.
gv_charact_cfgid = '000000'.
gv_charact_insid = '00000001'.
ELSE. "Fail
loop at gt_rc into gs_rc.
call function 'MESSAGE_TEXT_BUILD'
exporting
msgid = gs_rc-id
msgnr = gs_rc-number
msgv1 = gs_rc-message_v1
msgv2 = gs_rc-message_v2
msgv3 = gs_rc-message_v3
msgv4 = gs_rc-message_v4
importing
message_text_output = ss.
gv_long = gv_long && '(' && sy-tabix && ')' && '[' && gs_rc-type && ']' && ss .
endloop.
write:/ gv_long.
"得到一个uuid为主键,保证每一条数据主键不同,可以从内表写入到透明表
gs_ztsd0026-uuid = cl_uuid_factory=>create_system_uuid( )->create_uuid_c32( ).
gs_ztsd0026-ADNAM = sy-uname. "用户名
gs_ztsd0026-ADDAT = sy-datum. "日期
gs_ztsd0026-ADTIM = sy-uzeit. "时间
gs_ztsd0026-excelid = gs_excel_temp-excelid.
gs_ztsd0026-DOC_TYPE = gs_excel_temp-DOC_TYPE.
gs_ztsd0026-SALES_ORG = gs_excel_temp-SALES_ORG.
gs_ztsd0026-DISTR_CHAN = gs_excel_temp-DISTR_CHAN.
gs_ztsd0026-DIVISION = gs_excel_temp-DIVISION.
gs_ztsd0026-REQ_DATE_H = gs_excel_temp-REQ_DATE_H.
gs_ztsd0026-PARTN_NUMB = gs_excel_temp-PARTN_NUMB.
gs_ztsd0026-NAME = gs_excel_temp-NAME.
gs_ztsd0026-MATERIAL = gs_excel_temp-MATERIAL.
gs_ztsd0026-MAKTX = gs_excel_temp-MAKTX.
gs_ztsd0026-XMLX = gs_excel_temp-XMLX.
gs_ztsd0026-PMNTTRMS = gs_excel_temp-PMNTTRMS.
gs_ztsd0026-PLANT = gs_excel_temp-PLANT.
gs_ztsd0026-SHIP_POINT = gs_excel_temp-SHIP_POINT.
gs_ztsd0026-REQ_QTY = gs_excel_temp-REQ_QTY.
gs_ztsd0026-ZMODEL = gs_excel_temp-ZMODEL.
gs_ztsd0026-ZCOLOR = gs_excel_temp-ZCOLOR.
gs_ztsd0026-ZINTERIOR = gs_excel_temp-ZINTERIOR.
gs_ztsd0026-ZOPTPACK = gs_excel_temp-ZOPTPACK.
gs_ztsd0026-TEXT = gs_excel_temp-TEXT.
gs_ztsd0026-VBELN = gv_vbeln.
gs_ztsd0026-STATUS = 'E'.
gs_ztsd0026-message = gv_long.
modify ztsd0026 from gs_ztsd0026.
CLEAR: gv_err_flag,gs_rc.
clear: gv_long,gs_excel,gs_ztsd0026, gs_header,gv_vbeln,gt_rc[],gt_item[],gt_partner[],gt_sl[],gt_cfgref[],gt_cfgins[],gt_cfgval[],gt_line[],
gt_bztxt[],gs_bztxt.
"行项目号初始化
gv_posnr = '000000'.
gv_etenr = '0000'.
gv_charact_cfgid = '000000'.
gv_charact_insid = '00000001'.
ENDIF.
ENDAT.
endloop.
SUBMIT ZSDR0026 .
ENDFORM.
FORM _frm_charact_values USING iv_charact_value TYPE char70
iv_charact_cfgid TYPE cux_cfg_id
iv_charact_insid TYPE cu_inst_id
iv_prodcut TYPE cuib_objkey
iv_zdp_00001 TYPE zz_config_key
CHANGING is_cfgval TYPE bapicuval.
CLEAR is_cfgval.
DATA iv_data TYPE char32.
CALL METHOD zcl_ca_tools=>get_hc_single
EXPORTING
iv_config_key = iv_zdp_00001
IMPORTING
ev_single = iv_data
EXCEPTIONS
dynamic_error = 1
OTHERS = 2.
IF sy-subrc <> 0.
" .......
ENDIF.
is_cfgval-config_id = iv_charact_cfgid.
is_cfgval-inst_id = iv_charact_insid.
is_cfgval-value = iv_charact_value.
CONCATENATE iv_prodcut '_' iv_data INTO is_cfgval-charc.
ENDFORM.
未完。。。