Tuesday, February 9, 2016

Function Module for GL Account Balance as on Key Date

FUNCTION ZFI_GET_ACCOUNTS_BALANCE.
*"----------------------------------------------------------------------
*"*"Local Interface:
*"  IMPORTING
*"     VALUE(I_BUKRS) TYPE  BUKRS
*"     VALUE(I_BUDAT) TYPE  BUDAT
*"     VALUE(I_HKONT) TYPE  HKONT
*"  EXPORTING
*"     VALUE(BALANCE) TYPE  DMBTR
*"----------------------------------------------------------------------
DATA : COMPANYCODEID  LIKE  BAPI0002_2-COMP_CODE     ,
         POSTING_DATE   LIKE  BAPI0002_4-POSTING_DATE  ,
         FISCAL_YEAR    LIKE  BAPI0002_4-FISCAL_YEAR   ,
         FISCAL_PERIOD  LIKE  BAPI0002_4-FISCAL_PERIOD .

DATA : ACCOUNT_BALANCES  TYPE TABLE OF BAPI3006_4 WITH HEADER LINE.
DATA : BAL TYPE BSEG-DMBTR.

DATA : IV_DATE  TYPE  D   ,
      EV_MONTH_BEGIN_DATE  TYPE  D,
      EV_MONTH_END_DATE  TYPE  D .

DATA : COMPANYCODE  LIKE  BAPI3006_0-COMP_CODE,
      GLACCT  LIKE  BAPI3006_0-GL_ACCOUNT ,
      FISCALYEAR  LIKE  BAPI3006_4-FISC_YEAR,
      CURRENCYTYPE  LIKE  BAPI3006_5-CURR_TYPE VALUE 10.

DATA : IT_BKPF TYPE TABLE OF BKPF WITH HEADER LINE.

DATA : BEGIN OF IT_BSEG OCCURS 0,
      BELNR TYPE BSEG-BELNR,
      GJAHR TYPE BSEG-GJAHR,
      SHKZG TYPE BSEG-SHKZG  ,
      DMBTR TYPE BSEG-DMBTR,
      END OF IT_BSEG.

COMPANYCODEID = I_BUKRS.
POSTING_DATE = I_BUDAT.

IV_DATE  = I_BUDAT.

CALL FUNCTION 'HR_JP_MONTH_BEGIN_END_DATE'
  EXPORTING
    IV_DATE             = IV_DATE
  IMPORTING
    EV_MONTH_BEGIN_DATE = EV_MONTH_BEGIN_DATE
    EV_MONTH_END_DATE   = EV_MONTH_END_DATE.

CALL FUNCTION 'BAPI_COMPANYCODE_GET_PERIOD'
  EXPORTING
    COMPANYCODEID = COMPANYCODEID
    POSTING_DATE  = POSTING_DATE
  IMPORTING
    FISCAL_YEAR   = FISCAL_YEAR
    FISCAL_PERIOD = FISCAL_PERIOD.

IF EV_MONTH_END_DATE NE I_BUDAT.
  IF FISCAL_PERIOD = 1.
    FISCAL_PERIOD = 12              .
    FISCAL_YEAR = FISCAL_YEAR - 1  .
  ELSE.
    FISCAL_PERIOD =  FISCAL_PERIOD - 1.
  ENDIF.
ENDIF.

COMPANYCODE  =  I_BUKRS.
GLACCT  = I_HKONT.
FISCALYEAR  = FISCAL_YEAR.

CALL FUNCTION 'BAPI_GL_ACC_GETPERIODBALANCES'
  EXPORTING
    COMPANYCODE      = COMPANYCODE
    GLACCT           = GLACCT
    FISCALYEAR       = FISCALYEAR
    CURRENCYTYPE     = CURRENCYTYPE
  TABLES
    ACCOUNT_BALANCES = ACCOUNT_BALANCES.

READ TABLE ACCOUNT_BALANCES WITH KEY FISC_YEAR = FISCALYEAR FIS_PERIOD = FISCAL_PERIOD.
IF SY-SUBRC = 0.
  BALANCE =  ACCOUNT_BALANCES-BALANCE.
ENDIF.


