科目余额辅助表

type-POOLs:slis.
TABLES:bkpf,bseg,faglflext.

DATA:BEGIN OF get_tab_result OCCURS 0,
  bukrs like bseg-bukrs,"公司代码
  hkont LIKE bseg-hkont,"总账科目
  txt20 LIKE skat-txt20,"总账科目文本
  kunnr LIKE bseg-kunnr,"客户编号
  lifnr LIKE bseg-lifnr,"供应商编号
  matnr LIKE bseg-matnr,"物料
  anln1 LIKE bseg-anln1,"资产
  kostl LIKE bseg-kostl,"成本中心
  name1 TYPE LENGTH 100,"对应的项目文本
  dmbtr LIKE bseg-dmbtr,"金额
  dmbtr1 LIKE bseg-dmbtr,
  dmbtr2 LIKE bseg-dmbtr,
  dmbtr3 LIKE bseg-dmbtr,
  dmbtr4 LIKE bseg-dmbtr,
  dmbtr5 LIKE bseg-dmbtr,
  dmbtr6 LIKE bseg-dmbtr,
  dmbtr7 LIKE bseg-dmbtr,
  END OF get_tab_result.

SELECTION-SCREEN BEGIN OF BLOCK blk1 WITH FRAME TITLE tt1.
SELECT-OPTIONS:s_bukrs FOR bkpf-bukrs no-EXTENSION no INTERVALS OBLIGATORY,
               s_gjahr FOR bkpf-gjahr NO-EXTENSION NO INTERVALS OBLIGATORY,
               s_rpmax FOR faglflext-rpmax no-EXTENSION OBLIGATORY,
               s_hkont FOR bseg-hkont.
SELECTION-SCREEN END OF BLOCK blk1.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_hkont-low.
  PERFORM frm_onf4_hkont USING 'S_HKONT-LOW'.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_hkont-high.
  PERFORM frm_onf4_hkont USING 'S_HKONT-HIGH'.

AT SELECTION-SCREEN.
  PERFORM frm_auth_check.

START-OF-SELECTION.
*获取数据
  PERFORM frm_get_data.

end-OF-SELECTION.
  PERFORM frm_output_data.
*&---------------------------------------------------------------------*
*&      Form  FRM_ONF4_HKONT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_0150   text
*----------------------------------------------------------------------*
FORM FRM_ONF4_HKONT  USING  p_field.
  TYPES:BEGIN OF ty_skat,
    saknr TYPE skat-saknr,
    txt20 TYPE skat-txt20,
    END OF ty_skat.

  DATA:lt_skat TYPE TABLE OF ty_skat WITH HEADER LINE.

  SELECT
    saknr
    txt20
    FROM skat
    INTO TABLE lt_skat
    WHERE spras sy-langu AND ktopl '1000'.

  CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
    EXPORTING
*         DDIC_STRUCTURE         = ' '
      RETFIELD               'SAKNR'
*         PVALKEY                = ' '
      DYNPPROG               SY-REPID
      DYNPROFIELD            P_FIELD
      DYNPNR                 SY-DYNNR
*         STEPL                  = 0
*         WINDOW_TITLE           =
*         VALUE                  = ' '
      VALUE_ORG              'S'
*         MULTIPLE_CHOICE        = ' '
*         DISPLAY                = ' '
      CALLBACK_PROGRAM       SY-REPID
*         CALLBACK_FORM          = ' '
*         CALLBACK_METHOD        =
*         MARK_TAB               =
*       IMPORTING
*         USER_RESET             =
    TABLES
      VALUE_TAB              lt_skat[]
*         FIELD_TAB              =
*         RETURN_TAB             =
*         DYNPFLD_MAPPING        =
    EXCEPTIONS
      PARAMETER_ERROR        1
      NO_VALUES_FOUND        2
      OTHERS                 3
            .
  IF SY-SUBRC <> 0.
* Implement suitable error handling here
  ENDIF.


