Application Development 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: 

ALV list editable (based on condition)

Former Member
0 Kudos

Hi Experts,

I am using ALV LIST FM for reporting purpose,my requirement is that i want to make alv list editable cell wise based on some condition,

for example,

if there are two fields in alv ,then

if value in second field is 'X',then i want to make the first field editable,

this thing is possible in ALV using OOPS but i want it in ALV LIST (REUSE_ALV_LIST_DISPLAY).

Please help.

Points will be rewarded for sure,

Thanks&Regards,

Talwinder singh

3 REPLIES 3

Former Member
0 Kudos

Hi,

To switch between editable and non-editable mode here is an example:


&---------------------------------------------------------------------
*& Report ZSB_TEST001
*&
&---------------------------------------------------------------------
*&
*&
&---------------------------------------------------------------------

REPORT zsb_test001.

class cl_exithandler definition load.

data: obj type ref to IF_EX_RSAR_CONNECTOR,
itab type SFBE_OPERANDS.

DATA: g_container TYPE scrfname VALUE 'CUSTOM_CONTROL',
g_custom_container TYPE REF TO cl_gui_custom_container,
g_grid TYPE REF TO cl_gui_alv_grid,
gs_layout TYPE lvc_s_layo,
ok_code LIKE sy-ucomm,
save_ok LIKE sy-ucomm.

DATA: gt_outtab TYPE TABLE OF sflight.





Field catalog table 
DATA gt_fieldcat TYPE lvc_t_fcat .

DATA: l_r_stylerow TYPE lvc_s_styl,
l_t_styletab TYPE lvc_t_styl,
l_r_alv1 LIKE LINE OF gt_outtab.

DATA: L_MODE TYPE RAW4.

---------------------------------------------------------------------

MAIN * 
---------------------------------------------------------------------
CALL SCREEN 100 .

*&---------------------------------------------------------------------
*
*& Module STATUS_0100 OUTPUT
*&---------------------------------------------------------------------
*

MODULE status_0100 OUTPUT.
SET PF-STATUS 'MAIN100'.
SET TITLEBAR 'MAIN100'.

ENDMODULE. " STATUS_0100 OUTPUT

*&---------------------------------------------------------------------
*
*& Module pbo OUTPUT
*&---------------------------------------------------------------------
*
MODULE pbo_get OUTPUT.

IF g_custom_container IS INITIAL.

CREATE OBJECT g_custom_container
EXPORTING
container_name = g_container
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
create_error = 3
lifetime_error = 4
lifetime_dynpro_dynpro_link = 5
OTHERS = 6.


CREATE OBJECT g_grid
EXPORTING
i_parent = g_custom_container
EXCEPTIONS
error_cntl_create = 1
error_cntl_init = 2
error_cntl_link = 3
error_dp_create = 4
OTHERS = 5 .


*----Preparing field catalog.
PERFORM prepare_field_catalog CHANGING gt_fieldcat .

PERFORM prepare_layout CHANGING gs_layout .

SELECT * FROM sflight INTO TABLE gt_outtab UP TO 10 ROWS.

*§1.Set status of all cells to editable using the layout structure.
CALL METHOD g_grid->set_table_for_first_display
EXPORTING
i_structure_name = 'SFLIGHT'
is_layout = gs_layout
CHANGING
it_outtab = gt_outtab
it_fieldcatalog = gt_fieldcat
EXCEPTIONS
invalid_parameter_combination = 1
program_error = 2
too_many_lines = 3
OTHERS = 4.

*§2.Use SET_READY_FOR_INPUT to allow editing initially.
CALL METHOD g_grid->set_ready_for_input
EXPORTING
i_ready_for_input = 0.
*
ENDIF.

CALL METHOD cl_exithandler=>get_instance
EXPORTING
EXIT_NAME = 'RSAR_CONNECTOR'
NULL_INSTANCE_ACCEPTED = 'X'


IMPORTING 
ACT_IMP_EXISTING = 
CHANGING
instance = obj

