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

Existing Function module for my requirement

Former Member
0 Likes
713

My reuirement is as follows,

1) Enter the Sales order number in the selection screen.

2) Get the sales order Object number from the Objnr field of VBAK.

3) using the Objnr field, read the status of the sales order using the Function Module.

4) Display the status of the sales order in an ALV output.

5) Click on the Sales order number and display the sales order details using the transaction VA03.

Please help me out for function module to read d status of sales order,N also send me the steps to create my ALV report.

Tanx,

Santu.

5 REPLIES 5
Read only

Former Member
0 Likes
676

Hi

As I told already take the OBJNR field in Sales order table VBAK and pass it to <b>JEST</b> table and Take the description of that Status from <b>TJ02T</b> table.

Design the Internal table by fetching the data from VBAK and VBAP tables and build the field catalog and display the ALV using the int table

se the sample table and the hight lighed portion for calling the transaction

REPORT YMS_BLOCKLISTALV .

TYPE-POOLS: slis. " ALV Global types

SELECTION-SCREEN :

SKIP,

BEGIN OF LINE,

COMMENT 5(27) v_1 FOR FIELD p_max. "#EC NEEDED

PARAMETERS p_max(2) TYPE n DEFAULT '02' OBLIGATORY.

SELECTION-SCREEN END OF LINE.

DATA:

  • 1st Table

BEGIN OF gt_kna1 OCCURS 0, " Data displayed

kunnr LIKE kna1-kunnr, " Customer number

ernam LIKE kna1-ernam, " Name of Person who Created

erdat LIKE kna1-erdat, " Creation date

name1 LIKE kna1-name1, " Name 1

END OF gt_kna1,

  • 2nd Table

BEGIN OF gt_mara OCCURS 0,

ernam LIKE mara-ernam, " Name of Person who Created

matnr LIKE mara-matnr, " Material number

ersda LIKE mara-ersda, " Creation date

brgew LIKE mara-brgew, " Gross weight

END OF gt_mara,

  • 3rd Table

BEGIN OF gt_vbak OCCURS 0,

vkorg LIKE vbak-vkorg, " Sales organization

kunnr LIKE vbak-kunnr, " Sold-to party

vbeln LIKE vbak-vbeln, " Sales document

netwr LIKE vbak-netwr, " Net Value of the Sales Order

waerk LIKE vbak-waerk, " SD document currency

END OF gt_vbak.

----


INITIALIZATION.

v_1 = 'Maximum of records to read'.

----


START-OF-SELECTION.

  • Read data

SELECT * FROM kna1

UP TO p_max ROWS

INTO CORRESPONDING FIELDS OF TABLE gt_kna1.

SELECT * FROM mara

UP TO p_max ROWS

INTO CORRESPONDING FIELDS OF TABLE gt_mara.

SELECT * FROM vbak

UP TO p_max ROWS

INTO CORRESPONDING FIELDS OF TABLE gt_vbak.

CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_INIT'

EXPORTING

i_callback_program = sy-cprog

i_callback_user_command = 'USER_COMMAND'.

PERFORM list_append TABLES gt_kna1

USING '1'

'GT_KNA1'.

PERFORM list_append TABLES gt_mara

USING '2'

'GT_MARA'.

PERFORM list_append TABLES gt_vbak

USING '3'

'GT_VBAK'.

PERFORM f_list_display.

<b>----


  • FORM USER_COMMAND *

----


FORM user_command USING i_ucomm LIKE sy-ucomm

is_selfield TYPE slis_selfield. "#EC CALLED

CASE i_ucomm.

WHEN '&IC1'. " Pick

CASE is_selfield-tabname.

WHEN 'GT_MARA'.

WHEN 'GT_KNA1'.

WHEN 'GT_VBAK'.

READ TABLE gt_vbak INDEX is_selfield-tabindex.

IF sy-subrc EQ 0.

  • Sales order number

SET PARAMETER ID 'AUN' FIELD gt_vbak-vbeln.

  • Display Sales Order

CALL TRANSACTION 'VA03' AND SKIP FIRST SCREEN.

ENDIF.

ENDCASE.

ENDCASE.

ENDFORM. " USER_COMMAND</b>

----


*/div>

  • Form list_append

----


FORM list_append TABLES ut_table

USING u_no TYPE char1

u_tabname TYPE slis_tabname.

  • Macro definition

DEFINE m_fieldcat.

ls_fieldcat-fieldname = &1.

ls_fieldcat-ref_tabname = &2.

append ls_fieldcat to lt_fieldcat.

END-OF-DEFINITION.

DEFINE m_sort.

ls_sort-fieldname = &1.

ls_sort-up = 'X'.

append ls_sort to lt_sort.

END-OF-DEFINITION.

DATA :

ls_fieldcat TYPE slis_fieldcat_alv,

lt_fieldcat TYPE slis_t_fieldcat_alv, " Field catalog

