注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

XINBO'S SAP BLOG

你所浪费的今天,是昨天死去的人奢望的明天。你所厌恶的现在,是未来的你回不去的曾经

 
 
 

日志

 
 

BAPI_ACC_DOCUMENT_POST  

2009-12-02 16:36:07|  分类: FUCTIONS |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

REPORT ZTEST.

TYPE-POOLS: SLIS.

DATA: BEGIN OF RECORD OCCURS 0 ,

         DATUM LIKE SY-DATUM,      "凭证日期

         GJAHR LIKE BKPF-GJAHR,    "年度

         NEWBS LIKE RF05A-NEWBS,   "记账码

         SAKNR LIKE BSEG-SAKNR,    "总帐科目编号

         DMBTR LIKE BSEG-DMBTR,    "金额

         MATNR LIKE VBAP-MATNR,    "物料

         WERKS LIKE BSEG-WERKS,    "工厂

         KOSTL LIKE BSEG-KOSTL,    "成本中心

         SGTXT LIKE BSEG-SGTXT,    "项目文本

      END OF RECORD.

DATA: DOCUMENTHEADER LIKE BAPIACHE09,

      ACCOUNTGL LIKE BAPIACGL09 OCCURS 0 WITH HEADER LINE,

      CURRENCYAMOUNT LIKE BAPIACCR09  OCCURS 0 WITH HEADER LINE,

      RETURN LIKE BAPIRET2 OCCURS 0 WITH HEADER LINE,

      L_BUZEI LIKE BSEG-BUZEI.

DATA: BEGIN OF GT_WRITE  OCCURS 0,

         MESSAGE(50) TYPE C,

         END OF GT_WRITE.

DATA: WS_FIELDCAT TYPE LVC_T_FCAT,

      WS_LAYOUT          TYPE LVC_S_LAYO.

SELECTION-SCREEN:BEGIN OF BLOCK BLK1 WITH FRAME  TITLE TEXT-001.

PARAMETERS: P_FILE LIKE RLGRAP-FILENAME MEMORY ID M01.

SELECTION-SCREEN SKIP .

SELECTION-SCREEN END OF BLOCK BLK1.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.

  PERFORM SUB_FIND USING P_FILE.    "选择文件

***start of selection

START-OF-SELECTION.

  IF P_FILE IS INITIAL.

    MESSAGE '请输入导入文件的路径' TYPE 'I'.

    STOP.

  ENDIF.

  PERFORM SUB_UOLOAD_DATA.

  PERFORM INSERT_DATE.

  PERFORM SHOW_WRMSG.

END-OF-SELECTION.

*&---------------------------------------------------------------------*

*&      Form  SUB_FIND

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*      -->P_P_FILE  text

*----------------------------------------------------------------------*

FORM SUB_FIND  USING    P_P_FILE.

  DATA: L_FILETAB   TYPE FILETABLE,

        L_RC        TYPE I.

  CLEAR L_FILETAB.

  REFRESH L_FILETAB.

  CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG

    EXPORTING

      DEFAULT_FILENAME     = '*.xls'

      FILE_FILTER          = '*.xls'

      INITIAL_DIRECTORY    = 'C:\'

      MULTISELECTION       = ''

    CHANGING

      FILE_TABLE           = L_FILETAB

      RC                   = L_RC

    EXCEPTIONS

      CNTL_ERROR           = 1

      ERROR_NO_GUI         = 2

      NOT_SUPPORTED_BY_GUI = 3

      OTHERS               = 4.

* Get file path

  CHECK L_RC EQ 1.

  READ TABLE L_FILETAB INDEX 1 INTO P_FILE.

ENDFORM.                    " sub_find

*&---------------------------------------------------------------------*

*&      Form  SUB_UOLOAD_DATA

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM SUB_UOLOAD_DATA .

  DATA: BEGIN OF I_EXCEL OCCURS 0.

          INCLUDE STRUCTURE ALSMEX_TABLINE.

  DATA: END OF I_EXCEL.

  DATA: L_ANSWER(1) TYPE C.

  DATA: L_COLUMN TYPE I.

  FIELD-SYMBOLS: <FS>.

  DATA: L_PATHNAME LIKE RLGRAP-FILENAME.

  DATA:

    C_BEGIN_ROW TYPE I VALUE 1,       "Beginning row of excel file

    C_BEGIN_COL TYPE I VALUE 1,       "Beginning column of excel file

    C_END_ROW   TYPE I VALUE 10000,   "Ending row of excel file

    C_END_COL   TYPE I VALUE 10.      "Ending column of excel file

  MOVE P_FILE TO L_PATHNAME.

  CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'

    EXPORTING

      FILENAME                = L_PATHNAME

      I_BEGIN_COL             = C_BEGIN_COL

      I_BEGIN_ROW             = C_BEGIN_ROW

      I_END_COL               = C_END_COL

      I_END_ROW               = C_END_ROW

    TABLES

      INTERN                  = I_EXCEL

    EXCEPTIONS

      INCONSISTENT_PARAMETERS = 1

      UPLOAD_OLE              = 2

      OTHERS                  = 3.

  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 I_EXCEL[] IS INITIAL.

      CALL FUNCTION 'POPUP_TO_CONFIRM_WITH_MESSAGE'

        EXPORTING

          DIAGNOSETEXT1 = '数据为空!'

          TEXTLINE1     = '请检查文件是否正确'

          TITEL         = '警告'

        IMPORTING

          ANSWER        = L_ANSWER.

      LEAVE TO SCREEN 0.

    ELSE.

      DELETE I_EXCEL WHERE ROW = '0001'.

      SORT I_EXCEL BY ROW COL.

      LOOP AT I_EXCEL.

        MOVE I_EXCEL-COL TO L_COLUMN.

        ASSIGN COMPONENT L_COLUMN OF STRUCTURE RECORD TO <FS>.

        MOVE I_EXCEL-VALUE TO <FS>.

        AT END OF ROW.

          APPEND RECORD.

          CLEAR RECORD.

        ENDAT.

      ENDLOOP.

    ENDIF.

  ENDIF.

