9KE0批导

 

  DATA lv_tabix TYPE sy-tabix .
  DATA l_tabix  TYPE sy-tabix VALUE 0.
  DATA lv_count TYPE char5.
  DATA gt_update TYPE TABLE OF ty_excel.
  DATA gs_update TYPE ty_excel.
  DATA wa_alv_next TYPE  ty_excel.

  DATA lt_return TYPE TABLE OF bapiret2 .
  DATA ls_return TYPE bapiret2.

  "导入定义
  DATA lt_glpca TYPE TABLE OF glpca.
  DATA ls_glpca TYPE glpca.
  DATA lt_documents TYPE    pcpp_t_posting_doc .       "4.6a
  DATA ls_documents        TYPE pcpp_s_posting_doc.
  DATA  l_records TYPE p.


  IF lv_flag IS INITIAL.
    LOOP AT gt_alv INTO gs_alv WHERE msg IS INITIAL.
      lv_tabix  = sy-tabix.

      "把序列号相同的数据全部放入 GT_UPDATE表
      lv_count = lv_count + 1 .
      gs_alv-num = lv_count.
      APPEND gs_alv TO gt_update.
      LOOP AT gt_update INTO gs_update WHERE buzei = lv_count.
        ls_glpca-rldnr = '8A'.
        ls_glpca-rrcty = '0'.
        ls_glpca-rvers = '000'.

        ls_glpca-ryear = gs_update-budat+(4).
        ls_glpca-drcrk = gs_update-shkzg.
        ls_glpca-poper = '001'.
        ls_glpca-docln  = gs_update-buzei.
        ls_glpca-rbukrs = gs_update-rbukrs.
        ls_glpca-rprctr = gs_update-rprctr.
*        ls_glpca-rhoart = '01'.
        ls_glpca-rfarea = gs_update-rfarea.
        ls_glpca-kokrs = 'CN00'.
        ls_glpca-racct = gs_update-racct.
*        ls_glpca-activ = 'PRC5'.
*        ls_glpca-afabe = '00'.
*        ls_glpca-shoart = '00'.
        ls_glpca-ksl   = gs_update-ksl..
        ls_glpca-sgtxt = gs_update-sgtxt.
        ls_glpca-budat = gs_update-budat.
        ls_glpca-bldat = gs_update-budat.
        ls_glpca-wsdat = gs_update-budat.
        ls_glpca-werks = gs_update-werks.
        ls_glpca-kostl = gs_update-kostl.
        ls_glpca-aufnr = gs_update-aufnr.
        ls_glpca-matnr = gs_update-matnr.
        ls_glpca-kunnr = gs_update-kunnr.
        ls_glpca-lifnr = gs_update-lifnr.
        APPEND ls_glpca TO lt_glpca.
        CLEAR ls_glpca.
      ENDLOOP.


      lv_tabix = lv_tabix + 1.
      READ TABLE gt_alv INTO wa_alv_next INDEX lv_tabix.
      IF sy-subrc <> 0 OR ( sy-subrc = 0 AND wa_alv_next-buzei < gs_alv-buzei ).
        CALL FUNCTION 'PCA_ACTUALS_POST'
          EXPORTING
            i_docty       = 'A0'
            i_batch       = ''
          IMPORTING
            e_records     = l_records
          TABLES
            t_glpca       = lt_glpca
            t_documents   = lt_documents
          EXCEPTIONS
            posting_error = 1
            OTHERS        = 2.
        .
        IF sy-subrc <> 0.
* Implement suitable error handling here
        ENDIF.

        LOOP AT gt_update INTO gs_update.
          READ TABLE lt_documents INTO ls_documents INDEX 1.
          IF ls_documents-key-docnr IS NOT INITIAL.
            COMMIT WORK AND WAIT.
            gs_update-msg = '导入成功:'&&   '凭证' && ls_documents-key-docnr && '过账成功'.
          ELSE.
            gs_update-msg = '导入失败'.
          ENDIF.
          APPEND gs_update TO lt_alv.
        ENDLOOP.

        "读取消息返回ALV
        CLEAR: lv_count,gt_update ,lt_glpca,lt_documents,wa_alv_next.
      ENDIF.

    ENDLOOP.

    CLEAR gt_alv.
    APPEND LINES OF lt_alv TO gt_alv.

  ELSE.
    MESSAGE TEXT-e04 TYPE 'S'DISPLAY LIKE 'E'.
  ENDIF.

 

posted @ 2023-12-14 13:28  YangMeiko  阅读(18)  评论(0)    收藏  举报