ls_sort TYPE slis_sortinfo_alv,

lt_sort TYPE slis_t_sortinfo_alv. " Sort table

DATA:

lt_events TYPE slis_t_event,

ls_event TYPE slis_alv_event,

ls_layout TYPE slis_layout_alv.

ls_layout-group_change_edit = 'X'.

ls_layout-colwidth_optimize = 'X'.

ls_layout-zebra = 'X'.

ls_layout-detail_popup = 'X'.

ls_layout-get_selinfos = 'X'.

ls_layout-max_linesize = '200'.

CASE u_no.

WHEN '1'.

  • Build field catalog and sort table

m_fieldcat 'KUNNR' 'KNA1'.

m_fieldcat 'ERNAM' 'KNA1'.

m_fieldcat 'ERDAT' 'KNA1'.

m_fieldcat 'NAME1' 'KNA1'.

m_sort 'KUNNR'.

WHEN '2'.

m_fieldcat 'MATNR' 'MARA'.

m_fieldcat 'ERNAM' 'MARA'.

m_fieldcat 'ERSDA' 'MARA'.

m_fieldcat 'BRGEW' 'MARA'.

m_sort 'MATNR'.

WHEN '3'.

m_fieldcat 'VBELN' 'VBAK'.

m_fieldcat 'VKORG' 'VBAK'.

m_fieldcat 'KUNNR' 'VBAK'.

m_fieldcat 'NETWR' 'VBAK'.

m_fieldcat 'WAERK' 'VBAK'.

m_sort 'VBELN'.

ENDCASE.

IF u_no CA '13'.

MOVE 'TOP_OF_PAGE' TO ls_event-name.

CONCATENATE 'TOP_OF_PAGE' u_no INTO ls_event-form.

APPEND ls_event TO lt_events.

ELSE.

MOVE 'TOP_OF_LIST' TO ls_event-name.

CONCATENATE 'TOP_OF_LIST' u_no INTO ls_event-form.

APPEND ls_event TO lt_events.

ENDIF.

CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'

EXPORTING

it_fieldcat = lt_fieldcat

is_layout = ls_layout

i_tabname = u_tabname

it_events = lt_events

it_sort = lt_sort

  • i_text =

TABLES

t_outtab = ut_table

EXCEPTIONS

program_error = 1

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

ENDFORM. " LIST_APPEND

----


  • Form f_list_display

----


FORM f_list_display.

DATA ls_print TYPE slis_print_alv.

ls_print-no_print_selinfos = 'X'. " Display no selection infos

ls_print-no_print_listinfos = 'X'. " Display no listinfos

ls_print-reserve_lines = 2. " Lines reserved for end of page

CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_DISPLAY'

EXPORTING

i_interface_check = ' '

is_print = ls_print

EXCEPTIONS

program_error = 1

OTHERS = 2.

IF sy-subrc <> 0.

MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

ENDIF.

ENDFORM. " F_LIST_DISPLAY

----


  • FORM top_of_page1 *

----


FORM top_of_page1. "#EC CALLED

PERFORM top_of_page.

ENDFORM.

----


  • FORM top_of_page3 *

----


FORM top_of_page3. "#EC CALLED

PERFORM top_of_page.

ENDFORM.

----


  • FORM top_of_page *

----


FORM top_of_page.

ULINE.

WRITE : sy-uname, sy-title(56) CENTERED, sy-datum.

ULINE.

ENDFORM.

----


  • FORM top_of_list2 *

----


FORM top_of_list2. "#EC CALLED

WRITE 'TOP OF LIST2'.

ENDFORM.

                            • END OF PROGRAM Z_ALV_LIST_BLOCK ***********************

REPORT ZKEERTHI_ALV3 LINE-COUNT 100 .

&----


*& tables declaration

&----


tables: mara.

&----


*& type-pools declaration

&----


type-pools: slis.

&----


*& data declaration

&----


data: g_repid type sy-repid.

DATA : IT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV, "mara

WA_FIELDCAT TYPE SLIS_FIELDCAT_ALV.

DATA : IT_FIELDCAT1 TYPE SLIS_T_FIELDCAT_ALV, "makt

WA_FIELDCAT1 TYPE SLIS_FIELDCAT_ALV.

DATA : IT_FIELDCAT2 TYPE SLIS_T_FIELDCAT_ALV, "marc

WA_FIELDCAT2 TYPE SLIS_FIELDCAT_ALV.

DATA: GT_PRINT TYPE SLIS_PRINT_ALV,

WA_LAYOUT TYPE SLIS_LAYOUT_ALV,

XS_EVENT TYPE SLIS_ALV_EVENT,

GT_XEVENTS TYPE SLIS_T_EVENT,

GT_YEVENTS TYPE SLIS_T_EVENT,

GT_ZEVENTS TYPE SLIS_T_EVENT,

WA_SORT TYPE SLIS_SORTINFO_ALV,

IT_SORT TYPE SLIS_T_SORTINFO_ALV.