ENDFORM.                    " SUB_UOLOAD_DATA

*&---------------------------------------------------------------------*

*&      Form  BDC_DATE

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM INSERT_DATE .

  LOOP AT RECORD.

    L_BUZEI = L_BUZEI + 10.

    IF RECORD-NEWBS = 50.

      RECORD-DMBTR = - RECORD-DMBTR.

    ELSE.

    ENDIF.

    CURRENCYAMOUNT-AMT_DOCCUR = RECORD-DMBTR.

    CURRENCYAMOUNT-AMT_BASE = CURRENCYAMOUNT-AMT_DOCCUR.

    CURRENCYAMOUNT-CURRENCY = 'CNY'.

    CURRENCYAMOUNT-ITEMNO_ACC = L_BUZEI.

    APPEND CURRENCYAMOUNT.

    CLEAR CURRENCYAMOUNT.

    ACCOUNTGL-ITEMNO_ACC = L_BUZEI.

    ACCOUNTGL-ITEM_TEXT = RECORD-SGTXT.

    ACCOUNTGL-MATERIAL = RECORD-MATNR.

    ACCOUNTGL-PLANT = RECORD-WERKS.

    ACCOUNTGL-COSTCENTER = RECORD-KOSTL.

    ACCOUNTGL-GL_ACCOUNT = RECORD-SAKNR.

    APPEND ACCOUNTGL.

    CLEAR: ACCOUNTGL.

    DOCUMENTHEADER-FISC_YEAR = RECORD-GJAHR.

    DOCUMENTHEADER-DOC_DATE = RECORD-DATUM.

    DOCUMENTHEADER-PSTNG_DATE = RECORD-DATUM.

    DOCUMENTHEADER-COMP_CODE = '1000'.

    DOCUMENTHEADER-USERNAME = SY-UNAME.

    DOCUMENTHEADER-DOC_TYPE = 'ZJ'.

  ENDLOOP.

  CALL FUNCTION 'BAPI_ACC_DOCUMENT_POST'

    EXPORTING

      DOCUMENTHEADER = DOCUMENTHEADER

    TABLES

      ACCOUNTGL      = ACCOUNTGL

      CURRENCYAMOUNT = CURRENCYAMOUNT

      RETURN         = RETURN.

  DELETE RETURN WHERE TYPE <> 'E'.

  IF LINES( RETURN ) = 0.

    COMMIT WORK.

  ELSE.

    LOOP AT RETURN.

      GT_WRITE-MESSAGE = RETURN-MESSAGE.

      APPEND GT_WRITE.

    ENDLOOP.

  ENDIF.

ENDFORM.                    " BDC_DATE

*&---------------------------------------------------------------------*

*&      Form  SHOW_WRMSG

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM SHOW_WRMSG .

  IF LINES( RETURN ) = 0.

    WRITE '数据导入成功!'.

    STOP.

  ENDIF.

  PERFORM F_INPUT_FIELDCAT USING:

                                 'MESSAGE' '错误提示'.

  WS_LAYOUT-CWIDTH_OPT = 'X'.

  WS_LAYOUT-ZEBRA = 'X'.

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'

    EXPORTING

      I_CALLBACK_PROGRAM = SY-REPID

      IS_LAYOUT_LVC      = WS_LAYOUT

      IT_FIELDCAT_LVC    = WS_FIELDCAT[]

    TABLES

      T_OUTTAB           = GT_WRITE[]

    EXCEPTIONS

      PROGRAM_ERROR      = 1

      OTHERS             = 2.

ENDFORM.                    " SHOW_WRMSG

*&---------------------------------------------------------------------*

*&      Form  F_INPUT_FIELDCAT

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*      -->VALUE(P_FIELD)  text

*      -->VALUE(P_NAME)   text

*----------------------------------------------------------------------*

FORM F_INPUT_FIELDCAT USING  VALUE(P_FIELD)

                             VALUE(P_NAME).

  DATA: ST_FIELDCAT TYPE LVC_S_FCAT."slis_fieldcat_alv.

  ST_FIELDCAT-FIELDNAME   =   P_FIELD.

  ST_FIELDCAT-SCRTEXT_M   =   P_NAME.

  APPEND ST_FIELDCAT TO WS_FIELDCAT.

  CLEAR ST_FIELDCAT.

ENDFORM.                    "F_INPUT_FIELDCAT

  评论这张
 
阅读(1687)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017