

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.