06-02-2008 12:25 PM
develoed an ALv report for incomplete sales order and to provide facility to release the oreder for billing.
Could you tell me from which tables i will get the information and what to do?
06-02-2008 3:03 PM
Hi Kumar,
if you click on the customer number/sales order you should get the customer details/sales details etc
This is an interactive report..
Example program
This is your grid FM..
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY' Or grid display
EXPORTING
I_CALLBACK_PROGRAM = GT_REPID
:
I_CALLBACK_USER_COMMAND = 'F_USER_COMMAND' " FORM NAME
:
:
IT_FIELDCAT = GT_FIELDCAT
.....................................
TABLES
T_OUTTAB = ITAB
...........................
This you should write for your double click
FORM F_USER_COMMAND USING R_UCOMM LIKE SY-UCOMM
RS_SELFIELD TYPE SLIS_SELFIELD.
CASE r_ucomm.
WHEN '&Ic1'. "double click
CASE rs_selfield-fieldname. "field name
WHEN <your field name>.
IF NOT fp_selfield-value IS INITIAL.
*Setting parameter id for sales order
SET PARAMETER ID c_aun FIELD fp_selfield-value.
*FM for Call transaction "VA03"
CALL FUNCTION 'ABAP4_CALL_TRANSACTION'
EXPORTING
tcode = l_c_va03 " VA03
skip_screen = c_x. "'X'
ENDIF.
WHEN OTHERS.
MESSAGE i078. "Wrong Click msg
LEAVE LIST-PROCESSING.
ENDCASE.
ENDCASE.
ENDFORM.
Program displays data using function modules like REUSE_ALV_LIST_DISPLAY, REUSE_ALV_POPUP_TO_SELECT, REUSE_ALV_GRID_DISPLAY
&----
*& Report ZALV_SAMPLE *
*& *
&----
*& Program for displaying data using function modules : *
*& REUSE_ALV_LIST_DISPLAY *
*& REUSE_ALV_POPUP_TO_SELECT *
*& REUSE_ALV_GRID_DISPLAY *
*& *
&----
REPORT ZALV_SAMPLE .
TABLES VBAK.
DATA it_vbak LIKE VBAK OCCURS 0 WITH HEADER LINE.
SELECTION-SCREEN uline.
PARAMETERS: ALV1 RADIOBUTTON GROUP ALV, "REUSE_ALV_LIST_DISPLAY
ALV2 RADIOBUTTON GROUP ALV, "REUSE_ALV_POPUP_TO_SELECT
ALV3 RADIOBUTTON GROUP ALV, "REUSE_ALV_GRID_DISPLAY
ALV4 RADIOBUTTON GROUP ALV. " NORMAL DISPLAY
SELECTION-SCREEN uline.
SELECT * FROM VBAK
INTO CORRESPONDING FIELDS OF TABLE it_vbak
UP TO 10 ROWS.
IF ALV1 = 'X'.
PERFORM ALV_FUNC1.
ELSEIF ALV2 = 'X'.
PERFORM ALV_FUNC2.
ELSEIF ALV3 = 'X'.
PERFORM ALV_FUNC3.
ELSEIF ALV4 = 'X'.
PERFORM NORM.
ENDIF.
&----
*& Form ALV_FUNC1
&----
text
----
--> p1 text
<-- p2 text
----
FORM ALV_FUNC1 .
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
I_STRUCTURE_NAME = 'VBAK'
TABLES
T_OUTTAB = it_vbak
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. " ALV_FUNC1
&----
*& Form ALV_FUNC2
&----
text
----
--> p1 text
<-- p2 text
----
FORM ALV_FUNC2 .
CALL FUNCTION 'REUSE_ALV_POPUP_TO_SELECT'
EXPORTING
I_TITLE = 'SALES ORDER INFO'
I_ZEBRA = 'X'
I_TABNAME = 1
I_STRUCTURE_NAME = 'vbak'
TABLES
T_OUTTAB = it_vbak
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. " ALV_FUNC2
&----
*& Form ALV_FUNC3
&----
text
----
--> p1 text
<-- p2 text
----
FORM ALV_FUNC3 .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_STRUCTURE_NAME = 'vbak'
I_GRID_TITLE = 'SALES ORDER INFO'
TABLES
T_OUTTAB = it_vbak
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. " ALV_FUNC3
&----
*& Form NORM
&----
text
----
--> p1 text
<-- p2 text
----
FORM NORM .
format intensified.
skip 1.
WRITE: /'SALES DOC.',
' Created on ',
' Time',
' Created by',
' Valid from ',
' Sold-to party'.
format intensified off.
skip 2.
LOOP AT it_vbak.
write: / it_vbak-vbeln,' ',
it_vbak-erdat,' ',
it_vbak-erzet,' ',
it_vbak-ERNAM,' ',
it_vbak-ANGDT,' ',
it_vbak-KUNNR.
endloop.
ENDFORM. " NORM
see this link too
http://www.sap-basis-abap.com/abap/to-call-transaction-in-alv.htm
thanks
abdul
reward me if usfull
06-02-2008 3:03 PM
Hi Kumar,
if you click on the customer number/sales order you should get the customer details/sales details etc
This is an interactive report..
Example program
This is your grid FM..
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY' Or grid display
EXPORTING
I_CALLBACK_PROGRAM = GT_REPID
:
I_CALLBACK_USER_COMMAND = 'F_USER_COMMAND' " FORM NAME
:
:
IT_FIELDCAT = GT_FIELDCAT
.....................................
TABLES
T_OUTTAB = ITAB
...........................
This you should write for your double click
FORM F_USER_COMMAND USING R_UCOMM LIKE SY-UCOMM
RS_SELFIELD TYPE SLIS_SELFIELD.
CASE r_ucomm.
WHEN '&Ic1'. "double click
CASE rs_selfield-fieldname. "field name
WHEN <your field name>.
IF NOT fp_selfield-value IS INITIAL.
*Setting parameter id for sales order
SET PARAMETER ID c_aun FIELD fp_selfield-value.
*FM for Call transaction "VA03"
CALL FUNCTION 'ABAP4_CALL_TRANSACTION'
EXPORTING
tcode = l_c_va03 " VA03
skip_screen = c_x. "'X'
ENDIF.
WHEN OTHERS.
MESSAGE i078. "Wrong Click msg
LEAVE LIST-PROCESSING.
ENDCASE.
ENDCASE.
ENDFORM.
Program displays data using function modules like REUSE_ALV_LIST_DISPLAY, REUSE_ALV_POPUP_TO_SELECT, REUSE_ALV_GRID_DISPLAY
&----
*& Report ZALV_SAMPLE *
*& *
&----
*& Program for displaying data using function modules : *
*& REUSE_ALV_LIST_DISPLAY *
*& REUSE_ALV_POPUP_TO_SELECT *
*& REUSE_ALV_GRID_DISPLAY *
*& *
&----
REPORT ZALV_SAMPLE .
TABLES VBAK.
DATA it_vbak LIKE VBAK OCCURS 0 WITH HEADER LINE.
SELECTION-SCREEN uline.
PARAMETERS: ALV1 RADIOBUTTON GROUP ALV, "REUSE_ALV_LIST_DISPLAY
ALV2 RADIOBUTTON GROUP ALV, "REUSE_ALV_POPUP_TO_SELECT
ALV3 RADIOBUTTON GROUP ALV, "REUSE_ALV_GRID_DISPLAY
ALV4 RADIOBUTTON GROUP ALV. " NORMAL DISPLAY
SELECTION-SCREEN uline.
SELECT * FROM VBAK
INTO CORRESPONDING FIELDS OF TABLE it_vbak
UP TO 10 ROWS.
IF ALV1 = 'X'.
PERFORM ALV_FUNC1.
ELSEIF ALV2 = 'X'.
PERFORM ALV_FUNC2.
ELSEIF ALV3 = 'X'.
PERFORM ALV_FUNC3.
ELSEIF ALV4 = 'X'.
PERFORM NORM.
ENDIF.
&----
*& Form ALV_FUNC1
&----
text
----
--> p1 text
<-- p2 text
----
FORM ALV_FUNC1 .
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
I_STRUCTURE_NAME = 'VBAK'
TABLES
T_OUTTAB = it_vbak
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. " ALV_FUNC1
&----
*& Form ALV_FUNC2
&----
text
----
--> p1 text
<-- p2 text
----
FORM ALV_FUNC2 .
CALL FUNCTION 'REUSE_ALV_POPUP_TO_SELECT'
EXPORTING
I_TITLE = 'SALES ORDER INFO'
I_ZEBRA = 'X'
I_TABNAME = 1
I_STRUCTURE_NAME = 'vbak'
TABLES
T_OUTTAB = it_vbak
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. " ALV_FUNC2
&----
*& Form ALV_FUNC3
&----
text
----
--> p1 text
<-- p2 text
----
FORM ALV_FUNC3 .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_STRUCTURE_NAME = 'vbak'
I_GRID_TITLE = 'SALES ORDER INFO'
TABLES
T_OUTTAB = it_vbak
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. " ALV_FUNC3
&----
*& Form NORM
&----
text
----
--> p1 text
<-- p2 text
----
FORM NORM .
format intensified.
skip 1.
WRITE: /'SALES DOC.',
' Created on ',
' Time',
' Created by',
' Valid from ',
' Sold-to party'.
format intensified off.
skip 2.
LOOP AT it_vbak.
write: / it_vbak-vbeln,' ',
it_vbak-erdat,' ',
it_vbak-erzet,' ',
it_vbak-ERNAM,' ',
it_vbak-ANGDT,' ',
it_vbak-KUNNR.
endloop.
ENDFORM. " NORM
see this link too
http://www.sap-basis-abap.com/abap/to-call-transaction-in-alv.htm
thanks
abdul
reward me if usfull
06-02-2008 3:08 PM
Hi,
You can get the Sales Order Status from the below tables.
VBUK - Header
VBUP - Item
Delivery tables are>
LIPS,LIKP
Billing Related tables are>
VBRK,VBRP.
Regards
Kiran Sure
06-02-2008 5:27 PM
Hi Kumar,
I developed a report which will display all open return orders which is similar to your requirement.I used the table VBAK,VBAP,VBRK(to know the status of order),VBFA(document flow),VBUK
Find the report which i wrote
REPORT ZVSAR152A_SO_RETURN_ORDER.
*&---------------------------------------------------------------------------*
*& TYPE-POOLS *
*&---------------------------------------------------------------------------*
TYPE-POOLS : SLIS.
*&---------------------------------------------------------------------------*
*& TYPES DECLARATION *
*&---------------------------------------------------------------------------*
*****Final Output Structure****
TYPES : BEGIN OF TY_FINAL,
RFBSK TYPE RFBSK, "Status for transfer to accounting
AUART TYPE AUART, "Sales Document Type
KUNNR TYPE KUNAG, "Sold-to party
VBELN TYPE VBELN, "Sales Document
POSNR TYPE POSNR_VA, "Sales Document Item
MATNR TYPE MATNR, "Material Number
WWBRD TYPE RKEG_WWBRD, "Brand
WWCAT TYPE RKEG_WWCAT, "Category
KWMENG TYPE KWMENG, "Cumulative order quantity in sales units
WWSCT TYPE RKEG_WWSCT, "Sub Category
VRKME TYPE VRKME, "Sales Unit
NTGEW TYPE NTGEW_AP, "Net Weight of the Item
GEWEI TYPE GEWEI, "Weight Unit
PRCTR TYPE PRCTR, "Profit Center
VDATU TYPE EDATU_VBAK, "Requested delivery date
KSCHL TYPE KSCHA, "Condition type
STPRS TYPE STPRS, "Standard price
ZCOGS TYPE ZCOGS_CHECKBOX, "Cogs Flag
KWERT TYPE KWERT, "Condition value
FAKSK TYPE FAKSK, "Billing block in SD document
ERPGI TYPE ZERPGI, "Flag for failed PGI
PRODH TYPE PRODH_D, "Product hierarchy
END OF TY_FINAL.
* Structure and table types for Sales doc.no.
TYPES: BEGIN OF TY_S_VBELN,
VBELN TYPE VBELN_VA,
MESTYP TYPE EDI_MESTYP,
END OF TY_S_VBELN.
****VBAK Structure****
TYPES : BEGIN OF TY_VBAK,
VBELN TYPE VBELN, "Sales Document
AUART TYPE AUART, "Sales Document Type
FAKSK TYPE FAKSK, "Billing block in SD document
KNUMV TYPE KNUMV, "Number of the document condition
VDATU TYPE EDATU_VBAK, "Requested delivery date
KUNNR TYPE KUNAG, "Sold-to party
ERPGI TYPE CHAR1, "Flag for Failed PGI
MESTYP TYPE EDI_MESTYP, "
END OF TY_VBAK.
****VBFA Structure****
TYPES : BEGIN OF TY_VBFA,
VBELV TYPE VBELN_VON, "Preceding sales and distribution document
POSNV TYPE POSNR_VON, "Preceding item of an SD document
VBELN TYPE VBELN_NACH, "Subsequent sales and distribution document
POSNN TYPE POSNR_NACH, "Subsequent item of an SD document
VBTYP_N TYPE VBTYP_N, "Document category of subsequent document
VBTYP_V TYPE VBTYP_V, "Document category of preceding SD document
END OF TY_VBFA.
****VBAP Structure****
TYPES : BEGIN OF TY_VBAP,
VBELN TYPE VBELN, "Sales Document
POSNR TYPE POSNR_VA, "Sales Document Item
MATNR TYPE MATNR, "Material Number
PRODH TYPE PRODH_D, "Product hierarchy
KWMENG TYPE KWMENG, "Cumulative order quantity in sales units
VRKME TYPE VRKME, "Sales Unit
NTGEW TYPE NTGEW_AP, "Net Weight of the Item
GEWEI TYPE GEWEI, "Weight Unit
WERKS TYPE WERKS_EXT, "Plant
BWTAR TYPE BWTAR_D, "Valuation type
PRCTR TYPE PRCTR, "Profit Center
END OF TY_VBAP.
****VBRK Structure
TYPES : BEGIN OF TY_VBRK,
VBELN TYPE VBELN, "Sales Document
KNUMV TYPE KNUMV, "Number of the document condition
RFBSK TYPE RFBSK, "Status for transfer to accounting
END OF TY_VBRK.
****KONV Structure****
TYPES : BEGIN OF TY_KONV,
KNUMV TYPE KNUMV, "Number of the document condition
KPOSN TYPE KPOSN, "Condition item number
KSCHL TYPE KSCHA, "Condition type
KWERT TYPE KWERT, "Condition value
END OF TY_KONV.
****MBEW Structure****
TYPES : BEGIN OF TY_MBEW,
MATNR TYPE MATNR, "Material Number
BWKEY TYPE BWKEY, "Valuation area
BWTAR TYPE BWTAR_D, "Valuation type
STPRS TYPE STPRS, "Standard price
END OF TY_MBEW.
*-----------------------------------------------------------------------------*
* G L O B A L C O N S T A N T S *
*-----------------------------------------------------------------------------*
CONSTANTS: GC_X TYPE CHAR1 VALUE 'X',
GC_Z1LIKP1 TYPE EDILSEGTYP VALUE 'Z1LIKP1',
GC_E1EDL20 TYPE EDILSEGTYP VALUE 'E1EDL20'.
CONSTANTS: GC_BETWEEN(2) TYPE C VALUE 'BT', "Between
GC_EQUAL(2) TYPE C VALUE 'EQ', "Equal
GC_TO(4) TYPE C VALUE ' to '. "To
DATA : V_VBTYP_N_R TYPE VBFA-VBTYP_N VALUE 'R',
V_VBTYP_N_O TYPE VBFA-VBTYP_N VALUE 'O',
SLIS_LIST_TYPE TYPE SLIS_LIST_TYPE VALUE '0'.
*IDOC
CONSTANTS : LC_51 TYPE EDI_STATUS VALUE '51',
LC_2 TYPE EDI_DIRECT VALUE '2',
LC_ZDELVRY TYPE EDI_MESTYP VALUE 'ZDELVRY',
LC_ZEDIDELVRY TYPE EDI_MESTYP VALUE 'ZEDIDELVRY'.
* LC_VFX3 type EDI_MESTYP value 'ZFX3'.
*-----------------------------------------------------------------------------*
* FIELD-SYMBOLS
*-----------------------------------------------------------------------------*
FIELD-SYMBOLS: <L_EVENT> TYPE SLIS_ALV_EVENT.
*&----------------------------------------------------------------------------*
*& WorkAreas *
*&----------------------------------------------------------------------------*
DATA : W_VBAK TYPE TY_VBAK, " work area for VBAK
W_VBAK_IDOC TYPE TY_VBAK, " work area for VBAK
W_VBFA TYPE TY_VBFA, " work area for VBFA
W_VBRK TYPE TY_VBRK, " work area for VBRK
W_KONV TYPE TY_KONV, " work area for KONV
W_VBAP TYPE TY_VBAP, " work area for VBAP
W_MARA TYPE TY_MARA, "
W_MBEW TYPE TY_MBEW, " work area for MBEW
W_FINAL TYPE TY_FINAL, " work area for FINAL OUTPUT
W_LAYOUT TYPE SLIS_LAYOUT_ALV, " Layout for the output
W_FIELDCAT TYPE SLIS_FIELDCAT_ALV. " work area forfield catalog.
*&---------------------------------------------------------------------------*
*& INTERNAL TABLES *
*&---------------------------------------------------------------------------*
DATA : I_VBAK TYPE TABLE OF TY_VBAK, " Internal table for VBAK
I_VBAK_IDOC TYPE TABLE OF TY_VBAK, " Internal table for VBAK
I_VBFA TYPE TABLE OF TY_VBFA, " Internal table for VBFA
I_VBRK TYPE TABLE OF TY_VBRK, " Internal table for VBRK
IT_KONV TYPE TABLE OF TY_KONV, " Internal table for KONV
I_VBAP TYPE TABLE OF TY_VBAP, " Internal table for VBAP
I_MARA TYPE TABLE OF TY_MARA, "
I_MBEW TYPE TABLE OF TY_MBEW, " Internal table for MBEW
I_FINAL TYPE TABLE OF TY_FINAL, " Internal table for final output
I_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV, " Internal table for fieldcatlog
I_EVENTS TYPE SLIS_T_EVENT.
*&---------------------------------------------------------------------------*
*& VARIABLES *
*&---------------------------------------------------------------------------*
DATA : V_AUART TYPE VBAK-AUART, "document type
V_VDATU TYPE VBAK-VDATU, "delivery date
V_TVAK TYPE TVAK-AUART. "check table field for document type.
DATA : GT_OUTPUT TYPE STANDARD TABLE OF ZCOPA_REVENUE_RECOGNITION.
*&---------------------------------------------------------------------------*
*& SELECTION-SCREEN DESIGN *
*&---------------------------------------------------------------------------*
SELECTION-SCREEN : BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS : S_DOCTYP FOR V_AUART, "Sales Document Type
S_DATE FOR V_VDATU. "delivery date
SELECTION-SCREEN : END OF BLOCK B1.
*&---------------------------------------------------------------------------*
*& AT SELECTION SCREEN ON FIELD *
*&---------------------------------------------------------------------------*
AT SELECTION-SCREEN ON S_DOCTYP.
* Perform to Validate sales document type.
PERFORM FIELD_VALIDATION.
*&---------------------------------------------------------------------------*
*& START OF SELECTION *
*&---------------------------------------------------------------------------*
START-OF-SELECTION.
* Get SO from all the failed ship confirms(PGI)IDoc'S.(msg type:ZDELVRY)
PERFORM FETCH_FAILED_IDOCS.
* Perform to get Sales Document: Header Data
PERFORM GET_DATA_VBAK.
IF I_VBAK[] IS NOT INITIAL.
* Perform to get Sales Document Flow
PERFORM GET_DATA_VBAK_VBFA.
* Perform to get Billing Document: Header Data
PERFORM GET_VBAK_VBRK.
* Perform to get the Conditions (Transaction Data)
PERFORM GET_VBAK_KONV.
* Perform to get Sales Document: Item Data
PERFORM GET_VBAK_VBAP.
ENDIF.
IF I_VBAP[] IS NOT INITIAL.
* Perform to get Material Valuation
PERFORM GET_VBAP_MBEW.
ENDIF.
* Perform to populate the output data
PERFORM POPULATE_FINAL_TABLE.
* Perform to populate layout of the output data
PERFORM POPULATE_LAYOUT.
* Perform to populate fieldcatalog of the output data
PERFORM POPULATE_FIELDCAT.
* Perform to populate Events table
PERFORM GET_EVENTS.
* Perform to add events
PERFORM ADD_EVENT USING SLIS_EV_TOP_OF_PAGE .
** Perform to display the output data in grid pattern
PERFORM GRID_DISPLAY.
*
*&---------------------------------------------------------------------------*
*& Form field_validation
*&---------------------------------------------------------------------------*
FORM FIELD_VALIDATION .
SELECT SINGLE
AUART
FROM TVAK
INTO V_TVAK
WHERE AUART IN S_DOCTYP.
IF SY-SUBRC <> 0 .
MESSAGE E000(ZSD)." WITH 'Enter Valid Document Type'.
ENDIF.
ENDFORM. " field_validation
*&---------------------------------------------------------------------------*
FORM FETCH_FAILED_IDOCS .
*----------------------------------------------------------------------------*
TYPES: BEGIN OF TY_IDOC,
MESTYP TYPE EDI_MESTYP,
DOCNUM TYPE EDI_DOCNUM,
END OF TY_IDOC,
TY_T_IDOC TYPE STANDARD TABLE OF TY_IDOC.
DATA:
LS_F_IDOC TYPE TY_IDOC, "Work area for ty_Idoc structure
LT_F_IDOC TYPE TY_T_IDOC, "Internal table for ty_Idoc structure
LT_EDIDD TYPE STANDARD TABLE OF EDIDD, "Internal table for IDoc Data records
LS_EDIDD TYPE EDIDD, "Work area for IDoc Data Record
LS_LIKP1 TYPE Z1LIKP1, "
LS_E1EDL20 TYPE E1EDL20, "Work are for Delivery Header
LS_VBELN TYPE TY_S_VBELN. "Work are for Sales Document number
DATA : GT_VBELN TYPE TABLE OF TY_S_VBELN. "Int table to store SO numbers
* Get all the ship confirm idoc no. that have failed (Status 51)
SELECT MESTYP DOCNUM
INTO TABLE LT_F_IDOC
FROM EDIDC
WHERE STATUS EQ LC_51
AND DIRECT EQ LC_2
AND MESTYP IN (LC_ZDELVRY, LC_ZEDIDELVRY).
* Sort all IDOC's by message type...
SORT LT_F_IDOC BY MESTYP DOCNUM.
LOOP AT LT_F_IDOC INTO LS_F_IDOC.
* Initialize workarea...
REFRESH: LT_EDIDD.
CLEAR: LS_EDIDD.
* Read compelete IDOC...
CALL FUNCTION 'IDOC_READ_COMPLETELY'
EXPORTING
DOCUMENT_NUMBER = LS_F_IDOC-DOCNUM
TABLES
INT_EDIDD = LT_EDIDD
EXCEPTIONS
DOCUMENT_NOT_EXIST = 1
DOCUMENT_NUMBER_INVALID = 2
OTHERS = 3.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
* IDOC's coming from Internal warehouses via MQ...
IF LS_F_IDOC-MESTYP EQ LC_ZDELVRY.
* Read Segment Z1LIKP1 fields
READ TABLE LT_EDIDD INTO LS_EDIDD WITH KEY SEGNAM = GC_Z1LIKP1.
IF SY-SUBRC EQ 0.
MOVE LS_EDIDD-SDATA TO LS_LIKP1.
LS_VBELN-VBELN = LS_LIKP1-VBELN.
LS_VBELN-MESTYP = LC_ZDELVRY.
APPEND LS_VBELN TO GT_VBELN.
CLEAR LS_VBELN.
ENDIF.
* IDOC's coming from 3PL's via Gentran...
ELSEIF LS_F_IDOC-MESTYP EQ LC_ZEDIDELVRY.
* Read Segment Z1LIKP1 fields
READ TABLE LT_EDIDD INTO LS_EDIDD WITH KEY SEGNAM = GC_E1EDL20.
IF SY-SUBRC EQ 0.
MOVE LS_EDIDD-SDATA TO LS_E1EDL20.
LS_VBELN-VBELN = LS_E1EDL20-VBELN.
LS_VBELN-MESTYP = LC_ZEDIDELVRY.
APPEND LS_VBELN TO GT_VBELN.
CLEAR LS_VBELN.
ENDIF.
ENDIF.
ENDLOOP.
* Sort SO's retrieved
SORT GT_VBELN BY VBELN MESTYP.
* Delete duplicate orders records if any...
DELETE ADJACENT DUPLICATES FROM GT_VBELN.
IF NOT GT_VBELN[] IS INITIAL.
* Select order header data...
SELECT VBELN
AUART
FAKSK
KNUMV
VDATU
KUNNR
FROM VBAK
INTO TABLE I_VBAK_IDOC
FOR ALL ENTRIES IN GT_VBELN
WHERE VBELN = GT_VBELN-VBELN
AND AUART IN S_DOCTYP
AND FAKSK NE SPACE
AND VDATU IN S_DATE.
ENDIF.
* Mark these orders as Failed PGI idocs
LOOP AT I_VBAK_IDOC INTO W_VBAK_IDOC.
W_VBAK_IDOC-ERPGI = GC_X.
* Read message type where the order came from...
READ TABLE GT_VBELN INTO LS_VBELN WITH KEY VBELN = W_VBAK-VBELN.
IF SY-SUBRC EQ 0.
W_VBAK_IDOC-MESTYP = LS_VBELN-MESTYP.
ENDIF.
MODIFY I_VBAK_IDOC FROM W_VBAK_IDOC TRANSPORTING ERPGI MESTYP.
ENDLOOP.
ENDFORM. " fetch_failed_idocs
*&---------------------------------------------------------------------------*
*& Form get_data_vbak
*&---------------------------------------------------------------------------*
FORM GET_DATA_VBAK .
SELECT VBELN
AUART
FAKSK
KNUMV
VDATU
KUNNR
FROM VBAK
INTO TABLE I_VBAK
* WHERE VBELN LIKE '4%'
* AND AUART IN S_DOCTYP
* AND FAKSK NE SPACE
* AND VDATU IN S_DATE.
WHERE AUART IN S_DOCTYP
AND FAKSK NE SPACE
AND VDATU IN S_DATE.
IF SY-SUBRC EQ 0.
SORT I_VBAK BY VBELN.
else.
MESSAGE E001(ZSD).
ENDIF.
ENDFORM. " get_data_vbak
*&---------------------------------------------------------------------------*
*& Form GET_DATA_VBAK_vbfa
*&---------------------------------------------------------------------------*
FORM GET_DATA_VBAK_VBFA .
DATA : V_TABIX TYPE SY-TABIX.
SELECT VBELV
POSNV
VBELN
POSNN
VBTYP_N
VBTYP_V
FROM VBFA
INTO TABLE I_VBFA
FOR ALL ENTRIES IN I_VBAK
WHERE VBELV = I_VBAK-VBELN
* AND ( VBTYP_N NE V_VBTYP_N_R
* OR VBTYP_N NE V_VBTYP_N_O ).
AND VBTYP_N EQ V_VBTYP_N_R.
LOOP AT I_VBAK INTO W_VBAK.
V_TABIX = SY-TABIX.
READ TABLE I_VBFA INTO W_VBFA
WITH KEY VBELV = W_VBAK-VBELN.
IF SY-SUBRC NE 0.
DELETE I_VBAK INDEX V_TABIX.
ENDIF.
ENDLOOP.
LOOP AT I_VBAK INTO W_VBAK.
READ TABLE I_VBAK_IDOC INTO W_VBAK_IDOC
WITH KEY VBELN = W_VBAK-VBELN.
IF SY-SUBRC NE 0.
* Record exists...dont update...continue...
CONTINUE.
ELSE.
W_VBAK-ERPGI = W_VBAK_IDOC-ERPGI.
W_VBAK-MESTYP = W_VBAK_IDOC-MESTYP.
MODIFY I_VBAK FROM W_VBAK TRANSPORTING ERPGI MESTYP.
ENDIF.
ENDLOOP.
SORT I_VBAK BY VBELN.
ENDFORM. " GET_DATA_VBAK_vbfa
*&---------------------------------------------------------------------------*
*& Form get_vbak_vbrk
*&---------------------------------------------------------------------------*
FORM GET_VBAK_VBRK .
SELECT VBELN
KNUMV
RFBSK
FROM VBRK
INTO TABLE I_VBRK
FOR ALL ENTRIES IN I_VBAK
WHERE VBELN = I_VBAK-VBELN.
IF SY-SUBRC EQ 0.
SORT I_VBRK BY VBELN.
ENDIF.
ENDFORM. " get_vbap_vbrk
*&---------------------------------------------------------------------------*
*& Form get_vbrk_konv
*&---------------------------------------------------------------------------*
FORM GET_VBAK_KONV .
SELECT KNUMV
KPOSN
KSCHL
KWERT
FROM KONV
INTO TABLE IT_KONV
FOR ALL ENTRIES IN I_VBAK
WHERE KNUMV = I_VBAK-KNUMV
*Suppress lines with zero amounts.
AND KWERT NE 0
AND NOT ( KSTAT = 'X' AND KRUEK = ' ' ).
IF SY-SUBRC EQ 0.
SORT IT_KONV BY KNUMV.
ENDIF.
ENDFORM. " get_vbrk_konv
*&---------------------------------------------------------------------------*
*& Form get_vbak_vbap
*&---------------------------------------------------------------------------*
FORM GET_VBAK_VBAP .
SELECT VBELN
POSNR
MATNR
PRODH
KWMENG
VRKME
NTGEW
GEWEI
WERKS
BWTAR
PRCTR
FROM VBAP
INTO TABLE I_VBAP
FOR ALL ENTRIES IN I_VBAK
WHERE VBELN = I_VBAK-VBELN.
IF SY-SUBRC EQ 0.
SORT I_VBAP BY VBELN.
ENDIF.
ENDFORM. " get_vbak_vbap
*&---------------------------------------------------------------------------*
*& Form get_vbap_mbew
*&---------------------------------------------------------------------------*
FORM GET_VBAP_MBEW .
SELECT MATNR
BWKEY
BWTAR
STPRS
FROM MBEW
INTO TABLE I_MBEW
FOR ALL ENTRIES IN I_VBAP
WHERE MATNR = I_VBAP-MATNR
* AND BWTAR = I_VBAP-BWTAR.
AND BWKEY = I_VBAP-WERKS.
IF SY-SUBRC EQ 0.
SORT I_MBEW BY MATNR.
ENDIF.
ENDFORM. " get_vbap_mbew
*&---------------------------------------------------------------------------*
*& Form populate_final_table
*&---------------------------------------------------------------------------*
FORM POPULATE_FINAL_TABLE.
LOOP AT I_VBAK INTO W_VBAK.
IF W_VBAK-VDATU IS NOT INITIAL.
W_FINAL-AUART = W_VBAK-AUART.
W_FINAL-KUNNR = W_VBAK-KUNNR.
W_FINAL-VDATU = W_VBAK-VDATU.
W_FINAL-ERPGI = W_VBAK-ERPGI.
W_FINAL-FAKSK = W_VBAK-FAKSK.
IF W_FINAL-FAKSK NE ''.
W_FINAL-FAKSK = 'Y'.
ENDIF.
LOOP AT IT_KONV INTO W_KONV WHERE KNUMV = W_VBAK-KNUMV.
AT NEW KPOSN.
READ TABLE I_VBAP INTO W_VBAP WITH KEY VBELN = W_VBAK-VBELN
POSNR = W_KONV-KPOSN.
IF SY-SUBRC = 0.
READ TABLE I_MBEW INTO W_MBEW WITH KEY MATNR = W_VBAP-MATNR
BWKEY = W_VBAP-WERKS.
READ TABLE I_VBRK INTO W_VBRK WITH KEY VBELN = W_VBAP-VBELN.
ENDIF.
ENDAT.
W_FINAL-VBELN = W_VBAP-VBELN.
W_FINAL-POSNR = W_VBAP-POSNR.
W_FINAL-MATNR = W_VBAP-MATNR.
W_FINAL-WWBRD = W_VBAP-PRODH+8(3).
W_FINAL-WWCAT = W_VBAP-PRODH+2(3).
W_FINAL-KWMENG = W_VBAP-KWMENG.
W_FINAL-WWSCT = W_VBAP-PRODH+5(3).
W_FINAL-VRKME = W_VBAP-VRKME.
W_FINAL-NTGEW = W_VBAP-NTGEW.
W_FINAL-GEWEI = W_VBAP-GEWEI.
W_FINAL-PRCTR = W_VBAP-PRCTR.
W_FINAL-PRODH = W_VBAP-PRODH.
W_FINAL-STPRS = W_MBEW-STPRS.
W_FINAL-RFBSK = W_VBRK-RFBSK.
W_FINAL-KSCHL = W_KONV-KSCHL.
W_FINAL-KWERT = W_KONV-KWERT.
* Evaluate whether each output line has ZCGS condition type on it.
IF W_FINAL-KSCHL NE 'ZCGS'.
W_FINAL-ZCOGS = 'X'.
ENDIF.
FREE : W_VBAP-KWMENG,W_VBAP-NTGEW.
APPEND W_FINAL TO I_FINAL.
ENDLOOP.
CLEAR :W_FINAL, W_VBAK,W_VBRK,W_KONV,W_VBAP,W_MBEW.
ENDIF.
ENDLOOP.
ENDFORM. " populate_final_table
*&---------------------------------------------------------------------------*
*& Form populate_layout
*&---------------------------------------------------------------------------*
FORM POPULATE_LAYOUT .
W_LAYOUT-ZEBRA = 'X'.
ENDFORM. " populate_layout
*&---------------------------------------------------------------------------*
*& Form populate_fieldcat
*&---------------------------------------------------------------------------*
FORM POPULATE_FIELDCAT .
W_FIELDCAT-FIELDNAME = 'RFBSK' .
W_FIELDCAT-REF_FIELDNAME = 'RFBSK'.
W_FIELDCAT-REF_TABNAME = 'VBRK'.
APPEND W_FIELDCAT TO I_FIELDCAT.
CLEAR W_FIELDCAT.
W_FIELDCAT-FIELDNAME = 'AUART' .
W_FIELDCAT-REF_FIELDNAME = 'AUART'.
W_FIELDCAT-REF_TABNAME = 'VBAK'.
APPEND W_FIELDCAT TO I_FIELDCAT.
CLEAR W_FIELDCAT.
W_FIELDCAT-FIELDNAME = 'KUNNR' .
W_FIELDCAT-REF_FIELDNAME = 'KUNNR'.
W_FIELDCAT-REF_TABNAME = 'KNA1'.
APPEND W_FIELDCAT TO I_FIELDCAT.
CLEAR W_FIELDCAT.
W_FIELDCAT-FIELDNAME = 'VBELN' .
W_FIELDCAT-REF_FIELDNAME = 'VBELN'.
W_FIELDCAT-REF_TABNAME = 'VBAK'.
APPEND W_FIELDCAT TO I_FIELDCAT.
CLEAR W_FIELDCAT.
W_FIELDCAT-FIELDNAME = 'POSNR' .
W_FIELDCAT-REF_FIELDNAME = 'POSNR'.
W_FIELDCAT-REF_TABNAME = 'VBAP'.
APPEND W_FIELDCAT TO I_FIELDCAT.
CLEAR W_FIELDCAT.
W_FIELDCAT-FIELDNAME = 'MATNR' .
W_FIELDCAT-REF_FIELDNAME = 'MATNR'.
W_FIELDCAT-REF_TABNAME = 'VBAP'.
APPEND W_FIELDCAT TO I_FIELDCAT.
CLEAR W_FIELDCAT.
W_FIELDCAT-FIELDNAME = 'WWBRD' .
W_FIELDCAT-REF_FIELDNAME = 'WWBRD'.
W_FIELDCAT-REF_TABNAME = 'ZCOPA_REVENUE_RECOGNITION'.
W_FIELDCAT-SELTEXT_M = 'Brand'.
APPEND W_FIELDCAT TO I_FIELDCAT.
CLEAR W_FIELDCAT.
W_FIELDCAT-FIELDNAME = 'WWCAT' .
W_FIELDCAT-REF_FIELDNAME = 'WWCAT'.
W_FIELDCAT-REF_TABNAME = 'ZCOPA_REVENUE_RECOGNITION'.
W_FIELDCAT-SELTEXT_M = 'Category'.
APPEND W_FIELDCAT TO I_FIELDCAT.
CLEAR W_FIELDCAT.
W_FIELDCAT-FIELDNAME = 'KWMENG' .
W_FIELDCAT-REF_FIELDNAME = 'KWMENG'.
W_FIELDCAT-REF_TABNAME = 'VBAP'.
APPEND W_FIELDCAT TO I_FIELDCAT.
CLEAR W_FIELDCAT.
W_FIELDCAT-FIELDNAME = 'WWSCT' .
W_FIELDCAT-REF_FIELDNAME = 'WWSCT'.
W_FIELDCAT-REF_TABNAME = 'ZCOPA_REVENUE_RECOGNITION'.
W_FIELDCAT-SELTEXT_M = 'Sub Category'.
APPEND W_FIELDCAT TO I_FIELDCAT.
CLEAR W_FIELDCAT.
W_FIELDCAT-FIELDNAME = 'VRKME' .
W_FIELDCAT-REF_FIELDNAME = 'VRKME'.
W_FIELDCAT-REF_TABNAME = 'VBAP'.
APPEND W_FIELDCAT TO I_FIELDCAT.
CLEAR W_FIELDCAT.
W_FIELDCAT-FIELDNAME = 'NTGEW' .
W_FIELDCAT-REF_FIELDNAME = 'NTGEW'.
W_FIELDCAT-REF_TABNAME = 'ZCOPA_REVENUE_RECOGNITION'.
APPEND W_FIELDCAT TO I_FIELDCAT.
CLEAR W_FIELDCAT.
W_FIELDCAT-FIELDNAME = 'GEWEI'.
W_FIELDCAT-REF_FIELDNAME = 'GEWEI'.
W_FIELDCAT-REF_TABNAME = 'VBAP'.
APPEND W_FIELDCAT TO I_FIELDCAT.
CLEAR W_FIELDCAT.
W_FIELDCAT-FIELDNAME = 'PRCTR' .
W_FIELDCAT-REF_FIELDNAME = 'PRCTR'.
W_FIELDCAT-REF_TABNAME = 'VBAP'.
APPEND W_FIELDCAT TO I_FIELDCAT.
CLEAR W_FIELDCAT.
W_FIELDCAT-FIELDNAME = 'VDATU' .
W_FIELDCAT-REF_FIELDNAME = 'VDATU'.
W_FIELDCAT-REF_TABNAME = 'VBAK'.
APPEND W_FIELDCAT TO I_FIELDCAT.
CLEAR W_FIELDCAT.
W_FIELDCAT-FIELDNAME = 'KSCHL' .
W_FIELDCAT-REF_FIELDNAME = 'KSCHL'.
W_FIELDCAT-REF_TABNAME = 'KONV'.
APPEND W_FIELDCAT TO I_FIELDCAT.
CLEAR W_FIELDCAT.
W_FIELDCAT-FIELDNAME = 'STPRS' .
W_FIELDCAT-REF_FIELDNAME = 'STPRS'.
W_FIELDCAT-REF_TABNAME = 'MBEW'.
APPEND W_FIELDCAT TO I_FIELDCAT.
CLEAR W_FIELDCAT.
W_FIELDCAT-FIELDNAME = 'ZCOGS' .
* W_FIELDCAT-REF_FIELDNAME = ''.
W_FIELDCAT-REF_TABNAME = 'ZCOPA_REVENUE_RECOGNITION'.
* W_FIELDCAT-SELTEXT_M = 'Cogs Flag'.
APPEND W_FIELDCAT TO I_FIELDCAT.
CLEAR W_FIELDCAT.
W_FIELDCAT-FIELDNAME = 'KWERT' .
W_FIELDCAT-REF_FIELDNAME = 'KWERT'.
W_FIELDCAT-REF_TABNAME = 'KONV'.
APPEND W_FIELDCAT TO I_FIELDCAT.
CLEAR W_FIELDCAT.
W_FIELDCAT-FIELDNAME = 'FAKSK' .
W_FIELDCAT-REF_FIELDNAME = 'FAKSK'.
W_FIELDCAT-REF_TABNAME = 'VBAK'.
APPEND W_FIELDCAT TO I_FIELDCAT.
CLEAR W_FIELDCAT.
W_FIELDCAT-FIELDNAME = 'ERPGI' .
* W_FIELDCAT-REF_FIELDNAME = ''.
W_FIELDCAT-REF_TABNAME = 'ZCOPA_REVENUE_RECOGNITION'.
* W_FIELDCAT-SELTEXT_L = 'PGI Error Flag'.
APPEND W_FIELDCAT TO I_FIELDCAT.
CLEAR W_FIELDCAT.
W_FIELDCAT-FIELDNAME = 'PRODH' .
W_FIELDCAT-REF_FIELDNAME = 'PRODH'.
W_FIELDCAT-REF_TABNAME = 'VBAP'.
APPEND W_FIELDCAT TO I_FIELDCAT.
CLEAR W_FIELDCAT.
ENDFORM. " populate_fieldcat
*&---------------------------------------------------------------------*
*& Form GEI_EVENTS
*&---------------------------------------------------------------------*
FORM GET_EVENTS .
* Determine list of events by table type.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
I_LIST_TYPE = SLIS_LIST_TYPE
IMPORTING
ET_EVENTS = I_EVENTS
EXCEPTIONS
LIST_TYPE_WRONG = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
ENDIF.
ENDFORM. " GEI_EVENTS
*&---------------------------------------------------------------------*
*& Form ADD_EVENT
*&---------------------------------------------------------------------*
FORM ADD_EVENT USING EVENT.
READ TABLE I_EVENTS WITH KEY NAME = EVENT ASSIGNING <L_EVENT>.
IF SY-SUBRC = 0.
<L_EVENT>-FORM = EVENT.
ENDIF.
ENDFORM. " ADD_EVENT
*&---------------------------------------------------------------------*
*& Form grid_display
*&---------------------------------------------------------------------*
FORM GRID_DISPLAY .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = SY-REPID
* I_BYPASSING_BUFFER = ' '
* I_BUFFER_ACTIVE = ' '
I_CALLBACK_PROGRAM = SY-REPID
* I_CALLBACK_PF_STATUS_SET = ' '
* I_CALLBACK_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 = 'OPEN RETURN ORDERS'
* I_GRID_SETTINGS =
IS_LAYOUT = W_LAYOUT
IT_FIELDCAT = I_FIELDCAT
* IT_SORT =
* IT_FILTER =
* IS_SEL_HIDE =
* I_DEFAULT = 'X'
* I_SAVE = ' '
* IS_VARIANT =
IT_EVENTS = I_EVENTS
* IT_EVENT_EXIT =
* IS_PRINT =
* IS_REPREP_ID =
TABLES
T_OUTTAB = I_FINAL.
ENDFORM. " grid_display
*&---------------------------------------------------------------------*
*& Form TOP_OF_PAGE
*&---------------------------------------------------------------------*
FORM TOP_OF_PAGE .
DATA : I_LIST_TOP_OF_PAGE TYPE SLIS_T_LISTHEADER.
DATA : W_LIST_TOP_OF_PAGE TYPE SLIS_LISTHEADER.
DATA : V_DOCTYP_LOW TYPE VBAK-AUART,
V_DOCTYP_HIGH TYPE VBAK-AUART,
V_DOCTYP TYPE CHAR12,
V_DATE TYPE CHAR20,
V_DATE_LOW TYPE VBAK-VDATU,
V_DATE_HIGH TYPE VBAK-VDATU.
CLEAR I_LIST_TOP_OF_PAGE.
* typ(1) type c, " H = Header, S = Selection, A = Action
* key(20) type c,
* info type slis_entry,
W_LIST_TOP_OF_PAGE-TYP = 'H'.
W_LIST_TOP_OF_PAGE-INFO = 'SARALEE CORPORATION'.
APPEND W_LIST_TOP_OF_PAGE TO I_LIST_TOP_OF_PAGE.
CLEAR W_LIST_TOP_OF_PAGE.
W_LIST_TOP_OF_PAGE-TYP = 'S'.
W_LIST_TOP_OF_PAGE-KEY = 'Program Name :'.
W_LIST_TOP_OF_PAGE-INFO = SY-REPID.
APPEND W_LIST_TOP_OF_PAGE TO I_LIST_TOP_OF_PAGE.
CLEAR W_LIST_TOP_OF_PAGE.
LOOP AT S_DOCTYP.
CASE S_DOCTYP-OPTION.
WHEN GC_BETWEEN.
V_DOCTYP_LOW = S_DOCTYP-LOW.
V_DOCTYP_HIGH = S_DOCTYP-HIGH.
CONCATENATE V_DOCTYP_LOW
V_DOCTYP_HIGH
INTO V_DOCTYP SEPARATED BY GC_TO.
WHEN GC_EQUAL.
V_DOCTYP_LOW = S_DOCTYP-LOW.
V_DOCTYP = V_DOCTYP_LOW.
ENDCASE.
W_LIST_TOP_OF_PAGE-TYP = 'S'.
W_LIST_TOP_OF_PAGE-KEY = 'Sales Order Type:'.
W_LIST_TOP_OF_PAGE-INFO = V_DOCTYP.
APPEND W_LIST_TOP_OF_PAGE TO I_LIST_TOP_OF_PAGE.
CLEAR W_LIST_TOP_OF_PAGE.
ENDLOOP.
LOOP AT S_DATE.
CASE S_DATE-OPTION.
WHEN GC_BETWEEN.
V_DATE_LOW = S_DATE-LOW.
V_DATE_HIGH = S_DATE-HIGH.
CONCATENATE V_DATE_LOW
V_DATE_HIGH
INTO V_DATE SEPARATED BY GC_TO.
WHEN GC_EQUAL.
V_DATE_LOW = S_DATE-LOW.
V_DATE = V_DATE_LOW.
ENDCASE.
W_LIST_TOP_OF_PAGE-TYP = 'S'.
W_LIST_TOP_OF_PAGE-KEY = 'Req.Delivery Date:'.
W_LIST_TOP_OF_PAGE-INFO = V_DATE.
APPEND W_LIST_TOP_OF_PAGE TO I_LIST_TOP_OF_PAGE.
CLEAR W_LIST_TOP_OF_PAGE.
ENDLOOP.
CLEAR : V_DOCTYP_LOW,V_DOCTYP_HIGH,V_DOCTYP,V_DATE_LOW,V_DATE_HIGH,V_DATE.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
IT_LIST_COMMENTARY = I_LIST_TOP_OF_PAGE
* I_LOGO =
* I_END_OF_LIST_GRID =
* I_ALV_FORM =
.
ENDFORM. " TOP_OF_PAGE