S4 FS00会计科目批量导入 - GL_ACCT_MASTER_SAVE

目录

一、程序源代码

二、科目数据模版


一、程序源代码

*&---------------------------------------------------------------------*
*& Report ZBAPI001
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT ZBAPI001.
TYPE-POOLS: ICON.
TYPE-POOLS SLIS.
TABLES SSCRFIELDS.
SELECTION-SCREEN BEGIN OF BLOCK SCR1 WITH FRAME TITLE TEXT-001.
PARAMETERS: P_PATH TYPE STRING DEFAULT 'D:\ZDATA.txt' OBLIGATORY.
SELECTION-SCREEN END OF BLOCK SCR1.

TYPES: BEGIN OF ST_TXT,
         SAKNR          TYPE CHAR10, "科目编码
         BUKRS          TYPE CHAR4, "公司代码
         TXT            TYPE CHAR20, "科目名称
         TXT_LONG       TYPE CHAR50, "科目名称
         GLACCOUNT_TYPE TYPE CHAR1, "总账科目类型
         KTOKS          TYPE CHAR4, "科目组
         WAERS          TYPE CHAR5, "科目货币
         ZUAWA          TYPE CHAR3, "排序码
         FSTAG          TYPE CHAR4, "字段状态组
         XINTB          TYPE CHAR1, "自动记帐
         MITKZ          TYPE CHAR1, "统驭科目的科目类别
         XOPVW          TYPE CHAR1, "未清项目管理
         MWSKZ          TYPE CHAR2, "税务类型
         XMWNO          TYPE CHAR1, "允许含/不含税过帐
         XSALH          TYPE CHAR1, "仅限以本位币记的余额
         KATYP          TYPE CHAR2, "成本要素类别
         ICON           TYPE ICON-NAME,
         ZSEL           TYPE CHAR1,
         TYPE           TYPE CHAR1,
         MESSAGE        TYPE CHAR255,
       END OF ST_TXT.
DATA: WA_TXT TYPE ST_TXT,
      IT_TXT LIKE TABLE OF WA_TXT.

TYPE-POOLS: ICON.
TYPE-POOLS SLIS.
DATA: IS_LAYOUT   TYPE SLIS_LAYOUT_ALV,          "ALV输出样式
      IT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,    "ALV输出的头项目(内表)
      WA_FIELDCAT TYPE SLIS_FIELDCAT_ALV,      "ALV输出的头项目(工作区)
      WA_REPID    LIKE SY-REPID. "程序名

DATA: G_TYPE         TYPE C,
      G_MSTRING(225) TYPE C.


AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_PATH.
  PERFORM GET_PC_FILENAME.


START-OF-SELECTION.
  PERFORM UPLOAD_FILE.

  LOOP AT IT_TXT INTO WA_TXT.
    WA_TXT-ZSEL = 'X'.
    MODIFY IT_TXT FROM WA_TXT TRANSPORTING ZSEL.
  ENDLOOP.
  PERFORM FRM_DO_BDC.

END-OF-SELECTION.
  PERFORM FRM_SHOW_DATA.

*&---------------------------------------------------------------------*
*&      Form  GET_PC_FILENAME
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM GET_PC_FILENAME .
  CALL FUNCTION 'WS_FILENAME_GET'
    EXPORTING
      MASK             = '文本文件,*.txt.'
      MODE             = 'O'
    IMPORTING
      FILENAME         = P_PATH
    EXCEPTIONS
      INV_WINSYS       = 1
      NO_BATCH         = 2
      SELECTION_CANCEL = 3
      SELECTION_ERROR  = 4
      OTHERS           = 5.

  IF SY-SUBRC NE 0 AND SY-SUBRC NE 3.
    MESSAGE '请输入有效的文件名!' TYPE 'E'.
  ENDIF.
ENDFORM.                    " GET_PC_FILENAME
*&---------------------------------------------------------------------*
*&      Form  UPLOAD_FILE
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM UPLOAD_FILE .

  CALL FUNCTION 'GUI_UPLOAD'
    EXPORTING
      FILENAME                = P_PATH
      FILETYPE                = 'ASC'
      HAS_FIELD_SEPARATOR     = 'X'
