2006 Jan 06 11:37 AM
hi,
i have define date field in internal table with sa-datum,
this field editable in list, but it is storing internal, i have define the 2 two date fields , how to handle this coding pls send me
santha
hi,
i have define date field in internal table with sa-datum,
this field editable in list, but it is storing internal, i have define the 2 two date fields , how to handle this coding pls send me
santha
2006 Jan 06 11:38 AM
2006 Jan 06 11:38 AM
2006 Jan 06 11:43 AM
X_FIELDCAT-COLTEXT = 'Prom Date'(016).
X_FIELDCAT-FIELDNAME = 'ZZDATE'. "DATE FIELD
X_FIELDCAT-TABNAME = 'IT_FINAL'.
X_FIELDCAT-COL_POS = L_POS.
X_FIELDCAT-OUTPUTLEN = '10'.
X_FIELDCAT-EMPHASIZE = ' '.
X_FIELDCAT-EDIT = 'X'.
<b> X_FIELDCAT-DATATYPE = 'DATS'. "MUST
X_FIELDCAT-INTTYPE = 'D'. "MUST
X_FIELDCAT-REF_TABLE = 'VEKP'. "REF TABLE
X_FIELDCAT-REF_FIELD = 'ZZDATE. "REF FIELD</b>
APPEND X_FIELDCAT TO IT_FIELDCAT.
CLEAR X_FIELDCAT.did you mentioned your fieldcat for those dates like this..
regards
vijay
2006 Jan 06 11:45 AM
Hi ARe you using Noraml ALV /ALV GRID or ALV OO
please let us know..
VIjay
2006 Jan 06 11:39 AM
pl be more clear in the requirement
u mean to say that after editing it is not storing???
Message was edited by: chandrasekhar jagarlamudi
2006 Jan 06 11:46 AM
hi,
types: begin of TY_FINAL,
CREDATE type SY-DATUM, "SY-DATUM,
DOCNUM(5) type C,
PERSON(35) type C,
TKNUM type TKNUM,
NAME1 type NAME1,
ORT01 type ORT01,
VBELN type VBELN,
AGENT_PNO(4) type C,
AGENT(10) type C,
TO_ORDER(7) type C,
INCO1 type INCO1,
INCO2 type INCO2,
LCNUM type LCNUM,
VSART type VSART,
DATXA type DATXA,
LOADING(10) type C,
DATLOAD type CHAR10, "SY-DATUM,
SHIPDATE type CHAR10, "SY-DATUM,
DATLOAD type erdat,
SHIPDATE type erdat,
ABLAD type ABLAD,
SHIPLOAD type C,
IMPORT TYPE C,
VIA(10) type C,
PORT(10) type C,
MARKS(13) type C,
PRO_DESCR(10) type C,
NTGEW type NTGEW,
BRGEW type BRGEW,
NOTE(15) type C,
WH_SH_DOCU(15) type C,
WHEN_SHIP(15) type C,
ENCLOSURE(10) type C,
ZTERM type VBRK-ZTERM,
VTEXT type VTEXT,
BOX type C,
end of TY_FINAL.
i have deifine the internal table, i am editing fields in alv list, after i want all fields save the final internal table, type char fields are storing, but date fields not storing,
i am using the reuse_alv_list_display.
santha
2006 Jan 06 11:50 AM
hi,
my coding this like
form OUTPUT_ALV .
if IT_FIELDCAT is initial.
perform FIELD_FILL using IT_FIELDCAT.
endif.
perform SET_LAYOUT changing IS_LAYOUT.
refresh IT_EVENTTAB.
perform BUILD_EVENTS changing IT_EVENTTAB.
call function 'REUSE_ALV_LIST_DISPLAY'
exporting
I_CALLBACK_PROGRAM = SY-REPID
I_CALLBACK_PF_STATUS_SET = c_pf_stat
I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
IS_LAYOUT = IS_LAYOUT
IT_FIELDCAT = IT_FIELDCAT[]
IT_EVENTS = IT_EVENTTAB[]
I_SAVE = 'A'
tables
T_OUTTAB = IT_FINAL
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. " output_alv
----
Form Name : PF_STATUS_SET
Description : Assigning the user defined status.
----
form PF_STATUS_SET using RT_EXTAB type SLIS_T_EXTAB.
set pf-status 'PFSTATUS1' excluding RT_EXTAB.
clear RT_EXTAB.
endform. " STATUS_SET
&----
*& Form FIELD_FILL
&----
text
----
-->P_PT_FIELDCAT text
----
form FIELD_FILL using PT_FIELDCAT type SLIS_T_FIELDCAT_ALV.
data : LS_FIELDCAT type SLIS_FIELDCAT_ALV.
LS_FIELDCAT-FIELDNAME = 'CREDATE'.
LS_FIELDCAT-SELTEXT_L = TEXT-101.
append LS_FIELDCAT to PT_FIELDCAT.
clear LS_FIELDCAT.
LS_FIELDCAT-FIELDNAME = 'PERSON'.
LS_FIELDCAT-INPUT = 'X'.
LS_FIELDCAT-EDIT = 'X'.
LS_FIELDCAT-SELTEXT_L = TEXT-103.
append LS_FIELDCAT to PT_FIELDCAT.
clear LS_FIELDCAT.
LS_FIELDCAT-FIELDNAME = 'TKNUM'.
LS_FIELDCAT-REF_FIELDNAME = 'TKNUM'.
LS_FIELDCAT-REF_TABNAME = 'VTTK'.
LS_FIELDCAT-SELTEXT_L = TEXT-104.
append LS_FIELDCAT to PT_FIELDCAT.
clear LS_FIELDCAT.
LS_FIELDCAT-FIELDNAME = 'NAME1'.
LS_FIELDCAT-REF_FIELDNAME = 'NAME1'.
LS_FIELDCAT-REF_TABNAME = 'KNA1'.
LS_FIELDCAT-INPUT = 'X'.
LS_FIELDCAT-EDIT = 'X'.
LS_FIELDCAT-SELTEXT_L = 'CONIGNEE NAME'.
append LS_FIELDCAT to PT_FIELDCAT.
clear LS_FIELDCAT.
LS_FIELDCAT-FIELDNAME = 'ORT01'.
LS_FIELDCAT-REF_FIELDNAME = 'ORT01'.
LS_FIELDCAT-REF_TABNAME = 'KNA1'.
LS_FIELDCAT-INPUT = 'X'.
LS_FIELDCAT-EDIT = 'X'.
LS_FIELDCAT-SELTEXT_L = 'ADDRESS'.
append LS_FIELDCAT to PT_FIELDCAT.
clear LS_FIELDCAT.
LS_FIELDCAT-FIELDNAME = 'VBELN'.
LS_FIELDCAT-REF_FIELDNAME = 'VBELN'.
LS_FIELDCAT-REF_TABNAME = 'VBRK'.
LS_FIELDCAT-SELTEXT_L = TEXT-106.
append LS_FIELDCAT to PT_FIELDCAT.
clear LS_FIELDCAT.
LS_FIELDCAT-FIELDNAME = 'AGENT_PNO'.
LS_FIELDCAT-INPUT = 'X'.
LS_FIELDCAT-EDIT = 'X'.
LS_FIELDCAT-SELTEXT_L = TEXT-107.
append LS_FIELDCAT to PT_FIELDCAT.
clear LS_FIELDCAT.
LS_FIELDCAT-FIELDNAME = 'AGENT'.
LS_FIELDCAT-INPUT = 'X'.
LS_FIELDCAT-EDIT = 'X'.
LS_FIELDCAT-SELTEXT_L = TEXT-108.
append LS_FIELDCAT to PT_FIELDCAT.
clear LS_FIELDCAT.
LS_FIELDCAT-FIELDNAME = 'TO_ORDER'.
LS_FIELDCAT-INPUT = 'X'.
LS_FIELDCAT-EDIT = 'X'.
LS_FIELDCAT-SELTEXT_L = TEXT-109.
append LS_FIELDCAT to PT_FIELDCAT.
clear LS_FIELDCAT.
LS_FIELDCAT-FIELDNAME = 'INCO1'.
LS_FIELDCAT-REF_FIELDNAME = 'INCO1'.
LS_FIELDCAT-REF_TABNAME = 'VBRK'.
LS_FIELDCAT-SELTEXT_L = TEXT-110.
append LS_FIELDCAT to PT_FIELDCAT.
clear LS_FIELDCAT.
LS_FIELDCAT-FIELDNAME = 'ZTERM'.
LS_FIELDCAT-REF_FIELDNAME = 'ZTERM'.
LS_FIELDCAT-REF_TABNAME = 'VBRK'.
LS_FIELDCAT-SELTEXT_L = TEXT-111.
append LS_FIELDCAT to PT_FIELDCAT.
clear LS_FIELDCAT.
LS_FIELDCAT-FIELDNAME = 'LCNUM'.
LS_FIELDCAT-REF_FIELDNAME = 'LCNUM'.
LS_FIELDCAT-REF_TABNAME = 'VBRK'.
LS_FIELDCAT-SELTEXT_L = TEXT-112.
append LS_FIELDCAT to PT_FIELDCAT.
clear LS_FIELDCAT.
LS_FIELDCAT-FIELDNAME = 'VSART'.
LS_FIELDCAT-REF_FIELDNAME = 'VSART'.
LS_FIELDCAT-REF_TABNAME = 'VTTK'.
LS_FIELDCAT-SELTEXT_L = TEXT-113.
append LS_FIELDCAT to PT_FIELDCAT.
clear LS_FIELDCAT.
LS_FIELDCAT-FIELDNAME = 'DATXA'.
LS_FIELDCAT-REF_FIELDNAME = 'DATXA'.
LS_FIELDCAT-REF_TABNAME = 'RV86E'.
LS_FIELDCAT-INPUT = 'X'.
LS_FIELDCAT-EDIT = 'X'.
LS_FIELDCAT-SELTEXT_L = TEXT-114.
append LS_FIELDCAT to PT_FIELDCAT.
clear LS_FIELDCAT.
LS_FIELDCAT-FIELDNAME = 'LOADING'.
LS_FIELDCAT-INPUT = 'X'.
LS_FIELDCAT-EDIT = 'X'.
LS_FIELDCAT-SELTEXT_L = TEXT-115.
append LS_FIELDCAT to PT_FIELDCAT.
clear LS_FIELDCAT.
LS_FIELDCAT-FIELDNAME = 'DATLOAD'.
LS_FIELDCAT-INPUT = 'X'.
LS_FIELDCAT-REF_FIELDNAME = 'ERDAT'.
LS_FIELDCAT-REF_TABNAME = 'VBRK'.
LS_FIELDCAT-EDIT = 'X'.
LS_FIELDCAT-SELTEXT_L = TEXT-116.
append LS_FIELDCAT to PT_FIELDCAT.
clear LS_FIELDCAT.
LS_FIELDCAT-FIELDNAME = 'SHIPDATE'.
LS_FIELDCAT-REF_FIELDNAME = 'SY-DATUM'.
LS_FIELDCAT-INPUT = 'X'.
LS_FIELDCAT-EDIT = 'X'.
LS_FIELDCAT-SELTEXT_L = TEXT-117.
append LS_FIELDCAT to PT_FIELDCAT.
clear LS_FIELDCAT.
LS_FIELDCAT-FIELDNAME = 'ABLAD'.
LS_FIELDCAT-REF_FIELDNAME = 'ABLAD'.
LS_FIELDCAT-REF_TABNAME = 'KNVA'.
LS_FIELDCAT-SELTEXT_L = TEXT-118.
append LS_FIELDCAT to PT_FIELDCAT.
clear LS_FIELDCAT.
LS_FIELDCAT-FIELDNAME = 'SHIPLAOD'.
LS_FIELDCAT-SELTEXT_L = TEXT-119.
append LS_FIELDCAT to PT_FIELDCAT.
clear LS_FIELDCAT.
LS_FIELDCAT-FIELDNAME = 'IMPORT'.
LS_FIELDCAT-INPUT = 'X'.
LS_FIELDCAT-EDIT = 'X'.
LS_FIELDCAT-SELTEXT_L = TEXT-120.
append LS_FIELDCAT to PT_FIELDCAT.
clear LS_FIELDCAT.
LS_FIELDCAT-FIELDNAME = 'VIA'.
LS_FIELDCAT-INPUT = 'X'.
LS_FIELDCAT-EDIT = 'X'.
LS_FIELDCAT-SELTEXT_L = TEXT-121.
append LS_FIELDCAT to PT_FIELDCAT.
clear LS_FIELDCAT.
LS_FIELDCAT-FIELDNAME = 'PORT'.
LS_FIELDCAT-INPUT = 'X'.
LS_FIELDCAT-EDIT = 'X'.
LS_FIELDCAT-SELTEXT_L = TEXT-122.
append LS_FIELDCAT to PT_FIELDCAT.
clear LS_FIELDCAT.
LS_FIELDCAT-FIELDNAME = 'MARKS'.
LS_FIELDCAT-SELTEXT_L = TEXT-123.
append LS_FIELDCAT to PT_FIELDCAT.
clear LS_FIELDCAT.
LS_FIELDCAT-FIELDNAME = 'PRO_DESCR'.
LS_FIELDCAT-SELTEXT_L = TEXT-124.
append LS_FIELDCAT to PT_FIELDCAT.
clear LS_FIELDCAT.
LS_FIELDCAT-FIELDNAME = 'BRGEW'.
LS_FIELDCAT-REF_FIELDNAME = 'BRGEW'.
LS_FIELDCAT-REF_TABNAME = 'VBRP'.
LS_FIELDCAT-SELTEXT_L = TEXT-125.
append LS_FIELDCAT to PT_FIELDCAT.
clear LS_FIELDCAT.
LS_FIELDCAT-FIELDNAME = 'NTGEW'.
LS_FIELDCAT-REF_FIELDNAME = 'NTGEW'.
LS_FIELDCAT-REF_TABNAME = 'VBRP'.
LS_FIELDCAT-SELTEXT_L = TEXT-125.
append LS_FIELDCAT to PT_FIELDCAT.
clear LS_FIELDCAT.
LS_FIELDCAT-FIELDNAME = 'NOTE'.
LS_FIELDCAT-INPUT = 'X'.
LS_FIELDCAT-EDIT = 'X'.
LS_FIELDCAT-SELTEXT_L = TEXT-126.
append LS_FIELDCAT to PT_FIELDCAT.
clear LS_FIELDCAT.
LS_FIELDCAT-FIELDNAME = 'WH_SH_DOCU'.
LS_FIELDCAT-INPUT = 'X'.
LS_FIELDCAT-EDIT = 'X'.
LS_FIELDCAT-SELTEXT_L = TEXT-127.
append LS_FIELDCAT to PT_FIELDCAT.
clear LS_FIELDCAT.
LS_FIELDCAT-FIELDNAME = 'WHEN_SHIP'.
LS_FIELDCAT-INPUT = 'X'.
LS_FIELDCAT-EDIT = 'X'.
LS_FIELDCAT-SELTEXT_L = TEXT-128.
append LS_FIELDCAT to PT_FIELDCAT.
clear LS_FIELDCAT.
LS_FIELDCAT-FIELDNAME = 'ENCLOSURE'.
LS_FIELDCAT-INPUT = 'X'.
LS_FIELDCAT-EDIT = 'X'.
LS_FIELDCAT-SELTEXT_L = TEXT-129.
append LS_FIELDCAT to PT_FIELDCAT.
clear LS_FIELDCAT.
endform. " FIELD_FILL
&----
*& Form SET_LAYOUT
&----
text
----
-->P_IS_LAYOUT text
----
form SET_LAYOUT changing LS_LAYOUT type SLIS_LAYOUT_ALV.
clear LS_LAYOUT.
LS_LAYOUT-ZEBRA = 'X'.
LS_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.
LS_LAYOUT-BOX_FIELDNAME = 'BOX'.
LS_LAYOUT-BOX_TABNAME = 'IT_FINAL'.
endform. " SET_LAYOUT
&----
*& Form BUILD_EVENTS
&----
text
----
<--P_IT_EVENTTAB text
----
form BUILD_EVENTS changing P_IT_EVENTTAB type SLIS_T_EVENT .
*--Function call to retrieve all the existing events
call function 'REUSE_ALV_EVENTS_GET'
exporting
I_LIST_TYPE = 0
importing
ET_EVENTS = P_IT_EVENTTAB.
read table P_IT_EVENTTAB into IS_EVENTTAB
with key NAME = SLIS_EV_PF_STATUS_SET.
if SY-SUBRC = 0.
move c_pf_stat to IS_EVENTTAB-FORM.
IS_EVENTTAB-FORM = 'PF_STATUS_SET'.
modify P_IT_EVENTTAB from IS_EVENTTAB
transporting FORM where NAME = SLIS_EV_PF_STATUS_SET.
endif.
read table P_IT_EVENTTAB into IS_EVENTTAB
with key NAME = SLIS_EV_USER_COMMAND.
if SY-SUBRC = 0.
*------Catching user command event
IS_EVENTTAB-FORM = 'USER_COMMAND'.
modify P_IT_EVENTTAB from IS_EVENTTAB
transporting FORM where NAME = SLIS_EV_USER_COMMAND.
endif.
endform. " BUILD_EVENTS
&----
*& Form user_command
&----
text
----
--> p1 text
<-- p2 text
----
form USER_COMMAND using L_UCOMM like SY-UCOMM
LS_SELFIELD type SLIS_SELFIELD.
case L_UCOMM.
when 'ENTR'.
ITT_FINAL[] = IT_FINAL[].
loop at IT_FINAL into IS_FINAL where BOX = 'X'.
read table IT_FINAL into IS_FINAL with key BOX = 'X'.
if LS_SELFIELD-FIELDNAME = 'DATLOAD'.
*
call function 'CONVERT_DATE_TO_INTERNAL'
exporting
DATE_EXTERNAL = LS_SELFIELD-VALUE
importing
DATE_INTERNAL = IS_FINAL-DATLOAD
exceptions
DATE_EXTERNAL_IS_INVALID = 1
others = 2.
*
endif.
modify IT_FINAL from IS_FINAL transporting DATLOAD.
"index LS_SELFIELD-TABINDEX
clear IS_FINAL.
endloop.
when 'DISP'.
set pf-status 'PF_STATUS'.
LEAVE TO LIST-PROCESSING.
new-page.
perform DISP_DATA1.
lv_display_page = 'X'.
endcase.
endform. " user_command
*&----
santha
2006 Jan 06 11:55 AM
while modifying
modify IT_FINAL from IS_FINAL transporting DATLOAD.
u r transporting only DATALOAD , try to transport date fields also here
2006 Jan 06 12:07 PM
form USER_COMMAND using L_UCOMM like SY-UCOMM
LS_SELFIELD type SLIS_SELFIELD.
case L_UCOMM.
when 'ENTR'.
CALL FUNCTION 'REUSE_ALV_LIST_LAYOUT_INFO_GET'
TABLES
ET_OUTTAB = IT_OUTTAB
EXCEPTIONS
NO_INFOS = 1
PROGRAM_ERROR = 2
OTHERS = 3
.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF......
endcase.
endform.now check in it_outab in that you can see the data.
and now conver tand do what ever you want..
2006 Jan 06 1:07 PM
hi,
case L_UCOMM.
when 'ENTR'.
CALL FUNCTION 'REUSE_ALV_LIST_LAYOUT_INFO_GET'
TABLES
ET_OUTTAB = it_final
EXCEPTIONS
NO_INFOS = 1
PROGRAM_ERROR = 2
OTHERS = 3
.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
modify IT_FINAL from IS_FINAL transporting DATLOAD SHIPDATE.
"index LS_SELFIELD-
*TABINDEX
clear IS_FINAL.
endloop.
it is not coming , i am trying, after enter on list, char fields are stoing the it_final, but date firlds are not storing, i thick date not matching, pls give me details of coding.
santha
2006 Jan 06 1:11 PM
Hi,
in normal alv, this is the problem generally we face.
what you do is give 10 chars field, and convert it to date format in the usercommand. and you will be able to see that now.
thanks
vijay
2006 Jan 06 1:30 PM
hi,
that is working, but my requirement only date format enter on the list, i want display date and save to file or print, pls give me ASAP, how to change the date chat to date foramt, give me with code
santha
2006 Jan 06 1:37 PM
Hi, Check this code.....
for your use....i did this program with date edit....
REPORT ZTESTALV NO STANDARD PAGE HEADING
LINE-SIZE 200
LINE-COUNT 58
MESSAGE-ID ZZ.
*---------------------------------------------------------------------*
* TYPE-POOLS *
*---------------------------------------------------------------------*
TYPE-POOLS:SLIS.
*---------------------------------------------------------------------
* Include for Data Declarations
*---------------------------------------------------------------------
INCLUDE ZTEST_TOP.
DATA: V_ERROR.
**Tables to Compare Before after the Data Change
DATA: IT_VEKP_TMP LIKE IT_VEKP OCCURS 0 WITH HEADER LINE,
IT_VEKP1_TMP LIKE IT_VEKP1 OCCURS 0 WITH HEADER LINE,
IT_FINAL_TMP LIKE IT_FINAL OCCURS 0 WITH HEADER LINE.
DATA: IT_OCRC LIKE ZSD_OC_HOLD OCCURS 0 WITH HEADER LINE.
*- Fieldcatalog
DATA: IT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
IT_FIELDCAT1 TYPE SLIS_T_FIELDCAT_ALV.
*- For Events
DATA:IT_EVENTS TYPE SLIS_T_EVENT.
DATA: X_FIELDCAT TYPE SLIS_FIELDCAT_ALV,
X_FIELDCAT1 TYPE SLIS_FIELDCAT_ALV,
X_LAYOUT TYPE SLIS_LAYOUT_ALV,
X_EVENTS TYPE SLIS_ALV_EVENT.
*---------------------------------------------------------------------
* Selection screen
*---------------------------------------------------------------------
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS: S_VBELN FOR V_LIKP-VBELN,
S_VSTEL FOR V_LIKP-VSTEL,
S_WERKS FOR V_LIPS-WERKS,
S_WADAT FOR V_VBEP-WADAT,
S_TRSPG FOR V_LIKP-TRSPG OBLIGATORY,
S_OCHRC FOR V_VEKP-ZZOCHOLDRC,
S_USERID FOR V_VBAK-ZZREP_USERID1.
SELECTION-SCREEN END OF BLOCK B1.
*---------------------------------------------------------------------
* START-OF_SELECTION
*---------------------------------------------------------------------
START-OF-SELECTION.
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.
MESSAGE I002 WITH 'NO DATA FOR THE SELECTION'.
ENDIF.
**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.
** Populating the Final Internaltable
PERFORM POPULATE_FINAL_TABLE.
*---------------------------------------------------------------------
* START-OF_SELECTION
*---------------------------------------------------------------------
END-OF-SELECTION.
**Populating the fieldcatalog
PERFORM POPULATE_FIELDCATALOG.
**-ALV list Display
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = SY-REPID
I_CALLBACK_PF_STATUS_SET = 'PF_STATUS_SET'
I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
IS_LAYOUT = X_LAYOUT
IT_FIELDCAT = IT_FIELDCAT
IT_EVENTS = IT_EVENTS
TABLES
T_OUTTAB = IT_FINAL
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.
*&---------------------------------------------------------------------*
*& 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
LFIMG
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 .
CLEAR IT_FINAL.
REFRESH IT_FINAL.
SORT IT_VEKP_TMP BY ZZPROMDT ZZSONUM ZZOCHOLDRC.
DELETE ADJACENT DUPLICATES FROM IT_VEKP_TMP COMPARING ZZPROMDT ZZSONUM
ZZOCHOLDRC.
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.
IF NOT IT_VEKP_TMP-ZZPROMDT+0(4) = '0000'.
WRITE IT_VEKP_TMP-ZZPROMDT TO IT_FINAL-ZZPROMDT .
ELSE.
IT_FINAL-ZZPROMDT = '00/00/0000'.
ENDIF.
IT_FINAL-ZZOCHOLDRC = IT_VEKP_TMP-ZZOCHOLDRC.
APPEND IT_FINAL.
ENDLOOP.
IF SY-SUBRC <> 0.
IT_FINAL-ZZPROMDT = '00/00/0000'.
IT_FINAL-ZZOCHOLDRC = ' '.
IT_FINAL-FLAG = 'X'.
APPEND IT_FINAL.
CLEAR IT_FINAL.
ENDIF.
ENDIF.
ENDLOOP.
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 populate_fieldcatalog
*&---------------------------------------------------------------------*
* Populating the fieldcatalog
*----------------------------------------------------------------------*
FORM POPULATE_FIELDCATALOG .
DATA:L_POS TYPE I VALUE 1.
CLEAR: L_POS.
L_POS = L_POS + 1.
X_FIELDCAT-SELTEXT_M = 'Shpt'.
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-SELTEXT_M = 'Con Path'.
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-SELTEXT_M = 'Plant'.
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-SELTEXT_M = 'Del Date'.
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-SELTEXT_M = 'Prom Date'.
X_FIELDCAT-FIELDNAME = 'ZZPROMDT'.
X_FIELDCAT-TABNAME = 'IT_FINAL'.
X_FIELDCAT-COL_POS = L_POS.
X_FIELDCAT-OUTPUTLEN = '10'.
X_FIELDCAT-EMPHASIZE = ' '.
X_FIELDCAT-INPUT = 'X'.
X_FIELDCAT-HOTSPOT = 'X'.
X_FIELDCAT-DATATYPE = 'CHAR'.
APPEND X_FIELDCAT TO IT_FIELDCAT.
CLEAR X_FIELDCAT.
L_POS = L_POS + 1.
X_FIELDCAT-SELTEXT_M = 'Ship-To-Name'.
X_FIELDCAT-FIELDNAME = 'NAME1'.
X_FIELDCAT-TABNAME = 'IT_FINAL'.
X_FIELDCAT-COL_POS = L_POS.
X_FIELDCAT-OUTPUTLEN = '40'.
X_FIELDCAT-EMPHASIZE = ' '.
X_FIELDCAT-INPUT = ' '.
APPEND X_FIELDCAT TO IT_FIELDCAT.
CLEAR X_FIELDCAT.
L_POS = L_POS + 1.
X_FIELDCAT-SELTEXT_M = 'SalesOrder#'.
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'.
X_FIELDCAT-INPUT = ' '.
APPEND X_FIELDCAT TO IT_FIELDCAT.
CLEAR X_FIELDCAT.
L_POS = L_POS + 1.
X_FIELDCAT-SELTEXT_M = 'Item'.
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 = ' '.
X_FIELDCAT-INPUT = ' '.
APPEND X_FIELDCAT TO IT_FIELDCAT.
CLEAR X_FIELDCAT.
L_POS = L_POS + 1.
X_FIELDCAT-SELTEXT_M = 'Material'.
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 = ' '.
X_FIELDCAT-INPUT = ' '.
APPEND X_FIELDCAT TO IT_FIELDCAT.
CLEAR X_FIELDCAT.
L_POS = L_POS + 1.
X_FIELDCAT-SELTEXT_M = 'Materal Desc'.
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 = ' '.
X_FIELDCAT-INPUT = ' '.
APPEND X_FIELDCAT TO IT_FIELDCAT.
CLEAR X_FIELDCAT.
L_POS = L_POS + 1.
X_FIELDCAT-SELTEXT_M = 'D.O.Item Qty'.
X_FIELDCAT-FIELDNAME = 'LFIMG'.
X_FIELDCAT-TABNAME = 'IT_FINAL'.
X_FIELDCAT-COL_POS = L_POS.
X_FIELDCAT-OUTPUTLEN = '13'.
X_FIELDCAT-EMPHASIZE = ' '.
X_FIELDCAT-HOTSPOT = ' '.
X_FIELDCAT-INPUT = ' '.
APPEND X_FIELDCAT TO IT_FIELDCAT.
CLEAR X_FIELDCAT.
L_POS = L_POS + 1.
X_FIELDCAT-SELTEXT_M = 'RC'.
X_FIELDCAT-FIELDNAME = 'ZZOCHOLDRC'.
X_FIELDCAT-TABNAME = 'IT_FINAL'.
X_FIELDCAT-COL_POS = L_POS.
X_FIELDCAT-EMPHASIZE = 'C700'.
X_FIELDCAT-OUTPUTLEN = '3'.
X_FIELDCAT-INPUT = 'X'.
X_FIELDCAT-HOTSPOT = 'X'.
APPEND X_FIELDCAT TO IT_FIELDCAT.
CLEAR X_FIELDCAT.
L_POS = L_POS + 1.
X_FIELDCAT-SELTEXT_M = 'OC HOLD RC Desc'.
X_FIELDCAT-FIELDNAME = 'ZZRCDESC'.
X_FIELDCAT-TABNAME = 'IT_FINAL'.
X_FIELDCAT-COL_POS = L_POS.
X_FIELDCAT-EMPHASIZE = 'C700'.
X_FIELDCAT-OUTPUTLEN = '20'.
X_FIELDCAT-INPUT = 'X'.
X_FIELDCAT-HOTSPOT = ' '.
APPEND X_FIELDCAT TO IT_FIELDCAT.
CLEAR X_FIELDCAT.
L_POS = L_POS + 1.
X_FIELDCAT-SELTEXT_M = 'Delivery'.
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'.
X_FIELDCAT-INPUT = ' '.
APPEND X_FIELDCAT TO IT_FIELDCAT.
CLEAR X_FIELDCAT.
L_POS = L_POS + 1.
X_FIELDCAT-SELTEXT_M = 'Item'.
X_FIELDCAT-FIELDNAME = 'POSNR'.
X_FIELDCAT-TABNAME = 'IT_FINAL'.
X_FIELDCAT-COL_POS = L_POS.
X_FIELDCAT-OUTPUTLEN = '5'.
X_FIELDCAT-EMPHASIZE = ' '.
X_FIELDCAT-HOTSPOT = ' '.
X_FIELDCAT-INPUT = ' '.
APPEND X_FIELDCAT TO IT_FIELDCAT.
CLEAR X_FIELDCAT.
L_POS = L_POS + 1.
X_FIELDCAT-SELTEXT_M = 'Rep User Id'.
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 = ' '.
X_FIELDCAT-INPUT = ' '.
APPEND X_FIELDCAT TO IT_FIELDCAT.
CLEAR X_FIELDCAT.
X_LAYOUT-ZEBRA = 'X'.
REFRESH:IT_EVENTS.
CLEAR:X_EVENTS,IT_EVENTS.
X_EVENTS-NAME = SLIS_EV_TOP_OF_PAGE.
X_EVENTS-FORM = 'TOP_OF_PAGE'.
APPEND X_EVENTS TO IT_EVENTS.
CLEAR X_EVENTS.
X_EVENTS-NAME = SLIS_EV_END_OF_LIST.
X_EVENTS-FORM = 'MODIFY_LIST'.
APPEND X_EVENTS TO IT_EVENTS.
CLEAR X_EVENTS.
ENDFORM. " populate_fieldcatalog
*---------------------------------------------------------------------
* Top_of_page
*---------------------------------------------------------------------
FORM TOP_OF_PAGE.
* Call Steelcase Header
FORMAT COLOR COL_HEADING INTENSIFIED ON.
CALL FUNCTION 'Z_STEELCASE_HEADER'.
FORMAT COLOR OFF.
ENDFORM. "top_of_page
*&--------------------------------------------------------------------*
*& Form USER_COMMAND
*&--------------------------------------------------------------------*
* For User Command
*---------------------------------------------------------------------*
FORM USER_COMMAND USING UCOMM LIKE SY-UCOMM SELFIELD TYPE SLIS_SELFIELD.
DATA: L_ANS.
DATA: L_SONUM LIKE VEKP-ZZSONUM.
DATA: L_TABIX LIKE SY-TABIX.
DATA : L_DATE1 LIKE VEKP-ZZPROMDT.
CASE UCOMM.
**-When User Double Clicks
WHEN '&IC1'.
IF SELFIELD-TABINDEX <> 0.
**if user clicks on sales order
IF SELFIELD-SEL_TAB_FIELD = 'IT_FINAL-VGBEL'.
READ TABLE IT_FINAL INDEX SELFIELD-TABINDEX
TRANSPORTING VGBEL.
IF SY-SUBRC = 0.
SET PARAMETER ID 'AUN' FIELD IT_FINAL-VGBEL.
ENDIF.
CALL TRANSACTION 'VA03' AND SKIP FIRST SCREEN.
ENDIF.
**if user clicks on Delivery
IF SELFIELD-SEL_TAB_FIELD = 'IT_FINAL-VBELN'.
READ TABLE IT_FINAL INDEX SELFIELD-TABINDEX
TRANSPORTING VBELN.
IF SY-SUBRC = 0.
SET PARAMETER ID 'VL' FIELD IT_FINAL-VBELN.
ENDIF.
CALL TRANSACTION 'VL02N' AND SKIP FIRST SCREEN.
ENDIF.
**if user clicks on Order Control Hold Reason code
IF SELFIELD-SEL_TAB_FIELD = 'IT_FINAL-ZZOCHOLDRC'
OR SELFIELD-SEL_TAB_FIELD = 'IT_FINAL-ZZPROMDT'.
READ TABLE IT_FINAL INDEX SELFIELD-TABINDEX
TRANSPORTING
VGBEL
VGPOS
ZZOCHOLDRC.
IF SY-SUBRC = 0.
PERFORM GET_HU_DATA.
PERFORM POPULATE_FIELDCAT2.
PERFORM LIST_DISPLAY.
ENDIF.
ENDIF.
ENDIF.
**When User Press back Button
WHEN 'BACK1'.
CLEAR V_ERROR.
LOOP AT IT_FINAL.
READ TABLE IT_OCRC WITH KEY ZZOCHOLDRC = IT_FINAL-ZZOCHOLDRC.
IF SY-SUBRC <> 0.
IF NOT IT_FINAL-ZZOCHOLDRC IS INITIAL.
V_ERROR = 'X'.
EXIT.
ENDIF.
ENDIF.
ENDLOOP.
**Checking for the Data Change
IF IT_FINAL_TMP[] <> IT_FINAL[].
PERFORM CONFIRM_BEFORE_LEAVE CHANGING L_ANS.
IF L_ANS = '1' .
IF V_ERROR IS INITIAL.
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.
CONCATENATE IT_FINAL-VGBEL IT_FINAL-VGPOS INTO L_SONUM.
READ TABLE IT_VEKP WITH KEY
ZZSONUM = L_SONUM
ZZOCHOLDRC = IT_FINAL_TMP-ZZOCHOLDRC.
IF SY-SUBRC = 0.
CLEAR L_DATE1.
L_DATE1 = IT_FINAL-ZZPROMDT+6(4).
CONCATENATE L_DATE1 IT_FINAL-ZZPROMDT+0(2) INTO L_DATE1.
CONCATENATE L_DATE1 IT_FINAL-ZZPROMDT+3(2) INTO L_DATE1.
**Modifying the VEKP table based on changes
UPDATE VEKP SET ZZOCHOLDRC = IT_FINAL-ZZOCHOLDRC
ZZPROMDT = L_DATE1
WHERE ZZSONUM = IT_VEKP-ZZSONUM
AND ZZOCHOLDRC = IT_FINAL_TMP-ZZOCHOLDRC.
IF SY-SUBRC = 0.
COMMIT WORK.
ENDIF.
**Modifying the ZSD_OC_HOLD table based on changes
IF IT_FINAL-ZZRCDESC <> IT_FINAL_TMP-ZZRCDESC.
UPDATE ZSD_OC_HOLD SET ZZRCDESC = IT_FINAL-ZZRCDESC
WHERE ZZOCHOLDRC = IT_FINAL-ZZOCHOLDRC.
IF SY-SUBRC = 0.
COMMIT WORK.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDLOOP.
LEAVE TO SCREEN 0.
ELSE.
PERFORM VALIDATE_REASON_CODE.
MESSAGE I002 WITH 'Please enter valid Reason Codes'.
ENDIF.
ELSEIF L_ANS = '2'.
LEAVE TO SCREEN 0.
ENDIF.
ELSE.
LEAVE TO SCREEN 0.
ENDIF.
WHEN 'SAVE'.
PERFORM VALIDATE_REASON_CODE.
**CHECKING FOR THE DATA CHANGE
IF IT_FINAL_TMP[] <> IT_FINAL[].
IF V_ERROR IS INITIAL.
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.
CONCATENATE IT_FINAL-VGBEL IT_FINAL-VGPOS INTO L_SONUM.
READ TABLE IT_VEKP WITH KEY
ZZSONUM = L_SONUM
ZZOCHOLDRC = IT_FINAL_TMP-ZZOCHOLDRC.
IF SY-SUBRC = 0.
CLEAR L_DATE1.
L_DATE1 = IT_FINAL-ZZPROMDT+6(4).
CONCATENATE L_DATE1 IT_FINAL-ZZPROMDT+0(2) INTO L_DATE1.
CONCATENATE L_DATE1 IT_FINAL-ZZPROMDT+3(2) INTO L_DATE1.
**Modifying the VEKP table based on changes
UPDATE VEKP SET ZZOCHOLDRC = IT_FINAL-ZZOCHOLDRC
ZZPROMDT = L_DATE1
WHERE ZZSONUM = IT_VEKP-ZZSONUM
AND ZZOCHOLDRC = IT_FINAL_TMP-ZZOCHOLDRC.
IF SY-SUBRC = 0.
COMMIT WORK.
ENDIF.
**Modifying the ZSD_OC_HOLD table based on changes
IF IT_FINAL-ZZRCDESC <> IT_FINAL_TMP-ZZRCDESC.
UPDATE ZSD_OC_HOLD SET ZZRCDESC = IT_FINAL-ZZRCDESC
WHERE ZZOCHOLDRC = IT_FINAL-ZZOCHOLDRC.
IF SY-SUBRC = 0.
COMMIT WORK.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDLOOP.
PERFORM GET_VEKP_DATA .
PERFORM POPULATE_FINAL_TABLE.
MESSAGE S002 WITH 'Data Saved'.
ELSE.
MESSAGE I002 WITH 'Please enter valid Reason Codes'.
ENDIF.
ENDIF.
WHEN 'ENTER'.
DATA: L_TABIX1 TYPE SY-TABIX.
PERFORM VALIDATE_REASON_CODE .
IF V_ERROR IS INITIAL.
CLEAR L_TABIX1.
LOOP AT IT_FINAL.
L_TABIX1 = SY-TABIX.
READ TABLE IT_OCRC WITH KEY ZZOCHOLDRC = IT_FINAL-ZZOCHOLDRC.
IF SY-SUBRC = 0.
IT_FINAL-ZZRCDESC = IT_OCRC-ZZRCDESC.
MODIFY IT_FINAL INDEX L_TABIX1 TRANSPORTING ZZRCDESC.
ENDIF.
ENDLOOP.
ENDIF.
ENDCASE.
SELFIELD-REFRESH = 'X'.
ENDFORM. "USER_COMMAND
*&---------------------------------------------------------------------*
*& 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
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.
IF SY-SUBRC = 0.
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 populate_fieldcat2
*&---------------------------------------------------------------------*
* Populating the Fieldcatalog
*----------------------------------------------------------------------*
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-SELTEXT_L = 'External Handling Unit Identification'.
X_FIELDCAT1-FIELDNAME = 'EXIDV'.
X_FIELDCAT1-TABNAME = 'IT_VEKP1'.
X_FIELDCAT1-COL_POS = L_POS.
X_FIELDCAT1-INPUT = ' '.
APPEND X_FIELDCAT1 TO IT_FIELDCAT1.
CLEAR X_FIELDCAT1.
L_POS = L_POS + 1.
X_FIELDCAT1-SELTEXT_L = 'Promise Date'.
X_FIELDCAT1-FIELDNAME = 'ZZPROMDT'.
X_FIELDCAT1-TABNAME = 'IT_VEKP1'.
X_FIELDCAT1-COL_POS = L_POS.
X_FIELDCAT1-INPUT = 'X'.
APPEND X_FIELDCAT1 TO IT_FIELDCAT1.
CLEAR X_FIELDCAT1.
L_POS = L_POS + 1.
X_FIELDCAT1-SELTEXT_L = 'Order Control Hold Reason Code'.
X_FIELDCAT1-FIELDNAME = 'ZZOCHOLDRC'.
X_FIELDCAT1-TABNAME = 'IT_VEKP1'.
X_FIELDCAT1-COL_POS = L_POS.
X_FIELDCAT1-INPUT = 'X'.
APPEND X_FIELDCAT1 TO IT_FIELDCAT1.
CLEAR X_FIELDCAT1.
ENDFORM. " populate_fieldcat2
*&---------------------------------------------------------------------*
*& Form list_display
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM LIST_DISPLAY .
**-ALV list Display
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = SY-REPID
I_CALLBACK_PF_STATUS_SET = 'PF_STATUS_SET1'
I_CALLBACK_USER_COMMAND = 'USER_COMMAND1'
IS_LAYOUT = X_LAYOUT
IT_FIELDCAT = IT_FIELDCAT1
IT_EVENTS = IT_EVENTS
TABLES
T_OUTTAB = IT_VEKP1
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. " list_display
*&---------------------------------------------------------------------*
*& Form GET_HU_DATA
*&---------------------------------------------------------------------*
* Get Handling Units Data
*----------------------------------------------------------------------*
FORM GET_HU_DATA .
CLEAR IT_VEKP1.
REFRESH IT_VEKP1.
READ TABLE IT_SONUM WITH KEY VGBEL = IT_FINAL-VGBEL
VGPOS = IT_FINAL-VGPOS.
IF SY-SUBRC = 0.
LOOP AT IT_VEKP WHERE ZZSONUM = IT_SONUM-ZZSONUM
AND ZZOCHOLDRC = IT_FINAL-ZZOCHOLDRC.
IT_VEKP1-EXIDV = IT_VEKP-EXIDV.
IT_VEKP1-ZZSONUM = IT_VEKP-ZZSONUM.
IF NOT IT_VEKP-ZZPROMDT+0(4) = '0000'.
WRITE IT_VEKP-ZZPROMDT TO IT_VEKP1-ZZPROMDT .
ELSE.
IT_VEKP1-ZZPROMDT = '00/00/0000'.
ENDIF.
IT_VEKP1-ZZOCHOLDRC = IT_VEKP-ZZOCHOLDRC.
APPEND IT_VEKP1.
ENDLOOP.
ENDIF.
IT_VEKP1_TMP[] = IT_VEKP1[].
ENDFORM. " GET_HU_DATA
*&--------------------------------------------------------------------*
*& Form USER_COMMAND1
*&--------------------------------------------------------------------*
* For User Command1
*---------------------------------------------------------------------*
FORM USER_COMMAND1 USING UCOMM LIKE SY-UCOMM SELFIELD TYPE
SLIS_SELFIELD.
DATA: L_ANS,
L_DATE LIKE VEKP-ZZPROMDT.
CASE UCOMM.
**When User Press Back
WHEN 'BACK1'.
CLEAR V_ERROR.
LOOP AT IT_VEKP1.
READ TABLE IT_OCRC WITH KEY ZZOCHOLDRC = IT_VEKP1-ZZOCHOLDRC.
IF SY-SUBRC <> 0.
IF NOT IT_VEKP1-ZZOCHOLDRC IS INITIAL.
V_ERROR = 'X'.
EXIT.
ENDIF.
ENDIF.
ENDLOOP.
**Checking for the Change in the data
IF IT_VEKP1_TMP[] <> IT_VEKP1[].
PERFORM CONFIRM_BEFORE_LEAVE CHANGING L_ANS.
IF L_ANS = '1'.
IF V_ERROR IS INITIAL.
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.
CLEAR L_DATE.
L_DATE = IT_VEKP1-ZZPROMDT+6(4).
CONCATENATE L_DATE IT_VEKP1-ZZPROMDT+0(2) INTO L_DATE.
CONCATENATE L_DATE IT_VEKP1-ZZPROMDT+3(2) INTO L_DATE.
UPDATE VEKP SET ZZPROMDT = L_DATE
ZZOCHOLDRC = IT_VEKP1-ZZOCHOLDRC
WHERE EXIDV = IT_VEKP1-EXIDV.
IF SY-SUBRC = 0.
COMMIT WORK.
ENDIF.
ENDIF.
ENDIF.
ENDLOOP.
PERFORM GET_VEKP_DATA .
PERFORM POPULATE_FINAL_TABLE.
SELFIELD-REFRESH = 'X'.
LEAVE TO SCREEN 0.
ELSE.
PERFORM VALIDATE_REASON_CODE1.
MESSAGE I002 WITH 'Please enter valid Reason Codes'.
ENDIF.
ELSEIF L_ANS = '2'.
LEAVE TO SCREEN 0.
ENDIF.
ELSE.
LEAVE TO SCREEN 0.
ENDIF.
WHEN 'SAVE'.
PERFORM VALIDATE_REASON_CODE1.
**Checking for the Change in the data
IF IT_VEKP1_TMP[] <> IT_VEKP1[].
IF V_ERROR IS INITIAL.
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.
CLEAR L_DATE.
L_DATE = IT_VEKP1-ZZPROMDT+6(4).
CONCATENATE L_DATE IT_VEKP1-ZZPROMDT+0(2) INTO L_DATE.
CONCATENATE L_DATE IT_VEKP1-ZZPROMDT+3(2) INTO L_DATE.
UPDATE VEKP SET ZZPROMDT = L_DATE
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.
SELFIELD-REFRESH = 'X'.
MESSAGE S002 WITH 'Data Saved'.
ELSE.
MESSAGE I002 WITH 'Please enter valid Reason Codes'.
ENDIF.
ENDIF.
WHEN 'ENTER'.
PERFORM VALIDATE_REASON_CODE1.
ENDCASE.
ENDFORM. "USER_COMMAND1
*&---------------------------------------------------------------------*
*& Form PF_STATUS_SET
*&---------------------------------------------------------------------*
* PF Satatus for first List
*----------------------------------------------------------------------*
FORM PF_STATUS_SET USING P_EXTAB TYPE SLIS_T_EXTAB.
SET PF-STATUS 'STANDARD' EXCLUDING P_EXTAB.
ENDFORM. "PF_STATUS_SET
*&---------------------------------------------------------------------*
*& Form PF_STATUS_SET1
*&---------------------------------------------------------------------*
* PF Satatus for Second list
*----------------------------------------------------------------------*
FORM PF_STATUS_SET1 USING P_EXTAB TYPE SLIS_T_EXTAB.
SET PF-STATUS 'STANDARD' EXCLUDING P_EXTAB.
ENDFORM. "PF_STATUS_SET
*&---------------------------------------------------------------------*
*& Form CONFIRM_BEFORE_LEAVE
*&---------------------------------------------------------------------*
* Popup for Confirm
*----------------------------------------------------------------------*
FORM CONFIRM_BEFORE_LEAVE CHANGING P_ANS.
CALL FUNCTION 'POPUP_TO_CONFIRM'
EXPORTING
TITLEBAR = 'Confirm'
TEXT_QUESTION = 'Do you wish to save your data first?'
TEXT_BUTTON_1 = 'Yes'
ICON_BUTTON_1 = 'ICON_OKAY'
TEXT_BUTTON_2 = 'No'
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.
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
*&---------------------------------------------------------------------*
*& Form MODIFY_LIST
*&---------------------------------------------------------------------*
* Modify the Report
*----------------------------------------------------------------------*
FORM MODIFY_LIST.
DATA: L_LINES TYPE I,
L_FLAG.
CLEAR IT_NODATA. REFRESH IT_NODATA.
LOOP AT IT_FINAL WHERE FLAG = 'X'.
IT_NODATA-IND = SY-TABIX + 6.
APPEND IT_NODATA.
CLEAR IT_NODATA.
ENDLOOP.
DESCRIBE TABLE IT_FINAL LINES L_LINES.
L_LINES = L_LINES + 6.
DO L_LINES TIMES.
READ TABLE IT_NODATA WITH KEY IND = SY-INDEX.
IF SY-SUBRC = 0.
READ LINE SY-INDEX INDEX SY-LSIND.
IF SY-SUBRC = 0.
MODIFY LINE SY-INDEX INDEX SY-LSIND
FIELD FORMAT IT_FINAL-ZZPROMDT INPUT OFF COLOR 6
IT_FINAL-ZZOCHOLDRC INPUT OFF COLOR 6
IT_FINAL-ZZRCDESC INPUT OFF COLOR 6.
ENDIF.
ENDIF.
ENDDO.
ENDFORM. "MODIFY_LIST
*&---------------------------------------------------------------------*
*& Form select_OCHOLDRC
*&---------------------------------------------------------------------*
* Get ALL OC HOLD RC
*----------------------------------------------------------------------*
FORM SELECT_OCHOLDRC .
SELECT *
FROM ZSD_OC_HOLD
INTO TABLE IT_OCRC.
ENDFORM. " select_OCHOLDRC
*&---------------------------------------------------------------------*
*& Form validate_reason_code
*&---------------------------------------------------------------------*
* validation of Reason Code
*----------------------------------------------------------------------*
FORM VALIDATE_REASON_CODE.
CLEAR V_ERROR.
LOOP AT IT_FINAL.
READ TABLE IT_OCRC WITH KEY ZZOCHOLDRC = IT_FINAL-ZZOCHOLDRC.
IF SY-SUBRC = 0.
ELSE.
IF NOT IT_FINAL-ZZOCHOLDRC IS INITIAL.
V_ERROR = 'X'.
MESSAGE I002 WITH 'Reason code' IT_FINAL-ZZOCHOLDRC 'is invalid'.
ENDIF.
ENDIF.
ENDLOOP.
ENDFORM. " validate_reason_code
*&---------------------------------------------------------------------*
*& Form validate_reason_code1
*&---------------------------------------------------------------------*
* validation of Reason Code1
*----------------------------------------------------------------------*
FORM VALIDATE_REASON_CODE1.
CLEAR V_ERROR.
LOOP AT IT_VEKP1.
READ TABLE IT_OCRC WITH KEY ZZOCHOLDRC = IT_VEKP1-ZZOCHOLDRC.
IF SY-SUBRC = 0.
ELSE.
IF NOT IT_VEKP1-ZZOCHOLDRC IS INITIAL.
V_ERROR = 'X'.
MESSAGE I002 WITH 'Reason code' IT_VEKP1-ZZOCHOLDRC 'is invalid'.
ENDIF.
ENDIF.
ENDLOOP.
ENDFORM. " validate_reason_code1Message was edited by: Vijay Babu Dudla
| User | Count |
|---|---|
| 3 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |