BAPI_ACC_DOCUMENT_POST

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

*& Report  ZFI_PROFIT_DOCUMENT

*&

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

*&

*&

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

REPORT  ZFI_PROFIT_DOCUMENT.

TABLES:MSEG,

MKPF,

ZFI_PROFIT_DOC.

TYPES:BEGIN OF TY_MSEG,

MBLNR TYPE MSEG-MBLNR,

MJAHR TYPE MSEG-MJAHR,

ZEILE TYPE MSEG-ZEILE,

BUKRS TYPE MSEG-BUKRS,

BWART TYPE MSEG-BWART,

MATNR TYPE MSEG-MATNR,

WERKS TYPE MSEG-WERKS,

MENGE TYPE MSEG-MENGE,

UMWRK TYPE MSEG-UMWRK,

PRCTR TYPE MSEG-PRCTR,

PPRCTR TYPE MSEG-PPRCTR,

SOBKZ TYPE MSEG-SOBKZ,

PS_PSP_PNR TYPE MSEG-PS_PSP_PNR,

END OF TY_MSEG.

DATA:IT_MSEG TYPE TABLE OF TY_MSEG WITH HEADER LINE.

DATA:ITAB TYPE TABLE OF ZFI_PROFIT_DOC WITH HEADER LINE.

DATA:IT_RESULT TYPE TABLE OF ZFI_PROFIT_DOC WITH HEADER LINE.

TYPES:BEGIN OF TY_MBEW ,

MATNR TYPE MBEW-MATNR,

BWKEY TYPE MBEW-BWKEY,

STPRS TYPE MBEW-STPRS,  "标准价格

PEINH TYPE MBEW-PEINH,

BWPRH TYPE MBEW-BWPRH,                                "商业价格1

BWPH1 TYPE MBEW-BWPH1,                                "商业价格2

BWPEI TYPE MBEW-BWPEI,

END OF TY_MBEW.

DATA:IT_MBEW TYPE TABLE OF TY_MBEW WITH HEADER LINE.

DATA:G_STPRS1 TYPE MBEW-STPRS.

DATA:G_STPRS2 TYPE MBEW-STPRS.

DATA:G_STPRS3 TYPE MBEW-STPRS.

TYPES:BEGIN OF TY_QBEW,

MATNR TYPE QBEW-MATNR,

BWKEY TYPE QBEW-BWKEY,

PSPNR TYPE QBEW-PSPNR,

STPRS TYPE MBEW-STPRS,  "标准价格

PEINH TYPE MBEW-PEINH,

END OF TY_QBEW.

DATA:IT_QBEW TYPE TABLE OF TY_QBEW WITH HEADER LINE.

DATA:DOCUMENTHEADER TYPE BAPIACHE09.

DATA:OBJ_KEY TYPE BAPIACHE09-OBJ_KEY.

DATA:ACCOUNTGL TYPE TABLE OF BAPIACGL09 WITH HEADER LINE.

DATA:CURRENCYAMOUNT TYPE TABLE OF BAPIACCR09 WITH HEADER LINE.

DATA:RETURN TYPE TABLE OF BAPIRET2 WITH HEADER LINE.

DATA:G_FLAG(1).

type-pools: slis.

data:    ws_fieldcat       type slis_t_fieldcat_alv with header line.

data:    ws_fieldgroups_tab type slis_t_sp_group_alv,

ws_layout          type slis_layout_alv,

ws_sortfields_tab  type slis_t_sortinfo_alv with header line.

data: nn type i value 0.

data: v_repid like sy-repid.

data: title type lvc_title .

data: gt_events type slis_t_event.

data:gs_events like line of gt_events.

data:gt_event_exit type slis_t_event_exit.

data:gs_event_exit type slis_event_exit.

*ADDED BY SHIMING 20091117

TYPES:BEGIN OF TY_T001,

BUKRS TYPE T001-BUKRS,

BUTXT TYPE T001-BUTXT,

END OF TY_T001.

DATA:GT_T001 TYPE TABLE OF TY_T001 WITH HEADER LINE.

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

SELECT-OPTIONS:S_BUKRS FOR MSEG-BUKRS OBLIGATORY DEFAULT ‘6000‘.

SELECT-OPTIONS:S_BUDAT FOR MKPF-BUDAT.

SELECT-OPTIONS:S_MBLNR FOR MKPF-MBLNR.

SELECTION-SCREEN SKIP.

parameters:P_POST  RADIOBUTTON GROUP SHI,

P_DISP  RADIOBUTTON GROUP SHI,

P_BLDAT TYPE BKPF-BLDAT.