*     HEADER_LENGTH           = 0
*     READ_BY_LINE            = 'X'
*     DAT_MODE                = ' '
*     CODEPAGE                = ' '
*     IGNORE_CERR             = ABAP_TRUE
*     REPLACEMENT             = '#'
*     CHECK_BOM               = ' '
*     VIRUS_SCAN_PROFILE      =
*    IMPORTING
*     FILELENGTH              = UP_COUNT
*     HEADER                  =
    TABLES
      DATA_TAB                = IT_TXT
    EXCEPTIONS
      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
      OTHERS                  = 17.
  IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ELSE.
    IF IT_TXT IS INITIAL.
      MESSAGE '上载数据为空' TYPE 'E'.
    ELSE.
      DELETE IT_TXT INDEX 1.
      IF IT_TXT IS INITIAL.
        MESSAGE '上载数据为空' TYPE 'E'.
      ELSE.

      ENDIF.
    ENDIF.
  ENDIF.

ENDFORM.                    " UPLOAD_FILE
*&---------------------------------------------------------------------*
*&      Form  FRM_SHOW_DATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM FRM_SHOW_DATA .
  WA_REPID = SY-REPID.                     "得到程序名
  IS_LAYOUT-ZEBRA = 'X'.                   "颜色相间显示
  IS_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.       "优化列宽选项
  IS_LAYOUT-BOX_FIELDNAME = 'ZSEL'.

  DATA: DE_POS TYPE I.

  DE_POS = DE_POS + 1.
  CLEAR WA_FIELDCAT.
  WA_FIELDCAT-COL_POS       = DE_POS.
*  WA_FIELDCAT-KEY           = 'X'.
  WA_FIELDCAT-FIELDNAME     = 'ICON'.
  WA_FIELDCAT-ICON          = 'X'.
  WA_FIELDCAT-SELTEXT_L     = ''.
  WA_FIELDCAT-SELTEXT_M     = ''.
  WA_FIELDCAT-SELTEXT_S     = ''.
  WA_FIELDCAT-DDICTXT       = 'L'.
  APPEND WA_FIELDCAT TO IT_FIELDCAT.

  DE_POS = DE_POS + 1.
  CLEAR WA_FIELDCAT.
  WA_FIELDCAT-COL_POS       = DE_POS.
*  WA_FIELDCAT-KEY           = 'X'.
  WA_FIELDCAT-FIELDNAME     = 'SAKNR'.
  WA_FIELDCAT-REF_TABNAME   = ''.
  WA_FIELDCAT-REF_FIELDNAME = ''.
  WA_FIELDCAT-SELTEXT_L     = '科目编码'.
  WA_FIELDCAT-SELTEXT_M     = '科目编码'.
  WA_FIELDCAT-SELTEXT_S     = '科目编码'.
  WA_FIELDCAT-DDICTXT       = 'L'.
  APPEND WA_FIELDCAT TO IT_FIELDCAT.

  DE_POS = DE_POS + 1.
  CLEAR WA_FIELDCAT.
  WA_FIELDCAT-COL_POS       = DE_POS.
*  WA_FIELDCAT-KEY           = 'X'.
  WA_FIELDCAT-FIELDNAME     = 'BUKRS'.
  WA_FIELDCAT-REF_TABNAME   = ''.
  WA_FIELDCAT-REF_FIELDNAME = ''.
  WA_FIELDCAT-SELTEXT_L     = '公司代码'.
  WA_FIELDCAT-SELTEXT_M     = '公司代码'.
  WA_FIELDCAT-SELTEXT_S     = '公司代码'.
  WA_FIELDCAT-DDICTXT       = 'L'.
  APPEND WA_FIELDCAT TO IT_FIELDCAT.


  DE_POS = DE_POS + 1.
  CLEAR WA_FIELDCAT.
  WA_FIELDCAT-COL_POS       = DE_POS.
*  WA_FIELDCAT-KEY           = 'X'.
  WA_FIELDCAT-FIELDNAME     = 'TXT'.
  WA_FIELDCAT-REF_TABNAME   = ''.
  WA_FIELDCAT-REF_FIELDNAME = ''.
  WA_FIELDCAT-SELTEXT_L     = '科目名称(短)'.
  WA_FIELDCAT-SELTEXT_M     = '科目名称(短)'.
  WA_FIELDCAT-SELTEXT_S     = '科目名称(短)'.
  WA_FIELDCAT-DDICTXT       = 'L'.
  APPEND WA_FIELDCAT TO IT_FIELDCAT.

  DE_POS = DE_POS + 1.
  CLEAR WA_FIELDCAT.
  WA_FIELDCAT-COL_POS       = DE_POS.