IF EV_MONTH_END_DATE NE I_BUDAT.
  SELECT * FROM BKPF INTO TABLE IT_BKPF WHERE BUKRS = I_BUKRS AND BUDAT >= EV_MONTH_BEGIN_DATE
    AND BUDAT <= I_BUDAT.

    IF IT_BKPF[] IS NOT INITIAL.
      SELECT BELNR GJAHR SHKZG DMBTR
        FROM BSEG INTO CORRESPONDING FIELDS OF TABLE IT_BSEG
        FOR ALL ENTRIES IN IT_BKPF
        WHERE BELNR = IT_BKPF-BELNR AND GJAHR = IT_BKPF-GJAHR AND HKONT = I_HKONT AND BUKRS = I_BUKRS.
    ENDIF.

    LOOP AT IT_BSEG.
      IF IT_BSEG-SHKZG = 'H'.
        BAL = BAL - IT_BSEG-DMBTR.
      ELSEIF IT_BSEG-SHKZG = 'S'.
        BAL = BAL + IT_BSEG-DMBTR.
      ENDIF.
    ENDLOOP.
  BALANCE = BALANCE + BAL.
ENDIF.

ENDFUNCTION.

Get Last Date of Previous Month

Execute this function module to get the Last Day of Previous Month

Function Module - OIL_LAST_DAY_OF_PREVIOUS_MONTH

List of GL Open Items

*&---------------------------------------------------------------------*
*& Report  ZVENDOR_OP_SUMMARY
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT  ZGL_OP_SUMMARY.

TABLES: BSEG, BKPF.

TYPE-POOLS : SLIS.

DATA: FIELDCATALOG TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE,
      GD_TAB_GROUP TYPE SLIS_T_SP_GROUP_ALV,
      GD_LAYOUT    TYPE SLIS_LAYOUT_ALV,
      GD_REPID     LIKE SY-REPID,
      GT_EVENTS     TYPE SLIS_T_EVENT,
      GD_PRNTPARAMS TYPE SLIS_PRINT_ALV.

DATA: V_BELNR TYPE BSEG-BELNR.

SELECT-OPTIONS  : V_HKONT FOR BSEG-HKONT.
SELECT-OPTIONS  : V_GSBER FOR BSEG-GSBER.

TYPES : BEGIN OF TY_BSEG,
        BUKRS TYPE BSEG-BUKRS,
        HKONT TYPE BSEG-HKONT,
        GSBER TYPE BSEG-GSBER,
        COUNT TYPE I,
        DMBTR TYPE BSEG-DMBTR,
        SHKZG TYPE SHKZG,
        SGTXT TYPE SGTXT,
       END OF TY_BSEG.

DATA: ITAB TYPE STANDARD TABLE OF TY_BSEG WITH HEADER LINE.
DATA: WA TYPE TY_BSEG.

DATA: IT_BSIK TYPE STANDARD TABLE OF BSIK WITH HEADER LINE.
DATA: WA_BSIK LIKE LINE OF IT_BSIK.

DATA: V_COUNT TYPE I.
DATA: X_BUKRS TYPE BSEG-BUKRS.
DATA: X_LIFNR TYPE BSEG-LIFNR.
DATA: X_GSBER TYPE BSEG-GSBER.
DATA: X_SAKNR TYPE BSEG-SAKNR.
DATA: X_HKONT TYPE BSEG-HKONT.
DATA: X_DMBTR TYPE BSEG-DMBTR.
DATA: X_SHKZG TYPE BSEG-SHKZG.

SELECT COUNT(*) SUM( DMBTR ) BUKRS GSBER HKONT SHKZG FROM BSIS INTO (V_COUNT, X_DMBTR, X_BUKRS, X_GSBER, X_HKONT, X_SHKZG)
WHERE BUKRS = 'RCFL' AND
  HKONT IN V_HKONT AND
  GSBER IN V_GSBER
  GROUP BY BUKRS GSBER HKONT SHKZG
  ORDER BY GSBER.
  WA-BUKRS = X_BUKRS.
  WA-GSBER = X_GSBER.
  WA-HKONT = X_HKONT.
  WA-COUNT = V_COUNT.
  WA-DMBTR = X_DMBTR.
  WA-SHKZG = X_SHKZG.
  IF X_SHKZG EQ 'H'.
    WA-SGTXT = 'Credit'.
  ENDIF.
  IF X_SHKZG EQ 'S'.
    WA-SGTXT = 'Debit'.
  ENDIF.
  APPEND WA TO ITAB.
