Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

Need help in the Report Program!!!

Former Member
0 Likes
1,613

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>

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
1,224

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

5 REPLIES 5
Read only

Former Member
0 Likes
1,224

Were you given any logical database, structure to develop this report

Read only

0 Likes
1,224

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

Read only

Former Member
0 Likes
1,225

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

Read only

0 Likes
1,224

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

Read only

Former Member
0 Likes
1,224

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