2020-08-16 22:25发布
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
大家好
有什么方法可以使用CSV文件等定义固定的bin映射? 我知道交易/scwm/binmat,但是在这里我们不能通过csv等上传所有固定的垃圾箱,也不能使用第一次发布将产品固定到垃圾箱的配置。 但是我正在寻找csv文件上传,就像在EWM中存储仓和库存上传一样。
谢谢
Sasidhar Gupta
你好
我在标准/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'
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
创建数据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-FIELDNAME ='LGTYP'。
ls_mod_rows-VALUE = ls_outtab-LGTYP。
"'OUTCON'
ls_outtab-OUTCON = ls_bin_mat-IMPROV_FIX。
ls_mod_rows-FIELDNAME ='OUTCON'。
ls_mod_rows-VALUE = ls_outtab-OUTCON。
"'MAXQTY'
ls_outtab-MAXQTY = ls_bin_mat-MAXQTY。
ls_mod_rows-FIELDNAME ='MAXQTY'。
ls_mod_rows-VALUE = ls_outtab-MAXQTY。
"'MAXQTY_UOM_DSP'
ls_outtab-MAXQTY_UOM_DSP = ls_bin_mat-MAXQTY_UOM_DSP。
ls_mod_rows-FIELDNAME ='MAXQTY_UOM_DSP'。
ls_mod_rows-VALUE = ls_outtab-MAXQTY_UOM_DSP。
"'MINQTY'
ls_outtab-MINQTY = ls_bin_mat-MINQTY。
ls_mod_rows-FIELDNAME ='MINQTY'。
ls_mod_rows-VALUE = ls_outtab-MINQTY。
"'MINQTY_UOM_DSP'
ls_outtab-MINQTY_UOM_DSP = ls_bin_mat-MINQTY_UOM_DSP。
ls_mod_rows-FIELDNAME ='MINQTY_UOM_DSP'。
ls_mod_rows-VALUE = ls_outtab-MINQTY_UOM_DSP。
"'RMMQTY_FIX'
ls_outtab-RMMQTY_FIX = ls_bin_mat-RMMQTY_FIX。
ls_mod_rows-FIELDNAME ='RMMQTY_FIX'。
ls_mod_rows-VALUE = ls_outtab-RMMQTY_FIX。
ls_outtab-ENTITLED = ls_bin_mat-ENTITLED。
ls_mod_cells-ENTITLED = ls_bin_mat-ENTITLED。
ls_mod_rows-FIELDNAME ='ENTITLED'。
ls_mod_rows-VALUE = ls_outtab-ENTITLED。
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-fieldname ='COUNT'。
ls_celltab-fieldname ='DATOUT'。
将lt_celltab的行插入到表ls_outtab-celltab中。
APPEND ls_outtab到gt_outtab。
附加ls_mod_cells给我-> MODIFIED_ROWS。
执行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
嗨,
您需要开发自定义LSMW,并且您需要使用/scwm/fb_update FM更新表/scwm/binmat。 我已经通过调用上面的FM解决了我的问题。
您好,您可以在表/SCWM/V_BINMAT上将SM30/SE16(n)的LSMW与F5一起使用。
????
如果您不打算进行任何自定义开发,最好使用配置设置进行管理。 在存储类型定义中进行相关设置,以便每当您在这些存储类型的存储箱中上载初始库存时,系统都会自动在BINMAT表中进行输入。
致谢
最多设置5个标签!
你好
我在标准/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。
嗨,
您需要开发自定义LSMW,并且您需要使用/scwm/fb_update FM更新表/scwm/binmat。 我已经通过调用上面的FM解决了我的问题。
您好,您可以在表/SCWM/V_BINMAT上将SM30/SE16(n)的LSMW与F5一起使用。
????
大家好
如果您不打算进行任何自定义开发,最好使用配置设置进行管理。 在存储类型定义中进行相关设置,以便每当您在这些存储类型的存储箱中上载初始库存时,系统都会自动在BINMAT表中进行输入。
致谢
Sasidhar Gupta
一周热门 更多>