SELECTION-SCREEN END OF BLOCK MAIN.

at selection-screen.

REFRESH GT_T001.CLEAR GT_T001.

SELECT BUKRS

BUTXT

FROM T001

INTO TABLE GT_T001

WHERE BUKRS IN S_BUKRS.

LOOP AT GT_T001.

AUTHORITY-CHECK OBJECT ‘F_BKPF_BUK‘

ID ‘BUKRS‘ FIELD GT_T001-BUKRS

ID ‘ACTVT‘ DUMMY.

IF SY-SUBRC <> 0.

MESSAGE E013(ZFICO001) WITH GT_T001-BUKRS.

ENDIF.

ENDLOOP.

START-OF-SELECTION.

IF P_POST = ‘X‘.

PERFORM FRM_GET_DATA.

PERFORM FRM_POST_DATA.

PERFORM FRM_DIS_DATA.

ELSE.

PERFORM FRM_GET_LOG.

PERFORM FRM_DIS_LOG.

ENDIF.

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

*&      Form  FRM_GET_DATA

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

*       text

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

*  -->  p1        text

*  <--  p2        text

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

FORM FRM_GET_DATA .

IF S_BUDAT[] IS INITIAL.

S_BUDAT-SIGN = ‘I‘.

S_BUDAT-OPTION = ‘EQ‘.

S_BUDAT-LOW = SY-DATUM.

APPEND S_BUDAT.

ENDIF.

SELECT A~MBLNR

A~MJAHR

A~ZEILE

A~BUKRS

A~BWART

A~MATNR

A~WERKS

A~MENGE

A~UMWRK

A~PRCTR

A~PPRCTR

A~SOBKZ

A~PS_PSP_PNR

INTO TABLE IT_MSEG

FROM MSEG AS A

INNER JOIN MKPF AS B

ON A~MBLNR = B~MBLNR

AND A~MJAHR = B~MJAHR

WHERE A~BUKRS IN S_BUKRS

AND B~BUDAT IN S_BUDAT

AND A~XAUTO = ‘‘

AND ( A~BWART = ‘Z31‘ OR A~BWART = ‘Z71‘ )

AND A~MBLNR IN S_MBLNR.

SELECT *

FROM ZFI_PROFIT_DOC

INTO TABLE ITAB

WHERE BUKRS IN S_BUKRS.

LOOP AT IT_MSEG.

CLEAR ITAB.

READ TABLE ITAB WITH KEY MBLNR = IT_MSEG-MBLNR

MJAHR = IT_MSEG-MJAHR

ZEILE = IT_MSEG-ZEILE

FLAG = ‘‘.

IF SY-SUBRC = 0.

DELETE IT_MSEG.

CONTINUE.

ENDIF.

ENDLOOP.

DELETE ITAB WHERE FLAG = ‘‘.

IF ITAB[] IS NOT INITIAL.

SELECT MBLNR

MJAHR

ZEILE

BUKRS

BWART

MATNR

WERKS

MENGE

UMWRK

PRCTR

PPRCTR

SOBKZ

PS_PSP_PNR

APPENDING TABLE IT_MSEG

FROM MSEG

FOR ALL ENTRIES IN ITAB

WHERE MBLNR = ITAB-MBLNR

AND MJAHR = ITAB-MJAHR

AND ZEILE = ITAB-ZEILE.

ENDIF.

IF IT_MSEG[] IS INITIAL.

MESSAGE ‘NO RECORD!‘ TYPE ‘E‘.

ENDIF.

SORT IT_MSEG BY MBLNR MJAHR ZEILE.

DELETE ADJACENT DUPLICATES FROM IT_MSEG COMPARING MBLNR MJAHR ZEILE.

IF IT_MSEG[] IS NOT INITIAL.

SELECT MATNR

BWKEY

STPRS

PEINH

BWPRH

BWPH1

BWPEI

FROM MBEW

INTO TABLE IT_MBEW

FOR ALL ENTRIES IN IT_MSEG

WHERE MATNR = IT_MSEG-MATNR

AND BWKEY = IT_MSEG-WERKS.

SELECT MATNR

BWKEY

PSPNR

STPRS

PEINH

FROM QBEW

INTO TABLE IT_QBEW

FOR ALL ENTRIES IN IT_MSEG

WHERE MATNR = IT_MSEG-MATNR

AND BWKEY = IT_MSEG-WERKS

AND PSPNR = IT_MSEG-PS_PSP_PNR.

ENDIF.

ENDFORM.                    " FRM_GET_DATA

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

*&      Form  FRM_POST_DATA

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

*       text

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

*  -->  p1        text