*  WA_FIELDCAT-KEY           = 'X'.
  WA_FIELDCAT-FIELDNAME     = 'TXT_LONG'.
  WA_FIELDCAT-REF_TABNAME   = ''.
  WA_FIELDCAT-REF_FIELDNAME = ''.
  WA_FIELDCAT-SELTEXT_L     = '科目名称(长)'.
  WA_FIELDCAT-SELTEXT_M     = '科目名称(长)'.
  WA_FIELDCAT-SELTEXT_S     = '科目名称(长)'.
  WA_FIELDCAT-DDICTXT       = 'L'.
  APPEND WA_FIELDCAT TO IT_FIELDCAT.


  DE_POS = DE_POS + 1.
  CLEAR WA_FIELDCAT.
  WA_FIELDCAT-COL_POS       = DE_POS.
*  WA_FIELDCAT-KEY           = 'X'.
  WA_FIELDCAT-FIELDNAME     = 'GLACCOUNT_TYPE'.
  WA_FIELDCAT-REF_TABNAME   = ''.
  WA_FIELDCAT-REF_FIELDNAME = ''.
  WA_FIELDCAT-SELTEXT_L     = '总账科目类型'.
  WA_FIELDCAT-SELTEXT_M     = '总账科目类型'.
  WA_FIELDCAT-SELTEXT_S     = '总账科目类型'.
  WA_FIELDCAT-DDICTXT       = 'L'.
  APPEND WA_FIELDCAT TO IT_FIELDCAT.

  DE_POS = DE_POS + 1.
  CLEAR WA_FIELDCAT.
  WA_FIELDCAT-COL_POS       = DE_POS.
*  WA_FIELDCAT-KEY           = 'X'.
  WA_FIELDCAT-FIELDNAME     = 'KTOKS'.
  WA_FIELDCAT-REF_TABNAME   = ''.
  WA_FIELDCAT-REF_FIELDNAME = ''.
  WA_FIELDCAT-SELTEXT_L     = '科目组'.
  WA_FIELDCAT-SELTEXT_M     = '科目组'.
  WA_FIELDCAT-SELTEXT_S     = '科目组'.
  WA_FIELDCAT-DDICTXT       = 'L'.
  APPEND WA_FIELDCAT TO IT_FIELDCAT.


  DE_POS = DE_POS + 1.
  CLEAR WA_FIELDCAT.
  WA_FIELDCAT-COL_POS       = DE_POS.
*  WA_FIELDCAT-KEY           = 'X'.
  WA_FIELDCAT-FIELDNAME     = 'WAERS'.
  WA_FIELDCAT-REF_TABNAME   = ''.
  WA_FIELDCAT-REF_FIELDNAME = ''.
  WA_FIELDCAT-SELTEXT_L     = '科目货币'.
  WA_FIELDCAT-SELTEXT_M     = '科目货币'.
  WA_FIELDCAT-SELTEXT_S     = '科目货币'.
  WA_FIELDCAT-DDICTXT       = 'L'.
  APPEND WA_FIELDCAT TO IT_FIELDCAT.

*  DE_POS = DE_POS + 1.
*  CLEAR WA_FIELDCAT.
*  WA_FIELDCAT-COL_POS       = DE_POS.
**  WA_FIELDCAT-KEY           = 'X'.
*  WA_FIELDCAT-FIELDNAME     = 'XKRES'.
*  WA_FIELDCAT-REF_TABNAME   = ''.
*  WA_FIELDCAT-REF_FIELDNAME = ''.
*  WA_FIELDCAT-SELTEXT_L     = '显示行项目'.
*  WA_FIELDCAT-SELTEXT_M     = '显示行项目'.
*  WA_FIELDCAT-SELTEXT_S     = '显示行项目'.
*  WA_FIELDCAT-DDICTXT       = 'L'.
*  APPEND WA_FIELDCAT TO IT_FIELDCAT.

  DE_POS = DE_POS + 1.
  CLEAR WA_FIELDCAT.
  WA_FIELDCAT-COL_POS       = DE_POS.
*  WA_FIELDCAT-KEY           = 'X'.
  WA_FIELDCAT-FIELDNAME     = 'ZUAWA'.
  WA_FIELDCAT-REF_TABNAME   = ''.
  WA_FIELDCAT-REF_FIELDNAME = ''.
  WA_FIELDCAT-SELTEXT_L     = '排序码'.
  WA_FIELDCAT-SELTEXT_M     = '排序码'.
  WA_FIELDCAT-SELTEXT_S     = '排序码'.
  WA_FIELDCAT-DDICTXT       = 'L'.
  APPEND WA_FIELDCAT TO IT_FIELDCAT.

  DE_POS = DE_POS + 1.
  CLEAR WA_FIELDCAT.
  WA_FIELDCAT-COL_POS       = DE_POS.
