SAP 自定义表数据导入程序

一些配置数据,或者自定表的基础数据,需要初期导入,或者是一些表维护的数据,需要一次性导入,所以做了这个导入程序,支持所有表,作为一个通用表的导入程序 。

可以直接SE38创建程序,激活,执行即可使用:

*&---------------------------------------------------------------------*
*& Report  ZLXL001
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT ZLXL001.
TABLES:RSRD1.
TYPE-POOLS:ABAP.

FIELD-SYMBOLS: <DYN_TABLE> TYPE STANDARD TABLE,
               <DYN_WA>,
               <DYN_FIELD>.
DATA: DY_TABLE TYPE REF TO DATA,
      DY_LINE  TYPE REF TO DATA,
      XFC      TYPE        LVC_S_FCAT,
      IFC      TYPE        LVC_T_FCAT.

DATA : GT_EXCEL_T TYPE         ALSMEX_TABLINE OCCURS 0 WITH HEADER LINE,
       GS_EXCEL_T LIKE LINE OF GT_EXCEL_T.
DATA: GC_FIELDVALUE TYPE FIELDVALUE,  "字符值
      GC_FLDNAME    TYPE FIELDNAME.   "字段名

SELECTION-SCREEN:BEGIN OF BLOCK BLK01 WITH FRAME TITLE TEXT-001.
PARAMETERS:P_TBMA TYPE RSRD1-TBMA_VAL,
           P_FILE LIKE RLGRAP-FILENAME.
SELECTION-SCREEN END OF BLOCK BLK01.


AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.
  PERFORM FRM_GET_FILEPATH.

START-OF-SELECTION.
  CHECK P_TBMA IS NOT INITIAL.
  CHECK P_FILE IS NOT INITIAL.
  PERFORM PRM_GET_TAB_STRC.
  PERFORM PRM_GET_EXCEL.
  PERFORM PRM_UPDATA_TAB.
*&---------------------------------------------------------------------*
*&      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 e100(zdev) WITH '选择文件出错!'(007).
  ENDIF.
ENDFORM.                    " FRM_GET_FILEPATH
*&---------------------------------------------------------------------*
*&      Form  PRM_GET_TAB_STRC
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM PRM_GET_TAB_STRC .
  DATA:GT_TABLE TYPE DDFIELDS,
       GS_TABLE TYPE DFIES.

  CALL FUNCTION 'CATSXT_GET_DDIC_FIELDINFO'
    EXPORTING
      IM_STRUCTURE_NAME = P_TBMA
    IMPORTING
      EX_DDIC_INFO      = GT_TABLE
    EXCEPTIONS
      FAILED            = 1
      OTHERS            = 2.
  IF SY-SUBRC <> 0.
  ENDIF.

  LOOP AT GT_TABLE INTO GS_TABLE.
    CLEAR XFC.
    XFC-FIELDNAME = GS_TABLE-FIELDNAME .
    XFC-INTTYPE = GS_TABLE-INTTYPE.
    XFC-INTLEN = GS_TABLE-LENG.
    XFC-DECIMALS = GS_TABLE-DECIMALS.
    APPEND XFC TO IFC.
  ENDLOOP.

  CALL METHOD CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE
    EXPORTING
      IT_FIELDCATALOG = IFC
    IMPORTING
      EP_TABLE        = DY_TABLE.
  ASSIGN DY_TABLE->* TO <DYN_TABLE>.

  CREATE DATA DY_LINE LIKE LINE OF <DYN_TABLE>.
  ASSIGN DY_LINE->* TO <DYN_WA>.
ENDFORM.                    " PRM_GET_TAB_STRC
*&---------------------------------------------------------------------*
*&      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   = '300'
        I_END_ROW   = '50000'
      TABLES
        INTERN      = GT_EXCEL_T.
  ENDIF.

  IF GT_EXCEL_T[] IS NOT INITIAL.
    LOOP AT GT_EXCEL_T INTO GS_EXCEL_T.
      AT NEW ROW.
        CLEAR <DYN_WA>.
      ENDAT.
      IF <DYN_WA> IS INITIAL.
        ASSIGN COMPONENT GS_EXCEL_T-COL OF STRUCTURE <DYN_WA> TO <DYN_FIELD>.
        IF SY-SUBRC = 0.
          <DYN_FIELD> = SY-MANDT.
        ENDIF.
      ENDIF.
      GS_EXCEL_T-COL = GS_EXCEL_T-COL + 1.
      GC_FIELDVALUE = GS_EXCEL_T-VALUE.
      CONDENSE GC_FIELDVALUE.
      ASSIGN COMPONENT GS_EXCEL_T-COL OF STRUCTURE <DYN_WA> TO <DYN_FIELD>.
      IF SY-SUBRC = 0.
        <DYN_FIELD> = GC_FIELDVALUE.
      ENDIF.
      AT END OF ROW.
        APPEND <DYN_WA> TO <DYN_TABLE>.
      ENDAT.
    ENDLOOP.
  ENDIF.