*  <--  p2        text

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

FORM FRM_POST_DATA .

LOOP AT IT_MSEG.

MOVE-CORRESPONDING IT_MSEG TO IT_RESULT.

CLEAR DOCUMENTHEADER.CLEAR G_STPRS1.CLEAR G_STPRS2.CLEAR G_STPRS3.

REFRESH ACCOUNTGL .CLEAR ACCOUNTGL.

REFRESH CURRENCYAMOUNT. CLEAR CURRENCYAMOUNT.

CLEAR OBJ_KEY.CLEAR RETURN.REFRESH RETURN.

DOCUMENTHEADER-BUS_ACT = ‘RFBU‘.

DOCUMENTHEADER-USERNAME = SY-UNAME.

DOCUMENTHEADER-COMP_CODE = IT_MSEG-BUKRS.

*    DOCUMENTHEADER-DOC_DATE = SY-DATUM.

*    DOCUMENTHEADER-PSTNG_DATE = SY-DATUM.

*    DOCUMENTHEADER-FISC_YEAR = SY-DATUM+0(4).

*    DOCUMENTHEADER-FIS_PERIOD = SY-DATUM+4(2).

*   CUIJJ AT 20100701

DOCUMENTHEADER-DOC_DATE = P_BLDAT.

DOCUMENTHEADER-PSTNG_DATE = P_BLDAT.

DOCUMENTHEADER-FISC_YEAR = P_BLDAT+0(4).

DOCUMENTHEADER-FIS_PERIOD = P_BLDAT+4(2).

DOCUMENTHEADER-DOC_TYPE = ‘SA‘.

ACCOUNTGL-ITEMNO_ACC = ‘10‘.

ACCOUNTGL-GL_ACCOUNT = ‘9820000000‘.

ACCOUNTGL-PROFIT_CTR = IT_MSEG-PRCTR.

APPEND ACCOUNTGL.

CLEAR ACCOUNTGL.

ACCOUNTGL-ITEMNO_ACC = ‘20‘.

ACCOUNTGL-GL_ACCOUNT = ‘9830000000‘.

ACCOUNTGL-PROFIT_CTR = IT_MSEG-PRCTR.

APPEND ACCOUNTGL.

CLEAR ACCOUNTGL.

CLEAR IT_MBEW.

READ TABLE IT_MBEW WITH KEY MATNR = IT_MSEG-MATNR

BWKEY = IT_MSEG-WERKS.

IF IT_MSEG-SOBKZ = ‘Q‘.

CLEAR IT_QBEW.

READ TABLE IT_QBEW WITH KEY MATNR = IT_MSEG-MATNR

BWKEY = IT_MSEG-WERKS

PSPNR = IT_MSEG-PS_PSP_PNR.

ENDIF.

IF IT_MSEG-BWART = ‘Z31‘.

IF IT_MBEW-PEINH = 0 .

IT_MBEW-PEINH = 1.

ENDIF.

IF IT_QBEW-PEINH = 0 .

IT_QBEW-PEINH = 1.

ENDIF.

IF IT_MBEW-BWPEI = 0.

IT_MBEW-BWPEI = 1.

ENDIF.

IF IT_MSEG-SOBKZ EQ  ‘Q‘.

G_STPRS1 = IT_QBEW-STPRS * IT_MSEG-MENGE / IT_QBEW-PEINH.

ELSE.

G_STPRS1 = IT_MBEW-STPRS * IT_MSEG-MENGE / IT_MBEW-PEINH.

ENDIF.

G_STPRS2 = IT_MBEW-BWPRH * IT_MSEG-MENGE / IT_MBEW-BWPEI.

G_STPRS3 = G_STPRS1 - G_STPRS2.

ELSEIF IT_MSEG-BWART = ‘Z71‘.

IF IT_MBEW-PEINH = 0.

IT_MBEW-PEINH = 1.

ENDIF.

IF IT_QBEW-PEINH = 0 .

IT_QBEW-PEINH = 1.

ENDIF.

IF IT_MBEW-BWPEI = 0.

IT_MBEW-BWPEI = 1.

ENDIF.

IF IT_MSEG-SOBKZ EQ  ‘Q‘.

G_STPRS1 = IT_QBEW-STPRS * IT_MSEG-MENGE / IT_QBEW-PEINH.

ELSE.

G_STPRS1 = IT_MBEW-STPRS * IT_MSEG-MENGE / IT_MBEW-PEINH.

ENDIF.

G_STPRS2 = IT_MBEW-BWPH1 * IT_MSEG-MENGE / IT_MBEW-BWPEI.

