‎2007 May 17 3:20 PM
Hi,
This is SAI KUMAR.
<b>Selection Screen</b>
Sales Org: <b>VKORG</b>
Distribution Channel: <b>VTWEG</b>
Division: <b>SPART</b>
Billing Type: <b>FKART</b>
Plant: <b>WERKS</b>
Payment Terms: <b>ZTERM</b>
Sold-to Party: <b>KUNAG</b>
Billing Date: <b>FKDAT</b>
Now Using the above Selection screen inputs, I want to generate the following fields in the output.
<b>Output Screen</b>
Invoice No: <b>VBELN</b>
Invoice Date: <b>FKDAT</b>
Customer Number: <b>KUNNR</b>
Customer Name: <b>NAME1</b>
Material Description: <b>MAKTX</b>
Payment Terms: <b>ZTERM</b>
Net Value: <b>NETWR</b>
Ship-to City: <b>ORT01</b>
Sold-to party: <b>KUNAG</b>
Ship-to party: <b>KUNNR</b>
<u><b>Tables Used: </b></u>
Delivery: <b>LIKP, LIPS</b>
Invoice:<b>VBRK, VBRP</b>
Customer: <b>KNA1</b>
Material: <b>MARA</b>
Material Description: <b>MAKT</b>
<b>
Now the Problem what I got is....How to link between these tables...ie., what common fields can be used between these tables so that I can use FOR ALL ENTRIES and retrieve the above output fields.</b>
Can anyone please help me out in giving a REPORT program or a pseudo code for the above data.
Thanks & Regards,
SAI KUMAR
<b>ID: saikumar325@gmail.com</b>
‎2007 May 17 5:13 PM
hi...
hope this sample code ll helpful to u.
reward points if helpful.
Thank-You.
REPORT zepjpo2 .
Type decleration
TYPE-POOLS: slis.
Table decleration
TABLES:
zepic_jpo,
likp,
lips,
ekko,
ekpo,
eket.
Field Catelog and layout Decleration
DATA: it_fieldcat TYPE lvc_t_fcat,
x_fieldcat TYPE lvc_s_fcat OCCURS 0 WITH HEADER LINE.
DATA: x_layout TYPE lvc_s_layo.
DATA: lv_repid LIKE sy-repid.
***Internal Table Decleration
DATA: BEGIN OF it_zepic_jpo OCCURS 0," with header line,
werks LIKE zepic_jpo-werks,
VBELN LIKE zepic_jpo-VBELN,
POSNR LIKE zepic_jpo-POSNR,
zz_wp LIKE zepic_jpo-zz_wp,
zz_case LIKE zepic_jpo-zz_case,
zz_status LIKE zepic_jpo-zz_status,
matnr LIKE zepic_jpo-matnr,
vgbel LIKE zepic_jpo-vgbel,
vgpos LIKE ekpo-ebelp, "(5) type numc,
END OF it_zepic_jpo.
DATA: BEGIN OF it_lips OCCURS 0," with header line,
vbeln LIKE lips-vbeln,
posnr LIKE lips-posnr,
lfimg LIKE lips-lfimg,
lgort LIKE lips-lgort,
END OF it_lips.
DATA: BEGIN OF it_likp OCCURS 0," with header line,
vbeln LIKE likp-vbeln,
ernam LIKE likp-ernam,
erdat LIKE likp-erdat,
lifex LIKE likp-lifex,
END OF it_likp.
DATA: BEGIN OF it_ekpo OCCURS 0," with header line,
ebeln LIKE ekpo-ebeln,
ebelp LIKE ekpo-ebelp,
pstyp LIKE ekpo-pstyp,
knttp LIKE ekpo-knttp,
menge LIKE ekpo-menge,
lgort LIKE ekpo-lgort,
erekz LIKE ekpo-erekz,
elikz LIKE ekpo-elikz,
retpo LIKE ekpo-retpo,
END OF it_ekpo.
DATA: BEGIN OF it_ekko OCCURS 0," with header line,
lifnr LIKE ekko-lifnr,
bsart LIKE ekko-bsart,
ebeln LIKE ekko-ebeln,
aedat LIKE ekko-aedat,
END OF it_ekko.
DATA: BEGIN OF it_eket OCCURS 0," with header line,
ebeln LIKE eket-ebeln,
ebelp LIKE eket-ebelp,
eindt LIKE eket-eindt,
wemng LIKE eket-wemng,
END OF it_eket.
Internal Table for ALV Display
DATA: BEGIN OF it_grid OCCURS 0,
werks LIKE zepic_jpo-werks,
zz_wp LIKE zepic_jpo-zz_wp,
zz_case LIKE zepic_jpo-zz_case,
zz_status LIKE zepic_jpo-zz_status,
matnr LIKE zepic_jpo-matnr,
vbeln LIKE ZEPIC_JPO-VBELN, "lips-vbeln,
posnr LIKE ZEPIC_JPO-POSNR, "lips-posnr,
lfimg(13),
lgort1 LIKE lips-lgort,
ernam LIKE likp-ernam,
erdat LIKE likp-erdat,
lifex LIKE likp-lifex,
lifnr LIKE ekko-lifnr,
bsart LIKE ekko-bsart,
ebeln LIKE ZEPIC_JPO-VGBEL,"ekko-ebeln,
ebelp LIKE ZEPIC_JPO-VGPOS,"ekpo-ebelp,
pstyp LIKE ekpo-pstyp,
knttp LIKE ekpo-knttp,
menge(13),
eindt LIKE eket-eindt,
wemng(13),
lgort2 LIKE ekpo-lgort,
erekz LIKE ekpo-erekz,
elikz LIKE ekpo-elikz,
retpo LIKE ekpo-retpo,
aedat LIKE ekko-aedat,
END OF it_grid.
INITIALIZATION
INITIALIZATION.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
PARAMETER p_werks LIKE zepic_jpo-werks OBLIGATORY DEFAULT '310'.
SELECT-OPTIONS: s_zz_wp FOR zepic_jpo-zz_wp,
s_z_case FOR zepic_jpo-zz_case,
s_status FOR zepic_jpo-zz_status,
s_vbeln FOR zepic_jpo-vbeln,
s_posnr FOR zepic_jpo-posnr,
s_vgbel FOR zepic_jpo-vgbel,
s_vgpos FOR zepic_jpo-vgpos.
SELECTION-SCREEN END OF BLOCK b1.
Start of selection event
START-OF-SELECTION.
Refresh/Clear internal table and variables.
PERFORM clear_var_itab.
Fetch the data from tables
PERFORM get_zepic_jpo_data.
Display ALV Grid
PERFORM display_alv.
END-OF-SELECTION.
&----
*& Form clear_var_itab
&----
Clear the internal table
----
--> p1 text
<-- p2 text
----
FORM clear_var_itab .
REFRESH: it_grid,
it_zepic_jpo,
it_ekko,
it_ekpo,
it_eket,
it_lips,
it_likp.
ENDFORM. " clear_var_itab
&----
*& Form get_zepic_jpo_data
&----
Get data from tables
----
--> p1 text
<-- p2 text
----
FORM get_zepic_jpo_data .
Fetch Data from zepic_jpo Table
SELECT werks
vbeln
posnr
zz_wp
zz_case
zz_status
matnr
vgbel
vgpos
FROM zepic_jpo INTO CORRESPONDING FIELDS OF
TABLE it_zepic_jpo WHERE werks = p_werks AND
zz_wp IN s_zz_wp AND
zz_case IN s_z_case AND
zz_status IN s_status AND
vgbel IN s_vgbel AND
vgpos IN s_vgpos.
IF it_zepic_jpo[] IS NOT INITIAL.
Fetch Data from lips Table
SELECT vbeln
posnr
lfimg
lgort
FROM lips INTO CORRESPONDING FIELDS OF
TABLE it_lips FOR ALL ENTRIES IN it_zepic_jpo
WHERE vbeln = it_zepic_jpo-vbeln AND
posnr = it_zepic_jpo-posnr .
Fetch Data from likp Table
SELECT vbeln
ernam
erdat
lifex
FROM likp INTO CORRESPONDING FIELDS OF
TABLE it_likp FOR ALL ENTRIES IN it_zepic_jpo
WHERE vbeln = it_zepic_jpo-vbeln.
Fetch Data from ekpo Table
SELECT ebeln
ebelp
pstyp
knttp
menge
lgort
erekz
elikz
retpo
FROM ekpo INTO CORRESPONDING FIELDS OF
TABLE it_ekpo FOR ALL ENTRIES IN it_zepic_jpo
WHERE ebeln = it_zepic_jpo-vgbel AND
ebelp = it_zepic_jpo-vgpos.
Fetch Data from ekko Table
SELECT lifnr
bsart
ebeln
aedat
FROM ekko INTO CORRESPONDING FIELDS OF
TABLE it_ekko FOR ALL ENTRIES IN it_zepic_jpo
WHERE ebeln = it_zepic_jpo-vgbel.
Fetch Data from eket Table
SELECT ebeln
ebelp
eindt
wemng
FROM eket INTO CORRESPONDING FIELDS OF
TABLE it_eket FOR ALL ENTRIES IN it_zepic_jpo
WHERE ebeln = it_zepic_jpo-vgbel AND
ebelp = it_zepic_jpo-vgpos.
Read the Internal table values and fill the ALV Grid Table
LOOP AT it_zepic_jpo.
READ TABLE it_lips
WITH KEY vbeln = it_zepic_jpo-vbeln
posnr = it_zepic_jpo-posnr." BINARY SEARCH .
READ TABLE it_likp
WITH KEY vbeln = it_zepic_jpo-vbeln." BINARY SEARCH .
READ TABLE it_ekpo
WITH KEY ebeln = it_zepic_jpo-vgbel
ebelp = it_zepic_jpo-vgpos." BINARY SEARCH .
READ TABLE it_ekko
WITH KEY ebeln = it_zepic_jpo-vgbel." BINARY SEARCH .
READ TABLE it_eket
WITH KEY ebeln = it_zepic_jpo-vgbel
ebelp = it_zepic_jpo-vgpos." BINARY SEARCH .
it_grid-werks = it_zepic_jpo-werks.
it_grid-zz_wp = it_zepic_jpo-zz_wp.
it_grid-zz_case = it_zepic_jpo-zz_case.
it_grid-zz_status = it_zepic_jpo-zz_status.
it_grid-matnr = it_zepic_jpo-matnr.
it_grid-vbeln = it_zepic_jpo-VBELN.
it_grid-posnr = it_zepic_jpo-POSNR.
it_grid-lfimg = it_lips-lfimg.
it_grid-lgort1 = it_lips-lgort.
it_grid-ernam = it_likp-ernam.
it_grid-erdat = it_likp-erdat.
it_grid-lifex = it_likp-lifex.
it_grid-lifnr = it_ekko-lifnr.
it_grid-bsart = it_ekko-bsart.
it_grid-ebeln = IT_ZEPIC_JPO-VGBEL.
it_grid-ebelp = IT_ZEPIC_JPO-VGPOS.
it_grid-pstyp = it_ekpo-pstyp.
it_grid-knttp = it_ekpo-knttp.
it_grid-menge = it_ekpo-menge.
it_grid-eindt = it_eket-eindt.
it_grid-wemng = it_eket-wemng.
it_grid-lgort2 = it_ekpo-lgort.
it_grid-erekz = it_ekpo-erekz.
it_grid-elikz = it_ekpo-elikz.
it_grid-retpo = it_ekpo-retpo.
it_grid-aedat = it_ekko-aedat.
APPEND it_grid.
CLEAR: it_grid,
it_zepic_jpo,
it_ekko,
it_ekpo,
it_eket,
it_lips,
it_likp.
ENDLOOP.
ELSE.
MESSAGE s398(00) WITH 'No data Found.'.
ENDIF.
ENDFORM. " get_zepic_jpo_data
&----
*& Form display_alv
&----
Display ALV data
----
--> p1 text
<-- p2 text
----
FORM display_alv .
PERFORM build_field_catalog.
Assign program name to variable
lv_repid = sy-repid.
Call the ALV Grid FM for Display
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
EXPORTING
i_callback_program = lv_repid
i_grid_title = 'PO, Shipment Notification and Japan
Foreign Case information'
is_layout_lvc = x_layout
it_fieldcat_lvc = it_fieldcat
TABLES
t_outtab = it_grid[]
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
&----
*& Form Build_field_catalog
&----
Building Field Catelog for ALV
----
--> p1 text
<-- p2 text
----
FORM build_field_catalog .
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
i_structure_name = 'ZSEPJPO2'
i_bypassing_buffer = 'X'
CHANGING
ct_fieldcat = it_fieldcat[]
EXCEPTIONS
inconsistent_interface = 1
program_error = 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.
*Adding the Text to be displayed
x_fieldcat-reptext = 'Shipping Order'.
MODIFY it_fieldcat FROM x_fieldcat TRANSPORTING reptext WHERE
fieldname = 'ZZ_WP' .
CLEAR x_fieldcat.
x_fieldcat-reptext = 'Case'.
MODIFY it_fieldcat FROM x_fieldcat TRANSPORTING reptext WHERE
fieldname = 'ZZ_CASE' .
CLEAR x_fieldcat.
x_fieldcat-reptext = 'Status'.
MODIFY it_fieldcat FROM x_fieldcat TRANSPORTING reptext WHERE
fieldname = 'ZZ_STATUS' .
CLEAR x_fieldcat.
x_fieldcat-reptext = 'Del Item '.
x_fieldcat-scrtext_l = 'Del Item'.
x_fieldcat-scrtext_m = 'Del Item'.
x_fieldcat-scrtext_s = 'Del Item'.
MODIFY it_fieldcat FROM x_fieldcat TRANSPORTING reptext
scrtext_l scrtext_m scrtext_s WHERE fieldname = 'POSNR' .
CLEAR x_fieldcat.
x_fieldcat-reptext = 'Del Qty'.
MODIFY it_fieldcat FROM x_fieldcat TRANSPORTING reptext WHERE
fieldname = 'LFIMG' .
CLEAR x_fieldcat.
x_fieldcat-reptext = 'Del SLoc'.
x_fieldcat-scrtext_l = 'Del Create By'.
x_fieldcat-scrtext_m = 'Del Create By'.
x_fieldcat-scrtext_s = 'Del Create By'.
MODIFY it_fieldcat FROM x_fieldcat TRANSPORTING reptext
scrtext_l scrtext_m scrtext_s WHERE fieldname = 'LGORT1' .
CLEAR x_fieldcat.
x_fieldcat-reptext = 'Del Create By'.
x_fieldcat-scrtext_l = 'Del Create By'.
x_fieldcat-scrtext_m = 'Del Create By'.
x_fieldcat-scrtext_s = 'Del Create By'.
MODIFY it_fieldcat FROM x_fieldcat TRANSPORTING reptext
scrtext_l scrtext_m scrtext_s WHERE fieldname = 'ERNAM' .
CLEAR x_fieldcat.
x_fieldcat-reptext = 'Del Create Dt.'.
x_fieldcat-scrtext_l = 'Del Create Dt.'.
x_fieldcat-scrtext_m = 'Del Create Dt.'.
x_fieldcat-scrtext_s = 'Del Create Dt.'.
MODIFY it_fieldcat FROM x_fieldcat TRANSPORTING reptext
scrtext_l scrtext_m scrtext_s WHERE fieldname = 'ERDAT' .
CLEAR x_fieldcat.
x_fieldcat-reptext = 'Ext ID'.
x_fieldcat-scrtext_l = 'Ext ID'.
x_fieldcat-scrtext_m = 'Ext ID'.
x_fieldcat-scrtext_s = 'Ext ID'.
MODIFY it_fieldcat FROM x_fieldcat TRANSPORTING reptext
scrtext_l scrtext_m scrtext_s WHERE fieldname ='LIFEX' .
CLEAR x_fieldcat.
x_fieldcat-reptext = 'PO Type'.
MODIFY it_fieldcat FROM x_fieldcat TRANSPORTING reptext WHERE
fieldname = 'BSART' .
CLEAR x_fieldcat.
x_fieldcat-reptext = 'PO'.
x_fieldcat-scrtext_l = 'PO'.
x_fieldcat-scrtext_m = 'PO'.
x_fieldcat-scrtext_s = 'PO'.
MODIFY it_fieldcat FROM x_fieldcat TRANSPORTING reptext
scrtext_l scrtext_m scrtext_s WHERE fieldname = 'EBELN' .
CLEAR x_fieldcat.
x_fieldcat-reptext = 'PO Item'.
x_fieldcat-scrtext_l = 'PO Item'.
x_fieldcat-scrtext_m = 'PO Item'.
x_fieldcat-scrtext_s = 'PO Item'.
MODIFY it_fieldcat FROM x_fieldcat TRANSPORTING reptext
scrtext_l scrtext_m scrtext_s WHERE fieldname = 'EBELP' .
CLEAR x_fieldcat.
x_fieldcat-reptext = 'Item Cat.'.
x_fieldcat-scrtext_l = 'Item Cat.'.
x_fieldcat-scrtext_m = 'Item Cat.'.
x_fieldcat-scrtext_s = 'Item Cat.'.
MODIFY it_fieldcat FROM x_fieldcat TRANSPORTING reptext
scrtext_l scrtext_m scrtext_s WHERE fieldname = 'PSTYP' .
CLEAR x_fieldcat.
x_fieldcat-reptext = 'Acct. Assign'.
x_fieldcat-scrtext_l = 'Acct. Assign'.
x_fieldcat-scrtext_m = 'Acct. Assign'.
x_fieldcat-scrtext_s = 'Acct. Assign'.
MODIFY it_fieldcat FROM x_fieldcat TRANSPORTING reptext
scrtext_l scrtext_m scrtext_s WHERE fieldname = 'KNTTP' .
CLEAR x_fieldcat.
x_fieldcat-reptext = 'Qty'.
MODIFY it_fieldcat FROM x_fieldcat TRANSPORTING reptext WHERE
fieldname = 'MENGE' .
CLEAR x_fieldcat.
x_fieldcat-reptext = 'Del Date'.
MODIFY it_fieldcat FROM x_fieldcat TRANSPORTING reptext WHERE
fieldname = 'EINDT' .
CLEAR x_fieldcat.
x_fieldcat-reptext = 'Delivered Qty'.
MODIFY it_fieldcat FROM x_fieldcat TRANSPORTING reptext WHERE
fieldname = 'WEMNG' .
CLEAR x_fieldcat.
x_fieldcat-reptext = 'PO SLoc'.
x_fieldcat-scrtext_l = 'PO SLoc'.
x_fieldcat-scrtext_m = 'PO SLoc'.
x_fieldcat-scrtext_s = 'PO SLoc'.
MODIFY it_fieldcat FROM x_fieldcat TRANSPORTING reptext
scrtext_l scrtext_m scrtext_s WHERE fieldname = 'LGORT2' .
CLEAR x_fieldcat.
x_fieldcat-reptext = 'FI'.
MODIFY it_fieldcat FROM x_fieldcat TRANSPORTING reptext WHERE
fieldname = 'EREKZ' .
CLEAR x_fieldcat.
x_fieldcat-reptext = 'DCI'.
MODIFY it_fieldcat FROM x_fieldcat TRANSPORTING reptext WHERE
fieldname = 'ELIKZ' .
CLEAR x_fieldcat.
x_fieldcat-reptext = 'Return'.
MODIFY it_fieldcat FROM x_fieldcat TRANSPORTING reptext WHERE
fieldname = 'RETPO' .
CLEAR x_fieldcat.
x_fieldcat-reptext = 'Create Dt.'.
x_fieldcat-scrtext_l = 'Create Dt.'.
x_fieldcat-scrtext_m = 'Create Dt.'.
x_fieldcat-scrtext_s = 'Create Dt.'.
MODIFY it_fieldcat FROM x_fieldcat TRANSPORTING reptext
scrtext_l scrtext_m scrtext_s WHERE fieldname = 'AEDAT' .
CLEAR x_fieldcat.
To optimized the column width of ALV Grid.
x_layout-cwidth_opt = 'X'.
ENDFORM. " Build_field_catalog
‎2007 May 17 5:10 PM
Were you given any logical database, structure to develop this report
‎2007 May 17 5:16 PM
Hi,
I was just told to develop a report program based on the inputs mentioned using the tables mentioned and produce the output.
But, I'm a bit confused that...how to create a link between those tables ie., what common fields or primary key fields can be used to develop them.
Thanks,
SAI KUMAR
‎2007 May 17 5:13 PM
hi...
hope this sample code ll helpful to u.
reward points if helpful.
Thank-You.
REPORT zepjpo2 .
Type decleration
TYPE-POOLS: slis.
Table decleration
TABLES:
zepic_jpo,
likp,
lips,
ekko,
ekpo,
eket.
Field Catelog and layout Decleration
DATA: it_fieldcat TYPE lvc_t_fcat,
x_fieldcat TYPE lvc_s_fcat OCCURS 0 WITH HEADER LINE.
DATA: x_layout TYPE lvc_s_layo.
DATA: lv_repid LIKE sy-repid.
***Internal Table Decleration
DATA: BEGIN OF it_zepic_jpo OCCURS 0," with header line,
werks LIKE zepic_jpo-werks,
VBELN LIKE zepic_jpo-VBELN,
POSNR LIKE zepic_jpo-POSNR,
zz_wp LIKE zepic_jpo-zz_wp,
zz_case LIKE zepic_jpo-zz_case,
zz_status LIKE zepic_jpo-zz_status,
matnr LIKE zepic_jpo-matnr,
vgbel LIKE zepic_jpo-vgbel,
vgpos LIKE ekpo-ebelp, "(5) type numc,
END OF it_zepic_jpo.
DATA: BEGIN OF it_lips OCCURS 0," with header line,
vbeln LIKE lips-vbeln,
posnr LIKE lips-posnr,
lfimg LIKE lips-lfimg,
lgort LIKE lips-lgort,
END OF it_lips.
DATA: BEGIN OF it_likp OCCURS 0," with header line,
vbeln LIKE likp-vbeln,
ernam LIKE likp-ernam,
erdat LIKE likp-erdat,
lifex LIKE likp-lifex,
END OF it_likp.
DATA: BEGIN OF it_ekpo OCCURS 0," with header line,
ebeln LIKE ekpo-ebeln,
ebelp LIKE ekpo-ebelp,
pstyp LIKE ekpo-pstyp,
knttp LIKE ekpo-knttp,
menge LIKE ekpo-menge,
lgort LIKE ekpo-lgort,
erekz LIKE ekpo-erekz,
elikz LIKE ekpo-elikz,
retpo LIKE ekpo-retpo,
END OF it_ekpo.
DATA: BEGIN OF it_ekko OCCURS 0," with header line,
lifnr LIKE ekko-lifnr,
bsart LIKE ekko-bsart,
ebeln LIKE ekko-ebeln,
aedat LIKE ekko-aedat,
END OF it_ekko.
DATA: BEGIN OF it_eket OCCURS 0," with header line,
ebeln LIKE eket-ebeln,
ebelp LIKE eket-ebelp,
eindt LIKE eket-eindt,
wemng LIKE eket-wemng,
END OF it_eket.
Internal Table for ALV Display
DATA: BEGIN OF it_grid OCCURS 0,
werks LIKE zepic_jpo-werks,
zz_wp LIKE zepic_jpo-zz_wp,
zz_case LIKE zepic_jpo-zz_case,
zz_status LIKE zepic_jpo-zz_status,
matnr LIKE zepic_jpo-matnr,
vbeln LIKE ZEPIC_JPO-VBELN, "lips-vbeln,
posnr LIKE ZEPIC_JPO-POSNR, "lips-posnr,
lfimg(13),
lgort1 LIKE lips-lgort,
ernam LIKE likp-ernam,
erdat LIKE likp-erdat,
lifex LIKE likp-lifex,
lifnr LIKE ekko-lifnr,
bsart LIKE ekko-bsart,
ebeln LIKE ZEPIC_JPO-VGBEL,"ekko-ebeln,
ebelp LIKE ZEPIC_JPO-VGPOS,"ekpo-ebelp,
pstyp LIKE ekpo-pstyp,
knttp LIKE ekpo-knttp,
menge(13),
eindt LIKE eket-eindt,
wemng(13),
lgort2 LIKE ekpo-lgort,
erekz LIKE ekpo-erekz,
elikz LIKE ekpo-elikz,
retpo LIKE ekpo-retpo,
aedat LIKE ekko-aedat,
END OF it_grid.
INITIALIZATION
INITIALIZATION.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
PARAMETER p_werks LIKE zepic_jpo-werks OBLIGATORY DEFAULT '310'.
SELECT-OPTIONS: s_zz_wp FOR zepic_jpo-zz_wp,
s_z_case FOR zepic_jpo-zz_case,
s_status FOR zepic_jpo-zz_status,
s_vbeln FOR zepic_jpo-vbeln,
s_posnr FOR zepic_jpo-posnr,
s_vgbel FOR zepic_jpo-vgbel,
s_vgpos FOR zepic_jpo-vgpos.
SELECTION-SCREEN END OF BLOCK b1.
Start of selection event
START-OF-SELECTION.
Refresh/Clear internal table and variables.
PERFORM clear_var_itab.
Fetch the data from tables
PERFORM get_zepic_jpo_data.
Display ALV Grid
PERFORM display_alv.
END-OF-SELECTION.
&----
*& Form clear_var_itab
&----
Clear the internal table
----
--> p1 text
<-- p2 text
----
FORM clear_var_itab .
REFRESH: it_grid,
it_zepic_jpo,
it_ekko,
it_ekpo,
it_eket,
it_lips,
it_likp.
ENDFORM. " clear_var_itab
&----
*& Form get_zepic_jpo_data
&----
Get data from tables
----
--> p1 text
<-- p2 text
----
FORM get_zepic_jpo_data .
Fetch Data from zepic_jpo Table
SELECT werks
vbeln
posnr
zz_wp
zz_case
zz_status
matnr
vgbel
vgpos
FROM zepic_jpo INTO CORRESPONDING FIELDS OF
TABLE it_zepic_jpo WHERE werks = p_werks AND
zz_wp IN s_zz_wp AND
zz_case IN s_z_case AND
zz_status IN s_status AND
vgbel IN s_vgbel AND
vgpos IN s_vgpos.
IF it_zepic_jpo[] IS NOT INITIAL.
Fetch Data from lips Table
SELECT vbeln
posnr
lfimg
lgort
FROM lips INTO CORRESPONDING FIELDS OF
TABLE it_lips FOR ALL ENTRIES IN it_zepic_jpo
WHERE vbeln = it_zepic_jpo-vbeln AND
posnr = it_zepic_jpo-posnr .
Fetch Data from likp Table
SELECT vbeln
ernam
erdat
lifex
FROM likp INTO CORRESPONDING FIELDS OF
TABLE it_likp FOR ALL ENTRIES IN it_zepic_jpo
WHERE vbeln = it_zepic_jpo-vbeln.
Fetch Data from ekpo Table
SELECT ebeln
ebelp
pstyp
knttp
menge
lgort
erekz
elikz
retpo
FROM ekpo INTO CORRESPONDING FIELDS OF
TABLE it_ekpo FOR ALL ENTRIES IN it_zepic_jpo
WHERE ebeln = it_zepic_jpo-vgbel AND
ebelp = it_zepic_jpo-vgpos.
Fetch Data from ekko Table
SELECT lifnr
bsart
ebeln
aedat
FROM ekko INTO CORRESPONDING FIELDS OF
TABLE it_ekko FOR ALL ENTRIES IN it_zepic_jpo
WHERE ebeln = it_zepic_jpo-vgbel.
Fetch Data from eket Table
SELECT ebeln
ebelp
eindt
wemng
FROM eket INTO CORRESPONDING FIELDS OF
TABLE it_eket FOR ALL ENTRIES IN it_zepic_jpo
WHERE ebeln = it_zepic_jpo-vgbel AND
ebelp = it_zepic_jpo-vgpos.
Read the Internal table values and fill the ALV Grid Table
LOOP AT it_zepic_jpo.
READ TABLE it_lips
WITH KEY vbeln = it_zepic_jpo-vbeln
posnr = it_zepic_jpo-posnr." BINARY SEARCH .
READ TABLE it_likp
WITH KEY vbeln = it_zepic_jpo-vbeln." BINARY SEARCH .
READ TABLE it_ekpo
WITH KEY ebeln = it_zepic_jpo-vgbel
ebelp = it_zepic_jpo-vgpos." BINARY SEARCH .
READ TABLE it_ekko
WITH KEY ebeln = it_zepic_jpo-vgbel." BINARY SEARCH .
READ TABLE it_eket
WITH KEY ebeln = it_zepic_jpo-vgbel
ebelp = it_zepic_jpo-vgpos." BINARY SEARCH .
it_grid-werks = it_zepic_jpo-werks.
it_grid-zz_wp = it_zepic_jpo-zz_wp.
it_grid-zz_case = it_zepic_jpo-zz_case.
it_grid-zz_status = it_zepic_jpo-zz_status.
it_grid-matnr = it_zepic_jpo-matnr.
it_grid-vbeln = it_zepic_jpo-VBELN.
it_grid-posnr = it_zepic_jpo-POSNR.
it_grid-lfimg = it_lips-lfimg.
it_grid-lgort1 = it_lips-lgort.
it_grid-ernam = it_likp-ernam.
it_grid-erdat = it_likp-erdat.
it_grid-lifex = it_likp-lifex.
it_grid-lifnr = it_ekko-lifnr.
it_grid-bsart = it_ekko-bsart.
it_grid-ebeln = IT_ZEPIC_JPO-VGBEL.
it_grid-ebelp = IT_ZEPIC_JPO-VGPOS.
it_grid-pstyp = it_ekpo-pstyp.
it_grid-knttp = it_ekpo-knttp.
it_grid-menge = it_ekpo-menge.
it_grid-eindt = it_eket-eindt.
it_grid-wemng = it_eket-wemng.
it_grid-lgort2 = it_ekpo-lgort.
it_grid-erekz = it_ekpo-erekz.
it_grid-elikz = it_ekpo-elikz.
it_grid-retpo = it_ekpo-retpo.
it_grid-aedat = it_ekko-aedat.
APPEND it_grid.
CLEAR: it_grid,
it_zepic_jpo,
it_ekko,
it_ekpo,
it_eket,
it_lips,
it_likp.
ENDLOOP.
ELSE.
MESSAGE s398(00) WITH 'No data Found.'.
ENDIF.
ENDFORM. " get_zepic_jpo_data
&----
*& Form display_alv
&----
Display ALV data
----
--> p1 text
<-- p2 text
----
FORM display_alv .
PERFORM build_field_catalog.
Assign program name to variable
lv_repid = sy-repid.
Call the ALV Grid FM for Display
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
EXPORTING
i_callback_program = lv_repid
i_grid_title = 'PO, Shipment Notification and Japan
Foreign Case information'
is_layout_lvc = x_layout
it_fieldcat_lvc = it_fieldcat
TABLES
t_outtab = it_grid[]
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
&----
*& Form Build_field_catalog
&----
Building Field Catelog for ALV
----
--> p1 text
<-- p2 text
----
FORM build_field_catalog .
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
i_structure_name = 'ZSEPJPO2'
i_bypassing_buffer = 'X'
CHANGING
ct_fieldcat = it_fieldcat[]
EXCEPTIONS
inconsistent_interface = 1
program_error = 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.
*Adding the Text to be displayed
x_fieldcat-reptext = 'Shipping Order'.
MODIFY it_fieldcat FROM x_fieldcat TRANSPORTING reptext WHERE
fieldname = 'ZZ_WP' .
CLEAR x_fieldcat.
x_fieldcat-reptext = 'Case'.
MODIFY it_fieldcat FROM x_fieldcat TRANSPORTING reptext WHERE
fieldname = 'ZZ_CASE' .
CLEAR x_fieldcat.
x_fieldcat-reptext = 'Status'.
MODIFY it_fieldcat FROM x_fieldcat TRANSPORTING reptext WHERE
fieldname = 'ZZ_STATUS' .
CLEAR x_fieldcat.
x_fieldcat-reptext = 'Del Item '.
x_fieldcat-scrtext_l = 'Del Item'.
x_fieldcat-scrtext_m = 'Del Item'.
x_fieldcat-scrtext_s = 'Del Item'.
MODIFY it_fieldcat FROM x_fieldcat TRANSPORTING reptext
scrtext_l scrtext_m scrtext_s WHERE fieldname = 'POSNR' .
CLEAR x_fieldcat.
x_fieldcat-reptext = 'Del Qty'.
MODIFY it_fieldcat FROM x_fieldcat TRANSPORTING reptext WHERE
fieldname = 'LFIMG' .
CLEAR x_fieldcat.
x_fieldcat-reptext = 'Del SLoc'.
x_fieldcat-scrtext_l = 'Del Create By'.
x_fieldcat-scrtext_m = 'Del Create By'.
x_fieldcat-scrtext_s = 'Del Create By'.
MODIFY it_fieldcat FROM x_fieldcat TRANSPORTING reptext
scrtext_l scrtext_m scrtext_s WHERE fieldname = 'LGORT1' .
CLEAR x_fieldcat.
x_fieldcat-reptext = 'Del Create By'.
x_fieldcat-scrtext_l = 'Del Create By'.
x_fieldcat-scrtext_m = 'Del Create By'.
x_fieldcat-scrtext_s = 'Del Create By'.
MODIFY it_fieldcat FROM x_fieldcat TRANSPORTING reptext
scrtext_l scrtext_m scrtext_s WHERE fieldname = 'ERNAM' .
CLEAR x_fieldcat.
x_fieldcat-reptext = 'Del Create Dt.'.
x_fieldcat-scrtext_l = 'Del Create Dt.'.
x_fieldcat-scrtext_m = 'Del Create Dt.'.
x_fieldcat-scrtext_s = 'Del Create Dt.'.
MODIFY it_fieldcat FROM x_fieldcat TRANSPORTING reptext
scrtext_l scrtext_m scrtext_s WHERE fieldname = 'ERDAT' .
CLEAR x_fieldcat.
x_fieldcat-reptext = 'Ext ID'.
x_fieldcat-scrtext_l = 'Ext ID'.
x_fieldcat-scrtext_m = 'Ext ID'.
x_fieldcat-scrtext_s = 'Ext ID'.
MODIFY it_fieldcat FROM x_fieldcat TRANSPORTING reptext
scrtext_l scrtext_m scrtext_s WHERE fieldname ='LIFEX' .
CLEAR x_fieldcat.
x_fieldcat-reptext = 'PO Type'.
MODIFY it_fieldcat FROM x_fieldcat TRANSPORTING reptext WHERE
fieldname = 'BSART' .
CLEAR x_fieldcat.
x_fieldcat-reptext = 'PO'.
x_fieldcat-scrtext_l = 'PO'.
x_fieldcat-scrtext_m = 'PO'.
x_fieldcat-scrtext_s = 'PO'.
MODIFY it_fieldcat FROM x_fieldcat TRANSPORTING reptext
scrtext_l scrtext_m scrtext_s WHERE fieldname = 'EBELN' .
CLEAR x_fieldcat.
x_fieldcat-reptext = 'PO Item'.
x_fieldcat-scrtext_l = 'PO Item'.
x_fieldcat-scrtext_m = 'PO Item'.
x_fieldcat-scrtext_s = 'PO Item'.
MODIFY it_fieldcat FROM x_fieldcat TRANSPORTING reptext
scrtext_l scrtext_m scrtext_s WHERE fieldname = 'EBELP' .
CLEAR x_fieldcat.
x_fieldcat-reptext = 'Item Cat.'.
x_fieldcat-scrtext_l = 'Item Cat.'.
x_fieldcat-scrtext_m = 'Item Cat.'.
x_fieldcat-scrtext_s = 'Item Cat.'.
MODIFY it_fieldcat FROM x_fieldcat TRANSPORTING reptext
scrtext_l scrtext_m scrtext_s WHERE fieldname = 'PSTYP' .
CLEAR x_fieldcat.
x_fieldcat-reptext = 'Acct. Assign'.
x_fieldcat-scrtext_l = 'Acct. Assign'.
x_fieldcat-scrtext_m = 'Acct. Assign'.
x_fieldcat-scrtext_s = 'Acct. Assign'.
MODIFY it_fieldcat FROM x_fieldcat TRANSPORTING reptext
scrtext_l scrtext_m scrtext_s WHERE fieldname = 'KNTTP' .
CLEAR x_fieldcat.
x_fieldcat-reptext = 'Qty'.
MODIFY it_fieldcat FROM x_fieldcat TRANSPORTING reptext WHERE
fieldname = 'MENGE' .
CLEAR x_fieldcat.
x_fieldcat-reptext = 'Del Date'.
MODIFY it_fieldcat FROM x_fieldcat TRANSPORTING reptext WHERE
fieldname = 'EINDT' .
CLEAR x_fieldcat.
x_fieldcat-reptext = 'Delivered Qty'.
MODIFY it_fieldcat FROM x_fieldcat TRANSPORTING reptext WHERE
fieldname = 'WEMNG' .
CLEAR x_fieldcat.
x_fieldcat-reptext = 'PO SLoc'.
x_fieldcat-scrtext_l = 'PO SLoc'.
x_fieldcat-scrtext_m = 'PO SLoc'.
x_fieldcat-scrtext_s = 'PO SLoc'.
MODIFY it_fieldcat FROM x_fieldcat TRANSPORTING reptext
scrtext_l scrtext_m scrtext_s WHERE fieldname = 'LGORT2' .
CLEAR x_fieldcat.
x_fieldcat-reptext = 'FI'.
MODIFY it_fieldcat FROM x_fieldcat TRANSPORTING reptext WHERE
fieldname = 'EREKZ' .
CLEAR x_fieldcat.
x_fieldcat-reptext = 'DCI'.
MODIFY it_fieldcat FROM x_fieldcat TRANSPORTING reptext WHERE
fieldname = 'ELIKZ' .
CLEAR x_fieldcat.
x_fieldcat-reptext = 'Return'.
MODIFY it_fieldcat FROM x_fieldcat TRANSPORTING reptext WHERE
fieldname = 'RETPO' .
CLEAR x_fieldcat.
x_fieldcat-reptext = 'Create Dt.'.
x_fieldcat-scrtext_l = 'Create Dt.'.
x_fieldcat-scrtext_m = 'Create Dt.'.
x_fieldcat-scrtext_s = 'Create Dt.'.
MODIFY it_fieldcat FROM x_fieldcat TRANSPORTING reptext
scrtext_l scrtext_m scrtext_s WHERE fieldname = 'AEDAT' .
CLEAR x_fieldcat.
To optimized the column width of ALV Grid.
x_layout-cwidth_opt = 'X'.
ENDFORM. " Build_field_catalog
‎2007 May 17 5:22 PM
Hi,
The code you sent was a bit useful, but....
In my requirement....<b>I don't want to include any type-pools....and no header line.</b>
I was just asked to develop a <b>simple report program</b> to develop the output required only with those fields and <b>mentioned tables.</b>
Thank you,
SAI KUMAR
‎2007 May 17 5:48 PM
See the below code :
REPORT zjpvrom323 NO STANDARD PAGE HEADING LINE-SIZE 200 LINE-COUNT 35
MESSAGE-ID zjpv001 .
&----
*& Development ID: OM_DD_323_LJP *
*& *
*& Report : ZJPVROM323 *
*& *
*& This application is used to Develop a new billing document that *
*& fulfills the NPKK Requirement That does not exist in JSP *
*& functionality.according to the delivery date it displays Monthly *
sales notes report *
&----
*& Change Log: *
*& *
*& Init. Who Date Text *
*& MALIKDH1 Seshu Reddy 2003/07/20 Initial Development *
&----
----
Constants
----
CONSTANTS :c_vkorg(4) VALUE 'JP20', " Sale Organization
c_vtweg(2) VALUE 'TR', " Distribution Channel
c_rfbsk VALUE 'C', " Status for transfer to accounting
c_spart(2) VALUE '01', " Division
c_kvgr2(3) VALUE 'Z51', " Customer Group 2
c_fkart(4) TYPE c VALUE 'ZJPW', " Billing Type
c_waerk(5) TYPE c VALUE 'JPY', " SD document currency
c_kschl(4) TYPE c VALUE 'ZJPC', " Condition type
c_no_of_lines TYPE i VALUE '35',
C_CONS_5(1) TYPE C VALUE '5',
C_CONS_8(1) TYPE C VALUE '8',
C_CONS_10(2) TYPE C VALUE '10',
c_konwa(5) TYPE c VALUE 'JPY'. " Rate unit (currency or
" percentage)
----
DB-Tables *
----
*TABLES : vbrk, " Billing : Header Data
vbrp, " Billing : Item Data
kna1, " Customer master : General data
knvv, " Customer master : sales data
likp, " Delivery : Header data
konv, " Condition : Transaction data
konp, " Condition : items
zjpv_torihiki, " Add on table:Business transaction category
zjpv_rebate. " Add on table : rebate table
----
Variables/Internal table *
----
DATA :g_date(2) TYPE n, " Date
g_month(2) TYPE n, " Month
g_year(4) TYPE n , " Year
g_bill_low(10) TYPE n, " From date
g_bill_high(10) TYPE n, " To date
g_month1(2) TYPE n, " Month
g_year1(4) TYPE n, " Year
g_date1(2) TYPE n, " Date
g_year2(4) TYPE n, " Year
g_datum LIKE sy-datum, " System date
g_skip(4) TYPE c , " Line break
g_ctax(8) TYPE c, " Consumption tax
g_ctax1(10) TYPE c, " Consumption tax
g_ctax2(16) TYPE c, " Consumption tax
g_vol(6) TYPE c, " Volume
g_vol1(6) TYPE c, " Volume
g_vol2(7) TYPE c, " Volume
g_tamt(10) TYPE c, " Total amount
g_tamt1(13) TYPE c, " Total amount
g_tamt2(16) TYPE c, " Total amount
g_gtotal(10) TYPE c, " Net total
g_gtotal1(13) TYPE c, " Net total
g_gtotal2(16) TYPE c, " Net total
g_uprice(8) TYPE c, " Unit Price
g_uprice1(10) TYPE c, " Unit Price
g_uprice2(11) TYPE c, " Unit Price
g_amount(10) TYPE c, " Amount
g_amount1(13) TYPE c, " Amount
g_amount2(14) TYPE c, " Amount
g_fctax(16) TYPE c, " Consumption Tax (Total)
g_ftamnt(16) TYPE c, " Total amount (Total)
g_ftotal(16) TYPE c, " net total (Total)
g_fctax1(8) TYPE c, " Totals with Comma (Consumption tax)
g_fctax2(10) TYPE c, " Totals with Comma (Consumption tax)
g_fctax3(11) TYPE c, " Totals with Comma (Consumption tax)
g_ftamt1(10) TYPE c, " Totals with comma (Total amount)
g_grand_total(16),
g_grand_total1(14),
g_net_total(16),
g_net_total1(14),
g_middle_val(16),
g_middle_val1(11),
g_ftamt2(13) TYPE c, " Totals with Comma(Total amount)
g_ftamt3(14) TYPE c, " Totals with comma(Total amount)
g_ftotal1(10) TYPE c, " Totals with comma(Net total)
g_ftotal2(13) TYPE c, " Totals with comma(Net total)
g_ftotal3(14) TYPE c. " Totals with comma(Net total)
*Internal table for billing document header
DATA : BEGIN OF t_vbrk OCCURS 0,
vbeln LIKE vbrk-vbeln, " Billing Doc number
vbtyp LIKE vbrk-vbtyp, " Document Category
kunag LIKE vbrk-kunag, " sold-to-party
vkorg LIKE vbrk-vkorg, " sales organization
vtweg LIKE vbrk-vtweg, " Distribution Channel
kunrg LIKE vbrk-kunrg, " Payer
fkart_rl LIKE vbrk-fkart_rl," Billing Type
fkdat LIKE vbrk-fkdat, " Billing date
mwsbk LIKE vbrk-mwsbk, " Tax amount in document currency
netwr LIKE vbrk-netwr, " Net value in document currency
waerk LIKE vbrk-waerk, " SD document currency
knumv LIKE vbrk-knumv, " Number of the document condition
END OF t_vbrk.
internal table for Output formatting
DATA : BEGIN OF t_oput OCCURS 0,
rbcode(4) TYPE c, " Regulating Branch Code
tpcode(10) TYPE c, " trading partner code
bdgrp(3) TYPE c, " Billing Document Group
zjd_torihikikubn(3) TYPE c, " business transaction
"category
tpname1(35) TYPE c, " trading partner name 1
tpname2(35) TYPE c, " trading partner name 2
bdgnm(10) TYPE c, " Billing Doc Group Name
dcode(10) TYPE c, " destination code
dname(35), " destination name
fkdat(10) TYPE c, " Date of Issue
vbeln(10) TYPE c, " Billing Doc No
zzjp_remarks(30) TYPE c, " Remarks
ctax(16) TYPE c, " Consumption Tax
tamnt(16) TYPE c, " Total Amount
gtotal(16) TYPE c, " Grand total,
pcode(9) TYPE n, " Product Code
pname(40) TYPE c, " Product name
volume(16) TYPE p decimals 3, " volume
volume1 type i,
volume2(16) type c,
uprice(13) TYPE c, " Unit Price
amount(16) TYPE c, " Amount
posnr(6) TYPE n, " Billing Item
END OF t_oput.
*Internal table for Customer Master Sales Data
DATA : BEGIN OF t_knvv OCCURS 0,
kunnr LIKE knvv-kunnr, " Customer Number
vkorg LIKE knvv-vkorg, " Sales Organization
vtweg LIKE knvv-vtweg, " Distribution Channel
spart LIKE knvv-spart, " Division
kvgr2 LIKE knvv-kvgr2, " Customer Group 2
vkbur LIKE knvv-vkbur, " sales office
END OF t_knvv.
*Internal table for Customer Master Data
DATA : BEGIN OF t_kna1 OCCURS 0,
kunnr LIKE kna1-kunnr, " Customer number
name1 LIKE kna1-name1, " Customer Name 1
name2 LIKE kna1-name2, " Customer Name 2
END OF t_kna1.
Internal table used for billing document items
DATA : BEGIN OF t_vbrp OCCURS 0,
vbeln LIKE vbrp-vbeln, " Billing Document
posnr LIKE vbrp-posnr, " Billing item
zjd_torihikikubn LIKE vbrp-zjd_torihikikubn, " Business
" Transaction Category
vgbel LIKE vbrp-vgbel, " Document number of the
" reference document
vgtyp LIKE vbrp-vgtyp, " Document category of
" preceding SD document
zzjp_remarks LIKE vbrp-zzjp_remarks, " Remarks
zjd_kanamei LIKE vbrp-zjd_kanamei,
fkimg LIKE vbrp-fkimg, " Actual billed quantity
netwr LIKE vbrp-netwr, " Net value of the
" billing item in document currency
zjd_touitsumatnr LIKE vbrp-zjd_touitsumatnr,
END OF t_vbrp.
Internal table used for Rebate Table
DATA : BEGIN OF t_zjpv_rebate OCCURS 0,
fkart LIKE zjpv_rebate-fkart, " Billing type
rebate_code LIKE zjpv_rebate-rebate_code, " Rebate Code
rebate_name LIKE zjpv_rebate-rebate_name, " Rebate Name
END OF t_zjpv_rebate.
*Internal table used for Delivery Header
DATA : BEGIN OF t_likp OCCURS 0,
vbeln LIKE likp-vbeln, " Delivery No
kunnr LIKE likp-kunnr, " Ship-to party
END OF t_likp.
*Internal table for conditions (Transaction Data)
DATA : BEGIN OF t_konv OCCURS 0,
knumv LIKE konv-knumv, " Number of the document condition
kposn LIKE konv-kposn, " Condition item number
kschl LIKE konv-kschl, " Condition type
knumh LIKE konv-knumh, " Condition type
END OF t_konv.
Internal table for conditions (Item)
DATA : BEGIN OF t_konp OCCURS 0,
knumh LIKE konp-knumh, " Number of the document condition
kbetr LIKE konp-kbetr, " Rate (condition amount or
" percentage) where no scale exists
konwa LIKE konp-konwa, " Rate unit (currency or percentage)
END OF t_konp.
Internal table for table Torihiki Kubun
DATA : BEGIN OF t_zjpv_torihiki OCCURS 0,
kubun LIKE zjpv_torihiki-kubun, " Condition type
rep_grp LIKE zjpv_torihiki-rep_grp, " Shikiri Report Group
rep_grp_name LIKE zjpv_torihiki-rep_grp_name, " Shikiri Report
" Group NAME
END OF t_zjpv_torihiki.
DATA: l_tpname1(35) TYPE c, " trading partner name 1
l_tpname2(35) TYPE c, " trading partner name 2
l_bdgnm(10) TYPE c, " Billing Doc Group Name
G_FLG(1) type c,
G_FLG1(1) type c.
----
Selection screen *
----
SELECTION-SCREEN : BEGIN OF BLOCK zjpv WITH FRAME TITLE text-001.
PARAMETER : p_date LIKE sy-datum OBLIGATORY. " Delivery date
SELECTION-SCREEN : END OF BLOCK zjpv.
RANGES : r_bdate FOR vbrk-fkdat. " Billing date
----
Initialization *
----
INITIALIZATION.
p_date = sy-datum.
----
MAIN PROCESSING *
----
START-OF-SELECTION.
This Perform is used for getting Billing date According to Delivery
Date(Output date)
PERFORM f_bill_date_move.
Selecting the data from tables VBRK,VBRP,KNVV,KNA1,KONV,KONP,LIKP,
ZJPV_TORIHIKI and ZJPV_REBATE
PERFORM f_get_data.
Passing the data from the internal tables (T_VBRK,T_VBRP,T_KNVV,
T_KNA1,T_KONV,T_KONP,T_LIKP, T_ZJPV_TORIHIKI and T_ZJPV_REBATE)
to out put Internal table(T_OPUT)
PERFORM f_process_data.
----
END OF SELECTION *
----
END-OF-SELECTION.
Out put formatting
PERFORM f_output_data.
&----
*& Form F_Bill_DATE_MOVE
&----
This Perform is used for getting Billing date According to Delivery *
Date(Output date) *
----
FORM f_bill_date_move.
g_datum = p_date + 10.
g_month = g_datum+4(2).
g_year = g_datum+0(4).
IF g_month = 1.
g_year = g_year - 1.
g_month = 12.
g_date = 1.
ELSE.
g_month = g_month - 1.
g_date = 1.
ENDIF.
Passing the date to billing date-low
CONCATENATE g_year g_month g_date INTO g_bill_low.
r_bdate-low = g_bill_low.
r_bdate-sign = 'I'.
r_bdate-option = 'BT'.
g_month1 = g_datum+4(2).
g_year1 = g_datum+0(4).
IF g_month1 = 1.
g_year1 = g_year1 - 1.
g_month1 = 12.
ELSE.
g_month1 = g_month1 - 1.
ENDIF.
CASE g_month1.
WHEN 1.g_date1 = '31'.
WHEN 3.g_date1 = '31'.
WHEN 4.g_date1 = '30'.
WHEN 5.g_date1 = '31'.
WHEN 6.g_date1 = '30'.
WHEN 7.g_date1 = '31'.
WHEN 8.g_date1 = '31'.
WHEN 9.g_date1 = '30'.
WHEN 10.g_date1 = '31'.
WHEN 11.g_date1 = '30'.
WHEN 12.g_date1 = '31'.
ENDCASE.
g_year2 = g_year1.
IF g_month1 = 2.
g_year2 = g_year2 MOD 4 .
IF g_year2 = 0.
g_date1 = 29.
ELSE.
g_date1 = 28.
ENDIF.
ENDIF.
Passing the date to billing date-high
CONCATENATE g_year1 g_month1 g_date1 INTO g_bill_high.
r_bdate-high = g_bill_high.
APPEND r_bdate.
ENDFORM. " F_Bill_DATE_MOVE
&----
*& Form f_get_data
&----
Selecting the data from tables VBRK,VBRP,KNVV,KNA1,KONV,KONP,LIKP, *
ZJPV_TORIHIKI and ZJPV_REBATE *
----
FORM f_get_data.
Selecting the data from VBRK into internal table T_VBRK.
SELECT vbeln
vbtyp
kunag
vkorg
vtweg
kunrg
fkart_rl
fkdat
mwsbk
netwr
waerk
knumv
FROM vbrk
INTO TABLE t_vbrk
WHERE fkdat BETWEEN r_bdate-low and r_bdate-high
and RFBSK = C_RFBSK
AND vbtyp IN ('N' , 'S' , 'M' , 'O' , 'P')
AND vkorg = c_vkorg
AND vtweg = c_vtweg
AND netwr <> 0.
IF sy-subrc Eq 0.
sort t_vbrk.
ENDIF.
Selecting the data from KNVV into internal table T_KNVV.
SELECT kunnr
vkorg
vtweg
spart
kvgr2
vkbur
FROM knvv
INTO TABLE t_knvv
FOR ALL ENTRIES IN t_vbrk WHERE ( kunnr = t_vbrk-kunag
OR kunnr = t_vbrk-kunrg )
AND vkorg = t_vbrk-vkorg
AND vtweg = t_vbrk-vtweg
AND spart = c_spart
AND kvgr2 = c_kvgr2.
Selecting the data from VBRP into internal table T_VBRP.
SELECT vbeln
posnr
zjd_torihikikubn
vgbel
vgtyp
zzjp_remarks
zjd_kanamei
fkimg
netwr
zjd_touitsumatnr
FROM vbrp
INTO TABLE t_vbrp
FOR ALL ENTRIES IN t_vbrk
WHERE vbeln = t_vbrk-vbeln.
Selecting the data from ZJPV_REBATE into internal table T_ZJPV_REBATE.
SELECT fkart
rebate_code
rebate_name
FROM zjpv_rebate
INTO TABLE t_zjpv_rebate
FOR ALL ENTRIES IN t_vbrk
WHERE fkart = t_vbrk-fkart_rl.
Selecting the data from KNA1 into internal table T_KNA1.
SELECT kunnr
name1
name2
FROM kna1
INTO TABLE t_kna1
FOR ALL ENTRIES IN t_knvv
WHERE kunnr = t_knvv-kunnr.
IF NOT t_vbrp[] IS INITIAL.
Selecting the data from LIKP into internal table T_LIKP.
SELECT vbeln
kunnr
FROM likp
INTO TABLE t_likp
FOR ALL ENTRIES IN t_vbrp
WHERE vbeln = t_vbrp-vgbel.
ENDIF.
Selecting the data from KONV into internal table T_KONV.
SELECT knumv
kposn
kschl
knumh
FROM konv
INTO TABLE t_konv
FOR ALL ENTRIES IN t_vbrk
WHERE knumv = t_vbrk-knumv
AND kschl = c_kschl.
Selecting the data from KONP into internal table T_KONP.
SELECT knumh
kbetr
konwa
FROM konp
INTO TABLE t_konp
FOR ALL ENTRIES IN t_konv
WHERE knumh = t_konv-knumh.
Selecting the data from ZJPV_TORIHIKI into internal table
T_ZJPV_TORIHIKI.
SELECT kubun
rep_grp
rep_grp_name
FROM zjpv_torihiki
INTO TABLE t_zjpv_torihiki
FOR ALL ENTRIES IN t_vbrp
WHERE kubun = t_vbrp-zjd_torihikikubn.
ENDFORM. " f_get_data
&----
*& Form f_process_data
&----
Reading The Data from Internal tables (T_VBRK,T_VBRP,T_KNVV,T_KNA1, *
T_LIKP,T_KONV,T_KONP,T_ZJPV_REBATE and T_ZJP_TORIHIKI) *
----
FORM f_process_data.
Sorting the internal table t_kna1, t_vbrk, t_vbrp ,t_knvv,t_kna1,
t_likp and t_zjpv_rebate
SORT: t_kna1 BY kunnr,
t_vbrk BY vbeln,
t_vbrp BY vbeln,
t_knvv BY kunnr,
t_zjpv_rebate BY fkart,
t_knvv BY kunnr vkorg vtweg spart,
t_likp BY vbeln.
LOOP AT t_vbrk.
Reading the data from internal table t_knvv
READ TABLE t_knvv WITH KEY kunnr = t_vbrk-kunag
vkorg = t_vbrk-vkorg
vtweg = t_vbrk-vtweg
spart = c_spart
kvgr2 = c_kvgr2.
IF sy-subrc NE 0.
g_flg = 'X'.
ENDIF.
Reading the data from internal table t_knvv
READ TABLE t_knvv WITH KEY kunnr = t_vbrk-kunrg
vkorg = t_vbrk-vkorg
vtweg = t_vbrk-vtweg
spart = c_spart
kvgr2 = c_kvgr2.
IF sy-subrc NE 0.
G_FLG1 = 'X'.
ENDIF.
IF G_FLG = 'X' AND G_FLG1 = 'X'.
DELETE T_VBRK.
CLEAR: G_FLG, G_FLG1.
CONTINUE.
ENDIF.
ENDLOOP.
DATA : l_sign(1) TYPE c VALUE '-',
l_ctax(15) TYPE n ,
l_tamnt(15) TYPE n ,
l_volume(16) TYPE c,
l_gtotal(15) TYPE n,
l_amnt(15) TYPE n.
SORT t_konv BY knumv kposn kschl.
SORT t_konp BY knumh.
LOOP AT t_vbrp.
READ TABLE t_vbrk WITH KEY vbeln = t_vbrp-vbeln.
IF sy-subrc <> 0.
DELETE t_vbrp.
CONTINUE.
ENDIF.
Reading the data from Internal table T_zjpv_rebate(Rebate table)
READ TABLE t_zjpv_rebate WITH KEY
fkart = t_vbrk-fkart_rl
BINARY SEARCH.
IF sy-subrc NE 0 OR t_vbrk-fkart_rl EQ c_fkart.
MOVE t_vbrk-kunag TO t_oput-tpcode.
ELSE .
IF t_vbrk-fkart_rl NE c_fkart.
MOVE t_vbrk-kunrg TO t_oput-tpcode.
ENDIF.
ENDIF.
READ TABLE t_zjpv_rebate WITH KEY
fkart = t_vbrk-fkart_rl
BINARY SEARCH.
IF sy-subrc NE 0.
Passing the last 6 values of ZJD_TOUITSUMANTR into product code.
MOVE t_vbrp-zjd_touitsumatnr+3(6) TO t_oput-pcode.
MOVE t_vbrp-zjd_kanamei TO t_oput-pname.
ELSE.
MOVE t_zjpv_rebate-rebate_code+3(6) TO t_oput-pcode.
MOVE t_zjpv_rebate-rebate_name TO t_oput-pname.
ENDIF.
Reading the data from Internal table T_KNA1(Customer Master)
READ TABLE t_kna1 WITH KEY
kunnr = t_oput-tpcode BINARY SEARCH.
IF sy-subrc = 0.
MOVE t_kna1-name1 TO t_oput-tpname1.
MOVE t_kna1-name2 TO t_oput-tpname2.
ENDIF.
Reading the data from Internal table T_vbrp(Billing Documnet: Item)
MOVE t_vbrp-zjd_torihikikubn TO t_oput-zjd_torihikikubn.
Reading the data from Internal table T_KNVV
READ TABLE t_knvv WITH KEY kunnr = t_vbrk-kunrg
vkorg = c_vkorg
vtweg = c_vtweg
spart = c_spart
BINARY SEARCH.
IF sy-subrc EQ 0.
MOVE t_knvv-vkbur TO t_oput-rbcode.
ENDIF.
Reading the data from Internal table T_LIKP (Delivery : Header)
IF t_vbrp-vgtyp = 'J' OR t_vbrp-vgtyp = 'T'.
READ TABLE t_likp WITH KEY
vbeln = t_vbrp-vgbel
BINARY SEARCH.
IF sy-subrc = 0.
MOVE t_likp-kunnr TO t_oput-dcode.
ENDIF.
ENDIF.
Reading the data from Internal table T_KNA1.
READ TABLE t_kna1 WITH KEY kunnr = t_likp-kunnr BINARY SEARCH.
IF sy-subrc = 0 AND NOT t_oput-dcode IS INITIAL.
MOVE t_kna1-name2 TO t_oput-dname.
ENDIF.
*Passing the values from internal table t_vbrk and t_vbrp to
*out put internal table.
MOVE t_vbrk-fkdat TO t_oput-fkdat.
CONCATENATE t_oput-fkdat0(4) '.' t_oput-fkdat4(2) '.'
t_oput-fkdat+6(2) INTO t_oput-fkdat.
MOVE t_vbrk-vbeln TO t_oput-vbeln.
MOVE t_vbrp-posnr TO t_oput-posnr.
MOVE t_vbrp-zzjp_remarks TO t_oput-zzjp_remarks.
*Checking for billing document category.
IF t_vbrk-vbtyp = 'M' OR t_vbrk-vbtyp = 'P' OR t_vbrk-vbtyp = 'S'.
IF t_vbrk-waerk = c_waerk.
t_oput-ctax = t_vbrk-mwsbk * 100.
t_oput-tamnt = t_vbrk-netwr * 100.
t_oput-gtotal = t_oput-ctax + t_oput-tamnt.
ELSE.
t_oput-ctax = t_vbrk-mwsbk .
t_oput-tamnt = t_vbrk-netwr.
t_oput-gtotal = t_oput-ctax + t_oput-tamnt.
ENDIF.
ENDIF.
IF t_vbrk-vbtyp = 'O' OR t_vbrk-vbtyp = 'N' .
IF t_vbrk-waerk = c_waerk.
l_ctax = ( t_vbrk-mwsbk * 100 ) .
*The contents of the consumption tax are converted to display format.
PERFORM F_ALPHA_CONV USING L_CTAX.
CONCATENATE l_sign l_ctax INTO t_oput-ctax.
CONDENSE t_oput-ctax.
l_tamnt = ( t_vbrk-netwr * 100 ).
*The contents of the total amount are converted to display format.
PERFORM F_ALPHA_CONV USING L_TAMNT.
CONCATENATE l_sign l_tamnt INTO t_oput-tamnt.
CONDENSE t_oput-tamnt.
l_gtotal = t_oput-ctax + t_oput-tamnt.
*The contents of the grand total are converted to display format.
PERFORM F_ALPHA_CONV USING L_GTOTAL.
CONCATENATE l_sign l_gtotal INTO t_oput-gtotal.
ELSE.
l_ctax = t_vbrk-mwsbk.
*The contents of the consumption tax are converted to display format.
PERFORM F_ALPHA_CONV USING L_CTAX.
CONCATENATE l_sign l_ctax INTO t_oput-ctax.
l_tamnt = ( t_vbrk-netwr ).
*The contents of the total amount are converted to display format.
PERFORM F_ALPHA_CONV USING L_TAMNT.
CONCATENATE l_sign l_tamnt INTO t_oput-tamnt.
l_gtotal = ( t_oput-ctax + t_oput-tamnt ).
*The contents of the grand total are converted to display format.
PERFORM F_ALPHA_CONV USING L_GTOTAL.
CONCATENATE l_sign l_gtotal INTO t_oput-gtotal.
ENDIF.
ENDIF.
Comparing the volume with given conditions.
IF t_vbrp-fkimg EQ 0.
t_oput-volume = space.
ELSEIF t_vbrp-fkimg NE 0.
IF t_vbrk-vbtyp = 'M' OR t_vbrk-vbtyp = 'P' OR t_vbrk-vbtyp = 'S'.
t_oput-volume = t_vbrp-fkimg.
CALL FUNCTION 'ROUND'
EXPORTING
DECIMALS = 3
input = t_oput-volume
SIGN = ' '
IMPORTING
OUTPUT = t_oput-volume1
EXCEPTIONS
INPUT_INVALID = 1
OVERFLOW = 2
TYPE_INVALID = 3
OTHERS = 4.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
move t_oput-volume1 to t_oput-volume2.
condense t_oput-volume2 no-gaps.
ELSEIF t_vbrk-vbtyp = 'O' OR t_vbrk-vbtyp = 'N'.
t_oput-volume = t_vbrp-fkimg.
CALL FUNCTION 'ROUND'
EXPORTING
DECIMALS = 3
input = t_oput-volume
SIGN = ' '
IMPORTING
OUTPUT = t_oput-volume1
EXCEPTIONS
INPUT_INVALID = 1
OVERFLOW = 2
TYPE_INVALID = 3
OTHERS = 4.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
l_volume = t_oput-volume1.
*The contents of the volume are converted to display format.
PERFORM F_ALPHA_CONV USING L_VOLUME.
CONCATENATE l_sign l_volume INTO t_oput-volume2.
condense t_oput-volume2 no-gaps.
ENDIF.
ENDIF.
*Unit price
IF t_vbrp-fkimg EQ 0.
t_oput-uprice = space.
ELSE.
Reading The data from Internal Table T_KONV(Condition :Transactional)
READ TABLE t_konv WITH KEY knumv = t_vbrk-knumv
kposn = t_vbrp-posnr
kschl = c_kschl
BINARY SEARCH.
IF sy-subrc = 0.
Reading The data from Internal Table T_KONP(Condition : Items)
READ TABLE t_konp WITH KEY
knumh = t_konv-knumh
BINARY SEARCH.
IF sy-subrc = 0.
IF t_konp-konwa = c_konwa.
t_oput-uprice = 100 * t_konp-kbetr.
ELSE.
t_oput-uprice = t_konp-kbetr.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
Caluculating the amount with given conditions
IF t_zjpv_rebate-fkart = t_vbrk-fkart_rl.
t_oput-amount = t_vbrk-netwr.
ELSE.
t_oput-amount = t_vbrp-netwr.
ENDIF.
IF t_vbrk-waerk EQ c_waerk.
t_oput-amount = 100 * t_oput-amount.
ENDIF.
IF t_vbrk-vbtyp ='M' OR t_vbrk-vbtyp = 'P' OR
t_vbrk-vbtyp = 'S'.
ELSE.
IF t_vbrk-vbtyp = 'O' OR t_vbrk-vbtyp = 'N'.
IF t_oput-amount+15(1) = l_sign.
l_amnt = t_oput-amount+0(15).
PERFORM F_ALPHA_CONV USING L_AMNT.
CONCATENATE l_sign l_amnt INTO t_oput-amount.
ELSE.
l_amnt = t_oput-amount.
PERFORM F_ALPHA_CONV USING L_AMNT.
CONCATENATE l_sign l_amnt INTO t_oput-amount.
ENDIF.
ENDIF.
ENDIF.
Reading the data from Internal Table T_ZPV_TORIHIKI
READ TABLE t_zjpv_torihiki WITH KEY
kubun = t_vbrp-zjd_torihikikubn
BINARY SEARCH.
IF sy-subrc = 0.
t_oput-bdgrp = t_zjpv_torihiki-rep_grp.
t_oput-bdgnm = t_zjpv_torihiki-rep_grp_name.
ENDIF.
APPEND t_oput.
Clearing the memory of the internal tables.
CLEAR: t_oput,
t_vbrp,
t_vbrk,
t_kna1,
t_knvv,
t_zjpv_rebate,
t_zjpv_torihiki,
t_likp,
t_konv,
t_konp.
ENDLOOP.
ENDFORM. " f_process_data
&----
*& Form f_output_data
&----
Output formatting
----
FORM f_output_data.
SORT t_oput BY rbcode
tpcode
bdgrp
fkdat
zjd_torihikikubn
vbeln
posnr.
DATA : l_volume(5) TYPE c,
l_ctax(8) TYPE c.
MOVE t_oput-volume TO l_volume.
MOVE t_oput-ctax TO l_ctax.
DATA : l_ctax1(16) ,
l_ctax2(16),
l_vol1(14) ,
l_vol3(8),
l_vol2(14),
l_tamt1(16),
l_tamt2(16),
l_gtotal1(16),
l_gtotal2(16),
l_uprice1(16),
l_uprice2(16),
l_amount1(16) TYPE c,
l_amount2(16) TYPE c,
l_fctax1(16) TYPE c,
l_fctax2(16) TYPE c,
l_ftamt1(16) TYPE c,
l_ftamt2(16) TYPE c,
l_ftotal1(16) TYPE c,
l_ftotal2(16) TYPE c,
l_sign(1) TYPE c VALUE '-'.
CONSTANTS c_minus VALUE '-'.
SORT t_konv BY knumv kposn kschl.
SORT t_oput BY zjd_torihikikubn vbeln posnr.
Printing Final Values.
LOOP AT t_oput.
----
Perform F_FORMAT_SUBTOTAL is used to align the value with the commas
for display purpose.
----
L_CTAX2 = T_OPUT-CTAX.
G_CTAX2 = T_OPUT-CTAX.
PERFORM F_FORMAT_SUBTOTAL USING G_CTAX2
C_CONS_8.
CONDENSE T_OPUT-CTAX.
----
Perform F_FORMAT_SUBTOTAL is used to align the value with the commas
for display purpose.
----
L_TAMT2 = T_OPUT-TAMNT.
G_TAMT2 = T_OPUT-TAMNT.
PERFORM F_FORMAT_SUBTOTAL USING G_TAMT2
C_CONS_10.
CONDENSE T_OPUT-TAMNT.
----
Perform F_FORMAT_SUBTOTAL is used to align the value with the commas
for display purpose.
----
L_GTOTAL2 = T_OPUT-GTOTAL.
G_GTOTAL2 = T_OPUT-GTOTAL.
PERFORM F_FORMAT_SUBTOTAL USING G_GTOTAL2
C_CONS_10.
CONDENSE T_OPUT-GTOTAL.
----
Perform F_FORMAT_SUBTOTAL is used to align the value with the commas
for display purpose.
----
*Volume
IF t_oput-volume >= 99999 OR t_oput-volume <= -99999.
t_oput-volume = space.
ELSE.
l_vol1 = t_oput-volume.
l_vol2 = t_oput-volume.
CONDENSE l_vol1.
CONDENSE l_vol2.
IF l_vol1+0(1) EQ '-'.
REPLACE '-' WITH space INTO l_vol1.
ENDIF.
CONDENSE l_vol1.
WRITE l_vol1 TO g_vol RIGHT-JUSTIFIED.
REPLACE '.' WITH ',' INTO l_vol1.
write :85 l_vol1.
IF NOT g_vol+0(2) IS INITIAL.
g_vol10(2) = g_vol0(2).
g_vol1+2(1) = ','.
ENDIF.
IF NOT g_vol+2(3) IS INITIAL.
g_vol13(3) = g_vol2(3).
ENDIF.
replace '.' with ',' into t_oput-volume.
l_vol2 = t_oput-volume.
IF l_vol2+0(1) EQ '-'.
g_vol2 = g_vol1 .
CONDENSE g_vol2.
CONCATENATE c_minus g_vol2 INTO g_vol2.
ELSE.
g_vol2 = g_vol1 .
CONDENSE g_vol2.
ENDIF.
ENDIF.
L_VOL1 = T_OPUT-VOLUME.
PERFORM F_FORMAT_SUBTOTAL USING L_VOL1
C_CONS_5.
CONDENSE L_VOL1.
Unit Price
IF t_oput-uprice >= 99999999 OR t_oput-uprice <= -99999999.
t_oput-uprice = space.
ELSE.
l_uprice1 = t_oput-uprice .
l_uprice2 = t_oput-uprice.
CONDENSE l_uprice1.
CONDENSE l_uprice2.
IF l_uprice1+0(1) EQ '-'.
REPLACE '-' WITH space INTO l_uprice1.
ENDIF.
CONDENSE l_uprice1.
WRITE l_uprice1 TO g_uprice RIGHT-JUSTIFIED.
IF NOT g_uprice+0(2) IS INITIAL.
g_uprice10(2) = g_uprice0(2).
g_uprice1+2(1) = ','.
ENDIF.
IF NOT g_uprice+2(3) IS INITIAL.
g_uprice13(3) = g_uprice2(3).
g_uprice1+6(1) = ','.
ENDIF.
IF NOT g_uprice+5(3) IS INITIAL.
g_uprice17(3) = g_uprice5(3).
ENDIF.
IF l_uprice2+0(1) EQ '-'.
g_uprice2 = g_uprice1 .
CONDENSE g_uprice2.
CONCATENATE c_minus g_uprice2 INTO g_uprice2.
ELSE.
g_uprice2 = g_uprice1 .
CONDENSE g_uprice2.
ENDIF.
ENDIF.
Amount
IF t_oput-amount >= 99999999 OR t_oput-amount <= -99999999 .
t_oput-amount = space.
ELSE.
l_amount1 = t_oput-amount.
l_amount2 = t_oput-amount.
CONDENSE l_amount1.
CONDENSE l_amount2.
IF l_amount1+0(1) EQ '-'.
REPLACE '-' WITH space INTO l_amount1.
ENDIF.
CONDENSE l_amount1.
WRITE l_amount1 TO g_amount RIGHT-JUSTIFIED.
IF NOT g_amount+0(1) IS INITIAL.
g_amount0(1) = g_amount0(1).
g_amount1+1(1) = ','.
ENDIF.
IF NOT g_amount+1(3) IS INITIAL.
g_amount12(3) = g_amount1(3).
g_amount1+5(1) = ','.
ENDIF.
IF NOT g_amount+4(3) IS INITIAL.
g_amount16(3) = g_amount4(3).
g_amount1+9(1) = ','.
ENDIF.
IF NOT g_amount+7(3) IS INITIAL.
g_amount110(3) = g_amount7(3).
ENDIF.
IF l_amount2+0(1) EQ '-'.
g_amount2 = g_amount1 .
CONDENSE g_amount2.
CONCATENATE c_minus g_amount2 INTO g_amount2.
ELSE.
g_amount2 = g_amount1 .
CONDENSE g_amount2.
ENDIF.
ENDIF.
NEW-PAGE.
MOVE t_oput-tpname1 TO l_tpname1.
MOVE t_oput-tpname2 TO l_tpname2.
MOVE t_oput-bdgnm TO l_bdgnm.
AT NEW bdgrp.
IF t_oput-rbcode CO '*'.
t_oput-rbcode = space.
ENDIF.
IF t_oput-tpcode CO '*'.
t_oput-tpcode = space.
ENDIF.
IF t_oput-tpname1 CO '*'.
t_oput-tpname1 = space.
ENDIF.
IF t_oput-tpname2 CO '*'.
t_oput-tpname2 = space.
ENDIF.
IF t_oput-bdgnm CO '*'.
t_oput-bdgnm = space.
ENDIF.
PERFORM f_write_heading.
ENDAT.
AT NEW vbeln.
IF sy-linno = 35 OR sy-linno = 1.
NEW-PAGE.
PERFORM f_write_heading.
WRITE:/6 t_oput-fkdat , 18 t_oput-dcode+3(7) ,
28 t_oput-vbeln+2(8) ,
37 t_oput-dname+0(20) .
ELSE.
WRITE:/6 t_oput-fkdat , 18 t_oput-dcode+3(7) ,
28 t_oput-vbeln+2(8) ,
37 t_oput-dname+0(20) .
ENDIF.
ENDAT.
WRITE:/6 t_oput-fkdat, 18 t_oput-dcode+3(7),
28 t_oput-vbeln+2(8),
37 t_oput-dname+0(20).
IF sy-linno = 35 OR sy-linno = 1.
NEW-PAGE.
PERFORM f_write_heading.
CONDENSE L_VOL1 NO-GAPS.
MOVE l_vol1 TO l_vol3.
WRITE:/6 t_oput-fkdat , 18 t_oput-dcode+3(7) ,
28 t_oput-vbeln+2(8) ,
37 t_oput-dname+0(20) .
WRITE:/39 t_oput-pcode+3(6) ,
50 t_oput-pname+0(25) ,
79 t_oput-zjd_torihikikubn ,
85 t_oput-volume2+0(8) RIGHT-JUSTIFIED,
93 g_uprice2 RIGHT-JUSTIFIED,
104 g_amount2 RIGHT-JUSTIFIED.
ELSE.
WRITE:/39 t_oput-pcode+3(6) ,
50 t_oput-pname+0(25) ,
79 t_oput-zjd_torihikikubn ,
85 t_oput-volume2+0(8) RIGHT-JUSTIFIED ,
93 g_uprice2 RIGHT-JUSTIFIED,
104 g_amount2 RIGHT-JUSTIFIED.
ENDIF.
AT END OF vbeln.
IF t_oput-zzjp_remarks CO '*'.
t_oput-zzjp_remarks = space.
ENDIF.
SKIP 1.
IF sy-linno = 35 OR sy-linno = 1.
NEW-PAGE.
PERFORM f_write_heading.
WRITE:/6 t_oput-fkdat , 18 t_oput-dcode+3(7) ,
28 t_oput-vbeln+2(8) ,
37 t_oput-dname+0(20) .
WRITE:/64 'v'(t04) ,
104 g_tamt2 RIGHT-JUSTIFIED,
104 g_tamt2+0(14) RIGHT-JUSTIFIED,
119 g_ctax2 RIGHT-JUSTIFIED,
119 g_ctax2+0(11) RIGHT-JUSTIFIED,
132 g_gtotal2+0(14) RIGHT-JUSTIFIED,
132 g_gtotal2 RIGHT-JUSTIFIED,
147 t_oput-zzjp_remarks .
ELSE.
WRITE:/64 'v'(t04) ,
104 g_tamt2 RIGHT-JUSTIFIED,
104 g_tamt2+0(14) RIGHT-JUSTIFIED,
119 g_ctax2+0(11) RIGHT-JUSTIFIED,
119 g_ctax2 RIGHT-JUSTIFIED,
132 g_gtotal2+0(14) RIGHT-JUSTIFIED,
132 g_gtotal2 RIGHT-JUSTIFIED,
147 t_oput-zzjp_remarks .
ENDIF.
condense t_oput-tamnt no-gaps.
condense t_oput-ctax no-gaps.
condense t_oput-gtotal no-gaps.
g_grand_total = g_grand_total + l_tamt2.
g_middle_val = g_middle_val + l_ctax2.
g_net_total = g_net_total + l_gtotal2.
CLEAR: g_tamt2,g_ctax2,g_gtotal2.
ENDAT.
When ever changes in Regulating Branch code ,Sold to Party code ,
and billing doc group, New page would be triggered.
AT END OF bdgrp.
SKIP 1.
PERFORM f_format_value USING g_grand_total.
PERFORM f_format_value USING g_middle_val.
PERFORM f_format_value USING g_net_total.
MOVE g_grand_total TO g_grand_total1.
MOVE g_middle_val TO g_middle_val1.
MOVE g_net_total TO g_net_total1.
condense g_middle_val no-gaps.
IF sy-linno = 35 OR sy-linno = 1.
NEW-PAGE.
PERFORM f_write_heading.
WRITE:/64 'v'(t05) ,
102 g_grand_total1 RIGHT-JUSTIFIED, "G_FTAMT3 COLOR 6,
119 g_middle_val1 RIGHT-JUSTIFIED, "G_FCTAX3 COLOR 6,
130 g_net_total1 RIGHT-JUSTIFIED. "G_FTOTAL3 COLOR 6.
ELSE.
WRITE:/64 'v'(t05) ,
102 g_grand_total RIGHT-JUSTIFIED, "G_FTAMT3 COLOR 6,
119 g_middle_val1 RIGHT-JUSTIFIED, "G_FCTAX3 COLOR 6,
130 g_net_total RIGHT-JUSTIFIED. "G_FTOTAL3 COLOR 6.
ENDIF.
CLEAR g_grand_total.
CLEAR g_net_total.
CLEAR g_middle_val.
CLEAR g_middle_val1.
NEW-PAGE.
ENDAT.
CLEAR g_ctax2.
CLEAR : l_ctax1,l_ctax2 , g_ctax , g_ctax1.
CLEAR g_vol2.
CLEAR : l_vol1,l_vol2 , g_vol , g_vol1.
CLEAR g_tamt2.
CLEAR : l_tamt1,l_tamt2 , g_tamt , g_tamt1.
CLEAR g_gtotal2.
CLEAR:l_gtotal1,l_gtotal2 , g_gtotal , g_gtotal1.
CLEAR g_uprice2.
CLEAR:l_uprice1,l_uprice2 , g_uprice , g_uprice1.
CLEAR g_amount2.
CLEAR:l_amount2,l_amount1 , g_amount , g_amount1.
clear : g_ftotal,g_ftotal1,g_ftotal2,l_ftotal1,l_ftotal2.
ENDLOOP.
Page Break used for 'END OF REPORT'
g_skip = sy-linct - sy-linno - 1.
SKIP g_skip.
WRITE:/65 ' END OF REPORT'.
ENDFORM. " f_output_data
&----
*& Form f_format_value
&----
text
----
-->P_G_GRAND_TOTAL text
----
FORM f_format_value USING p_value.
DATA: l_temp(16) TYPE c.
DATA: l_length TYPE i.
DATA: l_offset TYPE i.
*condense p_value no-gaps.
l_length = strlen( p_value ).
l_offset = l_length - 1.
IF p_value+l_offset(1) = '-'.
l_temp = p_value+0(l_offset).
CONDENSE l_temp NO-GAPS.
ELSE.
l_temp = p_value.
CONDENSE l_temp NO-GAPS.
ENDIF.
CONDENSE p_value NO-GAPS.
l_length = strlen( p_value ).
l_offset = l_length - 1.
CASE l_length.
WHEN 1.
IF p_value+l_offset(1) = '-'.
WRITE l_temp TO l_temp USING EDIT MASK '_'.
CONCATENATE p_value+l_offset(1) l_temp INTO p_value.
ELSE.
WRITE l_temp TO p_value USING EDIT MASK '_'.
ENDIF.
WHEN 2.
IF p_value+l_offset(1) = '-'.
WRITE l_temp TO l_temp USING EDIT MASK '_'.
CONCATENATE p_value+l_offset(1) l_temp INTO p_value.
ELSE.
WRITE l_temp TO p_value USING EDIT MASK '__'.
ENDIF.
WHEN 3.
IF p_value+l_offset(1) = '-'.
WRITE l_temp TO l_temp USING EDIT MASK '__'.
CONCATENATE p_value+l_offset(1) l_temp INTO p_value.
ELSE.
WRITE l_temp TO p_value USING EDIT MASK '___'.
ENDIF.
WHEN 4.
IF p_value+l_offset(1) = '-'.
WRITE l_temp TO l_temp USING EDIT MASK '___'.
CONCATENATE p_value+l_offset(1) l_temp INTO p_value.
ELSE.
WRITE l_temp TO p_value USING EDIT MASK '_,___'.
ENDIF.
WHEN 5.
IF p_value+l_offset(1) = '-'.
WRITE l_temp TO l_temp USING EDIT MASK '_,___'.
CONCATENATE p_value+l_offset(1) l_temp INTO p_value.
ELSE.
WRITE l_temp TO p_value USING EDIT MASK '__,___'.
ENDIF.
WHEN 6.
IF p_value+l_offset(1) = '-'.
WRITE l_temp TO l_temp USING EDIT MASK '__,___'.
CONCATENATE p_value+l_offset(1) l_temp INTO p_value.
ELSE.
WRITE l_temp TO p_value USING EDIT MASK '___,___'.
ENDIF.
WHEN 7.
IF p_value+l_offset(1) = '-'.
WRITE l_temp TO l_temp USING EDIT MASK '___,___'.
CONCATENATE p_value+l_offset(1) l_temp INTO p_value.
ELSE.
WRITE l_temp TO p_value USING EDIT MASK '_,___,___'.
ENDIF.
WHEN 8.
IF p_value+l_offset(1) = '-'.
WRITE l_temp TO l_temp USING EDIT MASK '_,___,___'.
CONCATENATE p_value+l_offset(1) l_temp INTO p_value.
ELSE.
WRITE l_temp TO p_value USING EDIT MASK '__,___,___'.
ENDIF.
WHEN 9.
IF p_value+l_offset(1) = '-'.
WRITE l_temp TO l_temp USING EDIT MASK '__,___,___'.
CONCATENATE p_value+l_offset(1) l_temp INTO p_value.
ELSE.
WRITE l_temp TO p_value USING EDIT MASK '___,___,___'.
ENDIF.
WHEN 10.
IF p_value+l_offset(1) = '-'.
WRITE l_temp TO l_temp USING EDIT MASK '___,___,___'.
CONCATENATE p_value+l_offset(1) l_temp INTO p_value.
ELSE.
WRITE l_temp TO p_value USING EDIT MASK '_,___,___,___'.
ENDIF.
WHEN OTHERS.
p_value = space.
ENDCASE.
ENDFORM. " f_format_value
&----
*& Form f_write_heading
&----
text
----
--> p1 text
<-- p2 text
----
FORM f_write_heading.
WRITE:/ t_oput-rbcode. "COLOR 1. " Regulating Branch code
WRITE:/188 'P.',190 sy-pagno . " Page number
WRITE:/6 T_OPUT-TPNAME1+0(30) , " Trad part name1
43 T_OPUT-TPCODE+3(7) , " Trading Part code
108 T_OPUT-BDGNM+0(8) . "Billing document
WRITE:/6 l_tpname1+0(30) , " Trad part name1
43 t_oput-tpcode+3(7) , " Trading Part code
108 l_bdgnm+0(8) . "Billing document
WRITE:/6 l_tpname2+0(30) , " Trad part name2
WRITE:/6 T_OPUT-TPNAME2+0(30) , " Trad part name2
180 r_bdate-low+0(4) , " Date(Ranges)
186 r_bdate-low+4(2) ,
190 r_bdate-low+6(2) .
WRITE:/180 r_bdate-high+0(4),
186 r_bdate-high+4(2),
190 r_bdate-high+6(2).
SKIP 2.
CLEAR: l_tpname1,l_tpname2,l_bdgnm.
ENDFORM. " f_write_heading
&----
*& Form f_format_subtotal
&----
text
----
-->P_VALUE
-->P_LENGTH
----
FORM f_format_subtotal USING p_value
p_length.
DATA: l_temp(16) TYPE c.
DATA: l_length TYPE i.
CONDENSE p_value NO-GAPS.
l_length = strlen( p_value ).
IF p_value+0(1) = '-'.
l_temp = p_value+1.
l_length = l_length - 1.
CONDENSE l_temp NO-GAPS.
ELSE.
l_temp = p_value.
CONDENSE l_temp NO-GAPS.
ENDIF.
CASE l_length.
WHEN 1.
IF p_value+0(1) = '-'.
WRITE l_temp TO l_temp USING EDIT MASK '_'.
CONCATENATE p_value+0(1) l_temp INTO p_value.
ELSE.
WRITE l_temp TO p_value USING EDIT MASK '_'.
ENDIF.
WHEN 2.
IF p_value+0(1) = '-'.
WRITE l_temp TO l_temp USING EDIT MASK '__'.
CONCATENATE p_value+0(1) l_temp INTO p_value.
ELSE.
WRITE l_temp TO p_value USING EDIT MASK '__'.
ENDIF.
WHEN 3.
IF p_value+0(1) = '-'.
WRITE l_temp TO l_temp USING EDIT MASK '___'.
CONCATENATE p_value+0(1) l_temp INTO p_value.
ELSE.
WRITE l_temp TO p_value USING EDIT MASK '___'.
ENDIF.
WHEN 4.
IF p_value+0(1) = '-'.
WRITE l_temp TO l_temp USING EDIT MASK '_,___'.
CONCATENATE p_value+0(1) l_temp INTO p_value.
ELSE.
WRITE l_temp TO p_value USING EDIT MASK '_,___'.
ENDIF.
WHEN 5.
IF p_length = 5.
p_value = space.
ELSE.
IF p_value+0(1) = '-'.
WRITE l_temp TO l_temp USING EDIT MASK '__,___'.
CONCATENATE p_value+0(1) l_temp INTO p_value.
ELSE.
WRITE l_temp TO p_value USING EDIT MASK '__,___'.
ENDIF.
ENDIF.
WHEN 6.
IF p_value+0(1) = '-'.
WRITE l_temp TO l_temp USING EDIT MASK '___,___'.
CONCATENATE p_value+0(1) l_temp INTO p_value.
ELSE.
WRITE l_temp TO p_value USING EDIT MASK '___,___'.
ENDIF.
WHEN 7.
IF p_value+0(1) = '-'.
WRITE l_temp TO l_temp USING EDIT MASK '_,___,___'.
CONCATENATE p_value+0(1) l_temp INTO p_value.
ELSE.
WRITE l_temp TO p_value USING EDIT MASK '_,___,___'.
ENDIF.
WHEN 8.
IF p_length = 8.
p_value = space.
ELSE.
IF p_value+0(1) = '-'.
WRITE l_temp TO l_temp USING EDIT MASK '__,___,___'.
CONCATENATE p_value+0(1) l_temp INTO p_value.
ELSE.
WRITE l_temp TO p_value USING EDIT MASK '__,___,___'.
ENDIF.
ENDIF.
WHEN 9.
IF p_value+0(1) = '-'.
WRITE l_temp TO l_temp USING EDIT MASK '___,___,___'.
CONCATENATE p_value+0(1) l_temp INTO p_value.
ELSE.
WRITE l_temp TO p_value USING EDIT MASK '___,___,___'.
ENDIF.
WHEN 10.
IF p_length = 10.
p_value = space.
ELSE.
IF p_value+0(1) = '-'.
WRITE l_temp TO l_temp USING EDIT MASK '_,___,___,___'.
CONCATENATE p_value+0(1) l_temp INTO p_value.
ELSE.
WRITE l_temp TO p_value USING EDIT MASK '_,___,___,___'.
ENDIF.
ENDIF.
WHEN OTHERS.
p_value = space.
ENDCASE.
ENDFORM. " F_FORMAT_VALUE
&----
*& Form F_ALPHA_CONV
&----
text
----
-->L_VALUE
----
FORM F_ALPHA_CONV USING L_VALUE.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
EXPORTING
INPUT = L_VALUE
IMPORTING
OUTPUT = L_VALUE.
ENDFORM. "F_ALPHA_CONV
Reward Points if it is helpful
Thanks
Seshu