DATA: BEGIN OF it_mara occurs 0,

MATNR LIKE MARA-MATNR,

MTART LIKE MARA-MTART,

MATKL LIKE MARA-MATKL,

MEINS LIKE MARA-MEINS,

NTGEW LIKE MARA-NTGEW,

END OF it_mara.

DATA: BEGIN OF IT_MAKT occurs 0,

MATNR LIKE MAKT-MATNR,

SPRAS LIKE MAKT-SPRAS,

MAKTX LIKE MAKT-MAKTX,

MAKTG LIKE MAKT-MAKTG,

END OF IT_MAKT.

DATA: BEGIN OF IT_MARC occurs 0,

MATNR LIKE MARC-MATNR,

WERKS LIKE MARC-WERKS,

LADGR LIKE MARC-LADGR,

MTVFP LIKE MARC-MTVFP,

dispr LIKE marc-dispr,

dismm LIKE marc-dismm,

dispo LIKE marc-dispo,

END OF IT_MARC.

&----


*& initialisation

&----


initialization.

g_repid = sy-repid.

&----


*& selection screen

&----


selection-screen begin of block b with frame title text-001.

select-options: s_matnr for mara-matnr,

s_mtart for mara-mtart.

selection-screen end of block b.

&----


*& start of selection

&----


start-of-selection.

perform get_maradetails.

perform get_maktdetails.

perform get_marcdetails.

&----


*& Form get_maradetails

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM get_maradetails .

select matnr

mtart

matkl

meins

ntgew from mara

into table it_mara

where matnr in s_matnr and

mtart in s_mtart.

ENDFORM. " get_maradetails

&----


*& Form get_maktdetails

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM get_maktdetails .

select matnr

spras

maktx

maktg from makt into table it_makt

for all entries in it_mara

where matnr = it_mara-matnr..

ENDFORM. " get_maktdetails

&----


*& Form get_marcdetails

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM get_marcdetails .

select matnr

werks

ladgr

mtvfp

dispr

dismm

dispo from marc

into table it_marc

for all entries in it_mara

where matnr = it_mara-matnr.

ENDFORM. " get_marcdetails

&----


*& end of selection

&----


END-OF-SELECTION.

perform sort_list.

perform modify_fieldcat.

PERFORM EVENT_LIST.

PERFORM BLOCK_LIST.

&----


*& Form modify_fieldcat

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM modify_fieldcat .

clear wa_fieldcat.

WA_FIELDCAT-FIELDNAME = 'MATNR'.

WA_FIELDCAT-TABNAME = 'IT_MARA'.

WA_FIELDCAT-SELTEXT_L = 'MATERIAL NUM'.

WA_FIELDCAT-COL_POS = 1.

WA_FIELDCAT-OUTPUTLEN = 18.

APPEND WA_FIELDCAT TO IT_FIELDCAT.

CLEAR WA_FIELDCAT.

WA_FIELDCAT-FIELDNAME = 'MTART'.

WA_FIELDCAT-TABNAME = 'IT_MARA'.

WA_FIELDCAT-SELTEXT_L = 'MAT TYPE'.

WA_FIELDCAT-COL_POS = 2.

WA_FIELDCAT-OUTPUTLEN = 5.

APPEND WA_FIELDCAT TO IT_FIELDCAT.

CLEAR WA_FIELDCAT.

WA_FIELDCAT-FIELDNAME = 'MATKL'.

WA_FIELDCAT-TABNAME = 'IT_MARA'.

WA_FIELDCAT-SELTEXT_L = 'MAT GROUP'.

WA_FIELDCAT-COL_POS = 3.

WA_FIELDCAT-OUTPUTLEN = 10.

APPEND WA_FIELDCAT TO IT_FIELDCAT.

CLEAR WA_FIELDCAT.

WA_FIELDCAT-FIELDNAME = 'MEINS'.

WA_FIELDCAT-TABNAME = 'IT_MARA'.

WA_FIELDCAT-SELTEXT_L = 'UNIT'.

WA_FIELDCAT-COL_POS = 4.

WA_FIELDCAT-OUTPUTLEN = 5.

APPEND WA_FIELDCAT TO IT_FIELDCAT.

CLEAR WA_FIELDCAT.

WA_FIELDCAT-FIELDNAME = 'NTGEW'.

WA_FIELDCAT-TABNAME = 'IT_MARA'.

WA_FIELDCAT-DO_SUM = 'X'.

WA_FIELDCAT-SELTEXT_L = 'QUANTITY'.

WA_FIELDCAT-COL_POS = 5.

WA_FIELDCAT-OUTPUTLEN = 15.

APPEND WA_FIELDCAT TO IT_FIELDCAT.

CLEAR WA_FIELDCAT.

CLEAR WA_FIELDCAT1.

WA_FIELDCAT1-FIELDNAME = 'MATNR'.