G_STPRS3 = G_STPRS1 - G_STPRS2.

ENDIF.

IF G_STPRS3 NE 0.

ACCOUNTGL-ITEMNO_ACC = ‘30‘.

ACCOUNTGL-GL_ACCOUNT = ‘9810000000‘.

ACCOUNTGL-PROFIT_CTR = IT_MSEG-PRCTR.

APPEND ACCOUNTGL.

CLEAR ACCOUNTGL.

CURRENCYAMOUNT-ITEMNO_ACC = ‘30‘.

CURRENCYAMOUNT-CURRENCY = ‘CNY‘.

*CHANGED BY SHIMING 20100330

*     IF G_STPRS3 > 0.

CURRENCYAMOUNT-AMT_DOCCUR = G_STPRS3 * -1.

*    ELSE.

*       CURRENCYAMOUNT-AMT_DOCCUR = G_STPRS3 .

*     ENDIF.

APPEND CURRENCYAMOUNT.

CLEAR CURRENCYAMOUNT.

ENDIF.

CURRENCYAMOUNT-ITEMNO_ACC = ‘10‘.

CURRENCYAMOUNT-CURRENCY = ‘CNY‘.

CURRENCYAMOUNT-AMT_DOCCUR = G_STPRS1.

APPEND CURRENCYAMOUNT.

CLEAR CURRENCYAMOUNT.

CURRENCYAMOUNT-ITEMNO_ACC = ‘20‘.

CURRENCYAMOUNT-CURRENCY = ‘CNY‘.

CURRENCYAMOUNT-AMT_DOCCUR = G_STPRS2 * -1.

APPEND CURRENCYAMOUNT.

CLEAR CURRENCYAMOUNT.

CALL FUNCTION ‘BAPI_ACC_DOCUMENT_POST‘

EXPORTING

DOCUMENTHEADER          = DOCUMENTHEADER

*   CUSTOMERCPD             =

*   CONTRACTHEADER          =

IMPORTING

*   OBJ_TYPE                =

OBJ_KEY                 = OBJ_KEY

*   OBJ_SYS                 =

TABLES

ACCOUNTGL               = ACCOUNTGL

*   ACCOUNTRECEIVABLE       =

*   ACCOUNTPAYABLE          =

*   ACCOUNTTAX              =

CURRENCYAMOUNT          = CURRENCYAMOUNT

*   CRITERIA                =

*   VALUEFIELD              =

*   EXTENSION1              =

RETURN                  = RETURN

*   PAYMENTCARD             =

*   CONTRACTITEM            =

*   EXTENSION2              =

*   REALESTATE              =

*   ACCOUNTWT               =

.

CLEAR RETURN.

LOOP AT RETURN WHERE ( TYPE = ‘E‘ OR TYPE = ‘A‘ ) AND NUMBER NE ‘609‘ .

G_FLAG = ‘X‘.

IT_RESULT-DATUM = SY-DATUM.

IT_RESULT-UZEIT = SY-UZEIT.

IT_RESULT-FLAG = ‘X‘.

CONCATENATE ‘调出凭证出错:‘ RETURN-MESSAGE INTO IT_RESULT-MESSAGE.

APPEND IT_RESULT.

CLEAR IT_RESULT.

EXIT.

ENDLOOP.

IF G_FLAG = ‘X‘.

CALL FUNCTION ‘BAPI_TRANSACTION_ROLLBACK‘.

CONTINUE.

ELSE.

CALL FUNCTION ‘BAPI_TRANSACTION_COMMIT‘.

IT_RESULT-BELNR = OBJ_KEY+0(10).

IT_RESULT-GJAHR = OBJ_KEY+14(4).

wait up to 1 seconds.

**第二张凭证.

IF G_STPRS3 = 0.

IT_RESULT-MESSAGE = ‘调出凭证过帐成功,差额为0,无调入凭证!‘.

IT_RESULT-DATUM = SY-DATUM.

IT_RESULT-UZEIT = SY-UZEIT.

APPEND IT_RESULT.

CLEAR IT_RESULT.

CONTINUE.

ENDIF.

REFRESH ACCOUNTGL .CLEAR ACCOUNTGL.

REFRESH CURRENCYAMOUNT. CLEAR CURRENCYAMOUNT.

CLEAR OBJ_KEY.CLEAR RETURN.REFRESH RETURN.

CLEAR G_FLAG.

ACCOUNTGL-ITEMNO_ACC = ‘10‘.

ACCOUNTGL-GL_ACCOUNT = ‘9820000000‘.

ACCOUNTGL-PROFIT_CTR = IT_MSEG-PPRCTR.