ENDSELECT.

PERFORM BUILD_FIELDCATALOG.
PERFORM BUILD_LAYOUT.
PERFORM DISPLAY_ALV_REPORT.

FORM BUILD_FIELDCATALOG .
  FIELDCATALOG-FIELDNAME   = 'BUKRS'.
  FIELDCATALOG-SELTEXT_M   = 'Company Code'.
  FIELDCATALOG-COL_POS     = 1.
  APPEND FIELDCATALOG TO FIELDCATALOG.
  CLEAR  FIELDCATALOG.

  FIELDCATALOG-FIELDNAME   = 'GSBER'.
  FIELDCATALOG-SELTEXT_M   = 'Business Area'.
  FIELDCATALOG-COL_POS     = 2.
  APPEND FIELDCATALOG TO FIELDCATALOG.
  CLEAR  FIELDCATALOG.

  FIELDCATALOG-FIELDNAME   = 'HKONT'.
  FIELDCATALOG-SELTEXT_M   = 'GL Account'.
  FIELDCATALOG-COL_POS     = 3.
  APPEND FIELDCATALOG TO FIELDCATALOG.
  CLEAR  FIELDCATALOG.

  FIELDCATALOG-FIELDNAME   = 'COUNT'.
  FIELDCATALOG-SELTEXT_M   = 'Open Item'.
  FIELDCATALOG-COL_POS     = 4.
  APPEND FIELDCATALOG TO FIELDCATALOG.
  CLEAR  FIELDCATALOG.

  FIELDCATALOG-FIELDNAME   = 'DMBTR'.
  FIELDCATALOG-SELTEXT_M   = 'Total Amount'.
  FIELDCATALOG-COL_POS     = 5.
  APPEND FIELDCATALOG TO FIELDCATALOG.
  CLEAR  FIELDCATALOG.

  FIELDCATALOG-FIELDNAME   = 'SGTXT'.
  FIELDCATALOG-SELTEXT_M   = 'Credit/Debit'.
  FIELDCATALOG-COL_POS     = 6.
  APPEND FIELDCATALOG TO FIELDCATALOG.
  CLEAR  FIELDCATALOG.

ENDFORM.                    " BUILD_FIELDCATALOG

FORM BUILD_LAYOUT .
GD_LAYOUT-NO_INPUT          = 'X'.
  GD_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.
  GD_LAYOUT-TOTALS_TEXT       = 'TOTALS'(201).
ENDFORM.                    " BUILD_LAYOUT

FORM DISPLAY_ALV_REPORT .
GD_REPID = SY-REPID.
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
       EXPORTING
            I_CALLBACK_PROGRAM      = GD_REPID
*            I_CALLBACK_TOP_OF_PAGE   = 'TOP-OF-PAGE'  "SEE FORM
            I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
*            I_GRID_TITLE           = OUTTEXT
            IS_LAYOUT               = GD_LAYOUT
            IT_FIELDCAT             = FIELDCATALOG[]
*            IT_SPECIAL_GROUPS       = GD_TABGROUP
            IT_EVENTS               = GT_EVENTS
            IS_PRINT                = GD_PRNTPARAMS
            I_SAVE                  = 'X'
*            IS_VARIANT              = Z_TEMPLATE
       TABLES
            T_OUTTAB                = ITAB

       EXCEPTIONS
            PROGRAM_ERROR           = 1
            OTHERS                  = 2.
  IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.
ENDFORM.                    " DISPLAY_ALV_REPORT

List of Customer Open Items

*&---------------------------------------------------------------------*
*& Report  ZCUSTOMER_OP_SUMMARY
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT ZCUSTOMER_OP_SUMMARY.

TABLES: BSEG, BKPF.

TYPE-POOLS : SLIS.

