Data transfer from ALV-Grid to internal table
Hello,
I use an editable alv-grid in my program. But the data changes in the alv-grid are not transferred back to the internal table which stores the data of the alv-grid. Is there a function I have to call to transfer the data or is there a property in the alv-grid I have to set? Thanks.
Regards, Lars.
Hi
The problem is if you back from grid, the system doesn't trigger the PAI of grid, so your changing aren't moved to internal table.
You should press some button of grid bar to update your internal table. So it should be better you insert a SAVE button in your status to update the changing.
Max
Message was edited by: max bianchi
Message was edited by: max bianchi
Similar Messages
-
Data transfer from text file to internal table
Hi, i am uploading data from a text file to an internal table itab.
one of the field in the text file is in the format of p(7,2).
while uploading , this is not not getting uploaded correctly,
for ex instead of uploading 00008.00 in the itab, it gives a strange value of 30303030382>3.03. how to correct this?
pls helpHello Rahul,
Do the following:
types: begin of ty_upload,
string type string,
end of ty_upload.
types: begin of ty_fields,
text1(20),
wert type p decimals 2,
text2(20),
end of ty_fields.
data: it_upload type table of ty_upload,
it_fields type table of ty_fields,
wa_upload type ty_upload,
wa_fields type ty_fields.
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
filename = 'C:\aa_upload.txt'
FILETYPE = 'ASC'
IMPORTING
FILELENGTH =
HEADER =
tables
data_tab = it_upload
EXCEPTIONS
FILE_OPEN_ERROR = 1
Populate the internal table it_fields accordingly in a loop run, e.g.
loop at it_upload into wa_upload.
wa_fields-text1 = wa_upload-string(20).
wa_fields-wert = wa_upload-string+20(10).
wa_fields-text2 = wa_upload-string+30.
append wa_fields to it_fields.
endloop.
When your offsets are set correctly, there shouldn't be any problem.
Regards,
Heinz -
Get data in editable ALV back to internal table without data_changed ev?
Hi,
I have an editable ALV using classes to whch I have users the option to edit directly on the screen or upload data from an excel. The event data_changed gets triggered when users edit the table on the screen.
However when EXCEL is uploaded, I refresh the table display. So, I need a way to get the data from the ALV into a internal table to check which rows were update using the excel and save them into the db table.
PrakashHi!
For more information, inspect programs suiting the mask "BCALVEDIT*" and the thread with header "How to make a row of ALV editable " (I know this is some more steps further from your demand but it may be useful) at URL " How to make a row of ALV editable " .
If you want to study more BC412 "EnjoySAP Controls" may help you.
*--Serdar -
Dynamic creation of variables and alv grid output/internal table
Dear Experts
I am stuck in an inventory ageing report which is to be done year wise. the scenario is as follow.
selection screen i enter the year 2011 or 2010 or 2009.
the output should show me 2011-2007 or 2010-2007 or 2009-2007. the alv grid should always start from 2007 and end at the year that is entered in the selection screen.
Now how can i create a dynamic variables to store the values of the corresponding yr and also how can i create a dynamic internal table to store these values.
Thanks & Regards
Zamir ParkarHi Zamir,
if you are new to ABAP you may leave old and buggy techniques behind.
If you want to create the table dynamically, please do not use l_alv_table_create=>create_dynamic_table because it is limited and always triggers a possibly unwanted database commit.
You better use RTTS dynamic runtime type services, i.e. check the example for [Creating Flat and Complex Internal Tables Dynamically using RTTI|http://wiki.sdn.sap.com/wiki/display/Snippets/CreatingFlatandComplexInternalTablesDynamicallyusingRTTI].
As done here, leave all outdated ALV technologies behind and start with CL_SALV_TABLE. It is following the object-oriented approach and does not need a field catalog.
You will get used to field-symbols that can be compared to the data referenced by a pointer. For dynamic fields, you may build the field names dynamically, i.e.
DATA:
lo_structdescr TYPE REF TO cl_abap_structdescr,
lo_typedescr TYPE REF TO cl_abap_typedescr,
lo_tabledescr TYPE REF TO cl_abap_tabledescr,
lr_data TYPE REF TO data,
lt_comp_all TYPE cl_abap_structdescr=>component_table,
lv_index TYPE numc2.
FIELD-SYMBOLS:
<any> TYPE ANY,
<component> TYPE LINE OF abap_component_tab,
<table> TYPE table.
DO nnn TIMES.
lv_index = sy-index.
lo_typedescr = cl_abap_typedescr=>describe_by_name( <name of data element> ).
APPEND INITIAL LINE TO lt_comp_all ASSIGNING <component>.
<component>-type ?= lo_typedescr.
CONCATENATE 'YEARVAL' lc_underscore lv_index INTO <component>-name.
<component>-as_include = abap_true.
CONCATENATE lc_underscore lv_index INTO <component>-suffix.
ENDDO.
* create description object for structured type
lo_structdescr = cl_abap_structdescr=>create( lt_comp_all ).
* create table description object for this
lo_tabledescr = cl_abap_tabledescr=>create(
p_line_type = lo_structdescr
p_table_kind = cl_abap_tabledescr=>tablekind_std
p_unique = abap_false ).
* create data object
CREATE DATA lr_data TYPE HANDLE lo_tabledescr.
ASSIGN lr_data->* to <table>.
This is a fragment. Please adapt to your needs.
Regards,
Clemens -
ALV GRID update internal table
Hi all,
I have an internal table display in a ALV GRID. Only one column is editable. When I change the field value, ALV GRID display the change, but when I click on refresh return the old value.
I've checked in DEBUG mode and when I click on refresh (in the PAI module), the internal table haven't data modified.
For example: the field qta have value 15. I change it in 18 and then press Refresh. In debug, the field qta still have the value 15.
What I have to do?Hi
The Example prg is using Classes, then you need to use the same approach in the way i mentioned below...
You need to Update the ITAB with the Modifeid values.
* CLASS lcl_event_handler DEFINITION
CLASS LCL_EVENT_HANDLER DEFINITION .
PUBLIC SECTION .
METHODS:
**Handler to Check the Data Change
HANDLE_DATA_CHANGED FOR EVENT DATA_CHANGED
OF CL_GUI_ALV_GRID
IMPORTING ER_DATA_CHANGED
E_ONF4
E_ONF4_BEFORE
E_ONF4_AFTER.
ENDCLASS. "lcl_event_handler
DEFINITION
**Handle Data Change
METHOD HANDLE_DATA_CHANGED.
DATA: X_CHANGE TYPE LVC_S_MODI,
X_FINAL TYPE T_FINAL,
X_OCRC TYPE ZSD_OC_HOLD,
L_FLAG.
LOOP AT ER_DATA_CHANGED->MT_GOOD_CELLS INTO X_CHANGE.
IF X_CHANGE-FIELDNAME = 'ZZOCHOLDRC'.
READ TABLE IT_FINAL INTO X_FINAL INDEX X_CHANGE-ROW_ID.
IF SY-SUBRC = 0.
READ TABLE IT_OCRC INTO X_OCRC WITH KEY
ZZOCHOLDRC = X_CHANGE-VALUE
TRANSPORTING ZZRCDESC.
IF SY-SUBRC = 0.
X_FINAL-ZZRCDESC = X_OCRC-ZZRCDESC.
MODIFY IT_FINAL FROM X_FINAL INDEX X_CHANGE-ROW_ID
TRANSPORTING ZZRCDESC.
L_FLAG = 'X'.
ENDIF.
ENDIF.
ENDIF.
IF X_CHANGE-FIELDNAME = 'ZZPROMDT'.
READ TABLE IT_FINAL INTO X_FINAL INDEX X_CHANGE-ROW_ID.
IF SY-SUBRC = 0.
X_FINAL-ZZPROMDT = X_CHANGE-VALUE.
MODIFY IT_FINAL FROM X_FINAL INDEX X_CHANGE-ROW_ID
TRANSPORTING ZZPROMDT.
L_FLAG = 'X'.
ENDIF.
ENDIF.
ENDLOOP.
IF L_FLAG = 'X'.
CLEAR V_DATA_CHANGE.
V_DATA_CHANGE = 'X'.
ENDIF.
ENDMETHOD. "data_changed
**you need to SET the HANDLER after the method first display.
CREATE OBJECT G_HANDLER.
SET HANDLER G_HANDLER->HANDLE_DATA_CHANGED FOR G_GRID.
try this
vijay -
Getting data back from ALV grid
This looks like a topic discussed before but i still need some clearifications. I display an internal table in ALV grid, in editable format. user changes the data and presses A BUTTON. On doing that I need to re-capture the changes made in a internal table.
I have used method "check_changed_data' but it doesnt seem to work. It keeps appending data in the internal table if the user changes it multiple times. please suggest me some ideas on how to go about it.
Thanks.
shivHi then i will give another code with OO that fits your requirement check...
REPORT ZTEST NO STANDARD PAGE HEADING
LINE-SIZE 200
LINE-COUNT 58
MESSAGE-ID ZZ.
* Include for Data Declarations
INCLUDE ZSDR0057_DEL_HOLD_TOP.
INCLUDE <ICON>.
**Tables to Compare Before after the Data Change
DATA: IT_VEKP_TMP LIKE IT_VEKP OCCURS 0 WITH HEADER LINE,
IT_VEKP1 LIKE IT_VEKP OCCURS 0 WITH HEADER LINE,
IT_VEKP1_TMP LIKE IT_VEKP OCCURS 0 WITH HEADER LINE,
IT_FINAL_TMP LIKE IT_FINAL OCCURS 0 WITH HEADER LINE,
IT_OCRC TYPE TABLE OF ZSD_OC_HOLD.
DATA: L_VALID TYPE C,
L_VALID1 TYPE C,
V_FLAG,
V_DATA_CHANGE.
DATA: G_GRID TYPE REF TO CL_GUI_ALV_GRID.
* CLASS lcl_event_handler DEFINITION
CLASS LCL_EVENT_HANDLER DEFINITION .
PUBLIC SECTION .
METHODS:
**Hot spot Handler
HANDLE_HOTSPOT_CLICK FOR EVENT HOTSPOT_CLICK OF CL_GUI_ALV_GRID
IMPORTING E_ROW_ID E_COLUMN_ID ES_ROW_NO,
**User Command Handler
HANDLE_USER_COMMAND FOR EVENT USER_COMMAND OF CL_GUI_ALV_GRID
IMPORTING E_UCOMM,
**Double Click Handler
HANDLE_DOUBLE_CLICK FOR EVENT DOUBLE_CLICK OF CL_GUI_ALV_GRID
IMPORTING E_ROW E_COLUMN,
**Handler to Check the Data Change
HANDLE_DATA_CHANGED FOR EVENT DATA_CHANGED
OF CL_GUI_ALV_GRID
IMPORTING ER_DATA_CHANGED
E_ONF4
E_ONF4_BEFORE
E_ONF4_AFTER,
HANDLE_TOOLBAR
FOR EVENT TOOLBAR OF CL_GUI_ALV_GRID
IMPORTING E_OBJECT E_INTERACTIVE.
ENDCLASS. "lcl_event_handler DEFINITION
* CLASS lcl_event_handler DEFINITION for second screen
CLASS LCL_EVENT_HANDLER1 DEFINITION .
PUBLIC SECTION .
METHODS:
**User Command Handler
HANDLE_USER_COMMAND FOR EVENT USER_COMMAND OF CL_GUI_ALV_GRID
IMPORTING E_UCOMM,
HANDLE_TOOLBAR
FOR EVENT TOOLBAR OF CL_GUI_ALV_GRID
IMPORTING E_OBJECT E_INTERACTIVE.
ENDCLASS. "lcl_event_handler1 DEFINITION
* CLASS lcl_event_handler IMPLEMENTATION
CLASS LCL_EVENT_HANDLER IMPLEMENTATION.
*Handle Hotspot Click
METHOD HANDLE_HOTSPOT_CLICK .
PERFORM HANDLE_HOTSPOT_CLICK USING E_ROW_ID E_COLUMN_ID ES_ROW_NO .
ENDMETHOD. "lcl_event_handler
*Handle User Command
METHOD HANDLE_USER_COMMAND.
PERFORM EVENT_UCOMM USING E_UCOMM.
ENDMETHOD. "user_command
*Handle Double Click
METHOD HANDLE_DOUBLE_CLICK.
DATA X_FINAL TYPE T_FINAL.
IF V_DATA_CHANGE IS INITIAL.
IF E_COLUMN = 'ZZPROMDT' OR E_COLUMN = 'ZZOCHOLDRC'.
READ TABLE IT_FINAL INDEX E_ROW INTO X_FINAL
TRANSPORTING
VBELN
VGBEL
VGPOS
ZZPROMDT
ZZOCHOLDRC.
IF SY-SUBRC = 0.
PERFORM GET_HU_DATA USING X_FINAL.
PERFORM POPULATE_FIELDCAT2.
ENDIF.
CALL SCREEN 200.
ENDIF.
ELSE.
MESSAGE I002 WITH 'Please save the data first and then double click'.
ENDIF.
ENDMETHOD. "handle_double_click
**Handle Data Change
METHOD HANDLE_DATA_CHANGED.
DATA: X_CHANGE TYPE LVC_S_MODI,
X_FINAL TYPE T_FINAL,
X_OCRC TYPE ZSD_OC_HOLD,
L_FLAG.
LOOP AT ER_DATA_CHANGED->MT_GOOD_CELLS INTO X_CHANGE.
IF X_CHANGE-FIELDNAME = 'ZZOCHOLDRC'.
READ TABLE IT_FINAL INTO X_FINAL INDEX X_CHANGE-ROW_ID.
IF SY-SUBRC = 0.
READ TABLE IT_OCRC INTO X_OCRC WITH KEY
ZZOCHOLDRC = X_CHANGE-VALUE
TRANSPORTING ZZRCDESC.
IF SY-SUBRC = 0.
X_FINAL-ZZRCDESC = X_OCRC-ZZRCDESC.
MODIFY IT_FINAL FROM X_FINAL INDEX X_CHANGE-ROW_ID
TRANSPORTING ZZRCDESC.
L_FLAG = 'X'.
ENDIF.
ENDIF.
ENDIF.
IF X_CHANGE-FIELDNAME = 'ZZPROMDT'.
READ TABLE IT_FINAL INTO X_FINAL INDEX X_CHANGE-ROW_ID.
IF SY-SUBRC = 0.
X_FINAL-ZZPROMDT = X_CHANGE-VALUE.
MODIFY IT_FINAL FROM X_FINAL INDEX X_CHANGE-ROW_ID
TRANSPORTING ZZPROMDT.
L_FLAG = 'X'.
ENDIF.
ENDIF.
ENDLOOP.
IF L_FLAG = 'X'.
CLEAR V_DATA_CHANGE.
V_DATA_CHANGE = 'X'.
ENDIF.
ENDMETHOD. "data_changed
METHOD HANDLE_TOOLBAR.
DATA: LS_TOOLBAR TYPE STB_BUTTON.
* append a separator to normal toolbar
CLEAR LS_TOOLBAR.
MOVE 3 TO LS_TOOLBAR-BUTN_TYPE.
APPEND LS_TOOLBAR TO E_OBJECT->MT_TOOLBAR.
* append SAVE icon
CLEAR LS_TOOLBAR.
MOVE 'SAVE' TO LS_TOOLBAR-FUNCTION.
MOVE ICON_SYSTEM_SAVE TO LS_TOOLBAR-ICON.
MOVE 'Save' TO LS_TOOLBAR-QUICKINFO.
MOVE ' Save ' TO LS_TOOLBAR-TEXT.
MOVE ' ' TO LS_TOOLBAR-DISABLED.
APPEND LS_TOOLBAR TO E_OBJECT->MT_TOOLBAR.
CLEAR LS_TOOLBAR.
* append a separator to normal toolbar
CLEAR LS_TOOLBAR.
MOVE 3 TO LS_TOOLBAR-BUTN_TYPE.
APPEND LS_TOOLBAR TO E_OBJECT->MT_TOOLBAR.
* append BACK icon
CLEAR LS_TOOLBAR.
MOVE 'BACK' TO LS_TOOLBAR-FUNCTION.
MOVE ICON_SYSTEM_BACK TO LS_TOOLBAR-ICON.
MOVE 'Back' TO LS_TOOLBAR-QUICKINFO.
MOVE ' Back ' TO LS_TOOLBAR-TEXT.
MOVE ' ' TO LS_TOOLBAR-DISABLED.
APPEND LS_TOOLBAR TO E_OBJECT->MT_TOOLBAR.
CLEAR LS_TOOLBAR.
ENDMETHOD. "handle_toolbar
ENDCLASS. "lcl_event_handler IMPLEMENTATION
* CLASS lcl_event_handler1 IMPLEMENTATION
CLASS LCL_EVENT_HANDLER1 IMPLEMENTATION.
*Handle User Command
METHOD HANDLE_USER_COMMAND.
PERFORM EVENT_UCOMM1 USING E_UCOMM.
ENDMETHOD. "user_command
METHOD HANDLE_TOOLBAR.
DATA: LS_TOOLBAR TYPE STB_BUTTON.
* append a separator to normal toolbar
CLEAR LS_TOOLBAR.
MOVE 3 TO LS_TOOLBAR-BUTN_TYPE.
APPEND LS_TOOLBAR TO E_OBJECT->MT_TOOLBAR.
* append SAVE icon
CLEAR LS_TOOLBAR.
MOVE 'SAVE' TO LS_TOOLBAR-FUNCTION.
MOVE ICON_SYSTEM_SAVE TO LS_TOOLBAR-ICON.
MOVE 'Save' TO LS_TOOLBAR-QUICKINFO.
MOVE ' Save ' TO LS_TOOLBAR-TEXT.
MOVE ' ' TO LS_TOOLBAR-DISABLED.
APPEND LS_TOOLBAR TO E_OBJECT->MT_TOOLBAR.
CLEAR LS_TOOLBAR.
* append a separator to normal toolbar
CLEAR LS_TOOLBAR.
MOVE 3 TO LS_TOOLBAR-BUTN_TYPE.
APPEND LS_TOOLBAR TO E_OBJECT->MT_TOOLBAR.
* append an Back icon
CLEAR LS_TOOLBAR.
MOVE 'BACK' TO LS_TOOLBAR-FUNCTION.
MOVE ICON_SYSTEM_BACK TO LS_TOOLBAR-ICON.
MOVE 'Back' TO LS_TOOLBAR-QUICKINFO.
MOVE ' Back ' TO LS_TOOLBAR-TEXT.
MOVE ' ' TO LS_TOOLBAR-DISABLED.
APPEND LS_TOOLBAR TO E_OBJECT->MT_TOOLBAR.
CLEAR LS_TOOLBAR.
ENDMETHOD. "handle_toolbar
ENDCLASS. "lcl_event_handler1 IMPLEMENTATION
*& Global Definitions
DATA: "G_GRID TYPE REF TO CL_GUI_ALV_GRID, "Grid for first report
G_GRID1 TYPE REF TO CL_GUI_ALV_GRID, "grid for second report
G_CUSTOM_CONTAINER TYPE REF TO CL_GUI_CUSTOM_CONTAINER,"Container1
G_CUSTOM_CONTAINER1 TYPE REF TO CL_GUI_CUSTOM_CONTAINER,"container
G_HANDLER TYPE REF TO LCL_EVENT_HANDLER, "handler
G_HANDLER1 TYPE REF TO LCL_EVENT_HANDLER1. "handler
DATA: OK_CODE LIKE SY-UCOMM,
SAVE_OK LIKE SY-UCOMM,
G_CONTAINER1 TYPE SCRFNAME VALUE 'ZSDR0057_DEL_HOLD_CONT1',
G_CONTAINER2 TYPE SCRFNAME VALUE 'ZSDR0057_DEL_HOLD_CONT2',
GS_LAYOUT TYPE LVC_S_LAYO,
GS_LAYOUT1 TYPE LVC_S_LAYO.
*- Fieldcatalog for First and second Report
DATA: IT_FIELDCAT TYPE LVC_T_FCAT,
X_FIELDCAT TYPE LVC_S_FCAT,
IT_FIELDCAT1 TYPE LVC_T_FCAT,
X_FIELDCAT1 TYPE LVC_S_FCAT,
LS_VARI TYPE DISVARIANT.
* Selection screen
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS: S_VBELN FOR V_LIKP-VBELN, "Delivery
S_VSTEL FOR V_LIKP-VSTEL, "Shipping Point
S_WERKS FOR V_LIPS-WERKS, "Plant
S_WADAT FOR V_VBEP-WADAT, "Pgi Date
S_TRSPG FOR V_LIKP-TRSPG OBLIGATORY,"Shp bolck Reason
S_OCHRC FOR V_VEKP-ZZOCHOLDRC MATCHCODE OBJECT
ZZOCHOLDRC, "OC Reason Code
S_USERID FOR V_VBAK-ZZREP_USERID1."Rep User ID
SELECTION-SCREEN END OF BLOCK B1.
* START-OF_SELECTION
START-OF-SELECTION.
CLEAR IT_LIKP.
REFRESH IT_LIKP.
SELECT VBELN
VSTEL
LFDAT
KUNNR
FROM LIKP
INTO TABLE IT_LIKP
WHERE VBELN IN S_VBELN
AND VSTEL IN S_VSTEL
AND WADAT IN S_WADAT
AND WADAT_IST = '00000000'
AND TRSPG IN S_TRSPG.
IF SY-SUBRC <> 0.
CLEAR V_FLAG.
V_FLAG = 'X'.
ENDIF.
IF V_FLAG = ' '.
**Populating the Delivery Item Data
PERFORM GET_DEL_ITEM_DATA.
**Getting the PGI DATE & USERID
PERFORM GET_USERID.
**Getting the Promise DATE & OC HOLD RC
PERFORM GET_VEKP_DATA.
**get the Reason codes
PERFORM SELECT_OCHOLDRC.
IF NOT IT_LIPS[] IS INITIAL
AND NOT IT_VBAK[] IS INITIAL
AND NOT IT_VEKP_TMP[] IS INITIAL.
** Populating the Final Internaltable
PERFORM POPULATE_FINAL_TABLE.
ENDIF.
ENDIF.
* END-OF-SELECTION.
END-OF-SELECTION.
IF NOT IT_FINAL[] IS INITIAL.
CALL SCREEN 100. "Calling the First Screen
ELSE.
MESSAGE I002 WITH 'NO DATA FOR THE SELECTION'(004).
ENDIF.
* MODULE PBO OUTPUT *
MODULE PBO OUTPUT.
DATA: LS_EDIT TYPE LVC_S_STYL, "to find the edit in output
LT_EDIT TYPE LVC_T_STYL, "to find the edit in output
V_INDEX LIKE SY-TABIX,
LS_OUTTAB TYPE T_FINAL.
SET PF-STATUS 'MAIN100'.
SET TITLEBAR 'MAIN100'.
IF G_CUSTOM_CONTAINER IS INITIAL.
**Initializing the grid and calling the fm to Display the O/P
PERFORM CREATE_AND_INIT_ALV.
ENDIF.
ENDMODULE. "PBO OUTPUT
* MODULE PAI INPUT *
MODULE PAI INPUT.
SAVE_OK = OK_CODE.
CLEAR OK_CODE.
CASE SAVE_OK.
WHEN 'EXIT'.
LEAVE TO SCREEN 0.
WHEN 'CANC'.
LEAVE TO SCREEN 0.
WHEN OTHERS.
* do nothing
ENDCASE.
ENDMODULE. "pai INPUT
*& Form GET_DEL_ITEM_DATA
* Populating the Delivery Item Data
FORM GET_DEL_ITEM_DATA .
IF NOT IT_LIKP[] IS INITIAL.
**-Getting the name of Ship-to-party
SELECT KUNNR
NAME1
INTO TABLE IT_KNA1
FROM KNA1
FOR ALL ENTRIES IN IT_LIKP[]
WHERE KUNNR = IT_LIKP-KUNNR.
**-Getting Delivery Item Data
SELECT VBELN
POSNR
MATNR
WERKS
ARKTX
VGBEL
VGPOS
ZZCONPATH
INTO TABLE IT_LIPS
FROM LIPS
FOR ALL ENTRIES IN IT_LIKP[]
WHERE VBELN = IT_LIKP-VBELN
AND WERKS IN S_WERKS.
ENDIF.
ENDFORM. " GET_DEL_ITEM_DATA
*& Form get_userid
* Getting the USERID
FORM GET_USERID .
IF NOT IT_LIPS[] IS INITIAL.
**-Getting the USERID
SELECT VBELN
ZZREP_USERID1
INTO TABLE IT_VBAK
FROM VBAK
FOR ALL ENTRIES IN IT_LIPS[]
WHERE VBELN = IT_LIPS-VGBEL
AND ZZREP_USERID1 IN S_USERID.
ENDIF.
ENDFORM. " get_userid
*& Form populate_final_table
* Populating the Final Internaltable
FORM POPULATE_FINAL_TABLE .
DATA: L_TABIX LIKE SY-TABIX.
CLEAR IT_FINAL.
REFRESH IT_FINAL.
SORT IT_VEKP_TMP BY ZZPROMDT ZZSONUM ZZOCHOLDRC.
DATA IT_TMP LIKE IT_VEKP OCCURS 0 WITH HEADER LINE.
DATA IT_VEKP_TMP1 LIKE IT_VEKP OCCURS 0 WITH HEADER LINE.
CLEAR IT_VEKP_TMP1[].
IT_VEKP_TMP1[] = IT_VEKP_TMP[].
LOOP AT IT_VEKP_TMP.
MOVE IT_VEKP_TMP TO IT_TMP.
CLEAR IT_TMP-EXIDV.
COLLECT IT_TMP.
ENDLOOP.
CLEAR IT_VEKP_TMP[].
IT_VEKP_TMP[] = IT_TMP[] .
LOOP AT IT_VEKP_TMP.
L_TABIX = SY-TABIX.
READ TABLE IT_VEKP_TMP1 WITH KEY INHALT = IT_VEKP_TMP-INHALT
ZZSONUM = IT_VEKP_TMP-ZZSONUM
ZZPROMDT = IT_VEKP_TMP-ZZPROMDT
ZZOCHOLDRC = IT_VEKP_TMP-ZZOCHOLDRC
VEMNG = IT_VEKP_TMP-VEMNG.
IF SY-SUBRC = 0.
IT_VEKP_TMP-EXIDV = IT_VEKP_TMP1-EXIDV.
MODIFY IT_VEKP_TMP INDEX L_TABIX.
ENDIF.
ENDLOOP.
LOOP AT IT_LIPS.
MOVE-CORRESPONDING IT_LIPS TO IT_FINAL.
READ TABLE IT_LIKP WITH KEY VBELN = IT_LIPS-VBELN.
IF SY-SUBRC = 0.
IT_FINAL-VSTEL = IT_LIKP-VSTEL.
IT_FINAL-LFDAT = IT_LIKP-LFDAT.
ENDIF.
READ TABLE IT_KNA1 WITH KEY KUNNR = IT_LIKP-KUNNR.
IF SY-SUBRC = 0.
IT_FINAL-NAME1 = IT_KNA1-NAME1.
ENDIF.
READ TABLE IT_VBAK WITH KEY VBELN = IT_LIPS-VGBEL.
IF SY-SUBRC = 0.
IT_FINAL-ZZREP_USERID1 = IT_VBAK-ZZREP_USERID1.
ENDIF.
READ TABLE IT_SONUM WITH KEY VGBEL = IT_LIPS-VGBEL
VGPOS = IT_LIPS-VGPOS.
IF SY-SUBRC = 0.
LOOP AT IT_VEKP_TMP WHERE ZZSONUM = IT_SONUM-ZZSONUM
AND INHALT = IT_LIPS-VBELN.
IF NOT IT_VEKP_TMP-ZZPROMDT+0(4) = '0000'.
IT_FINAL-ZZPROMDT = IT_VEKP_TMP-ZZPROMDT.
ELSE.
IT_FINAL-ZZPROMDT = '00000000'.
ENDIF.
IT_FINAL-ZZOCHOLDRC = IT_VEKP_TMP-ZZOCHOLDRC.
IT_FINAL-VEMNG = IT_VEKP_TMP-VEMNG.
IT_FINAL-ZZSONUM = IT_VEKP_TMP-ZZSONUM.
IT_FINAL-EXIDV = IT_VEKP_TMP-EXIDV.
APPEND IT_FINAL.
ENDLOOP.
IF SY-SUBRC <> 0.
IT_FINAL-ZZPROMDT = '00000000'.
IT_FINAL-ZZOCHOLDRC = ' '.
IT_FINAL-VEMNG = ' '.
IT_FINAL-FLAG = 'X'.
APPEND IT_FINAL.
CLEAR IT_FINAL.
ENDIF.
ENDIF.
ENDLOOP.
DELETE IT_FINAL WHERE ZZOCHOLDRC NOT IN S_OCHRC[].
DELETE IT_FINAL WHERE ZZREP_USERID1 NOT IN S_USERID[].
DELETE IT_FINAL WHERE WERKS NOT IN S_WERKS[].
IF NOT IT_ZSDOCHOLD[] IS INITIAL.
LOOP AT IT_FINAL.
READ TABLE IT_ZSDOCHOLD WITH KEY ZZOCHOLDRC = IT_FINAL-ZZOCHOLDRC.
IF SY-SUBRC = 0.
IT_FINAL-ZZRCDESC = IT_ZSDOCHOLD-ZZRCDESC.
MODIFY IT_FINAL.
ENDIF.
ENDLOOP.
ENDIF.
IT_FINAL_TMP[] = IT_FINAL[].
CLEAR IT_FINAL.
ENDFORM. " populate_final_table
*& Form get_vekp_data
* Populating Promise Date and Order Control Hold Reason Code
FORM GET_VEKP_DATA .
CLEAR: IT_SONUM,IT_VEKP,IT_VEKP_TMP.
REFRESH: IT_SONUM,IT_VEKP,IT_VEKP_TMP.
LOOP AT IT_LIPS.
MOVE-CORRESPONDING IT_LIPS TO IT_SONUM.
CONCATENATE IT_LIPS-VGBEL IT_LIPS-VGPOS INTO IT_SONUM-ZZSONUM.
APPEND IT_SONUM.
CLEAR IT_SONUM.
ENDLOOP.
IF NOT IT_SONUM[] IS INITIAL.
SELECT EXIDV
INHALT
ZZSONUM
ZZPROMDT
ZZOCHOLDRC
INTO TABLE IT_VEKP
FROM VEKP
FOR ALL ENTRIES IN IT_SONUM[]
WHERE ZZSONUM = IT_SONUM-ZZSONUM
AND ZZOCHOLDRC IN S_OCHRC.
SELECT EXIDV INHALT VEMNG
ZZSONUM
INTO TABLE IT_QUANT
FROM ZVEKPO
FOR ALL ENTRIES IN IT_SONUM[]
WHERE ZZSONUM = IT_SONUM-ZZSONUM.
IF SY-SUBRC = 0.
LOOP AT IT_VEKP.
READ TABLE IT_QUANT WITH KEY EXIDV = IT_VEKP-EXIDV
INHALT = IT_VEKP-INHALT
ZZSONUM = IT_VEKP-ZZSONUM.
IF SY-SUBRC = 0.
IT_VEKP-VEMNG = IT_QUANT-VEMNG.
MODIFY IT_VEKP.
ENDIF.
ENDLOOP.
IT_VEKP_TMP[] = IT_VEKP[].
SELECT ZZOCHOLDRC
ZZRCDESC
INTO TABLE IT_ZSDOCHOLD
FROM ZSD_OC_HOLD
FOR ALL ENTRIES IN IT_VEKP[]
WHERE ZZOCHOLDRC = IT_VEKP-ZZOCHOLDRC.
ENDIF.
ENDIF.
ENDFORM. " get_vekp_data
*& Form SELECT_OCHOLDRC
* Selecting the Reason Codes and Descriptions
FORM SELECT_OCHOLDRC .
SELECT *
FROM ZSD_OC_HOLD
INTO TABLE IT_OCRC.
ENDFORM. " select_OCHOLDRC
*& Form CREATE_AND_INIT_ALV
* Creating the ALV grid and initializing
FORM CREATE_AND_INIT_ALV .
DATA: LT_EXCLUDE TYPE UI_FUNCTIONS.
CREATE OBJECT G_CUSTOM_CONTAINER
EXPORTING CONTAINER_NAME = G_CONTAINER1.
CREATE OBJECT G_GRID
EXPORTING I_PARENT = G_CUSTOM_CONTAINER.
* Set a titlebar for the grid control
GS_LAYOUT-STYLEFNAME = 'HANDLE_STYLE'.
GS_LAYOUT-GRID_TITLE = TEXT-003.
GS_LAYOUT-CWIDTH_OPT = 'X'.
GS_LAYOUT-NO_ROWMARK = 'X'.
GS_LAYOUT-ZEBRA = SPACE."'X'.
GS_LAYOUT-INFO_FNAME = SPACE.
GS_LAYOUT-CTAB_FNAME = SPACE.
CALL METHOD G_GRID->REGISTER_EDIT_EVENT
EXPORTING
I_EVENT_ID = CL_GUI_ALV_GRID=>MC_EVT_ENTER.
CREATE OBJECT G_HANDLER.
SET HANDLER G_HANDLER->HANDLE_USER_COMMAND FOR G_GRID.
SET HANDLER G_HANDLER->HANDLE_DOUBLE_CLICK FOR G_GRID.
SET HANDLER G_HANDLER->HANDLE_HOTSPOT_CLICK FOR G_GRID.
SET HANDLER G_HANDLER->HANDLE_DATA_CHANGED FOR G_GRID.
SET HANDLER G_HANDLER->HANDLE_TOOLBAR FOR G_GRID.
* setting focus for created grid control
CALL METHOD CL_GUI_CONTROL=>SET_FOCUS
EXPORTING
CONTROL = G_GRID.
* Build fieldcat and set editable for date and reason code
* edit enabled. Assign a handle for the dropdown listbox.
PERFORM BUILD_FIELDCAT.
* Optionally restrict generic functions to 'change only'.
* (The user shall not be able to add new lines).
PERFORM EXCLUDE_TB_FUNCTIONS CHANGING LT_EXCLUDE.
PERFORM DISABLE_EDIT_FIELDS.
**Vaiant to save the layout
LS_VARI-REPORT = SY-REPID.
LS_VARI-HANDLE = SPACE.
LS_VARI-LOG_GROUP = SPACE.
LS_VARI-USERNAME = SPACE.
LS_VARI-VARIANT = SPACE.
LS_VARI-TEXT = SPACE.
LS_VARI-DEPENDVARS = SPACE.
* Define a drop down table.
PERFORM SET_DRDN_TABLE.
**Calling the Method for ALV output
CALL METHOD G_GRID->SET_TABLE_FOR_FIRST_DISPLAY
EXPORTING
IT_TOOLBAR_EXCLUDING = LT_EXCLUDE
IS_VARIANT = LS_VARI
IS_LAYOUT = GS_LAYOUT
I_SAVE = 'A'
CHANGING
IT_FIELDCATALOG = IT_FIELDCAT
IT_OUTTAB = IT_FINAL[].
* Set editable cells to ready for input initially
CALL METHOD G_GRID->SET_READY_FOR_INPUT
EXPORTING
I_READY_FOR_INPUT = 1.
CALL METHOD G_GRID->SET_TOOLBAR_INTERACTIVE.
ENDFORM. "CREATE_AND_INIT_ALV
*& Form EXCLUDE_TB_FUNCTIONS
* Excluding the ALV functions
FORM EXCLUDE_TB_FUNCTIONS CHANGING PT_EXCLUDE TYPE UI_FUNCTIONS.
* Only allow to change data not to create new entries (exclude
* generic functions).
DATA LS_EXCLUDE TYPE UI_FUNC.
LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_COPY_ROW.
APPEND LS_EXCLUDE TO PT_EXCLUDE.
LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_DELETE_ROW.
APPEND LS_EXCLUDE TO PT_EXCLUDE.
LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_APPEND_ROW.
APPEND LS_EXCLUDE TO PT_EXCLUDE.
LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_INSERT_ROW.
APPEND LS_EXCLUDE TO PT_EXCLUDE.
LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_MOVE_ROW.
APPEND LS_EXCLUDE TO PT_EXCLUDE.
LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_COPY.
APPEND LS_EXCLUDE TO PT_EXCLUDE.
LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_CUT.
APPEND LS_EXCLUDE TO PT_EXCLUDE.
LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_PASTE.
APPEND LS_EXCLUDE TO PT_EXCLUDE.
LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_PASTE_NEW_ROW.
APPEND LS_EXCLUDE TO PT_EXCLUDE.
LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_UNDO.
APPEND LS_EXCLUDE TO PT_EXCLUDE.
ENDFORM. " EXCLUDE_TB_FUNCTIONS
*& Form build_fieldcat
* Fieldcatalog
FORM BUILD_FIELDCAT .
DATA:L_POS TYPE I VALUE 1.
CLEAR: L_POS.
L_POS = L_POS + 1.
X_FIELDCAT-SCRTEXT_M = 'Shpt'(012).
X_FIELDCAT-FIELDNAME = 'VSTEL'.
X_FIELDCAT-TABNAME = 'IT_FINAL'.
X_FIELDCAT-COL_POS = L_POS.
X_FIELDCAT-OUTPUTLEN = '4'.
APPEND X_FIELDCAT TO IT_FIELDCAT.
CLEAR X_FIELDCAT.
L_POS = L_POS + 1.
X_FIELDCAT-SCRTEXT_M = 'Con Path'(013).
X_FIELDCAT-FIELDNAME = 'ZZCONPATH'.
X_FIELDCAT-TABNAME = 'IT_FINAL'.
X_FIELDCAT-COL_POS = L_POS.
X_FIELDCAT-OUTPUTLEN = '8'.
APPEND X_FIELDCAT TO IT_FIELDCAT.
CLEAR X_FIELDCAT.
L_POS = L_POS + 1.
X_FIELDCAT-SCRTEXT_M = 'Plant'(014).
X_FIELDCAT-FIELDNAME = 'WERKS'.
X_FIELDCAT-TABNAME = 'IT_FINAL'.
X_FIELDCAT-COL_POS = L_POS.
X_FIELDCAT-OUTPUTLEN = '5'.
APPEND X_FIELDCAT TO IT_FIELDCAT.
CLEAR X_FIELDCAT.
L_POS = L_POS + 1.
X_FIELDCAT-SCRTEXT_M = 'Del Date'(015).
X_FIELDCAT-FIELDNAME = 'LFDAT'.
X_FIELDCAT-TABNAME = 'IT_FINAL'.
X_FIELDCAT-COL_POS = L_POS.
X_FIELDCAT-OUTPUTLEN = '10'.
APPEND X_FIELDCAT TO IT_FIELDCAT.
CLEAR X_FIELDCAT.
L_POS = L_POS + 1.
X_FIELDCAT-COLTEXT = 'Prom Date'(016).
* X_FIELDCAT-SCRTEXT_M = 'Prom Date'(016).
X_FIELDCAT-FIELDNAME = 'ZZPROMDT'.
X_FIELDCAT-TABNAME = 'IT_FINAL'.
X_FIELDCAT-COL_POS = L_POS.
X_FIELDCAT-OUTPUTLEN = '10'.
X_FIELDCAT-EMPHASIZE = ' '.
X_FIELDCAT-EDIT = 'X'.
* X_FIELDCAT-HOTSPOT = 'X'.
X_FIELDCAT-DATATYPE = 'DATS'.
X_FIELDCAT-INTTYPE = 'D'.
X_FIELDCAT-REF_TABLE = 'VEKP'.
X_FIELDCAT-REF_FIELD = 'ZZPROMDT'.
APPEND X_FIELDCAT TO IT_FIELDCAT.
CLEAR X_FIELDCAT.
L_POS = L_POS + 1.
X_FIELDCAT-SCRTEXT_M = 'Ship-To-Name'(017).
X_FIELDCAT-FIELDNAME = 'NAME1'.
X_FIELDCAT-TABNAME = 'IT_FINAL'.
X_FIELDCAT-COL_POS = L_POS.
X_FIELDCAT-OUTPUTLEN = '40'.
X_FIELDCAT-EMPHASIZE = ' '.
APPEND X_FIELDCAT TO IT_FIELDCAT.
CLEAR X_FIELDCAT.
L_POS = L_POS + 1.
X_FIELDCAT-SCRTEXT_M = 'SalesOrder#'(018).
X_FIELDCAT-FIELDNAME = 'VGBEL'.
X_FIELDCAT-TABNAME = 'IT_FINAL'.
X_FIELDCAT-COL_POS = L_POS.
X_FIELDCAT-OUTPUTLEN = '10'.
X_FIELDCAT-EMPHASIZE = ' '.
X_FIELDCAT-HOTSPOT = 'X'.
APPEND X_FIELDCAT TO IT_FIELDCAT.
CLEAR X_FIELDCAT.
L_POS = L_POS + 1.
X_FIELDCAT-SCRTEXT_M = 'Item'(019).
X_FIELDCAT-FIELDNAME = 'VGPOS'.
X_FIELDCAT-TABNAME = 'IT_FINAL'.
X_FIELDCAT-COL_POS = L_POS.
X_FIELDCAT-EMPHASIZE = ' '.
X_FIELDCAT-OUTPUTLEN = '5'.
X_FIELDCAT-HOTSPOT = ' '.
APPEND X_FIELDCAT TO IT_FIELDCAT.
CLEAR X_FIELDCAT.
L_POS = L_POS + 1.
X_FIELDCAT-SCRTEXT_M = 'Material'(020).
X_FIELDCAT-FIELDNAME = 'MATNR'.
X_FIELDCAT-TABNAME = 'IT_FINAL'.
X_FIELDCAT-COL_POS = L_POS.
X_FIELDCAT-OUTPUTLEN = '18'.
X_FIELDCAT-EMPHASIZE = ' '.
X_FIELDCAT-HOTSPOT = ' '.
APPEND X_FIELDCAT TO IT_FIELDCAT.
CLEAR X_FIELDCAT.
L_POS = L_POS + 1.
X_FIELDCAT-SCRTEXT_M = 'Materal Desc'(021).
X_FIELDCAT-FIELDNAME = 'ARKTX'.
X_FIELDCAT-TABNAME = 'IT_FINAL'.
X_FIELDCAT-COL_POS = L_POS.
X_FIELDCAT-OUTPUTLEN = '40'.
X_FIELDCAT-EMPHASIZE = ' '.
X_FIELDCAT-HOTSPOT = ' '.
APPEND X_FIELDCAT TO IT_FIELDCAT.
CLEAR X_FIELDCAT.
L_POS = L_POS + 1.
X_FIELDCAT-SCRTEXT_M = 'D.O.Item Qty'(022).
X_FIELDCAT-FIELDNAME = 'VEMNG'.
X_FIELDCAT-TABNAME = 'IT_FINAL'.
X_FIELDCAT-COL_POS = L_POS.
X_FIELDCAT-OUTPUTLEN = '13'.
X_FIELDCAT-EMPHASIZE = ' '.
X_FIELDCAT-HOTSPOT = ' '.
APPEND X_FIELDCAT TO IT_FIELDCAT.
CLEAR X_FIELDCAT.
L_POS = L_POS + 1.
X_FIELDCAT-SCRTEXT_M = 'RC'(023).
X_FIELDCAT-FIELDNAME = 'ZZOCHOLDRC'.
X_FIELDCAT-TABNAME = 'IT_FINAL'.
X_FIELDCAT-COL_POS = L_POS.
X_FIELDCAT-OUTPUTLEN = '3'.
X_FIELDCAT-EDIT = 'X'.
X_FIELDCAT-DRDN_HNDL = '1'.
X_FIELDCAT-DRDN_ALIAS = 'X'.
* X_FIELDCAT-DRDN_FIELD = 'DROP_DOWN_HANDLE'.
APPEND X_FIELDCAT TO IT_FIELDCAT.
CLEAR X_FIELDCAT.
L_POS = L_POS + 1.
* X_FIELDCAT-SCRTEXT_M = 'OC HOLD RC Desc'.
* X_FIELDCAT-FIELDNAME = 'ZZRCDESC'.
* X_FIELDCAT-TABNAME = 'IT_FINAL'.
* X_FIELDCAT-COL_POS = L_POS.
* X_FIELDCAT-OUTPUTLEN = '20'.
* X_FIELDCAT-EDIT = 'X'.
* X_FIELDCAT-HOTSPOT = ' '.
* APPEND X_FIELDCAT TO IT_FIELDCAT.
* CLEAR X_FIELDCAT.
* L_POS = L_POS + 1.
X_FIELDCAT-SCRTEXT_M = 'Delivery'(024).
X_FIELDCAT-FIELDNAME = 'VBELN'.
X_FIELDCAT-TABNAME = 'IT_FINAL'.
X_FIELDCAT-COL_POS = L_POS.
X_FIELDCAT-OUTPUTLEN = '10'.
X_FIELDCAT-EMPHASIZE = ' '.
X_FIELDCAT-HOTSPOT = 'X'.
APPEND X_FIELDCAT TO IT_FIELDCAT.
CLEAR X_FIELDCAT.
L_POS = L_POS + 1.
X_FIELDCAT-SCRTEXT_M = 'Item'(025).
X_FIELDCAT-FIELDNAME = 'POSNR'.
X_FIELDCAT-TABNAME = 'IT_FINAL'.
X_FIELDCAT-COL_POS = L_POS.
X_FIELDCAT-OUTPUTLEN = '5'.
X_FIELDCAT-EMPHASIZE = ' '.
APPEND X_FIELDCAT TO IT_FIELDCAT.
CLEAR X_FIELDCAT.
L_POS = L_POS + 1.
X_FIELDCAT-SCRTEXT_M = 'Rep User Id'(026).
X_FIELDCAT-FIELDNAME = 'ZZREP_USERID1'.
X_FIELDCAT-TABNAME = 'IT_FINAL'.
X_FIELDCAT-COL_POS = L_POS.
X_FIELDCAT-OUTPUTLEN = '11'.
X_FIELDCAT-EMPHASIZE = ' '.
X_FIELDCAT-HOTSPOT = ' '.
APPEND X_FIELDCAT TO IT_FIELDCAT.
CLEAR X_FIELDCAT.
ENDFORM. " build_fieldcat
*& Form set_drdn_table
* Setting the Drop down for the Reason code
FORM SET_DRDN_TABLE.
DATA: X_OCRC LIKE LINE OF IT_OCRC.
DATA:LT_DRAL TYPE LVC_T_DRAL,
LS_DRAL TYPE LVC_S_DRAL,
L_DRDN(25) TYPE C.
LOOP AT IT_OCRC INTO X_OCRC.
CONCATENATE X_OCRC-ZZOCHOLDRC ' ' ' ' ' ' X_OCRC-ZZRCDESC INTO L_DRDN
SEPARATED BY SPACE.
* First listbox (handle '1').
LS_DRAL-HANDLE = '1'.
LS_DRAL-VALUE = L_DRDN.
LS_DRAL-INT_VALUE = X_OCRC-ZZOCHOLDRC.
APPEND LS_DRAL TO LT_DRAL.
ENDLOOP.
**Setting the Drop down table for Reason Code
CALL METHOD G_GRID->SET_DROP_DOWN_TABLE
EXPORTING
IT_DROP_DOWN_ALIAS = LT_DRAL.
ENDFORM. " set_drdn_table
*& Form handle_hotspot_click
* Handling the Hotspot
FORM HANDLE_HOTSPOT_CLICK USING I_ROW_ID TYPE LVC_S_ROW
I_COLUMN_ID TYPE LVC_S_COL
IS_ROW_NO TYPE LVC_S_ROID.
READ TABLE IT_FINAL INDEX I_ROW_ID .
IF SY-SUBRC = 0.
IF I_COLUMN_ID-FIELDNAME = 'VGBEL'.
PERFORM FORM_REFRESH.
SET PARAMETER ID 'AUN' FIELD IT_FINAL-VGBEL.
CALL TRANSACTION 'VA03' AND SKIP FIRST SCREEN.
ENDIF.
**if user clicks on Delivery
IF I_COLUMN_ID-FIELDNAME = 'VBELN'.
PERFORM FORM_REFRESH.
SET PARAMETER ID 'VL' FIELD IT_FINAL-VBELN.
CALL TRANSACTION 'VL02N' AND SKIP FIRST SCREEN.
ENDIF.
ENDIF.
ENDFORM . "handle_hotspot_click
*& Form FORM_REFRESH for first list
FORM FORM_REFRESH .
CALL METHOD G_GRID->REFRESH_TABLE_DISPLAY
EXCEPTIONS
FINISHED = 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 . "FORM_REFRESH
*& Form event_ucomm
* Handling User Commands
FORM EVENT_UCOMM USING E_UCOMM TYPE SY-UCOMM.
SORT IT_FINAL.
SORT IT_FINAL_TMP.
CASE E_UCOMM.
WHEN 'BACK'.
CALL METHOD G_GRID->CHECK_CHANGED_DATA
IMPORTING
E_VALID = L_VALID.
CALL METHOD CL_GUI_CFW=>FLUSH.
PERFORM BACK_OPERATION.
WHEN 'SAVE'.
CALL METHOD G_GRID->CHECK_CHANGED_DATA
IMPORTING
E_VALID = L_VALID.
CALL METHOD CL_GUI_CFW=>FLUSH.
PERFORM SAVE_OPERATION.
ENDCASE.
ENDFORM. " event_ucomm
*& Form back_operation
* When User do Back operation
FORM BACK_OPERATION .
**When User Press back Button
* WHEN 'BACK'.
DATA: L_ANS TYPE C,
L_TABIX TYPE SY-TABIX,
L_SONUM TYPE VEKP-ZZSONUM,
X_OCRC LIKE LINE OF IT_OCRC.
**Checking for the Data Change
IF IT_FINAL_TMP[] <> IT_FINAL[].
PERFORM CONFIRM_BEFORE_LEAVE CHANGING L_ANS.
IF L_ANS = '1' .
LOOP AT IT_FINAL.
L_TABIX = SY-TABIX.
READ TABLE IT_FINAL_TMP INDEX L_TABIX.
IF SY-SUBRC = 0.
IF IT_FINAL <> IT_FINAL_TMP.
*-Validate Date Field.
PERFORM VALIDATE_AND_CONVERT_DATE.
**Modifying the VEKP table based on changes
IF NOT IT_FINAL_TMP-EXIDV IS INITIAL.
UPDATE VEKP SET ZZOCHOLDRC = IT_FINAL-ZZOCHOLDRC
ZZPROMDT = IT_FINAL-ZZPROMDT
WHERE EXIDV = IT_FINAL_TMP-EXIDV
AND INHALT = IT_FINAL-VBELN.
IF SY-SUBRC = 0.
COMMIT WORK AND WAIT.
ENDIF.
ELSE.
UPDATE VEKP SET ZZOCHOLDRC = IT_FINAL-ZZOCHOLDRC
ZZPROMDT = IT_FINAL-ZZPROMDT
WHERE INHALT = IT_FINAL-VBELN
AND ZZSONUM = IT_FINAL_TMP-ZZSONUM
AND ZZPROMDT = IT_FINAL_TMP-ZZPROMDT
AND ZZOCHOLDRC = IT_FINAL_TMP-ZZOCHOLDRC.
IF SY-SUBRC = 0.
COMMIT WORK AND WAIT.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDLOOP.
LEAVE TO SCREEN 0.
ELSEIF L_ANS = '2'.
LEAVE TO SCREEN 0.
ENDIF.
ELSE.
LEAVE TO SCREEN 0.
ENDIF.
ENDFORM. " back_operation
*& Form CONFIRM_BEFORE_LEAVE
* Popup for Confirm
FORM CONFIRM_BEFORE_LEAVE CHANGING P_ANS TYPE C.
CALL FUNCTION 'POPUP_TO_CONFIRM'
EXPORTING
TITLEBAR = 'Confirm'(007)
TEXT_QUESTION = 'Do you wish to save your data first?'(006)
TEXT_BUTTON_1 = 'Yes'(008)
ICON_BUTTON_1 = 'ICON_OKAY'
TEXT_BUTTON_2 = 'No'(010)
ICON_BUTTON_2 = 'ICON_CANCEL'
DEFAULT_BUTTON = '1'
DISPLAY_CANCEL_BUTTON = 'X'
START_COLUMN = 25
START_ROW = 6
IMPORTING
ANSWER = P_ANS
EXCEPTIONS
TEXT_NOT_FOUND = 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. " CONFIRM_BEFORE_LEAVE
*& Form VALIDATE_AND_CONVERT_DATE
* Validating and Converting the date
FORM VALIDATE_AND_CONVERT_DATE .
DATA : L_DATE LIKE SY-DATUM.
CALL FUNCTION 'CONVERT_DATE_INPUT'
EXPORTING
INPUT = IT_FINAL-ZZPROMDT
IMPORTING
OUTPUT = L_DATE
EXCEPTIONS
PLAUSIBILITY_CHECK_FAILED = 1
WRONG_FORMAT_IN_INPUT = 2
OTHERS = 3.
IF SY-SUBRC = 0.
WRITE L_DATE TO IT_FINAL-ZZPROMDT.
MODIFY IT_FINAL.
ENDIF.
ENDFORM. " VALIDATE_AND_CONVERT_DATE
*& Module STATUS_0200 OUTPUT
* PBO of Second List
MODULE STATUS_0200 OUTPUT.
SET PF-STATUS 'MAIN100'.
SET TITLEBAR 'MAIN100'.
IF G_CUSTOM_CONTAINER1 IS INITIAL.
**Initializing the second Grid
PERFORM CREATE_AND_INIT_ALV1.
ENDIF.
ENDMODULE. " STATUS_0200 OUTPUT
*& Module USER_COMMAND_0200 INPUT
* PAI of Second list
MODULE USER_COMMAND_0200 INPUT.
DATA: L_ANS.
SAVE_OK = OK_CODE.
CLEAR OK_CODE.
CASE SAVE_OK.
WHEN 'EXIT'.
LEAVE TO SCREEN 0.
WHEN 'CANC'.
LEAVE TO SCREEN 0.
WHEN OTHERS.
* do nothing
ENDCASE.
ENDMODULE. " USER_COMMAND_0200 INPUT
*& Form CREATE_AND_INIT_ALV1
* Creating the Grid for Second List
FORM CREATE_AND_INIT_ALV1 .
DATA: LT_EXCLUDE TYPE UI_FUNCTIONS.
CREATE OBJECT G_CUSTOM_CONTAINER1
EXPORTING CONTAINER_NAME = G_CONTAINER2.
CREATE OBJECT G_GRID1
EXPORTING I_PARENT = G_CUSTOM_CONTAINER1.
CALL METHOD G_GRID1->REGISTER_EDIT_EVENT
EXPORTING
I_EVENT_ID = CL_GUI_ALV_GRID=>MC_EVT_ENTER.
CREATE OBJECT G_HANDLER1.
SET HANDLER G_HANDLER1->HANDLE_USER_COMMAND FOR G_GRID1.
SET HANDLER G_HANDLER1->HANDLE_TOOLBAR FOR G_GRID1.
GS_LAYOUT1-GRID_TITLE = TEXT-003.
GS_LAYOUT1-CWIDTH_OPT = 'X'.
GS_LAYOUT1-NO_ROWMARK = 'X'.
GS_LAYOUT1-ZEBRA = SPACE."'X'.
GS_LAYOUT1-INFO_FNAME = SPACE.
GS_LAYOUT1-CTAB_FNAME = SPACE.
**Vaiant to save the layout
LS_VARI-REPORT = SY-REPID.
LS_VARI-HANDLE = SPACE.
LS_VARI-LOG_GROUP = SPACE.
LS_VARI-USERNAME = SPACE.
LS_VARI-VARIANT = SPACE.
LS_VARI-TEXT = SPACE.
LS_VARI-DEPENDVARS = SPACE.
* setting focus for created grid control
CALL METHOD CL_GUI_CONTROL=>SET_FOCUS
EXPORTING
CONTROL = G_GRID1.
PERFORM EXCLUDE_TB_FUNCTIONS CHANGING LT_EXCLUDE.
* Define a drop down table.
PERFORM SET_DRDN_TABLE1.
PERFORM FORM_REFRESH.
CALL METHOD G_GRID1->SET_TABLE_FOR_FIRST_DISPLAY
EXPORTING
IT_TOOLBAR_EXCLUDING = LT_EXCLUDE
IS_VARIANT = LS_VARI
I_SAVE = 'A'
IS_LAYOUT = GS_LAYOUT1
CHANGING
IT_FIELDCATALOG = IT_FIELDCAT1
IT_OUTTAB = IT_VEKP1[].
** Set editable cells to ready for input initially
CALL METHOD G_GRID1->SET_READY_FOR_INPUT
EXPORTING
I_READY_FOR_INPUT = 1.
CALL METHOD G_GRID1->SET_TOOLBAR_INTERACTIVE.
ENDFORM. "CREATE_AND_INIT_ALV1
*& Form GET_HU_DATA
* Get Handling Units Data
FORM GET_HU_DATA USING X_FINAL TYPE T_FINAL.
CLEAR IT_VEKP1.
REFRESH IT_VEKP1.
READ TABLE IT_SONUM WITH KEY VGBEL = X_FINAL-VGBEL
VGPOS = X_FINAL-VGPOS.
IF SY-SUBRC = 0.
LOOP AT IT_VEKP WHERE INHALT = X_FINAL-VBELN
AND ZZSONUM = IT_SONUM-ZZSONUM
AND ZZPROMDT = X_FINAL-ZZPROMDT
AND ZZOCHOLDRC = X_FINAL-ZZOCHOLDRC.
IT_VEKP1-EXIDV = IT_VEKP-EXIDV.
IT_VEKP1-ZZSONUM = IT_VEKP-ZZSONUM.
IF NOT IT_VEKP-ZZPROMDT+0(4) = '0000'.
IT_VEKP1-ZZPROMDT = IT_VEKP-ZZPROMDT.
ELSE.
IT_VEKP1-ZZPROMDT = '00000000'.
ENDIF.
IT_VEKP1-ZZOCHOLDRC = IT_VEKP-ZZOCHOLDRC.
APPEND IT_VEKP1.
ENDLOOP.
ENDIF.
IT_VEKP1_TMP[] = IT_VEKP1[].
ENDFORM. " GET_HU_DATA
*& Form POPULATE_FIELDCAT2
* Populating the Field Catalog for Second list
FORM POPULATE_FIELDCAT2 .
CLEAR: IT_FIELDCAT1,X_FIELDCAT1.
REFRESH IT_FIELDCAT1.
DATA:L_POS TYPE I VALUE 1.
CLEAR: L_POS.
L_POS = L_POS + 1.
X_FIELDCAT1-SCRTEXT_M = 'External Handling Unit Identification'(027).
X_FIELDCAT1-FIELDNAME = 'EXIDV'.
X_FIELDCAT1-TABNAME = 'IT_VEKP1'.
X_FIELDCAT1-COL_POS = L_POS.
X_FIELDCAT1-EDIT = ' '.
APPEND X_FIELDCAT1 TO IT_FIELDCAT1.
CLEAR X_FIELDCAT1.
L_POS = L_POS + 1.
* X_FIELDCAT1-SCRTEXT_M = 'Prom Date'(016).
X_FIELDCAT1-COLTEXT = 'Promise Date'(033).
X_FIELDCAT1-FIELDNAME = 'ZZPROMDT'.
X_FIELDCAT1-TABNAME = 'IT_VEKP1'.
X_FIELDCAT1-COL_POS = L_POS.
X_FIELDCAT1-OUTPUTLEN = '12'.
X_FIELDCAT1-EMPHASIZE = ' '.
X_FIELDCAT1-EDIT = 'X'.
X_FIELDCAT1-DATATYPE = 'DATS'.
X_FIELDCAT1-INTTYPE = 'D'.
X_FIELDCAT1-REF_TABLE = 'VEKP'.
X_FIELDCAT1-REF_FIELD = 'ZZPROMDT'.
APPEND X_FIELDCAT1 TO IT_FIELDCAT1.
CLEAR X_FIELDCAT1.
L_POS = L_POS + 1.
X_FIELDCAT1-SCRTEXT_M = 'Order Control Hold Reason Code'(029).
X_FIELDCAT1-FIELDNAME = 'ZZOCHOLDRC'.
X_FIELDCAT1-TABNAME = 'IT_VEKP1'.
X_FIELDCAT1-COL_POS = L_POS.
X_FIELDCAT1-DRDN_HNDL = '1'.
X_FIELDCAT1-DRDN_ALIAS = 'X'.
X_FIELDCAT1-EDIT = 'X'.
APPEND X_FIELDCAT1 TO IT_FIELDCAT1.
CLEAR X_FIELDCAT1.
ENDFORM. " POPULATE_FIELDCAT2
*& Form set_drdn_table
* Drop Down for second report
FORM SET_DRDN_TABLE1.
DATA:X_OCRC LIKE LINE OF IT_OCRC.
DATA:LT_DRAL TYPE LVC_T_DRAL,
LS_DRAL TYPE LVC_S_DRAL,
L_DRDN(25) TYPE C.
LOOP AT IT_OCRC INTO X_OCRC.
CONCATENATE X_OCRC-ZZOCHOLDRC ' ' ' ' ' ' X_OCRC-ZZRCDESC INTO
L_DRDN
SEPARATED BY SPACE.
* First listbox (handle '1').
LS_DRAL-HANDLE = '1'.
LS_DRAL-VALUE = L_DRDN.
LS_DRAL-INT_VALUE = X_OCRC-ZZOCHOLDRC.
APPEND LS_DRAL TO LT_DRAL.
ENDLOOP.
CALL METHOD G_GRID1->SET_DROP_DOWN_TABLE
EXPORTING
IT_DROP_DOWN_ALIAS = LT_DRAL.
ENDFORM. " set_drdn_table
*& Form save_operation
* Saving the changes
FORM SAVE_OPERATION .
DATA: L_TABIX LIKE SY-TABIX.
**CHECKING FOR THE DATA CHANGE
IF IT_FINAL_TMP[] <> IT_FINAL[].
LOOP AT IT_FINAL.
L_TABIX = SY-TABIX.
READ TABLE IT_FINAL_TMP INDEX L_TABIX.
IF SY-SUBRC = 0.
IF IT_FINAL <> IT_FINAL_TMP.
*-Validate Date Field.
PERFORM VALIDATE_AND_CONVERT_DATE.
**Modifying the VEKP table based on changes
IF NOT IT_FINAL_TMP-EXIDV IS INITIAL.
UPDATE VEKP SET ZZOCHOLDRC = IT_FINAL-ZZOCHOLDRC
ZZPROMDT = IT_FINAL-ZZPROMDT
WHERE EXIDV = IT_FINAL_TMP-EXIDV
AND INHALT = IT_FINAL-VBELN.
IF SY-SUBRC = 0.
V_DATA_CHANGE = ' '.
COMMIT WORK AND WAIT.
ENDIF.
ELSE.
UPDATE VEKP SET ZZOCHOLDRC = IT_FINAL-ZZOCHOLDRC
ZZPROMDT = IT_FINAL-ZZPROMDT
WHERE INHALT = IT_FINAL-VBELN
AND ZZSONUM = IT_FINAL_TMP-ZZSONUM
AND ZZPROMDT = IT_FINAL_TMP-ZZPROMDT
AND ZZOCHOLDRC = IT_FINAL_TMP-ZZOCHOLDRC.
IF SY-SUBRC = 0.
V_DATA_CHANGE = ' '.
COMMIT WORK AND WAIT.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDLOOP.
PERFORM GET_VEKP_DATA .
PERFORM POPULATE_FINAL_TABLE.
PERFORM DISABLE_EDIT_FIELDS.
PERFORM FORM_REFRESH.
MESSAGE S002 WITH 'Data Saved'(011).
ENDIF.
ENDFORM. " save_operation
*& Form BACK_SECOND_LIST
* When User Press Back in Second list
FORM BACK_SECOND_LIST .
DATA:X_OCRC LIKE LINE OF IT_OCRC.
**Checking for the Change in the data
IF IT_VEKP1_TMP[] <> IT_VEKP1[].
PERFORM CONFIRM_BEFORE_LEAVE CHANGING L_ANS.
IF L_ANS = '1'.
LOOP AT IT_VEKP1.
READ TABLE IT_VEKP1_TMP WITH KEY EXIDV = IT_VEKP1-EXIDV.
IF SY-SUBRC = 0.
IF IT_VEKP1_TMP <> IT_VEKP1.
UPDATE VEKP SET ZZPROMDT = IT_VEKP1-ZZPROMDT
ZZOCHOLDRC = IT_VEKP1-ZZOCHOLDRC
WHERE EXIDV = IT_VEKP1-EXIDV.
IF SY-SUBRC = 0.
COMMIT WORK.
ENDIF.
ENDIF.
ENDIF.
ENDLOOP.
PERFORM GET_VEKP_DATA .
CLEAR IT_VEKP1_TMP.
REFRESH IT_VEKP1_TMP.
IT_VEKP1_TMP[] = IT_VEKP1[].
PERFORM POPULATE_FINAL_TABLE.
PERFORM DISABLE_EDIT_FIELDS.
PERFORM FORM_REFRESH.
MESSAGE S002 WITH 'Data Saved'(011).
PERFORM CLEAR_GRID_CONTAINER.
ELSEIF L_ANS = '2'.
PERFORM CLEAR_GRID_CONTAINER.
ENDIF.
ELSE.
PERFORM CLEAR_GRID_CONTAINER.
ENDIF.
ENDFORM. " BACK_SECOND_LIST
*& Form clear_grid_container
* Clearing the Grid
FORM CLEAR_GRID_CONTAINER .
CALL METHOD G_GRID1->FREE.
CALL METHOD G_CUSTOM_CONTAINER1->FREE.
CALL METHOD CL_GUI_CFW=>FLUSH.
CLEAR G_CUSTOM_CONTAINER1.
CLEAR G_GRID1.
CLEAR G_HANDLER1.
LEAVE TO SCREEN 0.
ENDFORM. " clear_grid_container
*& Form disable_edit_fields
* Disable edit fields
FORM DISABLE_EDIT_FIELDS .
**Changing the Edit option for the records which they don't have
**Entries in HU level
LOOP AT IT_FINAL INTO LS_OUTTAB WHERE FLAG = 'X'.
V_INDEX = SY-TABIX.
LS_EDIT-FIELDNAME = 'ZZOCHOLDRC'.
LS_EDIT-STYLE = CL_GUI_ALV_GRID=>MC_STYLE_DISABLED.
LS_EDIT-STYLE2 = SPACE.
LS_EDIT-STYLE3 = SPACE.
LS_EDIT-STYLE4 = SPACE.
LS_EDIT-MAXLEN = 8.
INSERT LS_EDIT INTO TABLE LT_EDIT.
LS_EDIT-FIELDNAME = 'ZZRCDESC'.
LS_EDIT-STYLE = CL_GUI_ALV_GRID=>MC_STYLE_DISABLED.
LS_EDIT-STYLE2 = SPACE.
LS_EDIT-STYLE3 = SPACE.
LS_EDIT-STYLE4 = SPACE.
LS_EDIT-MAXLEN = 8.
INSERT LS_EDIT INTO TABLE LT_EDIT.
LS_EDIT-FIELDNAME = 'ZZPROMDT'.
LS_EDIT-STYLE = CL_GUI_ALV_GRID=>MC_STYLE_DISABLED.
LS_EDIT-STYLE2 = SPACE.
LS_EDIT-STYLE3 = SPACE.
LS_EDIT-STYLE4 = SPACE.
LS_EDIT-MAXLEN = 8.
INSERT LS_EDIT INTO TABLE LT_EDIT.
INSERT LINES OF LT_EDIT INTO TABLE LS_OUTTAB-HANDLE_STYLE.
MODIFY IT_FINAL INDEX V_INDEX FROM LS_OUTTAB TRANSPORTING
HANDLE_STYLE DROP_DOWN_HANDLE.
MODIFY IT_FINAL_TMP INDEX V_INDEX FROM LS_OUTTAB TRANSPORTING
HANDLE_STYLE DROP_DOWN_HANDLE.
ENDLOOP.
ENDFORM. " disable_edit_fields
*& Form event_ucomm
* Handling User Commands
FORM EVENT_UCOMM1 USING E_UCOMM TYPE SY-UCOMM.
SORT IT_VEKP1.
SORT IT_VEKP1_TMP.
CASE E_UCOMM.
WHEN'BACK'.
**Checking for the change in the data of the output
CALL METHOD G_GRID1->CHECK_CHANGED_DATA
IMPORTING
E_VALID = L_VALID1.
CALL METHOD CL_GUI_CFW=>FLUSH.
PERFORM BACK_SECOND_LIST.
WHEN 'SAVE'.
CALL METHOD G_GRID1->CHECK_CHANGED_DATA
IMPORTING
E_VALID = L_VALID1.
CALL METHOD CL_GUI_CFW=>FLUSH.
**Checking for the Change in the data
IF IT_VEKP1_TMP[] <> IT_VEKP1[].
LOOP AT IT_VEKP1.
READ TABLE IT_VEKP1_TMP WITH KEY EXIDV = IT_VEKP1-EXIDV.
IF SY-SUBRC = 0.
IF IT_VEKP1_TMP <> IT_VEKP1.
UPDATE VEKP SET ZZPROMDT = IT_VEKP1-ZZPROMDT
ZZOCHOLDRC = IT_VEKP1-ZZOCHOLDRC
WHERE EXIDV = IT_VEKP1-EXIDV.
IF SY-SUBRC = 0.
COMMIT WORK.
ENDIF.
ENDIF.
ENDIF.
ENDLOOP.
PERFORM GET_VEKP_DATA .
CLEAR IT_VEKP1_TMP.
REFRESH IT_VEKP1_TMP.
IT_VEKP1_TMP[] = IT_VEKP1[].
PERFORM POPULATE_FINAL_TABLE.
PERFORM DISABLE_EDIT_FIELDS.
PERFORM FORM_REFRESH.
MESSAGE S002 WITH 'Data Saved'(011).
ENDIF.
WHEN OTHERS.
* do nothing
ENDCASE.
ENDFORM. " event_ucomm1
check this code , in that i have used and implemented..using classes -
BAPI - DATA TRANSFER FROM .XLS FILE TO DB TABLE
I am upload data from xls file to database table.
first i have load xls file data to internal table (it_data) that is working.
then from internal table to database table (zskv_rate) by function module (ZBAPI_RATE_SAVEDATA) which is not working.
ex.
LOOP AT IT_DATA.
Header
ZSKV_RATE-DIVN = IT_DATA-DIVN.
ZSKV_RATE-REGN = IT_DATA-REGN.
ZSKV_RATE-PLANT = IT_DATA-PLANT.
ZSKV_RATE-RATE = IT_DATA-RATE.
APPEND IT_DATA.
CALL FUNCTION 'ZBAPI_RATE_SAVEDATA'
EXPORTING
HEADDATA = ZSKV_RATE
IMPORTING
RETURN = BAPI_RETURN
TABLES
DATA = IT_DATA
IF BAPI_RETURN-TYPE = 'E'.
WRITE:/ 'Error:' ,BAPI_RETURN-MESSAGE ,'for material:' ,IT_DATA-DIVN.
ELSEIF BAPI_RETURN-TYPE = 'S'.
WRITE: 'Successfully created material' ,IT_DATA-DIVN.
ELSE.
WRITE:/ 'NONE' ,IT_DATA-DIVN.
ENDIF.
ENDLOOP.
how to transfer data from internal table to database table.Hi Sanjeev,
as u hv uploaded the excel file into the internal table,
u can update the ztable from internal table..
modify <dbtab>from itab.
regards.
Mdi.Deeba -
Facing a Problem while downloading the data from ALV Grid to Excel Sheet
Hi Friends,
Iam facing a problem while downloading the data from ALV Grid to excel sheet. This is working fine in Development server , when comes to Quality and Production servers I have this trouble.
I have nearly 11 fields in ALV Grid and out of which one is PO number of length 10 , all the ten numbers are visible in the excel sheet if we download it from development server but when we download it from Quality or Production it is showing only 9 numbers.
Can any one help me out in this case.hi...
if this problems happens dont display the same internal as u finally got.
just create new internal table without calling any standard data elements and domains... but the new internal table s similar like ur final internal table and move all the values to new int table.
for eg.
ur final internal int table for disp,
data : begin of itab occur 0,
matnr like mara-matnr,
end of itab.
create new like this,
data : begin of itab occur 0,
matnr(12) type N,
end of itab. -
Downloads from ALV GRID-Text conversion to dates in EXCEL
When downloading table displays of data from ALV-GRID for excel spreadsheet, we end of with files that have a header and various line ifnromation. IF we manually clear up the display, then we can have the individicual column headers used and force them to text but if we just call the file up as an EXCEL spreadsheet, some part numbers such 12-3465 appear in Excel as Dec-65.
The following is an example of the record (but it is word wrapped within this display limit). In actuality, the verbage enclosed with the <b> represent the start of the lines that have actual display data running out about 90 characters.
Suggestions on how to make the download immediately correct in Excel direct from SAP ALV-GRID without cleaning out the heading lines and manually forcing the affected columns to TEXT format?
thanks
<b>03/02/2007</b> Dynamic List Display 1
<b>Materials-Inforecord Details Report</b>
<b>Purchasing Org: ILMO</b>
<b>Report Run Date:03/02/2007</b> <b>Report Time:14:31:16</b>
<b>Plnt Mat Grp Vendor Name 1 Material Material</b> description Vendor Cat Mfr MPN PC Item Chg. OUn Eq to BUn Net price Per OPUn Inforecord PGr Mv Avg per ValCl
<b>0042 04 106070 BURROWS COMPANY</b> 184110 Glv Exam Ltx Non Ster 02-5001 TILLOTSON 02-5001 CA 2,000 EA 93.40 1 CA 5300006999 999 93.40 2,000 6438there are different options to export to excel which all behave differently, if you go for the menu ->export it differs from the export button from the alv buttonbar.
try the different export to excel options perhaps there is one that behaves the way you want
kind regards
arthur de smidt -
Dear experts.
Can anyone help me to capture data from ALV grid to pass to a BAPI FM.
My ALV grid has the check box as first column and I want to capture only the rows in the grid with these checkboxes checked. I would prefer to do it without OO.
Regards
SatharLoop at the table used for ALV data where <checkbox-field> = 'X'.
Best,
Jim -
Upload vendor master data from legacy system to internal table tcode xk01
through batch input program how to upload vendor master data from legacy system to internal table and then to SAP R/3 database(transaction XK01) by using recording method.
By learning the basics of BDC recording and the use of GUI_UPLOAD
-
Leading Zeros Missing - When exporting data from ALV grid display to Excel
Hi,
Am exporting the data from ALV GRID DISPLAY to Excel sheet using standard toolbar icon 'Local file'
the leading zeros displayed in the ALV output is missing in the EXCEL sheet.
(eg) in ALV o/p - 0029.
in Excel - Only 29 is appearing.
As per the requiement i have to show the leading zeros in excel also.
Pls help on this issue.
Thanks in advance..Hi ,
Please set the property :
wa_fieldcat-lzero = 'X' .
when you are creating field catalog for display alv data .
your prob will solved .
Regards ,
Nilesh Jain -
Hi ,
I am facing a problem when ever i am going to donload data from ALV grid to excel file.I am getting CL_SALV_BS_TT_RESULT_TABLE====CP error in GET_CELL_VALUE. Could you please provide me is there any OSS note or any patch required to solve this issue.
Thanks in Advance,
Venkatarao.Hi,
Just refer to OSS note 1356898 for guidelines.
Regards,
Vasanth -
Retrieving data from Excel format to internal table(deep structure)
hi all,
can anybody help me how to Retrieving data from Excel format to internal table(deep structure)
and if u have any sample code for that please send it.
my internal table is like this
DATA: BEGIN OF ty_text,
vbeln TYPE vbeln,
posnr TYPE posnr,
seqno TYPE seqno,
textid TYPE tdid,
tdline TYPE tdline,
END OF ty_text.
DATA: BEGIN OF ty_item,
vbeln TYPE vbeln,
posnr TYPE posnr,
dispct1(16),
dispct2(16),
dispct3(16),
text LIKE table of ty_text,
END OF ty_item.hi,
check this code
TABLES:zmatnr.
TYPE-POOLS truxs.
DATA : itab LIKE alsmex_tabline OCCURS 0 WITH HEADER LINE.
DATA row LIKE alsmex_tabline-row.
data : gi_final like zmatnr occurs 0 with header line.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
PARAMETER : pfname LIKE rlgrap-filename OBLIGATORY.
SELECTION-SCREEN END OF BLOCK b1.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR pfname.
PERFORM search.
START-OF-SELECTION.
perform process.
form process.
CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
EXPORTING
filename = pfname
i_begin_col = 1
i_begin_row = 2
i_end_col = 12
i_end_row = 65000
TABLES
intern = itab
EXCEPTIONS
inconsistent_parameters = 1
upload_ole = 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.
describe table itab lines itab_count.
row = 1.
loop at itab.
if itab-row <> row.
append gi_final.
clear gi_final.
endif.
case itab-col.
when '1'.
gi_final-MATNR = itab-value.
when '2'.
gi_final-Maktx = itab-value.
endcase.
row = itab-row.
endloop.
append gi_final.
clear gi_final.
endform.
FORM search .
CALL FUNCTION 'KD_GET_FILENAME_ON_F4'
EXPORTING
static = 'X'
CHANGING
file_name = pfname.
ENDFORM.
regards
siva -
Taking download into excel from ALV Grid - header is printing in two lines
Hi All,
I have a scenario where I am taking the download from ALV grid to an excel sheet. Now the header of the ALV (column names) is appearing in two lines in the downloaded excel sheet while items (records of the ALV table) are getting displayed in a single line.
This download is taken from the standard download to local file (spreadsheet) button provided by SAP for ALVs.
I am using function module "Reuse_alv_grid_display" for the purpose.
Can somebody provide an idea how I can avoid the header printing in two lines and keep the length as it is.
Thanks in Advance,
ChandanHi..
1. Pass header name in internal table appned first line.
2. after that pass u r data .
3. Use FM. WS_DOWNLOAD
Salil ......
Edited by: salil chavan on Nov 26, 2008 11:07 AM
Maybe you are looking for
-
Payment Rule maintenance per currency in Bank Communication Management
Hi, We have maintained Rules for Payment Grouping in Bank Communication Management based on amount limits. The basic currency we expected is GBP so we have the same set of amount limits for all Company Codes until now. We've now introduced a new Comp
-
I am unable to merge the call after adding in iphone 4 , can anybody help me ?
Unable to merge call for conference after adding new call . Can anybody help ?
-
Hello, I have Gmail account and a couple of days ago, I tried to send an email via Apple mail. E-mail size was too big so I couldn't send it. Afterwards, it created 'recovered message file' into the apple mail. Since then, gmail cannot connect Apple
-
Gnome Keyboard Indicator Problem...
Hi, I have installed gnome on my laptop and the gnome keyboard indicator to change between usa and greece in languages. I have se the combination alt-shift and everything works when pressing alt-shift the change happens and I can switch between greek
-
After update to 11.3.1 users are not logged in to the ZAA
Hi, we did a update from 11.2.3 to 11.3.1 a few weeks ago. All works fine but there is one problem. A lot of users are not logged in to the ZAA. If i try to start a remote session with the username i get the message the user is not logged in to any d