WA_FIELDCAT1-TABNAME = 'IT_MAKT'.

WA_FIELDCAT1-SELTEXT_L = 'MATERIAL NUM'.

WA_FIELDCAT1-COL_POS = 1.

WA_FIELDCAT1-OUTPUTLEN = 18.

APPEND WA_FIELDCAT1 TO IT_FIELDCAT1.

CLEAR WA_FIELDCAT1.

WA_FIELDCAT1-FIELDNAME = 'SPRAS'.

WA_FIELDCAT1-TABNAME = 'IT_MAKT'.

WA_FIELDCAT1-SELTEXT_L = 'LANGUAGE'.

WA_FIELDCAT1-COL_POS = 2.

WA_FIELDCAT1-OUTPUTLEN = 2.

APPEND WA_FIELDCAT1 TO IT_FIELDCAT1.

CLEAR WA_FIELDCAT1.

WA_FIELDCAT1-FIELDNAME = 'MAKTX'.

WA_FIELDCAT1-TABNAME = 'IT_MAKT'.

WA_FIELDCAT1-SELTEXT_L = 'MAT DESC'.

WA_FIELDCAT1-COL_POS = 3.

WA_FIELDCAT1-OUTPUTLEN = 40.

APPEND WA_FIELDCAT1 TO IT_FIELDCAT1.

CLEAR WA_FIELDCAT1.

WA_FIELDCAT1-FIELDNAME = 'MAKTG'.

WA_FIELDCAT1-TABNAME = 'IT_MAKT'.

WA_FIELDCAT1-SELTEXT_L = 'GRP DESC'.

WA_FIELDCAT1-COL_POS = 4.

WA_FIELDCAT1-OUTPUTLEN = 40.

APPEND WA_FIELDCAT1 TO IT_FIELDCAT1.

CLEAR WA_FIELDCAT1.

CLEAR WA_FIELDCAT2.

WA_FIELDCAT2-FIELDNAME = 'MATNR'.

WA_FIELDCAT2-TABNAME = 'IT_MARC'.

WA_FIELDCAT2-SELTEXT_L = 'MATERIAL NUM'.

WA_FIELDCAT2-COL_POS = 1.

WA_FIELDCAT2-OUTPUTLEN = 18.

APPEND WA_FIELDCAT2 TO IT_FIELDCAT2.

CLEAR WA_FIELDCAT2.

WA_FIELDCAT2-FIELDNAME = 'WERKS'.

WA_FIELDCAT2-TABNAME = 'IT_MARC'.

WA_FIELDCAT2-SELTEXT_L = 'PLANT'.

WA_FIELDCAT2-COL_POS = 2.

WA_FIELDCAT2-OUTPUTLEN = 4.

APPEND WA_FIELDCAT2 TO IT_FIELDCAT2.

CLEAR WA_FIELDCAT2.

WA_FIELDCAT2-FIELDNAME = 'LADGR'.

WA_FIELDCAT2-TABNAME = 'IT_MARC'.

WA_FIELDCAT2-SELTEXT_L = 'LOAD GRP'.

WA_FIELDCAT2-COL_POS = 3.

WA_FIELDCAT2-OUTPUTLEN = 4.

APPEND WA_FIELDCAT2 TO IT_FIELDCAT2.

CLEAR WA_FIELDCAT2.

WA_FIELDCAT2-FIELDNAME = 'MTVFP'.

WA_FIELDCAT2-TABNAME = 'IT_MARC'.

WA_FIELDCAT2-SELTEXT_L = 'GRP CHK'.

WA_FIELDCAT2-COL_POS = 4.

WA_FIELDCAT2-OUTPUTLEN = 4.

APPEND WA_FIELDCAT2 TO IT_FIELDCAT2.

CLEAR WA_FIELDCAT2.

WA_FIELDCAT2-FIELDNAME = 'DISPR'.

WA_FIELDCAT2-TABNAME = 'IT_MARC'.

WA_FIELDCAT2-SELTEXT_L = 'MRP PROFILE'.

WA_FIELDCAT2-COL_POS = 5.

WA_FIELDCAT2-OUTPUTLEN = 4.

APPEND WA_FIELDCAT2 TO IT_FIELDCAT2.

CLEAR WA_FIELDCAT2.

WA_FIELDCAT2-FIELDNAME = 'DISMM'.

WA_FIELDCAT2-TABNAME = 'IT_MARC'.

WA_FIELDCAT2-SELTEXT_L = 'MRP TYPE'.

WA_FIELDCAT2-COL_POS = 6.

WA_FIELDCAT2-OUTPUTLEN = 4.

APPEND WA_FIELDCAT2 TO IT_FIELDCAT2.

CLEAR WA_FIELDCAT2.

WA_FIELDCAT2-FIELDNAME = 'DISPO'.

WA_FIELDCAT2-TABNAME = 'IT_MARC'.

WA_FIELDCAT2-SELTEXT_L = 'MRP CON'.

