ƒRƒ“ƒeƒ“ƒcƒtƒŒ[ƒ€‹N“®

‚±‚̃Oƒ‰ƒtƒBƒbƒN‚Í“Y•t‚̃eƒLƒXƒg‚Éà–¾‚³‚ê‚Ä‚¢‚Ü‚·  ÓIƒNƒ‰ƒXƒRƒ“ƒ|[ƒlƒ“ƒg‚ւ̃oƒCƒ“ƒh •¶‘‚ð SAP ƒ‰ƒCƒuƒ‰ƒŠƒXƒgƒ‰ƒNƒ`ƒƒ‚É‘g‚Ýž‚Þ

JavaScript ‚ÅÓIƒ^ƒCƒv‚̃Nƒ‰ƒX‚ðŽ‚ÂƒIƒuƒWƒFƒNƒgŽQƕϔ ( ƒIƒuƒWƒFƒNƒgŽQƂւ̃oƒCƒ“ƒh (ƒCƒ“ƒXƒ^ƒ“ƒX)) ‚ɃoƒCƒ“ƒh‚·‚邯AABAP ƒNƒ‰ƒX‚ÌÓIƒRƒ“ƒ|[ƒlƒ“ƒg‚ւ̃AƒNƒZƒX‚̂݉”\‚ƂȂè‚Ü‚·B‚½‚¾‚µAABAP ‚ł͕K‚¸‚µ‚à‚±‚̃Nƒ‰ƒX‚̃Cƒ“ƒXƒ^ƒ“ƒX‚ð쬂·‚é•K—v‚Í‚ ‚è‚Ü‚¹‚ñB

ABAP ƒNƒ‰ƒX‚ÌÓIƒRƒ“ƒ|[ƒlƒ“ƒg‚ÍAJavaScript “à‚ł͒è‹`ς݃vƒƒLƒVƒNƒ‰ƒX SAPAbapCrefClass ‚̃vƒƒLƒVƒIƒuƒWƒFƒNƒg‚Æ‚µ‚ă}ƒbƒv‚³‚ê‚Ü‚·B‚»‚ê‚ç‚ðƒIƒuƒWƒFƒNƒgŽQƕϔ‚ɃoƒCƒ“ƒh‚·‚éÛ‚ÍAŠÖ˜A‚·‚éƒvƒƒLƒVƒIƒuƒWƒFƒNƒg ( ƒvƒƒLƒV) ‚ÍSAPAbapCrefClass ‚ÉŠî‚¢‚Ä eClassf ƒvƒƒpƒeƒB‚ð—L‚µ‚Ü‚·B

ƒvƒƒLƒVƒIƒuƒWƒFƒNƒg eproxy.Classf ‚̃Rƒ“ƒ|[ƒlƒ“ƒg‚ðŽŸ‚ÉŽ¦‚µ‚Ü‚·B

·        ƒNƒ‰ƒX‚̃pƒuƒŠƒbƒNÓI‘®« ( ¬•¶Žš) B

·        ’è‹`ς݃ƒ\ƒbƒh einvokef B‚»‚̃Nƒ‰ƒX‚̃pƒuƒŠƒbƒNÓIƒƒ\ƒbƒh‚ðŒÄ‚Ño‚·‚±‚Æ‚ª‚Å‚«‚Ü‚· ( ƒIƒuƒWƒFƒNƒgŽQƂւ̃oƒCƒ“ƒh (ƒCƒ“ƒXƒ^ƒ“ƒX)‚ðŽQÆ) B

·        “ü—̓pƒ‰ƒ[ƒ^‚ðŽ‚½‚¸˜_—’l‚ð•Ô‚·’è‹`ς݃ƒ\ƒbƒh eisActivef BABAP ƒvƒƒOƒ‰ƒ€‚ŃNƒ‰ƒX‚ªƒ[ƒh‚³‚ê‚ê‚ÎA–ß‚è’l‚Í^‚Å‚· ( ‚‚܂èÓIƒRƒ“ƒXƒgƒ‰ƒNƒ^‚ªŽÀs‚³‚ꂽê‡) BƒNƒ‰ƒX‚ªƒ[ƒh‚³‚ê‚È‚©‚Á‚½ê‡‚Í‹U‚Å‚·Bƒ[ƒh‚³‚ê‚Ä‚¢‚È‚¢ƒNƒ‰ƒX‚ÌÓIƒRƒ“ƒ|[ƒlƒ“ƒg‚É‚ÍAƒAƒNƒZƒX‚Å‚«‚Ü‚¹‚ñBŒ»ÝAƒNƒ‰ƒX‚ªJavaScript ‚Ì’†‚ł͂Ȃ­ ABAP ‚Ì’†‚ÅŽg—p‚³‚ê‚邱‚Ƃɂæ‚èAƒ[ƒh‚̂݉”\‚Å‚·B

JavaScript “à‚Å‚ÍA‘¼‚̃vƒƒpƒeƒB‚Ü‚½‚̓ƒ\ƒbƒh‚ðƒvƒƒLƒVƒIƒuƒWƒFƒNƒgeproxy.Classf ‚ɒljÁ‚Å‚«‚Ü‚¹‚ñBJavaScript “à‚Å eproxy.Classf ‚ÉŠ„‚è“–‚Ä‚½‚èAƒ[ƒh‚³‚ê‚Ä‚¢‚È‚¢ƒNƒ‰ƒX‚̃Rƒ“ƒ|[ƒlƒ“ƒg‚ðƒAƒNƒZƒX‚µ‚悤‚Æ‚·‚邯AJavaScript ‚ÍI—¹‚µ‚Ü‚·B

—á

report DEMO_JAVA_SCRIPT_BIND_DREF.

class C1 definition.
  public section.
    class-data A1 type STRING value 'Hello'.
    class-methods M1.
  protected section.
    class-data A2 type STRING value 'Hello'.
endclass.

class C1 implementation.
  method M1.
    concatenate A1 '!' into A1.
  endmethod.
endclass.

data JS_PROCESSOR type ref to CL_JAVA_SCRIPT.

data OREF type ref to C1.

data SOURCE type STRING.

start-of-selection.

  JS_PROCESSOR = CL_JAVA_SCRIPT=>CREATE( ).

  JS_PROCESSOR->BIND( exporting NAME_OBJ  = 'abap'
                               NAME_PROP = 'Oref'
                      changing  DATA      =  OREF ).

  concatenate  ' if ( abap.Oref.Class.isActive() )'
               '{ abap.Oref.Class.a1 += " World";   '
               '  abap.Oref.Class.invoke
("m1");  }'
               into SOURCE.

  JS_PROCESSOR->EVALUATE( JAVA_SCRIPT = SOURCE ).

  write / C1=>A1.

‚±‚Ì—á‚Å‚ÍAJavaScript ‚Í‘®« C1=>A1 ‚ð 'Hello' ‚©‚ç 'Hello World!' ‚É•ÏX‚µ‚Ü‚·BƒvƒƒOƒ‰ƒ€‚ÍAÓI‘®«'Oref.Class.a1' ‚ɃAƒNƒZƒX‚·‚邱‚Ƃɂæ‚èAeWorldf ‚ð‘®«’l‚ɒljÁ‚µ‚Ü‚·B'Oref.Class.invoke' ‚ðŽg—p‚µ‚ăƒ\ƒbƒh C1=>M1 ‚ðŒÄ‚Ño‚µ‚ÄAe!f ‚ð’ljÁ‚µ‚Ü‚·B

 

 

ƒRƒ“ƒeƒ“ƒcƒtƒŒ[ƒ€I—¹