*  WA_FIELDCAT-KEY           = 'X'.
  WA_FIELDCAT-FIELDNAME     = 'FSTAG'.
  WA_FIELDCAT-REF_TABNAME   = ''.
  WA_FIELDCAT-REF_FIELDNAME = ''.
  WA_FIELDCAT-SELTEXT_L     = '字段状态组'.
  WA_FIELDCAT-SELTEXT_M     = '字段状态组'.
  WA_FIELDCAT-SELTEXT_S     = '字段状态组'.
  WA_FIELDCAT-DDICTXT       = 'L'.
  APPEND WA_FIELDCAT TO IT_FIELDCAT.

  DE_POS = DE_POS + 1.
  CLEAR WA_FIELDCAT.
  WA_FIELDCAT-COL_POS       = DE_POS.
*  WA_FIELDCAT-KEY           = 'X'.
  WA_FIELDCAT-FIELDNAME     = 'XINTB'.
  WA_FIELDCAT-REF_TABNAME   = ''.
  WA_FIELDCAT-REF_FIELDNAME = ''.
  WA_FIELDCAT-SELTEXT_L     = '自动记帐'.
  WA_FIELDCAT-SELTEXT_M     = '自动记帐'.
  WA_FIELDCAT-SELTEXT_S     = '自动记帐'.
  WA_FIELDCAT-DDICTXT       = 'L'.
  APPEND WA_FIELDCAT TO IT_FIELDCAT.

  DE_POS = DE_POS + 1.
  CLEAR WA_FIELDCAT.
  WA_FIELDCAT-COL_POS       = DE_POS.
*  WA_FIELDCAT-KEY           = 'X'.
  WA_FIELDCAT-FIELDNAME     = 'MITKZ'.
  WA_FIELDCAT-REF_TABNAME   = ''.
  WA_FIELDCAT-REF_FIELDNAME = ''.
  WA_FIELDCAT-SELTEXT_L     = '统驭科目的科目类别'.
  WA_FIELDCAT-SELTEXT_M     = '统驭科目的科目类别'.
  WA_FIELDCAT-SELTEXT_S     = '统驭科目的科目类别'.
  WA_FIELDCAT-DDICTXT       = 'L'.
  APPEND WA_FIELDCAT TO IT_FIELDCAT.

  DE_POS = DE_POS + 1.
  CLEAR WA_FIELDCAT.
  WA_FIELDCAT-COL_POS       = DE_POS.
*  WA_FIELDCAT-KEY           = 'X'.
  WA_FIELDCAT-FIELDNAME     = 'XOPVW'.
  WA_FIELDCAT-REF_TABNAME   = ''.
  WA_FIELDCAT-REF_FIELDNAME = ''.
  WA_FIELDCAT-SELTEXT_L     = '未清项目管理'.
  WA_FIELDCAT-SELTEXT_M     = '未清项目管理'.
  WA_FIELDCAT-SELTEXT_S     = '未清项目管理'.
  WA_FIELDCAT-DDICTXT       = 'L'.
  APPEND WA_FIELDCAT TO IT_FIELDCAT.


  DE_POS = DE_POS + 1.
  CLEAR WA_FIELDCAT.
  WA_FIELDCAT-COL_POS       = DE_POS.
*  WA_FIELDCAT-KEY           = 'X'.
  WA_FIELDCAT-FIELDNAME     = 'MWSKZ'.
  WA_FIELDCAT-REF_TABNAME   = ''.
  WA_FIELDCAT-REF_FIELDNAME = ''.
  WA_FIELDCAT-SELTEXT_L     = '税务类型'.
  WA_FIELDCAT-SELTEXT_M     = '税务类型'.
  WA_FIELDCAT-SELTEXT_S     = '税务类型'.
  WA_FIELDCAT-DDICTXT       = 'L'.
  APPEND WA_FIELDCAT TO IT_FIELDCAT.

  DE_POS = DE_POS + 1.
  CLEAR WA_FIELDCAT.
  WA_FIELDCAT-COL_POS       = DE_POS.