ENDFORM.                    " FRM_ONF4_HKONT
*&---------------------------------------------------------------------*
*&      Form  FRM_GET_DATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM FRM_GET_DATA .
  DATA:BEGIN OF L_T_BSEG OCCURS 0,
    BUKRS LIKE BSEG-BUKRS,"公司号
    BELNR LIKE BSEG-BELNR,"凭证号
    GJAHR LIKE BSEG-GJAHR,"年度
    BUZEI LIKE BSEG-BUZEI,"行项目
    SHKZG LIKE BSEG-SHKZG,"借贷
    HKONT LIKE BSEG-HKONT,"总账
    KUNNR LIKE BSEG-KUNNR,"客户
    LIFNR LIKE BSEG-LIFNR,"供应商
    MATNR LIKE BSEG-MATNR,"物料
    ANLN1 LIKE bseg-ANLN1,"成本中心
    KOSTL LIKE BSEG-KOSTL,
    DMBTR LIKE BSEG-DMBTR,
    BUDAT LIKE BKPF-BUDAT,
    XNEGP LIKE BSEG-XNEGP,"标识:反记账
    XREVERSAL LIKE BKPF-XREVERSAL,"指定是否凭证被冲销或已被冲销
    STGRD LIKE BKPF-STGRD,"冲销原因
    EBELN LIKE BSEG-EBELN,"采购凭证号
    END OF L_T_BSEG.

  TYPES:BEGIN OF L_S_BKPF,
    BUKRS LIKE BKPF-BUKRS,
    BELNR LIKE BKPF-BELNR,
    GJAHR LIKE BKPF-GJAHR,
    BUDAT LIKE BKPF-BUDAT,
    STGRD LIKE BKPF-STGRD,
    XREVERSAL LIKE BKPF-XREVERSAL,
    END OF L_S_BKPF.

  DATA L_T_BKPF TYPE HASHED TABLE OF L_S_BKPF WITH UNIQUE KEY BUKRS BELNR GJAHR WITH HEADER LINE.
  SELECT
    BUKRS
    BELNR
    GJAHR
    BUZEI
    SHKZG
    HKONT
    KUNNR
    LIFNR
    MATNR
    ANLN1
    KOSTL
    dmbtr
    XNEGP
    EBELN
    INTO CORRESPONDING FIELDS OF TABLE L_T_BSEG
    FROM BSEG
    WHERE BUKRS IN S_BUKRS
    AND   GJAHR IN S_GJAHR
    AND   hkont IN s_hkont.

  IF L_T_BSEG[] IS NOT INITIAL.
    SELECT
      BUKRS
      BELNR
      GJAHR
      BUDAT
      STGRD
      XREVERSAL
      INTO CORRESPONDING FIELDS OF TABLE L_T_BKPF
      FROM BKPF
      FOR ALL ENTRIES IN L_T_BSEG
      WHERE bukrs L_T_BSEG-BUKRS
      AND   BELNR L_T_BSEG-BELNR
      AND   GJAHR L_T_BSEG-GJAHR.

  ENDIF.

  LOOP AT L_T_BSEG.
    READ TABLE L_T_Bkpf WITH TABLE KEY BUKRS L_T_BSEG-BUKRS
                                       BELNR L_T_BSEG-BELNR
                                       GJAHR L_T_BSEG-GJAHR.
    IF SY-SUBRC 0.
      L_T_BSEG-BUDAT L_T_BKPF-BUDAT.
      L_T_BSEG-XREVERSAL L_T_BKPF-XREVERSAL.
      L_T_BSEG-STGRD L_T_BKPF-STGRD.
      MODIFY L_T_BSEG TRANSPORTING BUDAT XREVERSAL STGRD.
    ELSE.
      DELETE L_T_BSEG.
    ENDIF.
  ENDLOOP.
***************************************************处理反记账
  LOOP AT L_T_BSEG WHERE HKONT BETWEEN '100100000' AND '100900000' AND XREVERSAL NE '' AND XNEGP 'X'.
    IF L_T_BSEG-SHKZG 'H'.
      L_T_BSEG-SHKZG 'S'.
    ELSEIF L_T_BSEG-SHKZG 'S'.
      L_T_BSEG-SHKZG 'H'.
    ENDIF.
    L_T_BSEG-DMBTR L_T_BSEG-dmbtr.
    MODIFY L_T_BSEG TRANSPORTING SHKZG dmbtR.
  ENDLOOP.