EXCEPTIONS 
NO_REFERENCE = 1 
NO_INTERFACE_REFERENCE = 2 
NO_EXIT_INTERFACE = 3 
CLASS_NOT_IMPLEMENT_INTERFACE = 4 
SINGLE_EXIT_MULTIPLY_ACTIVE = 5 
CAST_ERROR = 6 
EXIT_NOT_EXISTING = 7 
DATA_INCONS_IN_EXIT_MANAGEM = 8 
others = 9 
.
IF sy-subrc 0.

MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO 
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. 
ENDIF.

CALL METHOD obj->get
EXPORTING
i_key = 'CUSTOM'
changing
c_operands = itab
.



ENDMODULE. " pbo OUTPUT
*&---------------------------------------------------------------------
*
*& Module pai INPUT
*&---------------------------------------------------------------------
*
MODULE pai_get INPUT.
save_ok = ok_code.
CLEAR ok_code.
CASE save_ok.
WHEN 'BACK'.
PERFORM leave_program.
WHEN 'EXIT'.
PERFORM exit_program.
WHEN 'SWITCH'.
PERFORM switch_edit_mode.
WHEN OTHERS.


do nothing 
ENDCASE.
ENDMODULE. " pai INPUT

*&---------------------------------------------------------------------
*
*& Form exit_program
*&---------------------------------------------------------------------
*
FORM exit_program .
LEAVE PROGRAM.
ENDFORM. " exit_program

&--------------------------------------------------------------------
*& Form leave_program
&--------------------------------------------------------------------

text 
---------------------------------------------------------------------
FORM leave_program.
LEAVE PROGRAM.
ENDFORM. " exit_program

*&---------------------------------------------------------------------
*
*& Form switch_edit_mode
*&---------------------------------------------------------------------
*
FORM switch_edit_mode .

*§3.Use IS_READY_FOR_INPUT to fetch current substate of editable cells.
IF g_grid->is_ready_for_input( ) EQ 0.
CALL METHOD g_grid->set_ready_for_input
EXPORTING
i_ready_for_input = 1.
ELSE.
CALL METHOD g_grid->set_ready_for_input
EXPORTING
i_ready_for_input = 0.
ENDIF.
ENDFORM. " switch_edit_mode

&--------------------------------------------------------------------
*& Form prepare_layout
&--------------------------------------------------------------------

text 
---------------------------------------------------------------------

-->PS_LAYOUT text 
---------------------------------------------------------------------
FORM prepare_layout CHANGING ps_layout TYPE lvc_s_layo.
ps_layout-zebra = 'X' .
ps_layout-grid_title = 'Flights' .
ps_layout-smalltitle = 'X' .
ps_layout-edit = 'X'.
ENDFORM. " prepare_layout

&--------------------------------------------------------------------
*& Form prepare_field_catalog
&--------------------------------------------------------------------


text 
---------------------------------------------------------------------

-->PT_FIELDCATtext 
---------------------------------------------------------------------
FORM prepare_field_catalog CHANGING pt_fieldcat TYPE lvc_t_fcat.

CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
i_structure_name = 'SFLIGHT'
CHANGING
ct_fieldcat = pt_fieldcat[]

EXCEPTIONS 
INCONSISTENT_INTERFACE = 1 
PROGRAM_ERROR = 2 
OTHERS = 3 
.
ENDFORM. "prepare_field_catalog

Regards,

Chandru

Former Member
0 Kudos

Please reply friends,,

its very urgent,,

Thanks & Regards,

Talwinder

Former Member
0 Kudos

hi

hope it will help you.

Reward if help.

Many a times there is a requirement to display ALV Grid (not ALV List) in the background Job. I have checked the SDN Forum for the same and it has been mentioned that ALV Grid cannot be displayed in Background, but the list output of ALV is possible. So user won’t have the actual Grid interface but the List interface.

There is a workaround to display ALV Grid in Background Job. The only restriction is you can’t schedule the job through SM36. You need to execute the transaction of the report program, fill in the selection screen data and hit Execute.