*  WA_FIELDCAT-KEY           = 'X'.
  WA_FIELDCAT-FIELDNAME     = 'XMWNO'.
  WA_FIELDCAT-REF_TABNAME   = ''.
  WA_FIELDCAT-REF_FIELDNAME = ''.
  WA_FIELDCAT-SELTEXT_L     = '允许含/不含税过帐'.
  WA_FIELDCAT-SELTEXT_M     = '允许含/不含税过帐'.
  WA_FIELDCAT-SELTEXT_S     = '允许含/不含税过帐'.
  WA_FIELDCAT-DDICTXT       = 'L'.
  APPEND WA_FIELDCAT TO IT_FIELDCAT.

  DE_POS = DE_POS + 1.
  CLEAR WA_FIELDCAT.
  WA_FIELDCAT-COL_POS       = DE_POS.
*  WA_FIELDCAT-KEY           = 'X'.
  WA_FIELDCAT-FIELDNAME     = 'XSALH'.
  WA_FIELDCAT-REF_TABNAME   = ''.
  WA_FIELDCAT-REF_FIELDNAME = ''.
  WA_FIELDCAT-SELTEXT_L     = '仅限以本位币记的余额'.
  WA_FIELDCAT-SELTEXT_M     = '仅限以本位币记的余额'.
  WA_FIELDCAT-SELTEXT_S     = '仅限以本位币记的余额'.
  WA_FIELDCAT-DDICTXT       = 'L'.
  APPEND WA_FIELDCAT TO IT_FIELDCAT.

  DE_POS = DE_POS + 1.
  CLEAR WA_FIELDCAT.
  WA_FIELDCAT-COL_POS       = DE_POS.
*  WA_FIELDCAT-KEY           = 'X'.
  WA_FIELDCAT-FIELDNAME     = 'KATYP'.
  WA_FIELDCAT-REF_TABNAME   = ''.
  WA_FIELDCAT-REF_FIELDNAME = ''.
  WA_FIELDCAT-SELTEXT_L     = '成本要素类别'.
  WA_FIELDCAT-SELTEXT_M     = '成本要素类别'.
  WA_FIELDCAT-SELTEXT_S     = '成本要素类别'.
  WA_FIELDCAT-DDICTXT       = 'L'.
  APPEND WA_FIELDCAT TO IT_FIELDCAT.

  DE_POS = DE_POS + 1.
  CLEAR WA_FIELDCAT.
  WA_FIELDCAT-COL_POS       = DE_POS.
*  WA_FIELDCAT-KEY           = 'X'.
  WA_FIELDCAT-FIELDNAME     = 'TYPE'.
  WA_FIELDCAT-REF_TABNAME   = ''.
  WA_FIELDCAT-REF_FIELDNAME = ''.
  WA_FIELDCAT-SELTEXT_L     = '消息类型: S 成功,E 错误'.
  WA_FIELDCAT-SELTEXT_M     = '消息类型: S 成功,E 错误'.
  WA_FIELDCAT-SELTEXT_S     = '消息类型: S 成功,E 错误'.
  WA_FIELDCAT-DDICTXT       = 'L'.
  APPEND WA_FIELDCAT TO IT_FIELDCAT.

  DE_POS = DE_POS + 1.
  CLEAR WA_FIELDCAT.
  WA_FIELDCAT-COL_POS       = DE_POS.
*  WA_FIELDCAT-KEY           = 'X'.
  WA_FIELDCAT-FIELDNAME     = 'MESSAGE'.
  WA_FIELDCAT-REF_TABNAME   = ''.
  WA_FIELDCAT-REF_FIELDNAME = ''.
  WA_FIELDCAT-SELTEXT_L     = '消息文本'.
  WA_FIELDCAT-SELTEXT_M     = '消息文本'.
  WA_FIELDCAT-SELTEXT_S     = '消息文本'.
  WA_FIELDCAT-DDICTXT       = 'L'.
  APPEND WA_FIELDCAT TO IT_FIELDCAT.

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
*     I_INTERFACE_CHECK  = ' '
*     I_BYPASSING_BUFFER = ' '
*     I_BUFFER_ACTIVE    = ' '
      I_CALLBACK_PROGRAM = WA_REPID
