批量上传固定Bin映射

2020-08-16 22:25发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


大家好

有什么方法可以使用CSV文件等定义固定的bin映射? 我知道交易/scwm/binmat,但是在这里我们不能通过csv等上传所有固定的垃圾箱,也不能使用第一次发布将产品固定到垃圾箱的配置。 但是我正在寻找csv文件上传,就像在EWM中存储仓和库存上传一样。

谢谢

Sasidhar Gupta

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


大家好

有什么方法可以使用CSV文件等定义固定的bin映射? 我知道交易/scwm/binmat,但是在这里我们不能通过csv等上传所有固定的垃圾箱,也不能使用第一次发布将产品固定到垃圾箱的配置。 但是我正在寻找csv文件上传,就像在EWM中存储仓和库存上传一样。

谢谢

Sasidhar Gupta

付费偷看设置
发送
10条回答
大简至美
1楼 · 2020-08-16 22:52.采纳回答

你好

我在标准/scwm/binmat中添加了一个"上传"按钮以读取csv文件,之后我尝试解析数据并将其附加到alv网格表中。

但是它实际上并不能正常工作,我仍然无法引发check_data事件来验证插入的行。 嗨,这是我的代码...

"&FILE&UPLOAD"时。

调用功能'WS_FILENAME_GET'

导出

MASK ='* .csv'"',*。*,*。'

MODE ='O'

导入

FILENAME = P_FILE

例外情况

INV_WINSYS = 1

NO_BATCH = 2

SELECTION_CANCEL = 3

SELECTION_ERROR = 4

其他= 5。

调用功能'GUI_UPLOAD'

导出

FILENAME = P_FILE

FILETYPE ='ASC'

HAS_FIELD_SEPARATOR ='X'

READ_BY_LINE ='X'

表格

DATA_TAB = lt_data

例外情况

FILE_OPEN_ERROR = 1

FILE_READ_ERROR = 2

NO_BATCH = 3

GUI_REFUSE_FILETRANSFER = 4

INVALID_TYPE = 5

NO_AUTHORITY = 6

UNKNOWN_ERROR = 7

BAD_DATA_FORMAT = 8

HEADER_NOT_ALLOWED = 9

SEPARATOR_NOT_ALLOWED = 10

HEADER_TOO_LONG = 11

UNKNOWN_DP_ERROR = 12

ACCESS_DENIED = 13

DP_OUT_OF_MEMORY = 14

DISK_FULL = 15

DP_TIMEOUT = 16

其他= 17

如果SY-SUBRC <> 0。

*在此处实施适当的错误处理

ENDIF。

l_mode = cl_gui_alv_grid => MC_STYLE_DISABLED。

将lt_data输入到LV_RAW_DATA。

分割LV_RAW_DATA

AT';'

进入

ls_bin_mat-lgnum

ls_bin_mat授权的

ls_bin_mat-lgpla

ls_bin_mat-lgtyp

ls_bin_mat-matnr

ls_bin_mat-improv_fix

ls_bin_mat-datout

ls_bin_mat-maxqty

ls_bin_mat-maxqty_uom_dsp

ls_bin_mat-minqty

ls_bin_mat-minqty_uom_dsp

ls_bin_mat-rmmqty_fix

ls_bin_mat-created_at

ls_bin_mat-created_by。

将ls_bin_mat附加到lt_bin_mat。

ENDLOOP。

如果me-> mo_data_changed是INITIAL。

创建对象me-> mo_data_changed

导出

I_CALLING_ALV = g_grid" Rufender ALV

ENDIF。

创建数据G_VERIFIER-> MO_DATA_CHANGED-> MP_MOD_ROWS之类的LT_OUTTAB。

ASSIGN G_VERIFIER-> MO_DATA_CHANGED-> MP_MOD_ROWS-> *至

将lt_bin_mat循环到ls_bin_mat。

清除ls_outtab。

清除ls_mod_rows。

清除ls_mod_cells。

lv_index = sy-tabix。

刷新lt_celltab。

"'LGNUM'

ls_outtab-lgnum = ls_bin_mat-LGNUM。

ls_mod_cells-LGNUM = ls_bin_mat-LGNUM。

ls_mod_rows-ROW_ID = lv_index。

ls_mod_rows-TABIX = lv_index。

ls_mod_rows-FIELDNAME ='LGNUM'。

ls_mod_rows-VALUE = ls_mod_cells-LGNUM。

APPEND ls_mod_rows到LT_MOD_ROWS。

"'LGTYP'

ls_outtab-LGTYP = ls_bin_mat-LGTYP。

ls_mod_rows-ROW_ID = lv_index。

ls_mod_rows-TABIX = lv_index。

ls_mod_rows-FIELDNAME ='LGTYP'。

ls_mod_rows-VALUE = ls_outtab-LGTYP。

APPEND ls_mod_rows到LT_MOD_ROWS。

"'OUTCON'

ls_outtab-OUTCON = ls_bin_mat-IMPROV_FIX。

ls_mod_rows-ROW_ID = lv_index。

ls_mod_rows-TABIX = lv_index。

ls_mod_rows-FIELDNAME ='OUTCON'。

ls_mod_rows-VALUE = ls_outtab-OUTCON。

APPEND ls_mod_rows到LT_MOD_ROWS。

"'MAXQTY'

ls_outtab-MAXQTY = ls_bin_mat-MAXQTY。

ls_mod_rows-ROW_ID = lv_index。

