Tcode search : http://www.tcodesearch.com/
Tcode search by Function Modules: http://www.sap-img.com/general/sap-r3-transaction-codes.htm
Code Optimization techniques : http://sapbrainsonline.com/abap-tutorial/abap-code-optimization-methods-techniques.html
Monday, 20 February 2012
Tuesday, 14 February 2012
Lights in ABAP
DATA : gcf_reds(4) TYPE c VALUE '@0A@'," For red light
gcf_gre(4) TYPE c VALUE '@08@', " For green light
gcf_yel(4) TYPE c VALUE '@09@'. " For yellow light
gcf_gre(4) TYPE c VALUE '@08@', " For green light
gcf_yel(4) TYPE c VALUE '@09@'. " For yellow light
Thursday, 9 February 2012
BDC program
FORM bdc_rec1 .
PERFORM bdc_dynpro USING 'SAPMJ1ID' '0200'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RB1'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=EX'.
PERFORM bdc_field USING 'RB11'
''.
PERFORM bdc_field USING 'RB1'
'X'.
PERFORM bdc_dynpro USING 'SAPLJ1I5' '0020'.
PERFORM bdc_field USING 'BDC_CURSOR'
'J_1IMTCHID-MATNR(01)'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=NEWL'.
PERFORM bdc_dynpro USING 'SAPLJ1I5' '0020'.
PERFORM bdc_field USING 'BDC_CURSOR'
'J_1IMTCHID-J_1ICHID(01)'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=SAVE'.
PERFORM bdc_field USING 'J_1IMTCHID-MATNR(01)'
gds_matcin-matnr.
PERFORM bdc_field USING 'J_1IMTCHID-WERKS(01)'
gds_matcin-werks.
PERFORM bdc_field USING 'J_1IMTCHID-J_1ICHID(01)'
gds_matcin-j_1ichid.
PERFORM bdc_field USING 'J_1IMTCHID-J_1ISUBIND(01)'
gds_matcin-j_1isubind.
PERFORM bdc_field USING 'J_1IMTCHID-J_1ICAPIND(01)'
gds_matcin-j_1icapind.
PERFORM bdc_field USING 'J_1IMTCHID-J_1IGRXREF(01)'
gds_matcin-j_1igrxref.
PERFORM bdc_dynpro USING 'SAPLJ1I5' '0020'.
PERFORM bdc_field USING 'BDC_CURSOR'
'J_1IMTCHID-MATNR(02)'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=BACK'.
PERFORM bdc_dynpro USING 'SAPLJ1I5' '0020'.
PERFORM bdc_field USING 'BDC_CURSOR'
'J_1IMTCHID-MATNR(02)'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=BACK'.
PERFORM bdc_dynpro USING 'SAPMJ1ID' '0200'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/EEXIT'.
PERFORM bdc_field USING 'BDC_CURSOR'
'EXCISE'.
gds_ctuparams-dismode = gcf_ctu_mode.
gds_ctuparams-updmode = gcf_ctu_update1.
CALL TRANSACTION gcf_tcode_j1id USING gdt_bdcdata
OPTIONS FROM gds_ctuparams
MESSAGES INTO gdt_msgtab. "#EC CI_CALLTA
REFRESH : gdt_bdcdata.
"to get the records whcih are being uploaded along with the comments
"which says whether it is successful or unsuccessful
PERFORM log_report_masterdata.
ENDFORM. " BDC_REC1
*&------------------------------------
FORM log_report_masterdata .
MOVE-CORRESPONDING gds_matcin TO gds_matcin2.
CLEAR : gdf_comments,
gds_msgtab.
LOOP AT gdt_msgtab INTO gds_msgtab.
IF gds_msgtab-msgtyp EQ gcf_e.
CALL FUNCTION 'FORMAT_MESSAGE'
EXPORTING
id = gds_msgtab-msgid
lang = sy-langu
no = gds_msgtab-msgnr
v1 = gds_msgtab-msgv1
v2 = gds_msgtab-msgv2
v3 = gds_msgtab-msgv3
v4 = gds_msgtab-msgv4
IMPORTING
msg = gds_retab-message
EXCEPTIONS
not_found = 1
OTHERS = 2.
IF sy-subrc EQ 0.
***** splitting the message at semicolon
SPLIT gds_retab-message
AT gcf_semicolon
INTO gds_retab-message
gdf_temp.
IF gdf_comments IS NOT INITIAL.
CONCATENATE gdf_comments gcf_dot
INTO gdf_comments.
ENDIF.
CONCATENATE gdf_comments gds_retab-message
INTO gdf_comments.
ENDIF.
ENDIF.
ENDLOOP.
***** reading the table with messages with type error
SORT gdt_msgtab by msgtyp.
READ TABLE gdt_msgtab
INTO gds_msgtab
WITH KEY msgtyp = gcf_e
BINARY SEARCH.
IF sy-subrc EQ 0.
gds_matcin2-status = gcf_e.
gds_matcin2-comments = gdf_comments.
gdf_unsuccess = gdf_unsuccess + 1."total unsuccessful records
ELSE.
gds_matcin2-status = gcf_s.
gds_matcin2-comments = 'Success'(401) .
gdf_success = gdf_success + 1."total successful records
ENDIF.
APPEND gds_matcin2 TO gdt_matcin2.
CLEAR gds_matcin2.
REFRESH gdt_msgtab.
ENDFORM. " LOG_REPORT_MASTERDATA
************************************************
Example 2 : Having table control
************************************************
REPORT zev05r0001 NO STANDARD PAGE HEADING LINE-SIZE 170 LINE-COUNT 58.
*&---------------- ---------------------------------------------------*
* Data declaration
*&--------------------------------------------------------------------*
TYPE-POOLS: truxs,
slis.
TYPES : BEGIN OF gts_intab,
auart LIKE vbak-auart,
vkorg LIKE vbak-vkorg,
vtweg LIKE vbak-vtweg,
spart LIKE vbak-spart,
ktext LIKE vbak-ktext,
* guebg LIKE vbak-guebg,
* gueen LIKE vbak-gueen,
guebg(10) TYPE c,
gueen(10) TYPE c,
matnr LIKE vbap-matnr,
* zmeng LIKE vbap-zmeng,
zmeng(13) TYPE c,
zieme LIKE vbap-zieme,
zzsur LIKE vbak-zzsur,
zzstp LIKE vbak-zzstp,
zzotp LIKE vbak-zzotp,
zzsid LIKE vbak-zzsid,
END OF gts_intab.
TYPES : BEGIN OF gts_header, " structure to hold header data
auart LIKE vbak-auart,
vkorg LIKE vbak-vkorg,
vtweg LIKE vbak-vtweg,
spart LIKE vbak-spart,
ktext LIKE vbak-ktext,
* guebg LIKE vbak-guebg,
* gueen LIKE vbak-gueen,
guebg(10) TYPE c,
gueen(10) TYPE c,
zzsur LIKE vbak-zzsur,
zzstp LIKE vbak-zzstp,
zzotp LIKE vbak-zzotp,
zzsid LIKE vbak-zzsid,
flag(8) TYPE n,
END OF gts_header.
TYPES : BEGIN OF gts_item, " structure to hold item data
matnr LIKE vbap-matnr,
* zmeng LIKE vbap-zmeng,
zmeng(13) TYPE c,
zieme LIKE vbap-zieme,
flag(8) TYPE n,
END OF gts_item.
DATA: gdt_itab TYPE STANDARD TABLE OF gts_intab INITIAL SIZE 0," Internal table
gdt_itab1 TYPE STANDARD TABLE OF gts_intab ," Internal table to hold data having incorrect values
gds_itab TYPE gts_intab, " Internal table workarea
gdf_flag(8) TYPE n, " flag for count
gdf_extn(4) TYPE c, " File extension
gdf_ind(4) TYPE c, " for item loop
gdt_temp TYPE truxs_t_text_data. "temp variable to upload excel data
DATA : gdt_header TYPE STANDARD TABLE OF gts_header,
gds_header TYPE gts_header,
gdt_item TYPE STANDARD TABLE OF gts_item,
gds_item TYPE gts_item.
DATA : gdt_bdcdata TYPE STANDARD TABLE OF bdcdata,
gds_bdcdata TYPE bdcdata,
gdt_message TYPE STANDARD TABLE OF bdcmsgcoll,
gds_message TYPE bdcmsgcoll.
DATA : gdf_var1(20) TYPE c,
gdf_var2(20) TYPE c,
gdf_var3(20) TYPE c,
gdf_length1 TYPE i, " No of entries in the upload file
gdf_length2 TYPE i, " No of entries uploaded
gdf_length3 TYPE i. " No of entries incorrect
*Start of siva
DATA: gdt_it_fieldcat TYPE slis_t_fieldcat_alv,
gds_wa_fieldcat LIKE LINE OF gdt_it_fieldcat ,
gds_wa_layout TYPE slis_layout_alv,
gdt_i_alv_top_of_page TYPE slis_t_listheader.
*End of siva
*&---------------- ---------------------------------------------------*
* CONSTANTS
*&--------------------------------------------------------------------*
CONSTANTS: gcf_type TYPE char1
VALUE 'S'.
*&---------------- ---------------------------------------------------*
* SELECTION-SCREEN
*&--------------------------------------------------------------------*
SELECTION-SCREEN:BEGIN OF BLOCK b1 WITH FRAME TITLE text-000.
PARAMETERS p_file TYPE rlgrap-filename OBLIGATORY. " Filename
SELECTION-SCREEN:END OF BLOCK b1.
*&---------------- ---------------------------------------------------*
* AT SELECTION-SCREEN
*&--------------------------------------------------------------------*
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
CALL FUNCTION 'F4_FILENAME'
EXPORTING
field_name = 'p_file'
IMPORTING
file_name = p_file.
START-OF-SELECTION.
*&---------------- ---------------------------------------------------*
* Processing flow
*&--------------------------------------------------------------------*
PERFORM upload_data.
PERFORM filter_data.
PERFORM split_header_item.
PERFORM bdc.
PERFORM sub_build_header.
PERFORM fieldcat.
PERFORM display_incorrect_data.
END-OF-SELECTION.
*&---------------------------------------------------------------------*
*& Form bdc
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM bdc .
*include bdcrecx1.
*
* PERFORM open_group.
LOOP AT gdt_header INTO gds_header.
PERFORM bdc_dynpro USING 'SAPMV45A' '0101'.
PERFORM bdc_field USING 'BDC_CURSOR'
'VBAK-AUART'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'VBAK-AUART'
gds_header-auart." 'ZSIP'.
PERFORM bdc_field USING 'VBAK-VKORG'
gds_header-vkorg. " 'AU10'.
PERFORM bdc_field USING 'VBAK-VTWEG'
gds_header-vtweg. " '01'.
PERFORM bdc_field USING 'VBAK-SPART'
gds_header-spart. " '01'.
* LOOP AT gdt_item INTO gds_item WHERE flag = gds_header-flag.
PERFORM bdc_dynpro USING 'SAPMV45A' '0412'.
PERFORM bdc_field USING 'BDC_CURSOR'
'VBAK-KTEXT'.
PERFORM bdc_field USING 'VBAK-KTEXT'
gds_header-ktext. " '215125'.
PERFORM bdc_field USING 'VBAK-GUEBG'
gds_header-guebg. " '12.04.2011'.
PERFORM bdc_field USING 'VBAK-GUEEN'
gds_header-gueen. " '29.04.2011'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
LOOP AT gdt_item INTO gds_item WHERE flag = gds_header-flag.
gdf_ind = gdf_ind + 1 .
CONDENSE gdf_ind.
CONCATENATE 'VBAP-MATNR(' gdf_ind ')' INTO gdf_var1.
CONCATENATE 'VBAP-ZMENG(' gdf_ind ')' INTO gdf_var2.
CONCATENATE 'VBAP-ZIEME(' gdf_ind ')' INTO gdf_var3.
PERFORM bdc_field USING gdf_var1
gds_item-matnr. " 'ZP00102'.
PERFORM bdc_field USING gdf_var2
gds_item-zmeng. " '2'.
PERFORM bdc_field USING gdf_var3
gds_item-zieme. " 'EA'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
IF gdf_ind = 18.
CLEAR gdf_ind.
gdf_ind = 1.
PERFORM bdc_field USING 'BDC_OKCODE' '=FCNP'.
* perform bdc_field using 'BDC_OKCODE' '/00'.
PERFORM bdc_dynpro USING 'SAPLCSDI' '0140'.
PERFORM bdc_field USING 'BDC_CURSOR' 'RV45A-MABNR(20)'.
ENDIF.
ENDLOOP.
PERFORM bdc_field USING 'BDC_OKCODE'
'=KKAS'.
PERFORM bdc_dynpro USING 'SAPMV45A' '0306'.
* PERFORM bdc_field USING 'BDC_OKCODE'
* '=SICH'.
* PERFORM bdc_field USING 'VBAK-AUDAT' " this is taking the date of the day recording.
* gds_header-audat. " '28.04.2011'.
PERFORM bdc_field USING 'VBAK-GUEBG'
gds_header-guebg. " '12.04.2011'.
PERFORM bdc_field USING 'VBAK-GUEEN'
gds_header-gueen. " '29.04.2011'.
PERFORM bdc_field USING 'VBAK-KTEXT'
gds_header-ktext. " '215125'.
PERFORM bdc_field USING 'BDC_CURSOR'
'GDS_VBAK-ZZSID'.
PERFORM bdc_field USING 'GDS_VBAK-ZZSUR'
gds_header-zzsur. " '1004279'.
PERFORM bdc_field USING 'GDS_VBAK-ZZSTP'
gds_header-zzstp. " 'P'.
PERFORM bdc_field USING 'GDS_VBAK-ZZOTP'
gds_header-zzotp. " 'ESLAPCOLON'.
PERFORM bdc_field USING 'GDS_VBAK-ZZSID'
gds_header-zzsid. " 'B'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=SICH'.
CALL TRANSACTION 'VA51'
USING gdt_bdcdata
MODE 'E'
* MESSAGES INTO gds_message.
MESSAGES INTO gdt_message.
* APPEND gds_message TO gdt_message.
* PERFORM bdc_transaction USING 'VA51'.
*
* PERFORM close_group.
REFRESH gdt_bdcdata.
CLEAR gds_bdcdata.
CLEAR gdf_ind.
ENDLOOP.
ENDFORM. "bdc
*----------------------------------------------------------------------*
* Start new screen *
*----------------------------------------------------------------------*
FORM bdc_dynpro USING program dynpro.
CLEAR gds_bdcdata.
gds_bdcdata-program = program.
gds_bdcdata-dynpro = dynpro.
gds_bdcdata-dynbegin = 'X'.
APPEND gds_bdcdata TO gdt_bdcdata.
ENDFORM. "BDC_DYNPRO
*----------------------------------------------------------------------*
* Insert field *
*----------------------------------------------------------------------*
FORM bdc_field USING fnam fval.
IF fval <> space.
CLEAR gds_bdcdata.
gds_bdcdata-fnam = fnam.
gds_bdcdata-fval = fval.
APPEND gds_bdcdata TO gdt_bdcdata.
ENDIF.
ENDFORM. "bdc_field
*&---------------------------------------------------------------------*
*& Form split_header_item.
*&---------------------------------------------------------------------*
FORM split_header_item.
LOOP AT gdt_itab INTO gds_itab .
gds_header-auart = gds_itab-auart.
gds_header-vkorg = gds_itab-vkorg.
gds_header-vtweg = gds_itab-vtweg.
gds_header-spart = gds_itab-spart.
gds_header-ktext = gds_itab-ktext.
gds_header-guebg = gds_itab-guebg.
gds_header-gueen = gds_itab-gueen.
gds_item-matnr = gds_itab-matnr.
gds_item-zmeng = gds_itab-zmeng.
gds_item-zieme = gds_itab-zieme.
gds_header-zzsur = gds_itab-zzsur.
gds_header-zzstp = gds_itab-zzstp.
gds_header-zzotp = gds_itab-zzotp.
gds_header-zzsid = gds_itab-zzsid.
CONDENSE gds_item-zmeng. " removing the preceeding space for quantity
AT NEW ktext.
ADD 1 TO gdf_flag.
ENDAT.
gds_header-flag = gdf_flag.
gds_item-flag = gdf_flag.
APPEND gds_header TO gdt_header.
APPEND gds_item TO gdt_item.
ENDLOOP.
DELETE ADJACENT DUPLICATES FROM gdt_header.
ENDFORM. "split_header_item
*&---------------------------------------------------------------------*
*& Form FILTER_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM filter_data .
LOOP AT gdt_itab INTO gds_itab.
IF ( gds_itab-auart IS INITIAL OR gds_itab-auart EQ '0' ) OR
( gds_itab-vkorg IS INITIAL OR gds_itab-vkorg EQ '0' ) OR
( gds_itab-vtweg IS INITIAL OR gds_itab-vtweg EQ '0' ) OR
( gds_itab-spart IS INITIAL OR gds_itab-spart EQ '0' ) OR
( gds_itab-ktext IS INITIAL OR gds_itab-ktext EQ '0' ) OR
( gds_itab-matnr IS INITIAL OR gds_itab-matnr EQ '0' ) OR
( gds_itab-zmeng IS INITIAL OR gds_itab-zmeng EQ '0' ) .
DELETE gdt_itab INDEX sy-tabix.
APPEND gds_itab TO gdt_itab1.
ENDIF.
ENDLOOP.
DESCRIBE TABLE gdt_itab1 LINES gdf_length2.
ENDFORM. " FILTER_DATA
*&---------------------------------------------------------------------*
*& Form DISPLAY_INCORRECT_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM display_incorrect_data .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy-repid
i_callback_top_of_page = 'TOP_OF_PAGE'
is_layout = gds_wa_layout
it_fieldcat = gdt_it_fieldcat
TABLES
t_outtab = gdt_itab1
EXCEPTIONS
program_error = 1
OTHERS = 2.
IF sy-subrc = 0.
" No processing
ENDIF.
ENDFORM. " DISPLAY_INCORRECT_DATA
*&---------------------------------------------------------------------*
*& Form UPLOAD_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM upload_data .
DATA: ldf_var1(100) TYPE c,
ldf_var2(5) TYPE c.
CONSTANTS: lcf_var(1) TYPE c
VALUE '.'.
SPLIT p_file AT lcf_var INTO ldf_var1 ldf_var2.
IF ldf_var2 eq 'xls' or ldf_var2 eq 'xlsx'.
CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'
EXPORTING
* I_FIELD_SEPERATOR =
i_line_header = 'X'
i_tab_raw_data = gdt_temp
i_filename = p_file
TABLES
i_tab_converted_data = gdt_itab
EXCEPTIONS
conversion_failed = 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.
DESCRIBE TABLE gdt_itab LINES gdf_length1.
ELSE.
MESSAGE text-003 TYPE 'E' .
ENDIF.
ENDFORM. " UPLOAD_DATA
*&---------------------------------------------------------------------*
*& Form FIELDCAT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM fieldcat.
CLEAR gds_wa_fieldcat.
gds_wa_fieldcat-fieldname = 'AUART'.
gds_wa_fieldcat-tabname = 'VBAK'.
gds_wa_fieldcat-seltext_l = 'Item Proposal Type'.
APPEND gds_wa_fieldcat TO gdt_it_fieldcat .
CLEAR gds_wa_fieldcat.
gds_wa_fieldcat-fieldname = 'VKORG'.
gds_wa_fieldcat-tabname = 'VBAK'.
gds_wa_fieldcat-seltext_l = 'Sales Organisation'.
APPEND gds_wa_fieldcat TO gdt_it_fieldcat .
CLEAR gds_wa_fieldcat.
gds_wa_fieldcat-fieldname = 'VTWEG'.
gds_wa_fieldcat-tabname = 'VBAK'.
gds_wa_fieldcat-seltext_l = 'Distribution Channel'.
APPEND gds_wa_fieldcat TO gdt_it_fieldcat .
CLEAR gds_wa_fieldcat.
gds_wa_fieldcat-fieldname = 'SPART'.
gds_wa_fieldcat-tabname = 'VBAK'.
gds_wa_fieldcat-seltext_l = 'Division'.
APPEND gds_wa_fieldcat TO gdt_it_fieldcat .
CLEAR gds_wa_fieldcat.
gds_wa_fieldcat-fieldname = 'KTEXT'.
gds_wa_fieldcat-tabname = 'VBAK'.
gds_wa_fieldcat-seltext_l = 'Description'.
APPEND gds_wa_fieldcat TO gdt_it_fieldcat .
CLEAR gds_wa_fieldcat.
gds_wa_fieldcat-fieldname = 'GUEBG'.
gds_wa_fieldcat-tabname = 'VBAK'.
gds_wa_fieldcat-seltext_l = 'Valid From'.
APPEND gds_wa_fieldcat TO gdt_it_fieldcat .
CLEAR gds_wa_fieldcat.
gds_wa_fieldcat-fieldname = 'GUEEN'.
gds_wa_fieldcat-tabname = 'VBAK'.
gds_wa_fieldcat-seltext_l = 'Valid To'.
APPEND gds_wa_fieldcat TO gdt_it_fieldcat .
CLEAR gds_wa_fieldcat.
gds_wa_fieldcat-fieldname = 'MATNR'.
gds_wa_fieldcat-tabname = 'VBAP'.
gds_wa_fieldcat-seltext_l = 'Material'.
APPEND gds_wa_fieldcat TO gdt_it_fieldcat .
CLEAR gds_wa_fieldcat.
gds_wa_fieldcat-fieldname = 'ZMENG'.
gds_wa_fieldcat-tabname = 'VBAP'.
gds_wa_fieldcat-seltext_l = 'Quantity'.
APPEND gds_wa_fieldcat TO gdt_it_fieldcat .
CLEAR gds_wa_fieldcat.
gds_wa_fieldcat-fieldname = 'ZIEME'.
gds_wa_fieldcat-tabname = 'VBAP'.
gds_wa_fieldcat-seltext_l = 'Unit of Measure'.
APPEND gds_wa_fieldcat TO gdt_it_fieldcat .
CLEAR gds_wa_fieldcat.
gds_wa_fieldcat-fieldname = 'ZZSUR'.
gds_wa_fieldcat-tabname = 'VBAK'.
gds_wa_fieldcat-seltext_l = 'Surgeon Code'.
APPEND gds_wa_fieldcat TO gdt_it_fieldcat .
CLEAR gds_wa_fieldcat.
gds_wa_fieldcat-fieldname = 'ZZSTP'.
gds_wa_fieldcat-tabname = 'VBAK'.
gds_wa_fieldcat-seltext_l = 'Case Type'.
APPEND gds_wa_fieldcat TO gdt_it_fieldcat .
CLEAR gds_wa_fieldcat.
gds_wa_fieldcat-fieldname = 'ZZOTP'.
gds_wa_fieldcat-tabname = 'VBAK'.
gds_wa_fieldcat-seltext_l = 'Case Type'.
APPEND gds_wa_fieldcat TO gdt_it_fieldcat .
CLEAR gds_wa_fieldcat.
gds_wa_fieldcat-fieldname = 'ZZSID'.
gds_wa_fieldcat-tabname = 'VBAK'.
gds_wa_fieldcat-seltext_l = 'Side'.
APPEND gds_wa_fieldcat TO gdt_it_fieldcat .
gds_wa_layout-colwidth_optimize = 'X'. " To change column width
ENDFORM. " FIELDCAT
*&---------------------------------------------------------------------*
* FORM top_of_page
*---------------------------------------------------------------------*
* Call ALV top of page
*---------------------------------------------------------------------*
* No parameter
*---------------------------------------------------------------------*
FORM top_of_page.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = gdt_i_alv_top_of_page.
ENDFORM. "top_of_page*&--------
*&---------------------------------------------------------------------*
*& Form sub_build_header
*&---------------------------------------------------------------------*
* To build the header
*----------------------------------------------------------------------*
* No Parameter
*----------------------------------------------------------------------*
FORM sub_build_header.
DATA: lds_r_line TYPE slis_listheader. "Hold list header
CLEAR lds_r_line.
lds_r_line-typ = gcf_type. " Item
lds_r_line-key = text-001.
lds_r_line-info = gdf_length1.
APPEND lds_r_line TO gdt_i_alv_top_of_page.
CLEAR lds_r_line.
lds_r_line-typ = gcf_type. " Item
lds_r_line-key = text-002.
lds_r_line-info = gdf_length2.
APPEND lds_r_line TO gdt_i_alv_top_of_page.
ENDFORM. " sub_build_header
PERFORM bdc_dynpro USING 'SAPMJ1ID' '0200'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RB1'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=EX'.
PERFORM bdc_field USING 'RB11'
''.
PERFORM bdc_field USING 'RB1'
'X'.
PERFORM bdc_dynpro USING 'SAPLJ1I5' '0020'.
PERFORM bdc_field USING 'BDC_CURSOR'
'J_1IMTCHID-MATNR(01)'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=NEWL'.
PERFORM bdc_dynpro USING 'SAPLJ1I5' '0020'.
PERFORM bdc_field USING 'BDC_CURSOR'
'J_1IMTCHID-J_1ICHID(01)'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=SAVE'.
PERFORM bdc_field USING 'J_1IMTCHID-MATNR(01)'
gds_matcin-matnr.
PERFORM bdc_field USING 'J_1IMTCHID-WERKS(01)'
gds_matcin-werks.
PERFORM bdc_field USING 'J_1IMTCHID-J_1ICHID(01)'
gds_matcin-j_1ichid.
PERFORM bdc_field USING 'J_1IMTCHID-J_1ISUBIND(01)'
gds_matcin-j_1isubind.
PERFORM bdc_field USING 'J_1IMTCHID-J_1ICAPIND(01)'
gds_matcin-j_1icapind.
PERFORM bdc_field USING 'J_1IMTCHID-J_1IGRXREF(01)'
gds_matcin-j_1igrxref.
PERFORM bdc_dynpro USING 'SAPLJ1I5' '0020'.
PERFORM bdc_field USING 'BDC_CURSOR'
'J_1IMTCHID-MATNR(02)'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=BACK'.
PERFORM bdc_dynpro USING 'SAPLJ1I5' '0020'.
PERFORM bdc_field USING 'BDC_CURSOR'
'J_1IMTCHID-MATNR(02)'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=BACK'.
PERFORM bdc_dynpro USING 'SAPMJ1ID' '0200'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/EEXIT'.
PERFORM bdc_field USING 'BDC_CURSOR'
'EXCISE'.
gds_ctuparams-dismode = gcf_ctu_mode.
gds_ctuparams-updmode = gcf_ctu_update1.
CALL TRANSACTION gcf_tcode_j1id USING gdt_bdcdata
OPTIONS FROM gds_ctuparams
MESSAGES INTO gdt_msgtab. "#EC CI_CALLTA
REFRESH : gdt_bdcdata.
"to get the records whcih are being uploaded along with the comments
"which says whether it is successful or unsuccessful
PERFORM log_report_masterdata.
ENDFORM. " BDC_REC1
*&------------------------------------
FORM log_report_masterdata .
MOVE-CORRESPONDING gds_matcin TO gds_matcin2.
CLEAR : gdf_comments,
gds_msgtab.
LOOP AT gdt_msgtab INTO gds_msgtab.
IF gds_msgtab-msgtyp EQ gcf_e.
CALL FUNCTION 'FORMAT_MESSAGE'
EXPORTING
id = gds_msgtab-msgid
lang = sy-langu
no = gds_msgtab-msgnr
v1 = gds_msgtab-msgv1
v2 = gds_msgtab-msgv2
v3 = gds_msgtab-msgv3
v4 = gds_msgtab-msgv4
IMPORTING
msg = gds_retab-message
EXCEPTIONS
not_found = 1
OTHERS = 2.
IF sy-subrc EQ 0.
***** splitting the message at semicolon
SPLIT gds_retab-message
AT gcf_semicolon
INTO gds_retab-message
gdf_temp.
IF gdf_comments IS NOT INITIAL.
CONCATENATE gdf_comments gcf_dot
INTO gdf_comments.
ENDIF.
CONCATENATE gdf_comments gds_retab-message
INTO gdf_comments.
ENDIF.
ENDIF.
ENDLOOP.
***** reading the table with messages with type error
SORT gdt_msgtab by msgtyp.
READ TABLE gdt_msgtab
INTO gds_msgtab
WITH KEY msgtyp = gcf_e
BINARY SEARCH.
IF sy-subrc EQ 0.
gds_matcin2-status = gcf_e.
gds_matcin2-comments = gdf_comments.
gdf_unsuccess = gdf_unsuccess + 1."total unsuccessful records
ELSE.
gds_matcin2-status = gcf_s.
gds_matcin2-comments = 'Success'(401) .
gdf_success = gdf_success + 1."total successful records
ENDIF.
APPEND gds_matcin2 TO gdt_matcin2.
CLEAR gds_matcin2.
REFRESH gdt_msgtab.
ENDFORM. " LOG_REPORT_MASTERDATA
************************************************
Example 2 : Having table control
************************************************
REPORT zev05r0001 NO STANDARD PAGE HEADING LINE-SIZE 170 LINE-COUNT 58.
*&---------------- ---------------------------------------------------*
* Data declaration
*&--------------------------------------------------------------------*
TYPE-POOLS: truxs,
slis.
TYPES : BEGIN OF gts_intab,
auart LIKE vbak-auart,
vkorg LIKE vbak-vkorg,
vtweg LIKE vbak-vtweg,
spart LIKE vbak-spart,
ktext LIKE vbak-ktext,
* guebg LIKE vbak-guebg,
* gueen LIKE vbak-gueen,
guebg(10) TYPE c,
gueen(10) TYPE c,
matnr LIKE vbap-matnr,
* zmeng LIKE vbap-zmeng,
zmeng(13) TYPE c,
zieme LIKE vbap-zieme,
zzsur LIKE vbak-zzsur,
zzstp LIKE vbak-zzstp,
zzotp LIKE vbak-zzotp,
zzsid LIKE vbak-zzsid,
END OF gts_intab.
TYPES : BEGIN OF gts_header, " structure to hold header data
auart LIKE vbak-auart,
vkorg LIKE vbak-vkorg,
vtweg LIKE vbak-vtweg,
spart LIKE vbak-spart,
ktext LIKE vbak-ktext,
* guebg LIKE vbak-guebg,
* gueen LIKE vbak-gueen,
guebg(10) TYPE c,
gueen(10) TYPE c,
zzsur LIKE vbak-zzsur,
zzstp LIKE vbak-zzstp,
zzotp LIKE vbak-zzotp,
zzsid LIKE vbak-zzsid,
flag(8) TYPE n,
END OF gts_header.
TYPES : BEGIN OF gts_item, " structure to hold item data
matnr LIKE vbap-matnr,
* zmeng LIKE vbap-zmeng,
zmeng(13) TYPE c,
zieme LIKE vbap-zieme,
flag(8) TYPE n,
END OF gts_item.
DATA: gdt_itab TYPE STANDARD TABLE OF gts_intab INITIAL SIZE 0," Internal table
gdt_itab1 TYPE STANDARD TABLE OF gts_intab ," Internal table to hold data having incorrect values
gds_itab TYPE gts_intab, " Internal table workarea
gdf_flag(8) TYPE n, " flag for count
gdf_extn(4) TYPE c, " File extension
gdf_ind(4) TYPE c, " for item loop
gdt_temp TYPE truxs_t_text_data. "temp variable to upload excel data
DATA : gdt_header TYPE STANDARD TABLE OF gts_header,
gds_header TYPE gts_header,
gdt_item TYPE STANDARD TABLE OF gts_item,
gds_item TYPE gts_item.
DATA : gdt_bdcdata TYPE STANDARD TABLE OF bdcdata,
gds_bdcdata TYPE bdcdata,
gdt_message TYPE STANDARD TABLE OF bdcmsgcoll,
gds_message TYPE bdcmsgcoll.
DATA : gdf_var1(20) TYPE c,
gdf_var2(20) TYPE c,
gdf_var3(20) TYPE c,
gdf_length1 TYPE i, " No of entries in the upload file
gdf_length2 TYPE i, " No of entries uploaded
gdf_length3 TYPE i. " No of entries incorrect
*Start of siva
DATA: gdt_it_fieldcat TYPE slis_t_fieldcat_alv,
gds_wa_fieldcat LIKE LINE OF gdt_it_fieldcat ,
gds_wa_layout TYPE slis_layout_alv,
gdt_i_alv_top_of_page TYPE slis_t_listheader.
*End of siva
*&---------------- ---------------------------------------------------*
* CONSTANTS
*&--------------------------------------------------------------------*
CONSTANTS: gcf_type TYPE char1
VALUE 'S'.
*&---------------- ---------------------------------------------------*
* SELECTION-SCREEN
*&--------------------------------------------------------------------*
SELECTION-SCREEN:BEGIN OF BLOCK b1 WITH FRAME TITLE text-000.
PARAMETERS p_file TYPE rlgrap-filename OBLIGATORY. " Filename
SELECTION-SCREEN:END OF BLOCK b1.
*&---------------- ---------------------------------------------------*
* AT SELECTION-SCREEN
*&--------------------------------------------------------------------*
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
CALL FUNCTION 'F4_FILENAME'
EXPORTING
field_name = 'p_file'
IMPORTING
file_name = p_file.
START-OF-SELECTION.
*&---------------- ---------------------------------------------------*
* Processing flow
*&--------------------------------------------------------------------*
PERFORM upload_data.
PERFORM filter_data.
PERFORM split_header_item.
PERFORM bdc.
PERFORM sub_build_header.
PERFORM fieldcat.
PERFORM display_incorrect_data.
END-OF-SELECTION.
*&---------------------------------------------------------------------*
*& Form bdc
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM bdc .
*include bdcrecx1.
*
* PERFORM open_group.
LOOP AT gdt_header INTO gds_header.
PERFORM bdc_dynpro USING 'SAPMV45A' '0101'.
PERFORM bdc_field USING 'BDC_CURSOR'
'VBAK-AUART'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'VBAK-AUART'
gds_header-auart." 'ZSIP'.
PERFORM bdc_field USING 'VBAK-VKORG'
gds_header-vkorg. " 'AU10'.
PERFORM bdc_field USING 'VBAK-VTWEG'
gds_header-vtweg. " '01'.
PERFORM bdc_field USING 'VBAK-SPART'
gds_header-spart. " '01'.
* LOOP AT gdt_item INTO gds_item WHERE flag = gds_header-flag.
PERFORM bdc_dynpro USING 'SAPMV45A' '0412'.
PERFORM bdc_field USING 'BDC_CURSOR'
'VBAK-KTEXT'.
PERFORM bdc_field USING 'VBAK-KTEXT'
gds_header-ktext. " '215125'.
PERFORM bdc_field USING 'VBAK-GUEBG'
gds_header-guebg. " '12.04.2011'.
PERFORM bdc_field USING 'VBAK-GUEEN'
gds_header-gueen. " '29.04.2011'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
LOOP AT gdt_item INTO gds_item WHERE flag = gds_header-flag.
gdf_ind = gdf_ind + 1 .
CONDENSE gdf_ind.
CONCATENATE 'VBAP-MATNR(' gdf_ind ')' INTO gdf_var1.
CONCATENATE 'VBAP-ZMENG(' gdf_ind ')' INTO gdf_var2.
CONCATENATE 'VBAP-ZIEME(' gdf_ind ')' INTO gdf_var3.
PERFORM bdc_field USING gdf_var1
gds_item-matnr. " 'ZP00102'.
PERFORM bdc_field USING gdf_var2
gds_item-zmeng. " '2'.
PERFORM bdc_field USING gdf_var3
gds_item-zieme. " 'EA'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
IF gdf_ind = 18.
CLEAR gdf_ind.
gdf_ind = 1.
PERFORM bdc_field USING 'BDC_OKCODE' '=FCNP'.
* perform bdc_field using 'BDC_OKCODE' '/00'.
PERFORM bdc_dynpro USING 'SAPLCSDI' '0140'.
PERFORM bdc_field USING 'BDC_CURSOR' 'RV45A-MABNR(20)'.
ENDIF.
ENDLOOP.
PERFORM bdc_field USING 'BDC_OKCODE'
'=KKAS'.
PERFORM bdc_dynpro USING 'SAPMV45A' '0306'.
* PERFORM bdc_field USING 'BDC_OKCODE'
* '=SICH'.
* PERFORM bdc_field USING 'VBAK-AUDAT' " this is taking the date of the day recording.
* gds_header-audat. " '28.04.2011'.
PERFORM bdc_field USING 'VBAK-GUEBG'
gds_header-guebg. " '12.04.2011'.
PERFORM bdc_field USING 'VBAK-GUEEN'
gds_header-gueen. " '29.04.2011'.
PERFORM bdc_field USING 'VBAK-KTEXT'
gds_header-ktext. " '215125'.
PERFORM bdc_field USING 'BDC_CURSOR'
'GDS_VBAK-ZZSID'.
PERFORM bdc_field USING 'GDS_VBAK-ZZSUR'
gds_header-zzsur. " '1004279'.
PERFORM bdc_field USING 'GDS_VBAK-ZZSTP'
gds_header-zzstp. " 'P'.
PERFORM bdc_field USING 'GDS_VBAK-ZZOTP'
gds_header-zzotp. " 'ESLAPCOLON'.
PERFORM bdc_field USING 'GDS_VBAK-ZZSID'
gds_header-zzsid. " 'B'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=SICH'.
CALL TRANSACTION 'VA51'
USING gdt_bdcdata
MODE 'E'
* MESSAGES INTO gds_message.
MESSAGES INTO gdt_message.
* APPEND gds_message TO gdt_message.
* PERFORM bdc_transaction USING 'VA51'.
*
* PERFORM close_group.
REFRESH gdt_bdcdata.
CLEAR gds_bdcdata.
CLEAR gdf_ind.
ENDLOOP.
ENDFORM. "bdc
*----------------------------------------------------------------------*
* Start new screen *
*----------------------------------------------------------------------*
FORM bdc_dynpro USING program dynpro.
CLEAR gds_bdcdata.
gds_bdcdata-program = program.
gds_bdcdata-dynpro = dynpro.
gds_bdcdata-dynbegin = 'X'.
APPEND gds_bdcdata TO gdt_bdcdata.
ENDFORM. "BDC_DYNPRO
*----------------------------------------------------------------------*
* Insert field *
*----------------------------------------------------------------------*
FORM bdc_field USING fnam fval.
IF fval <> space.
CLEAR gds_bdcdata.
gds_bdcdata-fnam = fnam.
gds_bdcdata-fval = fval.
APPEND gds_bdcdata TO gdt_bdcdata.
ENDIF.
ENDFORM. "bdc_field
*&---------------------------------------------------------------------*
*& Form split_header_item.
*&---------------------------------------------------------------------*
FORM split_header_item.
LOOP AT gdt_itab INTO gds_itab .
gds_header-auart = gds_itab-auart.
gds_header-vkorg = gds_itab-vkorg.
gds_header-vtweg = gds_itab-vtweg.
gds_header-spart = gds_itab-spart.
gds_header-ktext = gds_itab-ktext.
gds_header-guebg = gds_itab-guebg.
gds_header-gueen = gds_itab-gueen.
gds_item-matnr = gds_itab-matnr.
gds_item-zmeng = gds_itab-zmeng.
gds_item-zieme = gds_itab-zieme.
gds_header-zzsur = gds_itab-zzsur.
gds_header-zzstp = gds_itab-zzstp.
gds_header-zzotp = gds_itab-zzotp.
gds_header-zzsid = gds_itab-zzsid.
CONDENSE gds_item-zmeng. " removing the preceeding space for quantity
AT NEW ktext.
ADD 1 TO gdf_flag.
ENDAT.
gds_header-flag = gdf_flag.
gds_item-flag = gdf_flag.
APPEND gds_header TO gdt_header.
APPEND gds_item TO gdt_item.
ENDLOOP.
DELETE ADJACENT DUPLICATES FROM gdt_header.
ENDFORM. "split_header_item
*&---------------------------------------------------------------------*
*& Form FILTER_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM filter_data .
LOOP AT gdt_itab INTO gds_itab.
IF ( gds_itab-auart IS INITIAL OR gds_itab-auart EQ '0' ) OR
( gds_itab-vkorg IS INITIAL OR gds_itab-vkorg EQ '0' ) OR
( gds_itab-vtweg IS INITIAL OR gds_itab-vtweg EQ '0' ) OR
( gds_itab-spart IS INITIAL OR gds_itab-spart EQ '0' ) OR
( gds_itab-ktext IS INITIAL OR gds_itab-ktext EQ '0' ) OR
( gds_itab-matnr IS INITIAL OR gds_itab-matnr EQ '0' ) OR
( gds_itab-zmeng IS INITIAL OR gds_itab-zmeng EQ '0' ) .
DELETE gdt_itab INDEX sy-tabix.
APPEND gds_itab TO gdt_itab1.
ENDIF.
ENDLOOP.
DESCRIBE TABLE gdt_itab1 LINES gdf_length2.
ENDFORM. " FILTER_DATA
*&---------------------------------------------------------------------*
*& Form DISPLAY_INCORRECT_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM display_incorrect_data .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy-repid
i_callback_top_of_page = 'TOP_OF_PAGE'
is_layout = gds_wa_layout
it_fieldcat = gdt_it_fieldcat
TABLES
t_outtab = gdt_itab1
EXCEPTIONS
program_error = 1
OTHERS = 2.
IF sy-subrc = 0.
" No processing
ENDIF.
ENDFORM. " DISPLAY_INCORRECT_DATA
*&---------------------------------------------------------------------*
*& Form UPLOAD_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM upload_data .
DATA: ldf_var1(100) TYPE c,
ldf_var2(5) TYPE c.
CONSTANTS: lcf_var(1) TYPE c
VALUE '.'.
SPLIT p_file AT lcf_var INTO ldf_var1 ldf_var2.
IF ldf_var2 eq 'xls' or ldf_var2 eq 'xlsx'.
CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'
EXPORTING
* I_FIELD_SEPERATOR =
i_line_header = 'X'
i_tab_raw_data = gdt_temp
i_filename = p_file
TABLES
i_tab_converted_data = gdt_itab
EXCEPTIONS
conversion_failed = 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.
DESCRIBE TABLE gdt_itab LINES gdf_length1.
ELSE.
MESSAGE text-003 TYPE 'E' .
ENDIF.
ENDFORM. " UPLOAD_DATA
*&---------------------------------------------------------------------*
*& Form FIELDCAT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM fieldcat.
CLEAR gds_wa_fieldcat.
gds_wa_fieldcat-fieldname = 'AUART'.
gds_wa_fieldcat-tabname = 'VBAK'.
gds_wa_fieldcat-seltext_l = 'Item Proposal Type'.
APPEND gds_wa_fieldcat TO gdt_it_fieldcat .
CLEAR gds_wa_fieldcat.
gds_wa_fieldcat-fieldname = 'VKORG'.
gds_wa_fieldcat-tabname = 'VBAK'.
gds_wa_fieldcat-seltext_l = 'Sales Organisation'.
APPEND gds_wa_fieldcat TO gdt_it_fieldcat .
CLEAR gds_wa_fieldcat.
gds_wa_fieldcat-fieldname = 'VTWEG'.
gds_wa_fieldcat-tabname = 'VBAK'.
gds_wa_fieldcat-seltext_l = 'Distribution Channel'.
APPEND gds_wa_fieldcat TO gdt_it_fieldcat .
CLEAR gds_wa_fieldcat.
gds_wa_fieldcat-fieldname = 'SPART'.
gds_wa_fieldcat-tabname = 'VBAK'.
gds_wa_fieldcat-seltext_l = 'Division'.
APPEND gds_wa_fieldcat TO gdt_it_fieldcat .
CLEAR gds_wa_fieldcat.
gds_wa_fieldcat-fieldname = 'KTEXT'.
gds_wa_fieldcat-tabname = 'VBAK'.
gds_wa_fieldcat-seltext_l = 'Description'.
APPEND gds_wa_fieldcat TO gdt_it_fieldcat .
CLEAR gds_wa_fieldcat.
gds_wa_fieldcat-fieldname = 'GUEBG'.
gds_wa_fieldcat-tabname = 'VBAK'.
gds_wa_fieldcat-seltext_l = 'Valid From'.
APPEND gds_wa_fieldcat TO gdt_it_fieldcat .
CLEAR gds_wa_fieldcat.
gds_wa_fieldcat-fieldname = 'GUEEN'.
gds_wa_fieldcat-tabname = 'VBAK'.
gds_wa_fieldcat-seltext_l = 'Valid To'.
APPEND gds_wa_fieldcat TO gdt_it_fieldcat .
CLEAR gds_wa_fieldcat.
gds_wa_fieldcat-fieldname = 'MATNR'.
gds_wa_fieldcat-tabname = 'VBAP'.
gds_wa_fieldcat-seltext_l = 'Material'.
APPEND gds_wa_fieldcat TO gdt_it_fieldcat .
CLEAR gds_wa_fieldcat.
gds_wa_fieldcat-fieldname = 'ZMENG'.
gds_wa_fieldcat-tabname = 'VBAP'.
gds_wa_fieldcat-seltext_l = 'Quantity'.
APPEND gds_wa_fieldcat TO gdt_it_fieldcat .
CLEAR gds_wa_fieldcat.
gds_wa_fieldcat-fieldname = 'ZIEME'.
gds_wa_fieldcat-tabname = 'VBAP'.
gds_wa_fieldcat-seltext_l = 'Unit of Measure'.
APPEND gds_wa_fieldcat TO gdt_it_fieldcat .
CLEAR gds_wa_fieldcat.
gds_wa_fieldcat-fieldname = 'ZZSUR'.
gds_wa_fieldcat-tabname = 'VBAK'.
gds_wa_fieldcat-seltext_l = 'Surgeon Code'.
APPEND gds_wa_fieldcat TO gdt_it_fieldcat .
CLEAR gds_wa_fieldcat.
gds_wa_fieldcat-fieldname = 'ZZSTP'.
gds_wa_fieldcat-tabname = 'VBAK'.
gds_wa_fieldcat-seltext_l = 'Case Type'.
APPEND gds_wa_fieldcat TO gdt_it_fieldcat .
CLEAR gds_wa_fieldcat.
gds_wa_fieldcat-fieldname = 'ZZOTP'.
gds_wa_fieldcat-tabname = 'VBAK'.
gds_wa_fieldcat-seltext_l = 'Case Type'.
APPEND gds_wa_fieldcat TO gdt_it_fieldcat .
CLEAR gds_wa_fieldcat.
gds_wa_fieldcat-fieldname = 'ZZSID'.
gds_wa_fieldcat-tabname = 'VBAK'.
gds_wa_fieldcat-seltext_l = 'Side'.
APPEND gds_wa_fieldcat TO gdt_it_fieldcat .
gds_wa_layout-colwidth_optimize = 'X'. " To change column width
ENDFORM. " FIELDCAT
*&---------------------------------------------------------------------*
* FORM top_of_page
*---------------------------------------------------------------------*
* Call ALV top of page
*---------------------------------------------------------------------*
* No parameter
*---------------------------------------------------------------------*
FORM top_of_page.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = gdt_i_alv_top_of_page.
ENDFORM. "top_of_page*&--------
*&---------------------------------------------------------------------*
*& Form sub_build_header
*&---------------------------------------------------------------------*
* To build the header
*----------------------------------------------------------------------*
* No Parameter
*----------------------------------------------------------------------*
FORM sub_build_header.
DATA: lds_r_line TYPE slis_listheader. "Hold list header
CLEAR lds_r_line.
lds_r_line-typ = gcf_type. " Item
lds_r_line-key = text-001.
lds_r_line-info = gdf_length1.
APPEND lds_r_line TO gdt_i_alv_top_of_page.
CLEAR lds_r_line.
lds_r_line-typ = gcf_type. " Item
lds_r_line-key = text-002.
lds_r_line-info = gdf_length2.
APPEND lds_r_line TO gdt_i_alv_top_of_page.
ENDFORM. " sub_build_header
Subscribe to:
Posts (Atom)