*     I_CALLBACK_PF_STATUS_SET          = 'SET_STATUS'
*     I_CALLBACK_USER_COMMAND           = 'USER_COMMAND'
*     I_CALLBACK_TOP_OF_PAGE            = ' '
*     I_CALLBACK_HTML_TOP_OF_PAGE       = ' '
*     I_CALLBACK_HTML_END_OF_LIST       = ' '
*     I_STRUCTURE_NAME   =
*     I_BACKGROUND_ID    = ' '
*     I_GRID_TITLE       =
*     I_GRID_SETTINGS    =
      IS_LAYOUT          = IS_LAYOUT
      IT_FIELDCAT        = IT_FIELDCAT
*     IT_EXCLUDING       =
*     IT_SPECIAL_GROUPS  =
*     IT_SORT            =
*     IT_FILTER          =
*     IS_SEL_HIDE        =
*     I_DEFAULT          = 'X'
*     I_SAVE             = ' '
*     IS_VARIANT         =
*     IT_EVENTS          =
*     IT_EVENT_EXIT      =
*     IS_PRINT           =
*     IS_REPREP_ID       =
*     I_SCREEN_START_COLUMN             = 0
*     I_SCREEN_START_LINE               = 0
*     I_SCREEN_END_COLUMN               = 0
*     I_SCREEN_END_LINE  = 0
*     I_HTML_HEIGHT_TOP  = 0
*     I_HTML_HEIGHT_END  = 0
*     IT_ALV_GRAPHICS    =
*     IT_HYPERLINK       =
*     IT_ADD_FIELDCAT    =
*     IT_EXCEPT_QINFO    =
*     IR_SALV_FULLSCREEN_ADAPTER        =
*   IMPORTING
*     E_EXIT_CAUSED_BY_CALLER           =
*     ES_EXIT_CAUSED_BY_USER            =
    TABLES
      T_OUTTAB           = IT_TXT
    EXCEPTIONS
      PROGRAM_ERROR      = 1
      OTHERS             = 2.
  IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.
ENDFORM.                    " FRM_SHOW_DATA
*&---------------------------------------------------------------------*
*&      Form  FRM_DO_BDC
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM FRM_DO_BDC .
  LOOP AT IT_TXT INTO WA_TXT WHERE ZSEL = 'X'.

    CLEAR: G_TYPE,
           G_MSTRING.

    PERFORM FRM_CALL_BAPI USING WA_TXT
                        CHANGING G_TYPE
                                 G_MSTRING.

    WA_TXT-TYPE = G_TYPE.
    WA_TXT-MESSAGE = G_MSTRING.

    CASE G_TYPE.
      WHEN 'S'.
        WA_TXT-ICON = ICON_GREEN_LIGHT.
      WHEN 'E'.
        WA_TXT-ICON = ICON_RED_LIGHT.
      WHEN OTHERS.
    ENDCASE.

    MODIFY IT_TXT FROM WA_TXT TRANSPORTING ICON TYPE MESSAGE.

  ENDLOOP.
ENDFORM.                    " FRM_DO_BDC


