释疑のCONTEXTS
本篇主要探索關(guān)鍵字“CONTEXTS”。
如下實(shí)例程序:
REPORT??demo_context_message_4.
DATA:?percentage?TYPE?i.CONTEXTS?docu_test4.
DATA:?context_inst?TYPE?context_docu_test4.
DATA?itab?TYPE?TABLE?OF?symsg?WITH?HEADER?LINE.
SUPPLY?max?=?00
???????occ?=?20
???????TO?CONTEXT?context_inst.
DEMAND?percent?=?percentage
???????FROM?CONTEXT?context_inst?MESSAGES?INTO?itab.
WRITE:?/?'Percentage:?',?percentage.???"#EC?NOTEXT
IF?sy-subrc?NE?0.
??LOOP?AT?itab.
????WRITE:?/?itab-msgty,?/?itab-msgid,?/?itab-msgno,
???????????/?itab-msgv1,?/?itab-msgv2.
??ENDLOOP.
ENDIF.
運(yùn)行結(jié)果:
Percentage:?????????? 0
E
SABAPDOCU
012
釋疑:
中間過程
1、CONTEXT_INST?? ?????????????????????????????????? ??? ?Structure: deep
2、
FUNCTION?PERCENT.
*"----------------------------------------------------------------------
*"*"Lokale?Schnittstelle:
*"???????IMPORTING
*"?????????????VALUE(V1)?LIKE??SFLIGHT-SEATSMAX
*"?????????????VALUE(V2)?LIKE??SFLIGHT-SEATSOCC
*"???????EXPORTING
*"?????????????VALUE(RESULT)?LIKE??SFLIGHT-SEATSOCC
*"???????EXCEPTIONS
*"??????????????DIV_ZERO
*"----------------------------------------------------------------------
RESULT?=?V1?-?V2.
IF?V1?=?0.
??MESSAGE?ID?'SABAPDOCU'?TYPE?'E'?NUMBER?'050'?RAISING?DIV_ZERO.
ELSE.
??RESULT?=?RESULT?*?100?/?V1.
ENDIF.
ENDFUNCTION.
3、ITAB[ ]?
MSGTY?? ?SYMSGTY?? ?CHAR?? ?1?? ?0?? ?Message Type
MSGID?? ?SYMSGID?? ?CHAR?? ?20?? ?0?? ?Message Class
MSGNO?? ?SYMSGNO?? ?NUMC?? ?3?? ?0?? ?Message Number
MSGV1?? ?SYMSGV?? ?CHAR?? ?50?? ?0?? ?Message Variable
MSGV2?? ?SYMSGV?? ?CHAR?? ?50?? ?0?? ?Message Variable
MSGV3?? ?SYMSGV?? ?CHAR?? ?50?? ?0?? ?Message Variable
MSGV4?? ?SYMSGV?? ?CHAR?? ?50?? ?0?? ?Message Variable
一條記錄 : E?? ?SABAPDOCU?? ?012
4、
FUNCTION?TR_GET_NAMESPACE_AND_ROLE.
*"----------------------------------------------------------------------
*"*"Lokale?Schnittstelle:
*"??IMPORTING
*"?????VALUE(IV_PGMID)?LIKE??TADIR-PGMID
*"?????VALUE(IV_OBJECT)?LIKE??TADIR-OBJECT
*"?????VALUE(IV_OBJNAME)?LIKE??TADIR-OBJ_NAME
*"?????VALUE(IV_USE_DEVCLASS_INFO)?LIKE??TRPARI-S_CHECKED?DEFAULT?'?'
*"??EXPORTING
*"?????VALUE(EV_NAMESPACE)?LIKE??TRNSPACE-NAMESPACE
*"?????VALUE(EV_ROLE)?LIKE??TRNSPACE-ROLE
*"??EXCEPTIONS
*"??????NAMESPACE_NOT_EXISTING
*"??????INVALID_OBJECT
*"??????NAMESPACE_NOT_DETERMINABLE
*"----------------------------------------------------------------------
DATA:?LT_NAMESPACE_INFO?TYPE?TRNSP_NAMESPACES.
??CALL?FUNCTION?'TRINT_GET_NAMESPACE'
???????EXPORTING
????????????IV_PGMID?????????????=??IV_PGMID
????????????IV_OBJECT????????????=??IV_OBJECT
????????????IV_OBJ_NAME??????????=??IV_OBJNAME
????????????IV_PREFIX_CHECKED????=??'?'
???????IMPORTING
????????????EV_NAMESPACE?????????=??EV_NAMESPACE
???????EXCEPTIONS
????????????INVALID_PREFIX???????=??1
????????????INVALID_OBJECT_TYPE??=??2
????????????OTHERS???????????????=??3.
??IF?SY-SUBRC?<>?0.
?????CURRENT_MESSAGE_RAISING?INVALID_OBJECT.
??ENDIF.
**?1)?special?cases:?generic?namespaces?(not?fully?specified)
??IF?EV_NAMESPACE?CA?'*'.
????IF?IV_USE_DEVCLASS_INFO?<>?'X'.
??????MESSAGE?E342(TK)?WITH?IV_PGMID?IV_OBJECT?IV_OBJNAME
????????????????????????????????RAISING?NAMESPACE_NOT_DETERMINABLE.
????ELSE.
*?use?TADIR?information?on?devclass?to?determine?namespace
??????PERFORM?NAMESPACE_AND_ROLE_VIA_DEVC??USING?IV_PGMID
?????????????????????????????????????????????????IV_OBJECT
?????????????????????????????????????????????????IV_OBJNAME
????????????????????????????????????????CHANGING?EV_NAMESPACE
?????????????????????????????????????????????????EV_ROLE.
????ENDIF.
??ELSE.
**?2)?fully?specified?namespaces:?get?role?from?namespace?table
????PERFORM?GET_ROLE_OF_NAMESPACE?USING?EV_NAMESPACE
???????????????????????????????CHANGING?EV_ROLE.
??ENDIF.
ENDFUNCTION.
總結(jié)
以上是生活随笔為你收集整理的释疑のCONTEXTS的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ABAP入门程序,你会了嘛?
- 下一篇: 释疑のABAP输入框字符自动变成大写问题