The job would be executed in background. User will be able to see the Job Log and Job Status after executing the program. User doesn’t have to go to SM37 to view the job status/log. Once the Job Status is changed to “COMPLETED”, user can click on “DISPLAY SPOOL” to view the ALV Grid.

Limitations:

Can’t schedulea background job

The session should be active until the background job is completed. If the session is closed, then user won’t be able to check the output in ALV Grid. User would be able to check the output through spool or SM37

Advantages:

If the spool width is greater than 255 characters, then the entire width could be seen in the output because the output is directed to an ALV Grid and not to spool

Interface of ALV Grid is available instead of ALV List even though it’s a background job.

Program won’t give the TIME OUT error

Steps Required:

1. Once you execute the program, the following screen would be displayed

2. Click “Display Job Status” to check the Status of the Background Job

3. Click on “Display the Job Log” to check the Log

4. Click on “Display Job Status” to check the Job Status

5. Click on “DISPLAY SPOOL” to check the spool content once the Job Status is changed to “COMPLETED”. Output is displayed in ALV Grid

Programs:

1. Two different programs needs to be created

ZPROGRAM_ONE: This is the 1st program, where the selection screen and all the data validations would be done. Error handling for invalid data should be done in this program.

Once the data validation is done, this program would call the 2nd program ZPROGEAM_TWO. Build the logic to display ALV Grid in this program. The logic will only display ALV in foreground and it won’t be reflected in the spool.

ZPROGRAM_TWO: This program would fetch all the data and do all the processing. If you want the spool output along with ALV Grid output, then build the logic in this program to display ALV Grid.

&----


*& Report ZPROGRAM_ONE *

*& *

&----


*& *

*& *

&----


REPORT zprogram_one .

  • PRASHANT PATIL

TABLES : mara,

tsp01.

type-pools:slis.

TYPES : BEGIN OF t_mara,

matnr TYPE mara-matnr,

ersda TYPE mara-ersda,

ernam TYPE mara-ernam,

laeda TYPE mara-laeda,

END OF t_mara.

DATA : i_mara TYPE STANDARD TABLE OF t_mara,

wa_mara TYPE t_mara,

wa_index TYPE indx, " For Index details

wa_index_key TYPE indx-srtfd VALUE 'PRG_ONE',

i_jobsteplist TYPE STANDARD TABLE OF tbtcstep, " For spool number

wa_params TYPE pri_params, " To Get Print Parameters

wa_jobhead TYPE tbtcjob, " To know the status of job

wa_jobsteplist TYPE tbtcstep, " To know the spool

w_jobname TYPE tbtco-jobname, " Job name for bckgrnd job

w_jobcount TYPE tbtco-jobcount, " Unique id for bckgrd job

w_path TYPE string, " Upload path

w_lsind TYPE sy-lsind, " Index

wa_seltab TYPE rsparams,

i_seltab TYPE STANDARD TABLE OF rsparams,

wa_index1 TYPE indx, " For Index details

wa_index_key1 TYPE indx-srtfd VALUE 'PRG_TWO',

i_fieldcat TYPE slis_t_fieldcat_alv,

wa_fieldcat LIKE LINE OF i_fieldcat.

----


  • CONSTANTS DECLARATION *

----


CONSTANTS :

c_a(1) TYPE c VALUE 'A',

c_m(1) TYPE c VALUE 'M',

c_l(1) TYPE c VALUE 'L',

c_c(1) TYPE c VALUE 'C',

c_zfdr(4) TYPE c VALUE 'ZFDR',

c_x(1) TYPE c VALUE 'X',

c_locl(4) TYPE c VALUE 'LOCL', " Destination is LOCAL

c_f(1) TYPE c VALUE 'F', " Job Status - Failed

c_s(1) TYPE c VALUE 'S',

c_p(1) TYPE c VALUE 'P'.

*----


  • SELECTION SCREEN PARAMETERS

*----


SELECT-OPTIONS : s_matnr FOR mara-matnr.

