批量上传SAP FI凭证上的附加的Note

*&---------------------------------------------------------------------*
*& Report  Z02FIUPNOTE
*&
*&---------------------------------------------------------------------*
*& FI Batch Document Note
*&
*&---------------------------------------------------------------------*

REPORT  Z02FIUPNOTE .

TYPES : BEGIN  OF TP_OUT ,
  BUKRS  LIKE BKPF -BUKRS ,
  GJAHR  LIKE BKPF -GJAHR ,
  BELNR  LIKE BKPF -BELNR ,
   TITLE  TYPE SO_OBJ_DES ,
  CONTENT  TYPE CHAR255 ,
   END  OF TP_OUT .

DATA GT_OUT  TYPE  TABLE  OF TP_OUT ,
      GS_OUT  TYPE TP_OUT .
DATA L_EXCEL_TAB  TYPE ALSMEX_TABLINE  OCCURS  WITH  HEADER  LINE .
FIELD-SYMBOLS <FS> .

SELECTION-SCREEN  BEGIN  OF  BLOCK B1  WITH  FRAME  TITLE  TEXT - 001 .
PARAMETERS :
            INPATH  TYPE RLGRAP -FILENAME .
SELECTION-SCREEN  END  OF  BLOCK B1 .

AT  SELECTION-SCREEN  ON  VALUE-REQUEST  FOR INPATH .
   PERFORM GET_PC_FILENAME  USING INPATH .

START-OF-SELECTION .
   PERFORM FRM_UPLOAD_DATA .
   PERFORM FRM_PROCESS_DATA .
*&---------------------------------------------------------------------*
*&      Form  FRM_UPLOAD_DATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM FRM_UPLOAD_DATA  .
   CALL  FUNCTION  'ALSM_EXCEL_TO_INTERNAL_TABLE'
     EXPORTING
      FILENAME                 INPATH
      I_BEGIN_COL              1
      I_BEGIN_ROW              2
      I_END_COL                5
      I_END_ROW                65535
     TABLES
      INTERN                   L_EXCEL_TAB
     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 .
   ENDIF .

   SORT L_EXCEL_TAB  BY ROW COL .
   LOOP  AT L_EXCEL_TAB .
     ASSIGN  COMPONENT L_EXCEL_TAB -COL  OF  STRUCTURE GS_OUT  TO <FS> .
     MOVE L_EXCEL_TAB - VALUE  TO <FS> .
     AT  END  OF ROW .
       APPEND GS_OUT  TO GT_OUT .
       CLEAR GS_OUT .
     ENDAT .
   ENDLOOP .
   IF GT_OUT  IS  INITIAL .
     MESSAGE  'No data found'  TYPE  'I' .
     STOP .
   ENDIF .
ENDFORM .                     " FRM_UPLOAD_DATA
*&---------------------------------------------------------------------*
*&      Form  GET_PC_FILENAME
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_INPATH  text
*----------------------------------------------------------------------*
FORM GET_PC_FILENAME   USING    P_INPATH .
   CALL  FUNCTION  'WS_FILENAME_GET'
     EXPORTING
      DEF_FILENAME      ' '
      DEF_PATH          ' '
       MASK              ',*.*  ,*.*. '
       MODE              'O'
       TITLE             ' '
     IMPORTING
      FILENAME          INPATH
     EXCEPTIONS
      INV_WINSYS        1
      NO_BATCH          2
      SELECTION_CANCEL  3
      SELECTION_ERROR   4
       OTHERS            5 .
