SAP-LS01N批量扩充仓位_第1页
SAP-LS01N批量扩充仓位_第2页
SAP-LS01N批量扩充仓位_第3页
SAP-LS01N批量扩充仓位_第4页
SAP-LS01N批量扩充仓位_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论