WA_FIELDCAT2-COL_POS = 7.

WA_FIELDCAT2-OUTPUTLEN = 4.

APPEND WA_FIELDCAT2 TO IT_FIELDCAT2.

CLEAR WA_FIELDCAT2.

ENDFORM. " modify_fieldcat

&----


*& Form BLOCK_LIST

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM BLOCK_LIST .

CLEAR WA_LAYOUT.

WA_LAYOUT-ZEBRA = 'X'.

WA_LAYOUT-TOTALS_TEXT = 'TOTAL'.

CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_INIT'

EXPORTING

I_CALLBACK_PROGRAM = G_REPID

I_CALLBACK_PF_STATUS_SET = ' '

I_CALLBACK_USER_COMMAND = 'user_command'.

  • IT_EXCLUDING =

.

CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'

EXPORTING

IS_LAYOUT = WA_LAYOUT

IT_FIELDCAT = IT_FIELDCAT[]

I_TABNAME = 'IT_MARA'

IT_EVENTS = GT_XEVENTS

IT_SORT = IT_SORT

  • I_TEXT = ' '

TABLES

T_OUTTAB = IT_MARA

  • EXCEPTIONS

  • PROGRAM_ERROR = 1

  • MAXIMUM_OF_APPENDS_REACHED = 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.

CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'

EXPORTING

IS_LAYOUT = WA_LAYOUT

IT_FIELDCAT = IT_FIELDCAT1

I_TABNAME = 'IT_MAKT'

IT_EVENTS = GT_YEVENTS

  • IT_SORT =

  • I_TEXT = ' '

TABLES

T_OUTTAB = IT_MAKT

  • EXCEPTIONS

  • PROGRAM_ERROR = 1

  • MAXIMUM_OF_APPENDS_REACHED = 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.

CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'

EXPORTING

IS_LAYOUT = WA_LAYOUT

IT_FIELDCAT = IT_FIELDCAT2

I_TABNAME = 'IT_MARC'

IT_EVENTS = GT_ZEVENTS

  • IT_SORT =

  • I_TEXT = ' '

TABLES

T_OUTTAB = IT_MARC

  • EXCEPTIONS

  • PROGRAM_ERROR = 1

  • MAXIMUM_OF_APPENDS_REACHED = 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.

CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_DISPLAY'

EXPORTING

  • I_INTERFACE_CHECK = ' '

IS_PRINT = GT_PRINT

  • I_SCREEN_START_COLUMN = 0

  • I_SCREEN_START_LINE = 0

  • I_SCREEN_END_COLUMN = 0

  • I_SCREEN_END_LINE = 0

  • IMPORTING

  • E_EXIT_CAUSED_BY_CALLER =

  • ES_EXIT_CAUSED_BY_USER =

  • EXCEPTIONS

  • PROGRAM_ERROR = 1

  • OTHERS = 2

.

IF SY-SUBRC <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

ENDFORM. " BLOCK_LIST

&----


*& Form EVENT_LIST

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM EVENT_LIST .

CLEAR XS_EVENT.

XS_EVENT-NAME = SLIS_EV_TOP_OF_PAGE.

XS_EVENT-FORM = 'XTOP_OF_PAGE'.

APPEND XS_EVENT TO GT_XEVENTS.

CLEAR XS_EVENT.

XS_EVENT-NAME = SLIS_EV_END_OF_PAGE.

XS_EVENT-FORM = 'XEND_OF_PAGE'.

APPEND XS_EVENT TO GT_XEVENTS.

CLEAR XS_EVENT.

XS_EVENT-NAME = SLIS_EV_TOP_OF_LIST.

XS_EVENT-FORM = 'XTOP_OF_LIST'.

APPEND XS_EVENT TO GT_XEVENTS.

CLEAR XS_EVENT.

XS_EVENT-NAME = SLIS_EV_END_OF_LIST.

XS_EVENT-FORM = 'XEND_OF_LIST'.

APPEND XS_EVENT TO GT_XEVENTS.

CLEAR XS_EVENT.

XS_EVENT-NAME = SLIS_EV_END_OF_PAGE.

XS_EVENT-FORM = 'YEND_OF_PAGE'.

APPEND XS_EVENT TO GT_YEVENTS.

CLEAR XS_EVENT.

XS_EVENT-NAME = SLIS_EV_TOP_OF_PAGE.

XS_EVENT-FORM = 'YTOP_OF_PAGE'.

APPEND XS_EVENT TO GT_YEVENTS.

CLEAR XS_EVENT.

XS_EVENT-NAME = SLIS_EV_TOP_OF_LIST.

XS_EVENT-FORM = 'YTOP_OF_LIST'.

APPEND XS_EVENT TO GT_YEVENTS.

CLEAR XS_EVENT.

XS_EVENT-NAME = SLIS_EV_END_OF_LIST.

XS_EVENT-FORM = 'YEND_OF_LIST'.