*&---------------------------------------------------------------------*
*& Form FRM_CALL_BAPI
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*      -->P_WA_TXT  text
*      <--P_G_TYPE  text
*      <--P_G_MSTRING  text
*&---------------------------------------------------------------------*
FORM FRM_CALL_BAPI  USING UW_TXT LIKE WA_TXT
                    CHANGING C_TYPE LIKE G_TYPE
                             C_MSTRING LIKE G_MSTRING.

  DATA: IT_ACCOUNT_NAMES TYPE GLACCOUNT_NAME_TABLE,
        WA_ACCOUNT_NAMES LIKE LINE OF IT_ACCOUNT_NAMES.

  DATA: IT_ACCOUNT_KEYWORDS TYPE GLACCOUNT_KEYWORD_TABLE,
        WA_ACCOUNT_KEYWORDS LIKE LINE OF IT_ACCOUNT_KEYWORDS.

  DATA: IT_ACCOUNT_CCODES TYPE GLACCOUNT_CCODE_TABLE,
        WA_ACCOUNT_CCODES LIKE LINE OF IT_ACCOUNT_CCODES.

  DATA: IT_ACCOUNT_CAREAS TYPE GLACCOUNT_CAREA_TABLE,
        WA_ACCOUNT_CAREAS LIKE LINE OF IT_ACCOUNT_CAREAS.

  DATA: WA_RETURN TYPE BAPIRET2,
        IT_RETURN LIKE STANDARD TABLE OF WA_RETURN.

  DATA: WA_ACCOUNT_COA TYPE GLACCOUNT_COA.

  DATA: G_KTOPL TYPE T001-KTOPL.
  DATA: G_KOKRS TYPE TKA01-KOKRS.

  CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
    EXPORTING
      INPUT  = WA_TXT-SAKNR
    IMPORTING
      OUTPUT = WA_TXT-SAKNR.


  SELECT SINGLE KTOPL
    FROM T001
    INTO G_KTOPL
   WHERE BUKRS EQ UW_TXT-BUKRS.

  CLEAR: G_KOKRS.
  SELECT SINGLE KOKRS
    FROM TKA02
    INTO G_KOKRS
   WHERE BUKRS EQ UW_TXT-BUKRS.

  CLEAR: WA_ACCOUNT_COA.
  WA_ACCOUNT_COA-KEYY-KTOPL = G_KTOPL.
  WA_ACCOUNT_COA-KEYY-SAKNR = UW_TXT-SAKNR.
  WA_ACCOUNT_COA-DATA-GLACCOUNT_TYPE = WA_TXT-GLACCOUNT_TYPE.
  WA_ACCOUNT_COA-DATA-KTOKS = WA_TXT-KTOKS.
  CASE WA_TXT-GLACCOUNT_TYPE.
    WHEN 'X'."资产负债表科目
      WA_ACCOUNT_COA-DATA-XBILK = 'X'.
    WHEN 'N'."营业外收支
      WA_ACCOUNT_COA-DATA-GVTYP = 'X'.
    WHEN 'P'."初级成本或收入
      WA_ACCOUNT_COA-DATA-GVTYP = 'X'.
    WHEN 'S'."次级成本
      WA_ACCOUNT_COA-DATA-GVTYP = 'X'.
  ENDCASE.
  SELECT SINGLE SAKNR
    FROM SKA1
    INTO @DATA(LV_SAKNR)
   WHERE KTOPL = @G_KTOPL
     AND SAKNR = @UW_TXT-SAKNR.
  IF SY-SUBRC = 0.
    WA_ACCOUNT_COA-ACTION = 'U'.
  ELSE.
    WA_ACCOUNT_COA-ACTION = 'I'.
  ENDIF.


  CLEAR: IT_ACCOUNT_NAMES.
  CLEAR: WA_ACCOUNT_NAMES.
  WA_ACCOUNT_NAMES-KEYY-KTOPL = G_KTOPL.
  WA_ACCOUNT_NAMES-KEYY-SAKNR = UW_TXT-SAKNR.
  WA_ACCOUNT_NAMES-KEYY-SPRAS = SY-LANGU.
  WA_ACCOUNT_NAMES-DATA-TXT20 = UW_TXT-TXT.
  WA_ACCOUNT_NAMES-DATA-TXT50 = UW_TXT-TXT_LONG.
  SELECT SINGLE SAKNR
    FROM SKA1
    INTO @LV_SAKNR
   WHERE KTOPL = @G_KTOPL
     AND SAKNR = @UW_TXT-SAKNR.
  IF SY-SUBRC = 0.
    WA_ACCOUNT_NAMES-ACTION = 'U'.
  ELSE.
    WA_ACCOUNT_NAMES-ACTION = 'I'.
  ENDIF.
  APPEND WA_ACCOUNT_NAMES TO IT_ACCOUNT_NAMES.


  CLEAR: IT_ACCOUNT_CCODES.
  CLEAR: WA_ACCOUNT_CCODES.
  WA_ACCOUNT_CCODES-KEYY-BUKRS = UW_TXT-BUKRS.
  WA_ACCOUNT_CCODES-KEYY-SAKNR = UW_TXT-SAKNR.
  WA_ACCOUNT_CCODES-DATA-WAERS = UW_TXT-WAERS.
  WA_ACCOUNT_CCODES-DATA-ZUAWA = UW_TXT-ZUAWA.
  WA_ACCOUNT_CCODES-DATA-FSTAG = UW_TXT-FSTAG.
  WA_ACCOUNT_CCODES-DATA-XINTB = UW_TXT-XINTB.
  WA_ACCOUNT_CCODES-DATA-MITKZ = UW_TXT-MITKZ.
  WA_ACCOUNT_CCODES-DATA-XOPVW = UW_TXT-XOPVW.
  WA_ACCOUNT_CCODES-DATA-MWSKZ = UW_TXT-MWSKZ.
  WA_ACCOUNT_CCODES-DATA-XMWNO = UW_TXT-XMWNO.
  WA_ACCOUNT_CCODES-DATA-XSALH = UW_TXT-XSALH.
  SELECT SINGLE SAKNR
    FROM SKB1
    INTO @LV_SAKNR
   WHERE BUKRS = @UW_TXT-BUKRS
     AND SAKNR = @UW_TXT-SAKNR.
  IF SY-SUBRC = 0.
    WA_ACCOUNT_CCODES-ACTION = 'U'.
  ELSE.
    WA_ACCOUNT_CCODES-ACTION = 'I'.
  ENDIF.
  APPEND WA_ACCOUNT_CCODES TO IT_ACCOUNT_CCODES.


  CLEAR: IT_ACCOUNT_CAREAS.
  IF WA_TXT-GLACCOUNT_TYPE = 'S' OR WA_TXT-GLACCOUNT_TYPE = 'P'.
    CLEAR: WA_ACCOUNT_CAREAS.
    WA_ACCOUNT_CAREAS-KEYY-KOKRS = G_KOKRS.
    WA_ACCOUNT_CAREAS-KEYY-SAKNR = UW_TXT-SAKNR.
    WA_ACCOUNT_CAREAS-DATA-KATYP = UW_TXT-KATYP.
    WA_ACCOUNT_CAREAS-FROMTO-DATAB = '20230101'.
    WA_ACCOUNT_CAREAS-FROMTO-DATBI = '99991231'.
    SELECT SINGLE KOKRS
      FROM CSKB
      INTO @DATA(LV_CSKB)
     WHERE KOKRS EQ @G_KOKRS
       AND KSTAR EQ @UW_TXT-SAKNR.
    IF SY-SUBRC = 0.
      WA_ACCOUNT_CAREAS-ACTION = 'U'.
    ELSE.
      WA_ACCOUNT_CAREAS-ACTION = 'I'.
    ENDIF.
    APPEND WA_ACCOUNT_CAREAS TO IT_ACCOUNT_CAREAS.
  ENDIF.

