*&---------------------------------------------------------------------*
*& Report Z02MMR022
*&
*&---------------------------------------------------------------------*
* Author: Vince
* Closeing Date:
* Description: List of Billing Notification
************************************************************************
* Ver Date Author Modify Des
************************************************************************
* 1. 2013/03/10 Vince New Program
************************************************************************
REPORT YTEST999
MESSAGE-ID ZHR01
.
**********************************************************************
* TABLES
**********************************************************************
**********************************************************************
* TYPES
**********************************************************************
TYPES
:
BEGIN
OF TP_HEAD
,
EBELN
LIKE EKKO
-EBELN
,
"Contract Number
CONTRNAME
TYPE STRING
,
"Contract Description
DEPARTMENT
TYPE STRING
,
"Department
WAERS
LIKE EKKO
-WAERS
,
"Currency
KTWRT
LIKE EKKO
-KTWRT
,
"Contract Amount
KDATB
LIKE EKKO
-KDATB
,
"Contract Start Date
KDATE
LIKE EKKO
-KDATE
,
"Contract End Date
LIFNR
LIKE EKKO
-LIFNR
,
"vendor
NAME1
TYPE CHAR200
,
"Vendor name
BAMOUNT
LIKE EKKO
-KTWRT
,
"Billing Amount
END
OF TP_HEAD
.
TYPES
:
BEGIN
OF TP_OUT
,
CBOX
TYPE AQ_MARKBG
,
EBELN
LIKE EKPO
-EBELN
,
"Service Order
EBELP
LIKE EKPO
-EBELP
,
"Line Item
MATKL
TYPE CHAR100
,
"Service Category
TXZ01
LIKE EKPO
-TXZ01
,
"Short Text
MBLNR
LIKE MKPF
-MBLNR
,
"Service Receipt
WRBTR
LIKE EKBE
-WRBTR
,
"Amount
BNNUM
LIKE Z02MMBNNO
-BNNUM
,
"BN Number
BNDAT
LIKE Z02MMBNNO
-BNDAT
,
"BN Date
GJAHR
LIKE EKBE
-GJAHR
,
BOX_NAME
,
END
OF TP_OUT
.
**********************************************************************
* DATA
**********************************************************************
DATA
: GS_HEAD
TYPE TP_HEAD
.
DATA
: GT_OUT
TYPE
TABLE
OF TP_OUT
,
GS_OUT
TYPE TP_OUT
.
DATA
: GT_PRINT
TYPE
TABLE
OF TP_OUT
,
GS_PRINT
TYPE TP_OUT
.
DATA
: GT_FCAT
TYPE SLIS_T_FIELDCAT_ALV
,
GS_FCAT
TYPE
LINE
OF SLIS_T_FIELDCAT_ALV
,
GT_SORT
TYPE SLIS_T_SORTINFO_ALV
,
GS_SORT
TYPE
LINE
OF SLIS_T_SORTINFO_ALV
,
GS_LAYO
TYPE SLIS_LAYOUT_ALV
,
GS_SETTINGS
TYPE LVC_S_GLAY
.
**********************************************************************
* CONSTANTS
**********************************************************************
**********************************************************************
* SELECTION SCREEN
**********************************************************************
SELECTION-SCREEN
BEGIN
OF
BLOCK BL01
WITH
FRAME
TITLE
TEXT
-
001
.
PARAMETERS
:P_BUKRS
LIKE EKKO
-BUKRS
DEFAULT
'1000' OBLIGATORY
.
PARAMETERS
:P_EBELN
LIKE EKKO
-EBELN OBLIGATORY
.
SELECTION-SCREEN
END
OF
BLOCK BL01
.
**********************************************************************
* START OF SELECTION
**********************************************************************
START-OF-SELECTION
.
PERFORM FRM_GET_HEAD
.
PERFORM FRM_GET_ITEM
.
**********************************************************************
* END OF SELECTION
**********************************************************************
END-OF-SELECTION
.
PERFORM FRM_BUILD_FIELDCAT
.
PERFORM FRM_SET_LAYOUT
.
PERFORM FRM_DISPLAY_ALV
.
**********************************************************************
* SUBROUTINES
**********************************************************************
*&---------------------------------------------------------------------*
*& Form FRM_GET_HEAD
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM FRM_GET_HEAD
.
DATA
: LT_READ
LIKE
TABLE
OF TLINE
WITH
HEADER
LINE
.
DATA
: L_NAME
LIKE THEAD
-TDNAME
.
DATA
: L_ADRNR
LIKE LFA1
-ADRNR
,
LS_ADRC
LIKE ADRC
.
SELECT
SINGLE EBELN WAERS KTWRT KDATB KDATE LIFNR
INTO CORRESPONDING
FIELDS
OF GS_HEAD
FROM EKKO
WHERE EBELN
= P_EBELN
AND BUKRS
= P_BUKRS
AND BSART
=
'CCTR'
.
IF SY
-SUBRC
EQ
0
.
L_NAME
= P_EBELN
.
CALL
FUNCTION
'READ_TEXT'
EXPORTING
ID
=
'K93'
LANGUAGE
= SY
-LANGU
NAME
= L_NAME
OBJECT
=
'EKKO'
TABLES
LINES
= LT_READ
EXCEPTIONS
ID
=
1
LANGUAGE
=
2
NAME
=
3
NOT_FOUND
=
4
OBJECT
=
5
REFERENCE_CHECK
=
6
WRONG_ACCESS_TO_ARCHIVE
=
7
OTHERS
=
8
.
IF SY
-SUBRC
EQ
0
.
LOOP
AT LT_READ
.
CONCATENATE GS_HEAD
-CONTRNAME LT_READ
-TDLINE
INTO GS_HEAD
-CONTRNAME
.
ENDLOOP
.
ENDIF
.
SELECT
SINGLE ADRNR
INTO L_ADRNR
FROM LFA1
WHERE LIFNR
= GS_HEAD
-LIFNR
.
SELECT
SINGLE *
INTO LS_ADRC
FROM ADRC
WHERE ADDRNUMBER
= L_ADRNR
.
CONCATENATE LS_ADRC
-NAME1 LS_ADRC
-NAME2
INTO GS_HEAD
-NAME1
.
ELSE
.
MESSAGE S000
(ZHR01
) DISPLAY
LIKE
'E'
.
STOP
.
ENDIF
.
ENDFORM
.
" FRM_GET_HEAD
*&---------------------------------------------------------------------*
*& Form FRM_GET_ITEM
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM FRM_GET_ITEM
.
DATA
: LT_EKPO
TYPE
TABLE
OF EKPO
,
LS_EKPO
TYPE EKPO
,
LT_EKBE
TYPE
TABLE
OF EKBE
,
LS_EKBE
TYPE EKBE
,
LT_T023T
TYPE
TABLE
OF T023T
,
LS_T023T
TYPE T023T
,
LT_EKKO
TYPE
TABLE
OF EKKO
,
LS_EKKO
TYPE EKKO
,
L_INDEX
TYPE SY
-
INDEX
.
CLEAR
:LT_EKPO
,LT_EKBE
,LT_T023T
,LT_EKKO
,L_INDEX
.
SELECT *
FROM EKPO
INTO
TABLE LT_EKPO
WHERE KONNR
= GS_HEAD
-EBELN
.
CHECK LT_EKPO
IS
NOT
INITIAL
.
SELECT *
FROM EKKO
INTO
TABLE LT_EKKO
FOR
ALL ENTRIES
IN LT_EKPO
WHERE EBELN
= LT_EKPO
-EBELN
AND BSART
=
'ZSPO'
.
LOOP
AT LT_EKPO
INTO LS_EKPO
.
L_INDEX
= SY
-TABIX
.
READ
TABLE LT_EKKO
INTO LS_EKKO
WITH
KEY EBELN
= LS_EKPO
-EBELN
.
IF SY
-SUBRC
NE
0
.
DELETE LT_EKPO
INDEX L_INDEX
.
ENDIF
.
ENDLOOP
.
CHECK LT_EKPO
IS
NOT
INITIAL
.
SELECT *
FROM EKBE
INTO
TABLE LT_EKBE
FOR
ALL ENTRIES
IN LT_EKPO
WHERE EBELN
= LT_EKPO
-EBELN
AND EBELP
= LT_EKPO
-EBELP
AND VGABE
=
'1'
.
SELECT *
FROM T023T
INTO
TABLE LT_T023T
FOR
ALL ENTRIES
IN LT_EKPO
WHERE MATKL
= LT_EKPO
-MATKL
.
LOOP
AT LT_EKBE
INTO LS_EKBE
.
GS_OUT
-EBELN
= LS_EKBE
-EBELN
.
GS_OUT
-EBELP
= LS_EKBE
-EBELP
.
READ
TABLE LT_EKPO
INTO LS_EKPO
WITH
KEY EBELN
= GS_OUT
-EBELN EBELP
= GS_OUT
-EBELP
.
READ
TABLE LT_T023T
INTO LS_T023T
WITH
KEY MATKL
= LS_EKPO
-MATKL
.
GS_OUT
-MATKL
= LS_T023T
-WGBEZ60
.
GS_OUT
-TXZ01
= LS_EKPO
-TXZ01
.
GS_OUT
-MBLNR
= LS_EKBE
-BELNR
.
GS_OUT
-WRBTR
= LS_EKBE
-WRBTR
.
IF LS_EKBE
-SHKZG
EQ
'H'
.
GS_OUT
-WRBTR
=
- GS_OUT
-WRBTR
.
ENDIF
.
GS_OUT
-GJAHR
= LS_EKBE
-GJAHR
.
SELECT
SINGLE BNNUM BNDAT
INTO
(GS_OUT
-BNNUM
,GS_OUT
-BNDAT
)
FROM Z02MMBNNO
WHERE MBLNR
= GS_OUT
-MBLNR
AND GJAHR
= GS_OUT
-GJAHR
.
IF GS_OUT
-BNNUM
IS
NOT
INITIAL
.
GS_HEAD
-BAMOUNT
= GS_HEAD
-BAMOUNT + GS_OUT
-WRBTR
.
ENDIF
.
APPEND GS_OUT
TO GT_OUT
.
CLEAR
: GS_OUT
,LS_EKPO
,LS_T023T
.
ENDLOOP
.
ENDFORM
.
" FRM_GET_ITEM
*&---------------------------------------------------------------------*
*& Form FRM_BUILD_FIELDCAT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM FRM_BUILD_FIELDCAT
.
CLEAR GS_FCAT
.
GS_FCAT
-FIELDNAME
=
'CBOX'
.
GS_FCAT
-SELTEXT_L
=
'Select'
.
GS_FCAT
-
CHECKBOX
=
'X'
.
GS_FCAT
-FIX_COLUMN
=
'X'
.
GS_FCAT
-
EDIT
=
'X'
.
GS_FCAT
-OUTPUTLEN
=
'5'
.
APPEND GS_FCAT
TO GT_FCAT
.
DEFINE APPEND_FCAT
.
CLEAR GS_FCAT
.
GS_FCAT
-FIELDNAME
= &1
.
GS_FCAT
-SELTEXT_L
= &2
.
GS_FCAT
-NO_OUT
= &3
.
GS_FCAT
-NO_ZERO
= &4
.
GS_FCAT
-OUTPUTLEN
= &5
.
APPEND GS_FCAT
TO GT_FCAT
.
END-OF-DEFINITION
.
APPEND_FCAT
'EBELN'
'Service Order'
(
001
)
''
''
'12'
.
APPEND_FCAT
'EBELP'
'Line Item'
(
002
)
''
''
'6'
.
APPEND_FCAT
'MATKL'
'Service Category'
(
003
)
''
''
'50'
.
APPEND_FCAT
'TXZ01'
'Short Text'
(
004
)
''
''
'30'
.
APPEND_FCAT
'MBLNR'
'Service Receipt'
(
005
)
''
''
'12'
.
APPEND_FCAT
'WRBTR'
'Amount'
(
006
)
''
''
'13'
.
APPEND_FCAT
'BNNUM'
'BN Number'
(
007
)
''
''
'20'
.
APPEND_FCAT
'BNDAT'
'BN Date'
(
008
)
''
''
'12'
.
ENDFORM
.
" FRM_BUILD_FIELDCAT
*&---------------------------------------------------------------------*
*& Form FRM_SET_LAYOUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM FRM_SET_LAYOUT
.
GS_LAYO
-ZEBRA
=
'X'
.
* GS_LAYO-COLWIDTH_OPTIMIZE = 'X'.
GS_LAYO
-BOX_FIELDNAME
=
'BOX_NAME'
.
ENDFORM
.
" FRM_SET_LAYOUT
*&---------------------------------------------------------------------*
*& Form FRM_DISPLAY_ALV
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM FRM_DISPLAY_ALV
.
GS_SETTINGS
-EDT_CLL_CB
=
'X'
.
CALL
FUNCTION
'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM
= SY
-REPID
IS_LAYOUT
= GS_LAYO
IT_FIELDCAT
= GT_FCAT
I_GRID_SETTINGS
= GS_SETTINGS
I_CALLBACK_PF_STATUS_SET
=
'FRM_SET_STATUS'
I_CALLBACK_USER_COMMAND
=
'FRM_USER_COMMAND'
I_SAVE
=
'A'
I_DEFAULT
=
'X'
TABLES
T_OUTTAB
= GT_OUT
.
ENDFORM
.
" FRM_DISPLAY_ALV
*&---------------------------------------------------------------------*
*& Form frm_USER_COMMAND
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_UCOMM text
* -->SELFIELD text
*----------------------------------------------------------------------*
FORM FRM_USER_COMMAND
USING P_UCOMM
TYPE SY
-UCOMM SELFIELD
TYPE SLIS_SELFIELD
.
CASE P_UCOMM
.
WHEN
'&SALL'
.
PERFORM FRM_SELECT_ALL
USING
'X'
.
SELFIELD
-
REFRESH
=
'X'
.
WHEN
'&DESAL'
.
PERFORM FRM_SELECT_ALL
USING
' '
.
SELFIELD
-
REFRESH
=
'X'
.
WHEN
'&PRINT'
.
PERFORM FRM_PRINT_BN
.
WHEN
'&CBN'
.
PERFORM FRM_GENERATE_BN
.
SELFIELD
-
REFRESH
=
'X'
.
ENDCASE
.
ENDFORM
.
"user_command
*&---------------------------------------------------------------------*
*& Form FRM_SET_STATUS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_EXTAB text
*----------------------------------------------------------------------*
FORM FRM_SET_STATUS
USING P_EXTAB
TYPE SLIS_T_EXTAB
.
SET
PF-STATUS
'STATUS01'
.
ENDFORM
.
"f_status
*&---------------------------------------------------------------------*
*& Form FRM_SELECT_ALL
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_0737 text
*----------------------------------------------------------------------*
FORM FRM_SELECT_ALL
USING
VALUE
(P_X
)
.
DATA LS_OUT
LIKE GS_OUT
.
LOOP
AT GT_OUT
INTO LS_OUT
.
LS_OUT
-CBOX
= P_X
.
MODIFY GT_OUT
FROM LS_OUT
INDEX SY
-TABIX
.
ENDLOOP
.
ENDFORM
.
" FRM_SELECT_ALL
*&---------------------------------------------------------------------*
*& Form FRM_GENERATE_BN
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM FRM_GENERATE_BN
.
DATA
:L_BN
(
3
)
TYPE N
.
DATA
:LS_Z02MMBNNO
LIKE Z02MMBNNO
.
CLEAR L_BN
.
SELECT
MAX
( BMSNO
)
INTO L_BN
FROM Z02MMBNNO
WHERE EBELN
= P_EBELN
.
LOOP
AT GT_OUT
INTO GS_OUT
WHERE BNNUM
=
''
AND CBOX
=
'X'
.
L_BN
= L_BN +
1
.
CONCATENATE
'BN' P_EBELN
'-' L_BN
INTO GS_OUT
-BNNUM
.
GS_OUT
-BNDAT
= SY
-DATUM
.
GS_HEAD
-BAMOUNT
= GS_HEAD
-BAMOUNT + GS_OUT
-WRBTR
.
CLEAR LS_Z02MMBNNO
.
LS_Z02MMBNNO
-MBLNR
= GS_OUT
-MBLNR
.
LS_Z02MMBNNO
-GJAHR
= GS_OUT
-GJAHR
.
LS_Z02MMBNNO
-EBELN
= P_EBELN
.
LS_Z02MMBNNO
-BMSNO
= L_BN
.
LS_Z02MMBNNO
-BNNUM
= GS_OUT
-BNNUM
.
LS_Z02MMBNNO
-BNDAT
= GS_OUT
-BNDAT
.
INSERT Z02MMBNNO
FROM LS_Z02MMBNNO
.
MODIFY GT_OUT
FROM GS_OUT
INDEX SY
-TABIX
.
ENDLOOP
.
ENDFORM
.
" FRM_GENERATE_BN
*&---------------------------------------------------------------------*
*& Form FRM_PRINT_BN
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM FRM_PRINT_BN
.
DATA
: FUNC_MOD_NAME
TYPE RS38L_FNAM
,
" 子程序名
OUTPUT_OPTIONS
TYPE SSFCOMPOP
,
" SAP Smart Forms: 智能写作器 (传输) 选项
IT_JOB_OUTPUT_INFO
TYPE SSFCRESCL
,
CONTROL_PARAMETERS
TYPE SSFCTRLOP
.
" Smart Forms: 控制结构
CLEAR GT_PRINT
.
LOOP
AT GT_OUT
INTO GS_OUT
WHERE CBOX
=
'X'
AND BNNUM
NE
''
.
GS_PRINT
= GS_OUT
.
APPEND GS_PRINT
TO GT_PRINT
.
CLEAR
: GS_PRINT
,GS_OUT
.
ENDLOOP
.
CHECK GT_PRINT
IS
NOT
INITIAL
.
CALL
FUNCTION
'SSF_FUNCTION_MODULE_NAME'
EXPORTING
FORMNAME
=
'ZMM_FORM_06'
IMPORTING
FM_NAME
= FUNC_MOD_NAME
EXCEPTIONS
NO_FORM
=
1
NO_FUNCTION_MODULE
=
2
OTHERS
=
3
.
OUTPUT_OPTIONS
-TDNEWID
=
'X'
.
CONTROL_PARAMETERS
-NO_CLOSE
= SPACE
.
* control_parameters-no_open = 'X'.
CONTROL_PARAMETERS
-PREVIEW
=
'X'
.
* control_parameters-no_dialog = 'X'.
CALL
FUNCTION FUNC_MOD_NAME
EXPORTING
CONTROL_PARAMETERS
= CONTROL_PARAMETERS
OUTPUT_OPTIONS
= OUTPUT_OPTIONS
EXCEPTIONS
FORMATTING_ERROR
=
1
INTERNAL_ERROR
=
2
SEND_ERROR
=
3
USER_CANCELED
=
4
OTHERS
=
5
.
IF SY
-SUBRC <>
0
.
ENDIF
.
ENDFORM
.
" FRM_PRINT_BN