APPEND XS_EVENT TO GT_YEVENTS.

CLEAR XS_EVENT.

XS_EVENT-NAME = SLIS_EV_END_OF_PAGE.

XS_EVENT-FORM = 'ZEND_OF_PAGE'.

APPEND XS_EVENT TO GT_ZEVENTS.

CLEAR XS_EVENT.

XS_EVENT-NAME = SLIS_EV_TOP_OF_PAGE.

XS_EVENT-FORM = 'ZTOP_OF_PAGE'.

APPEND XS_EVENT TO GT_ZEVENTS.

CLEAR XS_EVENT.

XS_EVENT-NAME = SLIS_EV_TOP_OF_LIST.

XS_EVENT-FORM = 'ZTOP_OF_LIST'.

APPEND XS_EVENT TO GT_ZEVENTS.

CLEAR XS_EVENT.

XS_EVENT-NAME = SLIS_EV_END_OF_LIST.

XS_EVENT-FORM = 'ZEND_OF_LIST'.

APPEND XS_EVENT TO GT_ZEVENTS.

CLEAR XS_EVENT.

ENDFORM. " EVENT_LIST

FORM XTOP_OF_PAGE.

WRITE:/ 'TOP OF PAGE FOR MARA'.

ENDFORM.

FORM YTOP_OF_PAGE.

WRITE:/ 'TOP OF PAGE FOR MAKT'.

ENDFORM.

FORM ZTOP_OF_PAGE.

WRITE:/ 'TOP OF PAGE FOR MARC'.

ENDFORM.

FORM XEND_OF_PAGE.

WRITE:/ 'END OF PAGE FOR MARA'.

ENDFORM.

FORM YEND_OF_PAGE.

WRITE:/ 'END OF PAGE FOR MAKT'.

ENDFORM.

FORM ZEND_OF_PAGE.

WRITE:/ 'END OF PAGE FOR MARC'.

ENDFORM.

FORM XTOP_OF_LIST.

WRITE:/ 'TOP OF LIST FOR MARA'.

ENDFORM.

FORM YTOP_OF_LIST.

WRITE:/ 'TOP OF LIST FOR MAKT'.

ENDFORM.

FORM ZTOP_OF_LIST.

WRITE:/ 'TOP OF LIST FOR MARC'.

ENDFORM.

FORM XEND_OF_LIST.

WRITE:/ 'END OF LIST FOR MARA'.

ENDFORM.

FORM YEND_OF_LIST.

WRITE:/ 'END OF LIST FOR MAKT'.

ENDFORM.

FORM ZEND_OF_LIST.

WRITE:/ 'END OF LIST FOR MARC'.

ENDFORM.

&----


*& Form sort_list

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM sort_list .

CLEAR WA_SORT.

WA_SORT-FIELDNAME = 'MTART'.

WA_SORT-SUBTOT = 'X'.

APPEND WA_SORT TO IT_SORT.

CLEAR WA_SORT.

WA_SORT-FIELDNAME = 'MATKL'.

WA_SORT-SUBTOT = 'X'.

APPEND WA_SORT TO IT_SORT.

CLEAR WA_SORT.

ENDFORM. " sort_list

Reward points if useful

Regards

Anji

Message was edited by:

Anji Reddy Vangala

Read only

0 Likes
676

Hi Anji,

M santos my TL is saying me to find out first function module which takes objnr n reads the status of the sales order.Then display it with alv display.So strucked in finding function module.

Thanks,

santu.

Read only

0 Likes
676

Hi

Use the fun module

<b>STATUS_READ</b> to get the status of the object

further help see in the SE37 for this fun module

Reward points if useful

Regards

Anji

Read only

0 Likes
676

Hi Anji,

Tanx very much.My TL has accepted status_read function module for getting status of sales.Now m started using dis function module,If i get any problem in passing parameters i'll get bac to u,Please help me out in using d function module.

Tanx & regards,

santu.

Read only

uwe_schieferstein
Active Contributor
0 Likes
676

Hello Santosh

The following report shows in the first ALV grid the selected sales document. Using a double-click the status of the sales document are selected and displayed in the second ALV grid. The hotspot leads you to VA03.

Please note that the status selection is somewhat crude and should be optimized (e.g. using the fm proposed by Anji).

*&---------------------------------------------------------------------*
*& Report  ZUS_SDN_TWO_ALV_GRIDS_5
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT  zus_sdn_two_alv_grids_5.



TYPE-POOLS: abap.



TABLES:  vbak.


DATA:
  gd_okcode        TYPE ui_func,
*
  go_docking       TYPE REF TO cl_gui_docking_container,
  go_splitter      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_grid1         TYPE REF TO cl_gui_alv_grid,
  go_grid2         TYPE REF TO cl_gui_alv_grid,
  gs_layout        TYPE lvc_s_layo.


DATA:
  gt_outtab        TYPE STANDARD TABLE OF vbak,
  gt_status        TYPE STANDARD TABLE OF jest.