DATA: FIELDCATALOG TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE,
      GD_TAB_GROUP TYPE SLIS_T_SP_GROUP_ALV,
      GD_LAYOUT    TYPE SLIS_LAYOUT_ALV,
      GD_REPID     LIKE SY-REPID,
      GT_EVENTS     TYPE SLIS_T_EVENT,
      GD_PRNTPARAMS TYPE SLIS_PRINT_ALV.

DATA: V_BELNR TYPE BSEG-BELNR.

SELECT-OPTIONS  : V_SAKNR FOR BSEG-SAKNR.
SELECT-OPTIONS  : V_GSBER FOR BSEG-GSBER.
SELECT-OPTIONS  : V_KUNNR FOR BSEG-KUNNR.

TYPES : BEGIN OF TY_BSEG,
        BUKRS TYPE BSEG-BUKRS,
        KUNNR TYPE BSEG-KUNNR,
        SAKNR TYPE BSEG-SAKNR,
        HKONT TYPE BSEG-HKONT,
        GSBER TYPE BSEG-GSBER,
        COUNT TYPE I,
        DMBTR TYPE BSEG-DMBTR,
       END OF TY_BSEG.

DATA: ITAB TYPE STANDARD TABLE OF TY_BSEG WITH HEADER LINE.
DATA: WA TYPE TY_BSEG.

DATA: V_COUNT TYPE I.
DATA: X_BUKRS TYPE BSEG-BUKRS.
DATA: X_KUNNR TYPE BSEG-KUNNR.
DATA: X_GSBER TYPE BSEG-GSBER.
DATA: X_SAKNR TYPE BSEG-SAKNR.
DATA: X_HKONT TYPE BSEG-HKONT.
DATA: X_DMBTR TYPE BSEG-DMBTR.

SELECT COUNT(*) SUM( DMBTR ) BUKRS KUNNR GSBER SAKNR HKONT FROM BSID INTO (V_COUNT, X_DMBTR, X_BUKRS, X_KUNNR, X_GSBER, X_SAKNR, X_HKONT)
WHERE BUKRS = 'RCFL' AND
  SAKNR IN V_SAKNR AND
  KUNNR IN V_KUNNR AND
  GSBER IN V_GSBER
  GROUP BY BUKRS KUNNR GSBER SAKNR HKONT
  ORDER BY GSBER.
  WA-BUKRS = X_BUKRS.
  WA-KUNNR = X_KUNNR.
  WA-GSBER = X_GSBER.
  WA-SAKNR = X_SAKNR.
  WA-HKONT = X_HKONT.
  WA-COUNT = V_COUNT.
  WA-DMBTR = X_DMBTR.
  APPEND WA TO ITAB.
ENDSELECT.

PERFORM BUILD_FIELDCATALOG.
PERFORM BUILD_LAYOUT.
PERFORM DISPLAY_ALV_REPORT.

FORM BUILD_FIELDCATALOG .
  FIELDCATALOG-FIELDNAME   = 'BUKRS'.
  FIELDCATALOG-SELTEXT_M   = 'Company Code'.
  FIELDCATALOG-COL_POS     = 1.
  APPEND FIELDCATALOG TO FIELDCATALOG.
  CLEAR  FIELDCATALOG.

  FIELDCATALOG-FIELDNAME   = 'KUNNR'.
  FIELDCATALOG-SELTEXT_M   = 'Customer'.
  FIELDCATALOG-COL_POS     = 2.
  APPEND FIELDCATALOG TO FIELDCATALOG.
  CLEAR  FIELDCATALOG.

  FIELDCATALOG-FIELDNAME   = 'GSBER'.
  FIELDCATALOG-SELTEXT_M   = 'Business Area'.
  FIELDCATALOG-COL_POS     = 3.
  APPEND FIELDCATALOG TO FIELDCATALOG.
  CLEAR  FIELDCATALOG.

  FIELDCATALOG-FIELDNAME   = 'SAKNR'.
  FIELDCATALOG-SELTEXT_M   = 'GL Account'.
  FIELDCATALOG-COL_POS     = 4.
  APPEND FIELDCATALOG TO FIELDCATALOG.
  CLEAR  FIELDCATALOG.

  FIELDCATALOG-FIELDNAME   = 'HKONT'.
  FIELDCATALOG-SELTEXT_M   = 'Sub-GL Account'.
  FIELDCATALOG-COL_POS     = 5.
  APPEND FIELDCATALOG TO FIELDCATALOG.
  CLEAR  FIELDCATALOG.

  FIELDCATALOG-FIELDNAME   = 'COUNT'.
  FIELDCATALOG-SELTEXT_M   = 'Open Item'.
  FIELDCATALOG-COL_POS     = 6.
  APPEND FIELDCATALOG TO FIELDCATALOG.
  CLEAR  FIELDCATALOG.

  FIELDCATALOG-FIELDNAME   = 'DMBTR'.
  FIELDCATALOG-SELTEXT_M   = 'Total Amount'.
  FIELDCATALOG-COL_POS     = 7.
  APPEND FIELDCATALOG TO FIELDCATALOG.
  CLEAR  FIELDCATALOG.