APPEND ACCOUNTGL.

CLEAR ACCOUNTGL.

ACCOUNTGL-ITEMNO_ACC = ‘20‘.

ACCOUNTGL-GL_ACCOUNT = ‘9810000000‘.

ACCOUNTGL-PROFIT_CTR = IT_MSEG-PPRCTR.

APPEND ACCOUNTGL.

CLEAR ACCOUNTGL.

CURRENCYAMOUNT-ITEMNO_ACC = ‘10‘.

CURRENCYAMOUNT-CURRENCY = ‘CNY‘.

CURRENCYAMOUNT-AMT_DOCCUR = G_STPRS3 * -1.

APPEND CURRENCYAMOUNT.

CLEAR CURRENCYAMOUNT.

CURRENCYAMOUNT-ITEMNO_ACC = ‘20‘.

CURRENCYAMOUNT-CURRENCY = ‘CNY‘.

CURRENCYAMOUNT-AMT_DOCCUR = G_STPRS3 .

APPEND CURRENCYAMOUNT.

CLEAR CURRENCYAMOUNT.

CALL FUNCTION ‘BAPI_ACC_DOCUMENT_POST‘

EXPORTING

DOCUMENTHEADER          = DOCUMENTHEADER

*   CUSTOMERCPD             =

*   CONTRACTHEADER          =

IMPORTING

*   OBJ_TYPE                =

OBJ_KEY                 = OBJ_KEY

*   OBJ_SYS                 =

TABLES

ACCOUNTGL               = ACCOUNTGL

*   ACCOUNTRECEIVABLE       =

*   ACCOUNTPAYABLE          =

*   ACCOUNTTAX              =

CURRENCYAMOUNT          = CURRENCYAMOUNT

*   CRITERIA                =

*   VALUEFIELD              =

*   EXTENSION1              =

RETURN                  = RETURN

*   PAYMENTCARD             =

*   CONTRACTITEM            =

*   EXTENSION2              =

*   REALESTATE              =

*   ACCOUNTWT               =

.

CLEAR RETURN.

LOOP AT RETURN WHERE ( TYPE = ‘E‘ OR TYPE = ‘A‘ ) AND NUMBER NE ‘609‘ .

G_FLAG = ‘X‘.

IT_RESULT-DATUM = SY-DATUM.

IT_RESULT-UZEIT = SY-UZEIT.

CONCATENATE ‘调入凭证出错,请手工处理:‘ RETURN-MESSAGE INTO IT_RESULT-MESSAGE.

APPEND IT_RESULT.

CLEAR IT_RESULT.

EXIT.

ENDLOOP.

IF G_FLAG EQ ‘X‘.

CALL FUNCTION ‘BAPI_TRANSACTION_ROLLBACK‘.

ELSE.

CALL FUNCTION ‘BAPI_TRANSACTION_COMMIT‘.

IT_RESULT-BELNR1 = OBJ_KEY+0(10).

*        IT_RESULT-GJAHR = OBJ_KEY+14(4).

IT_RESULT-DATUM = SY-DATUM.

IT_RESULT-UZEIT = SY-UZEIT.

IT_RESULT-MESSAGE = ‘凭证过帐成功!‘.

APPEND IT_RESULT.

CLEAR IT_RESULT.

wait up to 1 seconds.

ENDIF.

ENDIF.

ENDLOOP.

IF IT_RESULT[] IS NOT INITIAL.

MODIFY ZFI_PROFIT_DOC FROM TABLE IT_RESULT.

IF SY-SUBRC EQ 0.

COMMIT WORK.

ELSE.

ROLLBACK WORK.

ENDIF.

ENDIF.

ENDFORM.                    " FRM_POST_DATA

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

*&      Form  FRM_DIS_DATA

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

*       text

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

*  -->  p1        text

*  <--  p2        text

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

FORM FRM_DIS_DATA .

refresh:ws_fieldcat.

refresh gt_events.

*添加ALV events

refresh gt_events.

*添加ALV events

clear gs_events.

gs_event_exit-ucomm = ‘SAVE‘.

gs_event_exit-after = ‘X‘.

append gs_event_exit to gt_event_exit.

* 填充各列

perform fill_alv_fieldcat using ‘MBLNR‘ ‘物料凭证号‘.

perform fill_alv_fieldcat using ‘MJAHR‘ ‘物料凭证年度‘.

perform fill_alv_fieldcat using ‘ZEILE‘ ‘物料凭证项目‘.

perform fill_alv_fieldcat using ‘BUKRS‘ ‘公司代码‘.

perform fill_alv_fieldcat using ‘BELNR‘ ‘会计凭证编号(调出)‘.