*---------------------------------------------------------------------*
*       CLASS lcl_eventhandler DEFINITION
*---------------------------------------------------------------------*
*
*---------------------------------------------------------------------*
CLASS lcl_eventhandler DEFINITION.

  PUBLIC SECTION.
    CLASS-METHODS:
      handle_hotspot_click FOR EVENT hotspot_click OF cl_gui_alv_grid
        IMPORTING
          e_row_id
          e_column_id
          es_row_no
          sender,


      handle_double_click FOR EVENT double_click OF cl_gui_alv_grid
        IMPORTING
          e_row
          e_column
          es_row_no
          sender.


ENDCLASS.                    "lcl_eventhandler DEFINITION



*---------------------------------------------------------------------*
*       CLASS lcl_eventhandler IMPLEMENTATION
*---------------------------------------------------------------------*
*
*---------------------------------------------------------------------*
CLASS lcl_eventhandler IMPLEMENTATION.

  METHOD handle_hotspot_click.
*   define local data
    DATA:
      ls_outtab   LIKE LINE OF gt_outtab,
      ls_col_id   TYPE lvc_s_col.

    READ TABLE gt_outtab INTO ls_outtab INDEX e_row_id-index.
    CHECK ( ls_outtab-vbeln IS NOT INITIAL ).

    CASE e_column_id-fieldname.
      WHEN 'VBELN'.
        SET PARAMETER ID 'AUN' FIELD ls_outtab-vbeln.

        CALL TRANSACTION 'VA03' AND SKIP FIRST SCREEN.


      WHEN OTHERS.
*       do nothing
    ENDCASE.




***   Set active cell to field BUKRS otherwise the focus is still on
***   field KUNNR which will always raise event HOTSPOT_CLICK
**    ls_col_id-fieldname = 'BUKRS'.
**    CALL METHOD go_grid1->set_current_cell_via_id
**      EXPORTING
**        is_row_id    = e_row_id
**        is_column_id = ls_col_id.



  ENDMETHOD.                    "handle_hotspot_click


  METHOD handle_double_click.
*   define local data
    DATA:
      ls_outtab      LIKE LINE OF gt_outtab.

    CHECK ( sender = go_grid1 ).

    READ TABLE gt_outtab INTO ls_outtab INDEX e_row-index.
    CHECK ( ls_outtab-vbeln IS NOT INITIAL ).

**    CALL METHOD go_grid1->set_current_cell_via_id
**      EXPORTING
***        IS_ROW_ID    =
***        IS_COLUMN_ID =
**        is_row_no    = es_row_no.


*   Triggers PAI of the dynpro with the specified ok-code
    CALL METHOD cl_gui_cfw=>set_new_ok_code( 'DETAIL' ).



  ENDMETHOD.                    "handle_double_click

ENDCLASS.                    "lcl_eventhandler IMPLEMENTATION




SELECT-OPTIONS:
  o_auart    FOR vbak-auart  DEFAULT 'OR'.



START-OF-SELECTION.


* Select sales orders
  SELECT        * FROM  vbak INTO TABLE gt_outtab
    WHERE auart IN o_auart.


* Create docking container
  CREATE OBJECT go_docking
    EXPORTING
      parent                      = cl_gui_container=>screen0
      ratio                       = 90
    EXCEPTIONS
      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.


* Create splitter container
  CREATE OBJECT go_splitter
    EXPORTING
      parent            = go_docking
      rows              = 2
      columns           = 1
*      NO_AUTODEF_PROGID_DYNNR =
*      NAME              =
    EXCEPTIONS
      cntl_error        = 1
      cntl_system_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.

* Get cell container
  CALL METHOD go_splitter->get_container
    EXPORTING
      row       = 1
      column    = 1
    RECEIVING
      container = go_cell_top.
  CALL METHOD go_splitter->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 <> 0.
*   MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*              WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.


* Set event handler
  SET HANDLER:
    lcl_eventhandler=>handle_double_click  FOR go_grid1,
    lcl_eventhandler=>handle_hotspot_click FOR go_grid1.


  CREATE OBJECT go_grid2
    EXPORTING
      i_parent          = go_cell_bottom
    EXCEPTIONS
      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.


* Display data
  gs_layout-grid_title = 'Sales Orders'.
  CALL METHOD go_grid1->set_table_for_first_display
    EXPORTING
      i_structure_name = 'VBAK'
      is_layout        = gs_layout
    CHANGING
      it_outtab        = gt_outtab
    EXCEPTIONS
      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.

  PERFORM modify_fieldcatalog.


  gs_layout-grid_title = 'Status of Sales Order'.
  CALL METHOD go_grid2->set_table_for_first_display
    EXPORTING
      i_structure_name = 'JEST'
      is_layout        = gs_layout
    CHANGING
      it_outtab        = gt_status  " empty !!!
    EXCEPTIONS
      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.