ENDFORM.                    " BUILD_FIELDCATALOG

FORM BUILD_LAYOUT .
GD_LAYOUT-NO_INPUT          = 'X'.
  GD_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.
  GD_LAYOUT-TOTALS_TEXT       = 'TOTALS'(201).
ENDFORM.                    " BUILD_LAYOUT

FORM DISPLAY_ALV_REPORT .
GD_REPID = SY-REPID.
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
       EXPORTING
            I_CALLBACK_PROGRAM      = GD_REPID
*            I_CALLBACK_TOP_OF_PAGE   = 'TOP-OF-PAGE'  "SEE FORM
            I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
*            I_GRID_TITLE           = OUTTEXT
            IS_LAYOUT               = GD_LAYOUT
            IT_FIELDCAT             = FIELDCATALOG[]
*            IT_SPECIAL_GROUPS       = GD_TABGROUP
            IT_EVENTS               = GT_EVENTS
            IS_PRINT                = GD_PRNTPARAMS
            I_SAVE                  = 'X'
*            IS_VARIANT              = Z_TEMPLATE
       TABLES
            T_OUTTAB                = ITAB

       EXCEPTIONS
            PROGRAM_ERROR           = 1
            OTHERS                  = 2.
  IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.
ENDFORM.                    " DISPLAY_ALV_REPORT

Friday, January 15, 2016

List of Vendor Open Items

*&---------------------------------------------------------------------*
*& Report  ZVENDOR_OP_SUMMARY
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT  ZVENDOR_OP_SUMMARY.

TABLES: BSEG, BKPF.

TYPE-POOLS : SLIS.

DATA: FIELDCATALOG TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE,
      GD_TAB_GROUP TYPE SLIS_T_SP_GROUP_ALV,
      GD_LAYOUT    TYPE SLIS_LAYOUT_ALV,
      GD_REPID     LIKE SY-REPID,
      GT_EVENTS     TYPE SLIS_T_EVENT,
      GD_PRNTPARAMS TYPE SLIS_PRINT_ALV.

DATA: V_BELNR TYPE BSEG-BELNR.

SELECT-OPTIONS  : V_SAKNR FOR BSEG-SAKNR.
SELECT-OPTIONS  : V_GSBER FOR BSEG-GSBER.
SELECT-OPTIONS  : V_LIFNR FOR BSEG-LIFNR.

TYPES : BEGIN OF TY_BSEG,
        BUKRS TYPE BSEG-BUKRS,
        LIFNR TYPE BSEG-LIFNR,
        SAKNR TYPE BSEG-SAKNR,
        HKONT TYPE BSEG-HKONT,
        GSBER TYPE BSEG-GSBER,
        COUNT TYPE I,
        DMBTR TYPE BSEG-DMBTR,
        NAME1 TYPE NAME1_GP,
       END OF TY_BSEG.

DATA: ITAB TYPE STANDARD TABLE OF TY_BSEG WITH HEADER LINE.
DATA: WA TYPE TY_BSEG.

DATA: IT_BSIK TYPE STANDARD TABLE OF BSIK WITH HEADER LINE.
DATA: WA_BSIK LIKE LINE OF IT_BSIK.

DATA: V_COUNT TYPE I.
DATA: X_BUKRS TYPE BSEG-BUKRS.
DATA: X_LIFNR TYPE BSEG-LIFNR.
DATA: X_GSBER TYPE BSEG-GSBER.
DATA: X_SAKNR TYPE BSEG-SAKNR.
DATA: X_HKONT TYPE BSEG-HKONT.
DATA: X_DMBTR TYPE BSEG-DMBTR.

