物料批量盘点,调用其中两个BAPI BAPI_MATPHYSINV_COUNT BAPI_MATPHYSINV_CHANGECOUNT
涉及两个BAPI:录入数量BAPI_MATPHYSINV_COUNT
修改数量:BAPI_MATPHYSINV_CHANGECOUNT
REPORT ZSC_133 NO STANDARD PAGE HEADING
MESSAGE-ID zsc.
TABLES:
ISEG,IKPF.
type-pools: slis.
DATA:g_variant LIKE disvariant.
DATA: it_alv TYPE slis_t_fieldcat_alv WITH HEADER LINE.
DATA gt_fieldcat TYPE lvc_t_fcat .
DATA ls_fcat TYPE lvc_s_fcat .
DATA: g_status_set TYPE slis_formname,
g_layout TYPE slis_layout_alv, " alv layout
g_sort TYPE slis_t_sortinfo_alv, " ALV sort table
g_user_command TYPE slis_formname VALUE 'USER_COMMAND',
g_events TYPE slis_t_event.
*ALV相关声明
TYPE-POOLS: slis.
DATA: wcl_container TYPE REF TO cl_gui_custom_container, "一个容器
wcl_alv TYPE REF TO cl_gui_alv_grid. "一个ALV对象
DATA gs_layout TYPE lvc_s_layo .
*data:count type i.
DATA: INPUT TYPE KCDE_INTERN_STRUC OCCURS 100 WITH HEADER LINE.
DATA: begin of t_itab.
INCLUDE STRUCTURE ISEG. "atflv
DATA: NAME1 TYPE t001w-NAME1.
DATA: LGOBE TYPE t001l-LGOBE.
DATA: MAKTX TYPE MAKT-MAKTX.
DATA: TDATE(10) TYPE C.
DATA: end of t_itab.
DATA: BEGIN OF T_HEAD.
data: IBLNR LIKE IKPF-IBLNR.
DATA: GJAHR LIKE IKPF-GJAHR.
DATA: ZLDAT LIKE IKPF-ZLDAT.
DATA: END OF T_HEAD.
DATA: gt_output LIKE TABLE OF t_itab.
DATA: gt_head like TABLE OF t_head.
DATA: GT_UP LIKE ISEG OCCURS 0 WITH HEADER LINE.
DATA: GT_UPDATE LIKE ISEG OCCURS 0 WITH HEADER LINE.
DATA: GT_UPHEAD LIKE IKPF OCCURS 0 WITH HEADER LINE.
DATA: T_DATE LIKE ISEG-ZLDAT.
DATA: T_I TYPE I.
data: T_IBLNR LIKE IKPF-IBLNR.
data: T_ZSTAT LIKE IKPF-ZSTAT.
DATA: T_XZAEL LIKE ISEG-XZAEL.
DATA: T_MESSAGE TYPE BAPIRET2-MESSAGE.
data: ITEMS LIKE BAPI_PHYSINV_ITEM OCCURS 0 WITH HEADER LINE.
data: C_ITEMS LIKE BAPI_PHYSINV_COUNT_ITEMS OCCURS 0 WITH HEADER LINE.
DATA: HEAD LIKE BAPI_PHYSINV_HEAD OCCURS 0 WITH HEADER LINE.
DATA: RETURN LIKE BAPIRET2 OCCURS 0 WITH HEADER LINE.
DATA: SERIALNUMBERS LIKE BAPI_PHYSINV_SERIALNUMBERS OCCURS 0.
DATA: T_UNIT TYPE ISEG-ERFME.
DATA: T_P TYPE I.
*****************************
*----------------------------------------------------------------------*
* INTERNAL TABLES AND WORK AREAS *
*----------------------------------------------------------------------*
*----------------------------------------------------------------------*
* GLOBAL VARIABLES *
*----------------------------------------------------------------------*
*----------------------------------------------------------------------*
* PARAMETERS AND SELECT-OPTIONS *
*----------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK rad1 WITH FRAME TITLE text-001.
SELECT-OPTIONS:
P_IBLNR FOR ISEG-IBLNR,
P_GJAHR FOR ISEG-GJAHR DEFAULT SY-DATUM+0(4).
PARAMETERS: r1 RADIOBUTTON GROUP rad1 DEFAULT 'X',
r2 RADIOBUTTON GROUP rad1,
r3 RADIOBUTTON GROUP rad1 .
PARAMETERS: P_LFILE LIKE RLGRAP-FILENAME .
SELECTION-SCREEN END OF BLOCK rad1.
************************************************************************
* MAIN PROCESS *
************************************************************************
*----------------------------------------------------------------------*
* INITIALIZATION *
*----------------------------------------------------------------------*
*INITIALIZATION.
**----------------------------------------------------------------------
* START-OF-SELECTION *
*----------------------------------------------------------------------*
*****取数
if r1 = 'X'.
if P_IBLNR[] is INITIAL or P_GJAHR[] is INITIAL.
MESSAGE i000 WITH '查询条件:凭证、年度不能为空!'.
STOP.
endif.
PERFORM get_data.
endif.
***导入
if r2 = 'X'OR r3 = 'X'.
PERFORM GET_FILENAME USING P_LFILE
CHANGING P_LFILE.
if p_lfile <> ''.
PERFORM up_data.
endif.
endif.
*&---------------------------------------------------------------------*
*& Form GET_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM GET_DATA .
select ISEG~IBLNR ISEG~GJAHR
ISEG~WERKS T001W~NAME1
ISEG~LGORT t001l~LGOBE
ISEG~ZEILI ISEG~MATNR MAKT~MAKTX
ISEG~CHARG ISEG~BSTAR
ISEG~MENGE ISEG~MEINS ISEG~ERFMG ISEG~ERFME
ISEG~ZLDAT
ISEG~XZAEL
* ISEG~ZLDAT AS TDATE
INTO CORRESPONDING FIELDS OF TABLE GT_OUTPUT
FROM ISEG
JOIN T001W ON ISEG~WERKS = T001W~WERKS
JOIN T001L ON ISEG~WERKS = T001L~WERKS AND ISEG~LGORT = T001L~LGORT
JOIN MAKT ON ISEG~MATNR = MAKT~MATNR
WHERE ISEG~IBLNR IN P_IBLNR AND
ISEG~GJAHR IN P_GJAHR AND
MAKT~SPRAS = 1.
LOOP AT GT_OUTPUT INTO T_ITAB.
IF T_ITAB-ZLDAT <> '' AND T_ITAB-ZLDAT <> '00000000'.
T_ITAB-TDATE = T_ITAB-ZLDAT.
replace all occurrences of '-' in T_ITAB-TDATE with space.
replace all occurrences of '.' in T_ITAB-TDATE with space.
condense T_ITAB-TDATE no-gaps.
MODIFY GT_OUTPUT FROM T_ITAB.
ENDIF.
ENDLOOP.
***呈现
PERFORM display_data.
ENDFORM. " GET_DATA
FORM display_data.
IF gt_output[] is INITIAL.
return.
ENDIF.
* sort gt_display by PRUEFLOS MERKNR.
PERFORM display_alv TABLES gt_output USING '库存盘点信息'.
ENDFORM. "DISPLAY_DATA
FORM build_fieldcat.
REFRESH it_alv.
PERFORM alv_append USING 'IBLNR' '盘点凭证' .
PERFORM alv_append USING 'GJAHR' '年度' .
PERFORM alv_append USING 'WERKS' '工厂' .
PERFORM alv_append USING 'NAME1' '工厂名称' .
PERFORM alv_append USING 'LGORT' '库存地点' .
PERFORM alv_append USING 'LGOBE' '库存名称'.
PERFORM alv_append USING 'ZEILI' '行号'.
PERFORM alv_append USING 'MATNR' '产品代码' .
PERFORM alv_append USING 'MAKTX' '产品名称' .
PERFORM alv_append USING 'CHARG' '批次' .
PERFORM alv_append USING 'BSTAR' '存货类型' .
PERFORM alv_append USING 'ERFMG' '盘点数量' .
PERFORM alv_append USING 'ERFME' '盘点单位' .
* PERFORM alv_append USING 'ZLDAT' '盘点日期'.
PERFORM alv_append USING 'TDATE' '盘点日期'.
PERFORM alv_append USING 'XZAEL' '盘点标记'.
* PERFORM alv_append USING 'MENGE' '基本数量' .
* PERFORM alv_append USING 'MEINS' '基本单位'.
ENDFORM. " file_upload
*&---------------------------------------------------------------------*
*& incluede FORM display_ALV *
*&---------------------------------------------------------------------*
FORM display_ALV TABLES it_data USING title.
PERFORM build_fieldcat.
g_layout-colwidth_optimize = 'X'.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy-repid
it_fieldcat = it_alv[]
is_variant = g_variant
i_save = 'X'
is_layout = g_layout
i_grid_title = title
TABLES
t_outtab = it_data
EXCEPTIONS
program_error = 1
OTHERS = 2.
ENDFORM.
*&--------------------------------------------------------------------*
*& Form alv_append
*&--------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
* -->FIELDNAME text
* -->SELTEXT_1 text
*---------------------------------------------------------------------*
FORM alv_append USING fieldname seltext_1.
CLEAR it_alv.
it_alv-fieldname = fieldname.
it_alv-seltext_l = seltext_1.
APPEND it_alv.
ENDFORM. "alv_append
*&---------------------------------------------------------------------*
*& Form UP_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM UP_DATA .
CALL FUNCTION 'KCD_EXCEL_OLE_TO_INT_CONVERT'
EXPORTING
FILENAME = P_LFILE
I_BEGIN_COL = 1
I_BEGIN_ROW = 1
I_END_COL = 256
I_END_ROW = 65536
TABLES
INTERN = INPUT
EXCEPTIONS
INCONSISTENT_PARAMETERS = 1
UPLOAD_OLE = 2
OTHERS = 3.
IF SY-SUBRC <> 0.
MESSAGE E000(zsc) WITH '文件路径有误!'.
ENDIF.
LOOP AT INPUT.
IF input-row = '0001'.
CONTINUE. "第一行是字段名,直接跳过
ELSE.
CASE INPUT-COL.
WHEN '0001'.
GT_UP-IBLNR = INPUT-VALUE. "盘点凭证
WHEN '0002'.
GT_UP-GJAHR = INPUT-VALUE. "年度
WHEN '003'.
GT_UP-WERKS = INPUT-VALUE.
WHEN '005'.
GT_UP-LGORT = INPUT-VALUE.
WHEN '0007'.
GT_UP-ZEILI = INPUT-VALUE. "行号
WHEN '0008'.
GT_UP-MATNR = INPUT-VALUE. "
WHEN '0010'.
GT_UP-CHARG = INPUT-VALUE. "
WHEN '0012'.
GT_UP-ERFMG = INPUT-VALUE. "盘点数量
GT_UP-MENGE = INPUT-VALUE. "基本数量
WHEN '0014'.
GT_UP-ZLDAT = INPUT-VALUE. "盘点日期
ENDCASE.
AT END OF ROW.
APPEND GT_UP.
CLEAR GT_UP.
ENDAT.
ENDIF.
ENDLOOP.
***做处理
CLEAR:GT_UPDATE.
CLEAR:ITEMS.
T_I = 0.
LOOP AT GT_UP.
****盘点标记
SELECT SINGLE DSTAT
INTO T_ZSTAT
FROM IKPF
WHERE IKPF~IBLNR = GT_UP-IBLNR AND
IKPF~GJAHR = GT_UP-GJAHR .
IF T_ZSTAT = 'X'.
CONCATENATE '凭证号:' GT_UP-IBLNR '年度:' GT_UP-GJAHR '提示:已经全部过账,不允许再导入!' INTO T_MESSAGE.
CONDENSE T_MESSAGE.
MESSAGE I000(zsc) WITH T_MESSAGE.
STOP.
ENDIF.
SELECT SINGLE XDIFF
INTO T_XZAEL
FROM ISEG
WHERE ISEG~IBLNR = GT_UP-IBLNR AND
ISEG~GJAHR = GT_UP-GJAHR AND
ISEG~ZEILI = GT_UP-ZEILI.
IF T_XZAEL = 'X'.
CONCATENATE '凭证号:' GT_UP-IBLNR '年度:' GT_UP-GJAHR '项目号:' GT_UP-ZEILI '提示:已经过账,不允许再导入!' INTO T_MESSAGE.
CONDENSE T_MESSAGE.
MESSAGE I000(zsc) WITH T_MESSAGE.
STOP.
ENDIF.
***检测日期
* replace all occurrences of '-' in GT_UP-ZLDAT with space.
* condense GT_UP-ZLDAT no-gaps.
IF GT_UP-ZLDAT = ''OR GT_UP-ZLDAT = '00000000'.
MESSAGE I000(zsc) WITH '盘点日期不能为空,请核对导入文件!'.
STOP.
ENDIF.
IF T_I = 0.
T_DATE = GT_UP-ZLDAT.
T_I = T_I + 1.
ELSE.
IF GT_UP-ZLDAT <> T_DATE.
MESSAGE I000(zsc) WITH '盘点日期不一致,请核对导入文件!'.
STOP.
ENDIF.
ENDIF.
SELECT *
INTO CORRESPONDING FIELDS OF GT_UPDATE
FROM ISEG
WHERE ISEG~IBLNR = GT_UP-IBLNR AND
ISEG~GJAHR = GT_UP-GJAHR AND
ISEG~ZEILI = GT_UP-ZEILI.
ENDSELECT.
IF SY-SUBRC = 0.
IF R2 = 'X' AND GT_UPDATE-XZAEL = 'X'.
CONCATENATE '凭证号:' GT_UP-IBLNR '年度:' GT_UP-GJAHR '项目号:' GT_UP-ZEILI '提示:已经盘点过,请选择批量修改!' INTO T_MESSAGE.
CONDENSE T_MESSAGE.
MESSAGE I000(zsc) WITH T_MESSAGE.
STOP.
ENDIF.
IF R3 = 'X' AND GT_UPDATE-XZAEL = ''.
CONCATENATE '凭证号:' GT_UP-IBLNR '年度:' GT_UP-GJAHR '项目号:' GT_UP-ZEILI '提示:还未盘点,请选择批量输入!' INTO T_MESSAGE.
CONDENSE T_MESSAGE.
MESSAGE I000(zsc) WITH T_MESSAGE.
STOP.
ENDIF.
***检测明细项目
if GT_UP-MATNR = GT_UPDATE-MATNR AND GT_UP-WERKS = GT_UPDATE-WERKS AND GT_UPDATE-LGORT = GT_UP-LGORT AND GT_UP-CHARG = GT_UPDATE-CHARG.
ELSE.
CONCATENATE '凭证号:' GT_UP-IBLNR '年度:' GT_UP-GJAHR '项目号:' GT_UP-ZEILI '提示:物料、工厂、库存、批次有不对,请核对!' INTO T_MESSAGE.
CONDENSE T_MESSAGE.
MESSAGE I000(zsc) WITH T_MESSAGE.
STOP.
ENDIF.
* IF GT_UP-ERFMG <> ''.
*** 调BAPI 2013.4.19 jwy add
* ITEMS-PHYSINVENTORY = GT_UPDATE-IBLNR.
* ITEMS-FISCALYEAR = GT_UPDATE-GJAHR.
* ITEMS-ITEM = GT_UPDATE-ZEILI.
* ITEMS-MATERIAL = GT_UPDATE-MATNR.
* ITEMS-PLANT = GT_UPDATE-WERKS.
* ITEMS-STGE_LOC = GT_UPDATE-LGORT.
* ITEMS-BATCH = GT_UPDATE-CHARG.
* ITEMS-SPEC_STOCK = GT_UPDATE-SOBKZ.
* ITEMS-STOCK_TYPE = GT_UPDATE-BSTAR.
* ITEMS-SALES_ORD = GT_UPDATE-KDAUF.
* ITEMS-S_ORD_ITEM = GT_UPDATE-KDPOS.
* ITEMS-SCHED_LINE = GT_UPDATE-KDEIN.
* ITEMS-VENDOR = GT_UPDATE-LIFNR.
* ITEMS-CUSTOMER = GT_UPDATE-KUNNR.
* ITEMS-PRODBINLOC = GT_UPDATE-
GT_UPDATE-ERFMG = GT_UP-ERFMG.
GT_UPDATE-MENGE = GT_UP-MENGE.
GT_UPDATE-USNAZ = SY-UNAME.
GT_UPDATE-ZLDAT = GT_UP-ZLDAT.
GT_UPDATE-XZAEL = 'X'.
T_HEAD-IBLNR = GT_UP-IBLNR.
T_HEAD-GJAHR = GT_UP-GJAHR.
T_HEAD-ZLDAT = GT_UP-ZLDAT.
APPEND T_HEAD TO GT_HEAD.
CLEAR T_HEAD.
APPEND GT_UPDATE.
CLEAR:GT_UPDATE.
* ENDIF.
* MODIFY GT_UPDATE.
ENDIF.
ENDLOOP.
***处理抬头
T_P = 0.
CLEAR:GT_UPHEAD.
sort GT_HEAD by IBLNR GJAHR.
DELETE ADJACENT DUPLICATES FROM GT_HEAD COMPARING ALL FIELDS.
CLEAR:HEAD,ITEMS,C_ITEMS.
*** 2013.4.19 取盘点项目数据
LOOP AT GT_HEAD INTO T_HEAD.
T_I = 0.
CALL FUNCTION 'BAPI_MATPHYSINV_GETDETAIL'
EXPORTING
PHYSINVENTORY = T_HEAD-IBLNR
FISCALYEAR = T_HEAD-GJAHR
IMPORTING
HEAD = HEAD
TABLES
ITEMS = ITEMS
RETURN = RETURN
EXCEPTIONS
OTHERS = 01.
if SY-SUBRC <> 0.
MESSAGE I000(zsc) WITH '取数失败!'.
STOP.
endif.
****处理
REFRESH C_ITEMS.
CLEAR:C_ITEMS.
LOOP AT GT_UPDATE WHERE IBLNR = T_HEAD-IBLNR AND GJAHR = T_HEAD-GJAHR.
* READ TABLE ITEMS WITH KEY PHYSINVENTORY = GT_UPDATE-IBLNR AND FISCALYEAR = GT_UPDATE-
C_ITEMS-ITEM = GT_UPDATE-ZEILI.
C_ITEMS-MATERIAL = GT_UPDATE-MATNR.
C_ITEMS-BATCH = GT_UPDATE-CHARG.
C_ITEMS-ENTRY_QNT = GT_UPDATE-ERFMG.
C_ITEMS-ENTRY_UOM = GT_UPDATE-ERFME.
if GT_UPDATE-ERFMG = 0.
C_ITEMS-ZERO_COUNT = 'X'.
endif.
****单位转换
CALL FUNCTION 'CONVERSION_EXIT_CUNIT_INPUT'
EXPORTING
INPUT = T_UNIT
LANGUAGE = sy-langu
IMPORTING
OUTPUT = GT_UPDATE-ERFME
EXCEPTIONS
UNIT_NOT_FOUND = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
C_ITEMS-ENTRY_UOM = T_UNIT.
ELSE.
* MESSAGE I000(zsc) WITH '单位转换出错!'.
* STOP.
ENDIF.
APPEND C_ITEMS.
CLEAR: C_ITEMS.
ENDLOOP.
****单位转换
****修改数量MI05
* CALL FUNCTION 'BAPI_MATPHYSINV_CHANGECOUNT'
* EXPORTING
* PERCENTAGE_VARIANCE = T_HEAD-IBLNR
* FISCALYEAR = T_HEAD-GJAHR
** PHYSINVENTORY = OBJECT-KEY-PHYSINVENTORY
* TABLES
* ITEMS = C_ITEMS
* RETURN = RETURN
* SERIALNUMBERS = SERIALNUMBERS
* EXCEPTIONS
* OTHERS = 01.
****录入数量MI04
if r2 = 'X'.
CALL FUNCTION 'BAPI_MATPHYSINV_COUNT'
EXPORTING
PHYSINVENTORY = T_HEAD-IBLNR
FISCALYEAR = T_HEAD-GJAHR
* PERCENTAGE_VARIANCE = PERCENTAGE_VARIANCE
COUNT_DATE = T_HEAD-ZLDAT
TABLES
ITEMS = C_ITEMS
RETURN = RETURN
* SERIALNUMBERS = SERIALNUMBERS
* EXTENSIONIN = EXTENSIONIN
EXCEPTIONS
OTHERS = 1.
endif.
if r3 = 'X'.
CALL FUNCTION 'BAPI_MATPHYSINV_CHANGECOUNT'
EXPORTING
PHYSINVENTORY = T_HEAD-IBLNR
FISCALYEAR = T_HEAD-GJAHR
* PERCENTAGE_VARIANCE = PERCENTAGE_VARIANCE
TABLES
ITEMS = C_ITEMS
RETURN = RETURN
* SERIALNUMBERS = SERIALNUMBERS
* EXTENSIONIN = EXTENSIONIN
EXCEPTIONS
OTHERS = 1.
endif.
LOOP AT RETURN WHERE TYPE = 'E'.
CONCATENATE T_MESSAGE ',' RETURN-MESSAGE INTO T_MESSAGE.
CONDENSE T_MESSAGE.
T_I = 1.
ENDLOOP.
IF T_I = 0.
COMMIT WORK.
IF SY-SUBRC = 0.
T_P = 1.
* MESSAGE S000(zsc) WITH '数据上传成功!'.
ELSE.
MESSAGE S000(zsc) WITH '数据上传失败!'.
STOP.
ENDIF.
ELSE.
MESSAGE I000(zsc) WITH T_MESSAGE.
STOP.
ENDIF.
REFRESH return.
CLEAR:return.
ENDLOOP.
IF T_P = 1.
MESSAGE S000(zsc) WITH '数据上传成功!'.
ENDIF.
* IF GT_UPDATE[] IS INITIAL.
* MESSAGE I000(zsc) WITH '不存在需要修改的记录行,请核对导入文件!'.
* ELSE.
* MODIFY ISEG FROM TABLE GT_UPDATE.
*
* IF SY-SUBRC = 0.
** MESSAGE S000(zsc) WITH '数据上传成功!'.
* ELSE.
* MESSAGE E000(zsc) WITH '数据上传失败!'.
* ENDIF.
* ENDIF.
* LOOP AT GT_HEAD INTO T_HEAD.
* SELECT *
* INTO CORRESPONDING FIELDS OF GT_UPHEAD
* FROM IKPF
* WHERE IKPF~IBLNR = T_HEAD-IBLNR AND
* IKPF~GJAHR = T_HEAD-GJAHR .
* ENDSELECT.
* IF SY-SUBRC = 0.
* GT_UPHEAD-ZLDAT = T_HEAD-ZLDAT.
*****判断是否全部盘点
* SELECT SINGLE IBLNR INTO T_IBLNR
* FROM ISEG
* WHERE ISEG~IBLNR = T_HEAD-IBLNR AND
* ISEG~GJAHR = T_HEAD-GJAHR AND
* ISEG~XZAEL <> 'X'.
* IF SY-SUBRC = 0.
* GT_UPHEAD-ZSTAT = 'A'.
* ELSE.
* GT_UPHEAD-ZSTAT = 'X'.
* ENDIF.
* APPEND GT_UPHEAD.
* CLEAR:GT_UPHEAD.
* ENDIF.
* ENDLOOP.
*
* IF GT_UPHEAD[] IS INITIAL.
* MESSAGE I000(zsc) WITH '不存在需要修改的记录行,请核对导入文件!'.
* ELSE.
* MODIFY IKPF FROM TABLE GT_UPHEAD.
* IF SY-SUBRC = 0.
* MESSAGE S000(zsc) WITH '数据上传成功!'.
* ELSE.
* MESSAGE E000(zsc) WITH '数据上传失败!'.
* STOP.
* ENDIF.
* ENDIF.
****
* PERFORM get_data.
ENDFORM. " UP_DATA
*&---------------------------------------------------------------------*
*& Form get_filename
*&---------------------------------------------------------------------*
FORM GET_FILENAME USING P_PATH LIKE RLGRAP-FILENAME
CHANGING P_FILE LIKE RLGRAP-FILENAME.
DATA:L_WRK_FILENAME LIKE RLGRAP-FILENAME,
L_WRK_MASK LIKE LGRWO-EXP_FILE.
* mask
L_WRK_MASK = ',*.xls,*.xls.'.
* get file name
CALL FUNCTION 'WS_FILENAME_GET'
EXPORTING
DEF_PATH = P_FILE
MASK = L_WRK_MASK
MODE = 'O'
IMPORTING
FILENAME = L_WRK_FILENAME
EXCEPTIONS
INV_WINSYS = 01
NO_BATCH = 02
SELECTION_CANCEL = 03
SELECTION_ERROR = 04
OTHERS = 05.
IF SY-SUBRC = 0.
P_FILE = L_WRK_FILENAME.
ELSE.
ENDIF.
ENDFORM. " get_filename
物料批量盘点,调用其中两个BAPI BAPI_MATPHYSINV_COUNT BAPI_MATPHYSINV_CHANGECOUNT的更多相关文章
- SQLServer 批量插入数据的两种方法
SQLServer 批量插入数据的两种方法-发布:dxy 字体:[增加 减小] 类型:转载 在SQL Server 中插入一条数据使用Insert语句,但是如果想要批量插入一堆数据的话,循环使用Ins ...
- 利用jQuery扩展接口为jQuery框架定义了两个自定义函数,然后调用这两个函数
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- DLL调用的两种方式(IDE:VC6.0,C++)
原文:http://www.cnblogs.com/Pickuper/articles/2050409.html DLL调用有两种方式,一种是静态调用,另外一种是动态调用 (一)静态调用 静态调用是一 ...
- fork()函数,一次调用,两次返回
参考自:http://blog.csdn.net/dog_in_yellow/archive/2008/01/13/2041079.aspx 以前一直迷惑,什么叫一次调用,两次返回.通过上网搜索,终于 ...
- Qt 学习之路 2(19):事件的接受与忽略(当重写事件回调函数时,时刻注意是否需要通过调用父类的同名函数来确保原有实现仍能进行!有好几个例子。为什么要这么做?而不是自己去手动调用这两个函数呢?因为我们无法确认父类中的这个处理函数有没有额外的操作)
版本: 2012-09-29 2013-04-23 更新有关accept()和ignore()函数的相关内容. 2013-12-02 增加有关accept()和ignore()函数的示例. 上一章我们 ...
- java SWing事件调用的两种机制
Java(91) /** * java swing中事件调用的两种机制: * (一)响应机制 * (二)回调机制 */ package test; import java.awt.*; impo ...
- 用一个bat文件调用另外两个bat文件,当1.bat执行完后再执行2.bat
用一个bat文件调用另外两个bat文件,当1.bat执行完后再执行2.bat 摘自:https://zhidao.baidu.com/question/492732911.html @echo off ...
- neo4j批量导入数据的两种解决方案
neo4j批量导入数据有两种方法,第一种是使用cypher语法中的LOAD CSV,第二种是使用neo4j自带的工具neo4j-admin import. LOAD CSV 导入的文件必须是csv文件 ...
- sql server中批量插入与更新两种解决方案分享
若只是需要大批量插入数据使用bcp是最好的,若同时需要插入.删除.更新建议使用SqlDataAdapter我测试过有很高的效率,一般情况下这两种就满足需求了 bcp方式 复制代码 代码如下: /// ...
随机推荐
- harbor私有仓库
私有仓库部署在部署节点上 解压此压缩包(压缩包在上篇博文<kubernetes部署中有链接,可下载>) tar xzf harbor-offline-installer-v1.4.0.tg ...
- zencart产品属性dropmenu select只有一个选择项时自动变成radio单选的解决办法
includes\modules\classic\attributes.php 在大约786行代码 case ($products_options->RecordCount() == 1): 的 ...
- FushionCharts
FushionCharts官网:http://www.fusioncharts.com/ 在线Demo:http://www.fusioncharts.com/free/demos/Blueprint ...
- mysql备份基础
1.1 备份的原因 衡量备份恢复有两个重要的指标:恢复点目标(RPO)和恢复时间目标(RTO), 前者重点关注能恢复到什么程度,而后者则重点关注恢复需要多长时间. 1.1.1 备份的目录 做灾难恢复: ...
- 火焰图(Flame Graphs)的安装和基本用法
火焰图(Flame Graphs) 一.概述: 火焰图(flame graph)是性能分析的利器,通过它可以快速定位性能瓶颈点. perf 命令(performance 的缩写)是 Linux 系统原 ...
- JAVA排序算法(一)冒泡排序、选择排序
/* 冒泡排序 * * 相邻的元素,两两比较.如果第一个比第二个大,就交换他们两个. 大的后移 * 对每一对相邻元素做同样的工作,这样第一轮结束后,最大值在最后一个. */ public static ...
- liunx系统中安装lua以及torch
一直在用pytorch,最近在做项目的时候,遇到了torch的开源代码,所以又开始不得不接触torch以及他所依赖的环境lua. liunx下lua环境的配置代码如下: ''' curl -R -O ...
- php的 strval函数
官方的解释 PHP strval() 函数 PHP 可用的函数 strval() 函数用于获取变量的字符串值. PHP 版本要求: PHP 4, PHP 5, PHP 7 语法 string strv ...
- 分布式-信息方式-ActiveMQ的Destination高级特性1
ActiveMQ的Destination高级特性 Destination高级特性----->Composite Destinations 组合队列Composite Destinations : ...
- java 获取文本一行一行读
直接上代码: 如果出现乱码:请改一下编码:我这里使用utf-8是会乱码的,改GBK就好了 // 读取文件内容 public static String readFile(String path) {/ ...