START-OF-SELECTION.

*----


  • Before the export, fill the data fields before CLUSTR

*----


wa_index-aedat = sy-datum.

wa_index-usera = sy-uname.

EXPORT s_matnr

TO DATABASE indx(st) FROM wa_index ID wa_index_key.

*----


  • To Open the Job for background processing

*----


PERFORM open_job.

*----


  • To get the print parameters

*----


PERFORM get_print_parameters.

*----


  • Submit the job in background

*----


PERFORM job_submit.

*----


  • Close the background job

*----


PERFORM job_close.

***************************************************************

          • This is the output screen with the buttons ********

***************************************************************

  • Create 3 buttons DISPLAY SPOOL, STATUS, JOBLOG

SET PF-STATUS 'ZS001'.

WRITE: / 'The program is submitted in Background'.

WRITE: / 'Press DISPLAY SPOOL to see the spool'.

WRITE: / 'Press STATUS to see the status of the background'.

AT USER-COMMAND.

*----


  • If user presses the 'BACK' button

*----


IF sy-ucomm = 'BAK'.

IF wa_jobhead-status = c_f OR

wa_jobhead-status = c_a.

LEAVE TO SCREEN 0.

ENDIF.

ENDIF.

*----


  • If the user presses the 'DISPLAY SPOOL' Button

*----


IF sy-ucomm = 'DISPLAY'.

PERFORM display_spool.

ENDIF.

*----


  • If the user presses the 'JOB STATUS' Button

*----


IF sy-ucomm = 'STATUS'.

PERFORM display_status.

ENDIF.

*----


  • If the user presses the 'JOB LOG' Button

*----


IF sy-ucomm = 'JOBLOG'.

PERFORM display_job_log.

ENDIF.

&----


*& Form open_job

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM open_job .

*----


  • This is to Create a new job which is to be submitted in background to

  • process sales order/delivery/invoice

  • Here we would get a unique id ( Jobcount ) which identifies our job

  • along with the job name which we have assigned to our job

*----


CONCATENATE sy-uname

sy-datum

sy-uzeit

INTO w_jobname . " Assign unique jobname

CALL FUNCTION 'JOB_OPEN'

EXPORTING

  • DELANFREP = ' '

  • JOBGROUP = ' '

jobname = w_jobname

  • SDLSTRTDT = NO_DATE

  • SDLSTRTTM = NO_TIME

  • JOBCLASS =

IMPORTING

jobcount = w_jobcount

  • CHANGING

  • RET =

EXCEPTIONS

cant_create_job = 1

invalid_job_data = 2

jobname_missing = 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.

ENDFORM. " open_job

&----


*& Form get_print_parameters

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM get_print_parameters .

DATA : l_valid TYPE c.

*----


  • This is to get the Print Parameters for the job which is to be

  • submitted in background to process sales order/delivery/invoice

*----


CALL FUNCTION 'GET_PRINT_PARAMETERS'

EXPORTING

  • ARCHIVE_ID = C_CHAR_UNKNOWN

  • ARCHIVE_INFO = C_CHAR_UNKNOWN

  • ARCHIVE_MODE = C_CHAR_UNKNOWN

  • ARCHIVE_TEXT = C_CHAR_UNKNOWN

  • AR_OBJECT = C_CHAR_UNKNOWN

  • ARCHIVE_REPORT = C_CHAR_UNKNOWN

  • AUTHORITY = C_CHAR_UNKNOWN

  • COPIES = C_NUM3_UNKNOWN

  • COVER_PAGE = C_CHAR_UNKNOWN

  • DATA_SET = C_CHAR_UNKNOWN

  • DEPARTMENT = C_CHAR_UNKNOWN

destination = c_locl " LOCL

  • EXPIRATION = C_NUM1_UNKNOWN

immediately = space

  • IN_ARCHIVE_PARAMETERS = ' '

  • IN_PARAMETERS = ' '

  • LAYOUT = C_CHAR_UNKNOWN

  • LINE_COUNT = C_INT_UNKNOWN

  • LINE_SIZE = C_INT_UNKNOWN

  • LIST_NAME = C_CHAR_UNKNOWN

  • LIST_TEXT = C_CHAR_UNKNOWN

  • MODE = ' '

