• 采购信息记录修改[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 '@49@下载模板'  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 = '@0A@'.
    *    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.

    模板:

    必填的为黄色部分

    截止日期默认:9991231

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

  • 相关阅读:
    Node.js模块风格在浏览器中的尝试
    Node.js的模块写法入门
    JavaScript中“+”的陷阱(续)
    Firefox/Chrome/Safari的中可直接使用$/$$函数进行调试
    使用r.js压缩整个项目的JavaScript文件
    拥抱模块化的JavaScript
    图片播放(3)
    JavaScript中“+”的陷阱
    仅IE6/7浏览器SPAN元素包含块级元素会使SPAN的背景色显示
    JavaScript模态对话框类(拖拽时动画)
  • 原文地址:https://www.cnblogs.com/sapSB/p/6125451.html
Copyright © 2020-2023  润新知