版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
SAPLS01N批量扩充仓位2022.03.28介绍在实际需求业务中,通SAP标准事务码LS01N来扩充仓位,一个一个扩展太慢,通过BDC录屏技术,导入EXCEL来批量扩充仓位节省效率模版如图ALV导入界面代码*&---------------------------------------------------------------------*
*&
Report
ZFDMM014
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT
zfdmm014.
TABLES:sscrfields.
INCLUDE
<icon>.
*&-----------------------------------------------------------------------
*&
数据类型定义
*&-----------------------------------------------------------------------
TYPES
:BEGIN
OF
typ_contract,
lgnum
LIKE
lagp-lgnum,
lgtyp
LIKE
lagp-lgtyp,
lgpla
LIKE
lagp-lgpla,
"物料号
lgber
LIKE
lagp-lgber,
"物料描述
lptyp
LIKE
lagp-lptyp,
"销售订单
lgewi
LIKE
lagp-lgewi,
"行项目
lkapv
LIKE
lagp-lkapv,
status
TYPE
icon_d
,
"
'@08@'.
"绿灯
'@0A@'.
"红灯
icon_msg(220),
END
OF
typ_contract.
*&-----------------------------------------------------------------------
*&
内表和结构定义
*&-----------------------------------------------------------------------
DATA:it_contract
TYPE
TABLE
OF
typ_contract,
"EXCEL模板导入数据内表
wa_contract
TYPE
typ_contract.
DATA:
bdcdata
LIKE
bdcdata
OCCURS
0
WITH
HEADER
LINE.
DATA:
messtab
LIKE
bdcmsgcoll
OCCURS
0
WITH
HEADER
LINE,
pmode
TYPE
char1
VALUE
'N',
pupdate
TYPE
char1
VALUE
'S'.
DATA:
t_log
LIKE
TABLE
OF
ztfdmm014_log
WITH
HEADER
LINE.
****ALV相关定义
TYPE-POOLS:
slis.
DATA:
it_fields
TYPE
lvc_t_fcat.
DATA:
wa_fields
TYPE
lvc_s_fcat.
DATA:
f_repid
LIKE
sy-repid.
DATA:
f_title
TYPE
lvc_title.
f_repid
=
sy-repid.
DATA:
gs_layout
TYPE
lvc_s_layo.
DEFINE
populate.
wa_fields-fieldname
=
&1.
wa_fields-scrtext_m
=
&2.
wa_fields-no_zero
=
&3.
wa_fields-outputlen
=
&4.
APPEND
wa_fields
TO
it_fields.
CLEAR
wa_fields.
END-OF-DEFINITION.
*&-----------------------------------------------------------------------
*&
全局变量定义
*&-----------------------------------------------------------------------
DATA:
g_rcode(1)
TYPE
c.
"判断文件是否存在返回值
DATA:objdata
LIKE
wwwdatatab
VALUE
'MIZFDMM014'."模板名称前缀mi
*&-----------------------------------------------------------------------
*&
SELECT
SCREEN
*&-----------------------------------------------------------------------
SELECTION-SCREEN
BEGIN
OF
BLOCK
bl02
WITH
FRAME
TITLE
TEXT-002.
*
输入导入文件的路径
PARAMETERS:
p_path
LIKE
rlgrap-filename
MODIF
ID
b02
DEFAULT
'C:\Users\Administrator\Desktop\福载仓位导入模板.xlsx'.
"
DEFAULT
'C:\PO.xls'
SELECTION-SCREEN
END
OF
BLOCK
bl02.
SELECTION-SCREEN
FUNCTION
KEY
1.
"下载模板按钮
*&---------------------------------------------------------------------
*&
AT
SELECTION-SCREEN
*&---------------------------------------------------------------------
AT
SELECTION-SCREEN
OUTPUT.
sscrfields-functxt_01
=
'@49@下载模板'.
AT
SELECTION-SCREEN
ON
VALUE-REQUEST
FOR
p_path.
*
从本机取文件
CALL
FUNCTION
'F4_FILENAME'
EXPORTING
field_name
=
'P_PATH'
IMPORTING
file_name
=
p_path.
AT
SELECTION-SCREEN.
IF
sscrfields-ucomm
=
'FC01'.
PERFORM
frm_down_template
USING
objdata
'福载仓位导入模板'.
"下载导入数据模板(模板名称)
ENDIF.
*&---------------------------------------------------------------------
*&
INITIALIZATION
*&---------------------------------------------------------------------
INITIALIZATION.
*----------------------------------------------------------------------
*&
START-OF-SELECTION
*&---------------------------------------------------------------------
START-OF-SELECTION.
*检查文件是否存在
CALL
FUNCTION
'WS_QUERY'
EXPORTING
filename
=
p_path
query
=
'FE'
IMPORTING
return
=
g_rcode
EXCEPTIONS
inv_query
=
01
no_batch
=
02.
IF
g_rcode
=
'0'.
"
文件不存在,给出相关提示信息。
MESSAGE
'文件不存在,请检查文件名'
TYPE
'I'.
EXIT.
ENDIF.
*从excel中读取数据
PERFORM
sub_read_file.
*数据处理
PERFORM
sub_data_process.
*&-----------------------------------------------------------------------
*&
END-OF-SELECTION.
*&-----------------------------------------------------------------------
END-OF-SELECTION.
PERFORM
sub_frm_alv.
"ALV显示处理
*&---------------------------------------------------------------------*
*&
Form
FRM_DOWN_TEMPLATE
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
*
-->
p1
text
*
<--
p2
text
*----------------------------------------------------------------------*
FORM
frm_down_template
USING
objdata
LIKE
wwwdatatab
file_name
TYPE
string.
DATA:
l_filename
TYPE
string,
"
文件名
l_path
TYPE
string,
"
路径
l_fullpath
TYPE
string.
"
全路径
DATA:
lw_template
TYPE
wwwdatatab,
"WEB资源库文件信息
li_mime
TYPE
STANDARD
TABLE
OF
w3mime.
"二进制数据内表
"DATA:
FILE_NAME
TYPE
STRING
.
DATA
zmessage
TYPE
string.
CLEAR:l_filename,l_path,l_fullpath.
CALL
METHOD
cl_gui_frontend_services=>file_save_dialog
"保存文件路径对话框
EXPORTING
window_title
=
'请选择保存路径'
default_extension
=
'xlsx'
default_file_name
=
file_name
*
WITH_ENCODING
=
file_filter
=
'Excel
文件
(*.XLSX)'
"|*.xlsx'
initial_directory
=
'C:\'
*
PROMPT_ON_OVERWRITE
=
'X'
CHANGING
filename
=
l_filename
path
=
l_path
fullpath
=
l_fullpath
*
USER_ACTION
=
*
file_encoding
=
EXCEPTIONS
cntl_error
=
1
error_no_gui
=
2
not_supported_by_gui
=
3
OTHERS
=
4.
IF
l_filename
IS
NOT
INITIAL.
IF
l_filename
NP
'*.XLSX'.
"如果文件类型后缀不是XLS,则增加XLS后缀
CONCATENATE
l_filename
'.xlsx'
INTO
l_filename.
CONCATENATE
l_fullpath
'.xlsx'
INTO
l_fullpath.
ENDIF.
DATA:li_rc
LIKE
sy-subrc,
"lo_objdata
LIKE
wwwdatatab,
ls_destination
LIKE
rlgrap-filename.
ls_destination
=
l_fullpath.
"lo_objdata
=
'MIZMMR017'.
CALL
FUNCTION
'DOWNLOAD_WEB_OBJECT'
EXPORTING
key
=
objdata
destination
=
ls_destination
"
L_FULLPATH
IMPORTING
rc
=
li_rc.
IF
sy-subrc
<>
0.
MESSAGE
'导出模板文件失败!'
TYPE
'E'.
ELSE.
CONCATENATE
'下载模板成功!'
l_fullpath
INTO
zmessage.
MESSAGE
zmessage
TYPE
'S'.
ENDIF.
ELSE.
MESSAGE
'导出模板文件失败!'
TYPE
'E'.
ENDIF.
ENDFORM.
"
FRM_DOWN_TEMPLATE
*&---------------------------------------------------------------------*
*&
Form
SUB_READ_FILE
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
*
-->
p1
text
*
<--
p2
text
*----------------------------------------------------------------------*
FORM
sub_read_file
.
DATA
:
l_intern
TYPE
zalsmex_tabline
OCCURS
0
WITH
HEADER
LINE.
DATA
:
l_index
TYPE
i.
DATA
:
l_index1
TYPE
i.
FIELD-SYMBOLS
:
<field>.
*读取EXCEL信息
CALL
FUNCTION
'ZALSM_EXCEL_TO_INTERNAL_TABLE'
EXPORTING
filename
=
p_path
i_begin_col
=
'1'
i_begin_row
=
'5'
i_end_col
=
'7'
i_end_row
=
'65536'
TABLES
intern
=
l_intern
EXCEPTIONS
inconsistent_parameters
=
1
upload_ole
=
2
OTHERS
=
3.
IF
sy-subrc
<>
0.
MESSAGE
ID
sy-msgid
TYPE
'I'
NUMBER
sy-msgno
WITH
sy-msgv1
sy-msgv2
sy-msgv3
sy-msgv4.
ENDIF.
*生成内表
SORT
l_intern
BY
row
col.
LOOP
AT
l_intern.
IF
l_intern-col
<=
7.
MOVE
l_intern-col
TO
l_index.
ASSIGN
COMPONENT
l_index
OF
STRUCTURE
wa_contract
TO
<field>.
MOVE
l_intern-value
TO
<field>
.
ENDIF.
AT
END
OF
row.
APPEND
wa_contract
TO
it_contract.
CLEAR
wa_contract.
ENDAT.
ENDLOOP.
IF
it_contract[]
IS
INITIAL.
MESSAGE
e001(00)
WITH
'没有相关数据!'
.
EXIT.
ELSE.
ENDIF.
ENDFORM.
"
SUB_READ_FILE
*&---------------------------------------------------------------------*
*&
Form
SUB_DATA_PROCESS
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
*
-->
p1
text
*
<--
p2
text
*----------------------------------------------------------------------*
FORM
sub_data_process
.
LOOP
AT
it_contract
INTO
wa_contract.
wa_contract-status
=
icon_led_green.
IF
wa_contract-lgewi
IS
INITIAL.
wa_contract-status
=
icon_led_red.
wa_contract-icon_msg
=
'最大重量不能为空值!'.
ENDIF.
IF
wa_contract-lgnum
IS
INITIAL.
wa_contract-status
=
icon_led_red.
wa_contract-icon_msg
=
'仓库号不能为空值!'.
ENDIF.
IF
wa_contract-lgtyp
IS
INITIAL.
wa_contract-status
=
icon_led_red.
wa_contract-icon_msg
=
'仓储类型不能为空值!'.
ENDIF.
IF
wa_contract-lgpla
IS
INITIAL.
wa_contract-status
=
icon_led_red.
wa_contract-icon_msg
=
'仓位不能为空值!'.
ENDIF.
IF
wa_contract-lgber
IS
INITIAL.
wa_contract-status
=
icon_led_red.
wa_contract-icon_msg
=
'存储区不能为空值!'.
ENDIF.
IF
wa_contract-lptyp
IS
INITIAL.
wa_contract-status
=
icon_led_red.
wa_contract-icon_msg
=
'仓位类型不能为空值!'.
ENDIF.
IF
wa_contract-lkapv
IS
INITIAL.
wa_contract-status
=
icon_led_red.
wa_contract-icon_msg
=
'总重量不能为空值!'.
ENDIF.
MODIFY
it_contract
FROM
wa_contract.
CLEAR
wa_contract.
ENDLOOP.
ENDFORM.
"
SUB_DATA_PROCESS
*&---------------------------------------------------------------------*
*&
Form
SUB_FRM_ALV
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
*
-->
p1
text
*
<--
p2
text
*----------------------------------------------------------------------*
FORM
sub_frm_alv.
gs_layout-totals_bef
=
'X'.
gs_layout-zebra
=
'X'."颜色交替
gs_layout-no_toolbar
=
''.
*
GS_LAYOUT-CWIDTH_OPT
=
'X'."自动优化列宽
populate
'STATUS'
'状态'
''
'5'.
populate
'LGNUM'
'仓库号'
''
'8'.
populate
'LGTYP'
'仓储类型'
''
'8'.
populate
'LGPLA'
'仓位'
''
'10'.
populate
'LGBER'
'存储区'
''
'10'.
populate
'LPTYP'
'仓位类型'
''
'8'.
populate
'LGEWI'
'最大重量'
''
'12'.
populate
'LKAPV'
'总重量'
''
'12'.
populate
'ICON_MSG'
'消息'
''
'50'.
CALL
FUNCTION
'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
percentage
=
100
text
=
'正在进行数据处理,请稍等...'.
CALL
FUNCTION
'REUSE_ALV_GRID_DISPLAY_LVC'
EXPORTING
i_callback_program
=
f_repid
i_grid_title
=
f_title
is_layout_lvc
=
gs_layout
it_fieldcat_lvc
=
it_fields
i_callback_pf_status_set
=
'FRM_STATUS_SET'
"
gui
i_callback_user_command
=
'FRM_USER_COMMAND'
"用户事件
TABLES
t_outtab
=
it_contract[].
ENDFORM.
"
SUB_ALV_DISPLAY
*&---------------------------------------------------------------------*
*&
Form
FRM_STATUS_SET
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
*
-->EXTAB
text
*----------------------------------------------------------------------*
FORM
frm_status_set
USING
extab
TYPE
slis_t_extab.
SET
PF-STATUS
'ZFDMM014'.
*
SET
TITLEBAR
'FF'.
ENDFORM.
"FRM_STATUS_SET
*&---------------------------------------------------------------------*
*&
Form
FRM_USER_COMMAND
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
*
-->R_UCOMM
text
*
-->RS_SELFIELD
text
*----------------------------------------------------------------------*
FORM
frm_user_command
USING
r_ucomm
LIKE
sy-ucomm
rs_selfield
TYPE
slis_selfield.
DATA:l_lgewi
TYPE
char15.
DATA:l_lkapv
TYPE
char15.
*
检查用户的操作
CASE
r_ucomm.
WHEN
'SAVE'.
READ
TABLE
it_contract
INTO
wa_contract
WITH
KEY
status
=
icon_led_red.
IF
sy-subrc
=
0.
MESSAGE
'有错误的行未处理,请先处理再导入!'
TYPE
'S'
DISPLAY
LIKE
'E'.
EXIT.
ELSE.
CLEAR
wa_contract.
ENDIF.
REFRESH
t_log.
LOOP
AT
it_contract
INTO
wa_contract.
CLEAR
l_lkapv.
CLEAR
l_lgewi.
REFRESH
bdcdata.
REFRESH
messtab.
PERFORM
bdc_dynpro
USING
'SAPML01S'
'0400'.
PERFORM
bdc_field
USING
'BDC_OKCODE'
'/00'.
PERFORM
bdc_field
USING
'LAGP-LGNUM'
wa_contract-lgnum.
PERFORM
bdc_field
USING
'LAGP-LGTYP'
wa_contract-lgtyp.
PERFORM
bdc_field
USING
'LAGP-LGPLA'
wa_contract-lgpla.
PERFORM
bdc_dynpro
USING
'SAPML01S'
'0400'.
PERFORM
bdc_field
USING
'BDC_OKCODE'
'=BU'.
PERFORM
bdc_field
USING
'LAGP-LGNUM'
wa_contract-lgnum.
PERFORM
bdc_field
USING
'LAGP-LGTYP'
wa_contract-lgtyp.
PERFORM
bdc_field
USING
'LAGP-LGPLA'
wa_contract-lgpla.
PERFORM
bdc_field
USING
'LAGP-LGBER'
wa_contract-lgber.
PERFORM
bdc_field
USING
'LAGP-LPTYP'
wa_contract-lptyp.
l_lgewi
=
wa_contract-lgewi.
CONDENSE
l_lgewi.
PERFORM
bdc_field
USING
'LAGP-LGEWI'
l_lgewi.
l_lkapv
=
wa_contract-lkapv.
CONDENSE
l_lkapv.
PERFORM
bdc_field
USING
'LAGP-LKAPV'
l_lkapv.
DATA:lv_msg
TYPE
string.
CALL
TRANSACTION
'LS01N'
USING
bdcdata
MODE
pmode
UPDATE
pupdate
MESSAGES
INTO
messtab.
LOOP
AT
messtab
WHERE
msgtyp
=
'E'
OR
msgtyp
=
'W'.
CALL
FUNCTION
'FORMAT_MESSAGE'
EXPORTING
id
=
messtab-msgid
lang
=
'1'
no
=
messtab-msgnr
v1
=
messtab-msgv1
v2
=
messtab-msgv2
v3
=
messtab-msgv3
v4
=
messtab-msgv4
IMPORTIN
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年云南客运急救考试试题
- 2024年玉树小型客运从业资格证试题答案
- 2024年湘潭客运上岗证模拟考试题
- 2024年特色风味及小吃服务合作协议书
- 2024年镍压延加工材项目发展计划
- 《 内蒙古牧区家畜粪砖利用及其温室气体排放效应研究》范文
- 2024年集群通信系统(数字)项目建议书
- 2024年杀虫杀螨混剂项目建议书
- 2024年医学诊断服务项目建议书
- 执业药师药事管理与法规模拟题445
- 黑色三分钟生死一瞬间事故案例具体情况分类别 一至七部
- 苏教版数学五年级上册全册教学反思(版本1)
- 家政公司收费模板
- 射频导管消融治疗快速心律失常指南(修订版)
- 房屋建筑回填土施工常见质量缺陷与应对措施
- 【心得】观摩《泉州市温陵实验幼儿园东海园区》有感
- 工程变更签证单范本
- 气排球裁判法(文字)
- 最新环保综合知识试题题库
- 高速公路路基土石方工程施工组织设计方案(最新版)
- 硝化纤维素的工艺设计——硝化工序的工艺设计毕业论文
评论
0/150
提交评论