new_list_id = c_x

  • PROTECT_LIST = C_CHAR_UNKNOWN

no_dialog = c_x

  • RECEIVER = C_CHAR_UNKNOWN

  • RELEASE = C_CHAR_UNKNOWN

  • REPORT = C_CHAR_UNKNOWN

  • SAP_COVER_PAGE = C_CHAR_UNKNOWN

  • HOST_COVER_PAGE = C_CHAR_UNKNOWN

  • PRIORITY = C_NUM1_UNKNOWN

  • SAP_OBJECT = C_CHAR_UNKNOWN

  • TYPE = C_CHAR_UNKNOWN

user = sy-uname

  • USE_OLD_LAYOUT = ' '

  • UC_DISPLAY_MODE = C_CHAR_UNKNOWN

  • DRAFT = C_CHAR_UNKNOWN

  • ABAP_LIST = ' '

  • USE_ARCHIVENAME_DEF = ' '

  • DEFAULT_SPOOL_SIZE = C_CHAR_UNKNOWN

  • PO_FAX_STORE = ' '

  • NO_FRAMES = C_CHAR_UNKNOWN

IMPORTING

  • OUT_ARCHIVE_PARAMETERS =

out_parameters = wa_params

valid = l_valid

EXCEPTIONS

archive_info_not_found = 1

invalid_print_params = 2

invalid_archive_params = 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.

ENDFORM. " get_print_parameters

&----


*& Form job_submit

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM job_submit .

*----


  • The job which we have created & the unique id ( jobcount ) which we

  • have got identifies our job. Hence those parameters are passed along

  • with the name of the background program "ZPROGRAM_TWO"

  • The job is submitted in background.

*----


CALL FUNCTION 'JOB_SUBMIT'

EXPORTING

  • ARCPARAMS =

authcknam = sy-uname

  • COMMANDNAME = ' '

  • OPERATINGSYSTEM = ' '

  • EXTPGM_NAME = ' '

  • EXTPGM_PARAM = ' '

  • EXTPGM_SET_TRACE_ON = ' '

  • EXTPGM_STDERR_IN_JOBLOG = 'X'

  • EXTPGM_STDOUT_IN_JOBLOG = 'X'

  • EXTPGM_SYSTEM = ' '

  • EXTPGM_RFCDEST = ' '

  • EXTPGM_WAIT_FOR_TERMINATION = 'X'

jobcount = w_jobcount

jobname = w_jobname

  • LANGUAGE = SY-LANGU

priparams = wa_params

report = 'ZPROGRAM_TWO'

  • VARIANT = ' '

  • IMPORTING

  • STEP_NUMBER =

EXCEPTIONS

bad_priparams = 1

bad_xpgflags = 2

invalid_jobdata = 3

jobname_missing = 4

job_notex = 5

job_submit_failed = 6

lock_failed = 7

program_missing = 8

prog_abap_and_extpg_set = 9

OTHERS = 10

.

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. " job_submit

&----


*& Form job_close

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM job_close .

*----


  • Once the job is submitted in background then the job is closed

*----


CALL FUNCTION 'JOB_CLOSE'

EXPORTING

  • AT_OPMODE = ' '

  • AT_OPMODE_PERIODIC = ' '

  • CALENDAR_ID = ' '

  • EVENT_ID = ' '

  • EVENT_PARAM = ' '

  • EVENT_PERIODIC = ' '

jobcount = w_jobcount

jobname = w_jobname

  • LASTSTRTDT = NO_DATE

  • LASTSTRTTM = NO_TIME

  • PRDDAYS = 0

  • PRDHOURS = 0

  • PRDMINS = 0

  • PRDMONTHS = 0

  • PRDWEEKS = 0

  • PREDJOB_CHECKSTAT = ' '

  • PRED_JOBCOUNT = ' '

  • PRED_JOBNAME = ' '

  • SDLSTRTDT = NO_DATE

  • SDLSTRTTM = NO_TIME

  • STARTDATE_RESTRICTION = BTC_PROCESS_ALWAYS