ls_mod_rows-TABIX = lv_index。

ls_mod_rows-FIELDNAME ='MAXQTY'。

ls_mod_rows-VALUE = ls_outtab-MAXQTY。

APPEND ls_mod_rows到LT_MOD_ROWS。

"'MAXQTY_UOM_DSP'

ls_outtab-MAXQTY_UOM_DSP = ls_bin_mat-MAXQTY_UOM_DSP。

ls_mod_rows-ROW_ID = lv_index。

ls_mod_rows-TABIX = lv_index。

ls_mod_rows-FIELDNAME ='MAXQTY_UOM_DSP'。

ls_mod_rows-VALUE = ls_outtab-MAXQTY_UOM_DSP。

APPEND ls_mod_rows到LT_MOD_ROWS。

"'MINQTY'

ls_outtab-MINQTY = ls_bin_mat-MINQTY。

ls_mod_rows-ROW_ID = lv_index。

ls_mod_rows-TABIX = lv_index。

ls_mod_rows-FIELDNAME ='MINQTY'。

ls_mod_rows-VALUE = ls_outtab-MINQTY。

APPEND ls_mod_rows到LT_MOD_ROWS。

"'MINQTY_UOM_DSP'

ls_outtab-MINQTY_UOM_DSP = ls_bin_mat-MINQTY_UOM_DSP。

ls_mod_rows-ROW_ID = lv_index。

ls_mod_rows-TABIX = lv_index。

ls_mod_rows-FIELDNAME ='MINQTY_UOM_DSP'。

ls_mod_rows-VALUE = ls_outtab-MINQTY_UOM_DSP。

APPEND ls_mod_rows到LT_MOD_ROWS。

"'RMMQTY_FIX'

ls_outtab-RMMQTY_FIX = ls_bin_mat-RMMQTY_FIX。

ls_mod_rows-ROW_ID = lv_index。

ls_mod_rows-TABIX = lv_index。

ls_mod_rows-FIELDNAME ='RMMQTY_FIX'。

ls_mod_rows-VALUE = ls_outtab-RMMQTY_FIX。

APPEND ls_mod_rows到LT_MOD_ROWS。

ls_outtab-ENTITLED = ls_bin_mat-ENTITLED。

ls_mod_cells-ENTITLED = ls_bin_mat-ENTITLED。

ls_mod_rows-ROW_ID = lv_index。

ls_mod_rows-TABIX = lv_index。

ls_mod_rows-FIELDNAME ='ENTITLED'。

ls_mod_rows-VALUE = ls_outtab-ENTITLED。

APPEND ls_mod_rows到LT_MOD_ROWS。

ls_outtab-LGPLA = ls_bin_mat-LGPLA。

ls_mod_cells-LGPLA = ls_bin_mat-LGPLA。

ls_outtab-MATNR = ls_bin_mat-MATNR。

ls_celltab-fieldname ='CREATED_AT'。

ls_celltab-style = l_mode。

将ls_celltab插入表lt_celltab。

ls_celltab-fieldname ='CREATED_BY'。

ls_celltab-style = l_mode。

将ls_celltab插入表lt_celltab。

ls_celltab-fieldname ='COUNT'。

ls_celltab-style = l_mode。

将ls_celltab插入表lt_celltab。

ls_celltab-fieldname ='DATOUT'。

ls_celltab-style = l_mode。

将ls_celltab插入表lt_celltab。

将lt_celltab的行插入到表ls_outtab-celltab中。

APPEND ls_outtab到gt_outtab。

附加ls_mod_cells给我-> MODIFIED_ROWS。

ENDLOOP。

执行build_fieldcat更改pt_fieldcat。

我-> MO_DATA_CHANGED-> MT_FIELDCATALOG = pt_fieldcat。

将LT_MOD_ROWS的行插入表me-> MO_DATA_CHANGED-> MT_MOD_CELLS。

将LT_MOD_ROWS行插入表ME-> MO_DATA_CHANGED-> MT_GOOD_CELLS。

将GT_OUTTAB的行插入表

调用方法g_grid-> refresh_table_display。

GS_LAYOUT-STYLEFNAME ='CELLTAB'。

*强制打开GridModified标志

调用方法g_grid-> IF_CACHED_PROP〜SET_PROP

导出

propname ='GridModified'

propvalue ='1'

例外情况

其他= 0。

DATA l_valid TYPE char01。

调用方法g_grid-> check_changed_data

导入

e_valid = l_valid。

调用方法G_VERIFIER-> HANDLE_DATA_CHANGED

导出

ER_DATA_CHANGED =我-> MO_DATA_CHANGED

调用方法g_grid-> refresh_table_display。

callcenter油条
2楼-- · 2020-08-16 23:06

嗨,

您需要开发自定义LSMW,并且您需要使用/scwm/fb_update FM更新表/scwm/binmat。 我已经通过调用上面的FM解决了我的问题。

N-Moskvin
3楼-- · 2020-08-16 23:02

您好,您可以在表/SCWM/V_BINMAT上将SM30/SE16(n)的LSMW与F5一起使用。

????

路亽曱_Ryan
4楼-- · 2020-08-16 23:02

大家好

如果您不打算进行任何自定义开发,最好使用配置设置进行管理。 在存储类型定义中进行相关设置,以便每当您在这些存储类型的存储箱中上载初始库存时,系统都会自动在BINMAT表中进行输入。

致谢

Sasidhar Gupta

一周热门 更多>