ENDFORM .                     " GET_PC_FILENAME
*&---------------------------------------------------------------------*
*&      Form  FRM_PROCESS_DATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM FRM_PROCESS_DATA  .
   DATA MSG  TYPE STRING .
   DATA ANSWER .
   DATA  LINES  TYPE STRING .
   DATA FOLDER_ID          TYPE SOFDK .
   DATA LT_OBJHEAD  TYPE  STANDARD  TABLE  OF SOLI .
   DATA LT_OBJCONT  TYPE  STANDARD  TABLE  OF SOLI  WITH  HEADER  LINE .
   DATA L_OBJ_ID    TYPE SOODK .
   DATA L_OBJ_DATA  TYPE SOOD1 .
   DATA DOCUMENT_ID        TYPE SOFMK .
   DATA REL_DOC   TYPE BORIDENT .
   DATA IS_OBJECT  TYPE BORIDENT .
   DATA L_INDEX  TYPE SY - INDEX .
   CLEAR :MSG ,ANSWER , LINES  ,FOLDER_ID  ,LT_OBJHEAD ,LT_OBJCONT ,LT_OBJCONT[] ,L_OBJ_ID ,L_OBJ_DATA ,DOCUMENT_ID  ,IS_OBJECT ,REL_DOC  ,L_INDEX .

   LINES  LINES GT_OUT  .
   CONCATENATE   LINES  'lines of FI Document Note will be updated'  INTO MSG  SEPARATED  BY SPACE .

   CALL  FUNCTION  'POPUP_TO_CONFIRM'
     EXPORTING
      TEXT_QUESTION  MSG
     IMPORTING
      ANSWER         ANSWER .

   IF SY -SUBRC <>  0 .
   ENDIF .

   IF ANSWER  NE  '1' .
     STOP .
   ENDIF .

   CALL  FUNCTION  'SO_FOLDER_ROOT_ID_GET'
     EXPORTING
      REGION     'B'
     IMPORTING
      FOLDER_ID  FOLDER_ID
     EXCEPTIONS
       OTHERS     1 .

   LOOP  AT GT_OUT  INTO GS_OUT .
    L_INDEX  SY -TABIX .
     IF GS_OUT - TITLE  IS  INITIAL .
       WRITE :'Line ' L_INDEX  , 'title is blank, skip' .
       CLEAR GS_OUT .
       CONTINUE .
     ENDIF .
     IF GS_OUT -CONTENT  IS  INITIAL .
       WRITE :'Line ' L_INDEX  , 'content is blank, skip' .
       CLEAR GS_OUT .
       CONTINUE .
     ENDIF .

    LT_OBJCONT - LINE  GS_OUT -CONTENT .
     APPEND LT_OBJCONT .

    L_OBJ_DATA -OBJSNS  'O' .
    L_OBJ_DATA -OBJLA   SY -LANGU .
    L_OBJ_DATA -OBJDES  GS_OUT - TITLE .
    L_OBJ_DATA -FILE_EXT  'TXT' .


     CALL  FUNCTION  'SO_OBJECT_INSERT'
       EXPORTING
        FOLDER_ID              FOLDER_ID
        OBJECT_TYPE            'RAW'
        OBJECT_HD_CHANGE       L_OBJ_DATA
       IMPORTING
        OBJECT_ID              L_OBJ_ID
       TABLES
        OBJHEAD                LT_OBJHEAD
        OBJCONT                LT_OBJCONT
       EXCEPTIONS
        ACTIVE_USER_NOT_EXIST  35
        FOLDER_NOT_EXIST       6
        OBJECT_TYPE_NOT_EXIST  17
        OWNER_NOT_EXIST        22
        PARAMETER_ERROR        23
         OTHERS                 1000 .

     IF SY -SUBRC  0 .
      DOCUMENT_ID -FOLTP  FOLDER_ID -FOLTP .
      DOCUMENT_ID -FOLYR  FOLDER_ID -FOLYR .
      DOCUMENT_ID -FOLNO  FOLDER_ID -FOLNO .
      DOCUMENT_ID -DOCTP  L_OBJ_ID -OBJTP .
      DOCUMENT_ID -DOCYR  L_OBJ_ID -OBJYR .
      DOCUMENT_ID -DOCNO  L_OBJ_ID -OBJNO .

       CLEAR REL_DOC .
      REL_DOC -OBJKEY   DOCUMENT_ID .
      REL_DOC -OBJTYPE  'MESSAGE' .
       CONCATENATE GS_OUT -BUKRS GS_OUT -BELNR GS_OUT -GJAHR  INTO IS_OBJECT -OBJKEY .
      IS_OBJECT -OBJTYPE  'BKPF' .
       CALL  FUNCTION  'BINARY_RELATION_CREATE'
         EXPORTING
          OBJ_ROLEA     IS_OBJECT
          OBJ_ROLEB     REL_DOC
          RELATIONTYPE  'NOTE'
         EXCEPTIONS
           OTHERS        1 .
       IF SY -SUBRC  0 .
         WRITE :'Line ' L_INDEX  , 'updated FI Document Note successfully' .
         COMMIT  WORK .
       ELSE .
         WRITE :'Line ' L_INDEX  , 'updated FI Document Note unsuccessfully' .
         ROLLBACK  WORK .
       ENDIF .
     ELSE .
       WRITE :'Line ' L_INDEX  , 'updated FI Document Note successfully' .
     ENDIF .

     CLEAR :LT_OBJHEAD ,LT_OBJCONT ,LT_OBJCONT[] ,L_OBJ_ID ,L_OBJ_DATA ,DOCUMENT_ID  ,IS_OBJECT ,REL_DOC  ,L_INDEX .
     CLEAR GS_OUT .
   ENDLOOP .


ENDFORM .                     " FRM_PROCESS_DATA
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值