strtimmed = c_x

  • TARGETSYSTEM = ' '

  • START_ON_WORKDAY_NOT_BEFORE = SY-DATUM

  • START_ON_WORKDAY_NR = 0

  • WORKDAY_COUNT_DIRECTION = 0

  • RECIPIENT_OBJ =

  • TARGETSERVER = ' '

  • DONT_RELEASE = ' '

  • TARGETGROUP = ' '

  • DIRECT_START =

  • IMPORTING

  • JOB_WAS_RELEASED =

  • CHANGING

  • RET =

EXCEPTIONS

cant_start_immediate = 1

invalid_startdate = 2

jobname_missing = 3

job_close_failed = 4

job_nosteps = 5

job_notex = 6

lock_failed = 7

invalid_target = 8

OTHERS = 9

.

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. " job_close

&----


*& Form display_spool

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM display_spool .

*----


  • To Read the Job to get the spool details

*----


DATA : l_rqident TYPE tsp01-rqident, " Spool Number

l_spoolno TYPE tsp01_sp0r-rqid_char.

CLEAR : l_rqident,

w_lsind,

wa_jobsteplist.

REFRESH : i_jobsteplist.

SET PF-STATUS 'ZAR02'.

*----


  • Get the Spool Number

*----


CALL FUNCTION 'BP_JOB_READ'

EXPORTING

job_read_jobcount = w_jobcount

job_read_jobname = w_jobname

job_read_opcode = '20'

  • JOB_STEP_NUMBER =

IMPORTING

job_read_jobhead = wa_jobhead

TABLES

job_read_steplist = i_jobsteplist

  • CHANGING

  • RET =

EXCEPTIONS

invalid_opcode = 1

job_doesnt_exist = 2

job_doesnt_have_steps = 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.

*----


  • Read the Job Step list to get the spool number

*----


READ TABLE i_jobsteplist INTO wa_jobsteplist INDEX 1.

CHECK wa_jobsteplist-listident <> space.

*----


  • Spool Number

*----


l_rqident = wa_jobsteplist-listident.

MOVE l_rqident TO l_spoolno.

*----


  • Check the spool in TSP01

*----


SELECT SINGLE * FROM tsp01 WHERE rqident = l_rqident.

IF sy-subrc = 0.

LEAVE TO LIST-PROCESSING.

CALL FUNCTION 'RSPO_R_RDELETE_SPOOLREQ'

EXPORTING

spoolid = l_spoolno

  • IMPORTING

  • RC =

  • STATUS =

.

PERFORM show_alv.

ENDIF.

w_lsind = sy-lsind.

IF sy-lsind GE 19.

sy-lsind = 1.

ENDIF.

ENDFORM. " display_spool

&----


*& Form show_alv

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM show_alv .

*----


  • Before the import, fill the data fields before CLUSTR.

*----


wa_index1-aedat = sy-datum.

wa_index1-usera = sy-uname.

*----


  • To Import the selection screen data from Calling Program

*----


IMPORT i_mara

FROM DATABASE indx(st) ID wa_index_key1 TO wa_index1.

FREE MEMORY ID wa_index_key1.

  • This prepares the field-catalog for ALV.

PERFORM prepare_fieldcatalog.

  • This displays the output in ALV format .

PERFORM display_alv.

ENDFORM. " show_alv

&----


*& Form display_status

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM display_status .

*----


  • To Display the STATUS of the JOB which is exectued in background

*----


CLEAR : wa_jobsteplist.

REFRESH : i_jobsteplist.

WRITE:/ 'DISPLAYING JOB STATUS'.

CALL FUNCTION 'BP_JOB_READ'

EXPORTING

job_read_jobcount = w_jobcount

job_read_jobname = w_jobname

