Oop report programme: call method
hi, i need ur guys advice about my oop report. its contain 2 class, lcl_main (main programme), lcl_disp(display report), lcl_update (upload report). all 3 class defination as below:
* C.L.A.S.S D.E.F.I.N.I.T.I.O.N
class lcl_main definition.
public section.
methods: init,
get_filename,
load_data,
chk_col,
chk_data,
chk_mandatory,
disp_status.
endclass.
class lcl_disp definition inheriting from lcl_main.
public section.
methods: chk_9700,
disp_success.
endclass.
class lcl_update definition inheriting from lcl_main.
public section.
methods: update9700.
endclass.
the idea was, i planned to put all methods which will be access by lcl_disp and lcl_update into lcl_main. i currently cofious to call method at lcl_main. currently i done as below, which if want to display (user will choose radio button display - p_view) i will create the object for lcl_disp and call all method in lcl_main and lcl_disp , for example o_disp-> init ... o_disp->loaddata .. and etc. the problem was if i want to choose the update , i need to object for lcl_update and call again the lcl_main with: o_update-> init ... o_update->loaddata .. and etc. the code as below.
the question , the programme can be successfully run with this method but i faced the problem when i tried to create a call method inside others method because at the START-OF-SELECTION i need to identify with object (lcl_disp or lcl_update) first.
2nd, i tried to figure out how at the start-of-selection , i no need to repeat to call method init, loaddata repeatly for different class (lcl_disp and lcl_update). really need advice. thank you.
*---------------------------------------------------------------------|
* INITIALIZATION |
*---------------------------------------------------------------------|
initialization.
data: o_main type ref to lcl_main.
create object: o_main.
* START OF SELECTION *
start-of-selection.
data: o_disp type ref to lcl_disp,
o_update type ref to lcl_update.
create object: o_disp, o_update.
if p_view = 'X'. "for view report
set handler o_handler->handle_event for all instances.
call method o_disp->init.
call method o_disp->load_data.
call method o_disp->chk_col.
"only proceeed if initial - col header and pernr syntax (pre 100 and length = 8)
if o_disp->status = 0.
call method o_disp->chk_data.
endif.
if o_disp->status = 0.
call method o_disp->chk_mandatory.
endif.
if o_disp->status = 0.
call method o_disp->chk_9700.
endif.
call method o_disp->disp_status.
elseif p_upld = 'X'."for update report
set handler o_handler->handle_event for all instances.
call method o_update->init.
call method o_update->load_data.
call method o_update->chk_col.
"only proceeed if initial - col header and pernr syntax (pre 100 and length = 8)
if o_update->status = 0.
call method o_update->chk_data.
endif.
if o_update->status = 0.
call method o_update->update9700.
endif.
call method o_update->disp_status.
endif.
class lcl_main implementation.
method get_filename.
endmethod.
method init.
endmethod.
method load_data.
endmethod.
method chk_col.
endmethod.
method chk_data.
endmethod.
method chk_mandatory.
endmethod.
method disp_status.
endmethod.
endclass.
class lcl_disp implementation.
method chk_9700.
endmethod.
method disp_success.
endclass.
class lcl_update implementation.
method update9700.
endmethod.
endclass.
Edited by: firdaus hashim on Nov 23, 2009 11:01 AM
Hello Sam,
Go to the class CL_DD_DOCUMENT (trxn SE24).
In the 'Attributes' tab, check for the attributes with SDYDO_ATTRIBUTE as the associated type.
It gives all the available attributes.
BR,
Suhas
Similar Messages
-
I NEVER USED OOPS CONCEPT.BUT I GOT A TASK ON ALV REPORT USING class CL_GUI_ALV_GRID, call method SET_TABLE_FOR_FIRST_DISPLAY for ALV . I HAD PASSED THE VALUES FROM INTERNAL TABLE AND GOT OUTPUT IN ALV.
The problem is When i save an layout(default setting button ).
iam unable to get the output for all fields.
if u want i will send screenshots to ur mail
THANKS IN ADVANCE.ok fine,
In the output (alv grid) there is an icon for layout settings.
if i want to save layout (as DEFAULT SETTING) i am missing some fields in output
EX:
mat no | batch | proces order | time | date |
when i save layout (as DEFAULT SETTING) i am missing some fields in output
mat no | batch |
the rest of the field were not displayed.
if u are not clear just ask me. i will send some more examples. -
Hi Friends,
I just want to convert a normal alv grid report to ALV OOPS report using classes,methods and objects, can you please help me on it.
*I have sent a sample ALV grid report program.
REPORT YSDB_ALV_ECC NO STANDARD PAGE HEADING LINE-SIZE 260 LINE-COUNT 58.
TABLES:
VBRK,
VBRP.
TYPE-POOLS: SLIS.
TYPES:
BEGIN OF Y_VBRK_STRUCT ,
VBELN TYPE VBRK-VBELN,
FKART TYPE VBRK-FKART,
FKDAT TYPE VBRK-FKDAT,
BUKRS TYPE VBRK-BUKRS,
NETWR TYPE VBRK-NETWR,
END OF Y_VBRK_STRUCT.
TYPES:
BEGIN OF Y_VBRP_STRUCT,
VBELN TYPE VBRP-VBELN,
POSNR TYPE VBRP-POSNR,
MATNR TYPE VBRP-MATNR,
FKIMG TYPE VBRP-FKIMG,
AUBEL TYPE VBRP-AUBEL,
KOSTL TYPE VBRP-KOSTL,
PS_PSP_PNR TYPE VBRP-PS_PSP_PNR,
ARKTX TYPE VBRP-ARKTX,
END OF Y_VBRP_STRUCT.
TYPES:
BEGIN OF Y_DISPLAY_STRUCT,
VBELN TYPE VBRK-VBELN,
FKART TYPE VBRK-FKART,
FKDAT TYPE VBRK-FKDAT,
BUKRS TYPE VBRK-BUKRS,
NETWR TYPE VBRK-NETWR,
POSNR TYPE VBRP-POSNR,
MATNR TYPE VBRP-MATNR,
FKIMG TYPE VBRP-FKIMG,
AUBEL TYPE VBRP-AUBEL,
KOSTL TYPE VBRP-KOSTL,
PS_PSP_PNR TYPE VBRP-PS_PSP_PNR,
ARKTX TYPE VBRP-ARKTX,
END OF Y_DISPLAY_STRUCT .
DATA: W_INDEX LIKE SY-TABIX.
DATA: W_FIELDCATALOG TYPE SLIS_FIELDCAT_ALV.
DATA: T_FIELDCATALOG1 TYPE SLIS_T_FIELDCAT_ALV.
DATA: W_REPID TYPE SY-REPID.
DATA: T_VBRK_ITAB TYPE STANDARD TABLE OF Y_VBRK_STRUCT .
DATA: T_VBRP_ITAB TYPE STANDARD TABLE OF Y_VBRP_STRUCT .
DATA: T_DISPLAY_ITAB TYPE STANDARD TABLE OF Y_DISPLAY_STRUCT.
DATA: E_DISPLAY TYPE Y_DISPLAY_STRUCT.
SELECT-OPTIONS S_VBELN FOR VBRK-VBELN.
SELECT-OPTIONS S_BUKRS FOR VBRK-BUKRS.
SELECT-OPTIONS S_FKDAT FOR VBRK-FKDAT.
START-OF-SELECTION.
PERFORM F_GET_DATA1.
PERFORM F_PROCESS_DATA.
PERFORM F_FIELDCATLOG.
PERFORM F_DISPLAY_DATA.
PERFORM F_CLEAR_FIELDS.
*& Form get_data1
text
FORM F_GET_DATA1 .
SELECT VBELN FKART FKDAT BUKRS NETWR
FROM VBRK
INTO TABLE T_VBRK_ITAB
WHERE BUKRS IN S_BUKRS
AND FKDAT IN S_FKDAT
AND VBELN IN S_VBELN.
IF SY-SUBRC NE 0.
FREE: T_VBRK_ITAB.
ENDIF.
IF NOT T_VBRK_ITAB IS INITIAL.
SELECT VBELN POSNR MATNR FKIMG AUBEL
KOSTL PS_PSP_PNR ARKTX
FROM VBRP
INTO TABLE T_VBRP_ITAB
FOR ALL ENTRIES IN T_VBRK_ITAB
WHERE VBELN EQ T_VBRK_ITAB-VBELN.
IF SY-SUBRC NE 0.
FREE: T_VBRK_ITAB.
ENDIF.
ENDIF.
ENDFORM. " GET_DATA1
text
--> p1 text
<-- p2 text
FORM F_PROCESS_DATA .
SORT T_VBRK_ITAB BY VBELN.
SORT T_VBRP_ITAB BY VBELN.
CLEAR: W_INDEX.
UNASSIGN <FS_STRUCT1>.
UNASSIGN <FS_STRUCT2>.
LOOP AT T_VBRK_ITAB ASSIGNING <FS_STRUCT1>.
READ TABLE T_VBRP_ITAB ASSIGNING <FS_STRUCT2> WITH KEY VBELN = <FS_STRUCT1>-VBELN BINARY SEARCH.
IF SY-SUBRC EQ 0.
MOVE SY-TABIX TO W_INDEX.
WHILE SY-SUBRC IS INITIAL AND <FS_STRUCT1>-VBELN = <FS_STRUCT2>-VBELN.
*Header Items Moving
MOVE:
<FS_STRUCT1>-FKART TO E_DISPLAY-FKART,
<FS_STRUCT1>-FKDAT TO E_DISPLAY-FKDAT,
<FS_STRUCT1>-BUKRS TO E_DISPLAY-BUKRS,
<FS_STRUCT1>-NETWR TO E_DISPLAY-NETWR.
*Line items Moving
MOVE: <FS_STRUCT2>-VBELN TO E_DISPLAY-VBELN,
<FS_STRUCT2>-POSNR TO E_DISPLAY-POSNR,
<FS_STRUCT2>-MATNR TO E_DISPLAY-MATNR,
<FS_STRUCT2>-FKIMG TO E_DISPLAY-FKIMG,
<FS_STRUCT2>-AUBEL TO E_DISPLAY-AUBEL,
<FS_STRUCT2>-KOSTL TO E_DISPLAY-KOSTL,
<FS_STRUCT2>-PS_PSP_PNR TO E_DISPLAY-PS_PSP_PNR,
<FS_STRUCT2>-ARKTX TO E_DISPLAY-ARKTX.
APPEND E_DISPLAY TO T_DISPLAY_ITAB.
CLEAR E_DISPLAY.
ADD 1 TO W_INDEX.
READ TABLE T_VBRP_ITAB ASSIGNING <FS_STRUCT2> INDEX W_INDEX.
IF SY-SUBRC NE 0.
EXIT.
ENDIF.
ENDWHILE.
ENDIF.
ENDLOOP.
ENDFORM. " GET_DATA3
*& Form Fieldcatlog
text
--> p1 text
<-- p2 text
FORM F_FIELDCATLOG .
W_FIELDCATALOG-FIELDNAME = TEXT-001.
W_FIELDCATALOG-SELTEXT_L = TEXT-002.
MOVE : 1 TO W_FIELDCATALOG-COL_POS,
20 TO W_FIELDCATALOG-OUTPUTLEN.
APPEND W_FIELDCATALOG TO T_FIELDCATALOG1.
CLEAR W_FIELDCATALOG.
W_FIELDCATALOG-FIELDNAME = TEXT-003.
W_FIELDCATALOG-SELTEXT_L = TEXT-004.
MOVE : 2 TO W_FIELDCATALOG-COL_POS,
20 TO W_FIELDCATALOG-OUTPUTLEN.
APPEND W_FIELDCATALOG TO T_FIELDCATALOG1.
CLEAR W_FIELDCATALOG.
W_FIELDCATALOG-FIELDNAME = TEXT-005.
W_FIELDCATALOG-SELTEXT_L = TEXT-006.
MOVE : 3 TO W_FIELDCATALOG-COL_POS,
20 TO W_FIELDCATALOG-OUTPUTLEN.
APPEND W_FIELDCATALOG TO T_FIELDCATALOG1.
CLEAR W_FIELDCATALOG.
W_FIELDCATALOG-FIELDNAME = TEXT-007.
W_FIELDCATALOG-SELTEXT_L = TEXT-008.
MOVE : 4 TO W_FIELDCATALOG-COL_POS,
20 TO W_FIELDCATALOG-OUTPUTLEN.
APPEND W_FIELDCATALOG TO T_FIELDCATALOG1.
CLEAR W_FIELDCATALOG.
W_FIELDCATALOG-FIELDNAME = TEXT-009.
W_FIELDCATALOG-SELTEXT_L = TEXT-010.
MOVE : 5 TO W_FIELDCATALOG-COL_POS,
20 TO W_FIELDCATALOG-OUTPUTLEN.
APPEND W_FIELDCATALOG TO T_FIELDCATALOG1.
CLEAR W_FIELDCATALOG.
W_FIELDCATALOG-FIELDNAME = TEXT-011.
W_FIELDCATALOG-SELTEXT_L = TEXT-012.
MOVE : 6 TO W_FIELDCATALOG-COL_POS,
20 TO W_FIELDCATALOG-OUTPUTLEN.
APPEND W_FIELDCATALOG TO T_FIELDCATALOG1.
CLEAR W_FIELDCATALOG.
W_FIELDCATALOG-FIELDNAME = TEXT-013.
W_FIELDCATALOG-SELTEXT_L = TEXT-014.
MOVE : 7 TO W_FIELDCATALOG-COL_POS,
20 TO W_FIELDCATALOG-OUTPUTLEN.
APPEND W_FIELDCATALOG TO T_FIELDCATALOG1.
CLEAR W_FIELDCATALOG.
W_FIELDCATALOG-FIELDNAME = TEXT-015.
W_FIELDCATALOG-SELTEXT_L = TEXT-016.
MOVE : 8 TO W_FIELDCATALOG-COL_POS,
20 TO W_FIELDCATALOG-OUTPUTLEN.
APPEND W_FIELDCATALOG TO T_FIELDCATALOG1.
CLEAR W_FIELDCATALOG.
W_FIELDCATALOG-FIELDNAME = TEXT-017.
W_FIELDCATALOG-SELTEXT_L = TEXT-018.
MOVE : 9 TO W_FIELDCATALOG-COL_POS,
20 TO W_FIELDCATALOG-OUTPUTLEN.
APPEND W_FIELDCATALOG TO T_FIELDCATALOG1.
CLEAR W_FIELDCATALOG.
ENDFORM. " Fieldcatlog
*& Form DISPLAY_DATA
text
--> p1 text
<-- p2 text
FORM F_DISPLAY_DATA .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = W_REPID
I_CALLBACK_TOP_OF_PAGE = 'AAAAAAAAADDAADA' "TEXT-021
I_GRID_TITLE = TEXT-020
IT_FIELDCAT = T_FIELDCATALOG1
TABLES
T_OUTTAB = T_DISPLAY_ITAB.
IF SY-SUBRC NE 0.
EXIT.
ENDIF.
CLEAR: W_REPID.
CLEAR: T_FIELDCATALOG1.
ENDFORM. " DISPLAY_DATA
*& Form F_Clear_fields
text
--> p1 text
<-- p2 text
FORM F_CLEAR_FIELDS .
FREE: T_VBRK_ITAB.
FREE: T_VBRP_ITAB.
FREE: T_DISPLAY_ITAB.
CLEAR: W_FIELDCATALOG.
ENDFORM. " F_Clear_fields
Regards
DineshIn ALV oops,
1. You need screen on which you must create a custom container. - screen 100
2. In PBO of 100, create module for displaying ALV
MODULE DISPLAY_ALV OUTPUT
PERFORM CREATE_CONTAINER "IN WHICH YOU USE THE CREATE OBJECT METHOD OF CL_GUI_CUSTOM_CONTAINER
PERFORM CREATE_ALV "IN WHICH YOU USE CREATE_OBJECT METHOD OF CL_GUI_ALV_GRID.
PERFORM PREPARE_FIELDCAT "creating fcat using LVC_S_FCAT structure
PERFORM DISPLAY "here you use the SET_TABLE_FOR_FIRST_DISPLAY method of CL_GUI_ALV_GRID class,
where you provide the internal table name and fieldcat internal table
ENDMODULE -
How to get the o/p of the report by calling a method in grid form or table.
Hi All,
I have a doubt in using the function module from the report . Can any one tell me how to achieve this.l
method GET_CUSTOMERS.
DATA IT_IDRANGE TYPE TABLE OF BAPICUSTOMER_IDRANGE INITIAL SIZE 0.
DATA IT_ADDRDATA TYPE TABLE OF BAPICUSTOMER_ADDRESSDATA INITIAL SIZE 0.
DATA WA_IDRANGE LIKE LINE OF IT_IDRANGE.
DATA WA_ADDRDATA LIKE LINE OF IT_ADDRDATA.
*WA_IDRANGE = IDRANGE.
*WRITE / WA_IDRANGE.
WA_IDRANGE-SIGN = 'I'.
WA_IDRANGE-OPTION = 'CP'.
WA_IDRANGE-LOW = '*'.
WA_IDRANGE-HIGH = ' '.
WRITE: / WA_IDRANGE-SIGN,WA_IDRANGE-OPTION,WA_IDRANGE-LOW,WA_IDRANGE-HIGH.
APPEND WA_IDRANGE TO IT_IDRANGE.
CALL FUNCTION 'BAPI_CUSTOMER_GETLIST'
EXPORTING
MAXROWS = 0
CPDONLY =
IMPORTING
RETURN =
TABLES
IDRANGE = IT_IDRANGE
ADDRESSDATA = it_addrdata
SPECIALDATA =
loop at it_addrdata into wa_addrdata.
write / wa_addrdata.
ENDLOOP.
endmethod.
now from the report am calling this and i need the result ie wa_addrdata in table form so while using the FM ALV_GRID_DISPLAY in class am getting the o/p. but how do i acheive it from report(SE38)
DATA OBJ TYPE REF TO ZGBAPI_CUSTOMER_GETLIST.
CREATE OBJECT OBJ.
DATA IT_IDRANGE TYPE TABLE OF BAPICUSTOMER_IDRANGE INITIAL SIZE 0.
DATA IT_ADDRDATA TYPE TABLE OF BAPICUSTOMER_ADDRESSDATA INITIAL SIZE 0.
DATA WA_IDRANGE LIKE LINE OF IT_IDRANGE.
DATA WA_ADDRDATA LIKE LINE OF IT_ADDRDATA.
*WRITE / WA_IDRANGE.
*WA_IDRANGE-SIGN = 'I'.
*WA_IDRANGE-OPTION = 'CP'.
WA_IDRANGE-LOW = ''.
*WA_IDRANGE-HIGH = ' '.
CALL METHOD OBJ->get_customers
EXPORTING
idrange = WA_IDRANGE
IMPORTING
addressdata = WA_ADDRDATA
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = ' '
I_BYPASSING_BUFFER = ' '
I_BUFFER_ACTIVE = ' '
I_CALLBACK_PROGRAM = ' '
I_CALLBACK_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND = ' '
I_CALLBACK_TOP_OF_PAGE = ' '
I_CALLBACK_HTML_TOP_OF_PAGE = ' '
I_CALLBACK_HTML_END_OF_LIST = ' '
I_STRUCTURE_NAME = 'BAPICUSTOMER_ADDRESSDATA'
I_BACKGROUND_ID = ' '
I_GRID_TITLE =
I_GRID_SETTINGS =
IS_LAYOUT =
IT_FIELDCAT =
IT_EXCLUDING =
IT_SPECIAL_GROUPS =
IT_SORT =
IT_FILTER =
IS_SEL_HIDE =
I_DEFAULT = 'X'
I_SAVE = ' '
IS_VARIANT =
IT_EVENTS =
IT_EVENT_EXIT =
IS_PRINT =
IS_REPREP_ID =
I_SCREEN_START_COLUMN = 0
I_SCREEN_START_LINE = 0
I_SCREEN_END_COLUMN = 0
I_SCREEN_END_LINE = 0
I_HTML_HEIGHT_TOP = 0
I_HTML_HEIGHT_END = 0
IT_ALV_GRAPHICS =
IT_HYPERLINK =
IT_ADD_FIELDCAT =
IT_EXCEPT_QINFO =
IR_SALV_FULLSCREEN_ADAPTER =
*IMPORTING
E_EXIT_CAUSED_BY_CALLER =
ES_EXIT_CAUSED_BY_USER =
TABLES
t_outtab = IT_ADDRDATA
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2
IF sy-subrc <> 0.
Implement suitable error handling here
ENDIF.
**"endloop.
i want the o/p of this in table form... Pleae help.Thanks a lot Rod for your prompt reply.
I agree with you about the accuracy of the data. Are you aware of any other way to track the execution times of Discoverer reports?
Thanks
Giovanni -
ABAP OOP / Calling Method ...Help
Trying out few oop codes....
While calling class instance methods and passing parameters, when to use the following syntax.
data: cvar type ref to class1.
cvar->method( exporting variable1 = value )
(or) some time i see sample codes with out key word 'exporting'
cvar->method( variable1 = value ) .
(or)
cvar->method( value ) .
(or) some times with key word CALL METHOD
CREATE OBJECT cvar
CALL METHOD cvar->method
EXPORTING
variable1 = value.
Tried out a uniform way of calling ,but getting errors.Any inputs please..
Thanks,
BvanBhavan,
First declare the class.
Implement the class.
Declare the Class reference variable
Create the class object.
call the method.
data: cvar type ref to class1.
CREATE OBJECT cvar
Calling Methods
To call a method, use the following statement:
CALL METHOD <meth> EXPORTING... <ii> =.<f i>...
IMPORTING... <ei> =.<g i>...
CHANGING ... <ci> =.<f i>...
RECEIVING r = h
EXCEPTIONS... <ei> = rc i...
The way in which you address the method <method> depends on the method itself and from where you are calling it. Within the implementation part of a class, you can call the methods of the same class directly using their name <meth>.
CALL METHOD <meth>...
Outside the class, the visibility of the method depends on whether you can call it at all. Visible instance methods can be called from outside the class using
CALL METHOD <ref>-><meth>...
where <ref> is a reference variable whose value points to an instance of the class. Visible instance methods can be called from outside the class using
CALL METHOD <class>=><meth>...
where <class> is the name of the relevant class.
When you call a method, you must pass all non-optional input parameters using the EXPORTING or CHANGING addition in the CALL METHOD statement. You can (but do not have to) import the output parameters into your program using the IMPORTING or RECEIVING addition. Equally, you can (but do not have to) handle any exceptions triggered by the exceptions using the EXCEPTIONS addition. However, this is recommended.
You pass and receive values to and from methods in the same way as with function modules, that is, with the syntax:
... <Formal parameter> = <Actual parameter>
after the corresponding addition. The interface parameters (formal parameters) are always on the left-hand side of the equals sign. The actual parameters are always on the right. The equals sign is not an assignment operator in this context; it merely serves to assign program variables to the interface parameters of the method.
If the interface of a method consists only of a single IMPORTING parameter, you can use the following shortened form of the method call:
CALL METHOD <method>( f).
The actual parameter <f> is passed to the input parameters of the method.
If the interface of a method consists only of IMPORTING parameters, you can use the following shortened form of the method call:
CALL METHOD <method>(....<ii> =.<f i>...).
Each actual parameter <f i > is passed to the corresponding formal parameter <i i >.
Pls. mark if useful -
Calling Report in Customized Method Created in ZBUS2081
Hi ,
I have created ZBUS2081 in that I have create one Customized method ZEMAIL .
now in SE38 i have wriiten logic to send email to person .
I want to use this report in ZEMIL method . even I used that report by using SUBMIT but it's not working .
mail is not going to respective person . the code which i have written for sending mail is correct .
Please suggest any solution if any code is available or is there any link availabe then please provide it .
Regards,
SandeepHi Sandeep,
Create a method which refers to report. System will generate the code "Submit ZREPORT WITH SELE CRITERIA AND RETURN". This will surely work if you pass all mandatory selection paramters. If the problem is with mail then check the parameters/code used for sending the mail.
Regards,
Vaishali. -
No CALL METHOD syntax used in Dynpro programming
Hi Gurus,
I have just starded with Web Dynpro ABAP. I found that while writing code we don't use CALL METHOD .
i.eTABLE_NODE = WD_CONTEXT->GET_CHILD_NODE('MY_TABLE_NODE').
How can we directly call a method using interface variable e.g WD_CONTEXT without syntax CALL METHOD?
Can anyone explain?
I am not much familiar with OOPs.
Thanks in advance.Hi Anzy,
Can u correct this program to let me understand this concept. ( An example ABAP OOPs program)
REPORT zjt_test_interface.
INCLUDE zjt_test_interfac_class.
DATA : dd TYPE REF TO demo ,
inter TYPE REF TO sample,
inter1 TYPE REF TO sample.
START-OF-SELECTION.
CREATE OBJECT dd .
inter = dd.
call method inter->test. ******No error with this statement
inter1 = inter->test. *********** This statement gives error "Field 'Test' unknown
The below code is a separate include program.
*& Include ZJT_TEST_INTERFAC_CLASS
INTERFACE sample .
METHODS test .
ENDINTERFACE. "sample
CLASS demo DEFINITION
CLASS demo DEFINITION.
PUBLIC SECTION.
INTERFACES sample .
METHODS : constructor.
ENDCLASS. "demo DEFINITION
CLASS demo IMPLEMENTATION
CLASS demo IMPLEMENTATION.
METHOD constructor.
ENDMETHOD. "constructor
METHOD sample~test.
WRITE : 'Method test of Interface sample executed'.
ENDMETHOD. "sample~test -
A simple ALV report using classes & methods ...
i want a simple ALV report using classes & methods ...
my requirement : i have to use classes & methods instead of calling a function module to display in grid or list format.
plz send me with explanation ASAP...it's very urgent..
Thanks in advance .Hi
Please refer
https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/e8a1d690-0201-0010-b7ad-d9719a415907
U can use methods for vreating ALVs.
There is a method named set_table_for_first_display in OOP Concepts.
Use this Object Oriented Approach for ALV Creation
Calling the method set_table_for_first_display
CALL METHOD cust_alv->set_table_for_first_display
EXPORTING
is_layout = gst_layout
CHANGING
it_outtab = gt_list
it_fieldcatalog = gt_fcat
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.
Object Creation and all
Creation of Object for Container
CREATE OBJECT cust_container
EXPORTING
container_name = 'ALV_CONTAINER'
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
create_error = 3
lifetime_error = 4
lifetime_dynpro_dynpro_link = 5
others = 6
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
Creation of Object for ALV Grid
CREATE OBJECT cust_alv
EXPORTING
i_parent = cust_container
EXCEPTIONS
error_cntl_create = 1
error_cntl_init = 2
error_cntl_link = 3
error_dp_create = 4
others = 5
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
Layout settings
gst_layout-zebra ='X'.
gst_layout-cwidth_opt = 'X'.
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
I_BUFFER_ACTIVE =
I_STRUCTURE_NAME = 'ZCS_INACTV_CUST'
I_CLIENT_NEVER_DISPLAY = 'X'
I_BYPASSING_BUFFER =
CHANGING
ct_fieldcat = gt_fcat
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.
Calling the method set_table_for_first_display
CALL METHOD cust_alv->set_table_for_first_display
EXPORTING
is_layout = gst_layout
CHANGING
it_outtab = gt_list
it_fieldcatalog = gt_fcat
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.
For object oriented concepts refer this link https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/b6cae890-0201-0010-ef8b-f970a9c41d47
Reaward if helpful -
Hi experts,
Method is already created, Now i have to call that method in one Dummy program. Please send me that program with logic. I am sending you class name and already created method.
Class name:ZCl_configurable_item
Method name:Is_sequence_Not_To_Print
Please call this method in Dummy program, I needed this with the program logic.
method IS_SEQUENCE_NOT_TO_PRINT .
DATA : l_kunnr TYPE kunnr,
l_kna1katr6 TYPE kna1-katr6,
l_katr6 TYPE kna1-katr6,
l_katr6_1 TYPE zkatr6_line.
*DATA : l_katr6_1 TYPE STANDARD TABLE OF zkatr6_line. " OCCURS 0 WITH HEADER LINE.
DATA : l_zliteral_tab TYPE ZLITERAL_TAB_TYPE,
l_zliteral type zliteral.
DATA : condtype_range_out TYPE Z_KATR6_TT.
SELECT SINGLE kunnr FROM vbpa
INTO l_kunnr
WHERE vbeln = vbdkr_vbeln AND
( parvw = 'RE' OR
parvw = 'BP' ).
SELECT SINGLE katr6 FROM kna1
INTO l_kna1katr6
WHERE kunnr = l_kunnr.
l_katr6 = l_kna1katr6+0(1).
SELECT * FROM zliteral
INTO table l_zliteral_tab
WHERE zkey1 = c_zlit_genosys_key AND
zkey2 = c_katr6_1.
loop at l_zliteral_tab into l_zliteral.
clear l_katr6_1.
l_katr6_1-sign = l_zliteral-zvalue1.
l_katr6_1-option = l_zliteral-zvalue2.
l_katr6_1-low = l_zliteral-zvalue3.
append l_katr6_1 to condtype_range_out.
Condense l_katr6_1-low.
IF l_katr6 EQ l_katr6_1-low.
IS_SEQUENCE_NOT_TO_PRINT = c_checked.
EXIT.
ELSE.
IS_SEQUENCE_NOT_TO_PRINT = SPACE.
ENDIF.
endloop.
Thanks & RegardsHi
In the report program first u have to create an object with ref to class then call that method like
report ztest.
create object zt1 type ref to ZCl_configurable_item.
CALL method zt1->Is_sequence_Not_To_Print importing....
exporting....
like this.
See the help for create object in ABAPDOCU.
mark points if helpful.
Regs
Manas Ranjan Panda -
CALL METHOD GRID4- SET_TABLE_FOR_FIRST_DISPLAY
Hi All,
I would like to know how to display 5 internal table same time in a single output screen. I have attached the program for your reference.
Presently I am able to get i_final1 and i_final2 output on the screen. I need to display on the same screen grid 3 and grid 4. Is it possible to display.
*& REPORT Z_READ_PROFILE
REPORT Z_READ_PROFILE.
TABLES: TCATS, TCATST, TCATX_GRID.
DATA: ST_CT1_FIELDCAT1 TYPE LVC_T_FCAT WITH HEADER LINE.
DATA: IT_CT1_FIELDCAT1 TYPE LVC_T_FCAT.
DATA: ST_CT1_FIELDCAT2 TYPE LVC_T_FCAT WITH HEADER LINE.
DATA: IT_CT1_FIELDCAT2 TYPE LVC_T_FCAT.
DATA: ST_CT1_FIELDCAT3 TYPE LVC_T_FCAT WITH HEADER LINE.
DATA: IT_CT1_FIELDCAT3 TYPE LVC_T_FCAT.
DATA: ST_CT1_FIELDCAT4 TYPE LVC_T_FCAT WITH HEADER LINE.
DATA: IT_CT1_FIELDCAT4 TYPE LVC_T_FCAT.
DATA: DOCK TYPE REF TO CL_GUI_DOCKING_CONTAINER,
SPLIT TYPE REF TO CL_GUI_SPLITTER_CONTAINER,
GRID1 TYPE REF TO CL_GUI_ALV_GRID,
GRID2 TYPE REF TO CL_GUI_ALV_GRID,
GRID3 TYPE REF TO CL_GUI_ALV_GRID,
GRID4 TYPE REF TO CL_GUI_ALV_GRID,
DOC1 TYPE REF TO CL_GUI_DOCKING_CONTAINER,
DOC3 TYPE REF TO CL_GUI_DOCKING_CONTAINER,
DOC4 TYPE REF TO CL_GUI_DOCKING_CONTAINER,
CON22 TYPE REF TO CL_GUI_DOCKING_CONTAINER,
LI_FIELDCAT1 TYPE LVC_T_FCAT.
SELECTION-SCREEN: BEGIN OF BLOCK B1.
PARAMETERS: P_PROF1 LIKE TCATS-VARIANT,
P_PROF2 LIKE TCATS-VARIANT.
SELECTION-SCREEN: END OF BLOCK B1.
DATA: BEGIN OF I_DD03P OCCURS 0.
INCLUDE STRUCTURE DD03P.
DATA: END OF I_DD03P.
DATA: BEGIN OF I_FIELDS1 OCCURS 0,
PROFILE LIKE TCATS-VARIANT,
MFIELD TYPE FAWFLDNAM,
INPUT LIKE RSFAC-INPUT,
OBLIGAT LIKE RSFAC-OBLIGAT,
DISPLAY LIKE RSFAC-DISPLAY,
NOTACT LIKE RSFAC-NOTACT,
END OF I_FIELDS1.
DATA: BEGIN OF I_FIELDS2 OCCURS 0,
PROFILE LIKE TCATS-VARIANT,
MFIELD TYPE FAWFLDNAM,
INPUT LIKE RSFAC-INPUT,
OBLIGAT LIKE RSFAC-OBLIGAT,
DISPLAY LIKE RSFAC-DISPLAY,
NOTACT LIKE RSFAC-NOTACT,
END OF I_FIELDS2.
DATA: BEGIN OF I_FINAL1 OCCURS 0,
PROFILE LIKE TCATS-VARIANT,
TEXT LIKE TCATST-TEXT,
MFIELD TYPE FAWFLDNAM,
INPUT LIKE RSFAC-INPUT,
OBLIGAT LIKE RSFAC-OBLIGAT,
DISPLAY LIKE RSFAC-DISPLAY,
NOTACT LIKE RSFAC-NOTACT,
END OF I_FINAL1.
DATA: BEGIN OF I_FINAL2 OCCURS 0,
PROFILE LIKE TCATS-VARIANT,
TEXT LIKE TCATST-TEXT,
MFIELD TYPE FAWFLDNAM,
INPUT LIKE RSFAC-INPUT,
OBLIGAT LIKE RSFAC-OBLIGAT,
DISPLAY LIKE RSFAC-DISPLAY,
NOTACT LIKE RSFAC-NOTACT,
END OF I_FINAL2.
DATA: BEGIN OF ENTRYLIST OCCURS 0,
MFELD TYPE FAWFLDNAM,
VISIBLE TYPE FAWCUST,
REQUIRED TYPE FAWCUST,
READONLY TYPE FAWCUST,
HIDE TYPE FAWCUST,
PROF1 LIKE TCATS-VARIANT,
END OF ENTRYLIST.
DATA: BEGIN OF WORKLIST OCCURS 0.
INCLUDE STRUCTURE FIELD_SELECTION.
DATA: END OF WORKLIST.
DATA: BEGIN OF I_TCATX_GRID1 OCCURS 0,
PROFIL LIKE TCATX_GRID-PROFIL,
TASKCOMPONENT LIKE TCATX_GRID-TASKCOMPONENT,
COL LIKE TCATX_GRID-COL,
OBLIGAT LIKE TCATX_GRID-OBLIGAT,
END OF I_TCATX_GRID1.
DATA: BEGIN OF I_TCATX_GRID2 OCCURS 0,
PROFIL LIKE TCATX_GRID-PROFIL,
TASKCOMPONENT LIKE TCATX_GRID-TASKCOMPONENT,
COL LIKE TCATX_GRID-COL,
OBLIGAT LIKE TCATX_GRID-OBLIGAT,
END OF I_TCATX_GRID2.
PERFORM STATEMENT TO GET THE DATA BASED ON PORIFLE
IF NOT P_PROF1 IS INITIAL .
PERFORM GET_FIELDS1.
PERFORM GET_COMPONENTS1.
ENDIF.
IF NOT P_PROF1 IS INITIAL .
PERFORM GET_FIELDS2.
PERFORM GET_COMPONENTS2.
ENDIF.
PERFORM COMPARE_TABLES.
CALL SCREEN 100.
*& FORM GET_FIELDS
TEXT
--> P1 TEXT
<-- P2 TEXT
FORM GET_FIELDS1.
CLEAR : ENTRYLIST, WORKLIST.
REFRESH: ENTRYLIST, WORKLIST.
CALL FUNCTION 'CATS_GET_INFLUENCES'
EXPORTING
VARIANT = P_PROF1
TABLES
ENTRYLIST_SELECTION = ENTRYLIST
WORKLIST_SELECTION = WORKLIST
IF SY-SUBRC EQ 0.
LOOP AT ENTRYLIST WHERE VISIBLE EQ SPACE
AND REQUIRED EQ SPACE
AND READONLY EQ SPACE.
MOVE 'X' TO ENTRYLIST-HIDE.
MODIFY ENTRYLIST TRANSPORTING HIDE.
ENDLOOP.
LOOP AT ENTRYLIST.
MOVE P_PROF1 TO I_FIELDS1-PROFILE.
MOVE ENTRYLIST-MFELD TO I_FIELDS1-MFIELD.
IF ENTRYLIST-READONLY NE 'X' AND ENTRYLIST-REQUIRED NE 'X' .
MOVE ENTRYLIST-VISIBLE TO I_FIELDS1-INPUT.
ENDIF.
MOVE ENTRYLIST-REQUIRED TO I_FIELDS1-OBLIGAT.
MOVE ENTRYLIST-READONLY TO I_FIELDS1-DISPLAY.
MOVE ENTRYLIST-HIDE TO I_FIELDS1-NOTACT.
APPEND I_FIELDS1.
ENDLOOP.
ENDIF.
ENDFORM. " GET_FIELDS
*& FORM GET_FIELDS2
TEXT
--> P1 TEXT
<-- P2 TEXT
FORM GET_FIELDS2 .
CLEAR : ENTRYLIST, WORKLIST.
REFRESH: ENTRYLIST, WORKLIST.
CALL FUNCTION 'CATS_GET_INFLUENCES'
EXPORTING
VARIANT = P_PROF2
TABLES
ENTRYLIST_SELECTION = ENTRYLIST
WORKLIST_SELECTION = WORKLIST
IF SY-SUBRC EQ 0.
LOOP AT ENTRYLIST WHERE VISIBLE EQ SPACE
AND REQUIRED EQ SPACE
AND READONLY EQ SPACE.
MOVE 'X' TO ENTRYLIST-HIDE.
MODIFY ENTRYLIST TRANSPORTING HIDE.
ENDLOOP.
LOOP AT ENTRYLIST.
MOVE P_PROF2 TO I_FIELDS2-PROFILE.
MOVE ENTRYLIST-MFELD TO I_FIELDS2-MFIELD.
IF ENTRYLIST-READONLY NE 'X' AND ENTRYLIST-REQUIRED NE 'X' .
MOVE ENTRYLIST-VISIBLE TO I_FIELDS2-INPUT.
ENDIF.
MOVE ENTRYLIST-REQUIRED TO I_FIELDS2-OBLIGAT.
MOVE ENTRYLIST-READONLY TO I_FIELDS2-DISPLAY.
MOVE ENTRYLIST-HIDE TO I_FIELDS2-NOTACT.
APPEND I_FIELDS2.
ENDLOOP.
ENDIF.
ENDFORM. " GET_FIELDS2
*& FORM COMPARE_TABLES
TEXT
--> P1 TEXT
<-- P2 TEXT
FORM COMPARE_TABLES .
CLEAR: I_FIELDS1, I_FIELDS2.
SORT : I_FIELDS1, I_FIELDS2.
DATA: L_TABLE LIKE DD03L-TABNAME,
L_FIELD LIKE DD03L-FIELDNAME.
LOOP AT I_FIELDS1.
READ TABLE I_FIELDS2 WITH KEY MFIELD = I_FIELDS1-MFIELD
INPUT = I_FIELDS1-INPUT
OBLIGAT = I_FIELDS1-OBLIGAT
DISPLAY = I_FIELDS1-DISPLAY
NOTACT = I_FIELDS1-NOTACT.
IF SY-SUBRC NE 0.
MOVE I_FIELDS1-PROFILE TO I_FINAL1-PROFILE.
SPLIT I_FIELDS1-MFIELD AT '-' INTO L_TABLE L_FIELD.
CALL FUNCTION 'BUS_DDFIELD_GET'
EXPORTING
I_TABNM = L_TABLE
I_FLDNM = L_FIELD
I_LANGU = SY-LANGU
IMPORTING
E_DD03P = I_DD03P
EXCEPTIONS
FIELD_NOT_FOUND = 1
OTHERS = 2
IF SY-SUBRC EQ 0.
MOVE I_DD03P-DDTEXT TO I_FINAL1-TEXT.
ENDIF.
MOVE I_FIELDS1-MFIELD TO I_FINAL1-MFIELD.
MOVE I_FIELDS1-INPUT TO I_FINAL1-INPUT.
MOVE I_FIELDS1-OBLIGAT TO I_FINAL1-OBLIGAT.
MOVE I_FIELDS1-DISPLAY TO I_FINAL1-DISPLAY.
MOVE I_FIELDS1-NOTACT TO I_FINAL1-NOTACT.
APPEND I_FINAL1.
ENDIF.
ENDLOOP.
SORT : I_FIELDS1, I_FIELDS2.
LOOP AT I_FIELDS2.
READ TABLE I_FIELDS1 WITH KEY MFIELD = I_FIELDS2-MFIELD
INPUT = I_FIELDS2-INPUT
OBLIGAT = I_FIELDS2-OBLIGAT
DISPLAY = I_FIELDS2-DISPLAY
NOTACT = I_FIELDS2-NOTACT.
IF SY-SUBRC NE 0.
MOVE I_FIELDS2-PROFILE TO I_FINAL2-PROFILE.
SPLIT I_FIELDS2-MFIELD AT '-' INTO L_TABLE L_FIELD.
CALL FUNCTION 'BUS_DDFIELD_GET'
EXPORTING
I_TABNM = L_TABLE
I_FLDNM = L_FIELD
I_LANGU = SY-LANGU
IMPORTING
E_DD03P = I_DD03P
EXCEPTIONS
FIELD_NOT_FOUND = 1
OTHERS = 2
IF SY-SUBRC EQ 0.
MOVE I_DD03P-DDTEXT TO I_FINAL2-TEXT.
ENDIF.
MOVE I_FIELDS2-MFIELD TO I_FINAL2-MFIELD.
MOVE I_FIELDS2-INPUT TO I_FINAL2-INPUT.
MOVE I_FIELDS2-OBLIGAT TO I_FINAL2-OBLIGAT.
MOVE I_FIELDS2-DISPLAY TO I_FINAL2-DISPLAY.
MOVE I_FIELDS2-NOTACT TO I_FINAL2-NOTACT.
APPEND I_FINAL2.
ENDIF.
ENDLOOP.
ENDFORM. " COMPARE_TABLES
*& MODULE STATUS_0100 OUTPUT
TEXT
MODULE STATUS_0100 OUTPUT.
SET PF-STATUS SPACE.
SET TITLEBAR 'T001'.
PERFORM FIELDCAT_FINAL1.
PERFORM FIELDCAT_FINAL2.
CREATE OBJECT DOCK
EXPORTING
REPID = SY-REPID
DYNNR = '100'
EXTENSION = '600'
SIDE = '1'
EXCEPTIONS
CNTL_ERROR = 1
CNTL_SYSTEM_ERROR = 2
CREATE_ERROR = 3
LIFETIME_ERROR = 4
LIFETIME_DYNPRO_DYNPRO_LINK = 5
OTHERS = 6
IF SY-SUBRC NE 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
CREATE OBJECT DOC1
EXPORTING
REPID = SY-REPID
DYNNR = '100'
EXTENSION = '1000'
SIDE = '4'
EXCEPTIONS
CNTL_ERROR = 1
CNTL_SYSTEM_ERROR = 2
CREATE_ERROR = 3
LIFETIME_ERROR = 4
LIFETIME_DYNPRO_DYNPRO_LINK = 5
OTHERS = 6
IF SY-SUBRC NE 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
CREATE OBJECT GRID1 EXPORTING I_PARENT = DOCK.
CALL METHOD GRID1->SET_TABLE_FOR_FIRST_DISPLAY
EXPORTING
I_STRUCTURE_NAME = 'I_FINAL1'
CHANGING
IT_OUTTAB = I_FINAL1[]
IT_FIELDCATALOG = IT_CT1_FIELDCAT1[]
EXCEPTIONS
INVALID_PARAMETER_COMBINATION = 1
PROGRAM_ERROR = 2
TOO_MANY_LINES = 3
OTHERS = 4.
IF SY-SUBRC NE 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
CREATE OBJECT GRID2 EXPORTING I_PARENT = DOC1.
CALL METHOD GRID2->SET_TABLE_FOR_FIRST_DISPLAY
EXPORTING
I_STRUCTURE_NAME = 'I_FINAL2'
CHANGING
IT_OUTTAB = I_FINAL2[]
IT_FIELDCATALOG = IT_CT1_FIELDCAT2[]
EXCEPTIONS
INVALID_PARAMETER_COMBINATION = 1
PROGRAM_ERROR = 2
TOO_MANY_LINES = 3
OTHERS = 4.
IF SY-SUBRC NE 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
CREATE OBJECT DOC3
EXPORTING
REPID = SY-REPID
DYNNR = '100'
EXTENSION = '600'
SIDE = '1'
EXCEPTIONS
CNTL_ERROR = 1
CNTL_SYSTEM_ERROR = 2
CREATE_ERROR = 3
LIFETIME_ERROR = 4
LIFETIME_DYNPRO_DYNPRO_LINK = 5
OTHERS = 6
IF SY-SUBRC NE 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
CREATE OBJECT DOC4
EXPORTING
REPID = SY-REPID
DYNNR = '100'
EXTENSION = '1000'
SIDE = '4'
EXCEPTIONS
CNTL_ERROR = 1
CNTL_SYSTEM_ERROR = 2
CREATE_ERROR = 3
LIFETIME_ERROR = 4
LIFETIME_DYNPRO_DYNPRO_LINK = 5
OTHERS = 6
IF SY-SUBRC NE 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
CREATE OBJECT GRID3 EXPORTING I_PARENT = DOC3.
CALL METHOD GRID3->SET_TABLE_FOR_FIRST_DISPLAY
EXPORTING
I_STRUCTURE_NAME = 'TCATX_GRID'
CHANGING
IT_OUTTAB = I_TCATX_GRID1[]
IT_FIELDCATALOG = IT_CT1_FIELDCAT1[]
EXCEPTIONS
INVALID_PARAMETER_COMBINATION = 1
PROGRAM_ERROR = 2
TOO_MANY_LINES = 3
OTHERS = 4.
IF SY-SUBRC NE 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
CREATE OBJECT GRID4 EXPORTING I_PARENT = DOC4.
CALL METHOD GRID4->SET_TABLE_FOR_FIRST_DISPLAY
EXPORTING
I_STRUCTURE_NAME = 'TCATX_GRID'
CHANGING
IT_OUTTAB = I_TCATX_GRID2[]
IT_FIELDCATALOG = IT_CT1_FIELDCAT2[]
EXCEPTIONS
INVALID_PARAMETER_COMBINATION = 1
PROGRAM_ERROR = 2
TOO_MANY_LINES = 3
OTHERS = 4.
IF SY-SUBRC NE 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDMODULE. " STATUS_0100 OUTPUT
*& MODULE USER_COMMAND_0100 INPUT
TEXT
MODULE USER_COMMAND_0100 INPUT.
CASE SY-UCOMM.
WHEN 'BACK'.
LEAVE TO SCREEN 0.
ENDCASE.
ENDMODULE. " USER_COMMAND_0100 INPUT
*& FORM FIELDCAT_FINAL1
TEXT
--> P1 TEXT
<-- P2 TEXT
FORM FIELDCAT_FINAL1 .
IF IT_CT1_FIELDCAT1[] IS INITIAL.
ST_CT1_FIELDCAT1-TABNAME = 'I_FINAL1'.
ST_CT1_FIELDCAT1-FIELDNAME = 'PROFILE'.
ST_CT1_FIELDCAT1-COL_POS = 0.
ST_CT1_FIELDCAT1-OUTPUTLEN = 8.
ST_CT1_FIELDCAT1-SCRTEXT_L = 'PROFILE'.
ST_CT1_FIELDCAT1-KEY = 'X'.
APPEND ST_CT1_FIELDCAT1 TO IT_CT1_FIELDCAT1.
CLEAR ST_CT1_FIELDCAT1.
ST_CT1_FIELDCAT1-TABNAME = 'I_FINAL1'.
ST_CT1_FIELDCAT1-FIELDNAME = 'MFIELD'.
ST_CT1_FIELDCAT1-COL_POS = 1.
ST_CT1_FIELDCAT1-OUTPUTLEN = 15.
ST_CT1_FIELDCAT1-SCRTEXT_L = 'FIELD'.
APPEND ST_CT1_FIELDCAT1 TO IT_CT1_FIELDCAT1.
CLEAR ST_CT1_FIELDCAT1.
ST_CT1_FIELDCAT1-TABNAME = 'I_FINAL1'.
ST_CT1_FIELDCAT1-FIELDNAME = 'TEXT'.
ST_CT1_FIELDCAT1-COL_POS = 1.
ST_CT1_FIELDCAT1-OUTPUTLEN = 30.
ST_CT1_FIELDCAT1-SCRTEXT_L = 'TEXT'.
APPEND ST_CT1_FIELDCAT1 TO IT_CT1_FIELDCAT1.
CLEAR ST_CT1_FIELDCAT1.
ST_CT1_FIELDCAT1-TABNAME = 'I_FINAL1'.
ST_CT1_FIELDCAT1-FIELDNAME = 'INPUT'.
ST_CT1_FIELDCAT1-COL_POS = 2.
ST_CT1_FIELDCAT1-OUTPUTLEN = 2.
ST_CT1_FIELDCAT1-SCRTEXT_L = 'INPUT'.
APPEND ST_CT1_FIELDCAT1 TO IT_CT1_FIELDCAT1.
CLEAR ST_CT1_FIELDCAT1.
ST_CT1_FIELDCAT1-TABNAME = 'I_FINAL1'.
ST_CT1_FIELDCAT1-FIELDNAME = 'OBLIGAT'.
ST_CT1_FIELDCAT1-COL_POS = 2.
ST_CT1_FIELDCAT1-OUTPUTLEN = 2.
ST_CT1_FIELDCAT1-SCRTEXT_L = 'REQUIRED'.
APPEND ST_CT1_FIELDCAT1 TO IT_CT1_FIELDCAT1.
CLEAR ST_CT1_FIELDCAT1.
ST_CT1_FIELDCAT1-TABNAME = 'I_FINAL1'.
ST_CT1_FIELDCAT1-FIELDNAME = 'DISPLAY'.
ST_CT1_FIELDCAT1-COL_POS = 2.
ST_CT1_FIELDCAT1-OUTPUTLEN = 2.
ST_CT1_FIELDCAT1-SCRTEXT_L = 'DISPLAY'.
APPEND ST_CT1_FIELDCAT1 TO IT_CT1_FIELDCAT1.
CLEAR ST_CT1_FIELDCAT1.
ST_CT1_FIELDCAT1-TABNAME = 'I_FINAL1'.
ST_CT1_FIELDCAT1-FIELDNAME = 'NOTACT'.
ST_CT1_FIELDCAT1-COL_POS = 2.
ST_CT1_FIELDCAT1-OUTPUTLEN = 2.
ST_CT1_FIELDCAT1-SCRTEXT_L = 'HIDE'.
APPEND ST_CT1_FIELDCAT1 TO IT_CT1_FIELDCAT1.
CLEAR ST_CT1_FIELDCAT1.
ENDIF.
ENDFORM. " FIELDCAT_FINAL1
*& FORM FIELDCAT_FINAL2
TEXT
--> P1 TEXT
<-- P2 TEXT
FORM FIELDCAT_FINAL2 .
IF IT_CT1_FIELDCAT2[] IS INITIAL.
ST_CT1_FIELDCAT2-TABNAME = 'I_FINAL2'.
ST_CT1_FIELDCAT2-FIELDNAME = 'PROFILE'.
ST_CT1_FIELDCAT2-COL_POS = 0.
ST_CT1_FIELDCAT2-OUTPUTLEN = 8.
ST_CT1_FIELDCAT2-SCRTEXT_L = 'PROFILE'.
ST_CT1_FIELDCAT2-KEY = 'X'.
APPEND ST_CT1_FIELDCAT2 TO IT_CT1_FIELDCAT2.
CLEAR ST_CT1_FIELDCAT2.
ST_CT1_FIELDCAT2-TABNAME = 'I_FINAL2'.
ST_CT1_FIELDCAT2-FIELDNAME = 'MFIELD'.
ST_CT1_FIELDCAT2-COL_POS = 1.
ST_CT1_FIELDCAT2-SCRTEXT_L = 'FIELD'.
ST_CT1_FIELDCAT2-OUTPUTLEN = 15.
APPEND ST_CT1_FIELDCAT2 TO IT_CT1_FIELDCAT2.
CLEAR ST_CT1_FIELDCAT2.
ST_CT1_FIELDCAT2-TABNAME = 'I_FINAL2'.
ST_CT1_FIELDCAT2-FIELDNAME = 'TEXT'.
ST_CT1_FIELDCAT2-COL_POS = 1.
ST_CT1_FIELDCAT2-OUTPUTLEN = 30.
ST_CT1_FIELDCAT2-SCRTEXT_L = 'TEXT'.
APPEND ST_CT1_FIELDCAT2 TO IT_CT1_FIELDCAT2.
CLEAR ST_CT1_FIELDCAT2.
ST_CT1_FIELDCAT2-TABNAME = 'I_FINAL2'.
ST_CT1_FIELDCAT2-FIELDNAME = 'INPUT'.
ST_CT1_FIELDCAT2-COL_POS = 2.
ST_CT1_FIELDCAT2-OUTPUTLEN = 2.
ST_CT1_FIELDCAT2-SCRTEXT_L = 'INPUT'.
APPEND ST_CT1_FIELDCAT2 TO IT_CT1_FIELDCAT2.
CLEAR ST_CT1_FIELDCAT2.
ST_CT1_FIELDCAT2-TABNAME = 'I_FINAL2'.
ST_CT1_FIELDCAT2-FIELDNAME = 'OBLIGAT'.
ST_CT1_FIELDCAT2-COL_POS = 2.
ST_CT1_FIELDCAT2-OUTPUTLEN = 2.
ST_CT1_FIELDCAT2-SCRTEXT_L = 'REQUIRED'.
APPEND ST_CT1_FIELDCAT2 TO IT_CT1_FIELDCAT2.
CLEAR ST_CT1_FIELDCAT2.
ST_CT1_FIELDCAT2-TABNAME = 'I_FINAL1'.
ST_CT1_FIELDCAT2-FIELDNAME = 'DISPLAY'.
ST_CT1_FIELDCAT2-COL_POS = 2.
ST_CT1_FIELDCAT2-OUTPUTLEN = 2.
ST_CT1_FIELDCAT2-SCRTEXT_L = 'DISPLAY'.
APPEND ST_CT1_FIELDCAT2 TO IT_CT1_FIELDCAT2.
CLEAR ST_CT1_FIELDCAT2.
ST_CT1_FIELDCAT2-TABNAME = 'I_FINAL2'.
ST_CT1_FIELDCAT2-FIELDNAME = 'NOTACT'.
ST_CT1_FIELDCAT2-COL_POS = 2.
ST_CT1_FIELDCAT2-OUTPUTLEN = 2.
ST_CT1_FIELDCAT2-SCRTEXT_L = 'HIDE'.
APPEND ST_CT1_FIELDCAT2 TO IT_CT1_FIELDCAT2.
CLEAR ST_CT1_FIELDCAT2.
ENDIF.
ENDFORM. " FIELDCAT_FINAL2
*& Form GET_COMPONENTS1
text
--> p1 text
<-- p2 text
FORM GET_COMPONENTS1 .
CLEAR : I_TCATX_GRID1.
REFRESH: I_TCATX_GRID1.
SELECT * FROM TCATX_GRID
INTO CORRESPONDING FIELDS OF TABLE I_TCATX_GRID1
WHERE PROFIL EQ P_PROF1.
ENDFORM. " GET_COMPONENTS1
*& Form GET_COMPONENTS2
text
--> p1 text
<-- p2 text
FORM GET_COMPONENTS2 .
CLEAR : I_TCATX_GRID2.
REFRESH: I_TCATX_GRID2.
SELECT * FROM TCATX_GRID
INTO CORRESPONDING FIELDS OF TABLE I_TCATX_GRID2
WHERE PROFIL EQ P_PROF2.
ENDFORM. " GET_COMPONENTS2
Thanks & Regards,
Nagaraj KalbaviHi Uwe,
As per your suggestion I have updated my program with splitter. Now I am able to get 3 internal Table but 4th one is not displaying. What could be the reason. I have attached my program for your reference.
& REPORT ZTEST_NAG&
REPORT ZTEST_NAG.
TABLES: TCATS, TCATST, TCATX_GRID.
DATA: ST_CT1_FIELDCAT1 TYPE LVC_T_FCAT WITH HEADER LINE.
DATA: IT_CT1_FIELDCAT1 TYPE LVC_T_FCAT.
DATA: ST_CT1_FIELDCAT2 TYPE LVC_T_FCAT WITH HEADER LINE.
DATA: IT_CT1_FIELDCAT2 TYPE LVC_T_FCAT.
data: go_docking TYPE REF TO cl_gui_docking_container,
go_splitter TYPE REF TO cl_gui_splitter_container,
go_splitter_2 TYPE REF TO cl_gui_splitter_container,
go_cell_top TYPE REF TO cl_gui_container,
go_cell_bottom TYPE REF TO cl_gui_container,
go_cell_left TYPE REF TO cl_gui_container,
go_cell_right TYPE REF TO cl_gui_container,
go_grid1 TYPE REF TO cl_gui_alv_grid,
go_grid2 TYPE REF TO cl_gui_alv_grid,
go_grid3 TYPE REF TO cl_gui_alv_grid,
go_grid4 TYPE REF TO cl_gui_alv_grid.
SELECTION-SCREEN: BEGIN OF BLOCK B1.
PARAMETERS: P_PROF1 LIKE TCATS-VARIANT,
P_PROF2 LIKE TCATS-VARIANT.
SELECTION-SCREEN: END OF BLOCK B1.
DATA: BEGIN OF I_DD03P OCCURS 0.
INCLUDE STRUCTURE DD03P.
DATA: END OF I_DD03P.
DATA: BEGIN OF I_FIELDS1 OCCURS 0,
PROFILE LIKE TCATS-VARIANT,
MFIELD TYPE FAWFLDNAM,
INPUT LIKE RSFAC-INPUT,
OBLIGAT LIKE RSFAC-OBLIGAT,
DISPLAY LIKE RSFAC-DISPLAY,
NOTACT LIKE RSFAC-NOTACT,
END OF I_FIELDS1.
DATA: BEGIN OF I_FIELDS2 OCCURS 0,
PROFILE LIKE TCATS-VARIANT,
MFIELD TYPE FAWFLDNAM,
INPUT LIKE RSFAC-INPUT,
OBLIGAT LIKE RSFAC-OBLIGAT,
DISPLAY LIKE RSFAC-DISPLAY,
NOTACT LIKE RSFAC-NOTACT,
END OF I_FIELDS2.
DATA: BEGIN OF I_FINAL1 OCCURS 0,
PROFILE LIKE TCATS-VARIANT,
TEXT LIKE TCATST-TEXT,
MFIELD TYPE FAWFLDNAM,
INPUT LIKE RSFAC-INPUT,
OBLIGAT LIKE RSFAC-OBLIGAT,
DISPLAY LIKE RSFAC-DISPLAY,
NOTACT LIKE RSFAC-NOTACT,
END OF I_FINAL1.
DATA: BEGIN OF I_FINAL2 OCCURS 0,
PROFILE LIKE TCATS-VARIANT,
TEXT LIKE TCATST-TEXT,
MFIELD TYPE FAWFLDNAM,
INPUT LIKE RSFAC-INPUT,
OBLIGAT LIKE RSFAC-OBLIGAT,
DISPLAY LIKE RSFAC-DISPLAY,
NOTACT LIKE RSFAC-NOTACT,
END OF I_FINAL2.
DATA: BEGIN OF ENTRYLIST OCCURS 0,
MFELD TYPE FAWFLDNAM,
VISIBLE TYPE FAWCUST,
REQUIRED TYPE FAWCUST,
READONLY TYPE FAWCUST,
HIDE TYPE FAWCUST,
PROF1 LIKE TCATS-VARIANT,
END OF ENTRYLIST.
DATA: BEGIN OF WORKLIST OCCURS 0.
INCLUDE STRUCTURE FIELD_SELECTION.
DATA: END OF WORKLIST.
DATA: BEGIN OF I_TCATX_GRID1 OCCURS 0,
PROFIL LIKE TCATX_GRID-PROFIL,
TASKCOMPONENT LIKE TCATX_GRID-TASKCOMPONENT,
COL LIKE TCATX_GRID-COL,
OBLIGAT LIKE TCATX_GRID-OBLIGAT,
END OF I_TCATX_GRID1.
DATA: BEGIN OF I_TCATX_GRID2 OCCURS 0,
PROFIL LIKE TCATX_GRID-PROFIL,
TASKCOMPONENT LIKE TCATX_GRID-TASKCOMPONENT,
COL LIKE TCATX_GRID-COL,
OBLIGAT LIKE TCATX_GRID-OBLIGAT,
END OF I_TCATX_GRID2.
PERFORM STATEMENT TO GET THE DATA BASED ON PORIFLE
IF NOT P_PROF1 IS INITIAL .
PERFORM GET_FIELDS1.
PERFORM GET_COMPONENTS1.
ENDIF.
IF NOT P_PROF1 IS INITIAL .
PERFORM GET_FIELDS2.
PERFORM GET_COMPONENTS2.
ENDIF.
PERFORM COMPARE_TABLES.
CALL SCREEN 100.
*& FORM GET_FIELDS
TEXT
--> P1 TEXT
<-- P2 TEXT
FORM GET_FIELDS1.
CLEAR : ENTRYLIST, WORKLIST.
REFRESH: ENTRYLIST, WORKLIST.
CALL FUNCTION 'CATS_GET_INFLUENCES'
EXPORTING
VARIANT = P_PROF1
TABLES
ENTRYLIST_SELECTION = ENTRYLIST
WORKLIST_SELECTION = WORKLIST
IF SY-SUBRC EQ 0.
LOOP AT ENTRYLIST WHERE VISIBLE EQ SPACE
AND REQUIRED EQ SPACE
AND READONLY EQ SPACE.
MOVE 'X' TO ENTRYLIST-HIDE.
MODIFY ENTRYLIST TRANSPORTING HIDE.
ENDLOOP.
LOOP AT ENTRYLIST.
MOVE P_PROF1 TO I_FIELDS1-PROFILE.
MOVE ENTRYLIST-MFELD TO I_FIELDS1-MFIELD.
IF ENTRYLIST-READONLY NE 'X' AND ENTRYLIST-REQUIRED NE 'X' .
MOVE ENTRYLIST-VISIBLE TO I_FIELDS1-INPUT.
ENDIF.
MOVE ENTRYLIST-REQUIRED TO I_FIELDS1-OBLIGAT.
MOVE ENTRYLIST-READONLY TO I_FIELDS1-DISPLAY.
MOVE ENTRYLIST-HIDE TO I_FIELDS1-NOTACT.
APPEND I_FIELDS1.
ENDLOOP.
ENDIF.
ENDFORM. " GET_FIELDS
*& FORM GET_FIELDS2
TEXT
--> P1 TEXT
<-- P2 TEXT
FORM GET_FIELDS2 .
CLEAR : ENTRYLIST, WORKLIST.
REFRESH: ENTRYLIST, WORKLIST.
CALL FUNCTION 'CATS_GET_INFLUENCES'
EXPORTING
VARIANT = P_PROF2
TABLES
ENTRYLIST_SELECTION = ENTRYLIST
WORKLIST_SELECTION = WORKLIST
IF SY-SUBRC EQ 0.
LOOP AT ENTRYLIST WHERE VISIBLE EQ SPACE
AND REQUIRED EQ SPACE
AND READONLY EQ SPACE.
MOVE 'X' TO ENTRYLIST-HIDE.
MODIFY ENTRYLIST TRANSPORTING HIDE.
ENDLOOP.
LOOP AT ENTRYLIST.
MOVE P_PROF2 TO I_FIELDS2-PROFILE.
MOVE ENTRYLIST-MFELD TO I_FIELDS2-MFIELD.
IF ENTRYLIST-READONLY NE 'X' AND ENTRYLIST-REQUIRED NE 'X' .
MOVE ENTRYLIST-VISIBLE TO I_FIELDS2-INPUT.
ENDIF.
MOVE ENTRYLIST-REQUIRED TO I_FIELDS2-OBLIGAT.
MOVE ENTRYLIST-READONLY TO I_FIELDS2-DISPLAY.
MOVE ENTRYLIST-HIDE TO I_FIELDS2-NOTACT.
APPEND I_FIELDS2.
ENDLOOP.
ENDIF.
ENDFORM. " GET_FIELDS2
*& FORM COMPARE_TABLES
TEXT
--> P1 TEXT
<-- P2 TEXT
FORM COMPARE_TABLES .
CLEAR: I_FIELDS1, I_FIELDS2.
SORT : I_FIELDS1, I_FIELDS2.
DATA: L_TABLE LIKE DD03L-TABNAME,
L_FIELD LIKE DD03L-FIELDNAME.
LOOP AT I_FIELDS1.
READ TABLE I_FIELDS2 WITH KEY MFIELD = I_FIELDS1-MFIELD
INPUT = I_FIELDS1-INPUT
OBLIGAT = I_FIELDS1-OBLIGAT
DISPLAY = I_FIELDS1-DISPLAY
NOTACT = I_FIELDS1-NOTACT.
IF SY-SUBRC NE 0.
MOVE I_FIELDS1-PROFILE TO I_FINAL1-PROFILE.
SPLIT I_FIELDS1-MFIELD AT '-' INTO L_TABLE L_FIELD.
CALL FUNCTION 'BUS_DDFIELD_GET'
EXPORTING
I_TABNM = L_TABLE
I_FLDNM = L_FIELD
I_LANGU = SY-LANGU
IMPORTING
E_DD03P = I_DD03P
EXCEPTIONS
FIELD_NOT_FOUND = 1
OTHERS = 2
IF SY-SUBRC EQ 0.
MOVE I_DD03P-DDTEXT TO I_FINAL1-TEXT.
ENDIF.
MOVE I_FIELDS1-MFIELD TO I_FINAL1-MFIELD.
MOVE I_FIELDS1-INPUT TO I_FINAL1-INPUT.
MOVE I_FIELDS1-OBLIGAT TO I_FINAL1-OBLIGAT.
MOVE I_FIELDS1-DISPLAY TO I_FINAL1-DISPLAY.
MOVE I_FIELDS1-NOTACT TO I_FINAL1-NOTACT.
APPEND I_FINAL1.
ENDIF.
ENDLOOP.
SORT : I_FIELDS1, I_FIELDS2.
LOOP AT I_FIELDS2.
READ TABLE I_FIELDS1 WITH KEY MFIELD = I_FIELDS2-MFIELD
INPUT = I_FIELDS2-INPUT
OBLIGAT = I_FIELDS2-OBLIGAT
DISPLAY = I_FIELDS2-DISPLAY
NOTACT = I_FIELDS2-NOTACT.
IF SY-SUBRC NE 0.
MOVE I_FIELDS2-PROFILE TO I_FINAL2-PROFILE.
SPLIT I_FIELDS2-MFIELD AT '-' INTO L_TABLE L_FIELD.
CALL FUNCTION 'BUS_DDFIELD_GET'
EXPORTING
I_TABNM = L_TABLE
I_FLDNM = L_FIELD
I_LANGU = SY-LANGU
IMPORTING
E_DD03P = I_DD03P
EXCEPTIONS
FIELD_NOT_FOUND = 1
OTHERS = 2
IF SY-SUBRC EQ 0.
MOVE I_DD03P-DDTEXT TO I_FINAL2-TEXT.
ENDIF.
MOVE I_FIELDS2-MFIELD TO I_FINAL2-MFIELD.
MOVE I_FIELDS2-INPUT TO I_FINAL2-INPUT.
MOVE I_FIELDS2-OBLIGAT TO I_FINAL2-OBLIGAT.
MOVE I_FIELDS2-DISPLAY TO I_FINAL2-DISPLAY.
MOVE I_FIELDS2-NOTACT TO I_FINAL2-NOTACT.
APPEND I_FINAL2.
ENDIF.
ENDLOOP.
ENDFORM. " COMPARE_TABLES
*& MODULE STATUS_0100 OUTPUT
TEXT
MODULE STATUS_0100 OUTPUT.
SET PF-STATUS SPACE.
SET TITLEBAR 'T001'.
PERFORM FIELDCAT_FINAL1.
PERFORM FIELDCAT_FINAL2.
CREATE OBJECT go_docking
EXPORTING
parent = cl_gui_container=>screen0
ratio = 90
EXCEPTIONS
OTHERS = 6.
IF sy-subrc ne 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
Create splitter container
CREATE OBJECT go_splitter
EXPORTING
parent = go_docking
rows = 1
columns = 2
NO_AUTODEF_PROGID_DYNNR =
NAME =
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
OTHERS = 3.
IF sy-subrc ne 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
Get cell container
CALL METHOD go_splitter->get_container
EXPORTING
row = 1
column = 1
RECEIVING
container = go_cell_left.
CALL METHOD go_splitter->get_container
EXPORTING
row = 1
column = 2
RECEIVING
container = go_cell_right.
Create 2nd splitter container
CREATE OBJECT go_splitter_2
EXPORTING
parent = go_cell_left
rows = 2
columns = 1
NO_AUTODEF_PROGID_DYNNR =
NAME =
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
OTHERS = 3.
IF sy-subrc ne 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
Get cell container
CALL METHOD go_splitter_2->get_container
EXPORTING
row = 1
column = 1
RECEIVING
container = go_cell_top.
CALL METHOD go_splitter_2->get_container
EXPORTING
row = 2
column = 1
RECEIVING
container = go_cell_bottom.
Create ALV grids
CREATE OBJECT go_grid1
EXPORTING
i_parent = go_cell_top
EXCEPTIONS
OTHERS = 5.
IF sy-subrc ne 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
CREATE OBJECT go_grid2
EXPORTING
i_parent = go_cell_right
EXCEPTIONS
OTHERS = 5.
IF sy-subrc ne 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
CREATE OBJECT go_grid3
EXPORTING
i_parent = go_cell_bottom
EXCEPTIONS
OTHERS = 5.
IF sy-subrc ne 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
CREATE OBJECT go_grid4
EXPORTING
i_parent = go_cell_left
EXCEPTIONS
OTHERS = 5.
IF sy-subrc ne 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
CALL METHOD go_grid1->set_table_for_first_display
EXPORTING
i_structure_name = 'I_FINAL1'
CHANGING
it_outtab = I_FINAL1[]
IT_FIELDCATALOG = IT_CT1_FIELDCAT1[]
EXCEPTIONS
OTHERS = 4.
IF sy-subrc ne 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
CALL METHOD go_grid2->set_table_for_first_display
EXPORTING
i_structure_name = 'I_FINAL2'
CHANGING
it_outtab = I_FINAL2[]
IT_FIELDCATALOG = IT_CT1_FIELDCAT2[]
EXCEPTIONS
OTHERS = 4.
IF sy-subrc ne 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
CALL METHOD go_grid3->set_table_for_first_display
EXPORTING
i_structure_name = 'TCATX_GRID'
CHANGING
it_outtab = I_TCATX_GRID1[] " empty !!!
EXCEPTIONS
OTHERS = 4.
IF sy-subrc ne 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
CALL METHOD go_grid4->set_table_for_first_display
EXPORTING
i_structure_name = 'TCATX_GRID'
CHANGING
it_outtab = I_TCATX_GRID2[] " empty !!!
EXCEPTIONS
OTHERS = 4.
IF sy-subrc ne 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
Link the docking container to the target dynpro
CALL METHOD go_docking->link
EXPORTING
repid = syst-repid
dynnr = '0100'
CONTAINER =
EXCEPTIONS
OTHERS = 4.
IF sy-subrc ne 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDMODULE. " STATUS_0100 OUTPUT
*& MODULE USER_COMMAND_0100 INPUT
TEXT
MODULE USER_COMMAND_0100 INPUT.
CASE SY-UCOMM.
WHEN 'BACK'.
LEAVE TO SCREEN 0.
ENDCASE.
ENDMODULE. " USER_COMMAND_0100 INPUT
*& FORM FIELDCAT_FINAL1
TEXT
--> P1 TEXT
<-- P2 TEXT
FORM FIELDCAT_FINAL1 .
IF IT_CT1_FIELDCAT1[] IS INITIAL.
ST_CT1_FIELDCAT1-TABNAME = 'I_FINAL1'.
ST_CT1_FIELDCAT1-FIELDNAME = 'PROFILE'.
ST_CT1_FIELDCAT1-COL_POS = 0.
ST_CT1_FIELDCAT1-OUTPUTLEN = 8.
ST_CT1_FIELDCAT1-SCRTEXT_L = 'PROFILE'.
ST_CT1_FIELDCAT1-KEY = 'X'.
APPEND ST_CT1_FIELDCAT1 TO IT_CT1_FIELDCAT1.
CLEAR ST_CT1_FIELDCAT1.
ST_CT1_FIELDCAT1-TABNAME = 'I_FINAL1'.
ST_CT1_FIELDCAT1-FIELDNAME = 'MFIELD'.
ST_CT1_FIELDCAT1-COL_POS = 1.
ST_CT1_FIELDCAT1-OUTPUTLEN = 15.
ST_CT1_FIELDCAT1-SCRTEXT_L = 'FIELD'.
APPEND ST_CT1_FIELDCAT1 TO IT_CT1_FIELDCAT1.
CLEAR ST_CT1_FIELDCAT1.
ST_CT1_FIELDCAT1-TABNAME = 'I_FINAL1'.
ST_CT1_FIELDCAT1-FIELDNAME = 'TEXT'.
ST_CT1_FIELDCAT1-COL_POS = 1.
ST_CT1_FIELDCAT1-OUTPUTLEN = 30.
ST_CT1_FIELDCAT1-SCRTEXT_L = 'TEXT'.
APPEND ST_CT1_FIELDCAT1 TO IT_CT1_FIELDCAT1.
CLEAR ST_CT1_FIELDCAT1.
ST_CT1_FIELDCAT1-TABNAME = 'I_FINAL1'.
ST_CT1_FIELDCAT1-FIELDNAME = 'INPUT'.
ST_CT1_FIELDCAT1-COL_POS = 2.
ST_CT1_FIELDCAT1-OUTPUTLEN = 2.
ST_CT1_FIELDCAT1-SCRTEXT_L = 'INPUT'.
APPEND ST_CT1_FIELDCAT1 TO IT_CT1_FIELDCAT1.
CLEAR ST_CT1_FIELDCAT1.
ST_CT1_FIELDCAT1-TABNAME = 'I_FINAL1'.
ST_CT1_FIELDCAT1-FIELDNAME = 'OBLIGAT'.
ST_CT1_FIELDCAT1-COL_POS = 2.
ST_CT1_FIELDCAT1-OUTPUTLEN = 2.
ST_CT1_FIELDCAT1-SCRTEXT_L = 'REQUIRED'.
APPEND ST_CT1_FIELDCAT1 TO IT_CT1_FIELDCAT1.
CLEAR ST_CT1_FIELDCAT1.
ST_CT1_FIELDCAT1-TABNAME = 'I_FINAL1'.
ST_CT1_FIELDCAT1-FIELDNAME = 'DISPLAY'.
ST_CT1_FIELDCAT1-COL_POS = 2.
ST_CT1_FIELDCAT1-OUTPUTLEN = 2.
ST_CT1_FIELDCAT1-SCRTEXT_L = 'DISPLAY'.
APPEND ST_CT1_FIELDCAT1 TO IT_CT1_FIELDCAT1.
CLEAR ST_CT1_FIELDCAT1.
ST_CT1_FIELDCAT1-TABNAME = 'I_FINAL1'.
ST_CT1_FIELDCAT1-FIELDNAME = 'NOTACT'.
ST_CT1_FIELDCAT1-COL_POS = 2.
ST_CT1_FIELDCAT1-OUTPUTLEN = 2.
ST_CT1_FIELDCAT1-SCRTEXT_L = 'HIDE'.
APPEND ST_CT1_FIELDCAT1 TO IT_CT1_FIELDCAT1.
CLEAR ST_CT1_FIELDCAT1.
ENDIF.
ENDFORM. " FIELDCAT_FINAL1
*& FORM FIELDCAT_FINAL2
TEXT
--> P1 TEXT
<-- P2 TEXT
FORM FIELDCAT_FINAL2 .
IF IT_CT1_FIELDCAT2[] IS INITIAL.
ST_CT1_FIELDCAT2-TABNAME = 'I_FINAL2'.
ST_CT1_FIELDCAT2-FIELDNAME = 'PROFILE'.
ST_CT1_FIELDCAT2-COL_POS = 0.
ST_CT1_FIELDCAT2-OUTPUTLEN = 8.
ST_CT1_FIELDCAT2-SCRTEXT_L = 'PROFILE'.
ST_CT1_FIELDCAT2-KEY = 'X'.
APPEND ST_CT1_FIELDCAT2 TO IT_CT1_FIELDCAT2.
CLEAR ST_CT1_FIELDCAT2.
ST_CT1_FIELDCAT2-TABNAME = 'I_FINAL2'.
ST_CT1_FIELDCAT2-FIELDNAME = 'MFIELD'.
ST_CT1_FIELDCAT2-COL_POS = 1.
ST_CT1_FIELDCAT2-SCRTEXT_L = 'FIELD'.
ST_CT1_FIELDCAT2-OUTPUTLEN = 15.
APPEND ST_CT1_FIELDCAT2 TO IT_CT1_FIELDCAT2.
CLEAR ST_CT1_FIELDCAT2.
ST_CT1_FIELDCAT2-TABNAME = 'I_FINAL2'.
ST_CT1_FIELDCAT2-FIELDNAME = 'TEXT'.
ST_CT1_FIELDCAT2-COL_POS = 1.
ST_CT1_FIELDCAT2-OUTPUTLEN = 30.
ST_CT1_FIELDCAT2-SCRTEXT_L = 'TEXT'.
APPEND ST_CT1_FIELDCAT2 TO IT_CT1_FIELDCAT2.
CLEAR ST_CT1_FIELDCAT2.
ST_CT1_FIELDCAT2-TABNAME = 'I_FINAL2'.
ST_CT1_FIELDCAT2-FIELDNAME = 'INPUT'.
ST_CT1_FIELDCAT2-COL_POS = 2.
ST_CT1_FIELDCAT2-OUTPUTLEN = 2.
ST_CT1_FIELDCAT2-SCRTEXT_L = 'INPUT'.
APPEND ST_CT1_FIELDCAT2 TO IT_CT1_FIELDCAT2.
CLEAR ST_CT1_FIELDCAT2.
ST_CT1_FIELDCAT2-TABNAME = 'I_FINAL2'.
ST_CT1_FIELDCAT2-FIELDNAME = 'OBLIGAT'.
ST_CT1_FIELDCAT2-COL_POS = 2.
ST_CT1_FIELDCAT2-OUTPUTLEN = 2.
ST_CT1_FIELDCAT2-SCRTEXT_L = 'REQUIRED'.
APPEND ST_CT1_FIELDCAT2 TO IT_CT1_FIELDCAT2.
CLEAR ST_CT1_FIELDCAT2.
ST_CT1_FIELDCAT2-TABNAME = 'I_FINAL1'.
ST_CT1_FIELDCAT2-FIELDNAME = 'DISPLAY'.
ST_CT1_FIELDCAT2-COL_POS = 2.
ST_CT1_FIELDCAT2-OUTPUTLEN = 2.
ST_CT1_FIELDCAT2-SCRTEXT_L = 'DISPLAY'.
APPEND ST_CT1_FIELDCAT2 TO IT_CT1_FIELDCAT2.
CLEAR ST_CT1_FIELDCAT2.
ST_CT1_FIELDCAT2-TABNAME = 'I_FINAL2'.
ST_CT1_FIELDCAT2-FIELDNAME = 'NOTACT'.
ST_CT1_FIELDCAT2-COL_POS = 2.
ST_CT1_FIELDCAT2-OUTPUTLEN = 2.
ST_CT1_FIELDCAT2-SCRTEXT_L = 'HIDE'.
APPEND ST_CT1_FIELDCAT2 TO IT_CT1_FIELDCAT2.
CLEAR ST_CT1_FIELDCAT2.
ENDIF.
ENDFORM. " FIELDCAT_FINAL2
*& Form GET_COMPONENTS1
text
--> p1 text
<-- p2 text
FORM GET_COMPONENTS1 .
CLEAR : I_TCATX_GRID1.
REFRESH: I_TCATX_GRID1.
SELECT * FROM TCATX_GRID
INTO CORRESPONDING FIELDS OF TABLE I_TCATX_GRID1
WHERE PROFIL EQ P_PROF1.
ENDFORM. " GET_COMPONENTS1
*& Form GET_COMPONENTS2
text
--> p1 text
<-- p2 text
FORM GET_COMPONENTS2 .
CLEAR : I_TCATX_GRID2.
REFRESH: I_TCATX_GRID2.
SELECT * FROM TCATX_GRID
INTO CORRESPONDING FIELDS OF TABLE I_TCATX_GRID2
WHERE PROFIL EQ P_PROF2.
ENDFORM. " GET_COMPONENTS2
Thanks & Regards,
Nagaraj Kalbavi -
NullPointer when GUI calls method in Client
Hi, I'm relatively new to Java programming and this conference.
I hope the following is not too long winded.
I'm trying to programme a FTP Client which is controlled by a GUI.
My JBuilder project has three classes:
ClientGUI.java and ClientFrame.java (produced with JBUilder's New Application option)
plus AClient.java (this is the 'engine' of the project).
ClientGUI constructs an instance 'frame' of ClientFrame which in turn constructs an instance 'client' of AClient.
The call to the AClient constructor has to be in a try/catch statement,
and takes a JTextArea as a parameter from ClientFrame to allow 'client' to display messges in my GUI.
The AClient constructor opens the Socket connection to a simple server on the same computer.
This part works.
However, when I attempt to use events generated by buttons in my GUI ('frame')to call methods in 'client', I get the following null-pointer exception:-
java.lang.NullPointerException
at ClientFrame.jButton1_actionPerformed(ClientFrame.java:219)
at ClientFrame_jButton1_actionAdapter.actionPerformed(ClientFrame.java:274)
etc...
etc...
These refer to code blocks:-
if ( client.isAlive() ) { /*line 219*/
System.out.println("client alive");
}where isAlive() is a simple test method that returns true,
and
public void actionPerformed(ActionEvent e) {
adaptee.jButton1_actionPerformed(e); /*line 274*/
}'client' is listed as a public field in ClientFrame and is instanciated, so why do I have this problem?
Enclosing the call in a try/catch statement doesn't help.
Thanks in advance. LaurenceThe NullPointer means that the client was not instantiated, though you may think it has been.
Make sure that you are instantiating the correct variable, for instance, if you have a class-level field called client you would do something like this:
public class WhateverClass {
private AClient client;
//other stuff
public WhateverClass(...) {
client = //assignment either
//with new AClient(...)
//or something else
}You would NOT do:
public class WhateverClass {
private AClient client;
//other stuff
public WhateverClass(...) {
AClient client = //assignment either
//with new AClient(...)
//or something else
}Since this would create a second variable of name client that only has scope within the constructor.
Also, if the client is being assigned through a parameter in the constructor, check to make sure that that you are not passing a null value along... Do a System.out.println(client) after the assignement and see what you get. Then you know if the problem occurs in this class or in the class that creates the AClient reference to begin with... -
hi,
I am getting error as i marked BOLD in this program...can u give solutions for that..
REPORT YSBDC6.
TABLES:LFA1.
DATA:BEGIN OF ITAB OCCURS 0,
LIFNR LIKE LFA1-LIFNR,
LAND1 LIKE LFA1-LAND1,
NAME1 LIKE LFA1-NAME1,
END OF ITAB.
DATA:BEGIN OF JTAB OCCURS 0.
INCLUDE STRUCTURE BDCDATA.
DATA:END OF JTAB.
DATA:BEGIN OF KTAB OCCURS 0.
INCLUDE STRUCTURE BDCMSGCOLL.
DATA:END OF KTAB.
CALL METHOD CL_GUI_FRONTEND_SERVICES=>GUI_UPLOAD
EXPORTING
FILENAME = 'C:\PRABA.TXT'
FILETYPE = 'ASC'
HAS_FIELD_SEPARATOR = 'X'
CHANGING
DATA_TAB = ITAB[].
LOOP AT ITAB[] INTO ITAB.
REFRESH JTAB.
PERFORM SUB USING 'YVTRANS' '100'.
PERFORM SUB1 USING:'LFA1-LIFNR' ITAB-LIFNR,
'LFA1-LAND1' ITAB-LAND1,
'LFA1-NAME1' ITAB-NAME1.
PERFORM SUB1 USING 'BDC_OKCODE' 'INSERT'.
CALL TRANSACTION 'YVTRANS' USING JTAB MODE 'A' MESSAGES INTO KTAB.
LOOP AT KTAB.
IF KTAB-MSGTYP = 'I' OR KTAB-MSGNR = 000.
WRITE: /1 'vendor', 15 ITAB-LIFNR, 25 'INSERTED'.
ELSEIF
KTAB-MSGTYP ='E' OR KTAB-MSGNR = 001.
WRITE: /1 'vendor', 15 ITAB-LIFNR, 25 'NOT INSERTED'.
ENDIF.
<b>REFRESH KTAB."ERROR IN THIS LINE 'YOU MAY NOT
"Delete or overwrite table 'ktab' with in a loop through itself</b>
ENDLOOP.
ENDLOOP.
FORM SUB USING A B.
CLEAR JTAB.
JTAB-PROGRAM = A.
JTAB-DYNPRO = B.
JTAB-DYNBEGIN = 'X'.
APPEND JTAB.
ENDFORM.
FORM SUB1 USING C D.
CLEAR JTAB.
JTAB-FNAM = C.
JTAB-FVAL = D.
APPEND JTAB.
ENDFORM.HI,
thanks for both..for immediate response..my PC got struck up that why i could not
after editing this program i got error like YVTRANS not found..that means i have written seperate code for YVTRANS like below..is it correct..can u give solution for this..
REPORT YVTRANS.
TABLES:LFA1.
*DATA: WA TYPE LFA1.
*ITAB TYPE TABLE OF LFA1.
MODULE USER_COMMAND_0100 INPUT.
CASE SY-UCOMM.
WHEN 'INSERT'.
INSERT LFA1.
IF SY-SUBRC = 0.
MESSAGE I000(0) WITH 'RECORD INSERTED'.
ELSE.
MESSAGE E001(0) WITH 'NOT INSERTED'.
ENDIF.
WHEN 'EXIT'.
LEAVE PROGRAM.
ENDCASE.
ENDMODULE.
orginal program
REPORT YSBDC6.
TABLES:LFA1.
DATA:BEGIN OF ITAB OCCURS 0,
LIFNR LIKE LFA1-LIFNR,
LAND1 LIKE LFA1-LAND1,
NAME1 LIKE LFA1-NAME1,
END OF ITAB.
DATA:BEGIN OF JTAB OCCURS 0.
INCLUDE STRUCTURE BDCDATA.
DATA:END OF JTAB.
DATA:BEGIN OF KTAB OCCURS 0.
INCLUDE STRUCTURE BDCMSGCOLL.
DATA:END OF KTAB.
CALL METHOD CL_GUI_FRONTEND_SERVICES=>GUI_UPLOAD
EXPORTING
FILENAME = 'C:\PRABA.TXT'
FILETYPE = 'ASC'
HAS_FIELD_SEPARATOR = 'X'
CHANGING
DATA_TAB = ITAB[].
LOOP AT ITAB[] INTO ITAB.
REFRESH JTAB.
PERFORM SUB USING 'YVTRANS' '100'.
PERFORM SUB1 USING:'LFA1-LIFNR' ITAB-LIFNR,
'LFA1-LAND1' ITAB-LAND1,
'LFA1-NAME1' ITAB-NAME1.
PERFORM SUB1 USING 'BDC_OKCODE' 'INSERT'.
CALL TRANSACTION 'YVTRANS' USING JTAB MODE 'A' MESSAGES INTO KTAB.
LOOP AT KTAB.
IF KTAB-MSGTYP = 'I' OR KTAB-MSGNR = 000.
WRITE: /1 'vendor', 15 ITAB-LIFNR, 25 'INSERTED'.
ELSEIF
KTAB-MSGTYP ='E' OR KTAB-MSGNR = 001.
WRITE: /1 'vendor', 15 ITAB-LIFNR, 25 'NOT INSERTED'.
ENDIF.
ENDLOOP.
REFRESH KTAB.
ENDLOOP.
FORM SUB USING A B.
CLEAR JTAB.
JTAB-PROGRAM = A.
JTAB-DYNPRO = B.
JTAB-DYNBEGIN = 'X'.
APPEND JTAB.
ENDFORM.
FORM SUB1 USING C D.
CLEAR JTAB.
JTAB-FNAM = C.
JTAB-FVAL = D.
APPEND JTAB.
ENDFORM. -
Proper use of END-OF-SELECTION event in report programme
Hi,
If we will write "WRITE" statements in side START-OF-SELECTION then it will help me to display the output.Then what is the need of END-OF-SELECTION .
Can any body please tell me the <b>proper use of END-OF-SELECTION event in report programme.</b>This is the last of the events called by the runtime environment to occur. It is triggered after all of the data has been read from the logical database, and before the list processor is started.
<b>In report programs using LDB for every value selected the program issues the output, to control this you would use END-OF-SELECTION.</b> Now if you call your output in this event, the output is made only after all the values are selected as per the selection criteria.
suppose while coding, u need a logic like below:
if a condition is satisfied continue with the report
and if not satisfied, then display a message and end the report.
then u can code like below.
start-of-slection.
if a = <condition>.
do the following.......
else.
stop.
end-of-selection.
write: 'THIS IS END'.
stop command triggers end-of-slection from anywhere.
I hope it helps.
Best Regards,
Vibha
*Please mark all the helpful answers -
Abap report for calling abap proxy?
why do we need to write abap report for calling abap proxy? i mean what's the use of abap report and what are the things inside the report ...please give me details about abap report.
Hi,
In SPROXY for your outbound interface you generate the proxy class.
The ABAP report is used to fill the data from the ABAP tables and then trigger the call to XI using this class.
Look into the code in this blog and check what is done,. The data is filled in the report and then the call is made to XI using an object of the class created in SPROXY using the EXECUTE_ASYNCHRONOUS method.
/people/ravikumar.allampallam/blog/2005/03/14/abap-proxies-in-xiclient-proxy
Regards
Bhavesh -
Calling method of a custom infotype from ABAP
Hi Experts,
I am working on an application where i need to call a method of a custom defined infotype.
I have done this -->
1. Create a custom infotype 9111
2. SAP creates a class of that infotype ZCL_HRPA_INFOTYPE_9111
3. Inside this method there are few inherited method which provide me functionality of insert , update , delete
i want to call methods IF_HRPA_INFTY_BL~MODIFY,
IF_HRPA_INFTY_BL~INSERT
However when i call these method from abap report this method does not work.
where as when i try to insert an entry using PA30 transaction it works.
Does anyone know why does this happen and what is the solution?
Regards,
Ashish ShahHad the same problem (probably copied from the same program). The answer is that you need to commit the work at the end using something like
* Commit
CALL METHOD busilog->flush
EXPORTING
no_commit = space.
Here is an example of my code for IT0002 which works.
*& Report Z_TEST2
REPORT z_test2.
DATA: a_masterdata_bl TYPE REF TO if_hrpa_masterdata_bl,
p0002 TYPE p0002,
lo_0002 TYPE REF TO cl_hrpa_infotype_0002,
ls_p0002_ref TYPE REF TO data,
container_tab TYPE hrpad_infty_container_tab,
container TYPE REF TO if_hrpa_infty_container,
message_handler TYPE REF TO cl_hrpa_message_list,
infotype_logic TYPE REF TO if_hrpa_infty_bl,
update_mode TYPE hrpad_update_mode VALUE 'XXX',
lt_0002_container TYPE REF TO cl_hrpa_infotype_container,
key TYPE pskey,
l_is_ok TYPE boole_d.
FIELD-SYMBOLS <p0002> TYPE p0002.
* get business logic from masterdata factory
CALL METHOD cl_hrpa_masterdata_factory=>get_business_logic
IMPORTING
business_logic = a_masterdata_bl.
* CATCH cx_hrpa_violated_assertion .
*ENDTRY.
*TRY.
CALL METHOD a_masterdata_bl->read
EXPORTING
tclas = 'A'
pernr = '508'
infty = '0002'
begda = sy-datum
endda = sy-datum
no_auth_check = 'X'
message_handler = message_handler
IMPORTING
container_tab = container_tab
is_ok = l_is_ok
* CATCH cx_hrpa_violated_assertion .
*ENDTRY.
READ TABLE container_tab INTO container INDEX 1.
lt_0002_container ?= container.
TRY.
CALL METHOD lt_0002_container->primary_record_ref
IMPORTING
pnnnn_ref = ls_p0002_ref.
CATCH cx_hrpa_violated_assertion.
ENDTRY.
ASSIGN ls_p0002_ref->* TO <p0002>.
MOVE-CORRESPONDING <p0002> TO key.
break stantric.
<p0002>-vorna = 'Rick'.
container ?= lt_0002_container->modify_primary_record( <p0002> ).
TRY.
CREATE OBJECT lo_0002
EXPORTING
tclas = 'A'
infty = '0002'.
CATCH cx_hrpa_violated_assertion .
ENDTRY.
CREATE OBJECT message_handler.
TRY.
CALL METHOD lo_0002->get_specific_bl
EXPORTING
versionid = '01'
tclas = 'A'
pskey = key
IMPORTING
infotype_logic = infotype_logic.
CATCH cx_hrpa_violated_assertion .
ENDTRY.
TRY.
CALL METHOD infotype_logic->modify
EXPORTING
old_container = lt_0002_container
massn = space
massg = space
update_mode = update_mode
no_auth_check = 'X'
message_handler = message_handler
IMPORTING
is_ok = l_is_ok
CHANGING
container = container.
CATCH cx_hrpa_violated_assertion .
ENDTRY.
* Commit
CALL METHOD a_masterdata_bl->flush
EXPORTING
no_commit = space.
Maybe you are looking for
-
Problem signature: Problem Event Name: APPCRASH Application Name: firefox.exe Application Version: 32.0.3.5379 Application Timestamp: 54224e2c Fault Module Name: ntdll.dll Fault Module Version: 6.1.7601.18247 Fault Module Timestamp: 521ea91c Exceptio
-
Being deaf, I rely on the vibrate mode to alert me to incoming messages or reminders. I haven't had problems with my previous PDAs such as Blackberry and Motorola, but since I obtained an iPhone 4, I`ve discovered that its vibrate mode is more of a w
-
I'm trying to connect my 20" Cinema display to an old Dell PC equipped with an ATI Radeon 9700 (AGP) card using the DVI connection of course. But nothing happens. The screen is black, and the white light pulses. Is the Cinema not compatible with this
-
I borrowed a JVC Everio HD Camcorder that shoots video and stores on an SD-Card in a CED format. I cannot playback this video on my MAC and would also like to know how to convert to a more standard form of video.
-
IPhoto will not sync with my iPhone
I did the new update for my Mac yesterday and one of the update was for iPhoto but now when I open iphoto it will not find my iPhone. Not sure what to do to fix that. I do have iTunes open and iTunes does see my iPhone so I know it has nothing to do