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

本博客介绍了一个流程,用于从Excel文件批量导入FI文档注释,并对其进行处理。包括上传数据、解析数据和更新文档注释。适用于FI业务场景下的文档管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

*&---------------------------------------------------------------------*
*& 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.

DATAGT_OUT TYPE TABLE OF TP_OUT,
      GS_OUT TYPE TP_OUT.
DATAL_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 LINESGT_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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值