job_read_opcode = '20'

  • JOB_STEP_NUMBER =

IMPORTING

job_read_jobhead = wa_jobhead

TABLES

job_read_steplist = i_jobsteplist

  • CHANGING

  • RET =

EXCEPTIONS

invalid_opcode = 1

job_doesnt_exist = 2

job_doesnt_have_steps = 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.

*----


  • To Display the status text as per the status type

*----


CASE wa_jobhead-status.

WHEN 'S'. WRITE: / 'Scheduled'.

WHEN 'R'. WRITE: / 'Released'.

WHEN 'F'. WRITE: / 'Completed'.

WHEN 'A'. WRITE: / 'Cancelled'.

WHEN OTHERS.

ENDCASE.

IF sy-lsind GE 19.

sy-lsind = 1.

ENDIF.

ENDFORM. " display_status

&----


*& Form display_job_log

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM display_job_log .

*----


  • To display the log of the background program

*----


LEAVE TO LIST-PROCESSING.

CALL FUNCTION 'BP_JOBLOG_SHOW_SM37B'

EXPORTING

client = sy-mandt

jobcount = w_jobcount

joblogid = ' '

jobname = w_jobname

EXCEPTIONS

error_reading_jobdata = 1

error_reading_joblog_data = 2

jobcount_missing = 3

joblog_does_not_exist = 4

joblog_is_empty = 5

joblog_show_canceled = 6

jobname_missing = 7

job_does_not_exist = 8

no_joblog_there_yet = 9

no_show_privilege_given = 10

OTHERS = 11.

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_job_log

&----


*& Form prepare_fieldcatalog

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM prepare_fieldcatalog .

CLEAR wa_fieldcat.

wa_fieldcat-fieldname = 'MATNR'.

wa_fieldcat-tabname = 'I_MARA'.

wa_fieldcat-reptext_ddic = 'Material no.'.

wa_fieldcat-outputlen = '18'.

APPEND wa_fieldcat TO i_fieldcat.

CLEAR wa_fieldcat.

wa_fieldcat-fieldname = 'ERSDA'.

wa_fieldcat-tabname = 'I_MARA'.

wa_fieldcat-reptext_ddic = 'Creation date'.

wa_fieldcat-outputlen = '10'.

APPEND wa_fieldcat TO i_fieldcat.

CLEAR wa_fieldcat.

wa_fieldcat-fieldname = 'ERNAM'.

wa_fieldcat-tabname = 'I_MARA'.

wa_fieldcat-reptext_ddic = 'Name of Person'.

wa_fieldcat-outputlen = '10'.

APPEND wa_fieldcat TO i_fieldcat.

CLEAR wa_fieldcat.

wa_fieldcat-fieldname = 'LAEDA'.

wa_fieldcat-tabname = 'I_MARA'.

wa_fieldcat-reptext_ddic = ' Last Change'.

wa_fieldcat-outputlen = '10'.

APPEND wa_fieldcat TO i_fieldcat.

ENDFORM. " prepare_fieldcatalog

&----


*& Form display_alv

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM display_alv .

  • Call ABAP List Viewer (ALV)

call function 'REUSE_ALV_GRID_DISPLAY'

exporting

it_fieldcat = i_fieldcat

tables

t_outtab = i_mara.

ENDFORM. " display_alv

• ZPROGRAM_TWO: This is the 2nd program which would be called from program ZPROGRAM_ONE.

&----


*& Report ZPROGRAM_TWO *

*& *

&----


*& *

*& *

&----


REPORT zprogram_two .

  • PRASHANT PATIL

TABLES : mara.

TYPE-POOLS:slis.

TYPES : BEGIN OF t_mara,

matnr TYPE mara-matnr,

ersda TYPE mara-ersda,

ernam TYPE mara-ernam,

laeda TYPE mara-laeda,

END OF t_mara.

DATA : i_mara TYPE STANDARD TABLE OF t_mara,

wa_mara TYPE t_mara,

wa_index TYPE indx, " For Index details