SELECT COUNT(*) SUM( DMBTR ) BUKRS LIFNR GSBER SAKNR HKONT FROM BSIK INTO (V_COUNT, X_DMBTR, X_BUKRS, X_LIFNR, X_GSBER, X_SAKNR, X_HKONT)
WHERE BUKRS = 'RCFL' AND
  SAKNR IN V_SAKNR AND
  LIFNR IN V_LIFNR AND
  GSBER IN V_GSBER
  GROUP BY BUKRS LIFNR GSBER SAKNR HKONT
  ORDER BY GSBER.
  WA-BUKRS = X_BUKRS.
  WA-LIFNR = X_LIFNR.
  WA-GSBER = X_GSBER.
  WA-SAKNR = X_SAKNR.
  WA-HKONT = X_HKONT.
  WA-COUNT = V_COUNT.
  WA-DMBTR = X_DMBTR.
  APPEND WA TO ITAB.
ENDSELECT.

DATA: V_NAME1 TYPE NAME1_GP.
LOOP AT ITAB INTO WA.
SELECT NAME1 FROM LFA1 INTO (V_NAME1)
  WHERE LIFNR = WA-LIFNR.
  WA-NAME1 = V_NAME1.
  MODIFY ITAB FROM WA.
  ENDSELECT.
ENDLOOP.


PERFORM BUILD_FIELDCATALOG.
PERFORM BUILD_LAYOUT.
PERFORM DISPLAY_ALV_REPORT.

FORM BUILD_FIELDCATALOG .
  FIELDCATALOG-FIELDNAME   = 'BUKRS'.
  FIELDCATALOG-SELTEXT_M   = 'Company Code'.
  FIELDCATALOG-COL_POS     = 1.
  APPEND FIELDCATALOG TO FIELDCATALOG.
  CLEAR  FIELDCATALOG.

  FIELDCATALOG-FIELDNAME   = 'LIFNR'.
  FIELDCATALOG-SELTEXT_M   = 'Vendor'.
  FIELDCATALOG-COL_POS     = 2.
  APPEND FIELDCATALOG TO FIELDCATALOG.
  CLEAR  FIELDCATALOG.

  FIELDCATALOG-FIELDNAME   = 'NAME1'.
  FIELDCATALOG-SELTEXT_M   = 'Vendor Name'.
  FIELDCATALOG-COL_POS     = 3.
  APPEND FIELDCATALOG TO FIELDCATALOG.
  CLEAR  FIELDCATALOG.

  FIELDCATALOG-FIELDNAME   = 'GSBER'.
  FIELDCATALOG-SELTEXT_M   = 'Business Area'.
  FIELDCATALOG-COL_POS     = 4.
  APPEND FIELDCATALOG TO FIELDCATALOG.
  CLEAR  FIELDCATALOG.

  FIELDCATALOG-FIELDNAME   = 'SAKNR'.
  FIELDCATALOG-SELTEXT_M   = 'GL Account'.
  FIELDCATALOG-COL_POS     = 5.
  APPEND FIELDCATALOG TO FIELDCATALOG.
  CLEAR  FIELDCATALOG.

  FIELDCATALOG-FIELDNAME   = 'HKONT'.
  FIELDCATALOG-SELTEXT_M   = 'Sub-GL Account'.
  FIELDCATALOG-COL_POS     = 6.
  APPEND FIELDCATALOG TO FIELDCATALOG.
  CLEAR  FIELDCATALOG.

  FIELDCATALOG-FIELDNAME   = 'COUNT'.
  FIELDCATALOG-SELTEXT_M   = 'Open Item'.
  FIELDCATALOG-COL_POS     = 7.
  APPEND FIELDCATALOG TO FIELDCATALOG.
  CLEAR  FIELDCATALOG.

  FIELDCATALOG-FIELDNAME   = 'DMBTR'.
  FIELDCATALOG-SELTEXT_M   = 'Total Amount'.
  FIELDCATALOG-COL_POS     = 8.
  APPEND FIELDCATALOG TO FIELDCATALOG.
  CLEAR  FIELDCATALOG.

