采购信息记录修改[BDC]详解编程语言

*&---------------------------------------------------------------------* 
*& 
*&---------------------------------------------------------------------* 
*& 
*& 
*&---------------------------------------------------------------------* 
REPORT ZMMF016. 
TABLES:EINE,EINA,SSCRFIELDS,A017. 
INCLUDE OLE2INCL. 
TYPES:BEGIN OF TY_EXCEL, 
SEL(1), 
ICON(4), 
MESSAGE(100), 
LOHNB(1),"信息记录类型(S:标准;W:委外) 
INFNR        TYPE EINA-INFNR, 
LIFNR        TYPE LFA1-LIFNR, 
MATNR        TYPE MARA-MATNR, 
EKORG        TYPE EINE-EKORG, 
WERKS        TYPE EINE-WERKS, 
EKGRP        TYPE EINE-EKGRP, 
MWSKZ        TYPE EINE-MWSKZ, 
APLFZ(3)     TYPE C, " EINE-APLFZ, 
WAERS        TYPE EINE-WAERS, 
MEINS        TYPE EINA-MEINS, 
UMREZ(5)     TYPE C, "        TYPE EINA-UMREZ, 
UMREN(5)     TYPE C, "        TYPE EINA-UMREN, 
NETPR(11)    TYPE C, "EINE-NETPR, 
LIFAB        TYPE EINA-LIFAB, 
LIFBI        TYPE EINA-LIFBI, 
KPEIN(5)     TYPE C, "KONP-KPEIN, 
*        NORBM TYPE EINE-NORBM, 
END OF TY_EXCEL. 
TYPES:BEGIN OF TY_CHECK, 
INFNR TYPE EINA-INFNR, 
LIFNR TYPE LFA1-LIFNR, 
MATNR TYPE MARA-MATNR, 
LIFAB TYPE EINA-LIFAB, 
EKORG TYPE EINE-EKORG, 
WERKS TYPE EINE-WERKS, 
ESOKZ TYPE EINE-ESOKZ, 
END OF TY_CHECK. 
DATA:GT_EXCEL TYPE TABLE OF TY_EXCEL, 
GW_EXCEL LIKE LINE OF GT_EXCEL, 
GT_CHECK TYPE TABLE OF TY_CHECK, 
GW_CHECK LIKE LINE OF GT_CHECK. 
DATA:GT_FIELDCAT TYPE LVC_T_FCAT. 
DATA GS_FIELDCAT LIKE LINE OF GT_FIELDCAT. 
DATA LS_LAYOUT TYPE LVC_S_LAYO. 
DATA : GT_EXCEL_T TYPE ALSMEX_TABLINE OCCURS 0 WITH HEADER LINE, 
GS_EXCEL_T LIKE LINE OF GT_EXCEL_T. 
DATA:   BDCDATA LIKE BDCDATA    OCCURS 0 WITH HEADER LINE. 
DATA:   MESSTAB LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE. 
DATA:   GS_CTU_PARAMS TYPE CTU_PARAMS. 
DATA: GS_EXCEL    TYPE OLE2_OBJECT, 
*      gs_wbooklist      TYPE ole2_object, 
*      gs_application    TYPE ole2_object, 
GS_WORKBOOK TYPE OLE2_OBJECT. 
DEFINE APPEND_FIELDCAT . 
CLEAR GS_FIELDCAT. 
GS_FIELDCAT-FIELDNAME = &1. 
GS_FIELDCAT-SCRTEXT_L = &2. 
GS_FIELDCAT-OUTPUTLEN = &3. 
GS_FIELDCAT-NO_ZERO = &4. 
*  IF &1 = 'MEINS'. 
*    GS_FIELDCAT-CONVEXIT = 'ZCONV'. 
*  ENDIF. 
APPEND GS_FIELDCAT TO GT_FIELDCAT. 
END-OF-DEFINITION. 
SELECTION-SCREEN:BEGIN OF BLOCK BLK01 WITH FRAME TITLE TEXT-001. 
PARAMETERS:P_FILE LIKE RLGRAP-FILENAME. 
SELECTION-SCREEN END OF BLOCK BLK01. 
SELECTION-SCREEN FUNCTION KEY 1. 
INITIALIZATION. 
MOVE '@[email protected]'  TO SSCRFIELDS-FUNCTXT_01. 
AT SELECTION-SCREEN. 
IF SSCRFIELDS-UCOMM = 'FC01'. 
PERFORM PRM_SAVE_FILE. 
ENDIF. 
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE. 
PERFORM FRM_GET_FILEPATH. 
START-OF-SELECTION. 
CHECK P_FILE IS NOT INITIAL. 
PERFORM PRM_GET_EXCEL. 
PERFORM PRM_SET_FIELD. 
PERFORM PRM_CHECK_DATA. 
PERFORM PRM_SHOW. 
*&---------------------------------------------------------------------* 
*&      Form  FRM_GET_FILEPATH 
*&---------------------------------------------------------------------* 
*       text 
*----------------------------------------------------------------------* 
*  -->  p1        text 
*  <--  p2        text 
*----------------------------------------------------------------------* 
FORM FRM_GET_FILEPATH . 
CALL FUNCTION 'WS_FILENAME_GET' 
EXPORTING 
MASK             = ',Excel(*.xls),*.XLS,*.XLSX,' 
TITLE            = '选择文件'(100) 
IMPORTING 
FILENAME         = P_FILE 
EXCEPTIONS 
INV_WINSYS       = 1 
NO_BATCH         = 2 
SELECTION_CANCEL = 3 
SELECTION_ERROR  = 4 
OTHERS           = 5. 
IF SY-SUBRC <> 0. 
MESSAGE '选择文件出错!' TYPE 'S' DISPLAY LIKE 'E'. 
LEAVE LIST-PROCESSING. 
ENDIF. 
ENDFORM. 
*&---------------------------------------------------------------------* 
*&      Form  PRM_GET_EXCEL 
*&---------------------------------------------------------------------* 
*       text 
*----------------------------------------------------------------------* 
*  -->  p1        text 
*  <--  p2        text 
*----------------------------------------------------------------------* 
FORM PRM_GET_EXCEL . 
IF P_FILE IS NOT INITIAL. 
*将excel数据传入内表 
CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE' 
EXPORTING 
FILENAME    = P_FILE 
I_BEGIN_COL = '1' 
I_BEGIN_ROW = '2' 
I_END_COL   = '20' 
I_END_ROW   = '5000' 
TABLES 
INTERN      = GT_EXCEL_T. 
ENDIF. 
IF GT_EXCEL_T[] IS INITIAL. 
MESSAGE '文件内容为空!' TYPE 'S' DISPLAY LIKE 'E'. 
LEAVE LIST-PROCESSING. 
ENDIF. 
LOOP AT GT_EXCEL_T INTO GS_EXCEL_T. 
AT NEW ROW. 
CLEAR:GW_EXCEL. 
ENDAT. 
CASE GS_EXCEL_T-COL. 
WHEN 1."信息记录类型 
GW_EXCEL-LOHNB = GS_EXCEL_T-VALUE. 
WHEN 2."供应商 
GW_EXCEL-LIFNR = GS_EXCEL_T-VALUE. 
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' 
EXPORTING 
INPUT  = GW_EXCEL-LIFNR 
IMPORTING 
OUTPUT = GW_EXCEL-LIFNR. 
WHEN 3."物料 
GW_EXCEL-MATNR = GS_EXCEL_T-VALUE. 
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' 
EXPORTING 
INPUT  = GW_EXCEL-MATNR 
IMPORTING 
OUTPUT = GW_EXCEL-MATNR. 
WHEN 4."采购组织 
GW_EXCEL-EKORG = GS_EXCEL_T-VALUE. 
WHEN 5. 
GW_EXCEL-WERKS = GS_EXCEL_T-VALUE. 
WHEN 6. 
GW_EXCEL-EKGRP = GS_EXCEL_T-VALUE. 
WHEN 7. 
GW_EXCEL-APLFZ = GS_EXCEL_T-VALUE. 
WHEN 8. 
GW_EXCEL-NETPR = GS_EXCEL_T-VALUE. 
WHEN 9. 
GW_EXCEL-WAERS = GS_EXCEL_T-VALUE. 
WHEN 10. 
GW_EXCEL-KPEIN = GS_EXCEL_T-VALUE. 
WHEN 11. 
GW_EXCEL-MEINS = GS_EXCEL_T-VALUE. 
CALL FUNCTION 'CONVERSION_EXIT_ZCONV_OUTPUT' 
EXPORTING 
INPUT          = GW_EXCEL-MEINS 
IMPORTING 
OUTPUT         = GW_EXCEL-MEINS 
EXCEPTIONS 
UNIT_NOT_FOUND = 1. 
WHEN 12. 
GW_EXCEL-UMREZ = GS_EXCEL_T-VALUE. 
WHEN 13. 
GW_EXCEL-UMREN = GS_EXCEL_T-VALUE. 
WHEN 14. 
GW_EXCEL-LIFAB = GS_EXCEL_T-VALUE. 
WHEN 15. 
GW_EXCEL-LIFBI = GS_EXCEL_T-VALUE. 
WHEN 16. 
GW_EXCEL-MWSKZ = GS_EXCEL_T-VALUE. 
WHEN OTHERS. 
ENDCASE. 
AT END OF ROW. 
APPEND GW_EXCEL TO GT_EXCEL. 
ENDAT. 
ENDLOOP. 
ENDFORM. 
*&---------------------------------------------------------------------* 
*&      Form  PRM_CHECK_DATA 
*&---------------------------------------------------------------------* 
*       text 
*----------------------------------------------------------------------* 
*  -->  p1        text 
*  <--  p2        text 
*----------------------------------------------------------------------* 
FORM PRM_CHECK_DATA . 
SELECT  EINA~INFNR" TYPE LFA1-LIFNR, 
EINA~LIFNR" TYPE LFA1-LIFNR, 
EINA~MATNR" TYPE MARA-MATNR, 
EINA~LIFAB" TYPE MARA-MATNR, 
EINE~EKORG" TYPE EINE-EKORG, 
EINE~WERKS" TYPE EINE-WERKS, 
EINE~ESOKZ" TYPE EINE-WERKS, 
INTO TABLE GT_CHECK 
FROM EINA 
INNER JOIN EINE 
ON EINA~INFNR = EINE~INFNR 
FOR ALL ENTRIES IN GT_EXCEL 
WHERE EINA~LIFNR = GT_EXCEL-LIFNR 
AND   EINA~MATNR = GT_EXCEL-MATNR 
AND   EINE~EKORG = GT_EXCEL-EKORG 
AND   EINE~WERKS = GT_EXCEL-WERKS 
AND   EINA~LOEKZ = '' 
AND   EINE~LOEKZ = ''. 
LOOP AT GT_EXCEL INTO GW_EXCEL. 
READ TABLE GT_CHECK INTO GW_CHECK WITH KEY LIFNR = GW_EXCEL-LIFNR MATNR = GW_EXCEL-MATNR 
EKORG = GW_EXCEL-EKORG WERKS = GW_EXCEL-WERKS. 
IF SY-SUBRC <> 0. 
GW_EXCEL-MESSAGE = '数据未建立,请稍后检查!'. 
GW_EXCEL-ICON = '@0A@'. 
ELSE. 
GW_EXCEL-INFNR = GW_CHECK-INFNR. 
ENDIF. 
CLEAR:A017. 
SELECT SINGLE * FROM A017 WHERE LIFNR = GW_EXCEL-LIFNR AND MATNR = GW_EXCEL-MATNR 
AND EKORG = GW_EXCEL-EKORG AND WERKS = GW_EXCEL-WERKS AND DATAB >= GW_EXCEL-LIFAB. 
IF A017 IS NOT INITIAL. 
GW_EXCEL-MESSAGE = '有效开始日期不能小于等于原有日期!'. 
GW_EXCEL-ICON = '@0A@'. 
ENDIF. 
IF GW_EXCEL-LIFAB IS INITIAL OR GW_EXCEL-LIFBI IS INITIAL. 
GW_EXCEL-MESSAGE = '新建日期范围必输!'. 
GW_EXCEL-ICON = '@0A@'. 
ENDIF. 
IF GW_EXCEL-LOHNB <> 'S' AND GW_EXCEL-LOHNB <> 'W'. 
GW_EXCEL-MESSAGE = '信息类型错误!'. 
GW_EXCEL-ICON = '@0A@'. 
ELSEIF GW_EXCEL-LOHNB = 'S'. 
IF GW_CHECK-ESOKZ <> '0'. 
GW_EXCEL-MESSAGE = '信息类型不匹配!'. 
GW_EXCEL-ICON = '@0A@'. 
ENDIF. 
ELSEIF GW_EXCEL-LOHNB = 'W'. 
IF GW_CHECK-ESOKZ <> '3'. 
GW_EXCEL-MESSAGE = '信息类型不匹配!'. 
GW_EXCEL-ICON = '@0A@'. 
ENDIF. 
ENDIF. 
* 
*    IF GW_EXCEL-LIFAB <= GW_CHECK-LIFAB. 
*      GW_EXCEL-MESSAGE = '有效开始日期不能小于等于原有日期!'. 
*      GW_EXCEL-ICON = [email protected]@'. 
*    ENDIF. 
MODIFY GT_EXCEL FROM GW_EXCEL. 
CLEAR:GW_EXCEL-MESSAGE. 
ENDLOOP. 
ENDFORM. 
*&---------------------------------------------------------------------* 
*&      Form  PRM_SET_FIELD 
*&---------------------------------------------------------------------* 
*       text 
*----------------------------------------------------------------------* 
*  -->  p1        text 
*  <--  p2        text 
*----------------------------------------------------------------------* 
FORM PRM_SET_FIELD . 
REFRESH GT_FIELDCAT. 
LS_LAYOUT-CWIDTH_OPT    = 'X'. "优化列宽选项是否设置 
LS_LAYOUT-ZEBRA         = 'X'. 
LS_LAYOUT-BOX_FNAME     = 'SEL'. 
APPEND_FIELDCAT:'ICON'              '标记'                  1    '', 
'MESSAGE'           '消息'                  100    '', 
'LOHNB'             '信息记录类型'          1      '', 
'INFNR'             '信息记录编号'          10    'X', 
'LIFNR'             '供应商编码'            10    'X', 
'MATNR'             '物料编码'              18    'X', 
'EKORG'             '采购组织'              4     '', 
'EKGRP'             '采购组'                3     '', 
'MEINS'             '订单价格单位'          5     '', 
'WERKS'             '工厂'                  4     '', 
'APLFZ'             '计划交货期限'          3     '', 
'WAERS'             '货币码'                5     '', 
'NETPR'             '价格'                  16     '', 
'MWSKZ'             '税码'                  2     '', 
'KPEIN'             '价格倍数'              6     '', 
'UMREZ'             '转化分子'              5     '', 
'UMREN'             '转化分母'              5     '', 
'LIFAB'             '开始日期'              10    '', 
'LIFBI'             '截止日期'              10    ''. 
ENDFORM. 
*&---------------------------------------------------------------------* 
*&      Form  PRM_SHOW 
*&---------------------------------------------------------------------* 
*       text 
*----------------------------------------------------------------------* 
*  -->  p1        text 
*  <--  p2        text 
*----------------------------------------------------------------------* 
FORM PRM_SHOW . 
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC' 
EXPORTING 
I_CALLBACK_PROGRAM       = SY-REPID 
IS_LAYOUT_LVC            = LS_LAYOUT 
IT_FIELDCAT_LVC          = GT_FIELDCAT[] 
I_CALLBACK_PF_STATUS_SET = 'PRM_SET_STATUS' 
I_CALLBACK_USER_COMMAND  = 'PRM_USER_COMMAND' 
*     i_grid_title             = lv_title 
I_DEFAULT                = 'X' 
I_SAVE                   = 'A' 
TABLES 
T_OUTTAB                 = GT_EXCEL 
EXCEPTIONS 
PROGRAM_ERROR            = 1 
OTHERS                   = 2. 
IF SY-SUBRC <> 0. 
ENDIF. 
ENDFORM. 
FORM PRM_SET_STATUS USING RT_EXTAB TYPE SLIS_T_EXTAB.. 
SET PF-STATUS 'ZSTAT'. 
ENDFORM. 
FORM PRM_USER_COMMAND USING P_UCOMM    LIKE SY-UCOMM 
P_SELFIELD TYPE SLIS_SELFIELD. 
DATA:GT_SELECT TYPE TABLE OF TY_EXCEL. 
DATA:GW_SELECT LIKE LINE OF GT_EXCEL. 
DATA:LR_GRID TYPE REF TO CL_GUI_ALV_GRID. 
DATA:LV_LINE TYPE I. 
CHECK P_UCOMM = 'GENR'. 
APPEND LINES OF GT_EXCEL TO GT_SELECT. 
DELETE GT_SELECT WHERE SEL = ''. 
DELETE GT_SELECT WHERE MESSAGE <> ''. 
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR' 
IMPORTING 
E_GRID = LR_GRID. 
LOOP AT GT_SELECT INTO GW_EXCEL. 
CLEAR BDCDATA[]. 
PERFORM BDC_DYNPRO      USING 'SAPMM06I' '0100'. 
PERFORM BDC_FIELD       USING 'BDC_CURSOR' 
'EINE-WERKS'. 
PERFORM BDC_FIELD       USING 'BDC_OKCODE' 
'/00'. 
PERFORM BDC_FIELD       USING 'EINA-LIFNR' 
GW_EXCEL-LIFNR. 
PERFORM BDC_FIELD       USING 'EINA-MATNR' 
GW_EXCEL-MATNR. 
PERFORM BDC_FIELD       USING 'EINE-EKORG' 
GW_EXCEL-EKORG. 
PERFORM BDC_FIELD       USING 'EINE-WERKS' 
GW_EXCEL-WERKS. 
IF GW_EXCEL-LOHNB = 'S'. 
PERFORM BDC_FIELD       USING 'RM06I-NORMB' 
'X'. 
ELSEIF GW_EXCEL-LOHNB = 'L'. 
PERFORM BDC_FIELD       USING 'RM06I-LOHNB' 
'X'. 
ENDIF. 
PERFORM BDC_DYNPRO      USING 'SAPMM06I' '0101'. 
PERFORM BDC_FIELD       USING 'BDC_OKCODE' 
'=EINE'. 
IF GW_EXCEL-MEINS IS NOT INITIAL. 
PERFORM BDC_FIELD       USING 'EINA-MEINS' 
GW_EXCEL-MEINS. 
ENDIF. 
IF GW_EXCEL-UMREZ <> 0. 
PERFORM BDC_FIELD       USING 'EINA-UMREZ' 
GW_EXCEL-UMREZ. 
ENDIF. 
IF GW_EXCEL-UMREN <> 0. 
PERFORM BDC_FIELD       USING 'EINA-UMREN' 
GW_EXCEL-UMREN. 
ENDIF. 
PERFORM BDC_DYNPRO      USING 'SAPMM06I' '0102'. 
PERFORM BDC_FIELD       USING 'BDC_CURSOR' 
'EINE-MWSKZ'. 
PERFORM BDC_FIELD       USING 'BDC_OKCODE' 
'/00'. 
IF GW_EXCEL-APLFZ > 0. 
PERFORM BDC_FIELD       USING 'EINE-APLFZ' 
GW_EXCEL-APLFZ. 
ENDIF. 
IF GW_EXCEL-EKGRP IS NOT INITIAL. 
PERFORM BDC_FIELD       USING 'EINE-EKGRP' 
GW_EXCEL-EKGRP. 
ENDIF. 
*    PERFORM BDC_FIELD       USING 'EINE-NORBM' 
*                                  RECORD-NORBM_011. 
*    PERFORM BDC_FIELD       USING 'EINE-WEBRE' 
*                                  RECORD-WEBRE_012. 
IF GW_EXCEL-MWSKZ IS NOT INITIAL. 
PERFORM BDC_FIELD       USING 'EINE-MWSKZ' 
GW_EXCEL-MWSKZ. 
ENDIF. 
*    PERFORM BDC_FIELD       USING 'EINE-IPRKZ' 
*                                  RECORD-IPRKZ_014. 
PERFORM BDC_DYNPRO      USING 'SAPMM06I' '0105'. 
PERFORM BDC_FIELD       USING 'BDC_CURSOR' 
'EINE-ANGNR'. 
PERFORM BDC_FIELD       USING 'BDC_OKCODE' 
'=KO'. 
PERFORM BDC_DYNPRO      USING 'SAPLV14A' '0102'. 
PERFORM BDC_FIELD       USING 'BDC_CURSOR' 
'VAKE-DATAB(01)'. 
PERFORM BDC_FIELD       USING 'BDC_OKCODE' 
'=NEWD'. 
PERFORM BDC_DYNPRO      USING 'SAPMV13A' '0201'. 
PERFORM BDC_FIELD       USING 'BDC_CURSOR' 
'KONP-KBETR(01)'. 
PERFORM BDC_FIELD       USING 'BDC_OKCODE' 
'=SICH'. 
PERFORM BDC_FIELD       USING 'RV13A-DATAB' 
GW_EXCEL-LIFAB. 
PERFORM BDC_FIELD       USING 'RV13A-DATBI' 
GW_EXCEL-LIFBI. 
PERFORM BDC_FIELD       USING 'KONP-KBETR(01)' 
GW_EXCEL-NETPR. 
IF GW_EXCEL-WAERS IS NOT INITIAL. 
PERFORM BDC_FIELD       USING 'KONP-KONWA(01)' 
GW_EXCEL-WAERS. 
ENDIF. 
IF GW_EXCEL-KPEIN IS NOT INITIAL. 
PERFORM BDC_FIELD       USING 'KONP-KPEIN(01)' 
GW_EXCEL-KPEIN. 
ENDIF. 
*    PERFORM BDC_TRANSACTION USING 'ME12'. 
CALL TRANSACTION 'ME12' USING BDCDATA 
MODE   'E' 
UPDATE 'S' 
MESSAGES INTO MESSTAB. 
READ TABLE MESSTAB WITH KEY MSGTYP = 'E'. 
IF SY-SUBRC <> 0. 
GW_EXCEL-MESSAGE = '修改成功!'. 
GW_EXCEL-ICON = '@08@'. 
ELSE. 
CONDENSE MESSTAB-MSGV1 NO-GAPS. 
CONDENSE MESSTAB-MSGV2 NO-GAPS. 
CONDENSE MESSTAB-MSGV3 NO-GAPS. 
CONDENSE MESSTAB-MSGV4 NO-GAPS. 
CONCATENATE '修改失败:' MESSTAB-MSGV1 MESSTAB-MSGV2 MESSTAB-MSGV3 MESSTAB-MSGV4 INTO GW_EXCEL-MESSAGE. 
GW_EXCEL-ICON = '@0A@'. 
ENDIF. 
MODIFY GT_SELECT FROM GW_EXCEL. 
refresh:MESSTAB. 
ENDLOOP. 
LOOP AT GT_EXCEL INTO GW_EXCEL. 
LV_LINE = SY-TABIX. 
READ TABLE GT_SELECT INTO GW_SELECT WITH KEY INFNR = GW_EXCEL-INFNR. 
IF SY-SUBRC = 0. 
GW_EXCEL-MESSAGE = GW_SELECT-MESSAGE. 
GW_EXCEL-ICON = GW_SELECT-ICON. 
MODIFY GT_EXCEL FROM GW_EXCEL INDEX LV_LINE TRANSPORTING MESSAGE ICON. 
ENDIF. 
ENDLOOP. 
CALL METHOD LR_GRID->REFRESH_TABLE_DISPLAY. 
ENDFORM. 
*&---------------------------------------------------------------------* 
*&      Form  BDC_DYNPRO 
*&---------------------------------------------------------------------* 
*       text 
*----------------------------------------------------------------------* 
*      -->P_0774   text 
*      -->P_0775   text 
*----------------------------------------------------------------------* 
FORM BDC_DYNPRO USING PROGRAM DYNPRO. 
CLEAR BDCDATA. 
BDCDATA-PROGRAM  = PROGRAM. 
BDCDATA-DYNPRO   = DYNPRO. 
BDCDATA-DYNBEGIN = 'X'. 
APPEND BDCDATA. 
ENDFORM. 
*----------------------------------------------------------------------* 
*        Insert field                                                  * 
*----------------------------------------------------------------------* 
FORM BDC_FIELD USING FNAM FVAL. 
CLEAR BDCDATA. 
BDCDATA-FNAM = FNAM. 
BDCDATA-FVAL = FVAL. 
APPEND BDCDATA. 
ENDFORM. 
*&---------------------------------------------------------------------* 
*&      Form  PRM_SAVE_FILE 
*&---------------------------------------------------------------------* 
*       text 
*----------------------------------------------------------------------* 
*  -->  p1        text 
*  <--  p2        text 
*----------------------------------------------------------------------* 
FORM PRM_SAVE_FILE . 
DATA:GV_FILE1 TYPE STRING. 
DATA:GV_FILE2 TYPE STRING. 
DATA:GV_FILE3 TYPE STRING. 
DATA:LS_KEY      TYPE WWWDATATAB, 
LV_DESTINAT LIKE RLGRAP-FILENAME, 
LV_RC       TYPE I. 
CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG 
EXPORTING 
WINDOW_TITLE              = '保存文件到' 
CHANGING 
FILENAME                  = GV_FILE1 
PATH                      = GV_FILE2 
FULLPATH                  = GV_FILE3 
EXCEPTIONS 
CNTL_ERROR                = 1 
ERROR_NO_GUI              = 2 
NOT_SUPPORTED_BY_GUI      = 3 
INVALID_DEFAULT_FILE_NAME = 4 
OTHERS                    = 5. 
IF SY-SUBRC <> 0. 
ENDIF. 
IF GV_FILE3 IS NOT INITIAL. 
LS_KEY-RELID    = 'MI'. 
LS_KEY-OBJID    = 'ZMMF016'. 
LV_DESTINAT = GV_FILE3. 
"下载模板 
CALL FUNCTION 'DOWNLOAD_WEB_OBJECT' 
EXPORTING 
KEY         = LS_KEY 
DESTINATION = LV_DESTINAT 
IMPORTING 
RC          = LV_RC. 
ENDIF. 
ENDFORM.

模板:

采购信息记录修改[BDC]详解编程语言

必填的为黄色部分

截止日期默认:9991231

注:本程序只是在原有的采购信息记录上,新增一条新的有效期间为有效开始日期-有效截止日期的记录

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/18678.html

(0)
上一篇 2021年7月19日
下一篇 2021年7月19日

相关推荐

发表回复

登录后才能评论