perform fill_alv_fieldcat using ‘BELNR1‘ ‘会计凭证编号(调入)‘.

perform fill_alv_fieldcat using ‘GJAHR‘  ‘会计年度‘.

perform fill_alv_fieldcat using ‘MESSAGE‘ ‘消息‘.

v_repid = sy-repid.

ws_layout-zebra        = ‘X‘.

ws_layout-colwidth_optimize = ‘X‘.

*  ws_layout-box_fieldname = ‘CHK‘.

*  ws_layout-box_tabname = ‘ITAB‘.

title = ‘‘.

call function ‘REUSE_ALV_GRID_DISPLAY‘

exporting

i_bypassing_buffer       = ‘X‘

i_callback_program       = v_repid

*      i_callback_top_of_page   = ‘TOP‘

is_layout                = ws_layout

it_fieldcat              = ws_fieldcat[]

*      it_special_groups        = ws_fieldgroups_tab[]

*      it_sort                  = ws_sortfields_tab[]

*      it_events                = gt_events

it_event_exit            = gt_event_exit

i_callback_pf_status_set = ‘SET_PF‘

i_callback_user_command  = ‘USER_COMMAND1‘

i_grid_title             = title

i_save                  = ‘A‘

tables

t_outtab                 = IT_RESULT

exceptions

program_error            = 1

others                   = 2.

ENDFORM.                    " FRM_DISLOG

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

*&      Form  fill_alv_fieldcat

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

*       text

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

*      -->P_FIELDNAME     text

*      -->P_REPTEXT_DDIC  text

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

form fill_alv_fieldcat  using p_fieldname type slis_fieldname

p_reptext_ddic like dd03p-reptext.

ws_fieldcat-fieldname    = p_fieldname.

*  ws_fieldcat-seltext_l  = p_reptext_ddic.

ws_fieldcat-reptext_ddic = p_reptext_ddic.

ws_fieldcat-fix_column = ‘X‘.

append ws_fieldcat.

clear ws_fieldcat.

endform.                    " DISPLAY_DATA

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

*&      Form  STANDARD_FULLSCREEN

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

*       text

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

form set_pf using rt_extab type slis_t_extab.

set pf-status ‘STANDARD_FULLSCREEN‘." EXCLUDING rt_extab.

endform.                    "set_status

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

*&      Form  FRM_GET_LOG

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

*       text

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

*  -->  p1        text

*  <--  p2        text

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

FORM FRM_GET_LOG .

SELECT *

FROM ZFI_PROFIT_DOC

INTO TABLE ITAB

WHERE BUKRS IN S_BUKRS

AND DATUM IN S_BUDAT.

ENDFORM.                    " FRM_GET_LOG

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

*&      Form  FRM_DIS_LOG

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

*       text

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

*  -->  p1        text

*  <--  p2        text

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

FORM FRM_DIS_LOG .

refresh:ws_fieldcat.

refresh gt_events.

*添加ALV events

refresh gt_events.

*添加ALV events

clear gs_events.

gs_event_exit-ucomm = ‘SAVE‘.

gs_event_exit-after = ‘X‘.

append gs_event_exit to gt_event_exit.

* 填充各列

perform fill_alv_fieldcat using ‘MBLNR‘ ‘物料凭证号‘.

perform fill_alv_fieldcat using ‘MJAHR‘ ‘物料凭证年度‘.

perform fill_alv_fieldcat using ‘ZEILE‘ ‘物料凭证项目‘.

perform fill_alv_fieldcat using ‘BUKRS‘ ‘公司代码‘.

perform fill_alv_fieldcat using ‘BELNR‘ ‘会计凭证编号(调出)‘.

perform fill_alv_fieldcat using ‘BELNR1‘ ‘会计凭证编号(调入)‘.

perform fill_alv_fieldcat using ‘GJAHR‘  ‘会计年度‘.

perform fill_alv_fieldcat using ‘MESSAGE‘ ‘消息‘.

perform fill_alv_fieldcat using ‘DATUM‘  ‘过帐日期‘.

perform fill_alv_fieldcat using ‘UZEIT‘ ‘过帐时间‘.

v_repid = sy-repid.

ws_layout-zebra        = ‘X‘.

ws_layout-colwidth_optimize = ‘X‘.

*  ws_layout-box_fieldname = ‘CHK‘.

*  ws_layout-box_tabname = ‘ITAB‘.

title = ‘‘.

call function ‘REUSE_ALV_GRID_DISPLAY‘

exporting

i_bypassing_buffer       = ‘X‘

i_callback_program       = v_repid