ENDFORM.                    " BUILD_FIELDCATALOG

FORM BUILD_LAYOUT .
GD_LAYOUT-NO_INPUT          = 'X'.
  GD_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.
  GD_LAYOUT-TOTALS_TEXT       = 'TOTALS'(201).
ENDFORM.                    " BUILD_LAYOUT

FORM DISPLAY_ALV_REPORT .
GD_REPID = SY-REPID.
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
       EXPORTING
            I_CALLBACK_PROGRAM      = GD_REPID
*            I_CALLBACK_TOP_OF_PAGE   = 'TOP-OF-PAGE'  "SEE FORM
            I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
*            I_GRID_TITLE           = OUTTEXT
            IS_LAYOUT               = GD_LAYOUT
            IT_FIELDCAT             = FIELDCATALOG[]
*            IT_SPECIAL_GROUPS       = GD_TABGROUP
            IT_EVENTS               = GT_EVENTS
            IS_PRINT                = GD_PRNTPARAMS
            I_SAVE                  = 'X'
*            IS_VARIANT              = Z_TEMPLATE
       TABLES
            T_OUTTAB                = ITAB

       EXCEPTIONS
            PROGRAM_ERROR           = 1
            OTHERS                  = 2.
  IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.
ENDFORM.                    " DISPLAY_ALV_REPORT

Friday, November 20, 2015

Setting Up Multiple Retained Earnings Accounts in Sames Chart of Accounts

If your requirement is to have P&L accounts X1 to Y1 carried forward to 1 retained earning account (R1)
and
X2 to Y2 carried forward to another retained earning account (R2)?

Then you can do this by T-Code OB53.
You can define 1 P&L statement account type to be "P", the account to be R1,
the 2nd P&L statement account type to be "Q", the account to be R2.

In the GL master (FSP0), you can define in Type/Description tab in P&L statement acct type "P" or "Q" to control the retained earnings account that the P&L account is carried forward to.

Saturday, October 10, 2015

BAPI or BDC for MIGO_GR

File format is shown below – 


Copy the data and paste it in TXT file.
Browse the TXT File
*&---------------------------------------------------------------------*
*& Report  Z_MIGO_GR
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT  Z_MIGO_GR.

Data: ITHEADER type STANDARD TABLE OF BAPI2017_GM_HEAD_01.
Data: WAHEADER LIKE LINE OF ITHEADER.

DATA: ITCODE TYPE TABLE OF BAPI2017_GM_CODE.
DATA: WACODE LIKE LINE OF ITCODE.

DATA: V_MATNR TYPE BAPI2017_GM_HEAD_RET-MAT_DOC.
DATA: V_MAJHR TYPE BAPI2017_GM_HEAD_RET-DOC_YEAR.

DATA: ITITEM type TABLE OF BAPI2017_GM_ITEM_CREATE.
DATA: WAITITEM LIKE LINE OF ITITEM.

DATA: ITRETURN TYPE TABLE OF BAPIRET2.
DATA: WAITRETURN LIKE LINE OF ITRETURN.


TYPES : BEGIN OF ST,
   EBELN(10),
   EBELP(5),
   BUDAT(10),
   XBLNR(16),
   FRBNR(16),
   XABLN(10),
   MATNR(18),
   WERKS(4),
   LGORT(4),
   CHARG(10),
   BWART(3),
   MENGE(13),
END OF ST.

DATA : ITAB TYPE TABLE OF ST.
   DATA : WA TYPE ST.

DATA: W_FILENAME TYPE STRING.
  SELECTION-SCREEN SKIP 1.
  SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-500.
  PARAMETERS: P_FILENM LIKE RLGRAP-FILENAME.
  SELECTION-SCREEN END OF BLOCK B1.

START-OF-SELECTION.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILENM.

  CALL FUNCTION 'WS_FILENAME_GET'
       EXPORTING
            MASK             = ',*.*,*.*.'
            MODE             = '0'
            TITLE            = 'GET FILE NAME'
       IMPORTING
            FILENAME         = P_FILENM
       EXCEPTIONS
            INV_WINSYS       = 1
            NO_BATCH         = 2
            SELECTION_CANCEL = 3
            SELECTION_ERROR  = 4
            OTHERS           = 5.

