Fetching a transaction's output in the report
Hi,
I have to calculate stock on a particular date my report.
Transaction MB5B calculates stock on a particular date.
How can i pass the mandatory parameters to MB5B and fetch its output in the report itself?
Message was edited by: Nishant Gupta
Hi !
There's a little more help.
These:
SELECTION-SCREEN BEGIN OF BLOCK Database-selection
WITH FRAME TITLE TEXT-001.
Text-001: Datenbankabgrenzungen
SELECT-OPTIONS: MATNR FOR MARD-MATNR MEMORY ID MAT
MATCHCODE OBJECT MAT1,
*{ INSERT PA9K013121 1
MFRPN FOR MARA-MFRPN MEMORY ID MPN
MATCHCODE OBJECT HTN,
*} INSERT
BUKRS FOR T001-BUKRS MEMORY ID BUK,
WERKS FOR T001W-WERKS MEMORY ID WRK,
LGORT FOR T001L-LGORT,
CHARG FOR MCHB-CHARG,
BWTAR FOR MBEW-BWTAR,
BWART FOR MSEG-BWART.
PARAMETERS SOBKZ LIKE MSEG-SOBKZ.
SELECTION-SCREEN SKIP.
SELECT-OPTIONS: DATUM FOR MKPF-BUDAT NO-EXTENSION.
Datumsintervall für Selektion
SELECTION-SCREEN END OF BLOCK Database-selection.
is the selection screen of the RM07MLBD.
All these parameters (i.e .MATNR, CHARG, BWART) can be passed with the submit command.
For example (where the p_... Parameters are parametes of YOUR report !).
SUBMIT RM07MLBD
with matnr in p_matnr
with bwart in p_bwart
with charg in p_cahrg
and return
exporting list to memory.
The import if the list is a bit more dificult.
It's basically like this:
DATA LISTTAB LIKE LISTOBJECT
OCCURS 1.
CALL FUNCTION 'LIST_FROM_MEMORY' TABLES LISTOBJECT = LISTTAB.
Then the list will be in the table LISOBJECT.
For more info see the docu of 'LIST_FROM_MEMORY'
Regards
Rainer
Similar Messages
-
How to hide the specified rows in the output of the report?
Hello all,
I have a requirement where i have to hide some of the lines (<b>initial 6 lines</b> that is <b>6 rows</b>) in the output of the report.
How would I go about doing this?
Thanks for you time.Hello Sai,
I believe this is query output ( e.g., )
Country Sales
India $100
USA $200
Germany $300
You want to hide the line Germany $300
Case 1:
If you can change the query, Filter on Country and exclude Germany
Case 2:
If you can not change the query, use url appending and filter out Germany
Check webapi reference for the exact commands
Case 3:
Only if you are using the NW2004s front-end, Report designer will be available for you. In this, you can delete the rows that you do not want and publish in web.
Case 1 and 2 solutions are available in older versions of front-end as well.
Regards,
Sheik Bilal -
How to get the output of the report in pdf format
how to get the output of the report in pdf format?
Thanks in advance,
madan.Refer these links
http://www.sap-img.com/bc037.htm
http://www.members.tripod.com/abap4/Save_Report_Output_to_a_PDF_File.html
CONVERT_ABAPSPOOLJOB_2_PDF FM convert abap spool output to PDF -
Print the user id in output of the report for tcode MB52.
Dear friends,
I want to print the User ID in the output of the report MB52. is it possible in std reports.
thanks in advance,Hello Apraveen,
It is not advisable to change any standard SAP program instead you can go for an enhancement approach.
What you can do is search for USER EXITS or BAdi (Business Add-Ins) for the standard program of MB52.
Now, check the execution of these user-exits or BAdi and place your code.
Hope this solves your problem.
Thanks & Regards,
Tarun Gambhir -
Getting dump when using do_sum in alv field cat in the output of the report
Dear Freinds,
Iam getting the alv report when i click on the segma field (Sum) on my salary
field iam getting dump. and also if i try to print my alv output iam getting dump , only
happening to my custom report.
i have used the following code pleae correct me .
This perform is used for Layout settings
perform st_layout_build using gs_layout.
form st_layout_build using st_ls_layout type slis_layout_alv.
st_ls_layout-no_input = 'X'.
st_ls_layout-colwidth_optimize = 'X'.
st_ls_layout-zebra = 'X'.
st_ls_layout-detail_popup = 'X'.
endform. " st_layout_build
Field Catalog details
perform st_fieldcat_init changing gt_fieldcat.
form st_fieldcat_init changing fp_i_fieldcat type slis_t_fieldcat_alv.
clear ls_fieldcat.
ls_fieldcat-col_pos = 1.
ls_fieldcat-fieldname = 'ORGUNIT'.
ls_fieldcat-seltext_l = 'Orgunit'.
ls_fieldcat-no_out = 'X'.
append ls_fieldcat to fp_i_fieldcat.
clear ls_fieldcat.
ls_fieldcat-col_pos = 2.
ls_fieldcat-fieldname = 'ORGTEXT'.
ls_fieldcat-seltext_l = 'Orgdesc'.
ls_fieldcat-no_out = 'X'.
append ls_fieldcat to fp_i_fieldcat.
clear ls_fieldcat.
ls_fieldcat-fieldname = 'SALARY'.
ls_fieldcat-seltext_l = 'Salary'.
ls_fieldcat-col_pos = 3.
ls_fieldcat-outputlen = 15.
ls_fieldcat-do_sum = 'X'.
ls_fieldcat-datatype = 'CURR'. "CURR
append ls_fieldcat to fp_i_fieldcat.
endform.
Variant
perform st_variant_init using gs_variant g_repid.
form st_variant_init using st_gs_variant type disvariant
st_repid like sy-repid.
clear st_gs_variant.
st_gs_variant-report = st_repid.
endform. " st_variant_init
g_repid = sy-repid.
perform st_comment_build using gt_list_top_of_page[].
form st_comment_build using st_lt_top_of_page type slis_t_listheader.
data: ls_line type slis_listheader.
Listenüberschrift: Typ H
clear ls_line.
ls_line-typ = 'H'.
LS_LINE-KEY: not used for this type
ls_line-info = text-000.
append ls_line to st_lt_top_of_page.
endform. " st_comment_build
call function 'REUSE_ALV_GRID_DISPLAY'
exporting
i_buffer_active = 'X'
i_callback_top_of_page = 'TOP_OF_PAGE'
i_callback_program = g_repid
is_layout = gs_layout
it_fieldcat = gt_fieldcat[]
i_structure_name = 'i_final' "c_i_final "'objec'
i_save = g_save
is_variant = gs_variant
tables
t_outtab = fp_i_pyrol_final
exceptions
program_error = 1
others = 2.
if sy-subrc ne 0.
message e018. " Displaying the ALV GRID has failed
endif.
Please could any one let me know why iam getting dump when iam clicking for total
on my salary field.
Regards
lathaDear Chandu,
my code iam giving in details
types : begin of ty_output_data,
staffno type pernr_d,
staffname type emnam,
grade type stell,
orgunit type orgeh,
orgtext type hr_mcstext,
psgroup type trfgr, " Pay Scale Group
salary type maxbt, "PAD_AMT7S,
rrefunded type pad_amt7s,
leavepay type pad_amt7s,
mshortfal type pad_amt7s, " Medical Shortfall
echkshfal type pad_amt7s, " Execute checkup shortfall
ofindeduc type pad_amt7s, " Other Finance Deduction
mtyprem type pad_amt7s, " maternity premium
vpbonus type pad_amt7s, " VP/Bonus
gratuity type pad_amt7s, " Gratuity
vpay type pad_amt7s, " Variable pay
mallowance type pad_amt7s, " Meal Allowance
overtime type pad_amt7s, " overtime
other type pad_amt7s, " OTHER
pfundeecon type pad_amt7s, " PFund Employee's Contribution
banktrnsfer type pad_amt7s, " Bank Transfer
count type i,
end of ty_output_data.
data : i_final type standard table of ty_output_data.
iam getting all my data in the internal table I_FINAL.
perform get_final_alv using i_final.
form get_final_alv using fp_i_pyrol_final type ty_t_output_data.
*local variable declarations
data : l_v_idx type sy-tabix.
*local work areas
data : l_wa_final type ty_output_data.
g_save = 'A'.
This perform is used for Layout settings
perform st_layout_build using gs_layout.
Field Catalog details
perform st_fieldcat_init changing gt_fieldcat.
Variant
perform st_variant_init using gs_variant g_repid.
g_repid = sy-repid.
perform st_comment_build using gt_list_top_of_page[].
if not fp_i_pyrol_final is initial.
delete adjacent duplicates from fp_i_pyrol_final comparing all fields.
call function 'REUSE_ALV_GRID_DISPLAY'
exporting
i_buffer_active = 'X'
i_callback_top_of_page = 'TOP_OF_PAGE'
i_callback_program = g_repid
is_layout = gs_layout
it_fieldcat = gt_fieldcat[]
i_structure_name = 'i_final' "c_i_final "'objec'
i_save = g_save
is_variant = gs_variant
tables
t_outtab = fp_i_pyrol_final
exceptions
program_error = 1
others = 2.
if sy-subrc ne 0.
message e018. " Displaying the ALV GRID has failed
endif.
endif.
endform. " get_final_alv
form st_layout_build using st_ls_layout type slis_layout_alv.
st_ls_layout-no_input = 'X'.
st_ls_layout-colwidth_optimize = 'X'.
st_ls_layout-zebra = 'X'.
st_ls_layout-detail_popup = 'X'.
endform. " st_layout_build
form st_fieldcat_init changing fp_i_fieldcat type slis_t_fieldcat_alv.
data: ls_fieldcat type slis_fieldcat_alv.
clear ls_fieldcat.
ls_fieldcat-col_pos = 1.
ls_fieldcat-fieldname = 'ORGUNIT'.
ls_fieldcat-seltext_l = 'Orgunit'.
ls_fieldcat-no_out = 'X'.
append ls_fieldcat to fp_i_fieldcat.
clear ls_fieldcat.
ls_fieldcat-col_pos = 2.
ls_fieldcat-fieldname = 'ORGTEXT'.
ls_fieldcat-seltext_l = 'Orgdesc'.
ls_fieldcat-no_out = 'X'.
append ls_fieldcat to fp_i_fieldcat.
clear ls_fieldcat.
ls_fieldcat-col_pos = 5.
ls_fieldcat-fieldname = 'STAFFNAME'.
ls_fieldcat-no_out = 'X'.
ls_fieldcat-seltext_l = 'StaffName'.
append ls_fieldcat to fp_i_fieldcat.
clear ls_fieldcat.
ls_fieldcat-col_pos = 4.
ls_fieldcat-fieldname = 'STAFFNO'.
ls_fieldcat-no_out = 'X'.
ls_fieldcat-seltext_l = 'StaffNo.'.
append ls_fieldcat to fp_i_fieldcat.
clear ls_fieldcat.
ls_fieldcat-col_pos = 6.
ls_fieldcat-fieldname = 'GRADE'.
ls_fieldcat-seltext_l = 'Grade'.
append ls_fieldcat to fp_i_fieldcat.
clear ls_fieldcat.
ls_fieldcat-col_pos = 3.
ls_fieldcat-fieldname = 'COUNT'.
ls_fieldcat-seltext_l = 'Headcount'.
append ls_fieldcat to fp_i_fieldcat.
if the field name is 'Salary' then do a sum on this field.
IF fp_fname = c_betrg.
l_wa_fieldcat-do_sum = c_x.
ENDIF.
NOTE : IAM GETTING PROBLEM IN THE BELOW SALARY.
IAM JUST CHECKING ITSELF NOT ALLOWING ME TO EXECUTE
clear ls_fieldcat.
ls_fieldcat-fieldname = 'SALARY'.
ls_fieldcat-seltext_l = 'Salary'.
ls_fieldcat-col_pos = 7.
ls_fieldcat-outputlen = 20.
ls_fieldcat-do_sum = 'X'.
ls_fieldcat-datatype = 'CURR'. "CURR
append ls_fieldcat to fp_i_fieldcat.
clear ls_fieldcat.
ls_fieldcat-col_pos = 9.
ls_fieldcat-fieldname = 'LEAVEPAY'.
ls_fieldcat-seltext_l = 'Leave Pay'.
append ls_fieldcat to fp_i_fieldcat.
clear ls_fieldcat.
ls_fieldcat-col_pos = 10.
ls_fieldcat-fieldname = 'MSHORTFAL'.
ls_fieldcat-seltext_l = 'Med.Sfall'.
append ls_fieldcat to fp_i_fieldcat.
clear ls_fieldcat.
ls_fieldcat-col_pos = 11.
ls_fieldcat-fieldname = 'ECHKSHFAL'.
ls_fieldcat-seltext_l = 'EX.Chckup.Sfall'.
append ls_fieldcat to fp_i_fieldcat.
clear ls_fieldcat.
ls_fieldcat-col_pos = 12.
ls_fieldcat-fieldname = 'OFINDEDUC'.
ls_fieldcat-seltext_l = 'Oth.Fin.Deduction'.
append ls_fieldcat to fp_i_fieldcat.
clear ls_fieldcat.
ls_fieldcat-col_pos = 13.
ls_fieldcat-fieldname = 'MTYPREM'.
ls_fieldcat-seltext_l = 'Mat.Premium'.
append ls_fieldcat to fp_i_fieldcat.
clear ls_fieldcat.
ls_fieldcat-col_pos = 14.
ls_fieldcat-fieldname = 'VPBONUS'.
ls_fieldcat-seltext_l = 'VP/Bonus'.
append ls_fieldcat to fp_i_fieldcat.
clear ls_fieldcat.
ls_fieldcat-col_pos = 15.
ls_fieldcat-fieldname = 'GRATUITY'.
ls_fieldcat-seltext_l = 'Gratuity'.
append ls_fieldcat to fp_i_fieldcat.
clear ls_fieldcat.
ls_fieldcat-col_pos = 16.
ls_fieldcat-fieldname = 'VPAY'.
ls_fieldcat-seltext_l = 'Variable Pay'.
append ls_fieldcat to fp_i_fieldcat.
clear ls_fieldcat.
ls_fieldcat-col_pos = 17.
ls_fieldcat-fieldname = 'MALLOWANCE'.
ls_fieldcat-seltext_l = 'Meal.Allowance'.
append ls_fieldcat to fp_i_fieldcat.
clear ls_fieldcat.
ls_fieldcat-col_pos = 18.
ls_fieldcat-fieldname = 'OVERTIME'.
ls_fieldcat-seltext_l = 'Overtime'.
append ls_fieldcat to fp_i_fieldcat.
clear ls_fieldcat.
ls_fieldcat-col_pos = 19.
ls_fieldcat-fieldname = 'OTHER'.
ls_fieldcat-seltext_l = 'Other'.
append ls_fieldcat to fp_i_fieldcat.
pfundeecon
clear ls_fieldcat.
ls_fieldcat-col_pos = 20.
ls_fieldcat-fieldname = 'P FUND EMPLOYEES CONTRIBUTION'.
ls_fieldcat-seltext_l = 'P.Fund.Emp.Contrib'.
append ls_fieldcat to fp_i_fieldcat.
clear ls_fieldcat.
ls_fieldcat-col_pos = 21.
ls_fieldcat-fieldname = 'BANKTRNSFER'.
ls_fieldcat-seltext_l = 'Payment'.
append ls_fieldcat to fp_i_fieldcat.
endform. " st_fieldcat_init
form st_variant_init using st_gs_variant type disvariant
st_repid like sy-repid.
clear st_gs_variant.
st_gs_variant-report = st_repid.
endform. " st_variant_init
form st_comment_build using st_lt_top_of_page type slis_t_listheader.
data: ls_line type slis_listheader.
Listenüberschrift: Typ H
clear ls_line.
ls_line-typ = 'H'.
LS_LINE-KEY: not used for this type
ls_line-info = text-000.
append ls_line to st_lt_top_of_page.
endform. " st_comment_build
FORM TOP_OF_PAGE *
form top_of_page.
data: l_i_detailheader type slis_t_listheader.
To get the header for ALV
perform detail_header changing l_i_detailheader.
call function 'REUSE_ALV_COMMENTARY_WRITE'
exporting
it_list_commentary = l_i_detailheader.
endform. "top_of_page
form detail_header changing fp_i_detailheader type slis_t_listheader.
data: l_wa_header type slis_listheader,
l_v_time type slis_edit_mask,
l_v_date type slis_edit_mask,
l_v_abkrs type char5,
l_v_pabrj type char8,
l_v_pagno type char10.
Local Constants
constants: l_c_h type char1 value 'H',
l_c_1 type i value '1',
l_c_edit type char10 value '__.__.____',
l_c_slash type c value '/'. " constant for slash
To display the report Header
l_wa_header-typ = l_c_h.
WRITE sy-repid TO l_wa_header-info LEFT-JUSTIFIED.
write text-014 to l_wa_header-info left-justified.
append l_wa_header to fp_i_detailheader.
clear l_wa_header.
To display the Page no
l_v_pagno = sy-pagno + l_c_1.
l_wa_header-typ = c_s.
l_wa_header-key = text-008. " Page No:
l_wa_header-info = l_v_pagno.
append l_wa_header to fp_i_detailheader.
clear l_wa_header.
To Display the User ID
l_wa_header-typ = c_s.
l_wa_header-key = text-009. " User ID
l_wa_header-info = sy-uname.
append l_wa_header to fp_i_detailheader.
clear l_wa_header.
To Display the Date/Time
l_wa_header-typ = c_s.
l_wa_header-key = text-010. " Date/Time:
l_v_time = sy-uzeit.
l_v_date = sy-datum.
write: sy-uzeit to l_v_time.
write sy-datum to l_v_date using edit mask l_c_edit.
concatenate l_v_date
l_c_slash
l_v_time into l_wa_header-info+0(25) separated by space.
append l_wa_header to fp_i_detailheader.
clear: l_wa_header, l_v_date.
To Display the Report Description
l_wa_header-typ = c_s.
l_wa_header-key = text-011. " Report Description
l_wa_header-info = text-012.
append l_wa_header to fp_i_detailheader.
clear l_wa_header.
append l_wa_header to fp_i_detailheader.
endform. " detail_header
I will be greatful if any one can please help me in removing me the dump.
REGARDS
LATHA. -
Performance Issue-;How to restrict the total output of the report.
Hi Experts
I need your advise to resolve one performance issue in my BI Publisher report.
My report query is extracting more than 80000 records at once. To load these records into the report template it is taking all most 14 to 15 hours. Unfortunately i cannot change my logic to put some more filter to restrict the query output, as this is the requirement from the client.
Is there any way i can restrict my report so that it will extract the first 1000 record and on the event of pressing next it will extract the next 1000 record and so on from the point when it left in last time.
Kindly let me know if you have any solution for this.
Thanks in advance.
Regards
SrikantHi experts...
Any update on this... -
How to restrict material output in the report published in the portal
Hi all,
I am new to BI 7. I have a series of materials that start with the material IDs TR52, RL25, XY56 and son on. Now my user wants to view only the materials that are starting with the ID TR52 when he runs the report from the portal. In the material box when I type in TR I am getting the list of all the materials, the same is happening even when I try TR*. What should I do so that I can restrict the report output only to a particular material ID that my user types in?
Please help.
Thank you.
TR.Hi Friends,
Thank you for the reply.
I tried to exclude the values, but i dont find any chance to exclude them
If i try the same from characteristic restriction, its allowing me to exclude.
Is there any other possibility to restrict these? Please suggest -
Triggering smartform output from the report program
Hi,
I have developed a new report program.The selection screen of the report program is like this.
plant: ________
warehouse: ___________
sheet #: _________ to _________
bay/bin: ___________ to __________
building: ___________ to __________
counter sheet printer: __________
Auditor sheet printer: _________
When the data for sheet#,bay,building, counter sheet printer is given,then the counter sheet smartform has to be output on the screen.
or
When the data for sheet#,bay,building, auditor sheet printer is given,then the auditor sheet smartform has to be output on the screen.
Is it pessible to trigger the smartform from the selection screen of the report.If so can anyone send me a sample code for that.CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
EXPORTING
formname = <smartform name>
IMPORTING
fm_name = v_form_fm
EXCEPTIONS
no_form = 1
no_function_module = 2
OTHERS = 3.
Call Smartfrom to print the document
CALL FUNCTION v_form_fm
EXPORTING
p_compensation = p_comp <--parameter list
p_skill = p_skill
p_deci_auhtority = p_da
TABLES
s_job = s_job <--select option list
s_level = s_level
s_date = s_date
EXCEPTIONS
formatting_error = 1
internal_error = 2
send_error = 3
user_canceled = 4
OTHERS = 5.
declare the paramters of your selection screen in the form interface section of the smartform.
If you have a parameter in teh selection screen then declare it in the smartform as:
P_matnr TYPE matnr (in form interface -
>import)
If you have a select option then
S_LEVEL LIKE <dictionary structure like a range>
this u declare it in the tables section of the form interface. For the select option , the dictionary sructures should be like a range (see RNGE_OBJID as an example). If you dont have a dictionary structure
then u need to declare it in the dictionary.
REWARD IF HELPFUL -
Send the output of the report in a zip format
Hi,
I have a report,
Currently when we run the report we are sending the file in excel format to the external mail id using the FM SO_DOCUMENT_SEND_API1.
But now the requirement is to ZIP the data in the format of an excel form and then send it to the Mail.
If any of you have done with this,
Please help me with a sample code starting from converting to Zip and then sending the mail.
Iam having two versions of SAP 4.7 and ECC 6.0.
Regards,
SasidharHi,
In my report program i have my data in an internal table.
lets say ITAB.
Now we cna send the data from this table easily in amail as an excel attachment using FM SO_DOCUMENT_SEND_API1.
But in our case,
we want our ITAB data to be first converted into an excel format and then convert this into a zip file and send as an attachment.
How cna we cna make use of classes CL_ABAP_ZIP AND CL_DOCUMENT_BCS.
I have checked all th threads as specified by you.
But now where its clear on this.
Can anybody have a sample code for this.
Please help me.
Regards,
sasi -
Output of the report is not displaying based on the layout
Hi,
We are not able to get the report based on the layout. We have found that F4 help is not working for the layout selection, as there are so many layoust mantained for the report.The FM REUSE_ALV_VARIANT_F4 is used to select the variant.But we have checked the table LTDX, there are no lay out is there for this report.hence the out out of the report is always displaying based on one standrd layout.
Kindly guide me to resolve this issue.
Regards,
ArundhatiHi, follow these steps:
1 - Variant on Screen
SELECTION-SCREEN BEGIN OF BLOCK bloco2 WITH FRAME.
PARAMETERS: p_layout LIKE disvariant-variant.
SELECTION-SCREEN END OF BLOCK bloco2.
2 - F4 on field
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_layout.
PERFORM busca_variantes.
AT SELECTION-SCREEN ON p_layout.
IF NOT p_layout IS INITIAL.
PERFORM verifica_variante.
ENDIF.
3 - Functions for F4
3.1 Form busca_variantes
FORM busca_variantes.
DATA: variant_exit(01) TYPE c,
variante LIKE disvariant.
variante-report = sy-repid.
CALL FUNCTION 'REUSE_ALV_VARIANT_F4'
EXPORTING
is_variant = variante
i_save = 'A'
IMPORTING
e_exit = variant_exit
es_variant = v_variante
EXCEPTIONS
not_found = 1
program_error = 2
OTHERS = 3.
IF sy-subrc = 0.
IF variant_exit = space.
p_layout = v_variante-variant.
ENDIF.
ENDIF.
ENDFORM. " busca_variantes
3.2 - FORM verifica_variante
FORM verifica_variante.
v_variante-report = sy-repid.
v_variante-variant = p_layout.
CALL FUNCTION 'REUSE_ALV_VARIANT_EXISTENCE'
EXPORTING
i_save = 'A'
CHANGING
cs_variant = v_variante
EXCEPTIONS
wrong_input = 1
not_found = 2
program_error = 3
OTHERS = 4.
IF sy-subrc 0.
MESSAGE w368(00) WITH p_layout ' não é uma variante válida'.
CLEAR p_layout.
ENDIF.
ENDFORM. " verifica_variante
4 - Calling the variant on reuse function
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
is_variant = v_variante
5 - Global DATA
DATA: v_variante LIKE disvariant. -
Group wise Averages to be output on the report
I have a report where i want to have averages user wise
For example
Student Score
A 10
A 20
Average 15
B 20
B 20
Average 20
Grand Average 17.5
I need to implement the averages, is there a way to do it?Hi Keith
DJ has some very good suggestions, but the first thing we want to do is to make sure the report works in the designer as you want it to. Reading this thread, I'm a bit unsure if the report does actually work in the designer - can you please comment on that?
If it does, I like to go from simple as far as coding is concerned. In this case, that would mean not worrying about the parameters or logon and let the report engine do the heavy lifting for us:
Create a new project. Throw a CR viewer on a form and add one line of code in page load:
CrystalReportViewer1.ReportSource = <path to the report>
The engine will prompt for the db logon as well as the parameters. Fill those out. The report should then display on the screen.
From here we can get fancy and add DB logon code as well as the parameter code.
- Ludek
Senior Support Engineer AGS Product Support, Global Support Center Canada
Follow us on Twitter -
Adding Field to the output of the Report
Hello experts
I have a program like following, I would like to add a field (Customer purchase order from order header)vbkd-bstkd to the output, I tried to add some code(check the highlightened portion) but it doesnt work(no values) can anyone help in correcting the code so that i can execute directly,
Iam not full time ABAPer so could you please highlight the code you corrected(added),
Thanks
SP
Global structure of list
TYPE-POOLS: slis.
TABLES: likp,
lips,
vbfa,
kssk,
klah,
ausp,
cabn,
vbak,
mara,
vbrk,
ser01,
vbpa,
vbrp,
nast,
zseri,
ltap,
pa0001,
kna1,
objk,
viqmel,
viqmma.
TYPES: BEGIN OF i_delivery,
vbeln LIKE likp-vbeln,
posnr LIKE lips-posnr,
kunnr LIKE likp-kunnr,
kunag LIKE likp-kunag,
vkorg LIKE vbak-vkorg,
matnr LIKE lips-matnr,
lfart LIKE likp-lfart,
arktx LIKE vbap-arktx,
vgbel LIKE lips-vgbel,
vgpos LIKE lips-vgpos,
pstyv LIKE lips-pstyv,
wadat TYPE likp-wadat_ist,
lfdat TYPE likp-lfdat,
prodh TYPE lips-prodh,
lfimg TYPE lips-lfimg,
vkbur TYPE lips-vkbur,
werks TYPE lips-werks,
vkgrp TYPE lips-vkgrp,
mvgr1 TYPE lips-mvgr1,
sernr LIKE equi-sernr,
sernp LIKE equi-sernr,
equnr LIKE equi-equnr,
kttxt LIKE qpct-kurztext,
fkimg LIKE vbrp-fkimg,
bstnk LIKE vbak-bstnk,
vbelv LIKE lips-vgbel,
posnv LIKE lips-posnv,
uecha LIKE lips-uecha,
ernam LIKE vbak-ernam,
erdat LIKE vbak-erdat,
serail LIKE lips-serail,
anzsn LIKE lips-anzsn,
auart LIKE vbak-auart ,
netwr LIKE vbap-netwr,
fstno LIKE vbpa-pernr,
fstnm LIKE pa0001-ename,
ename LIKE pa0001-ename,
qname LIKE ltap-qname,
name1 LIKE kna1-name1,
name3 LIKE kna1-name2,
pernr LIKE vbpa-pernr,
aufnr LIKE viqmel-aufnr,
qmnum LIKE viqmel-qmnum,
mngrp LIKE viqmma-mngrp,
qmcod LIKE viqmel-qmcod,
qmcol LIKE viqmma-mncod,
cotxt(20),
invvalue LIKE vbrp-netwr,
posnn LIKE vbfa-posnn,
bstkd LIKE vbkd-bstkd,
END OF i_delivery.
Global structure of list
*/ Selection and Input Parameters
SELECTION-SCREEN BEGIN OF BLOCK block2 WITH FRAME TITLE text-003.
SELECT-OPTIONS: s_vkorg FOR likp-vkorg NO INTERVALS.
SELECT-OPTIONS: s_vbeln FOR likp-vbeln,
s_lfart FOR likp-lfart,
s_kunnr FOR likp-kunnr,
s_erdat FOR likp-erdat,
s_wadat FOR likp-wadat_ist,
s_werks FOR lips-werks,
s_matnr FOR lips-matnr,
s_prodh FOR lips-prodh,
s_qmnum FOR viqmel-qmnum.
SELECTION-SCREEN END OF BLOCK block2.
SELECTION-SCREEN BEGIN OF BLOCK block4 WITH FRAME TITLE text-002.
SELECT-OPTIONS: s_vbelv FOR vbak-vbeln,
s_auart FOR vbak-auart.
SELECTION-SCREEN END OF BLOCK block4.
PARAMETERS: p_vari LIKE disvariant-variant.
RANGES: r_vbeln FOR likp-vbeln.
DATA: gt_fieldcat TYPE slis_t_fieldcat_alv.
DATA: gt_outtab TYPE i_delivery OCCURS 0 WITH HEADER LINE,
rt_outtab1 TYPE i_delivery OCCURS 0 WITH HEADER LINE,
i_nast TYPE nast OCCURS 0 WITH HEADER LINE,
gt_list_top_of_page TYPE slis_t_listheader,
gt_events TYPE slis_t_event,
gc_formname_top_of_page TYPE slis_formname VALUE 'TOP_OF_PAGE'.
DATA: g_repid LIKE sy-repid,
g_count LIKE sy-tabix.
DATA: BEGIN OF i_serial OCCURS 0,
obknr TYPE ser01-obknr,
lief_nr TYPE ser01-lief_nr,
posnr TYPE ser01-posnr,
anzsn TYPE ser01-anzsn,
END OF i_serial.
DATA: BEGIN OF i_object_numbers OCCURS 0,
obknr TYPE objk-obknr,
obzae TYPE objk-obzae,
sernr TYPE objk-sernr,
equnr TYPE objk-equnr,
matnr TYPE objk-matnr,
taser TYPE objk-taser,
END OF i_object_numbers.
DATA: g_save(1) TYPE c,
g_default(1) TYPE c,
g_exit(1) TYPE c,
gx_variant LIKE disvariant,
g_variant LIKE disvariant.
DATA: g_mnkat LIKE viqmma-mnkat,
g_mngrp LIKE viqmma-mngrp,
g_atinn LIKE ausp-atinn.
DATA: gt_vbkd TYPE TABLE OF vbkd WITH HEADER LINE.
Initialization fieldcatalog
INITIALIZATION.
g_repid = sy-repid.
PERFORM fieldcat_init USING gt_fieldcat[].
MOVE: 'I' TO s_vkorg-sign,
'EQ' TO s_vkorg-option,
'5090' TO s_vkorg-low.
APPEND s_vkorg.
MOVE: 'I' TO s_lfart-sign,
'EQ' TO s_lfart-option,
'LF' TO s_lfart-low.
APPEND s_lfart.
g_save = 'A'.
PERFORM variant_init.
Get default variant
gx_variant = g_variant.
CALL FUNCTION 'REUSE_ALV_VARIANT_DEFAULT_GET'
EXPORTING
i_save = g_save
CHANGING
cs_variant = gx_variant
EXCEPTIONS
not_found = 2.
IF sy-subrc = 0.
p_vari = gx_variant-variant.
ENDIF.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_vari.
PERFORM f4_for_variant.
AT SELECTION-SCREEN.
PERFORM pai_of_selection_screen.
Start of Selection
START-OF-SELECTION.
PERFORM e03_eventtab_build USING gt_events[].
PERFORM select_data TABLES gt_outtab.
Display list
END-OF-SELECTION.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_background_id = 'ALV_BACKGROUND'
i_callback_user_command = 'USER_COMMAND'
is_variant = g_variant
i_save = g_save
i_callback_program = g_repid
it_fieldcat = gt_fieldcat[]
TABLES
t_outtab = gt_outtab.
Forms
Initialization fieldcatalog
FORM fieldcat_init
USING rt_fieldcat TYPE slis_t_fieldcat_alv.
DATA: ls_fieldcat TYPE slis_fieldcat_alv.
DATA: pos TYPE i VALUE 1.
CLEAR ls_fieldcat.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'VBELN'.
ls_fieldcat-seltext_s = 'Delivery'.
ls_fieldcat-seltext_m = 'Delivery'.
ls_fieldcat-key = 'X'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'BSTKD'.
ls_fieldcat-seltext_s = 'PO Number'.
ls_fieldcat-seltext_m = 'PO Number'.
ls_fieldcat-key = 'X'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'POSNR'.
ls_fieldcat-key = 'X'.
ls_fieldcat-seltext_s = 'Item'.
ls_fieldcat-seltext_m = 'Item'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'LFART'.
ls_fieldcat-seltext_s = 'Del Type'.
ls_fieldcat-seltext_m = 'Delivery Type'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'VGBEL'.
ls_fieldcat-seltext_s = 'Source Doc'.
ls_fieldcat-seltext_m = 'Source Doc'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'AUART'.
ls_fieldcat-seltext_s = 'Type'.
ls_fieldcat-seltext_m = 'Type'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'KUNNR'.
ls_fieldcat-seltext_s = 'Customer'.
ls_fieldcat-seltext_m = 'Customer'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'NAME1'.
ls_fieldcat-seltext_s = 'Name'.
ls_fieldcat-seltext_m = 'Name1'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'WERKS'.
ls_fieldcat-seltext_s = 'Plant'.
ls_fieldcat-seltext_m = 'Plant'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'MATNR'.
ls_fieldcat-seltext_s = 'Material'.
ls_fieldcat-seltext_m = 'Material'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'MVGR1'.
ls_fieldcat-seltext_s = 'Speciality'.
ls_fieldcat-seltext_m = 'Speciality'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'PRODH'.
ls_fieldcat-seltext_s = 'Hierarchy'.
ls_fieldcat-seltext_m = 'Prod Hierarchy'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'ARKTX'.
ls_fieldcat-seltext_s = 'Description'.
ls_fieldcat-seltext_m = 'Description'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'ERNAM'.
ls_fieldcat-seltext_s = 'Created By'.
ls_fieldcat-seltext_m = 'Created By'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'ERDAT'.
ls_fieldcat-seltext_s = 'Created On'.
ls_fieldcat-seltext_m = 'Created On'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'WADAT_IST'.
ls_fieldcat-seltext_s = 'GoodsMvt.Date'.
ls_fieldcat-seltext_m = 'Goods Mvt Date'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'SERNR'.
ls_fieldcat-seltext_s = 'Serial Shipped'.
ls_fieldcat-seltext_m = 'Serial Shipped'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'SERNP'.
ls_fieldcat-seltext_s = 'Old Serial'.
ls_fieldcat-seltext_m = 'Old Serial'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'VBELV'.
ls_fieldcat-seltext_s = 'Invoice'.
ls_fieldcat-seltext_m = 'Invoice'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'INVVALUE'.
ls_fieldcat-seltext_s = 'Invoice Amt'.
ls_fieldcat-seltext_m = 'Invoice Value'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'QMNUM'.
ls_fieldcat-seltext_s = 'Notification'.
ls_fieldcat-seltext_m = 'Notification'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'QMCOD'.
ls_fieldcat-seltext_s = 'Rep LevKST'.
ls_fieldcat-seltext_m = 'Repair Level KST'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'COTXT'.
ls_fieldcat-seltext_s = 'CdTXT KST'.
ls_fieldcat-seltext_m = 'Repair Level Text KST'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'QMCOL'.
ls_fieldcat-seltext_s = 'Rep LevKSE'.
ls_fieldcat-seltext_m = 'Repair Level KSE'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'KTTXT'.
ls_fieldcat-seltext_s = 'CdTXT KSE'.
ls_fieldcat-seltext_m = 'Repair Level Text KSE'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
ENDFORM. "fieldcat_init
Data selection
FORM select_data TABLES rt_outtab LIKE gt_outtab[].
CLEAR: r_vbeln[].
Read all Invoices for the Selection
SELECT DISTINCT h~vbeln h~kunnr h~kunag
d~posnr d~matnr d~anzsn
d~serail d~vgbel d~vgpos
d~posnv d~lfimg d~arktx
d~uecha h~lfart h~erdat
h~ernam h~lfdat d~prodh
h~vkorg d~vkbur d~vkgrp
d~mvgr1 h~wadat_ist d~pstyv
d~werks
INTO (rt_outtab-vbeln, rt_outtab-kunnr,
rt_outtab-kunag, rt_outtab-posnr,
rt_outtab-matnr, rt_outtab-anzsn,
rt_outtab-serail, rt_outtab-vgbel,
rt_outtab-vgpos, rt_outtab-posnv,
rt_outtab-lfimg, rt_outtab-arktx,
rt_outtab-uecha, rt_outtab-lfart,
rt_outtab-erdat, rt_outtab-ernam,
rt_outtab-lfdat, rt_outtab-prodh,
rt_outtab-vkorg, rt_outtab-vkbur,
rt_outtab-vkgrp, rt_outtab-mvgr1,
rt_outtab-wadat, rt_outtab-pstyv,
rt_outtab-werks)
FROM likp AS h INNER JOIN lips AS d
ON h~vbeln = d~vbeln
WHERE h~vbeln IN s_vbeln
AND h~vkorg IN s_vkorg
AND h~lfart IN s_lfart
AND h~kunnr IN s_kunnr
AND h~wadat IN s_wadat
AND d~matnr IN s_matnr
AND d~werks IN s_werks
AND d~prodh IN s_prodh
AND d~vgbel IN s_vbelv
AND d~matnr LIKE 'S%'.
SELECT SINGLE * FROM vbak WHERE vbeln = rt_outtab-vgbel.
IF: sy-subrc EQ 0.
MOVE vbak-vbeln TO rt_outtab-vgbel.
MOVE vbak-auart TO rt_outtab-auart.
ENDIF.
SELECT SINGLE * FROM mara WHERE matnr = rt_outtab-matnr
AND mtart EQ 'FERT'.
CHECK sy-subrc EQ 0.
IF NOT rt_outtab-posnv IS INITIAL.
rt_outtab-vgpos = rt_outtab-posnv.
ENDIF.
CLEAR: vbfa.
SELECT SINGLE vbeln posnn rfwrt INTO
(rt_outtab-vbelv, rt_outtab-posnn, rt_outtab-netwr)
FROM vbfa WHERE vbelv EQ rt_outtab-vbeln
AND posnv EQ rt_outtab-posnr
AND vbtyp_n EQ 'M'.
CLEAR : rt_outtab-invvalue.
SELECT SINGLE * FROM vbrp WHERE vbeln = rt_outtab-vbelv
AND posnr = rt_outtab-posnn.
rt_outtab-fkimg = vbrp-fkimg.
IF rt_outtab-fkimg NE 0.
rt_outtab-invvalue = rt_outtab-netwr / rt_outtab-fkimg.
ENDIF.
APPEND rt_outtab.
IF NOT r_vbeln-low IS INITIAL.
IF r_vbeln-low GT rt_outtab-vbeln.
r_vbeln-low = rt_outtab-vbeln.
ENDIF.
IF r_vbeln-high LT rt_outtab-vbeln.
r_vbeln-high = rt_outtab-vbeln.
ENDIF.
ELSE.
r_vbeln-low = rt_outtab-vbeln.
r_vbeln-high = rt_outtab-vbeln.
ENDIF.
CLEAR: rt_outtab.
ENDSELECT.
IF NOT rt_outtab[] IS INITIAL.
SELECT vbeln posnr bstkd INTO CORRESPONDING FIELDS OF TABLE gt_vbkd
FROM vbkd
FOR ALL ENTRIES IN rt_outtab
WHERE vbeln = rt_outtab-vgbel
AND posnr = rt_outtab-vgpos.
IF NOT gt_vbkd[] IS INITIAL.
SORT gt_vbkd BY vbeln posnr.
LOOP AT rt_outtab.
READ TABLE gt_vbkd WITH KEY vbeln = rt_outtab-vgbel
posnr = rt_outtab-vgpos
BINARY SEARCH.
IF sy-subrc = 0.
rt_outtab-bstkd = gt_vbkd-bstkd.
MODIFY rt_outtab.
ENDIF.
ENDLOOP.
ENDIF.
ENDIF.
*select bstkd INTO CORRESPONDING FIELDS OF TABLE gt_vbkd
from vbkd where vbeln = gt_outtab-vbeln
and posnr = '000000'.
rt_outtab-bstkd = vbkd-bstkd .
<i><b> select single bstkd into gt_vbkd
from vbkd where vbeln = rt_outtab-vbeln
and posnr = '000000'.
rt_outtab-bstkd = gt_vbkd-bstkd.
APPEND rt_outtab .</b></i>
IF NOT r_vbeln IS INITIAL.
MOVE: 'I' TO r_vbeln-sign,
'BT' TO r_vbeln-option.
APPEND r_vbeln.
SELECT * INTO CORRESPONDING FIELDS OF TABLE i_serial
FROM ser01 WHERE lief_nr IN r_vbeln.
ENDIF.
SORT i_serial.
IF NOT i_serial[] IS INITIAL.
SELECT * INTO CORRESPONDING FIELDS OF TABLE i_object_numbers
FROM objk
FOR ALL ENTRIES IN i_serial
WHERE obknr EQ i_serial-obknr
AND taser EQ 'SER01'.
ENDIF.
SORT i_object_numbers BY obknr obzae.
LOOP AT rt_outtab.
CLEAR: rt_outtab-name1, rt_outtab-sernr, rt_outtab-lfimg,
rt_outtab-sernp, rt_outtab-kttxt.
Read the Sold To Name
SELECT SINGLE name1 INTO rt_outtab-name1
FROM kna1 WHERE kunnr EQ rt_outtab-kunnr.
Read Ship-to Customer
CLEAR: objk.
IF NOT rt_outtab-serail IS INITIAL.
READ TABLE i_serial WITH KEY lief_nr = rt_outtab-vbeln
posnr = rt_outtab-posnr.
IF sy-subrc EQ 0.
DO i_serial-anzsn TIMES.
CLEAR: rt_outtab-sernr, rt_outtab-sernp.
READ TABLE i_object_numbers WITH KEY obknr = i_serial-obknr
matnr = rt_outtab-matnr
BINARY SEARCH.
IF sy-subrc EQ 0.
rt_outtab-sernr = i_object_numbers-sernr.
DELETE i_object_numbers INDEX sy-tabix.
MOVE '1' TO rt_outtab-lfimg.
CLEAR: rt_outtab-aufnr, rt_outtab-qmnum,
rt_outtab-equnr, rt_outtab-qmcod, g_mngrp, g_mnkat.
SELECT SINGLE aufnr qmnum equnr qmcod qmgrp qmkat
INTO (rt_outtab-aufnr, rt_outtab-qmnum,
rt_outtab-equnr, rt_outtab-qmcod, g_mngrp, g_mnkat)
FROM viqmel WHERE matnr = rt_outtab-matnr
AND serialnr = rt_outtab-sernr
AND qmart EQ 'S4'
AND qmnum IN s_qmnum.
CLEAR: rt_outtab-cotxt.
SELECT SINGLE kurztext INTO rt_outtab-cotxt
FROM qpct WHERE katalogart EQ g_mnkat
AND codegruppe EQ g_mngrp
AND code EQ rt_outtab-qmcod
AND sprache EQ sy-langu.
Read Serial Number from Name Plate Data.
CLEAR: klah, kssk, ausp, cabn, g_atinn.
SELECT SINGLE atinn INTO (g_atinn) FROM cabn
WHERE atnam = 'SBANK_SERIAL_NUMBER'.
SELECT SINGLE atwrt
INTO (rt_outtab-sernp)
FROM ( klah AS a INNER JOIN kssk AS k
ON aclint = kclint )
JOIN ausp AS p
ON kobjek = pobjek
AND p~atinn = g_atinn
AND pklart = aklart
WHERE a~klart = '002'
AND a~class = 'KSE_SN_ENDOSCOPES'
AND k~objek = rt_outtab-equnr.
*KSE Repair level (activity code text from KSE-SM07 code group)
CLEAR: rt_outtab-qmcol, g_mngrp, g_mnkat.
CLEAR: rt_outtab-qmcol.
CLEAR: g_mnkat, g_mngrp.
SELECT SINGLE mnkat mngrp mncod INTO
(g_mnkat, g_mngrp, rt_outtab-qmcol)
FROM viqmma WHERE qmnum = rt_outtab-qmnum
AND mngrp EQ 'KSE-SM07'
AND kzloesch EQ space.
CLEAR: rt_outtab-kttxt.
SELECT SINGLE kurztext INTO rt_outtab-kttxt
FROM qpct WHERE katalogart EQ g_mnkat
AND codegruppe EQ g_mngrp
AND code EQ rt_outtab-qmcol
AND sprache EQ sy-langu.
rt_outtab1 = rt_outtab.
APPEND rt_outtab1.
ENDIF.
ENDDO.
ENDIF.
ENDIF.
ENDLOOP.
CLEAR: rt_outtab[].
rt_outtab[] = rt_outtab1[].
SORT rt_outtab BY vbeln posnr.
ENDFORM.
FORM get_repname *
--> P_VBELN *
--> P_POSNR *
--> P_PERNR *
--> P_ENAME *
FORM get_repname USING p_vbeln
p_posnr
CHANGING p_pernr
p_ename. "
DATA: i_vbpa LIKE vbpa OCCURS 0 WITH HEADER LINE.
CLEAR: i_vbpa[].
CALL FUNCTION 'Z_DETERMINE_ACTIVE_SALES_REP'
EXPORTING
g_salesdocument = p_vbeln
g_sales_item = p_posnr
TABLES
st_vbpa = i_vbpa.
READ TABLE i_vbpa INDEX 1.
IF sy-subrc = 0.
p_pernr = i_vbpa-pernr.
SELECT SINGLE ename INTO p_ename
FROM pa0001
WHERE pernr = i_vbpa-pernr.
ENDIF.
ENDFORM. " get_repname
FORM E03_EVENTTAB_BUILD *
--> E03_LT_EVENTS *
FORM e03_eventtab_build USING e03_lt_events TYPE slis_t_event.
DATA: ls_event TYPE slis_alv_event.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
i_list_type = 0
IMPORTING
et_events = e03_lt_events.
READ TABLE e03_lt_events WITH KEY name = slis_ev_top_of_page
INTO ls_event.
IF sy-subrc = 0.
MOVE gc_formname_top_of_page TO ls_event-form.
APPEND ls_event TO e03_lt_events.
ENDIF.
ENDFORM.
FORM TOP_OF_PAGE *
FORM top_of_page.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = gt_list_top_of_page.
ENDFORM.
*& Form USER_COMMAND
FORM user_command USING r_ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfield.
CASE r_ucomm.
WHEN '&IC1'.
PERFORM display_delivery USING r_ucomm
rs_selfield.
ENDCASE.
ENDFORM.
*& Form display_delivery
FORM display_delivery
USING r_ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfield.
CASE rs_selfield-sel_tab_field.
WHEN '1-VBELN'.
SET PARAMETER ID 'VL' FIELD rs_selfield-value.
CALL TRANSACTION 'VL03N' AND SKIP FIRST SCREEN.
WHEN '1-VBELV'.
SET PARAMETER ID 'VF' FIELD rs_selfield-value.
CALL TRANSACTION 'VF03N' AND SKIP FIRST SCREEN.
ENDCASE.
ENDFORM.
*& Form VARIANT_INIT
text
--> p1 text
<-- p2 text
FORM variant_init.
CLEAR g_variant.
g_variant-report = g_repid.
ENDFORM. " VARIANT_INIT
*& Form F4_FOR_VARIANT
text
--> p1 text
<-- p2 text
FORM f4_for_variant.
CALL FUNCTION 'REUSE_ALV_VARIANT_F4'
EXPORTING
is_variant = g_variant
i_save = g_save
it_default_fieldcat =
IMPORTING
e_exit = g_exit
es_variant = gx_variant
EXCEPTIONS
not_found = 2.
IF sy-subrc = 2.
MESSAGE ID sy-msgid TYPE 'S' NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ELSE.
IF g_exit = space.
p_vari = gx_variant-variant.
ENDIF.
ENDIF.
ENDFORM.
*& Form PAI_OF_SELECTION_SCREEN
text
FORM pai_of_selection_screen.
IF NOT p_vari IS INITIAL.
MOVE g_variant TO gx_variant.
MOVE p_vari TO gx_variant-variant.
CALL FUNCTION 'REUSE_ALV_VARIANT_EXISTENCE'
EXPORTING
i_save = g_save
CHANGING
cs_variant = gx_variant.
g_variant = gx_variant.
ELSE.
PERFORM variant_init.
ENDIF.
ENDFORM.naren this is the program
Global structure of list
TYPE-POOLS: slis.
TABLES: likp,
lips,
vbfa,
kssk,
klah,
ausp,
cabn,
vbak,
mara,
vbrk,
ser01,
vbpa,
vbrp,
nast,
zseri,
ltap,
pa0001,
kna1,
objk,
viqmel,
viqmma.
TYPES: BEGIN OF i_delivery,
vbeln LIKE likp-vbeln,
posnr LIKE lips-posnr,
kunnr LIKE likp-kunnr,
kunag LIKE likp-kunag,
vkorg LIKE vbak-vkorg,
matnr LIKE lips-matnr,
lfart LIKE likp-lfart,
arktx LIKE vbap-arktx,
vgbel LIKE lips-vgbel,
vgpos LIKE lips-vgpos,
pstyv LIKE lips-pstyv,
wadat TYPE likp-wadat_ist,
lfdat TYPE likp-lfdat,
prodh TYPE lips-prodh,
lfimg TYPE lips-lfimg,
vkbur TYPE lips-vkbur,
werks TYPE lips-werks,
vkgrp TYPE lips-vkgrp,
mvgr1 TYPE lips-mvgr1,
sernr LIKE equi-sernr,
sernp LIKE equi-sernr,
equnr LIKE equi-equnr,
kttxt LIKE qpct-kurztext,
fkimg LIKE vbrp-fkimg,
bstnk LIKE vbak-bstnk,
vbelv LIKE lips-vgbel,
posnv LIKE lips-posnv,
uecha LIKE lips-uecha,
ernam LIKE vbak-ernam,
erdat LIKE vbak-erdat,
serail LIKE lips-serail,
anzsn LIKE lips-anzsn,
auart LIKE vbak-auart ,
netwr LIKE vbap-netwr,
fstno LIKE vbpa-pernr,
fstnm LIKE pa0001-ename,
ename LIKE pa0001-ename,
qname LIKE ltap-qname,
name1 LIKE kna1-name1,
name3 LIKE kna1-name2,
pernr LIKE vbpa-pernr,
aufnr LIKE viqmel-aufnr,
qmnum LIKE viqmel-qmnum,
mngrp LIKE viqmma-mngrp,
qmcod LIKE viqmel-qmcod,
qmcol LIKE viqmma-mncod,
cotxt(20),
invvalue LIKE vbrp-netwr,
posnn LIKE vbfa-posnn,
bstkd LIKE vbkd-bstkd,
END OF i_delivery.
Global structure of list
*/ Selection and Input Parameters
SELECTION-SCREEN BEGIN OF BLOCK block2 WITH FRAME TITLE text-003.
SELECT-OPTIONS: s_vkorg FOR likp-vkorg NO INTERVALS.
SELECT-OPTIONS: s_vbeln FOR likp-vbeln,
s_lfart FOR likp-lfart,
s_kunnr FOR likp-kunnr,
s_erdat FOR likp-erdat,
s_wadat FOR likp-wadat_ist,
s_werks FOR lips-werks,
s_matnr FOR lips-matnr,
s_prodh FOR lips-prodh,
s_qmnum FOR viqmel-qmnum.
SELECTION-SCREEN END OF BLOCK block2.
SELECTION-SCREEN BEGIN OF BLOCK block4 WITH FRAME TITLE text-002.
SELECT-OPTIONS: s_vbelv FOR vbak-vbeln,
s_auart FOR vbak-auart.
SELECTION-SCREEN END OF BLOCK block4.
PARAMETERS: p_vari LIKE disvariant-variant.
RANGES: r_vbeln FOR likp-vbeln.
DATA: gt_fieldcat TYPE slis_t_fieldcat_alv.
DATA: gt_outtab TYPE i_delivery OCCURS 0 WITH HEADER LINE,
rt_outtab1 TYPE i_delivery OCCURS 0 WITH HEADER LINE,
i_nast TYPE nast OCCURS 0 WITH HEADER LINE,
gt_list_top_of_page TYPE slis_t_listheader,
gt_events TYPE slis_t_event,
gc_formname_top_of_page TYPE slis_formname VALUE 'TOP_OF_PAGE'.
DATA: g_repid LIKE sy-repid,
g_count LIKE sy-tabix.
DATA: BEGIN OF i_serial OCCURS 0,
obknr TYPE ser01-obknr,
lief_nr TYPE ser01-lief_nr,
posnr TYPE ser01-posnr,
anzsn TYPE ser01-anzsn,
END OF i_serial.
DATA: BEGIN OF i_object_numbers OCCURS 0,
obknr TYPE objk-obknr,
obzae TYPE objk-obzae,
sernr TYPE objk-sernr,
equnr TYPE objk-equnr,
matnr TYPE objk-matnr,
taser TYPE objk-taser,
END OF i_object_numbers.
DATA: g_save(1) TYPE c,
g_default(1) TYPE c,
g_exit(1) TYPE c,
gx_variant LIKE disvariant,
g_variant LIKE disvariant.
DATA: g_mnkat LIKE viqmma-mnkat,
g_mngrp LIKE viqmma-mngrp,
g_atinn LIKE ausp-atinn.
DATA: gt_vbkd TYPE TABLE OF vbkd WITH HEADER LINE.
Initialization fieldcatalog
INITIALIZATION.
g_repid = sy-repid.
PERFORM fieldcat_init USING gt_fieldcat[].
MOVE: 'I' TO s_vkorg-sign,
'EQ' TO s_vkorg-option,
'5090' TO s_vkorg-low.
APPEND s_vkorg.
MOVE: 'I' TO s_lfart-sign,
'EQ' TO s_lfart-option,
'LF' TO s_lfart-low.
APPEND s_lfart.
g_save = 'A'.
PERFORM variant_init.
Get default variant
gx_variant = g_variant.
CALL FUNCTION 'REUSE_ALV_VARIANT_DEFAULT_GET'
EXPORTING
i_save = g_save
CHANGING
cs_variant = gx_variant
EXCEPTIONS
not_found = 2.
IF sy-subrc = 0.
p_vari = gx_variant-variant.
ENDIF.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_vari.
PERFORM f4_for_variant.
AT SELECTION-SCREEN.
PERFORM pai_of_selection_screen.
Start of Selection
START-OF-SELECTION.
PERFORM e03_eventtab_build USING gt_events[].
PERFORM select_data TABLES gt_outtab.
Display list
END-OF-SELECTION.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_background_id = 'ALV_BACKGROUND'
i_callback_user_command = 'USER_COMMAND'
is_variant = g_variant
i_save = g_save
i_callback_program = g_repid
it_fieldcat = gt_fieldcat[]
TABLES
t_outtab = gt_outtab.
Forms
Initialization fieldcatalog
FORM fieldcat_init
USING rt_fieldcat TYPE slis_t_fieldcat_alv.
DATA: ls_fieldcat TYPE slis_fieldcat_alv.
DATA: pos TYPE i VALUE 1.
CLEAR ls_fieldcat.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'VBELN'.
ls_fieldcat-seltext_s = 'Delivery'.
ls_fieldcat-seltext_m = 'Delivery'.
ls_fieldcat-key = 'X'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'BSTKD'.
ls_fieldcat-seltext_s = 'PO Number'.
ls_fieldcat-seltext_m = 'PO Number'.
ls_fieldcat-key = 'X'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'POSNR'.
ls_fieldcat-key = 'X'.
ls_fieldcat-seltext_s = 'Item'.
ls_fieldcat-seltext_m = 'Item'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'LFART'.
ls_fieldcat-seltext_s = 'Del Type'.
ls_fieldcat-seltext_m = 'Delivery Type'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'VGBEL'.
ls_fieldcat-seltext_s = 'Source Doc'.
ls_fieldcat-seltext_m = 'Source Doc'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'AUART'.
ls_fieldcat-seltext_s = 'Type'.
ls_fieldcat-seltext_m = 'Type'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'KUNNR'.
ls_fieldcat-seltext_s = 'Customer'.
ls_fieldcat-seltext_m = 'Customer'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'NAME1'.
ls_fieldcat-seltext_s = 'Name'.
ls_fieldcat-seltext_m = 'Name1'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'WERKS'.
ls_fieldcat-seltext_s = 'Plant'.
ls_fieldcat-seltext_m = 'Plant'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'MATNR'.
ls_fieldcat-seltext_s = 'Material'.
ls_fieldcat-seltext_m = 'Material'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'MVGR1'.
ls_fieldcat-seltext_s = 'Speciality'.
ls_fieldcat-seltext_m = 'Speciality'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'PRODH'.
ls_fieldcat-seltext_s = 'Hierarchy'.
ls_fieldcat-seltext_m = 'Prod Hierarchy'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'ARKTX'.
ls_fieldcat-seltext_s = 'Description'.
ls_fieldcat-seltext_m = 'Description'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'ERNAM'.
ls_fieldcat-seltext_s = 'Created By'.
ls_fieldcat-seltext_m = 'Created By'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'ERDAT'.
ls_fieldcat-seltext_s = 'Created On'.
ls_fieldcat-seltext_m = 'Created On'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'WADAT_IST'.
ls_fieldcat-seltext_s = 'GoodsMvt.Date'.
ls_fieldcat-seltext_m = 'Goods Mvt Date'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'SERNR'.
ls_fieldcat-seltext_s = 'Serial Shipped'.
ls_fieldcat-seltext_m = 'Serial Shipped'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'SERNP'.
ls_fieldcat-seltext_s = 'Old Serial'.
ls_fieldcat-seltext_m = 'Old Serial'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'VBELV'.
ls_fieldcat-seltext_s = 'Invoice'.
ls_fieldcat-seltext_m = 'Invoice'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'INVVALUE'.
ls_fieldcat-seltext_s = 'Invoice Amt'.
ls_fieldcat-seltext_m = 'Invoice Value'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'QMNUM'.
ls_fieldcat-seltext_s = 'Notification'.
ls_fieldcat-seltext_m = 'Notification'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'QMCOD'.
ls_fieldcat-seltext_s = 'Rep LevKST'.
ls_fieldcat-seltext_m = 'Repair Level KST'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'COTXT'.
ls_fieldcat-seltext_s = 'CdTXT KST'.
ls_fieldcat-seltext_m = 'Repair Level Text KST'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'QMCOL'.
ls_fieldcat-seltext_s = 'Rep LevKSE'.
ls_fieldcat-seltext_m = 'Repair Level KSE'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
pos = pos + 1.
ls_fieldcat-col_pos = pos.
ls_fieldcat-fieldname = 'KTTXT'.
ls_fieldcat-seltext_s = 'CdTXT KSE'.
ls_fieldcat-seltext_m = 'Repair Level Text KSE'.
APPEND ls_fieldcat TO rt_fieldcat.
CLEAR ls_fieldcat.
ENDFORM. "fieldcat_init
Data selection
FORM select_data TABLES rt_outtab LIKE gt_outtab[].
CLEAR: r_vbeln[].
Read all Invoices for the Selection
SELECT DISTINCT h~vbeln h~kunnr h~kunag
d~posnr d~matnr d~anzsn
d~serail d~vgbel d~vgpos
d~posnv d~lfimg d~arktx
d~uecha h~lfart h~erdat
h~ernam h~lfdat d~prodh
h~vkorg d~vkbur d~vkgrp
d~mvgr1 h~wadat_ist d~pstyv
d~werks
INTO (rt_outtab-vbeln, rt_outtab-kunnr,
rt_outtab-kunag, rt_outtab-posnr,
rt_outtab-matnr, rt_outtab-anzsn,
rt_outtab-serail, rt_outtab-vgbel,
rt_outtab-vgpos, rt_outtab-posnv,
rt_outtab-lfimg, rt_outtab-arktx,
rt_outtab-uecha, rt_outtab-lfart,
rt_outtab-erdat, rt_outtab-ernam,
rt_outtab-lfdat, rt_outtab-prodh,
rt_outtab-vkorg, rt_outtab-vkbur,
rt_outtab-vkgrp, rt_outtab-mvgr1,
rt_outtab-wadat, rt_outtab-pstyv,
rt_outtab-werks)
FROM likp AS h INNER JOIN lips AS d
ON h~vbeln = d~vbeln
WHERE h~vbeln IN s_vbeln
AND h~vkorg IN s_vkorg
AND h~lfart IN s_lfart
AND h~kunnr IN s_kunnr
AND h~wadat IN s_wadat
AND d~matnr IN s_matnr
AND d~werks IN s_werks
AND d~prodh IN s_prodh
AND d~vgbel IN s_vbelv
AND d~matnr LIKE 'S%'.
SELECT SINGLE * FROM vbak WHERE vbeln = rt_outtab-vgbel.
IF: sy-subrc EQ 0.
MOVE vbak-vbeln TO rt_outtab-vgbel.
MOVE vbak-auart TO rt_outtab-auart.
ENDIF.
SELECT SINGLE * FROM mara WHERE matnr = rt_outtab-matnr
AND mtart EQ 'FERT'.
CHECK sy-subrc EQ 0.
IF NOT rt_outtab-posnv IS INITIAL.
rt_outtab-vgpos = rt_outtab-posnv.
ENDIF.
CLEAR: vbfa.
SELECT SINGLE vbeln posnn rfwrt INTO
(rt_outtab-vbelv, rt_outtab-posnn, rt_outtab-netwr)
FROM vbfa WHERE vbelv EQ rt_outtab-vbeln
AND posnv EQ rt_outtab-posnr
AND vbtyp_n EQ 'M'.
CLEAR : rt_outtab-invvalue.
SELECT SINGLE * FROM vbrp WHERE vbeln = rt_outtab-vbelv
AND posnr = rt_outtab-posnn.
rt_outtab-fkimg = vbrp-fkimg.
IF rt_outtab-fkimg NE 0.
rt_outtab-invvalue = rt_outtab-netwr / rt_outtab-fkimg.
ENDIF.
APPEND rt_outtab.
IF NOT r_vbeln-low IS INITIAL.
IF r_vbeln-low GT rt_outtab-vbeln.
r_vbeln-low = rt_outtab-vbeln.
ENDIF.
IF r_vbeln-high LT rt_outtab-vbeln.
r_vbeln-high = rt_outtab-vbeln.
ENDIF.
ELSE.
r_vbeln-low = rt_outtab-vbeln.
r_vbeln-high = rt_outtab-vbeln.
ENDIF.
CLEAR: rt_outtab.
ENDSELECT.
IF NOT rt_outtab[] IS INITIAL.
SELECT vbeln posnr bstkd INTO CORRESPONDING FIELDS OF TABLE gt_vbkd
FROM vbkd
FOR ALL ENTRIES IN rt_outtab
WHERE vbeln = rt_outtab-vgbel
AND posnr = rt_outtab-vgpos.
IF NOT gt_vbkd[] IS INITIAL.
SORT gt_vbkd BY vbeln posnr.
LOOP AT rt_outtab.
READ TABLE gt_vbkd WITH KEY vbeln = rt_outtab-vgbel
posnr = rt_outtab-vgpos
BINARY SEARCH.
IF sy-subrc = 0.
rt_outtab-bstkd = gt_vbkd-bstkd.
MODIFY rt_outtab.
ENDIF.
ENDLOOP.
ENDIF.
ENDIF.
*select bstkd INTO CORRESPONDING FIELDS OF TABLE gt_vbkd
from vbkd where vbeln = gt_outtab-vbeln
and posnr = '000000'.
rt_outtab-bstkd = vbkd-bstkd .
SELECT single bstkd INTO CORRESPONDING FIELDS OF gt_vbkd
FROM vbkd WHERE vbeln = gt_vbkd-vbeln
AND posnr = '000000'.
rt_outtab-bstkd = gt_vbkd-bstkd.
APPEND rt_outtab.
IF NOT r_vbeln IS INITIAL.
MOVE: 'I' TO r_vbeln-sign,
'BT' TO r_vbeln-option.
APPEND r_vbeln.
SELECT * INTO CORRESPONDING FIELDS OF TABLE i_serial
FROM ser01 WHERE lief_nr IN r_vbeln.
ENDIF.
SORT i_serial.
IF NOT i_serial[] IS INITIAL.
SELECT * INTO CORRESPONDING FIELDS OF TABLE i_object_numbers
FROM objk
FOR ALL ENTRIES IN i_serial
WHERE obknr EQ i_serial-obknr
AND taser EQ 'SER01'.
ENDIF.
SORT i_object_numbers BY obknr obzae.
LOOP AT rt_outtab.
CLEAR: rt_outtab-name1, rt_outtab-sernr, rt_outtab-lfimg,
rt_outtab-sernp, rt_outtab-kttxt.
Read the Sold To Name
SELECT SINGLE name1 INTO rt_outtab-name1
FROM kna1 WHERE kunnr EQ rt_outtab-kunnr.
Read Ship-to Customer
CLEAR: objk.
IF NOT rt_outtab-serail IS INITIAL.
READ TABLE i_serial WITH KEY lief_nr = rt_outtab-vbeln
posnr = rt_outtab-posnr.
IF sy-subrc EQ 0.
DO i_serial-anzsn TIMES.
CLEAR: rt_outtab-sernr, rt_outtab-sernp.
READ TABLE i_object_numbers WITH KEY obknr = i_serial-obknr
matnr = rt_outtab-matnr
BINARY SEARCH.
IF sy-subrc EQ 0.
rt_outtab-sernr = i_object_numbers-sernr.
DELETE i_object_numbers INDEX sy-tabix.
MOVE '1' TO rt_outtab-lfimg.
CLEAR: rt_outtab-aufnr, rt_outtab-qmnum,
rt_outtab-equnr, rt_outtab-qmcod, g_mngrp, g_mnkat.
SELECT SINGLE aufnr qmnum equnr qmcod qmgrp qmkat
INTO (rt_outtab-aufnr, rt_outtab-qmnum,
rt_outtab-equnr, rt_outtab-qmcod, g_mngrp, g_mnkat)
FROM viqmel WHERE matnr = rt_outtab-matnr
AND serialnr = rt_outtab-sernr
AND qmart EQ 'S4'
AND qmnum IN s_qmnum.
CLEAR: rt_outtab-cotxt.
SELECT SINGLE kurztext INTO rt_outtab-cotxt
FROM qpct WHERE katalogart EQ g_mnkat
AND codegruppe EQ g_mngrp
AND code EQ rt_outtab-qmcod
AND sprache EQ sy-langu.
Read Serial Number from Name Plate Data.
CLEAR: klah, kssk, ausp, cabn, g_atinn.
SELECT SINGLE atinn INTO (g_atinn) FROM cabn
WHERE atnam = 'SBANK_SERIAL_NUMBER'.
SELECT SINGLE atwrt
INTO (rt_outtab-sernp)
FROM ( klah AS a INNER JOIN kssk AS k
ON aclint = kclint )
JOIN ausp AS p
ON kobjek = pobjek
AND p~atinn = g_atinn
AND pklart = aklart
WHERE a~klart = '002'
AND a~class = 'KSE_SN_ENDOSCOPES'
AND k~objek = rt_outtab-equnr.
*KSE Repair level (activity code text from KSE-SM07 code group)
CLEAR: rt_outtab-qmcol, g_mngrp, g_mnkat.
CLEAR: rt_outtab-qmcol.
CLEAR: g_mnkat, g_mngrp.
SELECT SINGLE mnkat mngrp mncod INTO
(g_mnkat, g_mngrp, rt_outtab-qmcol)
FROM viqmma WHERE qmnum = rt_outtab-qmnum
AND mngrp EQ 'KSE-SM07'
AND kzloesch EQ space.
CLEAR: rt_outtab-kttxt.
SELECT SINGLE kurztext INTO rt_outtab-kttxt
FROM qpct WHERE katalogart EQ g_mnkat
AND codegruppe EQ g_mngrp
AND code EQ rt_outtab-qmcol
AND sprache EQ sy-langu.
rt_outtab1 = rt_outtab.
APPEND rt_outtab1.
ENDIF.
ENDDO.
ENDIF.
ENDIF.
ENDLOOP.
CLEAR: rt_outtab[].
rt_outtab[] = rt_outtab1[].
SORT rt_outtab BY vbeln posnr.
ENDFORM.
FORM get_repname *
--> P_VBELN *
--> P_POSNR *
--> P_PERNR *
--> P_ENAME *
FORM get_repname USING p_vbeln
p_posnr
CHANGING p_pernr
p_ename. "
DATA: i_vbpa LIKE vbpa OCCURS 0 WITH HEADER LINE.
CLEAR: i_vbpa[].
CALL FUNCTION 'Z_DETERMINE_ACTIVE_SALES_REP'
EXPORTING
g_salesdocument = p_vbeln
g_sales_item = p_posnr
TABLES
st_vbpa = i_vbpa.
READ TABLE i_vbpa INDEX 1.
IF sy-subrc = 0.
p_pernr = i_vbpa-pernr.
SELECT SINGLE ename INTO p_ename
FROM pa0001
WHERE pernr = i_vbpa-pernr.
ENDIF.
ENDFORM. " get_repname
FORM E03_EVENTTAB_BUILD *
--> E03_LT_EVENTS *
FORM e03_eventtab_build USING e03_lt_events TYPE slis_t_event.
DATA: ls_event TYPE slis_alv_event.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
i_list_type = 0
IMPORTING
et_events = e03_lt_events.
READ TABLE e03_lt_events WITH KEY name = slis_ev_top_of_page
INTO ls_event.
IF sy-subrc = 0.
MOVE gc_formname_top_of_page TO ls_event-form.
APPEND ls_event TO e03_lt_events.
ENDIF.
ENDFORM.
FORM TOP_OF_PAGE *
FORM top_of_page.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = gt_list_top_of_page.
ENDFORM.
*& Form USER_COMMAND
FORM user_command USING r_ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfield.
CASE r_ucomm.
WHEN '&IC1'.
PERFORM display_delivery USING r_ucomm
rs_selfield.
ENDCASE.
ENDFORM.
*& Form display_delivery
FORM display_delivery
USING r_ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfield.
CASE rs_selfield-sel_tab_field.
WHEN '1-VBELN'.
SET PARAMETER ID 'VL' FIELD rs_selfield-value.
CALL TRANSACTION 'VL03N' AND SKIP FIRST SCREEN.
WHEN '1-VBELV'.
SET PARAMETER ID 'VF' FIELD rs_selfield-value.
CALL TRANSACTION 'VF03N' AND SKIP FIRST SCREEN.
ENDCASE.
ENDFORM.
*& Form VARIANT_INIT
text
--> p1 text
<-- p2 text
FORM variant_init.
CLEAR g_variant.
g_variant-report = g_repid.
ENDFORM. " VARIANT_INIT
*& Form F4_FOR_VARIANT
text
--> p1 text
<-- p2 text
FORM f4_for_variant.
CALL FUNCTION 'REUSE_ALV_VARIANT_F4'
EXPORTING
is_variant = g_variant
i_save = g_save
it_default_fieldcat =
IMPORTING
e_exit = g_exit
es_variant = gx_variant
EXCEPTIONS
not_found = 2.
IF sy-subrc = 2.
MESSAGE ID sy-msgid TYPE 'S' NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ELSE.
IF g_exit = space.
p_vari = gx_variant-variant.
ENDIF.
ENDIF.
ENDFORM.
*& Form PAI_OF_SELECTION_SCREEN
text
FORM pai_of_selection_screen.
IF NOT p_vari IS INITIAL.
MOVE g_variant TO gx_variant.
MOVE p_vari TO gx_variant-variant.
CALL FUNCTION 'REUSE_ALV_VARIANT_EXISTENCE'
EXPORTING
i_save = g_save
CHANGING
cs_variant = gx_variant.
g_variant = gx_variant.
ELSE.
PERFORM variant_init.
ENDIF.
ENDFORM. -
How to slection screen fields in output of the report by using alv classe
hi all,
i want to get all the fields in the selection screen to be displayed in the output layout.i am developing report by using alv grid classes can any one help me.
answers are rewardedHello
u first place some dictionary input/output fields in your screen and
below that u place ur custom control,
so what ever input u are giving in those fields , u seelct data accordingly,
for example.
in screen there is one icon 'dictionary/program fields, click that and give some table , suppose u want to extract data from kna1 table using kunnr, select kunnr and press enter, then along withn cursor u get one frame, take that on to screen and place it ,
now in the program write
tables: kna1.
select * from kna1 into it_kna1 where kunnr = kna1-kunnr.
now u get the data into it_kna1.
it will work , try this.
bye. -
How to convert the output of the report (program) to PDF file , Please HELP
Good Morning, ALL
I have done a small program in ABAP that lets the employee enters his information. Once the emplyee enters the information and executes the program, I want the result to be saved in a PDF file (in any kind of format). I did try to do this action BUT I couldn't. ( ABAP Beginner LOL ).
This is the code ( The main thing ):
SELECTION-SCREEN BEGIN OF BLOCK Yours WITH FRAME TITLE text-001.
PARAMETERS: NAME(15) TYPE C OBLIGATORY lower case,
CITY LIKE NAME OBLIGATORY ,
DATE LIKE SY-DATUM DEFAULT SY-DATUM MODIF ID ZZZ,
ID# TYPE C LENGTH 9,
PHONE TYPE C LENGTH 10.
SKIP 4.
SELECTION-SCREEN END OF BLOCK Yours.
SELECTION-SCREEN BEGIN OF BLOCK More WITH FRAME TITLE text-002.
PARAMETERS: MALE RADIOBUTTON GROUP G1 DEFAULT 'X',
FEMALE RADIOBUTTON GROUP G1.
SELECTION-SCREEN END OF BLOCK More.
SELECTION-SCREEN BEGIN OF BLOCK Details WITH FRAME TITLE text-003.
PARAMETERS: P_DATE TYPE DATUM,
Locate TYPE C LENGTH 30.
SELECTION-SCREEN END OF BLOCK Details.
AT SELECTION-SCREEN OUTPUT.
LOOP AT SCREEN.
IF SCREEN-GROUP1 = 'ZZZ'.
SCREEN-INPUT = '0'.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
Any useful help will be appreciated, THANK YOUHi
Try the below code.
REPORT ztest_notepad.
"Variables
DATA:
l_lay TYPE pri_params-paart,
l_lines TYPE pri_params-linct,
l_cols TYPE pri_params-linsz,
l_val TYPE c,
l_no_of_bytes TYPE i,
l_pdf_spoolid LIKE tsp01-rqident,
l_jobname LIKE tbtcjob-jobname,
l_jobcount LIKE tbtcjob-jobcount,
spoolno TYPE tsp01-rqident.
*Types
TYPES:
t_pripar TYPE pri_params,
t_arcpar TYPE arc_params.
"Work areas
DATA:
lw_pripar TYPE t_pripar,
lw_arcpar TYPE t_arcpar.
DATA:
it_t100 TYPE t100 OCCURS 0 WITH HEADER LINE,
it_pdf TYPE tline OCCURS 0 WITH HEADER LINE.
"Start-of-selection.
START-OF-SELECTION.
l_lay = 'X_65_132'.
l_lines = 65.
l_cols = 132.
"Read, determine, change spool print parameters and archive parameters
CALL FUNCTION 'GET_PRINT_PARAMETERS'
EXPORTING
in_archive_parameters = lw_arcpar
in_parameters = lw_pripar
layout = l_lay
line_count = l_lines
line_size = l_cols
no_dialog = 'X'
IMPORTING
out_archive_parameters = lw_arcpar
out_parameters = lw_pripar
valid = l_val
EXCEPTIONS
archive_info_not_found = 1
invalid_print_params = 2
invalid_archive_params = 3
OTHERS = 4.
IF l_val space AND sy-subrc = 0.
lw_pripar-prrel = space.
lw_pripar-primm = space.
NEW-PAGE PRINT ON
NEW-SECTION
PARAMETERS lw_pripar
ARCHIVE PARAMETERS lw_arcpar
NO DIALOG.
ENDIF.
"Get data
SELECT *
FROM t100
INTO TABLE it_t100
UP TO 100 ROWS
WHERE sprsl = sy-langu.
" Writing to Spool
LOOP AT it_t100.
WRITE:/ it_t100.
ENDLOOP.
NEW-PAGE PRINT OFF.
CALL FUNCTION 'ABAP4_COMMIT_WORK'.
spoolno = sy-spono.
"Convert spool to PDF
CALL FUNCTION 'CONVERT_ABAPSPOOLJOB_2_PDF'
EXPORTING
src_spoolid = spoolno
no_dialog = ' '
IMPORTING
pdf_bytecount = l_no_of_bytes
pdf_spoolid = l_pdf_spoolid
btc_jobname = l_jobname
btc_jobcount = l_jobcount
TABLES
pdf = it_pdf.
"Download PDF file C Drive
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
filename = 'C:\itab_to_pdf.pdf'
filetype = 'BIN'
TABLES
data_tab = it_pdf
Hope this helps you. -
To Display Space as Zero in the report output
Hi ,
We have a situation like there is no record in the cube for a particular date selection , the output in the report for the date shows as Space , now the question is how do we display Space as Zero in the query ouput.
We have the option to Display Zeroes as spaces .
Please help..
Thanks,
Sruthi...Hi Sruthi,
Can you try this.
Create Formula for each KF. In the formula definition just add key figure (Ex: if the keyfigure is KF1 then in the formula just drag KF1) and save it. Name this formula as your original keyfigure. Formula may return 0, if the keyfigure doesnt have any data.
Hope this helps.
Veerendra.
Maybe you are looking for
-
How do you move photos from I photo to aperture?
How do you move photos from I photo to aperture? I've downloaded onto i photo but having difficulty moving events over
-
Bought a new mac pro this year and having problems with it freezing up a couple times a day. Seems to occur when I am NOT using the computer. All functions cease except mouse movement (but will not select anything or show Doc). Sometimes will freeze
-
I imported some tables from a CSV file. When I imported, I chose to use the original Primary Key and generated a new sequence for the primary key's trigger. Now, Whenever I use the forms to add a new record to the table, I get the following error mes
-
Hi, I've Two database one for primary(GISC) and one for standby (GISCST) when i start open standby database i appeare erro : ORA-16004: backup database requires recovery ORA-01152: file 1 was not restored from a sufficiently old backup ORA-01110: dat
-
I need help...Monthly Photoshop Subscription Question...
Hello. I signed up for the monthly Photoshop Creative Cloud last year. I really only use Photoshop for some very basic things maybe 2x a month. I have read that I can get a free version with 2GB of storage for free. Is this true? And would this