码迷,mamicode.com
首页 > Windows程序 > 详细

BAPI_ACC_DOCUMENT_POST

时间:2015-07-30 21:30:31      阅读:342      评论:0      收藏:0      [点我收藏+]

标签:bapi_acc_document_po

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

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

BAPI_ACC_DOCUMENT_POST

标签:bapi_acc_document_po

原文地址:http://blog.csdn.net/champaignwolf/article/details/47155753

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!