*处理同时出现的供应商编码和物料编码的情况
  LOOP AT L_T_BSEG WHERE hkont BETWEEN 141 AND 147.
    CLEARL_T_BSEG-LIFNR L_T_BSEG-KUNNR.
    MODIFY L_T_BSEG TRANSPORTING lifnr KUNNR.
  ENDLOOP.

  LOOP AT  L_T_BSEG WHERE HKONT EQ 222.
    SELECT SINGLE LIFNR INTO L_T_BSEG-lifnr FROM EKKO WHERE EBELN L_T_BSEG-EBELN.
    IF SY-SUBRC 0.
      MODIFY L_T_BSEG TRANSPORTING LIFNR.
    ENDIF.
  ENDLOOP.

  DATA:L_F_DATE TYPE SY-DATUM,
       L_T_DATE TYPE SY-DATUM.

  DATA:L_MONTH(3TYPE C.
  L_MONTH s_rpmax-LOW.
  SHIFT L_MONTH LEFT DELETING LEADING '0'.

  IF L_MONTH < 10.
    CONCATENATE '0' L_MONTH INTO L_MONTH.
  ENDIF.
  CONCATENATE S_GJAHR-LOW L_MONTH '01' INTO L_F_DATE.
  CLEAR L_MONTH.
  L_MONTH s_rpmax-HIGH.
  IF L_MONTH EQ '000'.
    L_MONTH s_rpmax-LOW.
  ENDIF.

  SHIFT L_MONTH LEFT DELETING LEADING '0'.
  IF L_MONTH < 10.
    CONCATENATE '0' L_MONTH INTO L_MONTH.
  ENDIF.

  CONCATENATE S_GJAHR-LOW L_MONTH '01' INTO L_T_DATE.
  CALL FUNCTION 'FIMA_DATE_CREATE'
    EXPORTING
      I_DATE                  L_T_DATE
      I_FLG_END_OF_MONTH      ' '
*     I_YEARS                 = 0
*     I_MONTHS                = 0
*     I_DAYS                  = 0
      I_CALENDAR_DAYS         0
      I_SET_LAST_DAY_OF_MONTH 'X'
    IMPORTING
      E_DATE                  L_T_DATE
*     E_FLG_END_OF_MONTH      =
*     E_DAYS_OF_I_DATE        =
    .

  DATA L_T_BSEG_BEG LIKE TABLE OF L_T_BSEG WITH HEADER LINE.
  DATA L_T_BSEG_END LIKE TABLE OF L_T_BSEG WITH HEADER LINE.

  APPEND LINES OF L_T_BSEG TO L_T_BSEG_BEG.
  APPEND LINES OF L_T_BSEG TO L_T_BSEG_END.

  DELETE L_T_BSEG WHERE BUDAT > L_T_DATE.
  DELETE L_T_BSEG WHERE BUDAT < L_F_DATE.
  DELETE L_T_BSEG WHERE BUDAT  >= L_F_DATE.
  DELETE L_T_BSEG WHERE BUDAT > L_T_DATE.

  LOOP AT L_T_BSEG.
    get_tab_result-BUKRS L_T_BSEG-BUKRS.
    get_tab_result-HKONT L_T_BSEG-HKONT.
    get_tab_result-KUNNR L_T_BSEG-KUNNR.
    get_tab_result-LIFNR L_T_BSEG-LIFNR.
    get_tab_result-MATNR L_T_BSEG-MATNR.
    get_tab_result-ANLN1 L_T_BSEG-ANLN1.
    get_tab_result-KOSTL L_T_BSEG-KOSTL.

    IF L_T_BSEG-SHKZG 'H'.
      get_tab_result-dmbtr3 L_T_BSEG-dmbtr.
      get_tab_result-dmbtr5 L_T_BSEG-dmbtr.
    ELSE.
      get_tab_result-dmbtr2 L_T_BSEG-dmbtr.
      get_tab_result-dmbtr4 L_T_BSEG-dmbtr.

    ENDIF.
    COLLECT get_tab_result.
    CLEAR get_tab_result.


  ENDLOOP.

  LOOP AT L_T_BSEG_BEG.
    get_tab_result-bukrs L_T_BSEG_BEG-bukrs.
    get_tab_result-HKONT L_T_BSEG_BEG-HKONT.
    get_tab_result-KUNNR L_T_BSEG_BEG-KUNNR.
    get_tab_result-LIFNR L_T_BSEG_BEG-LIFNR.
    get_tab_result-MATNR L_T_BSEG_BEG-MATNR.
    get_tab_result-ANLN1 L_T_BSEG_BEG-ANLN1.
    get_tab_result-KOSTL L_T_BSEG_BEG-KOSTL.

    IF L_T_BSEG_BEG-SHKZG 'H'.
      get_tab_result-dmbtr1 L_T_BSEG_BEG-dmbtr.
    ELSE.
      get_tab_result-dmbtr L_T_BSEG_BEG-dmbtr.
    ENDIF.

    COLLECT get_tab_result.
    CLEAR get_tab_result.

  ENDLOOP.

  LOOP AT  L_T_BSEG_END.
    get_tab_result-BUKRS L_T_BSEG_END-BUKRS.
    get_tab_result-HKONT L_T_BSEG_END-HKONT.
    get_tab_result-KUNNR L_T_BSEG_END-KUNNR.
    get_tab_result-LIFNR L_T_BSEG_END-LIFNR.
    get_tab_result-MATNR L_T_BSEG_END-MATNR.
    get_tab_result-ANLN1 L_T_BSEG_END-ANLN1.
    get_tab_result-KOSTL L_T_BSEG_END-KOSTL.

    IF L_T_BSEG_END-SHKZG 'H'.
      get_tab_result-dmbtr7 L_T_BSEG_END-dmbtr.
    ELSE.
      get_tab_result-dmbtr6 L_T_BSEG_END-dmbtr.
    ENDIF.
    COLLECT get_tab_result.
    CLEAR get_tab_result.

  ENDLOOP.

  LOOP AT get_tab_result.
    IF get_tab_result-KUNNR IS NOT INITIAL.
      SELECT SINGLE NAME1 INTO get_tab_result-NAME1 FROM KNA1 WHERE kunnr get_tab_result-KUNNR.
    ENDIF.

    IF get_tab_result-LIFNR IS NOT INITIAL.
      SELECT SINGLE NAME1 INTO get_tab_result-NAME1 FROM LFA1 WHERE LIFNR get_tab_result-LIFNR.
    ENDIF.

    IF get_tab_result-matnr IS NOT INITIAL.
      SELECT SINGLE MAKTX INTO get_tab_result-NAME1 FROM MAKT WHERE MATNR get_tab_result-MATNR.
    ENDIF.

    IF get_tab_result-ANLN1 IS NOT INITIAL.
      SELECT SINGLE ANLHTXT INTO get_tab_result-NAME1 FROM ANLH WHERE ANLN1 get_tab_result-ANLN1.
    ENDIF.

    IF get_tab_result-KOSTL IS NOT INITIAL.
      SELECT SINGLE KTEXT INTO get_tab_result-NAME1 FROM CSKT WHERE spras '1'
        AND KOSTL get_tab_result-KOSTL.

    ENDIF.

    SELECT SINGLE TXT20 INTO get_tab_result-TXT20 FROM skat WHERE spras '1'
      AND saknr get_tab_result-HKONT.

    IF get_tab_result-dmbtr get_tab_result-dmbtr1 >= 0.
      get_tab_result-dmbtr get_tab_result-dmbtr get_tab_result-dmbtr1.
      get_tab_result-dmbtr1 0.
    ELSE.
      get_tab_result-dmbtr1 get_tab_result-dmbtr1 get_tab_result-dmbtr.
      get_tab_result-dmbtr 0.
    ENDIF.

    IF get_tab_result-dmbtr6 get_tab_result-dmbtr7 >= 0.
      get_tab_result-dmbtr6 get_tab_result-dmbtr6 get_tab_result-dmbtr7.
      get_tab_result-dmbtr7 0.
    ELSE.
      get_tab_result-dmbtr7 get_tab_result-dmbtr7 get_tab_result-dmbtr6.
      get_tab_result-dmbtr6 0.
    ENDIF.

    IF get_tab_result-LIFNR <> ''.
      get_tab_result-matnr get_tab_result-LIFNR.
    ELSEIF get_tab_result-kunnr <> ''.
      get_tab_result-matnr get_tab_result-KUNNR.
    ELSEIF get_tab_result-ANLN1 <> ''.
      get_tab_result-matnr get_tab_result-anln1.
    ELSEIF get_tab_result-kostL <> ''.
      get_tab_result-matnr get_tab_result-kostl.
    ENDIF.

    MODIFY get_tab_result TRANSPORTING NAME1 TXT20 MATNR DMBTR DMBTR1 DMBTR6 DMBTR7.

  ENDLOOP.

  SORT get_tab_result BY BUKRS HKONT MATNR.


ENDFORM.                    " FRM_GET_DATA
*&---------------------------------------------------------------------*
*&      Form  FRM_AUTH_CHECK
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM FRM_AUTH_CHECK .
  DATA LT_T001 LIKE TABLE OF T001 WITH HEADER LINE.
  SELECT
    bukrs
    INTO CORRESPONDING FIELDS OF TABLE LT_T001
    FROM T001
    WHERE BUKRS IN S_BUKRS.

  LOOP AT LT_T001.

    CALL FUNCTION 'ZZ_CHECK_REPAUTH'
      EXPORTING
        I_MODULE      'FC'
        I_BUKRS       LT_T001-BUKRS
      EXCEPTIONS
        NO_AUTHORIZED 1
        NO_MODULE     2
        OTHERS        3.
    IF SY-SUBRC <> 0.

    ENDIF.

  ENDLOOP.

ENDFORM.                    " FRM_AUTH_CHECK
*&---------------------------------------------------------------------*
*&      Form  FRM_OUTPUT_DATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM FRM_OUTPUT_DATA .
  DATA:PROGNAME LIKE SY-REPID,
        TITLE TYPE LVC_TITLE.
  PROGNAME SY-REPID.
  TITLE '总账科目余额辅助表'.
  DATA:gt_fieldcat TYPE slis_t_fieldcat_alv WITH HEADER LINE,
       gs_layout TYPE slis_layout_alv,
       gt_sort TYPE slis_t_sortinfo_alv.
  DATA:gt_events TYPE slis_t_event WITH HEADER LINE."ALV事件

  gs_layout-zebra 'X'.
  gs_layout-colwidth_optimize 'X'.
  gs_layout-detail_popup 'X'.

  gt_fieldcat-fieldname 'BUKRS'.
  gt_fieldcat-seltext_m '公司代码'.
  append gt_fieldcat.
  CLEAR gt_fieldcat.

  gt_fieldcat-fieldname 'HKONT'.
  gt_fieldcat-seltext_m '总账科目'.
  gt_fieldcat-no_zero 'X'.
  append gt_fieldcat.
  CLEAR gt_fieldcat.

  gt_fieldcat-fieldname 'txt20'.
  gt_fieldcat-seltext_m '总账科目描述'.
  append gt_fieldcat.
  CLEAR gt_fieldcat.

  gt_fieldcat-fieldname 'MATNR'.
  gt_fieldcat-seltext_m '辅助核算编码'.
  gt_fieldcat-no_zero 'X'.
  gt_fieldcat-hotspot 'X'.
  Append gt_fieldcat.
  CLEAR gt_fieldcat.

  gt_fieldcat-fieldname 'NAME1'.
  gt_fieldcat-seltext_m '辅助核算名称'.
  append gt_fieldcat.
  CLEAR gt_fieldcat.

  gt_fieldcat-fieldname 'DMBTR'.
  gt_fieldcat-seltext_m '期初借方'.
  gt_fieldcat-no_zero 'X'.
  append gt_fieldcat.
  CLEAR gt_fieldcat.

  gt_fieldcat-fieldname 'DMBTR1'.
  gt_fieldcat-seltext_m '期初贷方'.
  gt_fieldcat-no_zero 'X'.
  append gt_fieldcat.
  CLEAR gt_fieldcat.

  gt_fieldcat-fieldname 'DMBTR2'.
  gt_fieldcat-seltext_m '本期借方'.
  gt_fieldcat-no_zero 'X'.
  append gt_fieldcat.
  CLEAR gt_fieldcat.

  gt_fieldcat-fieldname 'DMBTR3'.
  gt_fieldcat-seltext_m '本期贷方'.
  gt_fieldcat-no_zero 'X'.
  append gt_fieldcat.
  CLEAR gt_fieldcat.

  gt_fieldcat-fieldname 'DMBTR4'.
  gt_fieldcat-seltext_m '借方累计'.
  gt_fieldcat-no_zero 'X'.
  append gt_fieldcat.
  CLEAR gt_fieldcat.

  gt_fieldcat-fieldname 'DMBTR5'.
  gt_fieldcat-seltext_m '贷方累计'.
  gt_fieldcat-no_zero 'X'.
  append gt_fieldcat.
  CLEAR gt_fieldcat.

  gt_fieldcat-fieldname 'DMBTR6'.
  gt_fieldcat-seltext_m '期末借方'.
  gt_fieldcat-no_zero 'X'.
  append gt_fieldcat.
  CLEAR gt_fieldcat.

  gt_fieldcat-fieldname 'DMBTR7'.
  gt_fieldcat-seltext_m '期末贷方'.
  gt_fieldcat-no_zero 'X'.
  append gt_fieldcat.
  CLEAR gt_fieldcat.


  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
*   I_INTERFACE_CHECK                 = ' '
*   I_BYPASSING_BUFFER                = ' '
*   I_BUFFER_ACTIVE                   = ' '
      I_CALLBACK_PROGRAM                progname
*   I_CALLBACK_PF_STATUS_SET          = ' '
      I_CALLBACK_USER_COMMAND           'FRM_USER_COMMAND'"处理用户双击事件
*   I_CALLBACK_TOP_OF_PAGE            = ' '
*   I_CALLBACK_HTML_TOP_OF_PAGE       = ' '
*   I_CALLBACK_HTML_END_OF_LIST       = ' '
*   I_STRUCTURE_NAME                  =
*   I_BACKGROUND_ID                   = ' '
      I_GRID_TITLE                      TITLE
*   I_GRID_SETTINGS                   =
      IS_LAYOUT                         GS_LAYOUT
      IT_FIELDCAT                       gt_fieldcat[]
*   IT_EXCLUDING                      =
*   IT_SPECIAL_GROUPS                 =
      IT_SORT                           GT_SORT
*   IT_FILTER                         =
*   IS_SEL_HIDE                       =
*   I_DEFAULT                         = 'X'
      I_SAVE                            'A'
*   IS_VARIANT                        =
*   IT_EVENTS                         =
*   IT_EVENT_EXIT                     =
*   IS_PRINT                          =
*   IS_REPREP_ID                      =
*   I_SCREEN_START_COLUMN             = 0
*   I_SCREEN_START_LINE               = 0
*   I_SCREEN_END_COLUMN               = 0
*   I_SCREEN_END_LINE                 = 0
*   I_HTML_HEIGHT_TOP                 = 0
*   I_HTML_HEIGHT_END                 = 0
*   IT_ALV_GRAPHICS                   =
*   IT_HYPERLINK                      =
*   IT_ADD_FIELDCAT                   =
*   IT_EXCEPT_QINFO                   =
*   IR_SALV_FULLSCREEN_ADAPTER        =
* IMPORTING
*   E_EXIT_CAUSED_BY_CALLER           =
*   ES_EXIT_CAUSED_BY_USER            =
    TABLES
      T_OUTTAB                          get_tab_result
    EXCEPTIONS
      PROGRAM_ERROR                     1
      OTHERS                            2
            .
  IF SY-SUBRC <> 0.
* Implement suitable error handling here
  ENDIF.

ENDFORM.                    " FRM_OUTPUT_DATA

FORM FRM_USER_COMMAND USING r_ucomm LIKE sy-ucomm
                                         rs_selfield TYPE slis_selfield.
  rs_selfield-col_stable 'X'.
  rs_selfield-row_stable 'X'.
  rs_selfield-refresh 'X'."自动刷新
******参考标准报表QA33之后,发现只要这3行就可以实现自动刷新,并且返回时鼠标回到原来的位置

  DATA:bdcdata_wa TYPE bdcdata,
       bdcdata_tab TYPE TABLE OF bdcdata.

  DATA:opt TYPE ctu_params.

  CASE r_ucomm.
    WHEN '&IC1'.
      READ TABLE get_tab_result INDEX rs_selfield-tabindex.
      IF sy-subrc 0.
        IF get_tab_result-hkont eq 222.
          CLEAR bdcdata_wa.
          bdcdata_wa-program 'FAGL_ACCOUNT_ITEMS_GL'.
          bdcdata_wa-dYNPRO '1000'.
          bdcdata_wa-DYNBEGIN 'X'.
          APPEND bdcdata_wa TO bdcdata_TAB.

          CLEAR bdcdata_wa.
          bdcdata_wa-FNAM 'BDC_CURSOR'.
          bdcdata_wa-FVAL 'SD_BUKRS-LOW'.
          APPEND bdcdata_wa TO bdcdata_TAB.

          CLEAR bdcdata_wa.
          bdcdata_wa-FNAM 'BDC_OKCODE'.
          bdcdata_wa-FVAL '=ONLI'.
          APPEND bdcdata_wa TO bdcdata_TAB.

          CLEAR bdcdata_wa.
          bdcdata_wa-FNAM 'SD_SAKNR-LOW'.
          bdcdata_wa-FVAL get_tab_result-HKONT.
          APPEND bdcdata_wa TO bdcdata_TAB.

          CLEAR bdcdata_wa.
          bdcdata_wa-FNAM 'SD_BUKRS-LOW'.
          bdcdata_wa-FVAL get_tab_result-BUKRS.
          APPEND bdcdata_wa TO bdcdata_TAB.

          CLEAR bdcdata_wa.
          bdcdata_wa-FNAM 'X_OPSEL'.
          bdcdata_wa-FVAL ''.
          APPEND bdcdata_wa TO bdcdata_TAB.

          CLEAR bdcdata_wa.
          bdcdata_wa-FNAM 'X_AISEL'.
          bdcdata_wa-FVAL 'X'.
          APPEND bdcdata_wa TO bdcdata_TAB.

          OPT-DISMODE 'E'.
          call TRANSACTION 'FAGLL03' USING bdcdata_tab OPTIONS FROM opt.
        elseif  get_tab_result-kunnr IS NOT INITIAL.
          set PARAMETER ID 'KUN' FIELD get_tab_result-kunnr.
          set PARAMETER ID 'BUK' FIELD get_tab_result-bukrs.
          call TRANSACTION 'FD10N' AND SKIP FIRST SCREEN.

        ELSEIF get_tab_result-lifnr IS NOT INITIAL.
          SET PARAMETER ID 'LIF'FIELD get_tab_result-lifnr.
          SET PARAMETER ID 'BUK' FIELD get_tab_result-BUKRS.
          CALL TRANSACTION 'FK10N' AND SKIP FIRST SCREEN.

        ELSEIF get_tab_result-matnr IS NOT INITIAL.

          CLEAR bdcdata_wa.
          bdcdata_wa-program  'FAGL_ACCOUNT_ITEMS_GL'.
          bdcdata_wa-dynpro   '1000'.
          bdcdata_wa-dynbegin 'X'.
          APPEND bdcdata_wa TO bdcdata_tab.

          CLEAR bdcdata_wa.
          bdcdata_wa-fnam 'BDC_CURSOR'.
          bdcdata_wa-fval 'SD_BUKRS-LOW'.
          APPEND bdcdata_wa TO bdcdata_tab.

          CLEAR bdcdata_wa.
          bdcdata_wa-fnam 'BDC_OKCODE'.
          bdcdata_wa-fval '=ONLI'.
          APPEND bdcdata_wa TO bdcdata_tab.

          CLEAR bdcdata_wa.
          bdcdata_wa-fnam 'SD_SAKNR-LOW'.
          bdcdata_wa-fval GET_TAB_RESULT-HKONT.
          APPEND bdcdata_wa TO bdcdata_tab.

          CLEAR bdcdata_wa.
          bdcdata_wa-fnam 'SD_BUKRS-LOW'.
          bdcdata_wa-fval GET_TAB_RESULT-BUKRS.
          APPEND bdcdata_wa TO bdcdata_tab.

          CLEAR bdcdata_wa.
          bdcdata_wa-fnam 'X_OPSEL'.
          bdcdata_wa-fval ''.
          APPEND bdcdata_wa TO bdcdata_tab.

          CLEAR bdcdata_wa.
          bdcdata_wa-fnam 'X_AISEL'.
          bdcdata_wa-fval 'X'.
          APPEND bdcdata_wa TO bdcdata_tab.


          opt-DISMODE 'E'.
          call TRANSACTION 'FAGLL03' USING bdcdata_tab OPTIONS FROM opt.
        ELSE.
          set PARAMETER ID 'SAK' FIELD get_tab_result-hkont.
          set PARAMETER ID 'BUK' FIELD get_tab_result-bukrs.
          call TRANSACTION 'FS10N' AND SKIP FIRST SCREEN.

        ENDIF.

      ENDIF.

  ENDCASE.
ENDFORM.
### 关于 NC 57 科目余额的 IT 实现与常见问题 #### 查询实现逻辑 在 NC 财务系统中,科目余额的核心功能是对会计期间内的科目的期初余额、本期发生额以及期末余额进行统计和展示。对于 NC 57 的具体实现方式,通常涉及以下几个方面: 1. **数据源配置** 科目余额的数据来源于总账模块中的凭证记录。这些记录按照科目分类存储,并通过特定条件筛选出目标数据集。例如,在查询成本中心描述时,可以通过 `CSKT` 的相关字段组合来获取所需信息[^1]。 2. **SQL 查询语句设计** 下面是一个典型的 SQL 查询示例,用于提取某一会计期间内某科目及其子科目余额信息: ```sql SELECT ACCOUNT_CODE, -- 科目编码 PERIOD, -- 会计期间 INITIAL_BALANCE, -- 期初余额 CREDIT_AMOUNT, -- 借方金额 DEBIT_AMOUNT, -- 贷方金额 FINAL_BALANCE -- 期末余额 FROM GL_ACCOUNT_BALANCES WHERE ACCOUNT_CODE LIKE '1001%' AND PERIOD = '202312'; ``` 3. **多维度分析支持** 如果需要进一步扩展报的功能,可以引入辅助核算项(如部门、项目等),并通过联查其他基础资料(如 `CSKT` 或者 `GL_AUXILIARY_INFO`)来增强报现力。 #### 错误排查指南 针对可能遇到的一些典型错误场景,以下是相应的解决方案建议: 1. **上年度反结账引发的问题** 当执行上年度反结账操作并调整部分数据后重新结账时,如果发现当前年份年初重算失败提示“更新记数错误”,则可能是由于某些内部交易尚未完成对账所致。此时应检查集团参数设置情况,确认是否启用了 “GL125关账检查内部交易对账是否完成”。如果是,则需前往【财务会计】-> 【总账】 -> 【内部交易对账】界面查找未匹配成功的条目逐一核验直至全部清理完毕后再尝试提交新的关账请求[^2]。 2. **新增科目后的兼容性考量** 若企业因业务发展需求而计划增设新一级或者更深层次结构下的明细科目时需要注意区分两种情形分别采取不同策略加以应对:如果不关心旧有历史数据保持原样不变的话可以直接利用系统的“科目增加”功能快速定义好各级别名称属性等内容;反之假如希望连同过往积累下来的档案一同迁移过去那么就应当借助专门提供的“科目变更向导工具”来进行平滑过渡处理过程[^3]。 #### 数据处理优化措施 为了提高效率降低风险可以从以下几点入手改进日常管理工作流程: - 定期备份数据库以防万一; - 制定严格的操作权限管理制度防止未经授权人员随意更改重要参数设定从而造成不可预见后果; - 加强员工培训提升他们识别异常状况的能力以便及时反馈给技术支持团队寻求帮助。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值