* 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 <> 0.
*   MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*              WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.


* NOTE: dynpro does not contain any elements
  CALL SCREEN '0100'.
* Flow logic of dynpro (does not contain any dynpro elements,
* ok-code field = gd_okcode):
*
*PROCESS BEFORE OUTPUT.
*  MODULE STATUS_0100.
**
*PROCESS AFTER INPUT.
*  MODULE USER_COMMAND_0100.



END-OF-SELECTION.

*&---------------------------------------------------------------------*
*&      Module  STATUS_0100  OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE status_0100 OUTPUT.
  SET PF-STATUS 'STATUS_0100'.  " contains push button "DETAIL"
*  SET TITLEBAR 'xxx'.


* Refresh display of detail ALV list
  CALL METHOD go_grid2->refresh_table_display
*    EXPORTING
*      IS_STABLE      =
*      I_SOFT_REFRESH =
    EXCEPTIONS
      OTHERS         = 2.
  IF sy-subrc <> 0.
*   MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*              WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.


ENDMODULE.                 " STATUS_0100  OUTPUT

*&---------------------------------------------------------------------*
*&      Module  USER_COMMAND_0100  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE user_command_0100 INPUT.

  CASE gd_okcode.
    WHEN 'BACK' OR
         'END'  OR
         'CANC'.
      SET SCREEN 0. LEAVE SCREEN.

*   User has pushed button "Display Details"
    WHEN 'DETAIL'.
      PERFORM entry_show_details.

    WHEN OTHERS.
  ENDCASE.

  CLEAR: gd_okcode.

ENDMODULE.                 " USER_COMMAND_0100  INPUT

*&---------------------------------------------------------------------*
*&      Form  ENTRY_SHOW_DETAILS
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM entry_show_details .
* define local data
  CONSTANTS:
    lc_posnr_dummy  TYPE ionra-posnr  VALUE '999999'.

  DATA:
    ld_row      TYPE i,
    ls_outtab   LIKE LINE OF gt_outtab,
    ld_title    TYPE lvc_title.

  DATA:
    lt_objnr    TYPE TABLE OF jsto_pre.


  CALL METHOD go_grid1->get_current_cell
    IMPORTING
      e_row = ld_row.

  REFRESH: gt_status.

  READ TABLE gt_outtab INTO ls_outtab INDEX ld_row.
  CHECK ( syst-subrc = 0 ).

**  CALL FUNCTION 'BAPI_SALESORDER_GETSTATUS'
**    EXPORTING
**      salesdocument       = ls_outtab-vbeln
***   IMPORTING
***     RETURN              =
**    TABLES
**      statusinfo          = gt_status.

  IF ( ls_outtab-objnr IS INITIAL ).
    CALL FUNCTION 'OBJECT_NUMBER_DETERMINE_VB'
      EXPORTING
        posnr = lc_posnr_dummy
        vbeln = ls_outtab-vbeln
      IMPORTING
        objnr = ls_outtab-objnr.
  ENDIF.

  REPLACE lc_posnr_dummy WITH '%' INTO ls_outtab-objnr.
  SELECT * FROM jest INTO TABLE gt_status
    WHERE objnr LIKE ls_outtab-objnr.


  

**  APPEND ls_outtab-objnr TO lt_objnr.
**  CALL FUNCTION 'STATUS_READ_MULTI'
***   EXPORTING
***     CLIENT                     = SY-MANDT
***     ONLY_ACTIVE                = ' '
***     ALL_IN_BUFFER              = ' '
***     GET_CHANGE_DOCUMENTS       = ' '
***     NO_BUFFER_FILL             = ' '
**    TABLES
**      objnr_tab                  = lt_objnr
**      status                     = gt_status
***     JSTO_TAB                   =
***     JCDO_TAB                   =
***     JCDS_TAB                   =
**            .


  CONCATENATE 'Status of Sales Order' ls_outtab-vbeln
    INTO ld_title
    SEPARATED BY space.

  go_grid2->set_gridtitle( ld_title ).



ENDFORM.                    " ENTRY_SHOW_DETAILS


*&---------------------------------------------------------------------*
*&      Form  MODIFY_FIELDCATALOG
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM modify_fieldcatalog .
* define local data
  DATA:
    ls_fcat      TYPE lvc_s_fcat,
    lt_fcat      TYPE lvc_t_fcat.

  CALL METHOD go_grid1->get_frontend_fieldcatalog
    IMPORTING
      et_fieldcatalog = lt_fcat.

  LOOP AT lt_fcat INTO ls_fcat
                  WHERE ( fieldname = 'VBELN' ).
    ls_fcat-hotspot = abap_true.
    MODIFY lt_fcat FROM ls_fcat.
  ENDLOOP.

  go_grid1->set_frontend_fieldcatalog( lt_fcat ).
  go_grid1->refresh_table_display( ).


ENDFORM.                    " MODIFY_FIELDCATALOG

Regards

Uwe