*  BREAK-POINT.
  CALL FUNCTION 'GL_ACCT_MASTER_SAVE'
*   EXPORTING
*     TESTMODE                 =
*     NO_SAVE_AT_WARNING       =
*     NO_AUTHORITY_CHECK       =
*     STORE_DATA_ONLY          =
    TABLES
      ACCOUNT_NAMES    = IT_ACCOUNT_NAMES
      ACCOUNT_KEYWORDS = IT_ACCOUNT_KEYWORDS
      ACCOUNT_CCODES   = IT_ACCOUNT_CCODES
      ACCOUNT_CAREAS   = IT_ACCOUNT_CAREAS
      RETURN           = IT_RETURN
    CHANGING
      ACCOUNT_COA      = WA_ACCOUNT_COA.
  LOOP AT IT_RETURN INTO WA_RETURN
                    WHERE TYPE = 'E' OR TYPE = 'A'.
    IF C_MSTRING IS INITIAL.
      C_MSTRING = WA_RETURN-MESSAGE.
    ELSE.
      CONCATENATE C_MSTRING
                  '//'
                  WA_RETURN-MESSAGE
                  INTO
                  C_MSTRING.
    ENDIF.
  ENDLOOP.
  IF SY-SUBRC = 0.
    CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'
*     IMPORTING
*       RETURN        =
      .
    C_TYPE = 'E'.
  ELSE.
    CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
      EXPORTING
        WAIT = 'X'
*     IMPORTING
*       RETURN        =
      .
    C_TYPE = 'S'.
    LOOP AT IT_RETURN INTO WA_RETURN.
      IF C_MSTRING IS INITIAL.
        C_MSTRING = WA_RETURN-MESSAGE.
      ELSE.
        CONCATENATE C_MSTRING
                    '//'
                    WA_RETURN-MESSAGE
                    INTO
                    C_MSTRING.
      ENDIF.
    ENDLOOP.
  ENDIF.
ENDFORM.

二、科目数据模版

科目编码100101000010010100101002010000
公司代码CHENCHENCHEN
科目名称(短)库存现金-人民币库存现金-美元银行存款-人民币
科目名称(长)库存现金-人民币库存现金-美元银行存款-人民币
总账科目类型XXX
科目组101010
科目货币CNYUSDCNY
排序码001001001
字段状态组Z110Z110Z110
只能自动记帐   
统驭科目的科目类别   
未清项目管理   
税务类型   
允许含/不含税过帐   
仅限以本位币记的余额   
成本要素类别   

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陈送平er

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值