*      i_callback_top_of_page   = ‘TOP‘

is_layout                = ws_layout

it_fieldcat              = ws_fieldcat[]

*      it_special_groups        = ws_fieldgroups_tab[]

*      it_sort                  = ws_sortfields_tab[]

*      it_events                = gt_events

it_event_exit            = gt_event_exit

i_callback_pf_status_set = ‘SET_PF‘

i_callback_user_command  = ‘USER_COMMAND‘

i_grid_title             = title

i_save                  = ‘A‘

tables

t_outtab                 = ITAB

exceptions

program_error            = 1

others                   = 2.

ENDFORM.                    " FRM_DIS_LOG

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

*&      Form  user_command

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

*       text

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

*      -->RF_UCOMM   text

*      -->RS         text

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

form user_command using rf_ucomm like sy-ucomm

rs type slis_selfield.

data: lr_grid type ref to cl_gui_alv_grid.

call function ‘GET_GLOBALS_FROM_SLVC_FULLSCR‘

IMPORTING

e_grid = lr_grid.

call method lr_grid->check_changed_data.

rs-refresh = ‘X‘.  "自动刷新

case rf_ucomm.

WHEN ‘&IC1‘.

CHECK RS-TABINDEX  GT 0.

READ TABLE ITAB INDEX RS-TABINDEX.

CHECK SY-SUBRC EQ 0.

IF ITAB-MBLNR NE ‘‘ AND RS-FIELDNAME = ‘MBLNR‘.

SET PARAMETER ID ‘MBN‘ FIELD ITAB-MBLNR.

SET PARAMETER ID ‘MJA‘ FIELD ITAB-MJAHR.

CALL TRANSACTION ‘MB03‘ AND SKIP FIRST SCREEN.

ENDIF.

IF ITAB-BELNR NE ‘‘ AND RS-FIELDNAME = ‘BELNR‘.

SET PARAMETER ID ‘BLN‘ FIELD ITAB-BELNR.

SET PARAMETER ID ‘BUK‘ FIELD ITAB-BUKRS.

SET PARAMETER ID ‘GJR‘ FIELD ITAB-GJAHR.

CALL TRANSACTION ‘FB03‘ AND SKIP FIRST SCREEN.

ENDIF.

IF ITAB-BELNR1 NE ‘‘ AND RS-FIELDNAME = ‘BELNR1‘.

SET PARAMETER ID ‘BLN‘ FIELD ITAB-BELNR1.

SET PARAMETER ID ‘BUK‘ FIELD ITAB-BUKRS.

SET PARAMETER ID ‘GJR‘ FIELD ITAB-GJAHR.

CALL TRANSACTION ‘FB03‘ AND SKIP FIRST SCREEN.

ENDIF.

endcase.

rs-refresh = ‘X‘.

endform.                    "user_command

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

*&      Form  user_command

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

*       text

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

*      -->RF_UCOMM   text

*      -->RS         text

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

form user_command1 using rf_ucomm like sy-ucomm

rs type slis_selfield.

data: lr_grid type ref to cl_gui_alv_grid.

call function ‘GET_GLOBALS_FROM_SLVC_FULLSCR‘

IMPORTING

e_grid = lr_grid.

call method lr_grid->check_changed_data.

rs-refresh = ‘X‘.  "自动刷新

case rf_ucomm.

WHEN ‘&IC1‘.

CHECK RS-TABINDEX  GT 0.

READ TABLE IT_RESULT INDEX RS-TABINDEX.

CHECK SY-SUBRC EQ 0.

IF IT_RESULT-MBLNR NE ‘‘ AND RS-FIELDNAME = ‘MBLNR‘.

SET PARAMETER ID ‘MBN‘ FIELD IT_RESULT-MBLNR.

SET PARAMETER ID ‘MJA‘ FIELD IT_RESULT-MJAHR.

CALL TRANSACTION ‘MB03‘ AND SKIP FIRST SCREEN.

ENDIF.

IF IT_RESULT-BELNR NE ‘‘ AND RS-FIELDNAME = ‘BELNR‘.

SET PARAMETER ID ‘BLN‘ FIELD IT_RESULT-BELNR.

SET PARAMETER ID ‘BUK‘ FIELD IT_RESULT-BUKRS.

SET PARAMETER ID ‘GJR‘ FIELD IT_RESULT-GJAHR.

CALL TRANSACTION ‘FB03‘ AND SKIP FIRST SCREEN.

ENDIF.

IF IT_RESULT-BELNR1 NE ‘‘ AND RS-FIELDNAME = ‘BELNR1‘.