ENDFORM.                    " PRM_GET_EXCEL
*&---------------------------------------------------------------------*
*&      Form  PRM_UPDATA_TAB
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM PRM_UPDATA_TAB .
  MODIFY (P_TBMA) FROM TABLE <DYN_TABLE>.
  IF SY-SUBRC = 0.
    MESSAGE '导入成功' TYPE 'S'.
    ELSE.
      MESSAGE '导入失败' TYPE 'S' DISPLAY LIKE 'E'.
      EXIT.
  ENDIF.
ENDFORM.                    " PRM_UPDATA_TAB

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: ABAP是SAP系统中的一种编程语言,通过它可以进行自定义程序开发。在SAP中,开发的自定义程序需要经常进行导出,以便在不同的系统中进行部署。下面简单介绍一下ABAP SAP自定义程序导出的过程。 首先,在SAP系统中打开自定义程序开发工具,选择需要导出的程序。然后,点击菜单栏上的“导出”按钮,在弹出的窗口中选择导出选项。在导出选项中,需要设置导出文件的名称、路径、版本等信息。 接下来,点击确定按钮进行导出操作。系统会自动进行代码和数据的打包,生成一个导出文件。导出文件的大小取决于自定义程序的规模和复杂程度,一般较大的程序需要较长时间才能完成导出操作。 导出文件生成后,将导出文件复制到目标系统中,例如测试系统或生产系统。在目标系统中打开自定义程序开发工具,在导入选项中选择刚才导出的文件,进行导入操作。系统会自动将程序代码和数据导入到目标系统中,完成部署和使用。 需要注意的是,导出操作在不同的SAP系统版本中可能会有所不同,需要根据实际情况进行操作。另外,在进行导出操作时,应该对导出文件进行备份,以便在部署过程中发生问题时进行恢复。 ### 回答2: ABAP SAP 自定义程序导出是指将基于ABAP语言编写的SAP系统中的自定义程序导出为一个可执行的文件,用于在不同系统之间的迁移、备份和复制。导出的文件包含了程序的源代码和相关的数据,可以在其他系统中重新导入和执行,从而实现程序在多个系统之间的共享和使用。 在SAP系统中,可以通过两种方式将自定义程序导出。一种方式是通过SAP GUI菜单中的“Object Navigator”功能,选择相应的程序并将其导出为独立的ABAP工具包。另一种方式是使用SAP的开发工具包,将程序源代码和相关的数据打包,并将其导出为一个独立的文件。这种方式需要在SAP中使用特定的开发工具进行操作,并需要对ABAP语言有一定的了解和掌握。 在进行ABAP SAP 自定义程序导出时,需要注意一些细节。首先要确保程序的源代码和相关数据都已经保存,并且能够在导入时正确的还原。其次要选择正确的导出格式和版本,以保证导出文件的可用性和兼容性。最后,要保护好导出文件的安全性,防止意外的泄露或丢失。 总之,ABAP SAP 自定义程序导出是SAP系统中非常重要的机制,它为用户提供了灵活、高效的程序管理和迁移方式。在实际应用中,用户需要根据具体需求进行操作,并对导出文件进行充分的测试和验证,以确保其稳定性和可靠性。 ### 回答3: ABAP(Advanced Business Application Programming)是SAP(Systems, Applications & Products)的编程语言,可以用于开发SAP系统中的自定义程序,包括导入、导出数据等操作。 在SAP系统中,导出数据常用的方式是使用数据提取程序(Data Extraction Programs),也就是通过SAP Query、ALV工具等方式,在SAP系统中创建一个数据提取程序,并将数据导出至Excel、CSV等格式的文件中。此外,也可以通过ABAP程序编写数据导出功能,并将数据导出至指定的文件系统中。 SAP中的数据导出程序可以根据不同的需求进行自定义。例如,在导出数据时,可以通过用户指定的条件或者SQL语句筛选数据;也可以进行数据格式的自定义,例如日期格式、货币格式等;还可以自定义文本、图片等附加信息。 需要注意的是,在SAP系统中运行自定义的ABAP程序时,需要对程序进行严格的测试和调试,确保程序的正常运行和数据的正确性。 总之,ABAP程序可以帮助SAP系统用户实现自定义数据导出功能,提高数据管理和分析的效率和精度。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值