** END OF CHANGE DCS05052003

** START OF CHANGE DCS05052003
START-OF-SELECTION.
 W_FILENAME = P_FILENM.
CALL FUNCTION 'GUI_UPLOAD'
  EXPORTING
**   FILENAME                    = 'C:\BDC_XLS_ASSIGN.TXT'
   FILENAME                      = W_FILENAME
   FILETYPE                      = 'ASC'
   HAS_FIELD_SEPARATOR           = 'X'
  TABLES
    DATA_TAB                     = ITAB
 EXCEPTIONS
   FILE_OPEN_ERROR               = 1
   FILE_READ_ERROR               = 2
   NO_BATCH                      = 3
   GUI_REFUSE_FILETRANSFER       = 4
   INVALID_TYPE                  = 5
   NO_AUTHORITY                  = 6
   UNKNOWN_ERROR                 = 7
   BAD_DATA_FORMAT               = 8
   HEADER_NOT_ALLOWED            = 9
   SEPARATOR_NOT_ALLOWED         = 10
   HEADER_TOO_LONG               = 11
   UNKNOWN_DP_ERROR              = 12
   ACCESS_DENIED                 = 13
   DP_OUT_OF_MEMORY              = 14
   DISK_FULL                     = 15
   DP_TIMEOUT                    = 16
   OTHERS                        = 17.
          .
IF SY-SUBRC <> 0.
 MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO.
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

loop at ITAB into WA.
  CALL FUNCTION 'CONVERT_DATE_TO_INTERNAL'
      EXPORTING
        DATE_EXTERNAL                  = WA-BUDAT
*       ACCEPT_INITIAL_DATE            =
      IMPORTING
        DATE_INTERNAL                  = WA-BUDAT
*     EXCEPTIONS
*       DATE_EXTERNAL_IS_INVALID       = 1
*       OTHERS                         = 2
              .

  WAHEADER-PSTNG_DATE = WA-BUDAT.
  WAHEADER-DOC_DATE = WA-BUDAT.
  WAHEADER-REF_DOC_NO = WA-XBLNR.
  WAHEADER-BILL_OF_LADING = WA-FRBNR.

    CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
      EXPORTING
        INPUT         = wa-XABLN
      IMPORTING
        OUTPUT        = wa-XABLN.
  WAHEADER-GR_GI_SLIP_NO = wa-XABLN.
  append WAHEADER to ITHEADER.


  CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
      EXPORTING
        INPUT         = WA-MATNR
      IMPORTING
        OUTPUT        = WA-MATNR.
  WAITITEM-MATERIAL = WA-MATNR.

  WAITITEM-PLANT = WA-WERKS.
  WAITITEM-STGE_LOC = WA-LGORT.
  WAITITEM-BATCH = WA-CHARG.
  WAITITEM-MOVE_TYPE = WA-BWART.
  WAITITEM-ENTRY_QNT = WA-MENGE.
  WAITITEM-PO_NUMBER = WA-EBELN.
  WAITITEM-PO_ITEM = WA-EBELP.
  WAITITEM-MVT_IND = 'B'.
  append WAITITEM to ITITEM.


  CALL FUNCTION 'BAPI_GOODSMVT_CREATE'
  EXPORTING
    GOODSMVT_HEADER               = WAHEADER
    GOODSMVT_CODE                 = '01'
*   TESTRUN                       = ' '
*   GOODSMVT_REF_EWM              =
IMPORTING
*   GOODSMVT_HEADRET              =
   MATERIALDOCUMENT              = V_MATNR
   MATDOCUMENTYEAR               = V_MAJHR
  TABLES
    GOODSMVT_ITEM                 = ITITEM
*   GOODSMVT_SERIALNUMBER         =
    RETURN                        = ITRETURN
*   GOODSMVT_SERV_PART_DATA       =
*   EXTENSIONIN                   =
          .
  CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
   EXPORTING
     WAIT          = 'X'
*   IMPORTING
*     RETURN        =
            .

  clear: ITHEADER, ITITEM.
  Write: v_MATNR, V_MAJHR.
  NEW-LINE.
 ENDLOOP.