SET PARAMETER ID ‘BLN‘ FIELD IT_RESULT-BELNR1.

SET PARAMETER ID ‘BUK‘ FIELD IT_RESULT-BUKRS.

SET PARAMETER ID ‘GJR‘ FIELD IT_RESULT-GJAHR.

CALL TRANSACTION ‘FB03‘ AND SKIP FIRST SCREEN.

ENDIF.

endcase.

rs-refresh = ‘X‘.

endform.                    "user_command

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-05 09:25:33

BAPI_ACC_DOCUMENT_POST的相关文章

BAPI_ACC_DOCUMENT_POST 解决原因代码输入问题-利用BADI

(1)    复制函数SAMPLE_INTERFACE_RWBAPI01为Z SAMPLE_INTERFACE_RWBAPI01 *"---------------------------------------------------------------------- *"*"Local interface: *" TABLES *" IT_ACCIT STRUCTURE ACCIT *" IT_ACCCR STRUCTURE ACCCR

使用BAPI_ACC_DOCUMENT_POST,创建会计凭证 增强

业务需求:和银行做一个接口,要通过银行流水产生会计凭证,会计凭证的事务码是F-02,查到了BAPI方法 BAPI_ACC_DOCUMENT_POST. 昨天测试发现,有一些参数在BAPI_ACC_DOCUMENT_POST的输入和表参数中根本没有, 如 记账码Posting Key.原因代码Reason Code,那怎么把这些字段的值传进去呢? 在SDN查了一下相关问题的解决办法,发现遇到这个问题的朋友还挺多, 总结了一下,解决办法大体如下: 1.se11创建结构,必须包含行项目号POSNR字段

BAPI_ACC_DOCUMENT_POST 字段增强

1.se11创建结构,必须包含行项目号POSNR字段,和其他需要扩展的字段,如记账码Posting Key.原因代码Reason Code    2.SE19实现BADI增强,这个增强是用来将BAPI_ACC_DOCUMENT_POST参数表EXTENSION2传入系统表    3.使用BAPI_ACC_DOCUMENT_POST参数表EXTENSION2,将扩展字段传入 详细步骤如下:1.创建结构,se11,很简单,不再赘述,如下图: 2.SE19实现BADI增强ACC_DOCUMENT通过A

会计凭证BAPI_ACC_DOCUMENT_POST

*&---------------------------------------------------------------------* *& Report ZFIFB107 *& Description 薪酬计提批导开发 *&---------------------------------------------------------------------* *& 开发人员 时间 更改类型 描述 *& CR信息 *&---------

[问题解决]调用BAPI_ACC_DOCUMENT_POST时报错“被合并的公司 XXXX 和 XXXX 是不同的”

1,问题描述 调用BAPI_ACC_DOCUMENT_POST或者BAPI_ACC_DOCUMENT_CHECK时 创建或检查凭证时,报错“被合并的公司 xxxx 和 xxxx 是不同的”,比如“被合并的公司 3001 和 9999 是不同的”. 错误消息ID: F5 消息号:080 &lt;img class="alignnone size-medium wp-image-6524" src="http://www.baidusap.com/wp-content/u

SAP BAPI一览 史上最全

全BADI一览  List of BAPI's       BAPI WG Component Function module name Description Description Obj. Type Object name Method name Release Message type   1 RW TR BAPI_SECURITYPRICE_GETDETAIL Security price Import a single security price BUS1099 SecurityP

F-02 创建财务凭证BAPI

**1.获取抬头参数, documentheader **2.项目参数 accountgl = lt_acgl"G/L account item accountreceivable = lt_acar"Customer Item accountpayable = lt_acap"Vendor Item currencyamount = lt_aamt"货币金额 *返回参数 return = lt_retn. **3.BAPI 凭证过账, **凭证数据检查-防止跳号

201704 F-02创建财务凭证

一.F-02 创建财务凭证-BDC 期初余额导入程序 程序:ZFIU_LDV_F_02_UPLOAD 创建F-02 凭证: *&---------------------------------------------------------------------------------------------------- CALL TRANSACTION 'F-02' USING it_bdcdata MODE mode_f UPDATE 'S' MESSAGES INTO it_bdcm

201704 创建财务凭证函数

从老司机那了解到创建财务凭证就只有两个函数,用的多的就是 BAPI_ACC_DOCUMENT_POST. 另外,今天发现下另外一个, 418-419 要完成F110 预付款功能的开发,得抓紧时间了. 以下转自[http://blog.csdn.net/trassion/article/details/8267953] http://www.soujigu.com/blog_76943.html http://blog.csdn.net/longgerr/article/details/59582