wa_index_key TYPE indx-srtfd VALUE 'PRG_ONE',

wa_index1 TYPE indx, " For Index details

wa_index_key1 TYPE indx-srtfd VALUE 'PRG_TWO',

i_fieldcat TYPE slis_t_fieldcat_alv,

wa_fieldcat LIKE LINE OF i_fieldcat.

SELECT-OPTIONS : s_matnr FOR mara-matnr.

*----


  • Before the import, fill the data fields before CLUSTR.

*----


wa_index-aedat = sy-datum.

wa_index-usera = sy-uname.

*----


  • To Import the selection screen data from Calling Program

*----


IMPORT s_matnr

FROM DATABASE indx(st) ID wa_index_key TO wa_index.

FREE MEMORY ID wa_index_key.

SELECT matnr

ersda

ernam

laeda

FROM mara

INTO TABLE i_mara

WHERE matnr IN s_matnr.

PERFORM prepare_fieldcatalog.

PERFORM display_alv.

*----


  • Before the export, fill the data fields before CLUSTR

*----


wa_index1-aedat = sy-datum.

wa_index1-usera = sy-uname.

EXPORT i_mara

TO DATABASE indx(st) FROM wa_index1 ID wa_index_key1.

&----


*& Form prepare_fieldcatalog

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM prepare_fieldcatalog .

CLEAR wa_fieldcat.

wa_fieldcat-fieldname = 'MATNR'.

wa_fieldcat-tabname = 'I_MARA'.

wa_fieldcat-outputlen = '18'.

APPEND wa_fieldcat TO i_fieldcat.

CLEAR wa_fieldcat.

wa_fieldcat-fieldname = 'ERSDA'.

wa_fieldcat-tabname = 'I_MARA'.

wa_fieldcat-outputlen = '10'.

APPEND wa_fieldcat TO i_fieldcat.

CLEAR wa_fieldcat.

wa_fieldcat-fieldname = 'ERNAM'.

wa_fieldcat-tabname = 'I_MARA'.

wa_fieldcat-outputlen = '10'.

APPEND wa_fieldcat TO i_fieldcat.

CLEAR wa_fieldcat.

wa_fieldcat-fieldname = 'LAEDA'.

wa_fieldcat-tabname = 'I_MARA'.

wa_fieldcat-outputlen = '10'.

APPEND wa_fieldcat TO i_fieldcat.

ENDFORM. " prepare_fieldcatalog

&----


*& Form display_alv

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM display_alv .

  • Call ABAP List Viewer (ALV)

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

it_fieldcat = i_fieldcat

TABLES

t_outtab = i_mara.

ENDFORM. " display_alv

its possible to display ALV Grid using OO ALV. Following code can be used instead of FM.

  • In the PBO, add following code

SET PF-STATUS 'ZSTAT'.

  • If program is executed in background

CALL METHOD cl_gui_alv_grid=>offline

RECEIVING

e_offline = off.

IF off IS INITIAL.

IF container1 IS INITIAL.

CREATE OBJECT container1

EXPORTING

container_name = 'CC_ALV1' .

ENDIF.

ENDIF.

CREATE OBJECT g_grid1

EXPORTING

i_parent = container1.

CALL METHOD g_grid1->set_table_for_first_display

EXPORTING

  • I_BUFFER_ACTIVE =

  • I_BYPASSING_BUFFER =

  • I_CONSISTENCY_CHECK =

  • I_STRUCTURE_NAME =

  • IS_VARIANT =

i_save = 'A'

i_default = ' '

  • is_layout =

  • is_print =

  • IT_SPECIAL_GROUPS =

  • it_toolbar_excluding =

  • IT_HYPERLINK =

  • IT_ALV_GRAPHICS =

  • IT_EXCEPT_QINFO =

CHANGING

it_outtab = i_output

it_fieldcatalog = i_fieldcatalog

  • IT_SORT =

  • IT_FILTER =

EXCEPTIONS

invalid_parameter_combination = 1

program_error = 2

too_many_lines = 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.